Have you been caught up in the confusion, debate or argument around the term “software engineering”? If yes, then this article will give you the exact spot to stand as well as reaffirm your argument if you were certain of your stand.
The controversy is mostly centered on the engineering aspect of the term and a lot of IT professionals have not hesitated in misusing the term. Let’s break these term, and start by defining engineering, as this will lead us to a proven and clear definition of software engineering.
Let’s look into engineering
Engineering is defined as the creative application of science, mathematical methods, and empirical evidence to the innovation, design, construction, operation and maintenance of structures, machines, materials, devices, systems, processes, and organizations for the benefit of humankind.
The definition above shows that engineering is not a term synonymous to construction, building or implementation as perceived by so many. Rather, it must come handy from the conceptualization of an idea, stay through its implementation, delivery, maintenance, and all through the project’s life cycle (from conception to grave).
It is also important to note that engineering is a branch of science. This implies that an Engineer must be a Scientist but a Scientist mustn’t be an Engineer. Therefore, all computer software engineers are computer software scientist but not all software scientist are software engineers as they can simply focus on a particular phase of any project such as implementation without having to study other aspects for the rest of their lives.
At this point, I guess you already have an idea of what the definition of software engineering should be. Let’s do it together then.
Definition of software engineering
As supported by IEEE, Software engineering is defined as the systematic application of scientific and technological knowledge, methods, and experience to the conceptualization, design, implementation, testing, documentation and maintenance of software.
This definition points out the major components of software engineering which are briefly explained below;
Conceptualization: This involves elicitation, analysis, specification, and validation of requirements for software.
Design: This stage depicts the architectural components of the software which defines the interfaces, processes and scopes in a clearer perspective.
Implementation: Software construction, coding or programming takes place at this level along with unit and integration testing.
Testing: This is an empirical and technical investigation, conducted to provide stakeholders with information about the quality of the product or service under test. This is where the software is tested against its main objectives.
Documentation: This is a process that is observed at every stage. However, a full documentation which contains observations and solutions from tests, user guides, terms of usage and other necessary information are hereby provided.
Maintenance: This involves necessary activities that will give optimal support to the software through its life span.
It’s all about SDLC
Have you ever heard or seen the acronym “SDLC”? If yes, then that is all you need for thorough understanding of software engineering. SDLC stands for Software Development Life Cycle which distinctly presents the components of software engineering as phases. Based on the complexity or peculiarity of software projects, different SDLC models or schemas have evolved, such as Waterfall, Spiral, Agile, Rapid, and lots more.