Se Unit 5
Se Unit 5
AGILE SOFTWARE
DEVELOPMENT
Lean agile aims to eliminate wasteful resources and tasks for improved efficiency and reduced
costs — while never sacrificing quality. In fact, lean agile prioritizes bringing value to the
customer with every decision that’s made.
Lean agile is a development method that helps teams identify waste and refine processes. It’s a
guiding mindset that facilitates efficiency, effectiveness, and continuous improvement.
If you’re looking to dive into the history of lean agile, Lean Enterprise Institute Inc.,
founded in 1997 by James P. Womack, PhD, is a leading resource for lean
methodology. It aims to help people and teams work better through lean thinking and
practices.
Lean practices are popular because they can be applied to other agile approaches and
software development methods. Lean agile provides a clear application for scaling agile
, which is often difficult for large or growing organizations
The benefits of lean agile
Time is wasted when processes don’t run smoothly. In lean manufacturing, it’s
important for goods and services to be delivered quickly and effectively. No one's time
should be wasted on the job, and companies should aim for shorter lead times without
sacrificing quality.
Wasting time in any industry is expensive, but it’s particularly important to pay
attention when working in agile software development. Even a small bottleneck or
broken process can completely throw off a workflow or product deadline. Lean agile
helps development teams manage time effectively to ensure everyone is utilized, no
one's time is wasted, and roadblocks are anticipated in advance
Reduce costs
When businesses eliminate waste, they save money. In its original form, lean manufacturing
ensured companies had the right amount of materials, employees, and working hours at any
given time. Overproduction, overhiring, or simply having too many materials to store are
expensive wastes that can be eliminated through better management of systems and processes.
Any business, no matter the industry, will save money with improved efficiency. Lean agile
ensures that waste is continually eliminated and agile teams continue to fine-tune processes
for optimal efficiency.
With lean agile, it’s not only about efficiency — it's about maintaining efficient processes
while bringing a quality product to customers and stakeholders. When businesses
intentionally improve processes, they remain competitive. Lean principles consider the
customer value of any action or decision to ensure needs are always met or exceeded.
The five principles of lean agile
There are five core principles for implementing lean methodology:
Value
Value stream
Flow
Pull
Perfection
These principles describe a five-step process that guides the implementation of lean
techniques for manufacturing, software development teams, and other agile practicing
industries.
1. Identify value
The first step requires you to step into the shoes of the customer. Value is what the
customer needs and wants from a specific project or product.
Consider from the customers’ point of view: What are their expectations? What are
they willing to pay for? How do they want their needs met?
Sometimes, customers may be unable to define exactly what they’re looking for —
especially if it’s a new product or technology they’re unfamiliar with.
In any case, the project cannot move forward without clearly identifying what it will
take to provide customer satisfaction. You’ll need to identify the end goal (value)
customers are hoping to find with the product or service.
2. Map the value stream
Next, the team visually maps each of the steps and processes it will take to bring the
product from inception to delivery. By making each step visible and always keeping
the value top-of-mind, it’s easier to see which steps don’t directly contribute to
continuous delivery. Once wasteful steps are found, the team finds ways to eliminate
those steps or reduce them as much as possible.
Getting rid of waste ensures your company doesn’t unnecessarily spend money on
steps and processes that don’t add value. And — most importantly — the customer
gets exactly what they’re looking for.
3. Create flow
Once the waste is eliminated from the value stream, the next step is ensuring the remaining
processes work as effectively and efficiently as possible, which means no delays, disruptions, or
bottlenecks. It’s important for the steps that create value to work in tight sequences to ensure the
product flows smoothly toward the customer.
In order to achieve this kind of agile transformation, lean businesses must train their employees to
be adaptive and multi-skilled, create cross-functional teams, break down and reconfigure steps in
the production, and balance employee workloads.
With enhanced flow, your team can deliver products and services faster. A pull system enables
“just-in-time” manufacturing and delivery, limiting inventory and work in progress (WIP) items by
only producing enough to meet customer demand.
By establishing a pull system, you create products and services as needed as opposed to creating
them in advance, which leads to a growing inventory or list of tasks that need to be stored and
managed — draining your bottom line.
5. Seek perfection
By completing steps 1-4, waste is eliminated — for now. However, the work is never
done. There is always a process that could be improved, and there will always be steps
in project and product development that waste time and money or don’t deliver value.
That’s why the fifth step of seeking perfection is key.
Lean takes time to implement, and going through the process once is not enough. Build
a continuous improvement mindset into your company culture, and never settle for the
same old.
What Is Agile Scrum Methodology?
Agile scrum methodology is a sprint-based project management system with the
goal of delivering the highest value to stakeholders.
Agile and scrum are two similar project management systems with a few key
differences.
Agile is more flexible and promotes leadership teams, while scrum is more rigid and
promotes cross-functional teams.
Agile lets teams develop projects in small increments called “sprints” and allows for
more effective collaborations among teams working on complex projects.
Agile scrum methodology is used by companies of all sizes for its ability to provide
high-end collaboration and efficiency for project-based work. Agile and scrum are two
different methods and can be used separately; however, their combined benefits make
the agile scrum methodology the most popular use of agile. Here’s the complete guide
to agile scrum methodology.
How does agile scrum work?
Agile scrum methodology is the combination of the agile philosophy and the scrum
framework. Agile means “incremental, allowing teams to develop projects in small
increments. Scrum is one of the many types of agile methodology, known for breaking
projects down into sizable chunks called “sprints.” Agile scrum methodology is good
for businesses that need to finish specific projects quickly.
Agile scrum methodology is a project management system that relies on incremental
development. Each iteration consists of two- to four-week sprints, where the goal of
each sprint is to build the most important features first and come out with a potentially
deliverable product. More features are built into the product in subsequent sprints and
are adjusted based on stakeholder and customer feedback between sprints.
Whereas other project management methods emphasize building an entire product in
one operation from start to finish, agile scrum methodology focuses on delivering
several iterations of a product to provide stakeholders with the highest business value in
the least amount of time.
Agile scrum methodology has several benefits. First, it encourages products to be built
faster, since each set of goals must be completed within each sprint’s time frame. It
also requires frequent planning and goal setting, which helps the scrum team focus on
the current sprint’s objectives and increase productivity
What is agile?
Agile is a process that allows a team to more efficiently manage a project by breaking it
down into several stages, each of which allows for consistent collaboration with
stakeholders to promote steady improvements at every stage.
Agile was first described in the Agile Manifesto in 2000 by a group of developers who
sought out a new method of writing software. The manifesto cites four values:
Individuals and interactions over processes and tools
Embrace change
Frequent delivery
Face-to-face conversation
Functional products
Technical excellence
Simplicity
Self-organized teams
Companies that value results: Scrum is also beneficial to companies that value results over the
documented progress of the process. This is because scrum is focused on efficiency and
innovation to drive results, rather than a detailed, rigid process.
Companies that cater to customers: Scrum can help companies that develop products in
accordance with customer preferences and specifications. Scrum is adaptable to change, making
it key when responding to customer requests.
What are the benefits of agile scrum methodology?
These are some of the collective benefits of agile scrum methodology:
Flexibility and adaptability
Lower costs
Quality improvement
Organizational synergy
Employee satisfaction
Customer satisfaction
The greatest benefit of agile scrum methodology is its flexibility. With the sprint-based
model, the scrum team typically receives feedback from stakeholders after each sprint.
If there are any problems or changes, the scrum team can easily and quickly adjust
product goals during future sprints to provide more valuable iterations. This way,
stakeholders are happier because they get exactly what they want after being involved
every step of the way.
Compare this with traditional project management systems, in which stakeholders do
not provide frequent feedback and time is wasted making changes to the product
halfway through development – or worse, such as the teams needing to start from
scratch after the product has already been built.
To implement agile scrum methodology, there must be either a scrum expert in the
company or an outside consultant to ensure scrum principles are being applied
correctly. Agile scrum methodology involves precise execution and could result in
serious problems if not done properly.
What are the different roles in agile scrum methodology?
Agile scrum methodology consists of two sets of roles: core roles, known as “pigs,”
and ancillary roles, known as “chickens.”
There are three core roles: scrum master, product owner and scrum team. All of these
people are committed to the scrum project.
1. Scrum master: The scrum master is the facilitator of the scrum development process. In
addition to holding daily meetings with the scrum team, the scrum master makes
certain that scrum rules are being enforced and applied as intended. The scrum master’s
responsibilities also include coaching and motivating the team, removing impediments
to sprints, and ensuring that the team has the best possible conditions to meet its goals
and produce deliverable products.
2. Product owner: The product owner represents stakeholders, who are typically
customers. To ensure the scrum team is always delivering value to stakeholders and the
business, the product owner determines product expectations, records changes to the
product and administers a scrum backlog, a detailed and constantly updated to-do list
for the scrum project. The product owner is also responsible for prioritizing goals for
each sprint, based on their value to stakeholders, such that the most important and
deliverable features are built in each iteration.
3. Scrum team: The scrum team is a self-organized group of three to nine individuals who
have the business, design, analytical and development skills to carry out the actual
work, solve problems and produce deliverable products. Members of the scrum team
self-administer tasks and are jointly responsible for meeting each sprint’s goals.
Ancillary roles, on the other hand, are other stakeholders who are involved in, but not
committed to, the scrum project. Typically, ancillary roles consist of customers,
management and members of the executive team who are involved for the purpose of
consulting, reporting progress and gathering feedback to better work toward delivering
the highest value possible
What is the training for scrum and agile?
Managers and employees can enroll in training for both agile and scrum through
various online and in-person courses. Many educational training courses result in
certification in agile or scrum methodologies. Agile training provides the trainee with
the basic knowledge of agile and how to implement it to the rest of their team. Scrum
provides similar training, including the basic agile overview; however, the training
caters to the scrum framework.
To become a certified scrum master (CSM) or certified scrum product owner (CSPO),
you must first prepare and learn the basic details of scrum through videos or a simple
internet search. Next, find a suitable CSM or CSPO course, either through your
workplace or another internet search. Once you’ve completed the course, you usually
have to pass an exam to become certified. After certificateion, you’re able to lead your
team through the scrum process or provide scrum product details.
What are the differences between scrum and agile?
Although scrum and agile are similar, they have some key differences:
Scrum values rigidity, whereas agile is more flexible.
Agile leaders play a vital role, while scrum promotes a cross-functional team that is
self-functioning.
Agile is meant to be kept simple, while scrum can be innovative and experimental.
Scrum delivers shorter, separate projects, while agile delivers everything at the end of
the process.
Crystal methods in Agile Development/Framework
Make use of unique methods to make the project unique and dynamic.
Let’s know about the history of Crystal Method :
Crystal method was developed by an American scientist named Alistair Cockburn who
worked in IBM. He decided not to focus on step-by-step developmental strategies, but
to develop team collaboration and communication. Some of the traits of Cockburn’s
Crystal method were:
Human-powered i.e. the project should be flexible and people involved in preferred
work.
Adaptive i.e. approaches doesn’t any fixed tools but can be but can be changed
anytime to meet team’s specific needs.
Each member of team knows exactly what to do, which enables them to focus their
attention. This boosts team interaction and work towards the same goal.
Technical tooling-
It contains very specific technical tools which to be used by software development
team during testing, management and configuration. These tools make it enable for
the team to identify any error within less time.
How does Crystal function?
Till now, we got to know that crystal is a family of various developmental approaches,
and it is not a group of prescribed developmental tools and methods. At the beginning
the approach is set by considering the business requirements and the needs of the
project. Various methodologies in Crystal family also known as weights of the Crystal
approach which are represented by different colors of the spectrum.
Crystal family consists of many variants like Crystal Clear, Crystal Yellow, Crystal
Red, Crystal Sapphire, Crystal Red, Crystal Orange Web, Crystal Diamond.
CrystalClear-
The team consists of only 1-6 members that is suitable for short-term projects where
members work out in single workspace.
CrystalYellow-
It has a small team size of 7-20 members, where feedback is taken from Real Users.
This variant involves automated testing which resolves bugs faster and reduces use of
too much documentation.
CrystalOrange-
It has a team size of 21-40 members, where team is split according to their functional
skills. Here the project generally lasts for 1-2 years and the release is required every 3
to 4 months.
CrystalOrangeWeb-
It has also the team size of 21-40 members where the projects that have a continually
evolving code base that is being used by the public. It is also similar to Crystal
Orange but here they do not deal with single project but series of initiatives that
required programming.
CrystalRed-
The software development is led by 40-80 members where the teams can be formed
and divided according to requirements.
CrystalMaroon-
It involves large sized projects where team size is of 80-200 members where methods
are different and as per the requirement of the software.
CrystalDiamond&Sapphire-
This variant is used in large projects where there is a potential risk to human life.
The adaptive approach lets the team respond well to the demanding requirements.
Allows team to work with one they see the most effective.
Teams talk directly with each other, that reduce management overhead.
The Crystal Method is expandable. It may be used by small teams or large teams to work on simple
or complex objects. It places importance on developmental skills, interactions which in turn
encourages exchange of ideas. It is also beneficial for the clients as it delivers most important
components of th product first. But on the other hand, the Crystal Method does not plan based on
the requirements of the projects.
FDD Full Form
FDD stands for Feature-Driven Development. It is an agile iterative and incremental
model that focuses on progressing the features of the developing software. The main
motive of feature-driven development is to provide timely updated and working software to
the client. In FDD, reporting and progress tracking is necessary at all levels.
History
FDD was first applied in the year 1997 on a real-world application by Jeff De Luca for
large software development with specific needs of 15-month and 50 persons and published
as a discussion in book Java Modeling in Color with UML in the year 1999.
FDD Lifecycle
Build overall model
Plan by feature
Design by feature
Build by feature
Develop an overall model :
Continuing the research paper metaphor, this stage is when the
outline is drafted.
Using the “thesis” as a guide, the team will develop detailed domain
models, which will then be merged into one overall model that acts as
a rough outline of the system.
As it develops and as the team learns, details will be added.
This step implements all the necessary items that will support the
design.
Here, user interfaces are built, as are components detailed in the
technical design, and a feature prototype is created.
The unit is tested, inspected and approved, then the completed
feature can be promoted to the main build.
Any feature that requires longer time than two weeks to design and
build is further broken into features until it meets the two-week rule.
Feature-Driven Development is a practical Agile approach suited for
long-term, complex projects.
It is a suitable choice for development teams seeking a simple but
structured Agile method that is scalable and delivers predictable
results.
How is FDD Different from Scrum?
FDD is related to Scrum, but as its name implies, it’s a feature-
focused method (as opposed to a delivery-focused method).
Features are a foundational piece of FDD; they’re to FDD what user
stories are to Scrum: Small functions that are, most importantly,
client-valued.
Characteristics of FDD
Short iterative: FDD lifecycle works in simple and short iterations to efficiently finish
the work on time and gives good space for large projects.
Customer focused: This agile practice is totally based on inspection of each feature
by client and then pushed to main build code.
Structured and feature focused: Initial activities in lifecycle builds the domain model
and features list in the beginning of timeline and more than 70% of efforts are given
to last 2 activities.
FDD provides continuous success for larger size of teams and projects.
FDD provides greater accuracy in cost estimation of the project due to feature
segmentation.
Disadvantages of FDD
This agile practice is not good for smaller projects.
During this phase, project is initiated and planning is conducted. The project plan uses
project initiation information like project requirements, user needs, customer mission
statement, etc, to define set of release cycles that the project wants.
2.Collaboration:
The workers may have a overestimate of their own understanding of the technology which
may not lead to the desired result. Learning helps the workers to increase their level of
understanding over the project.
2. Technical reviews
1.Speculation:
The ASD framework rejects the term ‘plan’ for the first phase of its lifecycle as too
deterministic and confident of the final outcome. In its place is the suitably open-ended
‘speculation’ phase, which leaves space for the project to innovate.
The speculation phase of the ASD lifecycle does not reject planning and big picture
planning and the setting of objectives, for the project and iteration cycle due to start, takes
place here. During the first speculation phase, the project mission is defined, which sets
an approximate framework for the end product.
Iterations are cycles on the path to implementing the mission with each new speculation
phase an opportunity for exploration and experimentation.
2.Collaboration
The collaboration phase is founded on the following principles:
Complex applications are not built, they evolve.
Project Retrospectives
Iterations should be short so the team learns from small, not big, mistakes. The
development team and users contributing their user experience to the process should
assess their assumptions during each learning phase. The results of this assessment,
such as changers to underlying assumptions, then inform the direction of the next
iteration cycle.
The 6 characteristics of Adaptive Software Development
Mission driven
Feature based
Iterative
Time boxed
Risk driven
Change Tolerant
Extreme Programming (XP)
Definition
Extreme Programming (XP) is an agile software development framework that aims to
produce higher quality software, and higher quality of life for the development team. XP
is the most specific of the agile frameworks regarding appropriate engineering practices
for software development.
Code Review: Code review detects and corrects errors efficiently. It suggests pair
programming as coding and reviewing of written code carried out by a pair of
programmers who switch their works between them every hour.
Testing: Testing code helps to remove errors and improves its reliability. XP suggests
test-driven development (TDD) to continually write and execute test cases. In the
TDD approach test cases are written even before any code is written.
Simplicity: Simplicity makes it easier to develop good quality code as well as to test
Coding: The concept of coding which is used in XP model is slightly different from
traditional coding. Here, coding activity includes drawing diagrams (modeling) that
will be transformed into code, scripting a web-based system and choosing among
several alternative solutions.
Testing: XP model gives high importance on testing and considers it be the primary
factor to develop a fault-free software.
Listening: The developers needs to carefully listen to the customers if they have to
develop a good quality software. Sometimes programmers may not have the depth
knowledge of the system to be developed. So, it is desirable for the programmers to
understand properly the functionality of the system and they have to listen to the
customers.
Designing: Without a proper design, a system implementation becomes too complex
and very difficult to understand the solution, thus it makes maintenance expensive. A
good design results elimination of complex dependencies within a system. So,
effective use of suitable design is emphasized.
Feedback: One of the most important aspects of the XP model is to gain feedback to
understand the exact customer needs. Frequent contact with the customer makes the
development effective.
Simplicity: The main principle of the XP model is to develop a simple system that
will work efficiently in present time, rather than trying to build something that would
take time and it may never be used. It focuses on some specific features that are
immediately needed, rather than engaging time and effort on speculations of future
requirements.
Applications of Extreme Programming (XP): Some of the projects that are suitable
to develop using XP model are given below:
Small projects: XP model is very useful in small projects consisting of small teams as
face to face meeting is easier to achieve.
Projects involving new technology or Research projects: This type of projects face
changing of requirements rapidly and technical problems. So XP model is used to
complete this type of projects.
Roles
Although Extreme Programming specifies particular practices for your team to follow, it does not
really establish specific roles for the people on your team.
Depending on which source you read, there is either no guidance, or there is a description of how
roles typically found in more traditional projects behave on Extreme Programming projects. Here
are four most common roles associated with Extreme Programming:
The Customer
The Customer role is responsible for making all of the business decisions regarding the project
including:
What should the system do (What features are included and what do they accomplish)?
How do we know when the system is done (what are our acceptance criteria)?
How much do we have to spend (what is the available funding, what is the business case)?
The XP Customer is expected to be actively engaged on the project and ideally becomes part of the
team.
The XP Customer is assumed to be a single person, however experience has shown that one person
cannot adequately provide all of the business related information about a project. Your team needs to
make sure that you get a complete picture of the business perspective, but have some means of
The Developer
Because XP does not have much need for role definition, everyone on the team (with the
exception of the customer and a couple of secondary roles listed below) is labeled a
developer. Developers are responsible for realizing the stories identified by the Customer.
Because different projects require a different mix of skills, and because the XP method
relies on a cross functional team providing the appropriate mix of skills, the creators of
XP felt no need for further role definition.
The Tracker
Some teams may have a tracker as part of their team. This is often one of the developers
who spends part of their time each week filling this extra role. The main purpose of this
role is to keep track of relevant metrics that the team feels necessary to track their
progress and to identify areas for improvement. Key metrics that your team may track
include velocity, reasons for changes to velocity, amount of overtime worked, and passing
and failing tests.
This is not a required role for your team, and is generally only established if your team
determines a true need for keeping track of several metrics.
The Coach
If your team is just getting started applying XP, you may find it helpful to
include a Coach on your team. This is usually an outside consultant or
someone from elsewhere in your organization who has used XP before and is
included in your team to help mentor the other team members on the XP
Practices and to help your team maintain your self discipline.
The main value of the coach is that they have gone through it before and can help your
team avoid mistakes that most new teams make.
Lifecycle
To describe XP in terms of a lifecycle it is probably most appropriate to revisit the concept
of the Weekly Cycle and Quarterly Cycle.
First, start off by describing the desired results of the project by having customers define
a set of stories.
As these stories are being created, the team estimates the size of each story. This size
estimate, along with relative benefit as estimated by the customer can provide an
indication of relative value which the customer can use to determine priority of the
stories.
If the team identifies some stories that they are unable to estimate because they don’t
understand all of the technical considerations involved, they can introduce a spike to do
some focused research on that particular story or a common aspect of multiple stories.
Spikes are short, time-boxed time frames set aside for the purposes of doing research on
a particular aspect of the project. Spikes can occur before regular iterations start or
alongside ongoing iterations.
Next, the entire team gets together to create a release plan that everyone feels is
reasonable. This release plan is a first pass at what stories will be delivered in a particular
quarter, or release.
The stories delivered should be based on what value they provide and considerations
about how various stories support each other.
Then the team launches into a series of weekly cycles. At the beginning of each weekly
cycle, the team (including the customer) gets together to decide which stories will be
realized during that week. The team then breaks those stories into tasks to be completed
within that week.
At the end of the week, the team and customer review progress to date and the
customer can decide whether the project should continue, or if sufficient value has been
delivered.