Software Development Methodologies

Similar documents
XP Evolution Rachel Davies

Agile Manifesto & XP. Topics. Rapid software development. Agile methods. Chapter ) What is Agile trying to do?

Testing in the Agile World

How Can a Tester Cope With the Fast Paced Iterative/Incremental Process?

XP: Planning, coding and testing. Planning. Release planning. Release Planning. User stories. Release planning Step 1.

Lecture 7: Software Processes. Refresher: Software Always Evolves

XP: Planning, coding and testing. Practice Planning game. Release Planning. User stories. Annika Silvervarg

Test Driven Development. René Barto SES Agile Development - Test Driven Development

Software Development Methodologies

SOFTWARE LIFE-CYCLE MODELS 2.1

Adopting Agile Practices

Software Development Methodologies

Agile Accessibility. Presenters: Ensuring accessibility throughout the Agile development process

Introduction to Extreme Programming

Sample Exam Syllabus

כללי Extreme Programming

Topic 01. Software Engineering, Web Engineering, agile methodologies.

Organizing Database Project Work. (Chapter 4)

Organizing Database Project Work

Introduction to Extreme Programming. Extreme Programming is... Benefits. References: William Wake, Capital One Steve Metsker, Capital One Kent Beck

SE420 - Software Quality Assurance

Creating an Intranet using Lotus Web Content Management. Part 2 Project Planning

The requirements engineering process

Introduction to. and. Scott W. Ambler Source Documents

E xtr B e y CS R m oy 6704, e T a P n a Spring r n o d J g ia n 2002 r g a S m hu m ing

Answers NOT TO BE PRINTED

Scrums effects on software maintainability and usability

Using Storyotypes to Split Bloated XP Stories

Dilbert Scott Adams. CSc 233 Spring 2012

3Lesson 3: Web Project Management Fundamentals Objectives

Test Architect A Key Role defined by Siemens

defined. defined. defined. defined. defined. defined. defined. defined. defined.

INTRODUCTION. 2. User-centred interface design.

Introduction to User Stories. CSCI 5828: Foundations of Software Engineering Lecture 05 09/09/2014

Extreme programming XP 6

Struggling to Integrate Selenium into Your Ice Age Test Management Tools?

Agile Development

SOFTWARE ENGINEERING

FACETs. Technical Report 05/19/2010

Data Governance. Mark Plessinger / Julie Evans December /7/2017

Kanban In a Nutshell. Bob Galen President & Principal Consultant RGCG, LLC

Business Analysis for Practitioners - Requirements Elicitation and Analysis (Domain 3)

SOFTWARE ENGINEERING

Pearson Education 2005 Chapter 9 (Maciaszek - RASD 2/e) 2

Systems Analysis and Design in a Changing World, Fourth Edition

Agile Tester Foundation E-learning Course Outline

QA Best Practices: A training that cultivates skills for delivering quality systems

Software Engineering 2 A practical course in software engineering. Ekkart Kindler

5 Object Oriented Analysis

Chapter 8 Software Testing. Chapter 8 Software testing

SE 2730 Final Review

Change Management Process on Database Level within RUP Framework

The IDN Variant TLD Program: Updated Program Plan 23 August 2012

Bridge Course On Software Testing

CS193D Handout 15 Winter 2005/2006 February 8, 2006 Software Engineering Methodologies and XP. See also: Chapter 6. The Stagewise Model

Shift Left Testing: are you ready? Live Webinar, Sept 19

The software lifecycle and its documents

Agile Software Methods Applied to the Deployment of a Content Management System

BCS Level 3 Certificate in Software Development Context and Methodologies Syllabus QAN 603/1191/5

TESTING TRENDS IN 2016: A SURVEY OF SOFTWARE PROFESSIONALS

The Scaled Agile Framework

STEP Data Governance: At a Glance

Advanced Security Tester Course Outline

Sample Exam. Advanced Test Automation - Engineer

Shift Left, Automation, and Other Smart Strategies for Getting Ahead in QA

02291: System Integration

How technical excellence helps in LeSS adoption. Anton Bevzuk Dodo Pizza Chief Agile Officer

Testing in Agile Software Development

SM 3511 Interface Design. Institutionalizing interface design

Architecture and Design Evolution

Software Development Process Models

Designed in collaboration with Infosys Limited

ORACLE UTILITIES OPOWER PROFESSIONAL SERVICES DESCRIPTIONS

[PDF] Agile Project Management: Creating Innovative Products (Agile Software Development Series)

Software Verification and Validation (VIMMD052) Introduction. Istvan Majzik Budapest University of Technology and Economics

Document Title Ingest Guide for University Electronic Records

SOFTWARE TESTING FOUNDATION COURSE CURRICULUM

How to Build an Appium Continuous Testing Pipeline

CMSC 132: OBJECT-ORIENTED PROGRAMMING II

Best Practices for Collecting User Requirements

Secure Agile How to make secure applications using Agile Methods Thomas Stiehm, CTO

Testing Tools to Support Agile Software Delivery. The Critical Role of Automated Functional Testing in Enterprise Environments

Test Automation Strategies in Continuous Delivery. Nandan Shinde Test Automation Architect (Tech CoE) Cognizant Technology Solutions

Testing in an Agile Environment Understanding Testing role and techniques in an Agile development environment. Just enough, just in time!

1: Software Development and.net. An approach to building software

Missoula County Public Schools Job Description

BEHAVIOR DRIVEN DEVELOPMENT BDD GUIDE TO AGILE PRACTICES. Director, Strategic Solutions

Software Quality in a Modern Development Team. Presented by Timothy Bauguess and Marty Lewis

PREPARE FOR TAKE OFF. Accelerate your organisation s journey to the Cloud.

Test Automation. Fundamentals. Mikó Szilárd

UNIT-I Introduction of Object Oriented Modeling

Black Box Testing. EEC 521: Software Engineering. Specification-Based Testing. No Source Code. Software Testing

SOFTWARE LIFE-CYCLE PROCESSES From Waterfall to Extreme Programming

Analysis of the Test Driven Development by Example

Lecture 15 Software Testing

Systems Analysis & Design

DSDM Agile Professional Candidate Guidelines October I do it right

Chapter 9 Quality and Change Management

University of Texas Arlington Data Governance Program Charter

System Development Life Cycle Methods/Approaches/Models

Transcription:

Software Development Methodologies Lecturer: Raman Ramsin Lecture 8 Agile Methodologies: XP 1

extreme Programming (XP) Developed by Beck in 1996. The first authentic XP book appeared in 1999, with a revised and refined version appearing in 2004. Although some of the methodologies that are nowadays dubbed as agile are older than XP, it was the advent of XP that sparked the agile movement. XP considers itself a software engineering discipline rather than a methodology, yet it does incorporate a process. 2

XP: Process 1. Exploration: 1. developing an initial list of high-level requirements 2. determining the overall design of the system through prototyping 2. Planning (Release Planning): 1. estimating the time needed for the implementation of each requirement 2. prioritizing the requirements 3. determining a schedule and a minimal, select set of requirements for the first release of the system 3. Iterations to First Release: iterative development of the first release of the system using the specific rules and practices prescribed by XP; iterations are typically between 1 to 3 weeks in duration. 4. Productionizing: system-wide verification and validation of the first release, and its deployment into the user production environment 5. Maintenance: implementing the remaining requirements (including any resulting from post-deployment maintenance needs) into the running system by iterating phases 2, 3 and 4. 6. Death: closing the project and conducting post-mortem review and documentation 3

XP: Process 4 [Abrahamsson et al. 2002]

XP: Process Development Engine The activities performed in the second, third and fourth phases of the process constitute the development engine of the XP methodology. Each execution (run) of these phases produces a new release. A first release of the system is initially produced and deployed, which is then incrementally improved and complemented during the maintenance phase through further iterations (runs) of the development engine. 5

XP: Process 6 [Ambler 2002]

XP Process: Exploration 1. Formation of the development team: the team typically consists of A coach acting as monitor and facilitator, a number of programmers, and a business representative (customer) participating in project activities and supplying the team with information and feedback [Optional] A number of analysts to help elicit the requirements, a number of testers helping define acceptance tests, and a resource manager 2. Development of the initial set of User Stories: A User Story defines a system feature as seen from the customer s point of view. is written by the customer in his own terminology on index cards. Is nothing but a short description (around three sentences) of a certain chunk of functionality needed to be delivered by the system. 3. Creation of the system Metaphor: A prototype (called Spike or Spike Solution) is developed, exploring potential architectures for the system. The prototype helps the team define the system Metaphor, which is typically a very simple, high-level description of how the system works. It usually takes the form of a description-by-analogy in order to be easily understandable to all the team members. Though informal, the metaphor gives an extremely useful idea of the overall architecture of the system without setting too many constraints. 7

XP Process: Development Engine Top-Level Activities 8 [Wells 2003]

XP Process: Planning (Release Planning) 1. Estimation of development time: 1. Developers estimate the time needed to develop each of the user stories as conforming to the system metaphor, and write the estimates down on the user-story index cards. 2. User stories that need more than 3 weeks to develop are broken down into smaller ones, and user stories taking less than 1 week are merged. 3. In cases where estimates are not reliable enough, spike solutions are developed in order to improve the estimates. 2. Prioritization of user stories: the customer prioritizes the user stories according to their business value. 3. Planning the first release: 1. the team selects a minimal, most valuable set of user stories for implementation in the first release, and agrees on the release date. 2. The team also decides on the iteration duration (between 1 to 3 weeks), which once determined, will be the same for all iterations. 9

XP Process: Iterations to First Release 1. Iteration planning: at the start of each iteration, a planning meeting is held, performing: 1. Selection of user stories to implement, and failed acceptance tests to rectify 2. Identification of programming tasks 3. Task sign-up and estimation 2. Development: the development activity in each iteration is itself an iterative process with daily cycles consisting of the following activities: 1. Holding daily stand up meetings 2. Analysis, design, coding, testing and integration in a Collective-Code-Ownership environment 10

XP Process: Development Engine Iteration Activities 11 [Wells 2003]

XP Process: Iterations to First Release Iteration Planning 1. Selection of user stories to implement and failed acceptance tests to rectify: based on the release plan, the customer selects user stories (according to their business value) for development in the coming iteration. Failed acceptance tests encountered during previous iterations are also considered for inclusion in the list of jobs to be attended to. Special attention is given to the experience gained during previous iterations as to the team's development speed (Project Velocity), to ensure that the selected jobs can be completed in the iteration. 2. Identification of programming tasks: the developers on the team break down the selected user stories and debugging jobs into programming tasks. Tasks are then written down on the user-story index cards. 3. Task sign-up and estimation: programmers sign-up to do the tasks. Each developer estimates the time needed for completion of each of the tasks undertaken, making sure that all of them can be developed in the time available. Each task should take between 1 to 3 days to complete. 12

XP Process: Iterations to First Release - Development 1. Holding daily stand up meetings: A short stand up meeting is held every morning in order to communicate problems and solutions, and help the team keep on track. 2. Analysis, design, coding, testing and integration in a Collective-Code- Ownership environment: Collective Code Ownership means that all the code developed is put in a shared code repository, and any developer can change his or others code in order to add functionality, fix bugs, or refactor. test-driven development to make collective code ownership possible: the developers have to create unit tests for their code as they develop it. All the code in the code repository includes unit tests, forming a suite of tests that is automatically applied by test tools whenever code is added or changed. The test suite safeguards the repository from malignant change: for code to be allowed integration into the repository, it must pass the entire test suite. Black-box acceptance tests based on the user stories are defined by the customer and developed by the team during the iteration, and are frequently applied (by automated tools) to the code. 13

XP Process: Development Engine Iteration Development Activities 14 [Wells 2003]

XP Process: Development Engine Iteration Development Activities Activities in the Collective-Code-Ownership Environment Programmers work in pairs, each pair on one machine (a practice called Pair Programming). Programmers use CRC cards in order to come up with the simplest design possible for the programming task in hand. Refactoring is constantly done in order to simplify the code and eliminate redundancy. A common coding standard is enforced in order to promote code legibility, which in turn enhances communication among developers. Developers are moved around so that they acquire knowledge about all parts of the system; this will reduce the cost of changes made to the team structure and will help relieve overloading and coding bottlenecks. Builds are frequent in XP, and continuous integration is encouraged. Developers are to work at a sustainable pace, with forty hours a week as the norm; nobody is allowed to work overtime for two weeks in a row. 15

XP Process: Development Engine Iteration Development Activities Activities in the Collective-Code-Ownership Environment 16 [Wells 2003]

XP Process: Productionizing 1. System-wide verification and validation: The release is tested to make sure of the user s approval and the system s readiness for deployment. Acceptance tests, mostly developed during the iterations-to-first-release phase, are used here as regression tests. Defects found are resolved through iterations of the main development cycle. 2. Deployment into the production environment: the release is introduced into the user environment. Involves the usual integration, conversion, tuning, training, and documentation activities typical of deployment efforts. Any tuning and stabilization action on the release itself is regarded as a development activity and is conducted through short iterations (typically weekly) of the development cycle. 17

XP Process: Maintenance The maintenance phase is when the remaining user stories are implemented into the system and the system is maintained as such. Encompasses the same activities as those in the phases of the development engine; i.e. Planning, Iterations to Release, and Productionizing. Still dependent on the evolving set of user stories and the system metaphor. The small releases produced during maintenance are integrated into an already running and operational system. Requirements arising as a result of maintenance are treated as ordinary requirements (expressed as user stories) and implemented through the same iterative development process. The maintenance phase continues until either there are no more user-stories to develop and none are anticipated in the future, or the system in no way lends itself to necessary evolution any more. 18

XP Process: Death The project is declared dead when evolution is either unnecessary or impossible. The main activities performed in this phase of the XP process are: 1. Declaring the project as closed: this involves wrapping up the usual legal, financial and social loose ends. 2. Post-mortem documentation and review: preparing a short document (no longer than ten pages) providing a brief tour of the system, and writing a review report summarizing the lessons learned from the project. 19

XP: Strengths and Weaknesses Strengths Iterative-incremental process Based on system functionality captured in User Stories The process is tuned according to feedback during its execution Traceability to requirements through the use of user stories throughout the process as the basis for tasks and tests Based on system architecture (Metaphor) identified through prototyping Active user involvement Test-based development 20

XP: Strengths and Weaknesses Strengths (Contd.) Stringent standards enforced on coding Early and frequent releases Requirements are allowed to evolve over time Iterative development engine governed by careful planning and reviewing Explicit coverage of maintenance and project retirement (Death) phases; maintenance in fact comprises the bulk of the development effort Continuous validation Continuous integration Refactoring exercised in order to acquire the simplest code possible 21

XP: Strengths and Weaknesses Weaknesses Process is rather vague: the process commonly introduced as the XP Process is just a typical example. More intended as a set of principles and practices rather than a methodology Limited evidence of scalability Seamlessness is not addressed: development is more or less a jump from user stories to code, and the little design that is done (if at all) does not have to conform to any standard. 22

XP: Strengths and Weaknesses Weaknesses (Contd.) Requires the use of automated tools and enforcement of discipline for Collective-Code-Ownership to be practicable. No clear-cut design effort Model-phobic Except for CRC cards, models are not prescribed, leaving it to the individual developer to decide what model is useful to him. Lack of formalism 23

References Abrahamsson, P., Salo, O., Ronkainen, J., Warsta, J., Agile Software Development Methods: Review and Analysis. VTT Publications, 2002. Wells, D., Extreme programming: A gentle introduction. Published on the Web at: http://www.extremeprogramming.org, 2013, Last visited in November 2017. Beck, K., and Andres, C., Extreme Programming Explained: Embrace Change, 2nd ed. Addison-Wesley, 2004. Ambler, S. W., AM Throughout the XP Lifecycle, Published on the Web at: http://www.agilemodeling.com/essays/agilemodelingxplifecycle.htm, 2002, Last visited in November 2017. 24