Over the last 50 years there has been revolutionary advancement in the field of technology, leading to improvements in hardware performance and profound changes in computing architectures. This advancement has led to the production of complex computer-based systems that are capable of providing information in a wide variety of formats. The increase in computer power has made unrealistic computer applications a feasible proposition, marking the genesis of an era where software products are far more complex as compared to their predecessors. By using software engineering practices, these complex systems can be developed in a systematic and efficient manner.
According to IEEE, software engineering is defined as 'the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.' In anutshell, software engineering can be defined as a systematic approach to developsoftware within specified time and budget.
Software engineering is a technological discipline that combines the concepts of computer science, economics, communication skills, and management science with the problem-solving approach of engineering. It also involves a standardized approach to program development, both in its managerial and technical aspects.
The profound knowledge of computer science both theoretical and practical forms the basis of software engineering. The theoretical knowledge provides an understanding of which problems are resolvable, what data structures and algorithms are appropriate, when and how they are to be used, etc. On the other hand, the practical knowledge provides an understanding of how hardware functions, how to utilize the power of programming languages and tools while developing software, etc.
One of the main objectives of software engineering is to help developers obtain high quality software. This quality is achieved through use of Total Quality Management (TQM), which enables continuous process improvement custom that leads to the development of more established approaches to software engineering.
Software engineering is the systematic approach to the development, operation, maintenance and retirement of software. Software Engineering is the application of science and mathematics by which the capabilities of computer equipment are made useful to man via computer programs, procedures, and associated documentations.
The basic objective of software engineering is to develop methods and procedures for software development that can scale up for large systems and that can be used consistently to produce high-quality software at low cost and with a small cycle of time.
Need for Software Engineering
1- As Software development is expensive so proper measures are required so that the resources are used efficiently and effectively.
2- Cost and time considerations are another factor, which arises the need for Software Engineering.
3- Reliability factors