The business must communicate with IT teams to convey their requirements for new development and enhancement. The requirements phase gathers these requirements from business stakeholders and Subject Matter Experts (SMEs.)
The output of this phase in a Waterfall project is usually a document that lists the requirements. Agile methods, by contrast, may produce a backlog of tasks to be performed.
The Architects, Development teams, and Product Managers work with the SMEs to document the business processes that need to be automated through software.
Without the perfect plan, calculating the strengths and weaknesses of the project, development of software is meaningless. Planning kicks oﬀ a project ﬂawlessly and aﬀects its progress positively.
- Resource allocation (both human and materials)
- Capacity planning
- Project scheduling
- Time estimation
- Cost estimation
Once the requirements are understood, software architects and developers can begin to design the software. The design process uses established patterns for application architecture and software development. The software engineers start writing the code. The development teams should produce working software as quickly as possible. Business stakeholders should be engaged regularly, to ensure that their expectations are being met. The output of this phase is testable, functional software.
The testing stage assesses the software for errors and documents bugs.There is a wide variety of testing necessary to measure quality.
- Code quality
- Capacity planning
- Unit testing (functional tests)
- Integration testing
- Performance testing
- Security testing
Maintaining and enhancing software to cope with newly discovered problems or new requirements can take far more time than the initial development of the software. Not only may it be necessary to add code that does not ﬁt the original design but just determining how software works at some point after it is completed may require signiﬁcant eﬀort by a software engineer. A small part of that is ﬁxing bugs. Most maintenance is extending systems to do new things, which in many ways can be considered new work.