Software engineering is an engineering discipline consisting of a set of methods, tools and techniques that are used in the development of computer programs (Software).
It is concerned with all aspects of software production, from the early stages of system specification to the maintenance of the system after it is put into operation.
It is also a set of methods, the application of a systematic, disciplined and quantifiable approach to development, and offers tools and techniques that go beyond just software coding.
Concept of software engineering
The concept of software engineering has evolved over time. The first recorded use of software engineering was between 1963 and 1964. It was there that Margaret Hamilton used it while working on the Apollo and Skylab space program. This was to differentiate her work from that of hardware engineering.
In 1968 at NATO conference, important presentations were made trying to group the different disciplines related to the "manufacture" or programming of software products and their architecture, with the expression "software engineering".
At the beginning, software was considered an "art". There were no specific methods or procedures, but it was considered just another component of computer science.
These "artists" expressed their creations through hundreds or thousands of lines of code, where their "final work of art" was what was called software or program.
Once the computational power of computers began to increase rapidly, high-level languages began to appear in order to create more complex and demanding programs, the need for software with multiprogramming, multi-user, database management, and the demand for new software development increased.
The study of the common characteristics of systems is known as General Systems Theory.
The principles of this theory, derived from the study of other systems, can be applied to automated systems.
Some of the general principles of general systems theory are as follows:
The more specialized a system is the less able it is to adapt to different circumstances.
The larger the system the greater the number of resources that must be devoted to its daily maintenance.
Systems are always part of larger systems and can always be divided into smaller systems.
There are four fundamental groups of activities that are common to all software processes, and these are:
Software specification, where customers and engineers define the software to be produced and the constraints on its operation.
Software development, where the software is designed and programmed.
Software validation, where the software is verified to ensure that it is what the customer requires.
Software evolution, where the software is modified to reflect changing customer and market requirements.