Loading...
 

Agile Software Development

Agile software development is a group of software development methods in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development, early delivery, continuous improvement, and encourages rapid and flexible response to change1

Manifesto for Agile Software Development - We are uncovering better ways of developing software by doing it and helping others do it.2

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan
Principles behind the Agile Manifesto - We follow these principles...
Agile Software Development: A gentle introduction Agile also means a fundamental change in how we manage our projects. If working software is what you will deliver then measure your progress by how much you have right now. We will change our management style to be based on getting working software done a little at a time. The documents we used to create as project milestones may still be useful, just not as a measure of progress.
The Seven Core Practices of Agile Work These practices form a solid starting point for any person, team or community that wishes to follow the Middle Way to Excellence.

  • Self-Organizing Team
  • Deliver Frequently
  • Plan to Learn
  • Communicate Powerfully
  • Test Everything
  • Measure Value
  • Clear the Path

References

Practices

  • The first stage in an agile project is defining your Product Vision. The product vision statement is an elevator pitch — a quick summary — to communicate how your product supports the company's or organization's strategies. The vision statement must articulate the goals for the product.3
  • User Stories / User Story are part of an agile approach that helps shift the focus from writing about requirements to talking about them. All agile user stories include a written sentence or two and, more importantly, a series of conversations about the desired functionality.4
  • In software engineering, Software Configuration Management (SCM) is the task of tracking and controlling changes in the software, part of the larger cross-discipline field of configuration management.5
  • Unit Testing is a software testing method by which individual units of source code, sets of one or more computer program modules together with associated control data, usage procedures, and operating procedures are tested to determine if they are fit for use.6
  • Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. This article is a quick overview of Continuous Integration summarizing the technique and its current usage.7
  • Iterative and Incremental Development is any combination of both iterative design or iterative method and incremental build model for development.8

Agile Processes

The various agile Scrum methodologies share much of the same philosophy, as well as many of the same characteristics and practices. But from an implementation standpoint, each has its own recipe of practices, terminology, and tactics. Here we have summarized a few of the main agile software development methodology contenders:9

The Agile Software Development portal provides resources about agile software development approaches like Extreme Programming (XP), Scrum, Test Driven Development (TDD), Feature Driven Development (FDD), Behavior Driven Development (BDD), DSDM, Lean Software, Kanban. It discusses also agile practices: refactoring, pair programming, continuous integration, user stories, iterative development, product owner, sprint, product backlog, daily standup meeting, retrospectives, continuous delivery.10

  • Scrum is an iterative and incremental agile software development framework for managing software projects and product or application development. Its focus is on "a flexible, holistic product development strategy where a development team works as a unit to reach a common goal" as opposed to a "traditional, sequential approach". Scrum enables the creation of self-organizing teams by encouraging co-location of all team members, and verbal communication between all team members and disciplines in the project.11
  • Extreme Programming (XP) is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development,it advocates frequent "releases" in short development cycles (timeboxing), which is intended to improve productivity and introduce checkpoints where new customer requirements can be adopted.12
  • Lean Software Development is a translation of lean manufacturing and lean IT principles and practices to the software development domain. Adapted from the Toyota Production System, a pro-lean subculture is emerging from within the Agile community.13
  • Test Driven Development (TDD) is a software development process that relies on the repetition of a very short development cycle: first the developer writes an (initially failing) automated test case that defines a desired improvement or new function, then produces the minimum amount of 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.14

Requirements

Requirements are capabilities and conditions to which the system - and more broadly, the project - must conform. A prime challenge of requirements work is to find, communicate, and remember (that usually means record) what is really needed, in a form that clearly speaks to the client and development team members. 15

FURPS

The FURPS+ acronym, devised by Robert Grady of HP, provides a bit more meat around what we mean by non-functional stories, and also provides a good way to categorize such needs. The breakdown here suggests some representative questions around potential needs.16

  • Functionality - What the customer wants! Note that this includes security-related needs.
  • Usability - How effective is the product from the standpoint of the person who must use it? Is it aesthetically acceptable? Is the documentation accurate and complete?
  • Reliability - What is the maximum acceptable system downtime? Are failures predictable? Can we demonstrate the accuracy of results? How is the system recovered?
  • Performance - How fast must it be? What's the maximum response time? What's the throughput? What's the memory consumption?
  • Supportability - Is it testable, extensible, serviceable, installable, and configurable? Can it be monitored?

Related Topics

1 Agile software development. (2015, June 29). In Wikipedia, The Free Encyclopedia. Retrieved 05:26, June 30, 2015, from https://en.wikipedia.org/w/index.php?title=Agile_software_development&oldid=669176431
5 Software configuration management. (2013, August 29). In Wikipedia, The Free Encyclopedia. Retrieved 05:59, October 12, 2013, from http://en.wikipedia.org/w/index.php?title=Software_configuration_management&oldid=570701229
6 Unit testing. (2014, May 22). In Wikipedia, The Free Encyclopedia. Retrieved 00:49, June 13, 2014, from http://en.wikipedia.org/w/index.php?title=Unit_testing&oldid=609698259
8 Iterative and incremental development. (2013, September 30). In Wikipedia, The Free Encyclopedia. Retrieved 06:56, October 12, 2013, from http://en.wikipedia.org/w/index.php?title=Iterative_and_incremental_development&oldid=575127071
11 Scrum (software development). (2013, October 10). In Wikipedia, The Free Encyclopedia. Retrieved 06:26, October 12, 2013, from http://en.wikipedia.org/w/index.php?title=Scrum_(software_development)&oldid=576578443
12 Extreme programming. (2013, September 27). In Wikipedia, The Free Encyclopedia. Retrieved 06:25, October 12, 2013, from http://en.wikipedia.org/w/index.php?title=Extreme_programming&oldid=574758611
13 Lean software development. (2013, April 21). In Wikipedia, The Free Encyclopedia. Retrieved 04:05, May 4, 2013, from http://en.wikipedia.org/w/index.php?title=Lean_software_development&oldid=551508706
14 Test-driven development. (2013, October 9). In Wikipedia, The Free Encyclopedia. Retrieved 06:00, October 12, 2013, from http://en.wikipedia.org/w/index.php?title=Test-driven_development&oldid=576503904
15 Larman, C. (2016). Applying UML and patterns: an introduction to object-oriented analysis and design and iterative development. Chennai: Pearson.
Last edited by MichaelAlber .
Page last modified on Sunday February 17, 2019 17:34:32 UTC.