Software engineering shares common interest with other engineering disciplines. Like other engineering domains where a given problem (for example, building a bridge) can be solved by following a series of interrelated steps, the software development process also comprises a number of steps or phases. The main objective of software engineering is to develop methods for large systems, which help developers obtaining high-quality software in minimum time and at low cost. Therefore, it is essential to perform software development in phases. This phased development of software is often referred to as the software development life cycle (SDLC) or software life cycle.
A software development process comprises different phases. These phases follow a top-to-bottom approach, implying that the phases take inputs from the previous phases, add features, and then produce outputs. The outputs from different phases are referred to as intermediate product, work product, or derivable. Various phases involved in the systematic development of software. The phases of the software development process are shown as a comparison to the process of building a bridge in Table.
Table Building Bridge and Corresponding SDLC Phase
Phase |
Building Bridge |
SDLC Phase |
Formulate the problem by understanding the nature and general requirements of the problem. |
Understand the locations where the bridge is to be built; estimate the traffic that would pass on from the bridge along with its size requirements such as height and width; and so on. |
Requirements analysis |
Defining the problem precisely. |
Specify the exact location where the bridge is to be built along with its size and type. |
Requirements specifications |
Detailing the solution to the problem. |
Determine exact configuration, size of the cables and beams, and developing blueprints for the bridge. |
Software design |
Implementing |
Correspond to actual building of the bridge. |
Software coding |
Checking |
Specify load, pressure, endurance, and robustness of the bridge. |
Software testing |
Maintaining |
Specify the essential repairs that are to be made such as repainting, repaving, etc. |
Software maintenance |
This phase commences with discussion on the requests made by the user. The requests can be for a new system or for modifying the existing one. In this phase, it is determined whether the user's requirements can be met with the available hardware and software technologies. Preliminary investigation verifies the problem and understands the need for the required system. It involves determining whether the proposed system is beneficial for business and can be developed within the specified budget. In addition, the time factor that determines the duration of the project is also considered.
Preliminary investigation should be quick and cost effective. The output of preliminary investigation decides whether the new system should be developed. There are three constraints on which the decision to go ahead or not depends. These are listed below.
This phase studies the problems or requirements of software in detail. These requirements define the processes to be managed during the software development. After analyzing the requirements of the user, a requirements statement known as Software Requirements Specification (SRS) is developed. After analysis, planning for the project begins, which includes developing plans that describe the activities to be performed during the project development such as software configuration management plans, project and scheduling, and quality assurance plans. In addition, the resources required during the project are also determined.
In this phase, the requirements are given a 'defined' form. Design can be defined as a process of deciding information structures in terms of efficiency, flexibility, and reusability. Software design serves as the blueprint for the implementation of requirements in the software system. Each element of the analysis model in the analysis phase provides information that can be used for creating design models. The requirements specification of software together with data, functional, and behavioural model provides a platform to feed the design task to achieve the desired functionality and quality.
First, a top level design is made to outline the problem solution. Next, detailed designing is carried out to specify all the details needed so that the programmers can easily implement the1design. Some of the basic design principles that are used for a good design practice are listed below.
The coding phase can be defined as a process of translating the software requirements into a programming language, using tools that are available. Writing an efficient software code requires a thorough knowledge of programming language and its tools. Therefore, it is important to choose the appropriate programming language according to the user's requirements. A program code is efficient if it makes optimal use of resources and contains minimum errors.
To write software code efficiently and with minimum errors in a programming language, a coding style is followed. A coding style comprises several guidelines known as coding guidelines that are used to implement individual programming language constructs, comments, formatting, and so on. The objective of using these guidelines is to reduce complexity and errors in programs and improve the understanding of the source code. A set of comprehensive coding guidelines encompasses all aspects of code development. To ensure that all developers work in a harmonized manner (the source code should reflect a harmonized style as if a single developer has written the entire code in one session), the developers should be aware of the coding guidelines before the inception of a software project.
Software testing is performed to ensure that the software is free from errors. Efficient testing improves the quality of software. To achieve high-quality software, testing requires a thorough analysis of the software in a systematic manner. A test plan is created to test software in a planned and systematic manner. In addition, software testing is performed to ensure that the software produces the correct output. This implies that outputs produced should be according to user requirements, produced by following rules and guidelines. These rules and guidelines that are followed while performing testing are known as principles of software testing and help perform testing efficiently and effectively. The commonly followed principles for software testing are listed below.
This phase comprises a set of software engineering activities that occur after the software has been delivered to the user. The objective of this phase is to make the software operational as per the user requirements and to provide continuity of service. To achieve this objective, software maintenance focuses on fixing errors, recovering from failures such as hardware failures or incompatibility of hardware with software. In addition, it facilitates future maintenance work by modifying the software code and databases used in the software.
After the software is developed and delivered, it may require changes. Sometimes, changes are made in a software system when user requirements are not completely met. To make changes in a software system, the software maintenance process evaluates, controls, and implements changes. Note that changes can also be forced on the software system because of changes in government regulations or in policies of the organization.
Software is developed using different software process models. It must be noted that software maintenance is applicable to every software system regardless of the software process model followed. Software maintenance is performed to accomplish tasks such as detecting and fixing errors, supporting enhancements, and improving software to accomplish user requirements.
Dinesh Thakur holds an B.C.A, MCSE, MCDBA, CCNA, CCNP, A+, SCJP certifications. Dinesh authors the hugely popular Computer Notes blog. Where he writes how-to guides around Computer fundamental , computer software, Computer programming, and web apps. For any type of query or something that you think is missing, please feel free to Contact us.
Basic Courses
Advance Courses