A roadmap provides a blueprint for each client engagement. It identifies the sequence of four major software development lifecycle phases. The Roadmap enables the selection of specific processes and activities to be incorporated into the project lifecycle based on the solution objectives and the project’s critical path. The Roadmap also provides for advanced warning of pitfalls for each incremental gate and area of delivery, and it encourages the engagement team to plan for later phases by identifying next steps and mitigating risk based on best practices. The followings are the four major software development lifecycle phases and their associated activities for each phase.
1. Discovery Phase
Discovery is a crucial phase when the project team identifies and documents the client’s requirements, setting the stage for successful delivery. In this phase, the functionality, overall scope, and the steps where features will be individually developed, tested, and deployed are discussed and agreed upon. This phase is generally comprised of the following set of activities:
The project team meets with the client team to conduct initial, high-level meetings to understand the customer’s business objectives, technical constraints, and timeframes, and to form a partner alignment. During the scoping activities, the solution boundaries are established to determine which business functions or processes will be included in the project activities and deliverables.
The project team prepares for the client engagement by identifying and preparing project team members. The team learns about both the client and project and collaborates to plan the most effective approach for gathering requirements. In addition, the team prepares for the kick-off meeting with the client.
The project kick-off meeting is the primary orientation activity where the project team and client team members meet and discuss project roles and responsibilities, and additional client team members may be identified. Outputs may include a Project Plan and detailed timeline and a Project Charter, which includes Change and Risk Management plans, Communications Plan, and other execution-specific management plans.
- Requirements Definition
Requirements-gathering initiates during scoping and becomes more detailed with the project team members who will be working on the solution during requirements definition. The project team works with the client to identify their business needs, and from those needs, the project team derives functional and technical requirements to design, build, test, and deliver the solution. Some example deliverables include a Business Requirements Document, Functional Requirements Document, Technical Requirements Document, Usability Plan, Process Flows, and Data Flows.
2. Design Phase
During the Design phase, the project team builds on the requirements gathered in the Discovery phase by analyzing the requirements and designing the solution. Depending on the solution, the team may create detailed designs of new business processes, system architecture, data stores, application programs, data-loading processes, or other solution-specific components. These designs are internally reviewed for quality and completeness, and any changes to the requirements or assumptions made during Discovery are incorporated before reviewing the designs with the client, as appropriate. Solution design activities generally include:
The project team analyzes all the client requirements and existing systems and data. The team members cycle through additional requirements gathering, analysis, and design until all analysis questions have been answered in detail and the design has been refined enough to address the objectives identified in the Statement of Work.
This activity may address business process, data, and/or software and system modeling. Outputs may include a to-be workflow, dimensional model, security model, or any other design document. The models serve to depict the requirements in a graphical representation. As the solution models are reviewed, gaps in requirements may be identified, initiating further analysis and mitigation activities.
The purpose of the Architecture Design activity is to transform the Functional Requirements and Technical Requirements into an architectural design that supports these requirements. If the project uses a new tool or technology, then a Proof of Concept also may be conducted. This Proof of Concept activity would require research of the technology or tool and testing to prove its viability.
The project team may develop a System Architecture document, which defines all components to be used in the proposed solution including databases, applications, hardware, and communications. Often, project teams will perform Proof of Architecture activities to ensure the solution’s architectural design will function as intended and to identify any design constraints.
3. Development Phase
The purpose of the Development phase is to build and test the solution that has been designed. This phase is conducted in conjunction with the customer’s business and technical staff to ensure that consensus is gained on each deliverable.
Construction may entail development or implementation of a business, software, or hardware system. Construction begins with the completion of key Design deliverables with the project emphasis focused on producing the desired solution within the time, cost, and system parameters that were defined during Discovery. This phase is normally conducted in conjunction with the client’s business and technical staff to ensure consensus is achieved on the various project deliverables.
Back-end data, content, security policies, or other components from existing client systems may need to be migrated to the new system. Often transformation is necessary as a critical component of the migration activities to ensure expected results will be achieved upon migration completion. Typically, migration is an essential part of the Development phase and is a key element to deliver a complete, functioning solution.
Testing activities ensure the solution meets the client specifications. The project team members will test a solution at various stages of development and will support the Client’s testing at key milestones. Test documents may include a high-level test strategy, detailed test plan, test cases, test scripts, or other documentation that facilitates the testing and records the results. The engineers use the results to make any necessary corrections, and at times the final testing results may be delivered to the client as part of our quality assurance measures.
4. Deployment Phase
The Deployment phase begins with the final roll-out of the solution and ends with ownership transition of the solution to the client. The project team and the client will have agreed upon the acceptance criteria for the solution delivery. Therefore, this phase mainly addresses
the mechanics of deploying the solution and ensuring the client is prepared to take ownership, including the following activities:
Whether the project team built the solution in a development environment on or off the client site, the solution needs to be installed in a production environment on the client site or chosen facility. This activity generally includes the client team members, thus incorporating some knowledge transfer to better enable the client to support the solution.
New business processes and software systems require implementation in the client organization, as they are rarely transparent to the end-user and/or support groups. Implementation activities and services may include preparation and delivery of installation guides and scripts, support for deployment of the solution into the production environment and development and delivery of any necessary back-up and recovery processes.
- Knowledge Transfer
When the client takes ownership of the solution, they need to be able to support the daily processes and ongoing maintenance. The project team provides both hands-on knowledge transfer and documentation to facilitate the client’s needs. Depending on the client’s availability, knowledge transfer may occur during the project engagement in the form of mentoring and/or by working alongside the project team members or may occur at the end of the project in more formal knowledge transfer sessions.
- User Training
The project team members provide formal or informal training for end-users and administrators of our solutions. The team will typically recommend a train the trainer approach to enable the client to conduct effective training for the initial deployment as well as on-going training as needed. Additionally, based on client need, the project team also provides full training solutions ranging from complete classroom workbooks to online help to how-to guides producing the most effective user training for the client audience.
Toward project closeout, the project team works with the client to complete the project deliverables and resolve any outstanding issues. The client signs off on the final deliverables and, therefore, closes out the project. The project team closes the loop with a final review of our work by asking the client to complete a professional services client survey. The client feedback feeds back into our Process and Practice Methods for future engagements.
Software development is a complex activity that involves several tasks, disciplines, and phases that exhibit a high degree of variability. Upfront planning is the basis for predicting, measuring, and controlling problems and variations during the development lifecycle. The aim of this article is to organize, analyze and make sense out of this diverse field of software development lifecycle. In order to achieve the best software products within the resource constraints, software practitioners must devise elaborate planning before developing applications. Therefore, adopting and following the right roadmap will benefit the process not only on the development side but also with the management of the project.
Critiques, comments, and questions are welcomed. If you don’t want your message to be publicized, you can reach me via email at