W07 Learning Activity: The SDLC Revisited
Overview
Now that you have learned about each phase of the Software Development Life Cycle (SDLC) in more detail, it is time to take a step back and consider the life cycle and methodologies as a whole.
Key Points to Remember:
- Each phase of the SDLC is all about managing risk.
- Regardless of the methodology you use, make sure to give proper attention to each phase of the SDLC.
Preparation Material
As you have learned throughout this course, the SDLC is a high-level process that defines the phases involved in the development of software from inception to deployment and maintenance. It provides a systematic approach to building software and typically includes the following stages (shown along with the week that it was discussed in this course):
- Requirements Elicitation (Week 02): Gathering and documenting the functional and non-functional requirements.
- Design (Week 03): Creating the architecture and design of the system.
- Implementation: Writing the code according to the design specifications.
- Testing and Verification (Week 04): Verifying that the software works as intended and is free of defects.
- Release and Maintenance (Week 05): Releasing the software to users and providing ongoing support and updates to the software.
Software Development Methodologies
Throughout the learning activities and case studies of this course, you have seen that each of these phases can be performed in various ways and with various levels of formality. Recall that in a software project, the SDLC defines the what, and the methodology defines much of the how. Regardless of the methodology you use or the specific way that you perform each phase, each one should be present in some form.
For example, in a traditional Waterfall approach, each of the SDLC phases are completed in sequential order with the output of one phase feeding directly into the next phase. On the other hand, in a more agile methodology, the phases of the SDLC are performed iteratively, perhaps cycling through all phases in a short two week period.
The important thing to remember is that no matter what methodology your company uses, each of the phases of the SDLC should be present and receive proper attention. It should be a major red flag if your company uses their choice of methodology to skip or downplay any of these phases. For example, it would be very troubling if someone said, "We don't need to worry about design, because we're doing agile."
Each phase of the SDLC should be present and receive proper attention at your organization, regardless of the methodology you adopt. Choosing a specific methodology may change the timing, frequency, or the way a phase is completed, but it is not a reason to ignore a phase.
Shift Left
It is also concerning when people try to avoid responsibility for other parts of the process, such as saying, "That's not my problem," or "The testers are in charge of that." Modern movements, such as DevOps, are specifically designed to reduce this mentality of "throwing it over the fence" by integrating the development and operations people more tightly so that everyone feels a shared sense of responsibility for all parts of the process.
Along these same lines, there is a movement called "Shift Left" that promotes performing certain tasks or raising awareness of later phases earlier in the SDLC. The goal is to identify and resolve issues sooner, reducing the time and cost associated with fixing problems that are discovered late in the development process.
Shift Left Principles
The following are the key principles of a Shift Left approach:
- Early Testing: Traditionally, testing is done after the implementation phase. Shift left promotes the idea of starting testing activities earlier, often during the requirements and design phases. This includes unit testing, integration testing, and even some forms of acceptance testing.
- Early Involvement: All stakeholders, including testers, quality assurance (QA) professionals, and operations teams, are involved from the beginning of the project. This ensures that their perspectives and requirements are considered early on.
- Continuous Integration/Continuous Delivery (CI/CD): CI/CD practices support the shift left movement by allowing for frequent integration and testing of code. Automated tests are run with every code change to catch issues early.
- Automation: Automation of testing and other processes is a critical enabler of the shift left approach. Automated unit tests, integration tests, and even code analysis tools can help identify issues immediately after code changes are made.
- Static Code Analysis: Tools for static code analysis, which examine code for potential errors and vulnerabilities without executing it, are used early in the development process to catch issues before the code is even run and avoid technical debt.
- DevOps Practices: DevOps encourages a collaborative culture between development and operations teams and often involves practices like Infrastructure as Code (IaC) and automated deployments, which support early and frequent testing and validation.
Benefits of Shift Left
The following are some of the benefits of Shift Left:
- Early Defect Detection: By identifying and addressing defects early, the cost and effort required to fix them are significantly reduced.
- Improved Quality: Continuous and early testing lead to higher-quality software, as issues are caught and fixed promptly.
- Faster Time to Market: With fewer defects making it to later stages of development, projects can progress more smoothly and quickly, reducing delays.
- Enhanced Collaboration: Early involvement of all stakeholders fosters better communication and collaboration, ensuring that everyone is aligned and potential issues are identified early.
- Reduced Risk: Early identification of potential issues and risks allows for timely mitigation strategies to be put in place.
Power Skills
A common theme throughout this course has been that software is designed and written by people, not robots. Thus, learning to work effectively with other people is essential. Almost all employers say that while technical skills are important during the interview process, they look most carefully for people who they think will fit in and work well with their team. Some companies refer to this as "cultural fit", and even dedicate a specific interview stage to assess it.
These people skills are sometimes called soft skills, or power skills. BYU-Idaho has defined four institutional learning outcomes, that we hope all students develop during their degree programs. These institutional learning outcomes describe some of these power skills:
- Sound Thinkers: We frame and solve problems using creative and critical thinking.
- Effective Communicators: We develop & express ideas that are purposeful, organized, and clear.
- Skilled Collaborators: We work effectively with others to accomplish a shared vision.
In addition to these generally recognized power skills, BYU-Idaho has a fourth institutional learning outcome that is at the core of it's mission:
- Disciples of Jesus Christ: We believe in Jesus Christ as the Son of God and strive to follow Him.
As you have seen in the case studies of this course, there are many opportunities to model the teachings of Jesus Christ in the workplace. Developing these character traits will help you throughout your career as well as your personal life.
Continue the conversation
After completing this reading, ask 3-5 follow up questions about the SDLC to an AI system of your choice. (You may use ChatGPT, Bing, Claude AI, Gemini, or any other system of your choosing.)
Good questions may include:
- Explain _______ in the SDLC.
- What are the benefits or drawbacks of _______ ?
- What is the purpose of shifting left in a software project?
- What are important power skills for a software developer?
- Why is software engineering difficult?
Submission
After you are comfortable with these topics, return to Canvas to take the associated quiz.
Other Links:
- Return to: Week Overview | Course Home
ChatGPT assisted in the creation of this learning material.