The History and Importance of Software Engineering
In order to understand the importance of software engineering, it is essential to first look at the recent history of computing. This allows us to understand the problems that became obvious in the late sixties and early seventies and the solutions that created this field of computing. Some people referred to these problems as the software crisis. In the early days of computing, the main concern was acquiring or building hardware.
Most people in the computer industry planned hardware development carefully but gave less forethought to the software. If the software failed to work, they believed that it was easy to change it until it worked. The cost of software was a little bit higher than that of hardware and for this reason, many people did not consider it important to manage its development. Nonetheless, everyone found it important to produce efficient programs that ran fast since this saved time on expensive hardware.
They assumed that people time was able to save machine time and could therefore make the people process more efficient. Software engineering is the application of a disciplined, systematic and quantifiable approach to developing, maintaining and operating software. Typically, a software development project has to go through the phases of Design, Analysis, Programming, Testing, Software Project Management, Testing, Computer Aided Software Engineering and Software Quality Assurance.
This type of engineering involves the use of software methodology, which is a systematic plan that involves implementing a method by using particular tools and procedures. It usually describes the entry and exit criteria in addition to the checkpoint for every activity or component in software engineering. Examples of the popular methodologies that are used today are based on information engineering, structure techniques or object oriented techniques.
The choice of model for development of software depends on the size and nature of the application. It can be an in-house development or development through external agencies. The professional who performs this type of engineering is known as a software engineer. He/she applies engineering principles in the co-operative development of software.