The Construction phase is where the detailed design for the application is developed as well as the corresponding source code. The goal of this phase is to produce the software and supporting documentation to be transitioned to your user base.
It is normal for this phase to contain one or more sub-phases or "iterations" ,especially for large projects.
Each iteration provides an opportunity to deliver an increasingly complete solution that can be tested by the customer. The deliverables of each iteration also offer an opportunity to provide feedback that can be incorporated into subsequent iterations.
This iterative approach usually gives a good balance of planned, well structured development, and a prudent opportunity to refine previous work and adapt the overall development plan to suit the customer's changing requirements, which inevitably arise on a large project, as do new ideas with the benefit of hindsight.
It maximises the likelihood of delivering what the customer ultimately really wants, as opposed to what was initially conceived.
Work closely with modelers. The design of the system is captured in the design models, therefore programmers need to work closely with the modelers to understand the models and to provide relevant feedback regarding the modelers.
Document code. Code that isn't worth documenting isn't worth writing. Furthermore, practice shows that developers who write the initial documentation for their code, even if it's only in abbreviated form, are significantly more productive than those that don‘t
Write code. If you can't reuse something that already exists, then you're unfortunately forced to write new source code. The code that you write is likely to focus on a variety of aspects, including user interface, business logic, persistence logic, and even system programming.
Test code. There is a multitude of testing techniques, such as coverage testing, white-box testing, inheritance-regression testing, class testing, method testing, and class-integration testing (to name a few) that can be used to validate your code.
Integrate and package code. You need to integrate and package the work of the entire team, ideally in regular intervals, so that it may all work together. The end result of your integration efforts should be a working build of the system.
Tests are frequently grouped by where they are added in the software development process, or by the level of specificity of the test.
Unit Testing: refers to tests that verify the functionality of a specific section of code, usually at the function level.
Integration testing: is any type of software testing that seeks to verify the interfaces between components against a software design.
System testing: tests a completely integrated system to verify that it meets its requirements.
System Integration testing: verifies that a system is integrated to any external or third party systems defined in the system requirements.
Regression testing: it seeks to uncover software regressions, or old bugs that have come back. Such regressions occur whenever software functionality that was previously working correctly stops working as intended.