1. Requirements analysis
There should be a clear understanding of what the software is supposed to do before beginning the design phase. The initial requirements are derived from the product concept document (PCD). A PCD describes the features and functionality expected from a system or application. A PCD may include any number of business rules, as well as technical specifications. It provides a description of the desired outcome and serves as the basis for defining the scope of work and determining whether a project is feasible. Business users may use a different set of words to describe their goals and objectives. In some cases they will not have a formalized PCD. Instead they may write the requirements directly into a user documentation. The primary source of requirements information is the functional specification, which is written by the technical expert at the start of the project. The functional specification contains the complete set of requirements, along with supporting information. It describes the high-level structure of the software, including its components and interfaces.
2. System architecture
The system architecture consists of the following elements: data models; the logical framework; and the physical framework. Data models define the fundamental concepts that represent the entities involved in the solution, while logical frameworks provide the relationships between these elements. Physical frameworks describe how the data model is implemented physically. These three components together form the foundation of a working and testable solution.
Designing is the first step towards building software. During this stage the developer designs the software using a structured approach. The designer starts by identifying the problem. He then determines what the program does, who uses it, and what data is exchanged between objects. Next he develops the conceptual data structures to solve the identified problem. He then builds the data models and logically defines the object classes and relationships among them. To ensure compatibility with future changes, the designer implements the design in a way that encourages reusability. Finally he writes the code. The code includes instructions to perform tasks, procedures, and logic. At this point the developer must create the code and implement it according to the requirements specified in the previous section. The source code is compiled into machine language or byte code, which is ultimately translated into binary executable files.
Implementation is the second major step in developing software. At this stage the developer translates the source code back into human readable form. Before compiling the code, tests are performed to verify the implementation complies with the requirements specified in the requirement analysis. If any errors are detected, the developer corrects the program, recompiles the code, and runs the entire unit test suite again. Once the code passes the unit test suite, the developer proceeds with testing the integration of the code. He then creates a build script to automate the creation of deployment packages. Deployment packages consist of the compiled code and associated files. The package is then installed onto the target environment.
5. Integration Testing and Release Candidate Test
Integration Testing occurs after deployment of the final version. It involves checking the system’s performance and stability. It involves verifying that the system performs as advertised under real world conditions. Integrations Testing may involve testing with several types of hardware platforms, operating systems, databases, etc. The final release candidate is prepared. It is tested for potential regressions and bugs. After all testing is complete, the software is ready for download.