Software (Systems) Development Life Cycle
Complete Developer Podcast - A podcast by BJ Burns and Will Gant - Giovedì
Software Development Life Cycle (SDLC) is a process for designing and building quality software. The goal is high quality software that meets the customer’s needs. It also takes into account the amount of time needed to develop the software along with the cost of development. This includes cost of developer hours, software licenses, operations, and system requirements. It is a detailed plan to not only build but also maintain software. Each stage in the life cycle has it’s own inputs, processes, and outputs. SDLC offers a basis for project planning, scheduling, and estimating, as well as providing a framework for a standard set of activities and deliverables. It is designed for project tracking and control so that it increases visibility of project planning to all involved in the the development process, from stakeholders to developers and QA. SDLC underlies many of the most popular project management methodologies. It is the base class of project management from which many methodologies inherit. One of the most well known and misunderstood is Waterfall. This is the oldest and one of the simplest methodologies. Each stage must be completed before the next one begins, it waterfalls into the next one. The biggest issue is that a small error or detail missed can hold up the entire project. The next most common methodology is Agile. This separates the application into cycles and delivers a working product for each iteration. It involves creating a succession of releases where testing creates a feedback into the development of the next iteration. The biggest issue here is if the customer doesn’t know what they need or gets lost in the weeds of a feature they can derail the process. The iterative model is similar to Agile. In it the development team quickly creates an initial version of the application. Through testing it is improved on each successive version or iteration. If left unchecked this process can devour resources. There are many more methodologies within SDLC which are based on those listed above. Most of them try to solve a particular problem found in one of the previous ones. Each one could be it’s own episode just to go into all the details of it. As developers, especially early on in our careers, we may only see the bottom portion of this cycle. Most of the time we aren’t interested or involved in the high level decisions about projects and which ones to pursue. However, it is a good idea to understand what is going on so that you know what has already been done before work comes your way. More advanced and lead developers may be involved in some of the decisions or at least consulted on them. Use this information to help you understand what your managers are needing at each stage of this process. Episode Breakdown Planning Planning focuses on the scope of the project. This involves resource allocation, both human and material. It also involves scheduling, capacity planning, and cost estimation. Planning looks at who and what is needed for a project compared to what other projects or commitments have demands on them. The challenge here is to identify the problem and if it is feasible to solve. Cost/Benefit analysis is a large part of the challenge here. The team determines the costs and risks involved in the project. Then they compare that with the benefit of completing the project. There are several types of feasability checks for the team to assess. The economic check asks if the project can be completed based on the budget for it. Legal checks ask about regulatory requirements and laws with in the business domain. Technical checks ask if the current system can support the new application.