To understand Software Engineering, we should first understand, What it is Engineering?
Understanding of Engineering
Engineering is the application of Science, Tools, and Methods to find a cost-effective solution to the given problem.
Relation between Software & Engineering
Software engineering means the use of engineering approaches to develop software. It is a systematic collection of past experiences on techniques learned, the methodology used, and guidelines followed to develop software over the decades. This approach minimizes software crises. However, it can not eradicate. In our subsequent notes, we will learn about why it isn’t easy to achieve.
There are standard definitions of software engineering available in the literature, and a few of them are mentioned below.
Definitions of Software Engineering
Software engineering is an engineering approach to develop software. The engineering approach evolved and was refined by people specialized or years of experience in this domain. When the entire experience or learning process is validated and verified by some mathematical model, these learning experiences are consolidated in written documents or guidelines.
Every technology initially is in an Art form, then slowly converges into a craft and gradually moulded into an engineering form. The engineering form means a systematic use of experience and validated it based on scientific methods.
Software engineering can also be defined as a systematic, disciplined, and quantifiable approach for developing, operating, and maintaining software.
In this definition, the entire lifecycle of the software is divided into three phases. It starts at development, followed by operations, and continues maintenance until the end of the software product’s life. So, in each phase, we need to follow systematic, disciplined, and quantifiable approaches.
Software engineering covers a process, a collection of methods, and an array of tools that allow professionals to build high-quality computer software.
Software engineering is an engineering branch associated with the development of software products using well-defined scientific principles, methods, and procedures. The outcome of software engineering is an efficient and reliable software product.
Software engineering principle
In the early’s, 1960 – 1970, computer scientists and engineers were using the Exploratory Software Development processes to develop software. However, there was a limitation of it. As project complexity increases, maintaining it with human cognitive power was becoming difficult, leading to one of the factors for software crisis. The software engineering principle extensively uses techniques specifically targeted to overcome human cognitive limitations. These two principles are profusely used.
- Abstraction
- Decomposition
Abstraction
It focuses on only one aspect of the problem and ignores other aspects and irrelevant details. In other words: simplify a problem by omitting unnecessary details. This approach is also called model building.
So the question arises that does every problem have a single level of abstraction?
Answer: No. There are various options, and these are as follows:
- For simple problems:
- Several abstractions of the same problem can be created.
- Focus on some specific aspects and ignore the rest.
- Different types of models help us to understand different aspects of the problem.
- For more complex problems:
- A single level of abstraction is inadequate and needs to construct a hierarchy of abstractions.
- In a hierarchy model: A model in one layer is an abstraction of the lower layer model and an implementation of the model at the higher layer. It is similar to the concept of the layering approach.
Decomposition
It breaks the problem into many small independent parts, and smaller parts are then taken up one by one and solve separately. The idea is that each small part would be easy to grasp and can be easy to solve. However, an arbitrary decomposition of a problem may not work or help. So the decomposed parts must be more or less independent of each other.
References
- Fundamentals of Software Engineering Book by Rajib Mall and NPTEL video series.
179 total views, 1 views today