In this we can learn basic concepts and theories about software Engineering in brief.This Lesson will help for Advanced level IT Subject and also People who like to Start learning Software Engineering.
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.
– Simple definition : Designing, building and maintaining large software systems.
– 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
– Software engineering is concerned with the theories, methods and tools for developing, managing and evolving software products. – I Sommerville
– The application of systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. – IEEE Standard 610.12
– 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
Therefore, We can say it as “the 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”.
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.
– Contain millions of lines of code.
– Comparably more complex.
Key Challenges facing software Engineering
1. Heterogeneity, delivery and trust.
2.Heterogeneity – Developing techniques for building software that can cope with heterogeneous platforms and execution environments
3. Delivery – Developing techniques that lead to faster delivery of software
4. Trust – Developing techniques that demonstrate that software can be trusted by its users.
1. The productivity of software people is not satisfactory to meet the demand.
2. Software is difficult to maintain.
3. The quality of software is not satisfactory.
4. Software is costly.
5. Time Schedules and cost estimates of many software projects are grossly inaccurate.
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.
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. 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).
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. Confidentiality – Engineers should normally respect the confidentiality of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed.
– size / complexity
– novelty of the application
– response-time characteristics
– security requirements
– user interface requirements
– reliability / criticality requirements
Any software system needs to be changed. Maintenance is the costliest operation in the software development process. 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