CS3500 Software Engineering Agile Software Development (1) Agile software development, proposed in 2001 by the non-profit Agile Alliance, has four basic.

Slides:



Advertisements
Similar presentations
Computer Science Department
Advertisements

BAM! Business Analysis Methodologies. Change-driven or Plan-driven?
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Unit 2. Software Lifecycle
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
The software process A software process is a set of activities and associated results which lead to the production of a software product. This may involve.
SEP1 - 1 Introduction to Software Engineering Processes SWENET SEP1 Module Developed with support from the National Science Foundation.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Alternate Software Development Methodologies
Copyright © 2012 Pearson Education, Inc. Publishing as Prentice Hall B.1.
Agile development By Sam Chamberlain. First a bit of history..
© ThoughtWorks, 2008 Improving Productivity and Quality With Agile Patrick Kua.
Agile
Agile Requirements Methods CSSE 371 Software Requirements and Specification Mark Ardis, Rose-Hulman Institute October 26, 2004.
Software Engineering.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Process Models.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
COMP 350: Object Oriented Analysis and Design Lecture 2
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 4 Slide 1 Software Processes.
An Agile View of Process
Introduction to Agile Methodologies and Concepts Roy Osherove Principal, Team Agile Blog : ISerializable.com.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Chapter 4 Agile Development
The Software Development Process Chapter 2 Best Practices.
By Saravanan Bala. General Report 31 % of Software projects are cancelled 75 % of the software projects are considered failures by the people who initiated.
Software Processes.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
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.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
1 김 수 동 Dept. of Computer Science Soongsil University Tel Fax
Software Engineering Saeed Akhtar The University of Lahore Lecture 5 Originally shared for: mashhoood.webs.com.
1 The Manifesto for Agile Software Development “We are uncovering better ways of developing software by doing it and helping others do it. Through this.
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
An Introduction to Software Engineering
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
Agile Software Development Jeff Sutherland, one of the developers started it In February 2001, 17 Tools: continuous integration, automated or xUnit test,
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
CSPC 464 Fall 2014 Son Nguyen. 1. The Process of Software Architecting, Peter Eeles, Peter Cripss 2. Software Architecture for Developers, Simon Brown.
Copyright © 2009 Pearson Education, Inc. Publishing as Prentice Hall Appendix B Agile Methodologies B.1.
1/2/12 Chapt 2 Iterative Evolutionary Agile. 1/2/12 (Rational) Unified Process A software development process – Flexible and open Other processes – XP.
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)
Agile Development Chapter 10 - part 2. Agile Philosophy  A guiding philosophy and set of guidelines for : developing information systems in an unknown,
Copyright 2015, Robert W. Hasker. Classic Model Gathering Requirements Specification Scenarios Sequences Design Architecture Class, state models Implementation.
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini II. Software Life Cycle.
Project Management Software development models & methodologies
Chapter 3 Agile software development 1 Chapter 3 – Agile Software Development.
Embedded Systems Software Engineering
Chapter 5 Agile Development Moonzoo Kim KAIST
Agile Methods SENG 301.
Appendix B Agile Methodologies
Software & Software Engineering Pertemuan-4 Dosen :Kundang K Juman
Agile Software Development Brian Moseley.
Software Processes.
Introduction to Software Engineering
COMP 350: Object Oriented Analysis and Design Lecture 2
Agile Process: Overview
Chapt 2 Iterative Evolutionary Agile.
Software Processes.
Agile Development – a new way of software development?
Appendix B Agile Methodologies
System Development Methods
Presentation transcript:

CS3500 Software Engineering Agile Software Development (1) Agile software development, proposed in 2001 by the non-profit Agile Alliance, has four basic recommendations:  Individuals and interactions between them have priority over processes and tools  Working software takes precedence over comprehensive documentation  Customer collaboration more important than contract negotiation  Ability to respond to change more important than sticking blindly to a plan

CS3500 Software Engineering Agile Programming (2) Iterations

CS3500 Software Engineering Agile Programming (3)  Agile believes that “great software comes from great people” and that everything else is secondary.  “People” includes all project stakeholders – developers, users, customers (system owners).  Users work closely with developers right through the lifecycle, not just at the beginning of it.  Constant customer feedback makes it unnecessary to have a formal contract  Intense collaboration means that it is not necessary to document those parts of project that serve the purpose of knowledge transfer

CS3500 Software Engineering Agile Programming (4)  Conventional requirements analysis is replaced in agile development by user stories – features & functions that the users would like the system to deliver  Conventional” system design & implementation are replaced by a combination of acceptance testing and test-driven development, and refactoring Tests an app program must pass to be accepted by customer “Intentional programming” – the programmer codes with the future test in mind Improvements to the structure of the system without changing its behaviour Time & money cost of implementing each story? Customer can select which for each iteration

CS3500 Software Engineering Agile Programming (5) Agile development encourages Pair programming Two programmers work together – one codes and the other observes and asks questions. The roles change when one wants to “prove a point” by taking over the keyboard. The pair also switch roles at least once a day. Hoped for outcome? Collective ownership and shared responsibility.

CS3500 Software Engineering Agile Programming (6)  In Agile development, “conventional” integration and deployment is replaced by continuous integration and short cycles.  Agile development does not mean lack of planning. Interim delivery dates are carefully planned.  Each iteration is normally planned to short cycles of 2 weeks - this is a minor delivery for customer.  A major delivery (e.g. all or part of a a product ready to be put into production) is the result of about six 2-week cycles.

CS3500 Software Engineering Agile Programming (7) The main danger in the Agile development model is the risk of ending up with the discredited “build-and-fix” approach in which the software is essentially “hacked” in order to force it to deliver functionality to users. The future will show if agile development can scale up to large and complex systems. Risks? Time & budget over-runs Maintenance problems (documentation lacking, structural defects) Legal liability issues in the event of system “failures” due to responsibilities shared between developers and customers and possible lack of precise & formal contracts.

CS3500 Software Engineering Exploratory Programming (1) Exploratory programming is a method that can be applied to software development when -  the requirements are unclear  the domain area is not well understood, or  the feasability of achieving the objectives is in doubt

CS3500 Software Engineering Exploratory Programming (2) Exploratory programming was popular during the ’80’s and ’90’s using development environments such as provided by Smalltalk -  interactive (program and “see”)  rapid program building & modification  ease of debugging

CS3500 Software Engineering Exploratory Programming (3) Exploratory programming particularly popular with AI applications - the approach of progressively gathering/analysing requirements and developing a formal specification may just not work! AI problem What exactly IS the problem? Other/better solutions? What are the factors? Feasible to solve? ? Let’s discover Solution strategies As we go along! Let’s discover solution strategies as we go along! Algorithms? Data?

CS3500 Software Engineering Exploratory Programming (4) So – the exploratory programming approach is, in practise, the same as the open-ended prototyping model where the product of the final iterations is kept and used as the operational software. The main difference is that we associate exploratory programming with problems Involving AI, and forecasting/prediction. Establish outline requirements Implement Test, evaluate performance Accept- able? Revise, add factors, adjust behaviours, etc No Yes User(s) Deliver Validation going on here!

CS3500 Software Engineering Exploratory Programming (5) I want software which will improve the chances of my winning by betting on horse racing outcomes – MAKE ME A SYSTEM WHICH WILL BEAT THE BOOKIES! OK! Let’s start! In each race bet on the horse that has the best record in the last 5 races!

CS3500 Software Engineering Exploratory Programming (6) Hmmmm Not bad! Better than I was doing last year! Now, let’s include the jockey rating First attempt

CS3500 Software Engineering Exploratory Programming (7) Hmmmm Even better! Wonder if factoring in the handicap will make a difference? Second attempt Make later look at condition of ground, parentage, etc, etc?? 3 rd, 4 th, 5 th, 6 th, etc attempts

Exploratory Programming (8) In exploratory programming, progressively add to and refine the algorithm to improve the forecasting ability of the software. Improve the algorithm by a combination of including more factors in determining outcomes and (b) by adjusting the importance rating (weighting) of factors