Agile Software Development. Traditional Software Development 1.Initiation (RFP) 2.Feasibility study Technical – can we build it? Economic – should we.

Slides:



Advertisements
Similar presentations
Basic SDLC Models.
Advertisements

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.
Chapter 2 Modeling the Process and Life Cycle Shari L. Pfleeger
SEP1 - 1 Introduction to Software Engineering Processes SWENET SEP1 Module Developed with support from the National Science Foundation.
More CMM Part Two : Details.
Alternate Software Development Methodologies
Copyright © 2012 Pearson Education, Inc. Publishing as Prentice Hall B.1.
Agile Process Models. Prescriptive models don’t work It is unrealistic to not have changes. Why? The Agile Manifesto: Individuals and interactions over.
Software Life Cycles ECE 417/617: Elements of Software Engineering
Agile
 The Rise of Computer Science ◦ Machine Language (1 st Gen) ◦ Assembly Language (2 nd Gen) ◦ Third Generation Languages (FORTRAN, BASIC, Java, C++, etc.)
Software Engineering.
Capability Maturity Model (CMM) in SW design
Computer Engineering 203 R Smith Process/Plan Model 7/ Development Process Models Development Process Models are different ways to look at the processes.
EXtreme Programming Quick Introduction Daniel Arraes Pereira Eduardo Lourenço Apolinário Ricardo de Oliveira Cavalcanti.
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.
Software Process CS 414 – Software Engineering I Donald J. Bagert Rose-Hulman Institute of Technology December 17, 2002.
Software Development Life Cycle (SDLC)
Software Engineering II Lecture 1 Fakhar Lodhi. Software Engineering - IEEE 1.The application of a systematic, disciplined, quantifiable approach to the.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Chapter 3 – Agile Software Development Lecture 1 1Chapter 3 Agile software development.
Software Development Landscape
IT Systems Analysis & Design
N By: Md Rezaul Huda Reza n
Software Engineering Modern Approaches
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.
IS2210: Systems Analysis and Systems Design and Change Twitter:
Agile Software Development Chapter 3 – Lecture 1 Adrián Susinos.
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
By Saravanan Bala. General Report 31 % of Software projects are cancelled 75 % of the software projects are considered failures by the people who initiated.
Extreme Programming Daniel Baranowski 3/29/06. What is Extreme Programming? An agile development methodology Created by Kent Beck in the mid 1990’s A.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
IS Methodologies. Systems Development Life Cycle - SDLC Planning Planning define the system to be developed define the system to be developed Set the.
SWEN 5130 Requirements Engineering 1 Dr Jim Helm SWEN 5130 Requirements Engineering Requirements Management Under the CMM.
1 김 수 동 Dept. of Computer Science Soongsil University Tel Fax
Chapter 3 Agile Software Development (1/2) Yonsei University 2 nd Semester, 2015 Sanghyun Park.
University of Toronto at Scarborough © Kersti Wain-Bantin CSCC40 other methodologies 1 Method/Process = step-by-step description of the steps involved.
CS3100 Software Project Management Agile Approaches.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
Level 1 Level 1 – Initial: The software process is characterized as ad hoc and occasionally even chaotic. Few processes are defined, and success depends.
Page 1 The Capability Maturity Model (CMM) distinguishes between immature and mature software organizations. Immature software organizations are typically.
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.
Extreme programming (XP) Variant of agile Takes commonsense practices to extreme levels © 2012 by Václav Rajlich1.
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.
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.
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
AGILE METHODS Curtis Cook CS 569 Spring 2003.
CS223: Software Engineering
Appendix B Agile Methodologies
Extreme Programming.
Extreme Programming.
Software Development Life Cycle (SDLC)
Approaches to Systems Development
IT Systems Analysis & Design
روش‌های سريع الانتقال (چابک) توسعه نرم افزار
Chapter 2 Modeling the Process and Life Cycle Shari L. Pfleeger Joanne M. Atlee 4th Edition.
SDLC Model A framework that describes the activities performed at each stage of a software development project.
Software Engineering Lecture 16.
Software Engineering I
Project Lifecycle and IT Product Life Cycle
Appendix B Agile Methodologies
Chapter 5: New and Emerging Process Methodologies
Presentation transcript:

Agile Software Development

Traditional Software Development 1.Initiation (RFP) 2.Feasibility study Technical – can we build it? Economic – should we build it? Operational – if we build it, will it be used? Schedule – will it be ready in time? 3.Requirements definition 4.Specifications 5.Project plan

Traditional Software Development 6. Logical design (external view) 7. Physical design (internal view) 8. Coding (or code acquisition) 9.Testing 10.Maintenance SDLC – Investigate, Analyze, Design, Implement and Maintain

Plan Driven Approach Roots may be traced to engineering concepts Standards and well-defined processes – process discipline Adherence to processes Completeness of documentation Traceability across requirements, design, and code is mandatory

Plan driven Approach Processes are defined, standardized, and incrementally improved Standardization allows for comparisons and repeatability Training, getting information, and estimating are supposedly easier Less need for retraining People can be replaced! Loss of key personnel does not doom a project!

Advantages Easy to understand, easy to use Provides structure to inexperienced staff Milestones are well understood Sets requirements stability Good for management control (plan, staff, track) Aim for predictability and stability Plan extensively at the outset to anticipate changes/variations They try to tame change Emphasis on quality of software and predictability Exemplified by the Capability Maturity Model

Capability Maturity Model A bench-mark for measuring the maturity of an organization’s software process CMM defines 5 levels of process maturity based on certain Key Process Areas (KPA) SEI rates organization on their maturity levels.

LevelFocusKey Process Area 5 – Optimizing (1%)Continual process improvement Defect Prevention, Technology Change Management, Process Change Management 4 – Managed (5%)Product and process quality Quantitative process and software quality management 3 – Defined (10%) Engineering processes and organizational support Organizational process focus, organizational process definition, training program, integrated software management, software product engineering, inter-group coordination, peer reviews 2 – Repeatable (15%)Project management processes Requirements management, software project planning, sw project tracking & oversight, sw subcontract management, 1 – Initial (a little less than 70%)Competent people & heroics - ad hoc Capability Maturity Model

Disadvantages However All requirements must be known upfront Deliverables created for each phase are considered frozen – inhibits flexibility Can give a false impression of progress Does not reflect problem-solving nature of software development – iterations of phases Integration is one big bang at the end Little opportunity for customer to preview the system (until it may be too late)

Challenges Standish Group: > 50% of software projects fail to meet their productivity, cost or functionality goals Changing requirements (25%?) User involvement (13%?) Executive Support (7.5%?) Lack of skills/technical incompetence (7%) Lack of resources (6.4%) Unrealistic expectations (6%?) Unclear objectives (5.3%) Unrealistic deadlines/time-frames (4.3%)

Discipline vs Agility Discipline creates well-organized memories, history, and experience Agility makes use of memory and history to adapt, react, and to be opportunistic What do you think is more important? Why?

Agile Manifesto Value: Individuals and their interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan

Agile Methods Agile software development is a conceptual framework for undertaking software engineering projects. Most agile methods attempt to minimize risk by developing software in short timeboxes, called iterations, which may typically last one to four weeks. Each iteration is like a miniature software project of its own, and includes all of the tasks necessary to release the mini-increment of new functionality. Agile methods emphasize realtime communication, preferably face-to-face, over written documents. Agile methods rely on the close collaboration of activity engaged individuals with ordinary talents and has the ability to flexibly schedule the implementation of functionality, responding to changing business needs.

Examples Extreme Programming ( X P) Adaptive Software Development Crystal Scrum Feature-Driven Development

Extreme programming Practices 1.Planning game – determine scope of the next release by combining business priorities and technical estimates 2.Small releases – put a simple system into production, then release new versions in very short cycle 3.Metaphor – all development is guided by a simple shared story of how the whole system works 4.Simple design – system is designed as simply as possible (extra complexity removed as soon as found) 5.Testing – programmers continuously write unit tests; customers write tests for features 6.Refactoring – programmers continuously restructure the system without changing its behavior to remove duplication and simplify

Extreme programming Practices 7.Pair-programming -- all production code is written with two programmers at one machine 8.Collective ownership – anyone can change any code anywhere in the system at any time. 9.Continuous integration – integrate and build the system many times a day – every time a task is completed hour week – work no more than 40 hours a week as a rule 11.On-site customer – a user is on the team and available full-time to answer questions 12.Coding standards – programmers write all code in accordance with rules emphasizing communication through the code