Need for software engineering


• The economies of ALL developed nations are dependent on software.
• More and more systems are software controlled
• Expenditure on software represents a significant fraction of GNP in all developed countries.
• Software engineering is concerned with theories, methods and tools for professional software development.
• Software is found in products and situations where very high reliability is expected
            – E.g. Monitoring and controlling Nuclear power plants
• Contain millions of lines of code
• Comparably more complex

What is software engineering?

• An engineering discipline that is concerned with all aspects of software production
• Software engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to be solved, the development constraints and the resources available.


Definitions

* Simple definition : Designing, building and maintaining large software systems.

* Software engineering is concerned with the theories, methods and tools for developing, managing and evolving software products. - I Sommerville

* The practical application of scientific knowledge in the design and construction of computer programs and the associated documentation required to develop, operate and maintain them.
- B.W.Boehm

* The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. - F.L. Bauer

* The application of systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. - IEEE Standard 610.12

So we can say it as,
                             ‘Use of systematic, engineering approach in all stages of software development and project management to develop high quality and economical software using appropriate software tools.’


Software Engineering Costs

Distribution of costs across the different activities in the software process depends on the process used and the type of software that is being developed. 

Eg: Real-time software usually requires more extensive validation and testing than web-based systems.

In the waterfall approach, the cost of specification, design, implementation and integration are measured separately. System integration and testing is the most expensive development activity. Normally this is about 40% of the total development costs.

Key Challenges facing software Engineering

• Heterogeneity, delivery and trust.
• Heterogeneity – Developing techniques for building software that can cope with heterogeneous platforms and execution environments
• Delivery – Developing techniques that lead to faster delivery of software
• Trust – Developing techniques that demonstrate that software can be trusted by its users.

Software Problems

1. Time Schedules and cost estimates of many software projects are grossly inaccurate.
2. Software is costly.
3. The quality of software is not satisfactory.
4. Software is difficult to maintain.
5. The productivity of software people is not satisfactory to meet the demand.

Project characteristics

  1. size / complexity
  2. novelty of the application
  3. response-time characteristics
  4. security requirements
  5. user interface requirements
  6. reliability / criticality requirements

What is the difference between software engineering and system engineering?

• System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering.

• Software engineering is part of this process concerned with developing the software infrastructure, control, applications and databases in the system.

• System engineers are involved in system specification, architectural design, integration and deployment.


Issues of professional responsibility


1. Confidentiality – Engineers should normally respect the confidentiality of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed.

2. Competence – Engineers should not misrepresent their level of competence. They should not knowingly accept work which is out with their competence.

3. Intellectual property rights – Engineers should be aware of local laws governing the use of intellectual property such as patents, copyright, etc. They should be careful to ensure that the intellectual property of employers and clients is protected.

4. Computer misuse – Software engineers should not use their technical skills to misuse other people’s computers. Computer misuse ranges from relatively trivial (game playing on an employer’s machine, say) to extremely serious (dissemination of viruses).


Software Maintenance

Any software system needs to be changed. Maintenance is the costliest operation in the software development process (about 60%). Software need to be changed due to various reasons.

• Errors in the system
• Changes in the user requirements
• Availability of new technology
• Changes in the enterprise or Govt. policy