System Development Life Cycle
The systems development life cycle (SDLC), also referred to as the application development life-cycle, is a process for planning, creating, testing, and deploying an information system. There are usually six stages in this cycle: requirement analysis, design, development and testing, implementation, documentation, and evaluation.
SDLC Methodologies are processes and practices used by software development teams in order to successfully navigate the Software Development Life Cycle (SDLC). Waterfall SDLC Model Waterfall software development is characterized by a very straightforward approach that follows a rigid series of steps. Each phase must be completed one by one, and there is no going back to a previous step.
The Prototyping Model
The Prototype method revolves around the creation of a low fidelity prototype for the purposes of collecting early feedback from prospective users. From there, prototypes are evolved into final software requirements.
The Iterative Model
The Iterative methodology was an early precursor to Agile. It emphasized iterative and incremental action. The Iterative software engineering model builds on an initial set of software requirements and identifies further needs through testing and evaluation. Each iteration of the development process produces a better version of the product. Each iteration goes through all the phases of the SDLC and these cycles are repeated until completion.
The Spiral SDLC methodology is one of the most flexible options and is usually employed in large-scale projects.
Spiral methodology passes through four phases repeatedly until the project is finished: planning, risk analysis, engineering, and evaluation. Each iteration of the four phases starts to identify development risks and the best ways to avoid them.
it is focused on risk analysis, with each iteration it focuses on mitigating potential risks. The model also emphasises customer feedback, and as the prototype build is done in small increments, cost estimation becomes easier.
The V-Shape model is named after its two key concepts: Validation and Verification. In the Verification Phases, requirements and designs are created. Each Validation Phase has a corresponding Verification Phase, where testing and user acceptance occurs. These two phases are linked together by the Implementation (or coding) phase.
The Agile software development strategy is based on an incremental and iterative approach to software development. Agile is one of the most common methodologies out there today but it’s technically more of a framework than a distinct model. Within Agile, there are sub-models in place such as extreme programming (XP), Rapid Application Development (RAD), Kanban and Scrum methodology. The Agile Manifesto’s 4 Core Values
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Agile Roles assign responsibilities to members of the team. They are different than positions as a single person can take on multiple Agile roles depending on the scope of the project. Conversely, multiple people can share the same role. Here are some of the roles you could see in an Agile project: -Product Owner - The Product Owner, also known as the “voice of the customer”, defines the product vision based on all insights, feedback, and ideas gathered. He or she is the owner of the product requirements and works closely with the development team to communicate the vision by documenting it in short narratives called User Stories. User Stories typically include a name, description, reference to any external documents, and an explanation of how to test the implementation. Product Owners often maintain a backlog of User Stories if there are too many to be executed concurrently. -Scrum Master - Similar to a project manager, this role is all about making sure the team is following Agile principles, values, and processes. -Team Member - All members of the development team have different skills and collaborate together to build functional software. Teams can include QA engineers, business analysts, designers, database engineers, and more depending on the project scope.
Advantages of Agile Methodology
- Deliver software well-tailored to an ever-growing understanding of customer demands
- Software is deployed more quickly and improved more regularly Better code hygiene including style, readability, and structuring Flexible and adaptable process enables pivots or changes mid-project Doesn’t require a complete list of requirements upfront Makes room to act on organizational learning as the project progresses Transparency and continuous communication with involved stakeholders
Scrum is a very popular Agile framework characterized by continuous collaboration, frequent deliveries, and special development cycles called ‘Sprints’. Scrum revolves around the following checkpoints: Planning meetings, in which the team identifies and discusses the Sprint priorities. Commitment meetings, in which the team reviews the backlog of user stories to determine how much effort it involves and how much work can be done during the upcoming Sprint. Daily standup meetings, which are notably short meetings that ensure everyone is aligned. In this regard, each team member communicates updates on story status, blockers, or concerns. Demo meetings, which the team attends at the end of each Sprint to show the functionalities implemented during the current sprint to the Product Owner. Retrospective meetings, which are also hosted at the end of each Sprint to discuss lessons learned, what went well, and what needs improvement. Scrum introduces the Scrum Master role to the Agile method. The Scrum Master’s job is to manage and improve processes, help the team stay authentic to Agile values, and focus on maximizing productivity. A good Scrum Master ensures that the process and progress are transparent to all stakeholders.
Kanban is a scheduling system framework for the Agile-eque Lean methodology. It doesn’t have its roots in software development, but synergizes very well with Agile and has become a staple of Agile teams. Kanban got its start in lean manufacturing, where Toyota applied the same “just in time” principles that supermarkets use to manage inventory stock levels based on customer demand. Kanban, meaning signboard in Japanese, uses cards to track and support the production system by visually showing the steps within the process and how long each step is taking using cards. Kanban has a host of benefits when applied to Agile. You can limit WIP, focus on cycle time, and utilize just-in-time practices. Kanban is sometimes compared to Scrum, which are similar in some ways, but are distinct frameworks:
- Scrum utilizes fixed length Sprints cycles while Kanban is about continuous flow
- Scrum is role focused, while Kanban doesn’t utilize roles
- Scrum measures velocity, while Kanban focuses on cycle time
In the Kanban framework, the team creates a visual representation of their tasks and statuses by using sticky notes on a physical whiteboard or by using a dedicated software application. Tasks are moved through predefined stages such as To-Do, In Progress, In Review, or Complete. A few examples of popular Kanban productivity apps:
- Zoho Projects
Extreme Programming (XP) is an Agile framework focused on project flexibility and writing high quality, well-tested code. The official Extreme Programming website states that XP improves a software project in 5 key ways:
Extreme Programming is best known for the following: Pair programming is a technique where two programmers share the same workstation and create software together. One acts as the driver and the other one as the navigator, then they switch roles. When paired, code review can take place instantly, and defects are more likely to be identified and corrected immediately. Pair programming encourages mentorship, knowledge sharing, and learning. And while it may take more time to produce new code when two developers work on the same task, the resulting code is higher quality with less defects.
Unit and functional testing are emphasized in XP. Tests are to be comprehensive and automated, reducing technical debt and ensuring code can confidently be validated and re-used.
Continuous communication between programmers and stakeholders to gather and act upon their input, feedback, and change requests. XP requires an “extended development team” that may include business managers, customers, and other key stakeholders.
The Lean system development methodology is similar to agile development, focusing on speed of delivery and continuous improvement throughout the project.
It concentrates on the Lean principles that include eliminating waste, empowering the team, delivering as fast as possible, and making decisions as late as possible.
Lean methodology is cost-effective and empowers the entire team in the decision-making process. However, with limited meetings and documentation, communication needs to be sound for senior stakeholders to stay in the project loop. Lean focuses on the following “just in time” principles: Eliminating waste in cost, scope, and scheduling Amplifying learning Taking decisions as late as possible Fast delivery Empowering the team Building integrity Optimizing the entire project
DevOps is not technically an SDLC methodology but it does share the goal of maximizing software project success and includes Agile-inspired concepts. DevOps, just like Lean, can work alongside Agile to create an infrastructure that eliminates the barriers slowing development and delivery of the final software product.
DevOps brings deployment and operation of the software fully into the Agile development process in the same way Agile brought testing and business analysis into software development.
Ultimately, the team is empowered to be self-sufficient and take ownership of software development, shipping, and support. They use Continuous Delivery (CD) for frequent releases and to maintain a well-tested and high-quality codebase.