Introduction to Software Engineering

Software Engineering

  • 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 Specification
-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?
Why Software Engineering is needed?

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

Popular posts from this blog

History of the Computer

Wireless Transmission Media

Systems View of Project Management