UNIT II - AGILE PROCESSES
,
Lean Product Development
• Lean in an agile setting, we are referring to a branch of
lean known as "lean product development".
• Lean product development focuses on creating new and
improved goods, as opposed to the initial lean
production techniques, which focused on manufacturing
items.
• The following are some of the major tenets of lean
product development:
– Using visual management tools
– Identifying customer-defined value
– Building in learning and continuous improvement
Lean Core Concepts
Lean focuses on seven core concepts:
1. Eliminate waste
2. Empower the team
3. Deliver as soon as possible
4. Optimize the system as a whole
5. Build quality in
6. Defer decisions
7. Amplify learning
Scrum
• Scrum is a well-known agile framework that is
simple to learn and lightweight, but like all
agile techniques, it is challenging to master
completely
• The "Scrum framework" contains a collection
of processes, roles, events, artifacts, and rules
that are intended to direct the team as they
carry out the project.
Scrum Pillars and Values
The theory behind Scrum is based on the three pillars
– Transparency,
– Inspection
– Adaptation.
In addition to the three pillars,
Scrum also recognizes five fundamental values-
– Focus,
– Courage,
– Openness,
– Commitment, and
– Respect.
Scrum Team Roles
Developers, product owners, and scrum masters make up scrum teams.
• Developers: The team of experts who construct the product
increments during each sprint. The team members are self-
organizing, which means they have the authority to oversee their
work.
• Product Owner: The product owner oversees managing the product
backlog, or the list of tasks that need to be completed, to maximize
the value of the product.
• Scrum Master: The effective understanding and application of the
Scrum framework is the responsibility of the Scrum Master. By
removing any obstacles to the development team's work,
coordinating their events (meetings), and coaching the team
members, this person serves as a servant leader.
Scrum Events
• Five "events," or meetings targeted at a
particular goal, are defined under the Scrum
framework.
• These consist of
– Sprints
– sprint planning meetings
– daily scrum
– sprint reviews and
– sprint retrospectives
Scrum Events
Sprint:
A sprint is an iteration that is time-boxed
(time-limited) that lasts no more than one
month, during which the team creates a viable
product for release.
Backlog Refinement:
"Grooming the backlog" takes place at the
backlog refinement meetings
Scrum Events
Sprint Planning Meeting:
Everyone attends for the sprint planning meeting to
decide what will be delivered during the forthcoming sprint
and how that work will be accomplished.
Daily Scrum:
The purpose of this meeting is to have each team
member give a succinct response to three questions about
what they are doing to achieve the sprint goal.
• What has one accomplished since the previous daily
scrum?
• What are your plans for the day?
• Are there any obstacles in my way?
Sprint Review:
Sprint Review
The development team, the product owner, and
the scrum master attend the sprint review meeting,
which is held after the sprint along with
other potential stakeholders.
Sprint Retrospective
The development team holds the sprint
retrospective, which is the final "inspect and adapt"
activity for the sprint, following the sprint review but
before the following sprint planning meeting.
Crystal
• It's a family of tailored, situation-specific
approaches that are color-coded.
• Crystal can handle a wide range of projects,
from a small team developing a low-criticality
system (Crystal Clear) to a large team
developing a high-criticality system.
Crystal
The first five "colors" (methodologies) of the
crystal, for instance, are depicted in the figure
below.
Feature-Driven Development (FDD)
FDD (Feature-Driven Development) is an easy-to-understand but effective method for
creating products or solutions.
FDD id a model driven,small iteration process.
FDD suggests a collection of best practices that were inspired by software engineering.
1.Domain object modeling
it provides an overall framework to which to add function,feature by feature .it
helps to maintain the integrity of the system.
Teams study and describe the domain (or business environment) of the problem to
be solved in this exercise.
2.Developing by feature :
feature- smaill,client –valued function expressed in the form.
<action><result><object>
3.component/class(code) ownership
– This technique assigns a single owner to a section of code for conceptual
coherence, performance, and consistency.
4.Feature teams
-These are compact, spontaneously assembled teams that vet designs
and enable the evaluation of several design choices before the selection of
a design.
5.Inspections:
• These are checks to make sure the design and code are of high quality.
6.Configuration management:
• This entails labeling code, keeping track of modifications, and controlling
source code.
7.Regular builds:
• The team ensures that the new code works with the current code
through regular builds.
8.Results and progress visibility:
• This procedure keeps track of progress based on tasks that have been
finished.
Adaptive Feature-Driven Development
• Adaptive Software Development(ASD) has also
originated from RAD(Rapid Application
Development).
• The main focus of ASD is to adapt rapidly to
changing product requirements or sudden
shifts in user behavior and market trends
SIX Basic Characteristics
1.Mission Focused-provides boundaries rather than a fixed destinations
2.Feature based-are functionality that is developed during every iteration
based on customer priorities.
3.Iterative-focus on frequent release in order to obtain feedback for
futher development
4.Time boxed-iterations are time boxed
5.Risk driven-the iterations are driven by identifying & evaluating the
critical risks.
6.Change tolerant-viewing change as the ability to incorporate
competitive adv,but not as a problem for development.
INTRODUCTION TO GITLAB
GitLab is a github like service that
organizations can use to provide internal
management of git repositories. It is a self
hosted Git-repository management system that
keeps the user code private and can easily
deploy the changes of the code
Why to use GitLab?
GitLab is great way to manage git repositories on centralized
server. GitLab gives you complete control over your repositories or
projects and allows you to decide whether they are public or private
for free.
Features
• GitLab hosts your (private) software projects for free.
• GitLab is a platform for managing Git repositories.
• GitLab offers free public and private repositories, issue-tracking
and wikis.
• GitLab is a user friendly web interface layer on top of Git, which
increases the speed of working with Git.
• GitLab provides its own Continuous Integration (CI) system for
managing the projects and provides user interface along with
other features of GitLab
GitLab
Advantages
• GitLab provides GitLab Community Edition version for users to
locate, on which servers their code is present.
• GitLab provides unlimited number of private and public
repositories for free.
• The Snippet section can share small amount of code from a
project, instead of sharing whole project.
Disadvantages
• While pushing and pulling repositories, it is not as fast as GitHub.
• GitLab interface will take time while switching from one to
another page.
GitLab Flow
GitLab - Merge Requests
Description
• Merge request can be used to interchange the
code between other people that you have
made to a project and discuss the changes
with them easily.
UNIT II.docx
GitLab - CI/CD
Description
• GitLab CI (Continuous Integration) service is a
part of GitLab that build and test the software
whenever developer pushes code to
application.
• GitLab CD(Continuous Deployment) is a
software service that places the changes of
every code in the production which results in
every day deployment of production
CI/CD concepts
The three primary approaches for the
continuous method are:
– Continuous Integration
– Continuous Delivery
– Continuous Deployment
Continuous Integration:
• Consider an application that has its code stored
in a Git repository in GitLab. Developers push
code changes every day, multiple times a day.
• For every push to the repository, you can
create a set of scripts to build and test your
application automatically. These scripts help
decrease the chances that you introduce errors
in your application.
• This practice is known as
Continuous Integration
Continuous Delivery
• Continuous Delivery is a step beyond Continuous Integration.
Not only is your application built and tested each time a code
change is pushed to the codebase, the application is also
deployed continuously. However, with continuous delivery,
you trigger the deployments manually.
• Continuous Delivery checks the code automatically, but it
requires human intervention to manually and strategically
trigger the deployment of the changes.
Continuous Deployment
• Continuous Deployment is another step beyond Continuous
Integration, similar to Continuous Delivery. The difference is
that instead of deploying your application manually, you set it
to be deployed automatically. Human intervention is not
required.
Extreme Programming: Values, Principles,
and Practices
Extreme Programming (XP) is one of the
numerous Agile frameworks applied by IT
companies.
Process and roles of extreme programming
The XP framework normally involves 5 phases or stages of the development
process that iterate continuously:
1. Planning, the first stage, is when the customer meets the development
team and presents the requirements in the form of user stories to
describe the desired result. The team then estimates the stories and
creates a release plan broken down into iterations needed to cover the
required functionality part after part. If one or more of the stories can’t
be estimated, so-called spikes can be introduced which means that
further research is needed.
2. Designing is actually a part of the planning process, but can be set apart
to emphasize its importance. It’s related to one of the main XP values
that we’ll discuss below — simplicity. A good design brings logic and
structure to the system and allows to avoid unnecessary complexities
and redundancies.
1. Coding is the phase during which the actual code is created by
implementing specific XP practices such as coding standards, pair
programming, continuous integration, and collective code ownership
(the entire list is described below).
2. Testing is the core of extreme programming. It is the regular activity
that involves both unit tests (automated testing to determine if the
developed feature works properly) and acceptance tests (customer
testing to verify that the overall system is created according to the
initial requirements).
3. Listening is all about constant communication and feedback. The
customers and project managers are involved to describe the business
logic and value that is expected.
Values and principles of extreme
programming
Values of extreme programming
Values of extreme programming
– XP has simple rules that are based on 5 values to guide the teamwork:
1. Communication. Everyone on a team works jointly at every
stage of the project.
2. Simplicity. Developers strive to write simple code bringing
more value to a product, as it saves time and effort.
3. Feedback. Team members deliver software frequently, get
feedback about it, and improve a product according to the
new requirements.
4. Respect. Every person assigned to a project contributes to a
common goal.
5. Courage. Programmers objectively evaluate their own results
without making excuses and are always ready to respond to
changes.
Principles of extreme programming
Most researchers denote 5 XP principles as:
1. Rapid feedback. Team members understand the given
feedback and react to it right away.
2. Assumed simplicity. Developers need to focus on the job
that is important at the moment and follow YAGNI (You Ain’t
Gonna Need It) and DRY (Don’t Repeat Yourself) principles.
3. Incremental changes. Small changes made to a product step
by step work better than big ones made at once.
4. Embracing change. If a client thinks a product needs to be
changed, programmers should support this decision and
plan how to implement new requirements.
5. Quality work. A team that works well, makes a valuable
product and feels proud of it.
Roles in Extreme Programming
The Roles that have been found effective in
Extreme Programming are −
– Developer (also called Programmer by some
teams)
– Customer
– Manager (also called tracker)
– Coach