19 Dec 2016 |
Research article |
Software Systems, Multimedia and Cybersecurity
Software Engineering, a Little-Known Discipline
In March 2015, Claude Y. Laporte, a software engineering professor at l’ÉTS, was the guest of a science show named Les années lumière, during which he explained the general concepts of this new engineering discipline.Broadcast Sundays at ICI Radio-Canada radio station from 12:10 pm to 2:00 pm, this radio show focusses on science and related topics including health, the environment, fundamental research, demography, city planning, etc.
Where is software engineering used?
Software is all around us. A concrete example of software engineering is in the automotive sector where, today, luxury cars can be equipped with up to 100 processors running combined code of up to 100 million lines. Considering the fact that the development of 200,000 lines of code for critical components requires an effort of more than 3,000 person-months, the complexity, and necessity of software engineering in our daily lives become much more obvious.
What is software engineering?
A specialised engineering discipline, the term “software engineering” first began to appear in the late ‘60’s. The software engineering program at l’ÉTS was inaugurated in 2001. Essentially, it is the application of a systematic, rigorous and quantifiable approach to the development, use and maintenance of software, in other words, the application of engineering principles to the software world.
What is the software engineering process?
Contrary to some preconceived notions, programming (or coding) is only a small part of the complete process of a large project (e.g. from 10 to 15% of the overall budget) which actually takes place in several different phases. As an example, a waterfall software development project starts with an analysis of the client’s needs which are then translated into specifications. These specifications are documented and then reviewed by the client. Once the specifications are approved, tests are written to verify the code. An architecture is developed, followed by the creation of the code itself, then the various code modules are integrated and, finally, the software is tested at the system-level. Errors can be introduced at every stage of development, so it is normal to perform several verifications (such as reviews and tests) to detect and eliminate as many errors as possible before the final product is delivered to the client.
One of the most significant software engineering issues resides in the fact that, contrary to most other engineering disciplines such as chemical or electrical engineering, software engineering is not based on laws of nature. It has only been by trial and error over many decades since it began in the ‘60’s, that it has been possible to develop a proven body of knowledge (proven practices) which are now embodied in an extensive set of recognized international and professional standards.
To listen to this radio interview (in French), click here.
Claude Y. Laporte was a Professor of software engineering at ÉTS before retiring. He is the Project Editor of the systems and software engineering ISO / IEC 29110 standards for Very Small Entities developing systems or software products.