Design Strategy and Software

🎨Design Strategy and Software Unit 9 – Agile Development in Software Engineering

Agile development is a flexible, collaborative approach to software creation that prioritizes rapid iteration and customer satisfaction. It emphasizes delivering working software frequently, adapting to changing requirements, and valuing individuals and interactions over rigid processes. The Agile Manifesto outlines core values like prioritizing working software over extensive documentation and responding to change over following a plan. Popular frameworks like Scrum provide structure with defined roles, events, and artifacts to facilitate effective collaboration and delivery.

What's Agile All About?

  • Agile is a mindset and approach to software development that prioritizes flexibility, collaboration, and rapid iteration
  • Emphasizes delivering working software frequently and adapting to changing requirements throughout the development process
  • Values individuals and interactions over processes and tools, recognizing the importance of effective communication and teamwork
  • Focuses on customer satisfaction by delivering valuable software early and continuously, incorporating feedback to ensure the product meets user needs
  • Promotes sustainable development practices, maintaining a constant pace and avoiding overwork to ensure long-term productivity and quality
  • Encourages simplicity, maximizing the amount of work not done by focusing on essential features and avoiding unnecessary complexity
  • Relies on self-organizing, cross-functional teams that are empowered to make decisions and adapt to challenges as they arise

The Agile Manifesto Explained

  • The Agile Manifesto, created in 2001, outlines the core values and principles of Agile software development
  • Values individuals and interactions over processes and tools
    • Prioritizes effective communication, collaboration, and adaptability within the team
    • Recognizes that people are the driving force behind successful software development
  • Values working software over comprehensive documentation
    • Emphasizes delivering functional, high-quality software as the primary measure of progress
    • Minimizes time spent on extensive documentation, focusing instead on creating value for users
  • Values customer collaboration over contract negotiation
    • Encourages ongoing communication and partnership with customers throughout the development process
    • Prioritizes understanding and meeting customer needs over strict adherence to predefined contracts
  • Values responding to change over following a plan
    • Embraces flexibility and adaptability, recognizing that requirements and priorities may evolve over time
    • Encourages teams to adjust their approach based on feedback and changing circumstances
  • The Agile Manifesto serves as a guiding philosophy for Agile methodologies, promoting a customer-centric, iterative, and collaborative approach to software development
  • Scrum is a widely adopted Agile framework that provides a structure for managing and completing complex projects
  • Consists of roles, events, artifacts, and rules that work together to facilitate effective collaboration and delivery
  • Roles in Scrum include:
    • Product Owner: Represents stakeholders, defines and prioritizes product backlog items
    • Scrum Master: Facilitates the Scrum process, removes impediments, and ensures adherence to Scrum practices
    • Development Team: Self-organizing, cross-functional group responsible for delivering working software increments
  • Scrum events include:
    • Sprint: A time-boxed iteration (usually 2-4 weeks) during which the team works to deliver a potentially releasable product increment
    • Sprint Planning: A meeting where the team collaboratively plans the work for the upcoming Sprint
    • Daily Scrum: A brief daily meeting for the Development Team to synchronize activities and plan for the next 24 hours
    • Sprint Review: A meeting held at the end of each Sprint to demonstrate the completed work and gather feedback
    • Sprint Retrospective: A meeting where the team reflects on the past Sprint and identifies improvements for the next one
  • Scrum artifacts include:
    • Product Backlog: A prioritized list of features, requirements, and improvements that evolve throughout the project
    • Sprint Backlog: A subset of Product Backlog items selected for the current Sprint, along with a plan for delivering them
    • Increment: The sum of all Product Backlog items completed during a Sprint, meeting the Definition of Done

Key Roles in Agile Teams

  • Product Owner: Responsible for maximizing the value of the product and managing the Product Backlog
    • Defines and prioritizes Product Backlog items based on business value and customer needs
    • Collaborates with stakeholders to gather requirements and feedback
    • Ensures the Development Team understands the Product Backlog items and their priorities
  • Scrum Master: Facilitates the Scrum process and helps the team adhere to Agile principles and practices
    • Coaches the team on Scrum, Agile values, and self-organization
    • Removes impediments and protects the team from external distractions
    • Facilitates Scrum events and promotes continuous improvement
  • Development Team: A self-organizing, cross-functional group responsible for delivering working software increments
    • Consists of professionals with diverse skills (developers, testers, designers) who collaborate to deliver the product
    • Estimates the effort required for Product Backlog items and determines how to best accomplish the work
    • Accountable for the quality and delivery of the product increment at the end of each Sprint
  • Stakeholders: Individuals or groups with an interest in the product, such as customers, users, and business representatives
    • Provide input, requirements, and feedback to guide product development
    • Collaborate with the Product Owner to ensure the product meets their needs and expectations
  • Agile teams are typically small (5-9 members) to facilitate effective communication and collaboration
  • Roles in Agile teams are focused on delivering value, fostering self-organization, and promoting continuous improvement

Agile Ceremonies and Meetings

  • Sprint Planning: A collaborative meeting where the team plans the work for the upcoming Sprint
    • Product Owner presents the prioritized Product Backlog items and their objectives
    • Development Team estimates the effort required and selects items they can complete within the Sprint
    • Team creates a Sprint Goal and a plan for delivering the selected items
  • Daily Scrum (Stand-up): A brief daily meeting for the Development Team to synchronize activities and plan for the next 24 hours
    • Each team member answers three questions: What did I do yesterday? What will I do today? Are there any impediments?
    • Facilitates transparency, collaboration, and early identification of issues
    • Timeboxed to 15 minutes and held at the same time and place each day
  • Sprint Review: A meeting held at the end of each Sprint to demonstrate the completed work and gather feedback
    • Development Team presents the increment and discusses what was accomplished during the Sprint
    • Stakeholders provide feedback and insights to guide future development
    • Product Owner updates the Product Backlog based on the feedback and discussion
  • Sprint Retrospective: A meeting where the team reflects on the past Sprint and identifies improvements for the next one
    • Team discusses what went well, what could be improved, and what actions to take in the next Sprint
    • Facilitates continuous improvement and adaptation of the team's processes and practices
    • Timeboxed to a maximum of 3 hours for a one-month Sprint
  • Backlog Refinement (Grooming): An ongoing activity where the Product Owner and Development Team collaborate to refine and clarify Product Backlog items
    • Breaks down large items into smaller, more manageable tasks
    • Adds details, estimates, and acceptance criteria to ensure items are well-understood and actionable
  • Agile ceremonies and meetings promote transparency, collaboration, and continuous improvement throughout the development process

User Stories and Backlog Management

  • User Stories: A concise, user-centric description of a feature or functionality written from the perspective of an end-user
    • Typically follows the format: "As a [user role], I want [goal/desire] so that [benefit/value]"
    • Focuses on the user's needs and the value they will derive from the feature
    • Serves as a basis for conversations and collaboration between the Product Owner, Development Team, and stakeholders
  • Product Backlog: A prioritized list of features, requirements, and improvements that evolve throughout the project
    • Managed and prioritized by the Product Owner based on business value, user needs, and dependencies
    • Items at the top of the backlog are more detailed and well-understood, ready for the Development Team to work on
    • Continuously refined and updated based on feedback, changing requirements, and new insights
  • Backlog Refinement (Grooming): The process of adding detail, estimates, and order to Product Backlog items
    • Involves breaking down large items (epics) into smaller, more manageable user stories
    • Adds acceptance criteria to define when a user story is considered complete and meets the user's needs
    • Estimates the relative effort required for each item, often using story points or ideal days
  • Sprint Backlog: A subset of Product Backlog items selected for the current Sprint, along with a plan for delivering them
    • Created during Sprint Planning by the Development Team in collaboration with the Product Owner
    • Represents the team's forecast of what they can accomplish during the Sprint
    • Updated throughout the Sprint as more is learned and progress is made
  • Definition of Done (DoD): A shared understanding of what it means for a user story or Product Backlog item to be considered complete
    • Includes criteria such as code quality, testing, documentation, and user acceptance
    • Ensures a consistent level of quality and completeness across all delivered items
  • Effective backlog management and user story creation are essential for maintaining a clear, prioritized, and actionable plan for Agile teams

Sprints and Iterative Development

  • Sprints: Time-boxed iterations (usually 2-4 weeks) during which the Development Team works to deliver a potentially releasable product increment
    • Provides a consistent cadence for planning, development, and delivery
    • Allows the team to focus on a manageable set of work and adapt to feedback and changes
    • Length of the Sprint is fixed and does not change once the Sprint has started
  • Sprint Planning: A collaborative meeting where the team plans the work for the upcoming Sprint
    • Product Owner presents the prioritized Product Backlog items and their objectives
    • Development Team estimates the effort required and selects items they can complete within the Sprint
    • Team creates a Sprint Goal and a plan for delivering the selected items
  • Sprint Goal: A concise, meaningful objective that guides the team's work during the Sprint
    • Provides a shared understanding of what the team aims to achieve
    • Helps the team focus on delivering a cohesive and valuable increment
  • Sprint Backlog: A subset of Product Backlog items selected for the current Sprint, along with a plan for delivering them
    • Represents the team's forecast of what they can accomplish during the Sprint
    • Updated throughout the Sprint as more is learned and progress is made
  • Daily Scrum (Stand-up): A brief daily meeting for the Development Team to synchronize activities and plan for the next 24 hours
    • Facilitates transparency, collaboration, and early identification of issues
    • Helps the team stay on track and make necessary adjustments to meet the Sprint Goal
  • Sprint Review: A meeting held at the end of each Sprint to demonstrate the completed work and gather feedback
    • Development Team presents the increment and discusses what was accomplished during the Sprint
    • Stakeholders provide feedback and insights to guide future development
  • Sprint Retrospective: A meeting where the team reflects on the past Sprint and identifies improvements for the next one
    • Facilitates continuous improvement and adaptation of the team's processes and practices
  • Iterative development allows Agile teams to deliver value incrementally, gather feedback, and adapt their approach based on learning and changing requirements

Measuring Progress: Velocity and Burndown Charts

  • Velocity: A measure of the average amount of work a team completes during a Sprint, usually expressed in story points or ideal days
    • Calculated by summing the story points or ideal days of fully completed user stories at the end of each Sprint
    • Provides a historical reference for estimating the team's capacity in future Sprints
    • Helps the team and stakeholders understand the team's progress and set realistic expectations
  • Story Points: A relative unit of measure used to estimate the effort required to complete a user story or Product Backlog item
    • Estimates are based on factors such as complexity, uncertainty, and effort
    • Common scales include Fibonacci sequence (1, 2, 3, 5, 8, 13) or powers of 2 (1, 2, 4, 8, 16)
    • Helps the team abstract from time-based estimates and focus on relative sizing
  • Ideal Days: An estimate of the number of days a user story or Product Backlog item would take to complete, assuming no interruptions or distractions
    • Provides a more concrete, time-based estimate compared to story points
    • Helps the team relate estimates to their actual capacity and availability
  • Burndown Chart: A visual representation of the work remaining in a Sprint or release over time
    • Shows the total work remaining on the vertical axis and time on the horizontal axis
    • Ideal trend line represents the expected progress if the team completes work at a steady pace
    • Actual progress is plotted daily, showing the team's progress against the ideal trend line
    • Helps the team and stakeholders track progress, identify deviations, and make necessary adjustments
  • Burnup Chart: A visual representation of the work completed in a Sprint or release over time
    • Shows the total work completed on the vertical axis and time on the horizontal axis
    • Ideal trend line represents the expected progress if the team completes work at a steady pace
    • Actual progress is plotted daily, showing the team's completed work against the ideal trend line
    • Helps the team and stakeholders track progress, celebrate accomplishments, and forecast future completion
  • Measuring progress using velocity and burndown/burnup charts enables Agile teams to track their performance, adapt their plans, and continuously improve their processes


© 2024 Fiveable Inc. All rights reserved.
AP® and SAT® are trademarks registered by the College Board, which is not affiliated with, and does not endorse this website.

© 2024 Fiveable Inc. All rights reserved.
AP® and SAT® are trademarks registered by the College Board, which is not affiliated with, and does not endorse this website.
Glossary
Glossary