- Introduction to Software Engineering
- The Evolving Role Of Software
- Changing Nature Of Software
- Software Myths
- A Generic View of Process
- Software Engineering- A Layered Technology
- A Process Framework
- The capability maturity model integration (CMMI)
- Process Patterns
- Process Assessment
- Personal And Team Process Models
- Process Models
- The Waterfall Model
- Incremental Process Models
- Evolutionary Process Models
- The Unified Process Model
Process models
Software development life cycle
Software development life cycle (SDLC) is a structured process that is used to design, develop, and test good-quality software. SDLC, or software development life cycle, is a methodology that defines the entire procedure of software development step-by-step. The goal of the SDLC life cycle model is to deliver high-quality, maintainable software that meets the user’s requirements. SDLC in software engineering models outlines the plan for each stage so that each stage of the software development model can perform its task efficiently to deliver the software at a low cost within a given time frame that meets user’s requirements.
The SDLC Model involves six phases or stages while developing any software.
Requirements analysis phase
Requirements analysis and specification phase is very important in the successful development of a software. If the customer requirements are not analyzed properly, the chances of project failure or amount of rework on project becomes very high. Therefore, the project startup without proper requirements analysis and documentation is considered as a major mistake.
It also increases the burden on developer to reflect/implement the changes multiple times. Such iterations increase the cost incurred in the overall project and also leads to customer dissatisfaction.
The importance of requirements understanding and documentation is independent of the type of project i.e., internal or contract based. The documentation generated after successful analysis and specification is called Software Requirement Specification (SRS) document. This document not only helps in getting a clear understanding about product requirements, but also helps in carrying out different activities of later phases.
Due to this fact, expert developers spend a lot of time to gather requirements.
Design phase
Design is a meaningful engineering representation of something that is to be built. It can be traced to a customer’s requirements and at the same time assessed for quality against a set of predefined criteria for “good” design. In the software engineering context, design focuses on four major areas of concern – data, architecture, interfaces and components.
Software design process is an iterative process through which requirements document (SRS) is transformed to design document.
Implementation and unit testing phase
In this phase, actual code is developed using a programming language. As soon as the code is developed, each unit or component in it is tested individually. Such testing is called unit testing. It ensures that maximum errors are detected and entire code is tested by following certain paths in the control structure.
Testing phase
Testing is a major activity for software development and its main function is to detect bugs or errors that occur while executing a software. During the phases like requirement analysis and system design, the output results in the form of textual documents whereas, for the coding phase, the output is a computer program. Hence, testing not only detect errors during
Development Life Cycle coding but also detect errors that occur during the previous development phases. Subsequently, there are four different types of testing that can be performed on software development.
Deployment phase
This forms the final phase of the software development process where the software is usually delivered to the end users for its effective implementation. Later, feedback is collected from the users and if, the software fails to meet the users requirements, it is modified. Hence, the important activities involved in this phase are:-
Perfect delivery
Support and
Feedbacks.
Maintenance phase
Software maintenance refers to the changes which are performed once the software is delivered to users. Maintenance activity is compulsory for each type of product and cannot be avoided. Generally, products require maintenance activity due to its heavy usage. But, software need maintenance in order to improve features, correct errors. It is an essential activity adopted by large number of organization because of the misuse of hardware.