Software (Systems) Development Life Cycle

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.

Om Podcasten

Will and BJ first met in college and have been friends ever since. You can tell this through their dynamic conversations. Will bring a wide knowledge base to the conversation through his years of experience as a senior developer and aspiring software architect. Whereas BJ being a journeyman developer is learning as he works in the field. He shares those lessons and more each week. Because of their varied experiences topics range from the technical to the every day life of a software developer. Whether you are just starting out or in the twilight of your career you'll find something useful and informative on Complete Developer Podcast. There are plenty of podcasts out there focused on languages and coding. What we are doing with the Complete Developer Podcast is to also cover the other areas of life as a developer.