KARABUK UNIVERSITY
Computer Engineering Department
CPE 310 Software Engineering
Lab#3
Agile Software Development
Hasan Kivrak
Some of slides are modified versions of slides by Henrik Kniberg (What is Agile?)
Agenda
● Agile software development
○ agile fundamentals/principles,
○ the core behind many agile methods.
○ how agile methods are different than traditional methods
○ the benefits and challenges in using Agile
○ where to use agile methods.
Rapid Software Development
● Rapid development and delivery is now often the most important
requirement for software systems
○ Specification, design and implementation are interleaved/alternately
■ the outputs from the development process are decided through a process of
negotiation during the software development process
○ System is developed as a series of versions with stakeholders involved in version
evaluation
○ User interfaces are often developed using an IDE and graphical toolset.
Agile Manifesto
www.agilemanifesto.org
We are uncovering better ways of developing
software by doing it and helping others do it.
Feb 11-13, 2001
Snowbird ski resort, Utah
Kent Beck Andrew Hunt
Mike Beedle Ron Jeffries
Arie van Bennekum Jon Kern
Alistair Cockburn Brian Marick
Ward Cunningham Robert C. Martin
Martin Fowler Steve Mellor
James Grenning Ken Schwaber
Jim Highsmith Jeff Sutherland
Dave Thomas
Agile Manifesto
4 values and 12 principles
Individuals and Interactions Processes and Tools
Working Software Comprehensive documentation
Customer Collaboration Contract negotiation
Responding to change Following a plan
PREFER TO
Watch Agile Manifesto Video: https://www.youtube.com/watch?v=rf8Gi2RLKWQ
Principles behind the Agile Manifesto
● Our highest priority is to satisfy the customer ● The most efficient and effective method of
through early and continuous delivery of valuable conveying information to and within a development
software. team is face-to-face conversation.
● Welcome changing requirements, even late in ● Working software is the primary measure of
progress.
development. Agile processes harness change for
the customer's competitive advantage. ● Agile processes promote sustainable development.
The sponsors, developers, and users should be able
● Deliver working software frequently, from a couple to maintain a constant pace indefinitely.
of weeks to a couple of months, with a preference ● Continuous attention to technical excellence and
to the shorter timescale. good design enhances agility.
● Simplicity--the art of maximizing the amount of
● Business people and developers must work work not done--is essential.
together daily throughout the project.
● The best architectures, requirements, and designs
● Build projects around motivated individuals. Give emerge from self-organizing teams.
them the environment and support they need, and ● At regular intervals, the team reflects on how to
trust them to get the job done. become more effective, then tunes and adjusts its
behavior accordingly.
Watch 12 Agile Principles Video: https://www.youtube.com/watch?v=5jCc2KByx60
Principles of Agile Methods
Principle Description
Customers should be closely involved throughout the development process. Their role is
Customer involvement
provide and prioritize new system requirements and to evaluate the iterations of the system.
The software is developed in increments with the customer specifying the requirements to
Incremental delivery
be included in each increment.
The skills of the development team should be recognized and exploited. Team members
People not process
should be left to develop their own ways of working without prescriptive processes.
Expect the system requirements to change and so design the system to accommodate these
Embrace/Welcome change
changes.
Focus on simplicity in both the software being developed and in the development
Maintain simplicity
process. Wherever possible, actively work to eliminate complexity from the system.
Four Key Points
1. Iterative design process
2. Continuous stakeholder engagement
3. Aims for quality and reliable software
4. Short development cycles
a. (up to a month) allows to regular delivery
of software
This shows that an Agile approach is appropriate in contexts
● outcomes are not known (or can’t be known) in advance
● the delivery of the outcomes cannot be fully controlled.
Agility and the Cost of Change
Traditional Model vs. Agile
● Waterfall Model
○ The customer knows what he wants
○ The developers know how to build it
○ Nothing will change along the way
○ Cannon ball
Traditional Model vs. Agile
● Agile
○ The customer discovers what he wants
○ The developers discover how to build it
○ Things change along the way
○ Homing/Orienting missile
Agile vs Plan-Driven Methods
Agile Plan-driven
Expert Developers Junior Developers
Frequent Changes Rare Changes
Few Developers Large Groups Of Developers
Chaotic Work Environment Tidy Work Environment
Low Critical Systems High Critical Systems
Traditional Model vs. Agile An agile process reduces the cost of change because
software is released in increments and change can
be better controlled within an increment.
Traditional Model vs. Agile
Problems with agile methods
● It can be difficult to keep the interest of customers who are involved
in the process.
● Team members may be unsuited to the intense involvement that
characterizes agile methods.
● Prioritizing changes can be difficult where there are multiple
stakeholders.
● Maintaining simplicity requires extra work.
● Contracts may be a problem as with other approaches to iterative
development.
Agile Methods Applicability
● Product development where a software company is developing a
small or medium-sized product for sale.
● Custom system development within an organization, where there is
a clear commitment from the customer to become involved in the
development process and where there are not a lot of external rules
and regulations that affect the software.
● Because of their focus on small, tightly-integrated teams, there are
problems in scaling agile methods to large systems.
Agile (Pros and Cons)
Pros Cons
● Faster software development life ● requires a high degree of customer involvement,
cycle which not all customers are comfortable with or
prefer to give.
● Customer-focused, resulting in
increased customer satisfaction ● assumes every team member is completely
dedicated to the project, without which weakens
● Flexible in accepting changes
the principle of self-management.
● Empowers teams to manage
● A time-boxed iteration may not be enough to
projects
accommodate all deliverables, which will require
● Promotes efficient changes in priority and additional sprints that can
communications bring up cost.
● Ideal for projects with non-fixed ● recommends co-location for efficient
funding communication, which is not always possible.
Major Agile Methodologies
a family of iterative, incremental methods
● Scrum (1995)
● DSDM – Dynamic Systems Development
Method (1995)
● XP – Extreme Programming (1996)
● ASD – Adaptive Software Development DSDM
Scrum XP FDD
(1997)
● Crystal Family: Orange, Orange Web, Clear
(1998, 2001, 2004) Crystal
● FDD – Feature-Driven Development (1999) Kanban
● AUP – Agile Unified Process (2005)
● Kanban (2010)
● DAD – Disciplined Agile Delivery (2012)
Next Week
● Most frequently used (common) agile methodologies
○ Scrum
○ Extreme Programming (XP)
○ Kanban