Introduction to Software Engineering
Software Engineering
Software-related Problems
-Hardware advances continue to outpace ability to build software
-Ability to build new programs can't keep pace with demand
-Society dependent on reliable operation of software
-Struggle to build software that has high reliability and quality
-Ability to support and enhance existing programs is threatened by poor design and inadequate resources
-Product delivered late
Software Product characteristics
-Maintainability: It should be possible to evolve software to meet the changing needs of customers.
-Dependability: includes a range of characteristics such as reliability, security and safety. Dependable software should not cause physical or economic damage in the event of system failure.
-Efficiency: Software should not make wasteful use of system resources such as memory and processor cycles.
-Usability: Software should have an appropriate user interface and adequate documentation
“Good” Software
-Correctness: Program satisfies specifications and fulfils users' objectives
-Reliability: Has the required precision when the use needs it
-Efficiency: Uses the machine resources economically with minimum of waste
-Integrity: Well integrated with sense of wholeness
-Usability: Makes user effective in the task at hand
-Flexibility: Easily and effectively change and expand
-Modularity: Effort required to locate and fix errors in a program
Software Process
-Software Development
-Software Validation
-Software Evolution
Software Process characteristics
Factors contribute to software failure
- More people means more time communicating which means more misunderstandings and less time for the software
- Badly design interface
- Creeping featurism
- Unrealistic goals
- Undefined responsibilities
- Missed user requirements
- Misunderstanding
- Data has not been collected on the software development process. Thus there can't be accurate evaluation of the efficacy of new tools, methods or standards.
- Customer dissatisfaction with the completed system is frequently encountered - Software development is undertaken often with notion of the customer's requirements.
- Software quality is often suspect - Often there is no systematic, complete software testing
- Existing software can be difficult to maintain - Software maintainability has not been emphasized as an important criteria
- IEEE definition : Systematic approach towards the development, operation, maintenance and retirement of software where software is defined as related programs, procedures and documentation.
- Software Engineering is concerned with the theories, methods and tools, which are needed to develop software.
- Software Engineering is the whole discipline of techniques that are needed to build software.
Software-related Problems
-Hardware advances continue to outpace ability to build software
-Ability to build new programs can't keep pace with demand
-Society dependent on reliable operation of software
-Struggle to build software that has high reliability and quality
-Ability to support and enhance existing programs is threatened by poor design and inadequate resources
-Product delivered late
Software Product characteristics
-Maintainability: It should be possible to evolve software to meet the changing needs of customers.
-Dependability: includes a range of characteristics such as reliability, security and safety. Dependable software should not cause physical or economic damage in the event of system failure.
-Efficiency: Software should not make wasteful use of system resources such as memory and processor cycles.
-Usability: Software should have an appropriate user interface and adequate documentation
“Good” Software
-Correctness: Program satisfies specifications and fulfils users' objectives
-Reliability: Has the required precision when the use needs it
-Efficiency: Uses the machine resources economically with minimum of waste
-Integrity: Well integrated with sense of wholeness
-Usability: Makes user effective in the task at hand
-Flexibility: Easily and effectively change and expand
-Modularity: Effort required to locate and fix errors in a program
Software Process
- Software process: Set of activities and associated results,which produce a software product
- Four fundamentals of software activity
-Software Development
-Software Validation
-Software Evolution
Software Process characteristics
- Understandability: To what extent is the process explicitly defined and how easy it is to understand the process definition?
- Visibility: Do the process activities culminates in clear results so that the progress of the process is externally visible?
- Acceptability: Is the defined process acceptable to and usable by the engineers responsible for producing the software product?
- Reliability: Is the process designed in such a way that process errors are avoided or trapped before they result in product errors?
- Robustness: Can the process continue in spite of unexpected problems?
- Maintainability: Can the process evolve to reflect changing organizational requirements or identified process improvements?
Factors contribute to software failure
- More people means more time communicating which means more misunderstandings and less time for the software
- Badly design interface
- Creeping featurism
- Unrealistic goals
- Undefined responsibilities
- Missed user requirements
- Misunderstanding
- Afflicting problems
- Data has not been collected on the software development process. Thus there can't be accurate evaluation of the efficacy of new tools, methods or standards.
- Customer dissatisfaction with the completed system is frequently encountered - Software development is undertaken often with notion of the customer's requirements.
- Software quality is often suspect - Often there is no systematic, complete software testing
- Existing software can be difficult to maintain - Software maintainability has not been emphasized as an important criteria
Comments