Agile Software Development Jeff Sutherland, one of the developers started it In February 2001, 17...

7
Agile Software Development Jeff Sutherland, one of the developers started it In Fe bruary 2001, 17 Tools:continuous integration, automated or xUnit t est, pair programming, test driven development, desi gn patterns, domain-driven design, code refactoring and other techniques. Negative point: Agile methods are sometimes charact erized as being at the opposite end of the spectrum from "plan-driven" or "disciplined" methods. This di stinction may be misleading, as agile methods are no t necessarily "unplanned" or "undisciplined". Agile teams may employ highly disciplined formal methods. A more accurate distinction is that methods exist on a continuum from "adaptive" to "predictive". Agile m ethods lie on the "adaptive" side of this continuum. Positive point: Agile development emphasizes worki ng software as the primary measure of progress. Thi s, combined with the preference for face-to-face co mmunication, produces less written documentation th an other methods. The agile method encourages stake holders to prioritize wants with other iteration ou tcomes based exclusively on business value perceive d at the beginning of the iteration.

Transcript of Agile Software Development Jeff Sutherland, one of the developers started it In February 2001, 17...

Page 1: Agile Software Development Jeff Sutherland, one of the developers started it In February 2001, 17 Tools: continuous integration, automated or xUnit test,

Agile Software Development

Jeff Sutherland, one of the developers started it In February 2001, 17

Tools:continuous integration, automated or xUnit test, pair programming, test driven development, design patterns, domain-driven design, code refactoring and other techniques.

Negative point: Agile methods are sometimes characterized as being at the opposite end of the spectrum from "plan-driven" or "disciplined" methods. This distinction may be misleading, as agile methods are not necessarily "unplanned" or "undisciplined". Agile teams may employ highly disciplined formal methods. A more accurate distinction is that methods exist on a continuum from "adaptive" to "predictive". Agile methods lie on the "adaptive" side of this continuum.

Positive point: Agile development emphasizes working software as the primary measure of progress. This, combined with the preference for face-to-face communication, produces less written documentation than other methods. The agile method encourages stakeholders to prioritize wants with other iteration outcomes based exclusively on business value perceived at the beginning of the iteration.

Page 2: Agile Software Development Jeff Sutherland, one of the developers started it In February 2001, 17 Tools: continuous integration, automated or xUnit test,

Extreme ProgrammingKent Beck created it in October 1999.

Negative Point: A methodology is only as effective as the people involved, Agile does not solve this Often used as a means to bleed money from customers through lack of defining a deliverable Lack of structure and necessary documentation Only works with senior-level developers Incorporates insufficient software design Requires meetings at frequent intervals at enormous expense to customers Requires too much cultural change to adopt Can lead to more difficult contractual negotiations Can be very inefficient—if the requirements for one area of code change through various iterations, the same programming may need to be done several times over. Whereas if a plan were there to be followed, a single area of code is expected to be written once. Impossible to develop realistic estimates of work effort needed to provide a quote, because at the beginning of the project no one knows the entire scope/requirements Can increase the risk of scope creep due to the lack of detailed requirements documentation Agile is feature driven; non-functional quality attributes are hard to be placed as user stories

Page 3: Agile Software Development Jeff Sutherland, one of the developers started it In February 2001, 17 Tools: continuous integration, automated or xUnit test,

Positive Point: Building software systems requires communicating system requirements to the developers of the system.

Extreme Programming encourages starting with the simplest solution.

Within extreme programming, feedback relates to different dimensions of the system development

Several practices embody courage. One is the commandment to always design and code for today and not for tomorrow.

The respect value includes respect for others as well as self-respect

Page 4: Agile Software Development Jeff Sutherland, one of the developers started it In February 2001, 17 Tools: continuous integration, automated or xUnit test,

BDD

Behavior driven development is an agile software development technique that encourages collaboration between developers, QA and non-technical or business participants in a software project.It was originally named in 2003 by Dan North[1] as a response to Test Driven Development, including Acceptance Test or Customer Test Driven Development practices as found in Extreme Programming.

Page 5: Agile Software Development Jeff Sutherland, one of the developers started it In February 2001, 17 Tools: continuous integration, automated or xUnit test,

TDD

Test-driven development is a software development process that relies on the repetition of a very short development cycle: first the developer writes a failing automated test case that defines a desired improvement or new function, then produces code to pass that test and finally refactors the new code to acceptable standards.Kent Beck, who is credited with having developed or 'rediscovered' the technique, stated in 2003 that TDD encourages simple designs and inspires confidence.Test-driven development is related to the test-first programming concepts of extreme programming, begun in 1999, but more recently has created more general interest in its own right.

Page 6: Agile Software Development Jeff Sutherland, one of the developers started it In February 2001, 17 Tools: continuous integration, automated or xUnit test,

RADRapid Application DevelopmentRapid Application Development refers to a type of software development methodology that uses minimal planning in favor of rapid prototyping.

Rapid Application Development is a software development methodology that involves techniques like iterative development and software prototyping. According to Whitten (2004), it is a merger of various structured techniques, especially data-driven Information Engineering, with prototyping techniques to accelerate software systems development

RAD approaches may entail compromises in functionality and performance in exchange for enabling faster development and facilitating application maintenance

Page 7: Agile Software Development Jeff Sutherland, one of the developers started it In February 2001, 17 Tools: continuous integration, automated or xUnit test,