Software Engineering
Introduction
Intended Learning Outcomes:
• Define what software means and it features
• Define what software engineering is and why it is important
• Identify suitable software engineering techniques for development
of different types of software
• Recognize the ethical and professional issues that are important for
software engineers
What is software?
Computer programs and associated documentation. Software products may be developed for a particular
customer or may be developed for a general market.
Features of Software
• Intangible
– Hard to understand development effort
• Easy to reproduce
– Cost is in its development
– in other engineering products, manufacturing is the costly stage
• The industry is labor-intensive
– Hard to automate
• Untrained people can hack something together
– Quality problems are hard to notice
• Easy to modify
– People make changes without fully understanding it
• Does not ‘wear out’
– It deteriorates by having its design changed: erroneously, or in ways that were not anticipated, thus
making it complex
• Complexity and Changes
– Useful software systems are complex
– Evolve with end user’s need and the target environment
• Has poor design and is getting worse
• Demand for software is high and rising
Essential attributes of good software
• Maintainability
Software should be written in such a way so that it can evolve to meet the changing needs of
customers. This is a critical attribute because software change is an inevitable requirement of a
changing business environment.
• Dependability and security
Software dependability includes a range of characteristics including reliability, security and safety.
Dependable software should not cause physical or economic damage in the event of system failure.
Malicious users should not be able to access or damage the system.
• Efficiency
Page 1
, • Efficiency
Software should not make wasteful use of system resources such as memory and processor cycles.
Efficiency therefore includes responsiveness, processing time, memory utilization, etc.
• Acceptability
Software must be acceptable to the type of users for which it is designed. This means that it must be
understandable, usable and compatible with other systems that they use.
Software Types
System software
- designed to run a computer's hardware
and application programs.
Application software
- a type of computer program that performs
some specific personal,
educational, business function.
Page 2
Introduction
Intended Learning Outcomes:
• Define what software means and it features
• Define what software engineering is and why it is important
• Identify suitable software engineering techniques for development
of different types of software
• Recognize the ethical and professional issues that are important for
software engineers
What is software?
Computer programs and associated documentation. Software products may be developed for a particular
customer or may be developed for a general market.
Features of Software
• Intangible
– Hard to understand development effort
• Easy to reproduce
– Cost is in its development
– in other engineering products, manufacturing is the costly stage
• The industry is labor-intensive
– Hard to automate
• Untrained people can hack something together
– Quality problems are hard to notice
• Easy to modify
– People make changes without fully understanding it
• Does not ‘wear out’
– It deteriorates by having its design changed: erroneously, or in ways that were not anticipated, thus
making it complex
• Complexity and Changes
– Useful software systems are complex
– Evolve with end user’s need and the target environment
• Has poor design and is getting worse
• Demand for software is high and rising
Essential attributes of good software
• Maintainability
Software should be written in such a way so that it can evolve to meet the changing needs of
customers. This is a critical attribute because software change is an inevitable requirement of a
changing business environment.
• Dependability and security
Software dependability includes a range of characteristics including reliability, security and safety.
Dependable software should not cause physical or economic damage in the event of system failure.
Malicious users should not be able to access or damage the system.
• Efficiency
Page 1
, • Efficiency
Software should not make wasteful use of system resources such as memory and processor cycles.
Efficiency therefore includes responsiveness, processing time, memory utilization, etc.
• Acceptability
Software must be acceptable to the type of users for which it is designed. This means that it must be
understandable, usable and compatible with other systems that they use.
Software Types
System software
- designed to run a computer's hardware
and application programs.
Application software
- a type of computer program that performs
some specific personal,
educational, business function.
Page 2