1/56
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai | Chat |
|---|
No analytics yet
Send a link to your students to track their progress
Plan-Driven Software Development
A software development process that completely specify the requirements and then design, build, and test a system.
Agile Development
Are designed to produce useful software quickly.
Are incremental development methods in which the increments are small, and, typically, new releases of the system are created and made available to customers every two or three weeks.
Plan-driven Approach
Identifies separate stages in the software process with outputs associated with each stage.
Iteration occurs within activities with formal documents used to communicate between stages of the process
Ex.: Requirements will evolve until a requirement specification is produced, as an input to design and implementation
Agile Approach
Consider design and implementation to be the central activities in the software process
Incorporate other activities, such as requirements elicitation and testing, into design and implementation
Iteration occurs across activities
requirements and design are developed together, rather than separately
Common Practices of Agile Development
Customer Collaboration
Iterative Development
Flexibility
Self-organizing Teams
Continuous Improvement
Customer Collaboration
Continuous involvement of the customer in the development process to ensure that the product meets their needs.
Iterative Development
Developing software in small, frequent increments to provide working software early and often.
Flexibility
The ability to respond to changing requirements, even late in the development process.
Self-organizing Teams
Teams have the autonomy to organize their work and decide how best to achieve their goals.
Continuous Improvement
Regular reflection on processes and practices to improve efficiency and quality over time.
Key Agile Methodologies/Frameworks
Kanban
Scrum
Extreme Programming (XP)
Adaptive Project Framework (AFP)
Extreme Project Management (XPM)
Adaptive Software Development (ASD)
Dynamic Systems Development Method (DSDM)
Feature Driven Development
Kanban
A visual Agile approach where teams use a board to track tasks through different stages of development.
Tasks are represented as cards on the board, and columns represent the stages. As work progresses, cards are moved between columns to reflect the current stage of each task.
Scrum
An Agile methodology for small teams that involves sprints. Led by a Scrum master, the team meets daily to discuss tasks and roadblocks.
The process includes sprint planning, which outlines goals for each sprint, and sprint retrospectives, which review the sprint to improve future iterations.
An Agile methodology focused on iterative progress and collaboration, aligning with Agile principles.
Scrum
Most popular framework to Regularly Ship Releases
Scrum
Developed in the 1990s by Ken Schwaber and Jeff Sutherland
Roles in Scrum
Scrum Master
Product Owner
Development Team
Scrum Master
Removes obstacles to ensure team efficiency.
Product Owner
Represents the customer, sets priorities, and provides feedback.
Development Team
Cross-functional, self-organized team that delivers product increments.
Sprints and Artifacts
Sprints
Product Backlog
Sprint Backlog
Sprint Burndown Chart
Sprints
Short, fixed-length development cycles (1-4 weeks) that produce incremental product updates.
Product Backlog
Prioritized list of requirements maintained by the Product Owner.
Sprint Backlog
List of tasks for the current Sprint.
Sprint Burndown Chart
Tracks progress by showing remaining work.
Scrum Meetings
Daily Scrum
Sprint Planning
Sprint Review
Sprint Retrospective
Ideal for complex, long-term projects with evolving requirements and uncertain release dates. Used by various industries and companies including Microsoft, IBM, Yahoo, and Google.
When to Use Scrum?
Daily Scrum
15-minute daily meeting for team coordination.
Sprint Planning
Meeting to plan the Sprint's work, up to eight hours for one-month Sprints.
Sprint Review
Meeting to review completed work, four hours for one-month Sprints.
Sprint Retrospective
Meeting to discuss what went well and areas for improvement, three hours for one-month Sprints.
Extreme Programming (XP)
An Agile framework focused on improving team collaboration through five core values: communication, simplicity, feedback, courage, and respect.
Involves regular releases and iterations, similar to Scrum, but with a stronger technical emphasis, focusing on how tasks are accomplished to quickly respond to customer needs.
An Agile framework focused on high-quality code and technical excellence. It emphasizes rigorous engineering practices to quickly adapt to changing requirements.
is suitable for small teams (up to 12 people) working on projects with tight deadlines and emphasizes customer involvement, short iterations, and simplicity in design.
It can be used independently or in a hybrid with Scrum, combining XP’s technical practices with Scrum’s management approach.
Key XP practices
Test-Driven Development (TDD)
Code Refactoring
Continuous Integration (CI)
Pair Programming
Coding Standards
Test-Driven Development (TDD)
Writing tests before code to ensure functionality and improve code quality through the Red-Green-Refactor cycle.
Code Refactoring
Continuously improving code by simplifying and clarifying it without altering functionality.
Continuous Integration (CI)
Frequently integrating code changes and using CI/CD tools to ensure rapid delivery and maintain a clean codebase.
Pair Programming
Two developers working together, one coding and one reviewing, to enhance software design and share knowledge.
Coding Standards
Adhering to standardized code formats and styles for consistency and maintainability.
Adaptive Project Framework (APF)
Is designed for IT projects where unexpected changes can occur. It acknowledges that resources like budgets, timelines, or team members may change during a project.
Focuses on managing the resources currently available, rather than those initially planned.
Extreme Project Management (XPM)
Ideal for complex projects with high uncertainty. It involves continuously adapting processes and strategies, often shifting week to week, until the desired outcome is achieved.
Requires high flexibility, with short sprints allowing for frequent changes, trial-and-error problem-solving, and multiple iterations for self correction.
Adaptive Software Development (ASD)
Focused on continuous adaptation, involves three overlapping phases: speculate, collaborate, and learn.
Teams often operate in all three phases simultaneously, allowing for continuous learning and problem-solving. The non-linear structure and repetition of these phases enable quicker issue identification and resolution compared to standard project management methods.
Dynamic Systems Development Method (DSDM)
An Agile method that emphasizes a full project life cycle with a more structured approach.
It consists of four main phases: Feasibility and Business Study, Functional Model or Prototype Iteration, Design and Build Iteration, and Implementation.
Feature Driven Development (FDD)
Combines Agile best practices with a focus on specific software features.
It relies heavily on customer input to prioritize features and allows for frequent updates. The iterative nature of it enables teams to quickly address and fix errors as they continuously move through project phases.
The 12 Principles of Agile Methods
Satisfy Customers Early and Often: Regular updates lead to satisfied customers and recurring revenue.
Embrace Changing Requirements: Adaptability is crucial; being flexible helps accommodate late changes.
Deliver Value Frequently: Frequent delivery of value helps retain customers and stakeholders.
Promote Collaboration: Break down silos and encourage frequent team collaboration.
Build Around Motivated Individuals: Agile thrives with committed and engaged team members.
Face-to-Face Communication: Prefer face-to-face interactions for effective communication, even if virtual.
Prioritize Working Software: Functional software is the primary measure of progress.
Maintain a Sustainable Pace: Ensure the work pace is manageable to avoid team burnout.
Continuous Excellence: Build on excellent work to enhance future agility.
Keep It Simple: Opt for the simplest solutions to complex problems.
Foster Self-Organizing Teams: Empower teams to organize themselves for maximum value.
Reflect and Adjust: Regular retrospectives help teams improve effectiveness and adapt their practices.
Issues of Scaling Agile Development
Coordination Across Teams
Maintaining Agile Principles
Coordination Across Teams
Challenge: Agile practices, like Scrum or XP, are often designed for small, co-located teams. Scaling these methods to large organizations with multiple teams requires effective coordination and communication.
Impact: Misalignment between teams can lead to integration issues and inconsistencies.
Maintaining Agile Principles
Challenge: As teams grow, maintaining the core Agile principles, such as flexibility and rapid iteration, becomes harder.
Impact: Large-scale projects may become less agile and more rigid, deviating from Agile’s adaptive nature.
Issues of Scaling Agile Development
Complexity in Communication
Consistency in Practices
Scaling Frameworks
Complexity in Communication
Challenge: With more teams involved, communication becomes more complex, making it difficult to ensure that all teams are aligned and informed.
Impact: Increased risk of miscommunication and delays in decision-making.
Consistency in Practices
Challenge: Ensuring consistency in Agile practices and standards across multiple teams can be difficult.
Impact: Variations in implementation can lead to fragmented processes and reduced overall efficiency.
Scaling Frameworks
Challenge: Implementing scaling frameworks like SAFe (Scaled Agile Framework), LeSS (Large Scale Scrum), or Spotify model can be complex and requires careful adaptation to fit organizational needs.
Impact: Poor implementation can lead to confusion and resistance from teams.
Issues with Combining Agile with Plan-Driven Approaches
Conflicting Cultures
Integration of Processes
Conflicting Cultures
Challenge: Agile focuses on flexibility and iterative development, while plan-driven approaches emphasize detailed upfront planning and documentation.
Impact: Conflicting priorities and methodologies can lead to friction between teams and management.
Integration of Processes
Challenge: Combining Agile’s iterative cycles with plan-driven approaches’ structured phases can result in mismatched processes and workflows.
Impact: Difficulty in integrating practices may lead to inefficiencies and delays.
Issues with Combining Agile with Plan-Driven Approaches
Documentation vs. Flexibility
Resource Allocation
Change Management
Documentation vs. Flexibility
Challenge: Agile minimizes documentation, while plan-driven methods require comprehensive documentation.
Impact: Balancing the need for documentation with Agile’s focus on working software can be challenging.
Resource Allocation
Challenge: Agile requires adaptive resource management, whereas plan-driven approaches often rely on fixed resource plans.
Impact: Misalignment in resource allocation can cause delays and resource conflicts.
Change Management
Challenge: Agile welcomes change, but plan-driven approaches may resist changes once the plan is set.
Impact: Integrating these approaches can result in resistance to change and difficulty in adapting to new requirements.