CEN512 Agile Software Engineering-Module 2
CEN512 Agile Software Engineering-Module 2
Engineering
CEN512
(Module 2)
Course lectures
Dr Odu Tiwalade & Mr Emmanuel Simonyan
Course Learning Outcomes
By the end of the course:
• Students will demonstrate a deep understanding of
Agile principles, such as the Agile Manifesto, and be
able to apply frameworks like Scrum and Kanban in
software development.
• Students will learn how to work in iterative cycles
(sprints) to build and deliver software incrementally,
ensuring continuous feedback and adaptation to
changing requirements.
• Students will develop the skills needed to collaborate
effectively in cross-functional, self-organizing teams,
fulfilling roles such as Product Owner, Scrum Master, or
Developer in Agile projects.
Learning Objectives
By the end of the course, students should
• Grasp the core concepts of Agile, including iterative
development, continuous integration, sprint planning,
and retrospective processes, and how these elements
work together to ensure successful project outcomes.
• Apply Agile Practices to Real-World Projects.
• Utilize Agile Tools and Techniques for Project
Management.
Agile
Methodology
Introduction to Agile Software
Engineering
• Agile Definition: Agile is a software development
methodology that focuses on iterative development,
customer collaboration, and adapting to change. Unlike
traditional models that follow strict stages, Agile
emphasizes flexibility and responsiveness.
History of Agile Project Management
• The concept of Agile project management evolved as a response to the
rigidity and slow pace of traditional project management methodologies
like Waterfall.
• During the 1990s, software projects were often delayed, over budget, or
misaligned with customer expectations.
• This was largely because the Waterfall approach required extensive
upfront planning and had little room for changes once development
began.
• In 2001, a group of 17 software development experts met in Snowbird,
Utah, to discuss better ways of managing projects.
• This meeting resulted in the creation of the Agile Manifesto, which
became the cornerstone of Agile project management.
• The manifesto prioritised customer collaboration, responsiveness to
change, and delivering functional software quickly and iteratively.
The Agile Manifesto
• The Agile Manifesto, created in 2001, outlines four core
values that guide Agile development:
• Individuals and interactions over processes and tools.
Agile prioritizes communication and collaboration within
teams.
• Working software over comprehensive documentation.
While documentation is important, delivering working
software is the priority.
• Customer collaboration over contract negotiation. Agile
teams work closely with customers to ensure they meet
their needs.
• Responding to change over following a plan. Agile
welcomes changing requirements, even late in
development.
The 12 Agile Principles
• The Agile Manifesto is supported by 12 key principles, which
guide how Agile teams operate. Some of the key principles
include:
1. Customer satisfaction through early and continuous
delivery of valuable software.
2. Welcome changing requirements, even late in
development.
3. Deliver working software frequently, with a preference for
shorter timescales.
4. Close collaboration between business people and
developers throughout the project.
5. Build projects around motivated individuals and give
them the environment and support they need.
6. Face-to-face communication is the most effective method
of conveying information.
The 12 Agile Principles cont’d
7. Working software is the primary measure of
progress.
8. Sustainable development, with teams able to
maintain a constant pace indefinitely.
9. Continuous attention to technical excellence and
good design enhances agility.
10. Simplicity, the art of maximizing the amount of work
not done, is essential.
11. The best architectures, requirements, and designs
emerge from self-organizing teams.
12. Regular reflection on how to become more
effective, and adjustments are made accordingly.
How Agile Works
• Agile is an iterative and incremental approach to project
management and software development.
• Instead of focusing on delivering the entire product at
the end of the project.
• Agile emphasizes continuous delivery of smaller
pieces of the product throughout the development
cycle.
• These pieces, known as increments, are delivered in
sprints (typically 1–4 week cycles), with each sprint
ending in a potentially shippable product increment.
Incremental Development
Risk Management Reduced risk; errors caught Higher risk as issues may only
early due to frequent iterations surface at the end
Key aspects of how Agile works:
• Iterations (Sprints): Projects are broken down into
smaller, manageable cycles called sprints, each
delivering part of the final product.
• Cross-Functional Teams: Teams in Agile are typically
self-organizing and cross-functional, which means
developers, testers, designers, and other roles
collaborate closely throughout the sprint.
• Frequent Feedback Loops: After each sprint, teams
review their progress, demonstrate the product to
stakeholders, and gather feedback. This ensures the
product stays aligned with the customer's needs.
Key aspects of how Agile works
cont’d
• Backlogs: The product backlog is a list of features,
enhancements, and bug fixes prioritised by the team and
product owner. The sprint backlog contains the tasks for
the current sprint.
• Continuous Improvement: Agile promotes regular
reflection (retrospectives) on how to improve team
processes and collaboration.
21
Team size and composition
• The ideal Scrum team size is between 5 and 8 people.
• Teams have to tackle diverse tasks and so usually require people with
different skills, such as networking, user experience, database design and
so on.
• They usually involve people with different levels of experience.
• A team of 5-8 people is large enough to be diverse yet small enough to
communicate informally and effectively and to agree on the priorities of the
team.
• The advantage of a self-organizing team is that it can be a cohesive
team that can adapt to change.
• Because the team rather than individuals take responsibility for the work,
they can cope with people leaving and joining the team.
• Good team communication means that team members inevitably learn
something about each other’s areas
22
Team coordination
• The developers of Scrum assumed that teams would be co-located.
They would work in the same room and could communicate informally.
• Daily scrums mean that the team members know what’s been done and what
others are doing.
23
External interactions
• External interactions are interactions that team
members have with people outside of the team.
• In Scrum, the idea is that developers should focus on
development and only the ScrumMaster and Product
Owner should be involved in external interactions.
• The intention is that the team should be able to work on
software development without external interference or
distractions.
24
Managing external interactions
• https://agilemanifesto.org/principles.html