By George Pitagorsky | Follow on Twitter!
Software Development Life Cycle (SDLC) identifies the phases in a software development project. As Agile methods, have taken hold as an alternative to the traditional Waterfall approach, it is necessary to understand how Agile development fits in the overall project life cycle.
The Agile approach is focused on the iterative and rapid delivery of results. It is founded on the concept of early customer involvement, with the customer represented by members integrated into the project team. Agile, replaces detailed requirements documents with an iterative discovery of detailed requirements through prototyping and rapid development activities. Agile accepts and even promotes changes in requirements through the discovery process.
Agile Addresses Construction. What about the Rest?
Agile's iterations occur during the construction or development phase of projects. The construction life cycle begins with a product backlog or list of work items. This is the source of iteration backlogs, chosen based on priorities among the work items. Developers pick off work items and deliver results.
Where does the Backlog come from? Is software construction the whole game?
As project managers, it is important to recognize that there is a lot of important work that needs to be done before, in parallel with and after construction. One doesn't construct anything on the fly from a blank slate. Work occurs during Project Initiation/Inception, Requirements Definition, Design and Implementation phases of the project.
Initiation is concerned with determining whether the project is worth doing. To make that decision it is necessary to have a clear sense of the project goals and business objectives, scope and high-level requirements and the ability to at least get a gross estimate of cost and duration. The ability to cost the project hinges on some idea of whether the product will be bought or built, its architecture and requirements for hardware, facilities and other cost factors. Initiation results in the Project Charter which establishes the framework for the rest of the project.
Requirements definition, which in Agile projects does not have to be as detailed as it is in Waterfall projects, is necessary. Requirements definition begins during the Initiation phase -- how can anyone assess the value of project without having a sense of the features and functions to be delivered as software components?
Further detail is needed to get a clear sense of the scope of the project in terms of its use cases, actors, logistical/geographical span, telecommunication needs, technology platform requirements (e.g., will some users have mobile devices while others do their work on desktops?)
While requirements are subject to change during the construction phase, the hope is that the bulk of the changes will be in adjusting user functions and features rather than making discoveries of major new needs. For example, discovering that many users will be using their smart phones for data entry and inquiry instead of their desk top PCs would delay a project and significantly change cost factors.
Defining data requirements and a glossary for the product is another aspect of requirements definition that should be done before construction. While additional data elements may be discovered or others changed during construction’s iterations, it is expected that work done up front will make the construction go more smoothly.
Architecture and Design to establish a solution architecture is needed before construction begins. With a sense of what the high-level business requirements are, it is possible to establish a solution architecture that takes them into account and provides a foundation and framework for construction. The architecture and design establishes the standards for screen design, programming standards, data management, platform provisioning, user acceptance testing approach and more.
With an understanding of basic business requirements, the architecture, standards and procedures, the product backlog can be defined.
But, software itself rarely satisfies business needs.
Will there be procurement, training, marketing materials, organizational change? Will facilities have to be built out or refurbished? Is change to the hardware and communications infrastructure required? Will there be system, performance, regression and User Acceptance testing?
The implementation phase is the framework for addressing these issues. They are addressed in parallel with software construction, though there are interdependencies. For example, if users must be trained in the use of the new system and their business process, changes and functional design elements must be stabilized before training materials can be finalized. The computing infrastructure to enable development, testing and training must be in place before construction can begin. Construction delivers code to the system level testing process. Deployment and the intensive support, hyper-care, required during initial use of the new system often requires work by software developers as they turn the product over to the support team.
In the end, it is necessary to understand the overall nature of your project, regardless of whether you take an Agile development approach or not. Software development is rarely, if ever, an independent project. Instead it is embedded in a larger project or program that requires a formal (though non-bureaucrat) approach. Remember the Agile Manifesto does not dismiss documentation, planning, contracts and the rest, it promotes a practical approach that considers the needs of each situation.
Questions or comments? Feel free to share them below!
You may also like:
ABOUT THE AUTHOR: George Pitagorsky, PMP, integrates core disciplines and applies mindfulness meditation and people centric systems and process thinking to achieve sustainable optimal performance. George authored Managing Expectations: A Mindful Approach to Achieving Success, The Zen Approach to Project Management, Managing Conflict in Projects and PM Foundation. He is a senior teacher at the NY Insight Meditation Center.