Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 16, Methodologies Extreme Programming.

Slides:



Advertisements
Similar presentations
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.
Advertisements

Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
CSE 470 : Software Engineering The Software Process.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Alternate Software Development Methodologies
Copyright © 2012 Pearson Education, Inc. Publishing as Prentice Hall B.1.
BTS530: Major Project Planning and Design Iterative Development References: Agile & Iterative Development, by Craig Larman, 2004, Addison Wesley. Agile.
NAUG NAUG Knowledge Evening – th February 2007.
Agile development By Sam Chamberlain. First a bit of history..
Using UML, Patterns, and Java Object-Oriented Software Engineering Royce’s Methodology Chapter 16, Royce’ Methodology.
EXtreme Programming By: Aaron Flocke, Leena Paulose, Geetha Krishna (Team 6)
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Extreme Programming--a “New” Process Model Extreme Programming-- a “New” Process Model.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 3, Project Organization and Communication.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Software Engineering Lecture No:12. Lecture # 7
An Agile View of Process
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Software Engineering Modern Approaches
Chapter 4 Agile Development
Chapter 5 Agile Development Chapter 5 Agile Development Moonzoo Kim KAIST 1.
Chapter 4 An Agile View of Process
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Current Trends in Systems Develpment
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Unified Process versus Extreme Programming. Outline Compare and contrast UP and XP  Processes / Disciplines  Management  Artefacts Risk management.
EXtreme Programming: An Introduction Presentation by: Jon Banta.
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
1 Software Process Models-ii Presented By; Mehwish Shafiq.
Object-oriented Analysis and Design Stages in a Software Project Requirements Writing Analysis Design Implementation System Integration and Testing Maintenance.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
1 김 수 동 Dept. of Computer Science Soongsil University Tel Fax
University of Toronto at Scarborough © Kersti Wain-Bantin CSCC40 other methodologies 1 Method/Process = step-by-step description of the steps involved.
XP Overview Short Life cycle Risky / Dynamic Requirements Increase developer productivity.
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
Object-Oriented Software Engineering using Java, Patterns &UML. Presented by: E.S. Mbokane Department of System Development Faculty of ICT Tshwane University.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 16, Methodologies: Putting it all together.
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Chapter 4 Agile Development Discussion of Agile Development and Agile Process.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
Goals for Presentation Explain the basics of software development methodologies Explain basic XP elements Show the structure of an XP project Give a few.
Lecture 4 – XP and Agile 17/9/15. Plan-driven and agile development Plan-driven development A plan-driven approach to software engineering is based around.
Software Engineering (CSI 321) An Agile View of Process 1.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
Copyright © 2009 Pearson Education, Inc. Publishing as Prentice Hall Appendix B Agile Methodologies B.1.
Agile. Processes Waterfall Traditional With prototyping Sprial Agile Dynamic Systems Development Method (DSDM) Scrum Crystal eXtreme Programming (XP)
Agenda: Overview of Agile testing Difference between Agile and traditional Methodology Agile Development Methodologies Extreme Programming Test Driven.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Agile Development Chapter 10 - part 2. Agile Philosophy  A guiding philosophy and set of guidelines for : developing information systems in an unknown,
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Introduction to Software Engineering Muhammad Nasir Agile Software Development(2)
Review of Definitions Software life cycle: –Set of activities and their relationships to each other to support the development of a software system Software.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Software Development Life Cycle. The Software Life Cycle  Encompasses all activities from initial analysis until end of work  Formal process for software.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 16, Methodologies Examples: XP and Scrum.
Embedded Systems Software Engineering
Chapter 5 Agile Development Moonzoo Kim KAIST
CS223: Software Engineering
Software Development.
CSC 355 – Newer Approaches to System Development Life Cycles & Processes, Spring 2017 March 2017 Dr. Dale Parson.
Software & Software Engineering Pertemuan-4 Dosen :Kundang K Juman
Planning User stories are written.
Waterfall and Agile Quality Techniques
What do you need to know about XP?
Chapter 3 – Agile Software Development
Extreme Programming.
Presentation transcript:

Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 16, Methodologies Extreme Programming

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2 General Outline  A Mountaineering Example  Project Context  Goals, Environment, Methods, Tools, Methodology  Methodology Issues  Planning, Design Reuse, Modeling, Process, Control&Monitoring, Redefinition  Methodology Spectrum  Royce’s Methodology based on the unified process  Extreme Programming  Methodological Heuristics  Summary

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3 Outline of this Lecture  Scenario-based approach vs XP Approach

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4 Extreme Programming

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5 XP “Mantras”  Rapid feedback.  Confronting issues early results in more time for resolving issues. This applies both to client feedback and feedback from testing.  Simplicity.  The design should focus on the current requirements.  Simple designs are easier to understand and change than complex ones.  Incremental change.  One change at the time instead of many concurrent changes.  One change at the time should be integrated with the current baseline.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6 XP Mantras (continued)  Embracing change.  Change is inevitable and frequent in XP projects.  Change is normal and not an exception that needs to be avoided.  Quality work.  Focus on rapid projects where progress is demonstrated frequently.  Each change should be implemented carefully and completely.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7 How much planning in XP?  In XP, planning is driven by requirements and their relative priorities.  Requirements are elicited by writing stories with the client.  Stories are high-level use cases that encompass a set of coherent features.  Developers then decompose each story in terms of development tasks that are needed to realize the features required by the story.  Developers estimate the duration of each task in terms of days.  If a task is planned for more than a couple of weeks, it is further decomposed into smaller tasks.  Team Organization  Production code is written in pairs.  Individual developers may write prototypes for experiments or proof of concepts, but not production code  Moreover, pairs are rotated often to enable a better distribution of knowledge throughout the project.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8 How much planning in XP?  Ideal weeks  Number of weeks estimated by a developer to implement the story if all work time was dedicated for this single purpose.  Fudge Factor:  Factor to reflect overhead activities ( meetings, holidays, sick days... )  Also takes into account uncertainties associated with planning.  Project velocity:  Inverse of ideal weeks  i.e., how many ideal weeks can be accomplished in fixed time.  Heuristic for new teams with no previous experience in XP  Start with a fudge factor of three (i.e., three actual weeks for one ideal week)  Lower this factor as time progresses.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9 How much planning in XP?  Stacks  After estimating the effort needed for each story, the client and the developers meet to assign specific stories to releases, which correspond to versions of the system that will be deployed to the end user.  The user stories are organized into stacks of related functionality.  Prioritization of stacks  The client prioritizes the stacks so that essential requirements can be addressed early and optional requirements last.  Release Plan  Specifies which story will be implemented for which release and when it will be deployed to the end user.  Schedule  Releases are scheduled frequently (e.g., every 1–2 months) to ensure rapid feedback from the end users.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10 How much reuse in XP?  Simple design  Developers are encouraged to select the most simple solution that addresses the user story being currently implemented.  No design reusability  XP differs from conventional methodologies because it does not focus on the system architecture, which would allow such reuse to be planned up front.  XP argues, that the system architecture can be refined and discovered one story at the time, as the prototype evolves towards the complete system.  Focus on Refactoring  Design patterns might be introduced as a result of refactoring, when changes are actually implemented.  Reuse discovery only during implementation

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11 How much modeling in XP?  No explicit analysis/design models  XP goal: Minimize the amount of documentation produced beside the code.  The assumption is that fewer deliverables reduces the amount of work and duplication of issues.  Models are only communicated among participants  The client is seen as a “walking specification”  Source Code is the only external model  The system design is made visible in the source code by using explicit names and by decomposing methods into many simpler ones (each with a descriptive name).  Refactoring is used to improve the source code.  Coding standards are used to help developers communicate using only the source code.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12 System Model Models in OOSE (Scenario-Based) Forward Engineering: Source code is generated from the system model (Ideal: „0 % manual coding“, Component- Based Software Engineering) Reverse Engineering: The system model is reconstructed from existing source code (legacy systems) Use Case Model Source Code class... Refactoring: The source code is transformed according to refactoring rules (program transformation) Object Model Dynamic Model Analysis, System Design Object Design are Model Transformations Scenario - Carl enters the store - He buys a car toy..... Textual scenarios generate external models

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13 Models in XP (Story-Based) Source Code class... Refactoring: The source code is transformed according to refactoring rules (program transformation) Stories generate source code

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14 How much process in XP?  Very simple iterative life cycle model with activities: planning, design, coding, testing and integration.  Planning occurs at the beginning of each iteration.  Design, coding, and testing occur incrementally in rapid succession.  Source code is continuously integrated into the main branch, one contribution at the time.  Unit tests for all integrated units are used for regression testing.  Constraints on these activities:  Test first. Unit tests are written before units. They are written by the developer.  Write tests for each new bug. When defects are discovered, a unit test is created to reproduce the defect. After the defect is repaired all unit tests are run again.  Refactor before extending. To ensure that the design does not decay as new features are added.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15 How much control?  Reduced number of formal meetings  Status is communicated in the team in a daily stand up meeting.  Information sharing only, no discussions to keep the meeting short.  No inspections and no peer reviews  Pair programming is used instead.  All production code is written in pairs, review occurs during coding.  Self-organizing system with a leader:  The Leader communicates the vision of the system.  The leader does not plan, schedule or budget (not a project manager)  The leader establishes an environment based on collaboration, shared information, and mutual trust.  The leader decides when to build consensus and when to dictate.  The leader ensures that a product is shipped.  Makes sure that participants pull the project in the same direction

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16 Summary of the XP Methodology PlanningCollocate the project with the client, Write user stories with the client, Plan frequent small releases (1-2 months) Create schedule with release planning, Kick off an iteration with iteration planning, create programmer pairs, allow rotation of pairs ModelingSelect the simplest design that addresses the current story Use a system metaphor to model difficult concepts Use CRC cards for the initial object identification Write code that adheres to standards Refactor whenever possible ProcessCode unit test first, do not release before all unit tests pass, write a unit test for each uncovered bug, integrate one pair at the time ControlCode is owned collectively, Adjust schedule, Rotate pairs, Start the day with a status stand-up meeting, Run acceptance tests often and publish the results

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17 Backup Slides