Topic 2 - Advanced Software Development Methodologies PDF
Document Details
Tags
Summary
This document discusses advanced software development methodologies, including Scrum, Kanban, Extreme Programming, Continuous Integration (CI), Continuous Delivery (CD), and DevOps. It explains the principles, roles, and key ceremonies of these approaches, as well as the tools and techniques used in Agile project management. The material presents a deep dive into these practices and benefits, with a view to improving software development speed and quality.
Full Transcript
Topic 2 Advanced Software Development Methodologies Learning Objectives: 1. Understand the key principles and practices of Scrum, Kanban, and Extreme Programming (XP). 2. Explain the importance of Continuous Integration (CI) and Continuous Delivery (CD) in Agile develo...
Topic 2 Advanced Software Development Methodologies Learning Objectives: 1. Understand the key principles and practices of Scrum, Kanban, and Extreme Programming (XP). 2. Explain the importance of Continuous Integration (CI) and Continuous Delivery (CD) in Agile development. 3. Describe the DevOps culture and practices, and how they enhance software development and operations. 4. Utilize Agile project management tools and techniques to manage software projects effectively. Agile Development in Depth Agile development is a set of principles and practices that promote iterative development, collaboration, and flexibility in response to changing requirements. Agile frameworks Scrum is an Agile framework that divides the project into small, manageable units of work called sprints, typically lasting 2-4 weeks. Roles: 1. Product Owner: Responsible for defining the product backlog and prioritizing tasks based on business value. 2. Scrum Master: Facilitates the Scrum process, ensures adherence to Agile practices, and removes impediments. 3. Development Team: A cross-functional team that works collaboratively to deliver a potentially shippable product increment at the end of each sprint. Key Ceremonies 1. Sprint Planning: The team decides what to accomplish in the upcoming sprint. 2. Daily Stand-up: A short daily meeting where team members discuss progress, plans, and blockers. 3. Sprint Review: The team presents the work completed during the sprint to stakeholders. 4. Sprint Retrospective: The team reflects on the sprint to identify improvements for future sprints. Kanban Kanban is a visual workflow management method that helps teams improve efficiency by visualizing tasks and limiting work in progress (WIP). Core Principles: 1. Visualize Work: Tasks are represented on a Kanban board with columns indicating different stages of the workflow (e.g., To Do, In Progress, Done). 2. Limit WIP: Limiting the number of tasks in progress helps prevent bottlenecks and ensures a steady flow of work. 3. Manage Flow: Teams monitor the flow of tasks and continuously seek ways to optimize it. 4. Continuous Improvement: Regularly reviewing the workflow and making incremental changes to improve efficiency. Extreme Programming (XP) XP is an Agile methodology that emphasizes technical excellence and close collaboration with customers. It promotes high-quality code and rapid iterations. Core Practices: 1. Pair Programming: Two developers work together at one workstation, continuously reviewing each other’s code. 2. Test-Driven Development (TDD): Writing tests before code to ensure that the software meets its requirements. 3. Continuous Integration: Integrating code changes frequently to detect issues early. 4. Customer Collaboration: Involving the customer directly in the development process to ensure the product meets their needs. Continuous Integration and Continuous Delivery (CI/CD) CI/CD are practices that enhance the Agile development process by automating the integration, testing, and deployment of code changes. Continuous Integration (CI) - involves automatically integrating code changes from multiple developers into a shared repository several times a day. ✓ Each integration triggers an automated build and test process. Benefits: 1. Early Detection of Issues: Frequent integration helps identify and fix issues early in the development cycle. 2. Improved Collaboration: CI encourages team collaboration by ensuring that everyone’s changes are integrated and tested regularly. 3. Reduced Integration Problems: By integrating continuously, the team avoids the dreaded "integration hell" where changes accumulate and create conflicts. Continuous Delivery (CD) extends CI by automating the deployment process, ensuring that code is always in a deployable state. ✓ With CD, every code change can be deployed to production at any time. Benefits: 1. Faster Time to Market: CD allows for frequent releases, getting new features and fixes to users quickly. 2. Reduced Risk: Small, incremental releases reduce the risk of introducing major issues into production. 3. Improved Feedback Loop: Regular releases enable quicker feedback from users, allowing the team to make adjustments more rapidly. DevOps Culture and Practices DevOps is a cultural and professional movement that focuses on collaboration between development and operations teams to improve the speed and quality of software delivery. Core Principles Collaboration: Breaking down silos between development, operations, and other stakeholders to foster a culture of collaboration. Automation: Automating repetitive tasks (such as testing, deployment, and infrastructure provisioning) to increase efficiency and reduce human error. Continuous Monitoring: Implementing monitoring and logging to gain visibility into the system’s performance and quickly identify and resolve issues. Infrastructure as Code (IaC): Managing and provisioning infrastructure through code, enabling version control, automated testing, and consistent environments across development, testing, and production. Benefits of DevOps Faster Delivery: DevOps practices enable quicker and more reliable software releases. Improved Quality: Automation and continuous monitoring help maintain high- quality standards throughout the development and deployment processes. Resilience: DevOps fosters a culture of ownership, where teams are responsible for both development and operations, leading to more robust and resilient systems. Agile Project Management Tools and Techniques Agile project management requires tools and techniques that support iterative development, collaboration, and flexibility. Common Agile Tools 1. Jira: A popular tool for managing Agile projects, Jira allows teams to create and track tasks, user stories, and epics, as well as manage sprints and backlogs. 2. Trello: A visual project management tool that uses boards, lists, and cards to represent tasks and workflows, making it easy to track progress and manage WIP. 3. Asana: A tool for tracking tasks, setting deadlines, and managing team collaboration, Asana is flexible and suitable for Agile workflows. 4. Azure DevOps: A suite of tools that support Agile development, including version control, CI/CD pipelines, and project management features. Techniques 1. User Stories: Describing features from the user’s perspective, user stories are a fundamental Agile technique for capturing requirements. They are often written in the format: "As a [user], I want [functionality] so that [benefit]." 2. Burndown Charts: A graphical representation of work left to do versus time. It helps the team visualize progress and forecast whether they will complete the sprint on time. 3. Backlog Grooming: Regularly reviewing and prioritizing the product backlog to ensure that the most valuable and feasible tasks are ready for upcoming sprints.