1 / 32

Chapter 3 An Agile view of process

Explore the principles and benefits of Agile software engineering, focusing on collaboration, rapid delivery, and continuous adaptation to change. Learn about key Agile methodologies and human factors essential for success in Agile teams.

erler
Download Presentation

Chapter 3 An Agile view of process

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 3 • An Agile view of process

  2. Agile Software Engineering Combines • A philosophy • A set of development guidelines • Software engineers and other project stake holders work together on an agile team. • Software product is fast paced and ever changing that’s why agile process is important today. • Framework activities: customer communication planning modeling construction delivery evaluation

  3. Agile Process: Overview • Agile software engineering represents a reasonable compromise to conventional software engineering for certain classes of software • Agile development processes can deliver successful systems quickly • Agile development stresses continuous communication and collaboration among developers and customers

  4. Manifesto for Agile Software Development • Better to value: • Individuals and interactions over processes and tools • Working software over comprehensive documentation • Customer collaboration over contract negotiation • Responding to change over following a plan • While the items on the right are still important the items on the left are more valuable under this philosophy

  5. What is “Agility”? • Rapid and adaptive response to change • Effective communication among all stakeholders • Drawing the customer onto the team • Organizing a team so that it is in control of the work performed Yielding … • Rapid, incremental delivery of software

  6. Agile Teams • are responsive to changes during project development • recognize that project plans must be flexible • eliminates the separation between customers and developers

  7. Agility • encourages team structures that make communication among developers and customers easier • emphasizes importance of rapid delivery of operational software and de-emphasizes importance of intermediate work products • can be applied to any software process as long as the project team is allowed to streamline tasks and conduct planning in way that eliminate non-essential work products

  8. An Agile Process • Is driven by customer descriptions of what is required (scenarios) • Recognizes that plans are short-lived • Develops software iteratively with a heavy emphasis on implementation • Delivers multiple ‘software increments’ • Adapts as changes occur

  9. Human Factors • Traits that need to exist in members of agile development teams: • Competence • Common focus • Collaboration • Decision-making ability • Fuzzy-problem solving ability • Mutual trust and respect • Self-organization

  10. Agile Process Models • Extreme Programming (XP) • Adaptive Software Development (ASD) • Dynamic Systems Development Method (DSDM) • Scrum • Crystal • Feature Driven Development (FDD) • Agile Modeling (AM)

  11. Extreme Programming (XP) - 1 • The most widely used agile process, originally proposed by Kent Beck [BEC99] • XP uses an object-oriented approach as its preferred development paradigm • Defines four (4) framework activities • Planning • Design • Coding • Testing

  12. Extreme Programming (XP) - 2 spike solutionsprototypes simple designCRC cards user storiesvalues acceptance test criteriaiteration plan design planning coding refactoring test pair programming Release unit testcontinuous integration software increment project velocity computed acceptance testing

  13. XP - Planning • Begins with the creation of a set of stories (also called user stories) • Each story is written by the customer and is placed on an index card • The customer assigns a value (i.e. a priority) to the story • Agile team assesses each story and assigns a cost • Stories are grouped to for a deliverable increment • A commitment is made on delivery date • After the first increment “project velocity” is used to help define subsequent delivery dates for other increments

  14. XP - Design • Follows the KIS (keep it simple) principle • Encourage the use of CRC (class-responsibility-collaborator) cards • For difficult design problems, suggests the creation of “spike solutions”—a design prototype • Encourages “refactoring”—an iterative refinement of the internal program design • Design occurs both before and after coding commences

  15. XP - Coding • Recommends the construction of a series of unit tests for each of the stories before coding commences • Encourages “pair programming” • Mechanism for real-time problem solving and real-time quality assurance • Keeps the developers focused on the problem at hand • Needs continuous integration with other portions (stories) of the s/w, which provides a “smoke testing”(issues that lead to rejection of s/w) environment

  16. XP - Testing • Unit tests should be implemented using a framework to make testing automated. This encourages a regression testing strategy. • Integration and validation testing can occur on a daily basis • Acceptance tests, also calledcustomer tests, are specified by the customer and executed to assess customer visible functionality • Acceptance tests are derived from user stories

  17. Adaptive Software Development (ASD) • Self-organization arises when independent agents cooperate to create a solution to a problem that is beyond the capability of any individual agent • Adaptive cycle characteristics • Mission-driven planning • Component-based focus • Uses “time-boxing” • Explicit consideration of risks • Emphasizes collaboration for requirements gathering • Emphasizes “learning”

  18. Joint Application Development

  19. Speculation :  • Speculation Project is initiated. Adaptive cycle planning is conducted. Adaptive cycle planning uses project initiation information e.g The customer’s mission statement , project constraints & basic requirements , to define set of release cycle that will be required for the project • Collaboration :  • Collaboration is a recurring theme in all agile methods Motivated people work together for more talent & creative output. It’s matter of trust People work together must trust one another to. • Learning :  • Learning Software developer often overestimate their own understanding Learning will help to improve level of real understanding ASD teams learn in 3 ways Focus groups Formal technical reviews. PostmortemsCustomer or/and end-users feedback The ASD team becomes introspective

  20. Dynamic Systems Development Method • Provides a framework for building and maintaining systems which meet tight time constraints using incremental prototyping in a controlled environment • Uses Pareto principle (also known as the 80/20 rule, is a theory maintaining that 80 percent of the output from a given situation or system is determined by 20 percent of the input.) • Each increment only delivers enough functionality to move to the next increment

  21. Dynamic Systems Development Method • Guiding principles • Active user involvement • Teams empowered to make decisions • Fitness for business purpose is criterion for deliverable acceptance • Iterative and incremental development needed to converge on accurate business solution • All changes made during development are reversible • Requirements are baselined at a high level • Testing throughout life-cycle

  22. DSDM Life Cycle: • Feasibility Study • Business Study • Functional Model Iteration • Design and Build Iteration • Implementation

  23. SCRUM Definition from rugby football: a scrum is a way to restart the game after an interruption, where the forwards of each side come together in a tight formation and struggle to gain possession of the ball when it is tossed in among them. SCRUM is an agile, lightweight process for managing and controlling software and product development in rapidly changing environments.

  24. SCRUM • Framework Activities: • Requirements • Analysis • Design • Evolution • Delivery Within Each framework activity, work tasks occur within a process pattern called a sprint.

  25. Feature Driven Development • Original Creator: Jeff De Luca • Singapore in late 1997 • FDD is an agile software development process • FDD uses a short-iteration model • FDD combines key advantages of other popular agile approaches along with other industry-recognized best practices • FDD was created to easily scale to much larger projects and teams

  26. What is a Feature? • Definition: small function expressed in client-valued terms • FDD’s form of a customer requirement • Feature naming template: <action> the <result> <by|for|of|to> a(n) <object> • Examples: • Calculate the total of a sale • Add the product to a shopping cart • Validate the password of a user • Authorize the sales transaction of a customer

  27. Features are to be “small” in the sense they will take no more than two weeks to complete • Features that appear to take longer are to be broken up into a set of smaller features • Note: Two weeks is the maximum, most features take far less time (1 - 5 days)

  28. Feature Driven Development Process • Process #1: Develop an Overall Model • Process #2: Build a Features List • Process #3: Plan By Feature • Process #4: Design By Feature • Process #5: Build By Feature

  29. FDD combines many of the best practices of other agile models • FDD was initially created for and is more geared towards large project teams • FDD puts less focus on initial design and quickly gets to the point where the team can deliver new functionality to the project feature by feature

  30. Agile Modeling • Practice-based methodology for effective modeling and documentation of software systems in a light-weight manner • Modeling principles • Model with a purpose • Use multiple models • Travel light (only keep models with long-term value) • Content is more important than representation • Know the models and tools you use to create them • Adapt locally

More Related