A layered technology Software engineering is an engineering branch that is associated with the development of a software product. There are four layers that act as a base for software engineering. Due to this reason, software engineering is called as a layered technology. All the four layers of software engineering are briefly summarised below-
Quality refers to the fitness for purpose. It is a subjective aspect. There are many software quality attributes that software must possess. In fact, the bedrock that supports software engineering is quality focus.
Process is one of the four P’s on which software project management focuses. When a software program is executed, it becomes a process.
It is a framework that must be established for effective delivery of software.
Focuses on HOW to build the software. Each method consists of multiple tasks like requirement analysis, testing, maintenance etc.
Tools are used to build up the software. Tools provide automated/semi-automated support for process & methods. For instance, CASE(Compute-raided software engineering) tools are used to design & implement applications.
Principles of software engineering Principles are basic ideas or rules that explain or control how something happens or works. Principles in software engineering are necessary for uniformity, discipline & output. Five principles of software engineering are described below-
1. Think through the problem completely before you try to implement a solution: This principle states that firstly, one should understand the problem thoroughly, then only he/she should start implementing the solution because proper understanding of the problem statement & analysation process are necessary to find the appropriate solution.
2. Divide & Conquer: Divide & Conquer approach states that the entire problem must be divided into sub-tasks for proper management. It is also called modularization. This division of the whole work increases the reliability, concurrent execution & maintainability.
3. Keep it simple: It means that there is no need to make the software process complicated. Developers, project managers & the people who are associated with the software product must keep the software process simple & easy to understand & implement.
4. What you produce, others will consume: It is totally true that software products are made for the users or customers. Developers make them in accordance with the requirements & expectations of the users. Hence, a software must be userfriendly. User/Customer must be able to use the software with ease.
5. Learn especially from your mistakes: All humans make mistakes. There is nothing wrong in doing mistakes but one should learn from his/her mistakes. The same approach follows with regard to software as well. The developers must learn from their mistakes, their ultimate goal must be to produce a quality software product & they should fix the bugs/errors with great attentiveness.
The Algorithmic DocM Model for software development.
The DocM Model stands for Document Maintenance Model. This model refers to a systematic & planned approach for the development of a software. The creation of a detailed document is the most crucial aspect of this model.
BASIC STEPS (Phases) INVOLVED IN THE DocM MODEL
There are many steps involved in the DocM model that must be followed sequentially & with great management. The various steps are explained below-
1. COMMUNICATION: The very first phase is communication phase. In this phase, the customer contacts or approaches the service provider or the developer to express his/her desire of software product. The user or customer also tries to negotiate the terms at this step.
2. REQUIREMENT GATHERING: At this step, requirements are gathered from the customer. It focuses on WHAT not HOW. Discussion is carried out between customer & developer. It is an activity that helps to understand what problem has to be solved & what customers expect from the software. The foundation of this phase is effective communication. There are many requirement elicitation methods like interviews, brainstorming sessions, Facilitated application specification technique (FAST) etc. This step involves the practice of collecting the requirements from users, customers & other stakeholders.
3. FEASIBILITY STUDY: In this phase, it is checked that whether the project is feasible (Workable) or not. It concentrates on the operational feasibility, technical feasibility & economic feasibility. At last, a feasibility report is created that specifies whether the project is practically possible or not. This step is just an assessment of the practicality of a proposed system or project.
4. DCT analysis phase: Here, DCT stands for Design, Coding & Testing. This phase is not about the actual implementation, it is about the analysis & forming conclusions. The development team focuses ona.
a. DESIGN: It is all about the modelling techniques like use case approach, Entity relationship diagram, data flow diagram etc. The developer thinks which model must be used to portray the functionalities, behaviour & structure of the software system.
b. CODING: The development team decides which programming language is the most suitable for the proposed system. Actual coding is not started but a general idea is set regarding the programming methodologies. But, pseudo code or rough estimations are possible.
c. TESTING: Testing is the combination of verification & validation. But, at this step actual strict testing is not started. Only the test criteria & test case plan is created. More emphasis is given to the principles & objectives of testing with regard to the software project.
Hence, this DCT phase is only about analysis, planning & estimation. It is not about the actual implementation.
5. Writing Documentation: After the DCT analysis, there comes the role of proper documentation. A detailed document is created by the development team that comprises the following informationa.
a. Software requirements
b. Requirement analysis report
c. Feasibility report
d. Design details
e. Pseudo code
f. Test strategy & test plan
g. Characteristics of the software product
So, this document comprises of all the necessary details about the software product. The creation of this document is a time consuming process because all the details about requirements, design, coding & testing are included in it. The ultimate objective at this step is to generate a formal document that is understandable to users.