Software development isn't all about the code. In fact, coding is part of the overall project lifecycle. The project phases are a slightly modified version of the classical sequential model that is appropriate for a lot of projects. However, you shouldn't think that this model is universal throughout the industry and that it can't be modified; on the contrary, almost each business applying this model adapts it to the specific needs of real situations.
The typical software project includes the following phases:
- Requirements Analysis and Definition. System Overview
- Functional Specification and UI Prototype
- Software Architecture and Test Plan
- Implementation (Coding) and Testing
- Release. Delivery and Installation
Operation and Maintenance
Below you will find a brief description of these phases: Requirements Analysis and Definition System Overview
You should determine and document the vision for the target product or system; the user profile(s); the hardware and software environment; the most important components, functions, or features the software must have; the security requirements, etc.
The product of this stage is the general system requirements (and sometimes, draft user manual). This document will be modified as the project is undertaken.
This is a phase that is usually obscure to customers. An estimate should explicitly list what is included in the price, as well as why and how much any additional features will cost. The estimate isn't the only document that results from this phase. The project contract (or project bid) and rough project schedule usually come into existence at this point, too.
Functional Specification and UI Prototype
A functional specification determines what exactly the target system must do and the premises for its implementation. All requirements should be thoroughly defined and documented. The general system requirements and other documents created in the first phase serve as input here. Depending on the nature of the system, creating a UI prototype in this phase may be crucially important for the success of the project.
Besides the functional specification and UI prototype, this phase may also result in creating an exact project plan that contains the project schedule, milestones, and human resources.
Software Architecture and Test Plan
In this phase, it is necessary to determine the system components covering your requirements and the way these components will work together. The software architecture design may be logically divided into two parts: general design and detailed design.
The general design consists of the structural design, development strategy, and system design documentation. Working out the general design, developers break the target system into high-level components and describe them in the context of the whole system.
When it comes to the detailed design, specification and documentation on each component are developed. The general system requirements, functional specification, and UI prototype serve as input for this phase.
Completing this phase, the description of the software architecture, the algorithmic structure of the system components and their specifications, the documentation of all design decisions, and a thorough test plan should be produced.
Implementation (Coding) and Testing
The goal of this phase is building the target system based on the specifications developed in the previous phases. Transferring the specification algorithms into a programming language, performing code reviews and test cases, as well as unit, integration, and system tests are other key activities of this phase. Comprehensive testing and correcting any errors identified ensures that components function together properly, and that the project implementation meets the system specification.
Release, Delivery and Installation
In the release phase, the target product or system must be transferred to you. The key activities usually include installation and configuration in the operational environment, acceptance testing, and training of the users if necessary.
A crucial point here is formal acceptance testing which comprises a series of end-to-end tests. It is performed to confirm that the product or system fulfills the acceptance requirements determined by the functional specification.
After this phase is complete, the product or system is considered formally delivered and accepted. If iterative development is used, the next iteration should be commenced.
Operation and Maintenance
The Operation and Maintenance phase begins once you have formally accepted the product or system delivered by the vendor. The task of this phase is the proper functioning of the software. To improve a product or system, it should be continuously maintained. Software maintenance involves detecting and correcting errors, as well as extending and improving the software itself.
The system requirements, user manual, functional specification, and even software architecture design often need to be updated and modified throughout the course of the project implementation. Just be cautious that any changes introduced in the documentation are consistent with your initial vision for the target product or system.