Development Methodologies


A time-boxed, iterative approach to software delivery that builds software incrementally from the start of the project, instead of trying to deliver it all at once near the end.


Stands for Behavior-driven development. Emerged from TDD. The idea is to provide software development and management teams with shared tools and a shared process to collaborate on software development.


An approach to software development, which provides a structure of practices and terminology for making design decisions that accelerate software projects.


An agile software development methodology that employs a short-iteration model and is intended for use by large teams. An FDD project is organized around five processes: Develop an Overall Model; Build a Features List; Plan by Feature; Design by Feature; Build by Feature.  


A software development methodology which predates the Rational Unified Process, Extreme Programming and Agile development, it is more lightweight, provides more requirement and design documentation, aims to avoid analysis paralysis, bridging the gap between analysis and design. 


An agile method for managing the creation of products with an emphasis on continual delivery while not overburdening the development team.

Pair programming

An agile software development technique which consists of two programmers sharing one workstation, one development effort. Each member performs the action the other is not currently doing, one writes code while the other reviews each line of code as it is typed in, they switch roles frequently. 


Stands for PRojects IN Controlled Environments, a structured customizable project management method that emphasises dividing projects into manageable and controllable stages, separates the management layer.


A general term used to refer to alternatives to the conventional waterfall model of software development, an approach to rapid development. RAD is well suited for (but not limited to) developing software that is driven by user interface requirements.


Stands for Rational Unified Process. An object-oriented software development process. It provides a disciplined approach to assigning tasks, guidelines, templates, and other aspects of program development.


An agile framework for managing complex (software) projects. A team works for a short period of time (a 'sprint' or 'iteration') and then demonstrates real stuff that matters to the end-product at the end of each sprint. Emphasizes team self-management and flexibility (change requests can be created and approved at any time during the project). 


Software development process that relies on the repetition of a very short development cycle: first the developer writes 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.

XP (extreme programming)

Type of Agile software development methodology which is intended to improve software quality and responsiveness to changing customer requirements. It includes: frequent "releases" in short development cycles, programming in pairs or doing extensive code review, unit testing of all code, avoiding programming of features until they are actually needed, a flat management structure, simplicity and clarity in code, expecting changes in the customer's requirements as time passes and the problem is better understood, and frequent communication with the customer and among programmers.


Represents a development process that may be considered as an extension of the waterfall model and demonstrates the relationships between each phase of the development life cycle and its associated phase of testing.


A linear and sequential approach to software development, allows departmentalization and managerial control. It has such sequence: gather and document requirements; design; code and unit test; perform system testing; perform user acceptance testing; fix issues; deliver the finished product. 


Development by