Agile Software Development Options

codeling Posts: 1056 Points: 4440
Posted: Sunday, March 24, 2019 3:31:03 PM

Agile software development is an approach to software development under which requirements and solutions evolve through the collaborative effort of self-organizing and cross-functional teams and their customer(s)/end user(s). It advocates adaptive planning, evolutionary development, empirical knowledge, and continual improvement, and it encourages rapid and flexible response to change.

Agile software development is more than frameworks such as Scrum, Extreme Programming or Feature-Driven Development (FDD).

Agile software development is more than practices such as pair programming, test-driven development, stand-ups, planning sessions and sprints.

Agile software development is an umbrella term for a set of frameworks and practices based on the values and principles expressed in the Manifesto for Agile Software Development and the 12 Principles behind it. When you approach software development in a particular manner, it's generally good to live by these values and principles and use them to help figure out the right things to do given your particular context.

codeling Posts: 1056 Points: 4440
Posted: Sunday, March 24, 2019 3:36:22 PM

During the 1990s, a number of lightweight software development methods evolved in reaction to the prevailing heavyweight methods that critics described as overly regulated, planned, and micro-managed. These included: 

  • rapid application development (RAD), from 1991;
  • the unified process (UP), from 1994
  • dynamic systems development method (DSDM), from 1994; 
  • Scrum, from 1995;
  • Crystal Clear, from 1996
  • extreme programming (XP), from 1996;
  • feature-driven development, from 1997.

Although these all originated before the publication of the Agile Manifesto, they are now collectively referred to as agile software development methods.

codeling Posts: 1056 Points: 4440
Posted: Sunday, March 24, 2019 3:46:47 PM

In the various descriptions of methods, there are are many different terms being used, like methodprocessmodelframework, etc.. which can be redefined using the following definitions:

  • methodology (or method) – one specific collection of principles and/or practices
  • methodology family – a set of alternative methods that exist alongside each other
  • framework – a skeleton (for methods) that must be customized/augmented before use
  • model – a description (for methods) that must be implemented by a method, family or framework

For the software developers among us: A methodology is like a class that can be instantiated for a specific project. A methodology family is like a namespace of different but comparable classes. A methodology framework is like an abstract class that cannot be instantiated itself and must be inherited and extended first. A methodology model is like an interface that is just a description of something that must be implemented by one or more classes.

Scrum is an agile project management methodology. It is a skeleton that includes a small set of practices and predefined roles. Scrum is becoming a de facto standard for managing agile software development projects. One reason for Scrum’s popularity is that it consists of only a few common sense practices that can be applied in many situations. This also means that Scrum by itself is never enough, and that development teams have to shop in other methods (usually XP) for additional practices.

Extreme Programming
Extreme Programming (or XP) is an agile software engineering methodology. It is a set of best practices of which some are taken to an “extreme” level. As with other agile methods, XP regards ongoing changes to requirements as a natural and desirable aspect of software development. In the selection of its practices XP leans towards the daily software engineering activities of developers. XP is often seen as complementary to Scrum, filling most of the holes that Scrum leaves wide open.

Lean Software Development
Lean Software Development is an agile project management framework, translated from lean manufacturing to the software development domain. Lean Software Development is adapted from the Toyota product development system, and it is the embodiment of the “lean” subculture that exists within the agile community (and that has by now become big enough not to be able to call itself lean anymore). It is said that the lean and agile concepts form a perfect match.

Unified Process
The Unified Software Development Process (USDP) is a software engineering framework, created by Ivar Jacobson, Grady Booch and James Rumbaugh. The USDP is an extensible framework that should be customized for specific organizations and projects. It aims to be a complete solution, which means that the full framework is far too big for all but a few projects. However, stripping the framework to its bare essentials is like turning a plane into a bicycle. It might be easier simply to select another more lightweight method.

Rational Unified Process
The Rational Unified Process (RUP) is a software engineering framework, created and maintained by the people at Rational Software (now owned by IBM). It is a commercial product delivered as a more detailed version of the Unified Software Development Process (which is presented as a generic public domain process). This also means that the RUP suffers from the same problem as the USDP, being bloated and too costly to customize for small projects.

Dynamic Systems Development Method
Dynamic Systems Development Method (DSDM) is a agile project management methodology, created and maintained by the UK-based DSDM Consortium, which includes both vendors and experts. It was originally based upon the concepts of Rapid Application Development. DSDM finds itself on the same level as Scrum, meaning that it lists a small number of practices for project management of software development, while leaving the details of the real work (building a product) to be filled in by the development teams.

Feature Driven Development
Feature Driven Development (FDD) is a software engineering methodology. FDD is a model-driven process, distinguishing itself from some other agile methods by explicitly allowing time for the creation of an up-front design. It also applies a refreshingly nonconformist approach to code ownership and several other development practices.

Essential Unified Process
The Essential Unified Process (EssUP) is a software engineering framework, invented by Ivar Jacobson. It was created as an improvement on the RUP and identifies practices (most of them borrowed from the RUP and agile development methods) that you can choose and combine to create your own method. This is considered an improvement, because with the RUP all practices are intertwined and cannot be seen in isolation.

Agile Unified Process
The Agile Unified Process (AUP) is a software engineering methodology, created by Scott Ambler. It presents yet another attempt at simplifying the RUP, describing an easy to understand approach to developing business application software using agile techniques and concepts. Yet it still aims to remain true to the ideas behind the RUP.

Enterprise Unified Process
The Enterprise Unified Process (EUP) is yet another software engineering methodology, created by Scott Ambler. It is an extension of the Rational Unified Process, adding several new phases and disciplines to a process that was already quite big in the first place.

codeling Posts: 1056 Points: 4440
Posted: Sunday, March 24, 2019 4:31:16 PM

Users browsing this topic