L04: Agile Software Development Flashcards
Discuss Plan-driven vs Agile development
Plan-driven
- Activities are planned in advance and progress is measured against this plan
Agile
- Incremental planning and so, process can be changed
In practice
- Processes include elements of both
- Different process models emphasise different concerns and will be suitable for different types of systems
What are some agile principles?
Customer involvement
- Customer closely involved throughout development
Incremental delivery
- Software developed in increments, as defined by customer
People, not process
- Skills of team members should be recognised and used without overly restrictive processes
Embracing change
- Expect requirements to change and design for change
Maintaining simplicity
- In both software being developed and the development process
What are some challenges of scaling agile processes? (6)
- Large systems of systems, developed by different teams
- Large systems are often brownfield systems (making sure the new system is compatible with the systems that work with the old system)
- Configuration vs development
- Constraints from external rules and regulations (e.g. deadline, budget)
- Systems with long procurement and development time
- Diverse set of stakeholders with different perspectives and priorities
What are some challenges that a traditional software team faces?
- Different teams responsible for development, release and support
- Communication delays
- Different skills and toolsets
- Lack of understanding of other perspectives and problems
Result
- Delays in new releases and fixes reaching customers
What are some examples of agile processes?
- Scrum
- eXtreme Programming (XP)
- Crystal
- Kanban
- Feature-driven development (FDD)
- Lean
What are some examples of scaling agile processes?
Large Scale Scrum (LeSS)
- Team of teams
Scaled Agile Framework (SAFe)
- A set of organisation and workflow patterns to promote collaboration across a large number of agile teams
Disciplined Agile Delivery (DAD)
- Hybrid toolkit to simplify process decisions
What are some principles of DevOps?
Everyone (in the team) is responsible for everything
- Development, release & support
Everything that can be automated should be automated
- Minimal manual involvement in software deployment
Measure first, change later
- Data collected about system and its operation to help decision making
What are some solutions for scaling agile processes? (5)
- More up-front design and documentation
- Diverse product owner or customer representatives
- Cross-team communication mechanisms
- Frequent system builds and regular releases
- New configuration management tools that support multi-team software development
What are some variations of DevOps?
DevSecOps
- Development + Security + Operations
- Security is a shared responsibility throughout the software lifecycle
DataOps
- Principles of DevOps applied to data analytics
GitOps
- Version-controlled deployment configuration
What are the 3 phases of scrum?
- Outline planning -> backlog and architecture
- Sprint cycles -> each developing an increment of the system
- Closure -> wrap up and complete documentation
What are the 4 core values of the Manifesto for Agile Software Development?
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Favour left over right
What are the roles in a scrum team?
Product owner
- Responsible for maximising value of product created
Development team
- Professionals who do the work of delivering an increment
Scrum master
- Facilitates Scrum and liaises with external stakeholders
Self-organising and cross-functional
What are the stages in a scrum sprint cycle?
- During development, team is isolated
- All communications are channelled through the scrum master
- Scrum master protects team from distractions
- At the end of the sprint, completed work is reviewed and presented to stakeholders in retrospective
- Next sprint cycle then begins
What does agile mean?
Oxford English Dictionary:
“able to change or be changed rapidly in response to customer needs and market forces; adaptable, flexible,
responsive.”
What is Agile Software Development?
Agile Alliance:
“Agile software development is an umbrella term for a set of frameworks and practices based on the values and principles expressed in the Manifesto for Agile Software Development and the 12 Principles behind it.”