ASD Unit 1
ASD Unit 1
Fundamentals of Agile
&
Agile Scrum Framework
Traditional Methods Vs Agile Methods
Requirement Requirement Design &
Engineering Specifications Implementation
Traditional Methods
Agile Methods
Particularly in 1990s, some developers reacted against traditional
“heavyweight” software development processes.
11. The best architectures, requirements, and designs emerge from self-
organizing teams.
Tools can help, but bigger and better tools can hinder more than help
◦ Simpler tools can be better
Documentation important, but too much is worse than too little
◦ Long time to produce, keep in sync with code
◦ Keep documents short and salient
Developed in 1990s
◦ Kent Beck, 1996
◦ Chrysler Comprehensive Compensation Project
◦ Published book in 1999
1. On-Site Customer
◦ Customer is actively involved with development process
◦ Customer gives “User Stories”
Short, informal “stories” describing features
Keep on “story cards”
2. Planning Game
◦ Developers and customers together plan project
◦ Developers give cost estimates to “stories” and a budget of how
much they can accomplish
Can use abstract accounting mechanism
Later compare to actual cost, to improve estimates over time
◦ Customer prioritizes stories to fit within budget
3. Metaphor
◦ Come up with metaphor that describes how the whole project will fit
together
◦ The picture in a jigsaw puzzle
◦ Provides framework for discussing project in team
◦ Tools and materials often provide good metaphors
4. Small Releases
◦ Time between releases drastically reduced
A few weeks/months
◦ Multiple iterations
◦ Can have intermediate iterations between bigger “releases”
5. Testing
◦ Test-first programming
◦ Unit testing frequently by developers
◦ Acceptance tests defined by customers
6. Simple Design
◦ Principles discussed in earlier lectures
◦ Design should be quick, not elaborate
◦ Pick the simplest thing that could possibly work
◦ Resist adding stuff not ready yet
7. Refactoring
◦ Code gets worse with feature adds, bug fixes
◦ Rewrite small sections of code regularly
◦ Rerun all unit tests to know nothing broken
Means you should have designed comprehensive tests
8. Pair Programming
◦ Discussed later
9. Collective Ownership
◦ Anyone can edit anything
◦ Errors are the fault of the whole team
10. Continuous Integration
◦ Commit changes frequently (several times a day)
◦ Verify against entire test suite!
◦ Planning meeting
Tasks can be assigned to team members
Team members have individual estimates of time taken per item
◦ During sprint, work through features, and keep a burn-down chart for
the sprint
◦ Quickly mention what they did since last Scrum, any obstacles
encountered, and what they will do next
Scrum
Sprint Sprint Meeting
Plan
Release Backlog
Backlog Begin 30 days
Sprint End
Sprint
1. Team Lead
3. Product Owner
4. Stakeholder
5. Technical Expert
Optional
6. Independent Tester
7. Architecture Owner
1. Team Lead –
This role, called “Scrum Master” in Scrum or team coach or project lead
in other methods, is responsible for facilitating the team, obtaining
resources for it, and protecting it from problems. This role
encompasses the soft skills of project management but not the
technical ones such as planning and scheduling, activities which are
better left to the team as a whole (more on this later).
2. Team Member –
The "gold owner" who funds the project, support (help desk) staff
member, auditors, your program/portfolio manager.
Product Backlog : The agile product backlog in Scrum is a prioritized
features list, containing short descriptions of all functionality desired
in the product. A typical Scrum backlog comprises the following
different types of items:
1. Features
2. Bugs
3. Technical work
4. Knowledge acquisition
Sprint Backlog : The sprint backlog is a list of tasks identified by the
Scrum team to be completed during the Scrum sprint.
During the sprint planning meeting, the team selects some number of
product backlog items, usually in the form of user stories, and
identifies the tasks necessary to complete each user story.
Release Burndown Chart : On a Scrum project, the team tracks its
progress against a release plan on a release burndown chart. The
release burndown chart is updated at the end of each sprint by the
Scrum Master.
The horizontal axis of the sprint burndown chart shows the sprints; the
vertical axis shows the amount of work remaining at the start of each
sprint. Work remaining can be shown in whatever unit the team
prefers -- story points, ideal days, team days and so on.
Features are client valued functionalities or business requirements
from the system. FDD focuses on delivering tangible working software
repeatedly in timely manner. FDD emphasizes on listening, planning,
designing and building of features. It comprise of five steps :
3. Plan by feature
4. Design by feature
5. Build by feature
1. Develop over all model –
Starts with a high level walkthrough of the scope of the system and
its context.
Detailed domain model are created for each modeling area by small
groups and presented for peer review
FDD Viewer
It comprise of seven activities :
1. Eliminate Waste
2. Amplify Learning
6. Build Integrity In
7. See the whole system
1. Eliminate Waste –
eliminated.
2. Amplify Learning –
presenting screen shots to the end user and getting their inputs.
3. Decide as late as possible –
decision.
5. Empower the Team –
unit parts, as the defect incorporated in them may cause harm to the
whole system.
Crystal
Velocity tells us how many points this project team can deliver within
an iteration
For the projects where not lot many external rules and regulations are
to be imposed.
Less focus on design and plan.
No proper documentation.
Limited team
?
Typically, refactoring applies a series of standardized basic micro-
refactorings, each of which is (usually) a tiny change in a computer
program's source code that either preserves the behavior of the
software, or at least does not modify its conformance to functional
requirements.
There may be some stereo- typical situations where program code
should be improved. Such situations are known as Code Smells. Some
of them are –
1. Duplicate Code
2. Long Methods
5. Speculative Generality
1. Identify the segment of code to be refactored
3. Refactoring is Done
(Using Automated Tools or Manually)
If
Fails
4. Testing is done using the identified Test Cases
If Passes
5. Deployed to the main program
1. Maintainability - It is easier to fix bugs because the source code is
easy to read and the intent of its author is easy to grasp.
It was first named and proposed by Grady Booch in his method, who
did not advocate integrating several times a day.
This practice advocates the use of a revision control system for the
project’s source code. All artifacts required to build the project should
be placed in the repository.
It should be easy to find out whether the build breaks and, if so, who
made the relevant change.
This frees the driver to focus all of his or her attention on the "tactical"
aspects of completing the current task, using the observer as a safety
net and guide.
1. Pair programming increases the man-hours required to deliver code
compared to programmers working individually.
they stand in different relationships to the problem by virtue of their functional roles.
3. Knowledge is constantly shared between pair programmers.
KANBAN
TAIGA
Agile testing is a software testing practice that follows the principles
of agile software development.
Agile testing involves all members of a cross-functional agile team,
with special expertise contributed by testers, to ensure delivering the
business value desired by the customer at frequent intervals, working
at a sustainable pace.
BUG DIGGER
FOGBUGZ
PIVOTAL TRACKER
SNAGIT