Project Methodologies

Slides:



Advertisements
Similar presentations
Agile Software Development کاری از : مهدی هوشان استاد راهنما : استاد آدابی.
Advertisements

Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
COPYRIGHT © 2012 ALCATEL-LUCENT. ALL RIGHTS RESERVED. 1 Agile documentation development methodology Giby Panicker and Judith Benjamin 1-Dec-2012.
SOFTWARE PROCESS MODELS. Software Process Models  Process model (Life-cycle model) -steps through which the product progresses Requirements phase Specification.
PROC-1 3. Software Process. PROC-2 What’s a process? Set of activities in creating software It involves creativity –hard to automate –Requires human judgment.
Waterfall Model, RUP, Agile Methodologies & Extreme Programming
Software Development Methodologies 1. A methodology is: A collection of procedures, techniques, principles, and tools that help developers build a computer.
©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.
CS 325: Software Engineering January 15, 2015 Software Process & Methodology Prototyping Process Model Evolutionary Process Model Spiral Process Model.
Software Life Cycles ECE 417/617: Elements of Software Engineering
Software Engineering.
Permeation of RUP and XP on Small and Middle-Size Projects KREŠIMIR FERTALJ University of Zagreb Faculty of Electrical Engineering and Computing Department.
Extreme Programming Mark Steverson. What Is Extreme Programming? ● Extreme Programming (XP) is a lightweight, agile methodology developed by Kent Beck.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Iterative development and The Unified process
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Chapter 3 – Agile Software Development Lecture 1 1Chapter 3 Agile software development.
The Rational Unified Process
Chapter 5 Software Process Models. Problems with “Traditional” Processes 1.Focused on and oriented towards “large projects” and lengthy development time.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Current Trends in Systems Develpment
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.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
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.
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.
Chapter 3 Agile Software Development (1/2) Yonsei University 2 nd Semester, 2015 Sanghyun Park.
Rational Unified Process Mr Hisham AlKhawar. Iterative versus Waterfall  We need to use a life cycle model in order to approach developing a system easily,
University of Toronto at Scarborough © Kersti Wain-Bantin CSCC40 other methodologies 1 Method/Process = step-by-step description of the steps involved.
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
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.
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 Methods Presentation By: Jason Abbett. Definition A process to rapidly develop software Many kinds of agile methods but few are practiced.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
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.
Intelligence and Information Systems 1 3/17/2004 © 2004 Raytheon Company USC/CSE Executive Workshop on Agile Experiences March 17, 2004 A Raytheon Agile.
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.
RUP RATIONAL UNIFIED PROCESS Behnam Akbari 06 Oct
Agile Software Development 1. Topics covered Agile methods Plan-driven and agile development Extreme programming 2.
RATIONAL UNIFIED PROCESS PROCESS FRAMEWORK OVERVIEW.
Industrial Software Development Process Bashar Ahmad RISC Software GmbH.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Project Methodologies AD643 From a lecture by Qutaibah Malluhi, Qatar University.
Software Development Process Models (II) Agile Methodologies Extreme Programming.
Project Management Software development models & methodologies
Chapter 3 Agile software development 1 Chapter 3 – Agile Software Development.
AGILE METHODS Curtis Cook CS 569 Spring 2003.
Embedded Systems Software Engineering
CS223: Software Engineering
Software Development.
Process 4 Hours.
CompSci 280 S Introduction to Software Development
CSC 355 – Newer Approaches to System Development Life Cycles & Processes, Spring 2017 March 2017 Dr. Dale Parson.
Appendix B Agile Methodologies
Introduction to Software Engineering
Chapter 2 – Software Processes
Chapter 3 – Agile Software Development
Appendix B Agile Methodologies
Extreme Programming.
Presentation transcript:

Project Methodologies AD642

Agenda Waterfall Lifecycle Model RUP Lifecycle Model Agile Software Development Methodologies Extreme Programming

Waterfall Model Activity-centered view of the software lifecycle Define detailed upfront requirements Come up with the design that will support the required behavior. Implement the required system. Integrate and test the components. Activities are performed in sequence Described in 1970 by Royce.

Waterfall Model Illustrated Requirements Process System Allocation Concept Exploration Design Implementation Installation Operation & Support Process Verification & Validation

About Waterfall Lifecycle Managers love waterfall models: Nice milestones No need to look back (linear system), one activity at a time Easy to check progress : 90% coded, 20% tested Developers hate the waterfall model Requirements are a moving target They have to come up with estimates based on no data.

Problems with the Waterfall (I) Complete up-front specifications with sign-off Research showed that 45% of features created from early specifications were never used—with an additional 19% rarely used [Johnson02]. Over-engineering, a study of 400 projects spanning 15 years showed that less than 5% of the code was actually useful or used [CLW01].

Problems with the Waterfall (II) Late Integration and Test The waterfall pushes this high-risk and difficult issues toward the end of the project. Waterfall is called fail-late lifecycle. Reliable Up-front Estimates and Schedules Can not be done when the full requirements and risks are not reliably known at the start, and high rates of change are the norm. “Plan the work, work the plan” values Limited value for high change, novel, innovative domains such as software development.

Iterative and Incremental Lifecycle Models 1960’s: ad-hoc code-and-fix 1970’s: Waterfall was thought to be the ideal approach to software development In practice, waterfall is only applicable to the most straightforward projects. 1980’s: Iterative and incremental lifecycle models The lifecycle is composed of a sequence of iterations. Each iteration is a mini-project composed of activities such as requirements analysis, design, programming and testing. An iteration ends with an iteration release, a stable, integrated and tested partially complete system. 1990’s: Rational Unified Process Popular example of Iterative and incremental lifecycle A product and a process based on object orientation and UML

RUP: Rational Unified Process Derived from the work on the UML at Rational Booch, Jacobson, and Rumbaugh (1999) 4 Phases: Inception Elaboration Construction Transition Several Iterations in each phase For each iteration, several parallel activities (workflows)

(source: www.rational.com)

RUP Dimensions First Dimension: A dynamic perspective that shows phases and iterations over time Second Dimension: static perspective that shows process activities (workflows)

RUP Dynamic Perspective Phases can be enacted incrementally Each phase is enacted In an iterative way

RUP Phases Inception Elaboration Construction Transition Establish the business case for the system Identify actors and initial use cases Initial planning, estimation and schedule Elaboration Understand problem domain Requirements model (use case model) Overall system architecture Construction System design, object design, programming and testing Develop a working software system ready to deliver to users Transition Deploy the system in its operating environment.

Static workflows

RUP Illustrated Time Workflows

RUP Good Practice Develop software iteratively Manage requirements Plan increments based on customer priorities Manage requirements Explicitly document requirements and track requirement changes Analyze impact of changes before accepting them Use component-based architectures Visually model software (UML) Control changes to software Manage changes to software using a change management system and configuration management procedures and tools

Agile Methods In the 1908os and early 1990s there was a widespread view that the best way to achieve better software was through careful project planning formalised quality assurance the use of analysis and deign methods supported by CASE tools controlled and rigorous software development

Agile Methods (Cont.) This view came from software engineers who were developing large, long-lived software systems Teams in different companies and geographically distributed When heavy weight, plan-based development approaches were applied to small and medium size systems The overhead sometimes dominated the software development process Consider the cost of changing requirements

Agile Methods (Cont.) More time was spent on how the system should be developed than on program development and testing In the 1990s new agile methods were formulated which relied on an iterative & incremental approach allowed for changing requirements Rapid software delivery to customers

General Principles of Agile Methodologies Customer close involvement Incremental delivery A focus on people, not the process Team members develop their own ways of working Embrace requirements and change Maintain simplicity

Examples of Agile Methodologies Extreme programming (covered here) Crystal Adaptive Software Development Scrum DSDM Best suited for small and medium sized projects

Light-weight Methodologies Heavy-weight methodologies: (based on waterfall or RUP) Up-front analysis & design documentation Strict phases Large teams, long iteration cycles, long release times Feature intensive Light-weight (Agile) methodologies: (E.g., XP) No up-front analysis & design documentation Test-first coding Small teams, short iteration cycles, short release times Change intensive

Software Development Processes Waterfall Iterative Extreme Programming (XP) Analysis Design Code Design

XP Highlights Probably the best known and most widely used agile method Founded on four values: communication, simplicity, feedback, and courage (courage in changing requirements and code). Programmers work in pairs Develop tests for each task before writing code New versions of the software may be created several times a day Increments are delivered to customers roughly every two weeks

XP Highlights (Cont.) All scenarios and requirements are represented as user stories Customer is involved in specifying and prioritising requirements The customer is part of the development team The software is continually refactored

User Stories Written by customer Used instead of large requirements documents Similar to scenarios but not limited to features visible to the outside world. Used for release planning Used for the creation of acceptance test Typically much less detailed than scenarios and use cases Typically takes 1-3 weeks to implement

XP Release Cycle Select user stories for this release Breakdown stories into tasks Plan release Develop/integrate/ test software Release software Evaluate System

12 XP Practices Pair-programming On-site Customer Test-first Iterative Development Refactoring Simple Design Planning Game Coding Standards Continuous Integration Metaphor 40-Hour Rule Collective Code Ownership

Pair Programming All code to be included in a production release is created by two people working together at a single computer. One person types and codes, the other one observes and constantly monitors the code. The observer is doing real-time code review, and perhaps thinking more strategically than the person typing. Pairs dynamically swap rolls Active communication, sharing expertise

On-Site Customer Programmers and customers work together in the same team (same room). Immediate check, feedback, and clarification by customer through face-to-face communication. Customer performs acceptance test of features as they are completed. Customer satisfaction: early and frequent delivery of software features.

Test-First Development Develop automated tests before implementation Test-then-code instead of code-then-test Test-driven coding: constant validation and verification Constant testing: unit, integration, acceptance (by onsite customer) Automated testing (JUnit framework) Open source framework for implementing unit tests in Java Comes with Eclipse

Iterative Development Customers choose the story cards for next iteration (next features to be implemented) depending on their business priorities. Short iterations, release frequency, customer prioritized short cycles Iteration plan, release plan from planning games Small complete and continuous releases Frequent delivery of working software progressively acquiring new features

Refactoring Improves code quality Extreme re-factoring for continued improvement of design Constantly simplifies code Changing existing program to make adding new features simple Re-factoring after adding a new feature to clean up and organize the effect of the change Re-factor as often as needed

Simple Design Design for now, not for the future Extreme simplicity in design: avoid shortcuts, smart hard-to-understand code No duplicate logic (no parallel class hierarchies) Fewest possible classes and methods Only features in the current iteration Good design (re-factored) and technical excellence

Continuous Integration Integration and integration testing of tasks frequently (every few hours, at least once a day) Integration on a machine dedicated for integration Integration testing before completing current integration session Continuous code review: integration testing and code review of completed code

Metaphor Use of best practices: design patterns, naming, defining Easy to use system of names: consistent naming of classes and methods

40-Hour Rule Best individual effort without overwork and undue pressure Uniform individual velocity: sustainable development pace Fresh and eager team when starting in the morning Satisfied and not tired when finishing the day in the evening 40 hr may vary (35 - 45) Discourage overtime. No two successive days of over-time. Vacation and weekend work discouraged for best developer contribution Highly motivated and fully fit developing members

Collective Code Ownership Any pair programmers may re-factor any part of the code Faster development by eliminating the bottleneck associated with change requests in an individual code ownership model Pair programming, adherence to the code standard, and continuous integration lower the danger of this free model of modifying the code. No individual (or pair) responsibility or blame after integration

XP Achieves Timing: Delivery On Time Releasing: Frequent Releases (with Business Prioritized Features) Quality: Simple Code--easy to test and modify Reliability: Constantly Tested, Pair-programmed & Integrated Features Flexibility: Rapid Response to Feedback, Change, Re-scheduling Low Initial Cost: Flattened Change Cost Curve, No Future-safe Cost Communication: Face-to-face, On-site Customer, Pair-programming Team-work: Constant Team Integration, Team Spirit & Esteem Iterating: Micro-iterations, Small Analyze/Test/Design/Code Episodes People-Centered: Stand-up Meetings, Planning Games, Individual Velocities

Which Methodology to Use? Each has advantages and disadvantages Small projects tend to fit well into iterative processes Large projects often need more up-front planning and a waterfall approach Outsourcing, market constraints, corporate culture all come into play