Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Samra Siddiqui
 Extreme Programming Practices
 Adaptive Software Development
 Lean Development
•XP
•XP Corner Stones
•XP Practices
3
Principle or Practice Description
Incremental Planning Requirements are recorded on story cards and
stories to be included in a release are determined by
the time available and their relative priority.The
developers break these stories into ‘tasks’
Small Releases The minimal useful set of functionality that provides
business value is developed first. Releases of the
system are frequent and incrementally add
functionality to the first release.
Simple Design Enough design is carried out to meet the current
requirements.
Test-First Development An automated unit test framework is used to write
tests for a new piece of functionality before that
functionality is implemented.
Refactoring All developers are expected to refactor the code as
soon as possible code improvements are found.This
keeps the code simple and maintainable.
Pair Programming Developers work in pairs, checking each other’s
work and providing support for a good job 4
Principle Description
Collective Ownership The pairs of developers work on all areas
of system so that no island of expertise
develop and all the developers own all
the code.
Continuous Integration As soon as work on a task is complete, it
is integrated to make whole system
complete.
Sustainable pace Large amount of overtime is not
considered acceptable as total effect is to
reduce code quality.
On-siteCustomer A representation of end user of the
system should be available full time for
XP team. In XP, customer is a member of
development team.
5
 Adaptive Software Development has evolved from
RAD practices.
 Adaptive Software Development is cyclical like the
Evolutionary model, with the phase names reflecting
the unpredictability in the complex systems.
 The phases in theAdaptive
development life cycle are
 Speculate
 Collaborate
 Learn
 During speculation, the project is initiated and
adaptive cycle planning is conducted.
 Uses project initiation information—the customer’s
mission statement, project constraints (e.g., delivery
dates or user descriptions), and basic requirements to
define the set of release cycles (software increments)
that will be required for the project.
 Speculate encourages exploration and
experimentation.
 Iterations with short cycles are encouraged.
 Complex applications are not built, they evolve.
 Requirement of a large volume of information to be collected,
analyzed, and applied to the problem
 Require the ability to work jointly to produce results, share
knowledge or make decisions.
 Portrays a balance between managing with traditional
management techniques and creating and maintaining the
collaborative environment needed for emergence
8
 Vital for the success of the project. Team has to enhance their knowledge
constantly, using practices such as −
 Technical Reviews (After each iteration)
 People and Process Review (Retrospectives)
 Customer Focus Group
 Learn Cycles are based on the short iterations with design, build and
testing.
 During these iterations the knowledge is gathered by making small
mistakes based on false assumptions and correcting those mistakes, thus
leading to greater experience and eventually mastery in the problem
domain.
9
• Introduction
• Lean Principles
10
 Lean is an Agile methodology which can also be seen as a philosophy
 The core idea is to maximize customer value while minimizing waste. Simply,
lean means creating more value for customers with fewer resources.
 Eliminating waste along entire value streams, instead of at isolated points,
creates processes that need less human effort, less space, less capital, and less
time to make products and services at far less costs and with much fewer
defects, compared with traditional business systems.
11
 EliminatingWaste
 Everything not adding value to the customer is considered to be waste.This includes:
▪ unnecessary code and functionality
▪ delay in the software development process
▪ unclear requirements
▪ insufficient testing, leading to avoidable process repetition
▪ slow internal communication
▪ Defects and lower quality are waste
▪ Partially done coding eventually abandoned during the development process is waste
▪ Extra processes and features not often used by customers are waste.
 So one should point out sources of waste and eliminate them.
12
 Amplify Learning
 Software development is a continuous learning process. The best approach
for improving a software development environment is to amplify learning.
 The accumulation of defects should be prevented by running tests as soon as
the code is written.
 The process of user requirements gathering could be simplified by presenting
screens to the end-users and getting their input.
 Increasing feedback via short feedback sessions with customers helps when
determining the current phase of development and adjusting efforts for future
improvements.
13

More Related Content

Lect7

  • 2.  Extreme Programming Practices  Adaptive Software Development  Lean Development
  • 4. Principle or Practice Description Incremental Planning Requirements are recorded on story cards and stories to be included in a release are determined by the time available and their relative priority.The developers break these stories into ‘tasks’ Small Releases The minimal useful set of functionality that provides business value is developed first. Releases of the system are frequent and incrementally add functionality to the first release. Simple Design Enough design is carried out to meet the current requirements. Test-First Development An automated unit test framework is used to write tests for a new piece of functionality before that functionality is implemented. Refactoring All developers are expected to refactor the code as soon as possible code improvements are found.This keeps the code simple and maintainable. Pair Programming Developers work in pairs, checking each other’s work and providing support for a good job 4
  • 5. Principle Description Collective Ownership The pairs of developers work on all areas of system so that no island of expertise develop and all the developers own all the code. Continuous Integration As soon as work on a task is complete, it is integrated to make whole system complete. Sustainable pace Large amount of overtime is not considered acceptable as total effect is to reduce code quality. On-siteCustomer A representation of end user of the system should be available full time for XP team. In XP, customer is a member of development team. 5
  • 6.  Adaptive Software Development has evolved from RAD practices.  Adaptive Software Development is cyclical like the Evolutionary model, with the phase names reflecting the unpredictability in the complex systems.  The phases in theAdaptive development life cycle are  Speculate  Collaborate  Learn
  • 7.  During speculation, the project is initiated and adaptive cycle planning is conducted.  Uses project initiation information—the customer’s mission statement, project constraints (e.g., delivery dates or user descriptions), and basic requirements to define the set of release cycles (software increments) that will be required for the project.  Speculate encourages exploration and experimentation.  Iterations with short cycles are encouraged.
  • 8.  Complex applications are not built, they evolve.  Requirement of a large volume of information to be collected, analyzed, and applied to the problem  Require the ability to work jointly to produce results, share knowledge or make decisions.  Portrays a balance between managing with traditional management techniques and creating and maintaining the collaborative environment needed for emergence 8
  • 9.  Vital for the success of the project. Team has to enhance their knowledge constantly, using practices such as −  Technical Reviews (After each iteration)  People and Process Review (Retrospectives)  Customer Focus Group  Learn Cycles are based on the short iterations with design, build and testing.  During these iterations the knowledge is gathered by making small mistakes based on false assumptions and correcting those mistakes, thus leading to greater experience and eventually mastery in the problem domain. 9
  • 10. • Introduction • Lean Principles 10
  • 11.  Lean is an Agile methodology which can also be seen as a philosophy  The core idea is to maximize customer value while minimizing waste. Simply, lean means creating more value for customers with fewer resources.  Eliminating waste along entire value streams, instead of at isolated points, creates processes that need less human effort, less space, less capital, and less time to make products and services at far less costs and with much fewer defects, compared with traditional business systems. 11
  • 12.  EliminatingWaste  Everything not adding value to the customer is considered to be waste.This includes: ▪ unnecessary code and functionality ▪ delay in the software development process ▪ unclear requirements ▪ insufficient testing, leading to avoidable process repetition ▪ slow internal communication ▪ Defects and lower quality are waste ▪ Partially done coding eventually abandoned during the development process is waste ▪ Extra processes and features not often used by customers are waste.  So one should point out sources of waste and eliminate them. 12
  • 13.  Amplify Learning  Software development is a continuous learning process. The best approach for improving a software development environment is to amplify learning.  The accumulation of defects should be prevented by running tests as soon as the code is written.  The process of user requirements gathering could be simplified by presenting screens to the end-users and getting their input.  Increasing feedback via short feedback sessions with customers helps when determining the current phase of development and adjusting efforts for future improvements. 13