Agile Software Development Overview
Agile Software Development Overview
Process
Module#2
1
Software Development Life Cycle Process
• SDLC is a process that defines the various stages involved in the
development of software for delivering a high-quality product.
• SDLC stages cover the complete life cycle of a software i.e. from
inception to retirement of the product.
2
Software Development Life Cycle Process
3
Software Development Life Cycle Process
• Defining Requirements
• Once the requirement analysis is done, the next stage is to certainly
represent and document the software requirements and get them accepted
from the project stakeholders.
• This is accomplished through "SRS"- Software Requirement
Specification document which contains all the product requirements to be
constructed and developed during the project life cycle.
• Designing the Software
• The next phase is about to bring down all the knowledge of requirements,
analysis, and design of the software project.
• This phase is the product of the last two, like inputs from the customer
and requirement gathering.
4
Software Development Life Cycle Process
• Developing the project
• In this phase of SDLC, the actual development begins, and the
programming is built.
• The implementation of design begins concerning writing code.
• Developers have to follow the coding guidelines described by their
management and programming tools like compilers, interpreters,
debuggers, etc. are used to develop and implement the code.
• Testing
• After the code is generated, it is tested against the requirements to make
sure that the products are solving the needs addressed and gathered
during the requirements stage.
• During this stage, unit testing, integration testing, system testing,
acceptance testing are done. 5
Software Development Life Cycle Process
• Deployment
• Once the software is certified, and no bugs or errors are stated, then it is
deployed.
• Then based on the assessment, the software may be released as it is or
with suggested enhancement in the object segment.
• After the software is deployed, then its maintenance begins.
• Maintenance
• Once when the client starts using the developed systems, then the real
issues come up and requirements to be solved from time to time.
• This procedure where the care is taken for the developed product is
known as maintenance.
6
Agile development methodologies
• A small history of Software development processes
Waterfall development process
• You complete one phase (e.g. design)
before moving on to the next phase(e.g.
development)
• You rarely aim to re-visit a ‘phase’ once
it’s completed. That means, you better get
whatever you’re doing right the first time!
• You don’t realize any value until the end of the
project
• You leave the testing until the end.
• You don’t seek approval from the stakeholders
until late in the day
• This approach is highly risky, often more
costly and generally less efficient than
Agile approaches
Agile
• Not a process, it's a philosophy or set of values
• Agile is a time boxed, iterative approach to software delivery that builds
software incrementally from the start of the project, instead of trying to
deliver it all at once near the end.
• It works by breaking projects down into little bits of user functionality
called user stories, prioritizing them, and then continuously delivering
them in short two week cycles called iterations.
Concept of Agility
● Agility is the ability to both create and respond to change in order to
profit in a turbulent business environment.
● Agility is dynamic, content specific, aggressively change embracing,
and growth oriented.
● It helps software team provide quick and unpredictable responses to
the feedback that they receive on their project.
Agile Process
● Agile process refers to a software development approach based on
iterative development.
● Agile methods break tasks into smaller iterations or parts do not
directly involve long term planning.
● Each iteration is considered as a short time "frame" in the Agile
process model, which typically lasts from one to four weeks.
● The division of the entire project into smaller parts helps to minimize
the project risk and to reduce the overall project delivery time
requirements.
Agile Process
• An agile process reduces the cost of change because software is
released in increments and change can be better controlled within an
increment.
Agile Manifesto
• The delivery of the output is predictable and can sometimes be earlier than expected
• The cost of the project are predictable and follow rigid schedule
• The client can provide priority features allowing the team to ensure maximum project value
• By focusing on the users , the team can deliver value to the customers
• The project is broken into smaller units, with high quality development, testing and collaboration.
Agile principles
[Link] the customer through early and continuous delivery
[Link] changing requirements, even late in development
[Link] working software frequently
[Link] people and developers must work together daily throughout
the project
[Link] projects around motivated individuals
[Link]-to-face conversations
Agile principles
7. Working software is the primary measure of progress
8. Agile processes promote sustainable development
9. Continuous attention to technical excellence and good design
enhances agility
10. Simplicity
11. Self-organizing teams
12. Adjust ways of working in regular intervals to be more effective
Overview of Agile Development
Models
Agile methodologies
• Scrum
• Framework –used by teams to establish a hypothesis ,try it out, reflect
on experience and adjust
• When is it applicable?
• Used when cross functional teams are working on product
development when work is split into more than one 2-4 iterations
Scrum Values
• Teams following scrum are expected to learn and explore the following values:
• Commitment
• Team members personally commit to achieving team goals
• Courage
• Team members do the right thing and work on tough problems.
• Focus
• Concentrate on the work identified for the sprint and the goals of the team.
• Openness
• Team members and stakeholders are open about all the work and the challenges the team
encounters.
• Respect
• Team members respect each other to be capable and independent.
Principles of Scrum
• Events
• Sprint
• Sprint Planning
• Daily Scrum
• Sprint Review
• Sprint Retrospective
Scrum Practices
• Artifacts
• Product Backlog
• Sprint Backlog
• Increment
• Definition of Done
Scrum Practices
• Roles
• The Product Owner
• The Scrum Master
• The Development Team
Scrum Lifecycle
Agile methodologies
• Extreme programming(XP)
• It is a framework that enables teams to create high quality software
and improves their quality of life
• It enables software development with the appropriate engineering
practices
• When is it applicable?
• Changing s/w requirements
• To handle risks caused due to new technology
• Working with small development teams
Extreme programming(XP)
• Places a high dependency on a chief programmer who needs to be able to act as a coordinator, lead
designer, and mentor to new team members.
• May not work well with older systems because there is already a system in place and no overall
model to define it. You may need to start over and work from the ground up.
Agile methodologies
• Crystal
• Is approach to s/w development that focuses on people and their
interactions, rather than tools and processes
• It aimed to steam line processes and improve optimization
• The Crystal agile framework is built on two core beliefs:
• Teams can find ways on their own to improve and optimize their
workflows
• Every project is unique and always changing, which is why that
project’s team is best suited to determine how it will tackle the work
Key principles of the crystal agile framework
#1: Frequent delivery
#2: Reflective improvement
#3: Osmotic communication
#4: Personal safety
#5: Focus on work
#6: Access to subject matter experts and users
#7: Technical tooling
Crystal properties
• The Crystal method has several essentials, which are known as Crystal
properties:
• Teamwork:
• Communication
• Simplicity
• Reflection
• Responding and reporting correctly:
• Reasoning:
• Reconstruction as and when needed
• Frequent adjustments
• Improve processes
Strengths and Weakness of Crystal
Crystal function
• Crystal Clear- The team consists of only 1-6 members that is suitable
for short-term projects where members work out in a single workspace.
• Crystal Yellow- 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 the use of too much
documentation.
• Crystal Orange- It has a team size of 21-40 members, where the 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.
• Crystal Orange Web- It has also a team size of 21-40 members were
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 a single project but a series of initiatives that required
programming.
• Crystal Red- The software development is led by 40-80 members
where the teams can be formed and divided according to requirements.
• Crystal Maroon- It involves large-sized projects where the team size is
80-200 members and where methods are different and as per the
requirement of the software.
• Crystal Diamond & Sapphire- This variant is used in large projects
where there is a potential risk to human life.
Benefits of using the Crystal Agile Framework
• Facilitate and enhance team communication and accountability.
• The adaptive approach lets the team respond well to the demanding requirements.
• Allows team to work with the one they see as the most effective.
• Teams talk directly with each other, which reduces management overhead.
• Faster delivery – The framework enables the team to deliver working software faster, which can help gain a competitive
advantage in the market.
• Higher quality – The framework emphasizes on quality, enabling the team to detect and fix defects early in the development
process, resulting in a higher quality product.
• Improved customer satisfaction – The framework promotes customer involvement, enabling the team to deliver products that
meet customer needs, resulting in higher customer satisfaction.
• Increased productivity – The framework enables the team to focus on delivering the highest value features, which can increase
productivity and reduce waste.
• Flexibility – The framework is highly adaptable, enabling the team to adjust to changing requirements, and make decisions based
on real-time feedback.
• Empowerment – The framework promotes empowerment, enabling team members to take ownership of their work, and make
decisions that contribute to the success of the project.
• Reduced risk – The framework promotes risk management, enabling the team to identify and mitigate potential risks early in the
development process, reducing the likelihood of project failure.
Drawbacks of using the Crystal Agile Framework
• A lack of pre-defined plans may lead to confusion and loss of focus.
• Lack of structure may slow down inexperienced teams.
• Not clear on how a remote team can share knowledge informally.
• Lack of predictability – The framework’s emphasis on adaptability and flexibility may result in a lack of predictability,
making it difficult to plan and estimate project timelines and budgets.
• Lack of documentation – The framework’s emphasis on communication and collaboration may result in a lack of
documentation, making it difficult to track progress and maintain a record of decisions.
• Limited scalability – The framework may not be suitable for large or complex projects, as the lack of structure and
predefined plans may make it difficult to manage teams at scale.
• Dependence on team expertise – The framework relies heavily on the expertise and skills of the development team, which
may not be suitable for teams with limited experience or knowledge.
• Lack of clarity on roles and responsibilities – The framework’s emphasis on self-organizing teams may result in a lack of
clarity on roles and responsibilities, leading to confusion and a loss of focus.
• Inability to handle regulatory requirements – The framework may not be suitable for projects with strict regulatory
requirements, as the lack of documentation and structure may not meet compliance standards.
• Potential for informal knowledge sharing – The framework’s emphasis on osmotic communication may result in informal
knowledge sharing, which may be difficult to track and monitor for accuracy and completeness.
Agile methodologies
• Kanban
• This method is used to design, manage and improve flow of system
• Organizations can visualize their flow of work and limiting their work
in progress
• When is it applicable?
• It can be used in situations where work arrives in an unpredictable
fashion
• It also used to deploy work immediately, without waiting for other
work items
History of Kanban
• Kanban teams use a visualization tool called Kanban boards to manage their
workload and flow.
• In a Kanban board, work is displayed in a project board that is organized by
columns.
• The most basic Kanban board might have columns like “To do,” “In
progress,” and “Done.”
• Each column is filled with visual cards that represent individual tasks. A team
moves through the columns until the tasks are completed.
• You can create and maintain your Kanban board online.
• Virtual Kanban board software and tools help you dynamically visualize
content and get at-a-glance insight into your entire project’s work.
What is the difference between Kanban and Scrum?
• Kanban isn’t the right framework for every team. Some downsides of
Kanban include:
• It’s not as common among non-engineering teams.
• It can quickly become overwhelming.
Tools
• [Link]
• Miro Tool
Agile methodologies
• Lean
• Lean is set of tools and principles that aim to identify and remove
waste to increase the speed of process development
• Maximizing value to client ensuring waste is minimized
• When is it applicable?
• Apply to any sector where there is waste of any form
Lean Software Development/Lean IT
• Software development requires a flexible mindset that encourages team members to keep their options open until
they’ve gathered the data necessary to make proper decisions.
• And the longer they wait, the more informed those decisions.
• Deciding late also makes it easier to accommodate new and evolving circumstances.
• Build integrity in
• Accelerated application delivery should not come at the expense of the application’s integrity or quality.
• Fast does not mean sloppy.
• Customers should get an application that’s easy to use, works as it’s supposed to work, and includes the features they
expect.
• The right tools can help ensure integrity by automating repetitive tasks, implementing comprehensive testing, and
• They should be familiar with the project’s goals, the application’s users, the value that the application
provides, and any other information that offers insights into what they’re trying to achieve as a team and
organization.
• Amplify learning:
• Software development should be treated as an ongoing learning process that’s available to all team members.
• Learning can take many forms, such as training, code reviews, project documentation, pair programming,
or knowledge sharing.
END