Agile Software Processes S.R.Raja SL/MCA
08/14/09
1
An agile view of process • Agile -> Active, dynamic and quick process Four key issues in agile • 1. Self organizing team that have control over the work they perform • 2. Communication and collaboration between team members and customers 08/14/09
2
An agile view of process….. • 3. Accepting changes • 4. rapid delivery of software that satisfies the customer
08/14/09
3
What is AGILITY? •
Agility is a dynamic , content specify,
change embrace and growth oriented.
•
The following principles are used to achieve agility Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Changing requirements of customer needs. 08/14/09
4
AGILITY…… • • • •
Deliver software frequently (couple of weeks – shorter time scale ) Business people and developers must work together daily throughout the project. Motivated individuals Most efficient and effective method conveying information ( development team , face to face conversation).
08/14/09
5
AGILITY……. • • • •
Working software is the primary measure of progress. Promote sustainable development. Continuous attention to technical excellence (Studies..) Simplicity – to minimize the work is essential.
08/14/09
6
AGILITY……. •
•
The best architectures, requirements, and designs emerge from self conferencing teams. At regular intervals, the team reflects on how to become more effective.
08/14/09
7
AGILITY……. • Agile methods are adaptive rather than predictive; • Agile methods are people-oriented rather than process-oriented;
08/14/09
8
Agile Characterstics • They deliver software frequently; • – Every release should work and be deployable to production; • The line between "design" and "development" is intentionally fuzzy (Confused) • Face to face communication is the dominant form of communication; 08/14/09
9
Characterstics … • Business people and developers work closely together; • – Simplicity, "the art of maximizing the amount of work not done", is an important design goal; and • – The methodology expects, and supports, changes to requirements. • Examples of Agile Methodologies • – Extreme Programming, SCRUM, FDD etc. 08/14/09
10
Agile Processes Based on three key assumptions •
•
•
08/14/09
It is difficult to predict in advance which requirements or customer priorities will change and which will not For many types of software design and construction activities are interleaved (construction is used to prove the design) Analysis, design, and testing are not as predictable from a planning perspective as one might like them to be 11
Human factors for Agile software development • • • • • • •
Competence Common focus Collaboration Decision-making ability Fuzzy-problem solving ability Mutual trust and respect Self-organization
08/14/09
12
Human factors for Agile software development 1.Competence – Talent, specific software related skills, and overall knowledge (taught all team members) 2.Common focus - different task , different project ---- to achieve same goal 3.Collaboration - team members and business managers communication 08/14/09
13
Human factors for Agile software development 4. Decision-making ability - any good software team must be allowed. – agile team to freedom to control own density. 5. Fuzzy-problem solving ability – New problem – get the new solution. • 08/14/09
14
Human factors for Agile software development 6. Mutual trust and respect - A jelled team exhibits the trust and respect that the necessary to make them
7. Self organization - 1) work to be done 2) best accommodate its local environment 3) organize the work schedule to delivery the software.
08/14/09
15
Agile Process Models • Extreme Programming (XP) • Adaptive Software Development (ASD) • Dynamic Systems Development Method (DSDM) • Scrum • Crystal • Feature Driven Development (FDD) • Agile Modeling (AM) 08/14/09
16
Extreme Programming (XP) • Xp uses an object oriented approach • It has four framework activities 1. Planning 2. Design 3.Coding 4.Testing 08/14/09
17
Extreme Programming (XP) • XP is a used to quickly develop quality software program to customers. • The goal of this methodology is to deliver what the customer is looking for in the quickest way.
08/14/09
18
Extreme Programming • Planning – – – – –
user stories created and ordered by customer value Xp team assess each story and assign cost 1. All stories will be implemented immediately 2. The stories with highest value will be moved in the schedule and implemented first – 3. The riskiest stories will be moved up in the schedule and implemented first
08/14/09
19
Extreme Programming…. – Project velocity • is the number of customer stories implemented during the first release • Project velocity can be used in – 1. Help estimate delivery dates and schedule for subsequent release and – 2. determine whether an over commitment has been made for all stories across the entire development project. 08/14/09
20
Extreme Programming…. • Design – Xp design follows the KIS (keep it simple) principle – Xp use of CRC cards (class responsibility collaborator) for simple OO context – CRC cards and design prototypes are only work products
– Spike Solution – if a difficult problem is encountered in a design story, Xp recommends the immediate creation of operational prototype of that portion of the design – encourages use of refactoring – process of changing the softwaqre system. 08/14/09
21
Extreme Programming ….. • Coding – emphasizes use of pairs programming to create story code – Unit testing is performed for every release of software increment. – continuous integration and smoke testing is utilized
08/14/09
22
Extreme Programming ….. • Testing – focuses on unit tests to exercise stories – unit tests created before coding are implemented using an automated testing framework to encourage use of regression testing – integration and validation testing done on daily basis – acceptance tests focus on system features and functions viewable by the customer 08/14/09
23
Extreme Programming • A collection of best practices – each done to the “extreme” • Sounds extreme, but very disciplined • Created by Kent Beck, Ward Cunningham, Ron Jeffries
08/14/09
24
Adaptive Software Development Features • ASD as a technique for building complex software and systems. • ASD focus on human collaboration and Self-organization. • ASD life cycle • 1. Speculation 2. Collaboration 3.Learing 08/14/09
25
Adaptive Software Development - 1 • Speculation The word “speculate” refers to the planning.
– project initiated – risk driven adaptive cycle planning takes place
• Collaboration – requires teamwork from a jelled team. – joint application development is preferred requirements gathering approach 08/14/09
26
Adaptive Software Development - 2 • Learning – components implemented and tested – focus groups provide feedback – formal technical reviews – Postmortems
08/14/09
27
Dynamic Systems Development Method • Provides a framework for building and maintaining systems which meet tight time constraints using incremental prototyping • Uses Pareto principle (80% of project can be delivered in 20% required to deliver the entire project) • It suggests an iterative software process. • Each increment only delivers enough functionality to move to the next increment. • Uses time boxes to fix time and resources to determine how much functionality will be delivered in each increment 08/14/09
28
Dynamic Systems Development Method Life Cycle • Three life cycle for iterative and two additional life cycle for activities • Feasibility study – establishes basic business requirements and constraints
• Business study – establishes functional and information requirements needed to provide business value
• Functional model iteration – produces set of incremental prototypes to demonstrate functionality to customer 08/14/09
29
Dynamic Systems Development Method Life Cycle …. • Design and build iteration – revisits prototypes to ensure they provide business value for end users – may occur concurrently with functional model iteration
• Implementation – latest iteration placed in operational environment 08/14/09
30
Scrum Principles • Small working teams used to maximize communication and minimize overhead and maximize sharing • Process must be adaptable to both technical and business changes to ensure best possible product is produced. • Process yields frequent increments that can be inspected, adjusted, tested, documented and built on • Development work and people performing it are partitioned into clean, low coupling partitions • Testing and documentation is performed as the product is built • Ability to declare the product done whenever required 08/14/09
31
Scrum Principles • Are used to guide development activities within a process. • Frame work Activities – Requirements, – Analysis, – Design – Evolution and – Delivery 08/14/09
32
Scrum Principles – Within each framework activity , work tasks occur within a process pattern called a
sprint – The work conducted within a sprint , is adopted to problem at hand and is defined and often modified in real time by the scrum team – Figure 08/14/09
33
08/14/09
34
Scrum Principles – Scrum use a set of “ software process patterns” that have proven effective for projects with tight timelines, changing requirements and business critically.
08/14/09
35
Scrum • Backlog – prioritized list of requirements or features the provide business value to customer. – items can be added at any time (changes are introduced).
• Sprints – work units required to achieve one of the backlog items must fit into a predefined time-box (30 days) – affected backlog items frozen (changes are not introduced during the sprint) 08/14/09
36
Scrum • Scrum meetings – 15 minute daily meetings – what was done since last meeting? – what obstacles were encountered? – what will be done by the next meeting?
• Demos – deliver software increment to customer for evaluation 08/14/09
37
Scrum • Term in rugby to get an outof-play ball back into play • Term used in Japan in 1987 to describe hyperproductive development • Used by Ken Schwaber and Mike Beedle to describe their Agile methodology
08/14/09
38
Scrum with Extreme Programming SCRUM Project Management Best Practices
EXTREME PROGRAMMING Mostly Technical Best Practices
08/14/09
Scrum works well as a wrapper around Extreme Programming
39
Crystal – Scrum use a set of “ software process patterns” that have proven effective for projects with tight timelines, changing requirements and business critically.
08/14/09
40
Scrum Principles – Scrum use a set of “ software process patterns” that have proven effective for projects with tight timelines, changing requirements and business critically.
08/14/09
41
Feature Driven Philosophy • Emphasizes collaboration among team members • Manages problem and project complexity using feature-based decomposition followed integration of software increments • Technical communication using verbal, graphical, and textual means • Software quality encouraged by using incremental development, design and code inspections, SQA audits, metric collection, and use of patterns (analysis, design, construction) 08/14/09
42
08/14/09
43
Feature Driven Design - 1 • Develop overall model – contains set of classes depicting business model of application to be built
• Build features list – features extracted from domain model – features are categorized and prioritized – work is broken up into two week chunks
• Plan by feature – features assessed based on priority, effort, technical issues, schedule dependencies 08/14/09
44
Feature Driven Design - 2 • Design by feature – – – – –
classes relevant to feature are chosen class and method prologs are written preliminary design detail developed owner assigned to each class owner responsible for maintaining design document for his or her own work packages
• Build by feature – class owner translates design into source code and performs unit testing – integration performed by chief programmer 08/14/09
45
Crystal
08/14/09
46