Agile Development
Agile Development
The Agile software development cycle can be broken down into the
following six steps:
1.Concept
2.Inception
3.Iteration/Construction
4.Release
5.Production
6.Retirement
The first step, Concept, involves the identification of business
opportunities in each potential project as well as an estimation of the
time and work that will be required to complete the project. This
information can then be used to prioritize projects and ensure
technical and economic feasibility.
During the second step, Inception, team members are identified,
funding is established and the initial requirements are discussed with
the customer. A timeline should also be created that outlines the
various responsibilities of teams and clearly defines when work is
expected to be completed for each sprint. (A sprint is a set period of
time during which specific work has to be completed and made ready
for review.)
The third step, Iteration/Construction, is when teams start creating working software
based on requirements and continuous feedback. The Agile software development cycle
relies on iterations or single development cycles that build upon each other and lead into
the next step of the overall development process until the project is completed. Each
iteration typically lasts between two to four weeks, with a set completion date. The goal is
to have a working product to launch at the end of each iteration. Multiple iterations occur
throughout the development cycle and they each possess their own workflow.
1. Scrum: Scrum is one of the most widely used Agile frameworks. It organizes work into time-boxed
iterations called sprints, typically lasting 2-4 weeks. Scrum includes roles like Product Owner, Scrum Master,
and the Development Team.
2. Kanban: Kanban is a visual management method that focuses on continuous delivery. Work items are
represented on a Kanban board, and teams pull work from the backlog based on capacity.
3. Extreme Programming (XP): XP emphasizes customer satisfaction and involves practices such as pair
programming, test-driven development (TDD), continuous integration, and frequent releases.
4. Lean Software Development: Lean principles, adapted from manufacturing, are applied to software
development. It aims to eliminate waste, optimize efficiency, and maximize customer value.
5. Crystal Methods: Crystal methodologies are a family of Agile approaches that vary based on project size,
criticality, and other factors. Each crystal methodology is tailored to fit the unique characteristics of a given
project.
Agile Manifesto/Strategy
The Agile Manifesto is a set of guiding values and principles. It was created by a
group of software developers in 2001.
The four core values outlined in the Agile Manifesto are as follows:
1. Individual interactions are more important than processes and tools:
People drive the development process and respond to business needs.
They are the most important part of development and should be valued
above processes and tools. If the processes or tools drive development,
then the team will be less likely to respond and adapt to change and,
therefore, less likely to meet customer needs.
1. Extract Method: Breaking down a long method into smaller, more manageable ones.
2. Rename Variable/Method/Class: Improving code readability by giving variables,
methods, or classes more descriptive names.
3. Extract Class: Creating a new class to encapsulate part of the functionality of an
existing class.
4. Simplify Conditional Expressions: Making conditional statements more
straightforward and easier to understand.
5. Encapsulate Fields: Restricting direct access to class fields.
Limitations of the Agile Process
1. Not Suitable for All Projects: Agile may not be the best fit for large, complex projects with
rigid requirements.
2. Customer Involvement: Continuous customer involvement can be challenging, especially
if stakeholders are not readily available.
3. Documentation: Agile prioritizes working software over comprehensive documentation,
which can be a limitation in environments that require extensive documentation.
4. Skill Dependency: The success of Agile development depends on the skills and
collaboration of team members. Inexperienced teams may struggle to implement Agile
effectively.
Comparing Waterfall and Agile Modeling:
1. Flexibility:
Agile modeling is more flexible, allowing for
iterative changes, whereas Waterfall is rigid and
sequential.
2. Client Involvement:
Agile models encourage client involvement
throughout the development process, while
Waterfall typically involves clients at the
beginning and end.
3. Adaptability:
Agile modeling is adaptable to changing
requirements, while Waterfall struggles with
modifications once the process has started.
4. Documentation:
Waterfall emphasizes comprehensive upfront
documentation, while Agile modeling values
working software over extensive documentation.
SCRUM METHODOLOGY
Scrum is widely adopted in the software industry and beyond due to its ability to deliver
value in a dynamic and collaborative manner. It provides a framework for teams to work
together effectively, respond to change, and deliver high-quality products.
How Scrum Methodology works
a) Time-boxing: Events in Scrum are time-boxed, meaning they have a fixed duration,
promoting regularity and consistency.
b) Inspect and Adapt: Regular inspection of progress and adaptation based on
feedback is fundamental to Scrum.
c) Cross-functional Teams: Teams are self-organizing and cross-functional, meaning
they have all the skills needed to complete the work within the team.
By following this iterative and collaborative approach, Scrum enables teams to deliver
value quickly, respond to changing requirements, and continuously improve their
processes. The emphasis on transparency and communication helps create a shared
understanding of goals and progress among team members and stakeholders.
Comparing Waterfall, Agile and Scrum Modeling: