SOFTWARE DEVELOPMENT. Process, Models, Methods, Diagrams Software Development Life Cyles. Part - V

Similar documents
EXtreme Programming explained: embrace change by Kent Beck, Addison Wesley, September 1999.

The problem. extreme Programming (XP) Conclusions Resources. Problems in software development. Practices Why XP works Benefits of XP

Agile Manifesto & XP

Rapid software development. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 1

Foundations of Software Engineering. Process: Agile Practices Michael Hilton

Extreme programming XP 5

Introduction to Agile Life Cycles. CSCI 5828: Foundations of Software Engineering Lecture 07 09/13/2016

Tuesday, October 25. Announcements

Chapter 1. What is XP?

Introduction to Extreme Programming

Software Engineering Lecture 5 Agile Software Development

The Product Manager and the Product Development Process. Martin Cagan Silicon Valley Product Group

Extreme programming. Why XP?

Chapter 3 Software Process Model

XP is not hacking. extreme Programming. XP practices. Whole Team. When using XP you write as little documentation as possible.

Lecture 1. Topics covered. Rapid p development and delivery is now often the most important requirement for software systems.

Extreme Programming, an agile software development process

Agile Software Development. Agile Software Development Basics. Principles of the Agile Alliance. Agile Manifesto. Agenda. Agile software development

Software Engineering & Project Management Engr. Abdul-Rahman Mahmood MS, PMP, MCP, QMR(ISO9001:2000)

13. Team evolutionary developement

Learning Objectives. Agile Modeling and. Major Topics. Prototyping. Patched Up Prototype. Agile Modeling, but First. Prototyping

Lecture 8 Agile Software Development

Agile Software Development:

CS 4387/5387 SOFTWARE V&V LECTURE 6 TEST-DRIVEN DEVELOPMENT

User-centered System Design. Agile

Chapter 2 Objectives. Pfleeger and Atlee, Software Engineering: Theory and Practice (edited by B. Cheng) Chapter 2.

Software Engineering Part 2

Agile Methods. Background

Objectives. Rapid software development. Topics covered. Rapid software development. Requirements. Characteristics of RAD processes

An Overview of Software Process

Assistant Professor, Integral University, Lucknow, India. Quality Parameters. Correctness. Efficiency. Portability. Usability.

Are Agile Testers Different?

Extreme Programming (XP)

Agile Development Processes. CSCE Lecture 3-08/31/2017

Introduction. Failure. Why Projects Fail. Agile in an Hour

Collaborative Testing: Why We CAN Have Nice Things. How to bring agile acceptance test driven development to the front of the development cycle

Chapter 4 Document Driven Approach for Agile Methodology

Chapter 3 Agile Software Development

Software Processes. With a focus on Agile/Scrum CPSC310 Software Engineering

Scrum - Introduction. Petri Heiramo. Agile Coach, CST

V Model material adapted from Steve Easterbrook. Waterfall Model material adapted from Steve Easterbrook. Lifecycle of Software Projects

Agile Software Development

Introduction. Failure. Why Projects Fail. Agile in an Hour

Part 1. Software engineering Facts. CSC 4181 Compiler Construction Software Engineering Lectures. What is software engineering? What is software?

Agile Software Construction. This Course. Course information. Course Contents. Daisy: Software Engineering Agile Methods

Agile and Secure Can We Be Both? San Antonio AITP. August 15 th, 2007

Suitability of Extreme Programming and RUP Software Development Methodologies for SOA Applications

Mapping The Best Practices of XP and Project Management: Well defined approach for Project Manager

CS 5704: Software Engineering

Agile Way of Doing Things

Chapter 3 Agile Software Development. Part 1b

Introduction to Agile/Extreme Programming

Introducing Resilient Agile A Better Agile Methodology 5 Easy Steps to Make Agile Development Work Better for You

Aligning Architecture work with Agile Teams

The Role of Scrum Methodologies in the Design and Production Software

Software Engineering Chap.3 - Agile Software Development

Analysis of Software Artifacts

Software Engineering Extreme Programming

Welcome to this IBM podcast, Agile in the. Enterprise: Yes You Can. I'm Kimberly Gist with IBM. If

COPYRIGHTED MATERIAL WHAT S IN THIS CHAPTER?

Introduction to Software Life Cycles and Agile. CSCI 5828: Foundations of Software Engineering Lecture 03 09/02/2014

AGILE DEVELOPMENT AND ITS IMPACT ON PRODUCTIVITY

AGILE SOLUTIONS. Agile Basics

Using the Rational Unified Process for Small Projects: Expanding Upon extreme Programming

FIT2101 Software Engineering Process and Management

Lecture 5. Software Processes CSC 4700 Software Engineering. Software Development Processes. The software process

Foundations of Software Engineering Extreme Programming

Kanban kick- start (v2)

Non-object-oriented design methods. Software Requirements and Design CITS 4401 Lecture 15

Software engineering Facts. CSC Compiler Construction Software Engineering Topics. What is software engineering? What is software?

Processes and Life- Cycles. Kristian Sandahl

2. True or false: In Scrum all the requirements for the project are known prior to the start of development.

Success of Agile Environment in Complex Projects

The Business Value of Agile Transformation

SOFTWARE TESTING PROCESS IN AGILE DEVELOPMENT

Online Algorithms and Competitive Analysis. Spring 2018

Grow your business 2016 Issue 10

Agile at Mid-Scale. Al Shalloway. Introducing FLow for Enterprise Transformations (FLEX)

Processes and Life- Cycles. Kristian Sandahl

Agile Test Plan How to Construct an Agile Test Plan

Tear It Down to Build it up

Agile Development Methods: Philosophy and Practice. CSCE 315 Programming Studio, Fall 2017 Tanzir Ahmed

Safety Meeting. Meeting Leader Instructions. Safety, Teamwork & Our Customer s 1 st Choice

Capacity Management Maturity Assessing and Improving the Effectiveness

Best Practices for Creating an Open Source Policy. Why Do You Need an Open Source Software Policy? The Process of Writing an Open Source Policy

Agile Process Recommendations for a Market-driven Company

Agile. How would you implement agile methodologies and tools for web projects? What do you see as the benefits and challenges to doing this?

Ken Auer RoleModel Software, Inc. Copyright , RoleModel Software, Inc.

Food for thought: Are you prepared for Industry 4.0?

The Systems Development Lifecycle

Food for thought: Are you prepared for Industry 4.0?

Agile Software Development. Lecture 4: Let s Wrap up Agile Fundamentals

SOFTWARE ENGINEERING SOFTWARE-LIFE CYCLE AND PROCESS MODELS. Saulius Ragaišis.

Scrum Test Planning. What goes into a scrum test plan?

Discover Prepaid Jeff Lewis Interview

Dissatisfaction with the overheads involved in software design methods of the 1980s and 1990s led to the creation of agile methods.

Quality in software development. Geir Amsjø

Campaigns - 5 things you need to know. 27 Signs You Need A New Agency. What the AdWords Update Means for Your Paid Search Strategy

Chapter 14: Iteration Planning. It is a capital mistake to theorize before one has data. Sherlock Holmes, Scandal in Bohemia

A summary of the principles from The Speed of Trust Book:

Transcription:

SOFTWARE DEVELOPMENT Process, Models, Methods, Diagrams Software Development Life Cyles Part - V

Extreme Programming (XP) was conceived and developed by Kent Beck to address the specific needs of software development conducted by small teams in the face of vague and changing requirements. Extreme Programming nominates coding as the key activity. The programmer is the heart of XP.

Why Extreme? XP takes commonsense principles and practices to extreme levels. If code reviews are good, we ll review code all the time (pair programming). If testing is good, everybody will test all the time (unit testing). If design is good, we ll make it part of everybody s daily business (refactoring). If integration testing is important, then we ll integrate and test several times a day. If short iterations are good, we will make the iterations really, really short seconds, minutes and hours, not weeks, months and years.

This new lightweight methodology challenges many conventional tenets, including the long-held assumption that the cost of changing a piece of software rises dramatically over the course of time. The cost of change curve for XP is a flat curve, which is achieved by simple design, tests, and an attitude of constant refinement of the design.

Historical Cost of Change Curve - The cost of change rising exponentially over time

XP Cost of Change Curve - The cost of change may NOT rise over time

Fundamentals of XP include: Writing unit tests before programming and keeping all of the tests running at all times. Integrating and testing the whole system--several times a day. Producing all software in pairs, two programmers at one screen. Starting projects with a simple design that constantly evolves to add needed flexibility and remove unneeded complexity. Putting a minimal system into production quickly and growing it in whatever directions prove most valuable.

Why is XP so different? XP doesn't force team members to specialize and become analysts, architects, programmers, testers, and integrators-- every XP programmer participates in all of these critical activities every day. XP doesn't conduct complete up-front analysis and design- -an XP project starts with a quick analysis of the entire system, and XP programmers continue to make analysis and design decisions throughout development. Develop infrastructure and frameworks as you develop your application, not up-front--delivering business value is the heartbeat that drives XP projects. Don't write and maintain implementation documentation-- communication in XP projects occurs face-to-face, or through efficient tests and carefully written code.

OVERVIEW XP - What is involved: The four basic activities of Extreme Programming are coding, testing, listening, and designing. Coding: You code because if you don't code, at the end of the day you haven't done anything. Testing: You test because if you don't test, you don't know when you are done coding Listening: You listen because if you don't listen you don't know what to code or what to test Designing: And you design so you can keep coding and testing and listening indefinitely (good design allows extension of the system with changes in only one place)

There are four basic values in XP: Communication, Simplicity, Feedback, Courage Principles Rapid feedback Assume Simplicity Incremental Changes Embrace Change Quality Work

Planning Game Small releases Metaphor Simple design Testing Refactoring Pair Programming Collective ownership Continuous integration 40-hour week On-site Customer Coding Standards

Business People Scope Priority Composition Release Date Technical People Estimates Consequences Process Detailed Scheduling

Every release must be as small as possible Contain the most valuable business requirements Release has to make sense

Helps understand Basic elements of the project Relationships

The system must communicate everything you want to communicate No duplicate code The system should have the fewest possible classes The system should have the fewest possible methods

Sources Programmers Customers Types of Testing Unit Testing Functional Testing

After getting something to work we refactor Revise and edit Followed by running all the tests We cannot check in our code until: All tests are green. All duplication has been removed The code is as expressive as we can make it

Two programmers collaborate on the same design, algorithm, code or test case Pairing is dynamic Encourages communication, productivity and enhances code quality Pairing is useful for cross-training established employees and for training new employees Pair programming research reveals that: Pairs use no more man-hours than singles Pairs create fewer defects Pairs create fewer lines of code Pairs enjoy their work more

Any team member may add to the code at any time Everybody takes responsibility for the whole system Encourages simplicity: Prevents complex code from entering the system Increases individual responsibility and personal power Reduces project risk: Spreads knowledge of the system around the team

Code is integrated and tested after a few hours Daily builds are for wimps Build, end to end, at every check in Check in frequently Put resources on speeding build time Put resources on speeding test time Reduces project risk: You ll never spend days chasing a bug that was created some time in the last few weeks Provides valuable human benefit during development

Overtime is a symptom of a serious problem on a project Occasionally, programmers may work one week of moderate overtime. Two weeks in a row is out of the question Programmers need to be well rested to work efficiently

A real customer must sit with the team full time The on-site customer enables an XP team to explore business requirements as it needs to and gives direct access to someone who can make key decisions quickly Provides value to the company by contributing to the project, thus reducing project risk. In XP, if the system isn t worth the time of one customer, maybe it s not worth building.

Programmers write all code in accordance with rules adopted voluntarily by the team Make it impossible to tell who wrote what Having no standards slows pair programming and refactoring Constraints No duplicate code System should have the fewest possible classes System should have the fewest possible methods Comments should be minimized

ADVANTAGES Customer focus increase the chance that the software produced will actually meet the needs of the users The focus on small, incremental release decreases the risk on your project: by showing that your approach works and by putting functionality in the hands of your users, enabling them to provide timely feedback regarding your work. Continuous testing and integration helps to increase the quality of your work XP is attractive to programmers who normally are unwilling to adopt a software process, enabling your organization to manage its software efforts better.

DISADVANTAGES XP is geared toward a single project, developed and maintained by a single team. XP is particularly vulnerable to "bad apple" developers who: don't work well with others who think they know it all, and/or who are not willing to share their "superior code XP will not work in an environment where a customer or manager insists on a complete specification or design before they begin programming. XP will not work in an environment where programmers are separated geographically. XP has not been proven to work with systems that have scalability issues (new applications must integrate into existing systems).

XP focuses on people Values team work over power XP works well when there are uncertain or volatile requirements XP is a process not a miracle cure for all software development problems