Key Concepts in Modern Application Development

Any discussion of modern application development methodologies will include reference to a number of key concepts. The following list provides a very brief summary of the key concepts that are used in this section of the documentation.

Agile software development
A set of principles guiding the production of software that focusses on the following:
  • Iterative, incremental, evolutionary delivery
  • Face-to-face communication
  • Short feedback loops
  • Use of automation to promote a focus on quality
Application release automation (ARA)
The use of tools to automate the steps involved to build software and subsequently deploy it to production.
Automated testing
The use of tools to control the running of tests and the comparison of the tests' outcomes with their expected outcomes.
Configuration management (SCM)
The task of tracking and controlling changes made to software as it is developed. Central to the concept of configuration management is version control, which is the management of changes to files.
Continuous delivery (CD)
A process whereby every code change results in the building and testing of new software that can then be deployed to production (if appropriate).
Continuous deployment
A process whereby every code change results in the building and testing of new software that is then deployed to production.
Continuous improvement
The process of regularly assessing a team's performance in a rollout period, evaluating what has gone well and what can be improved on.
Continuous integration (CI)
The practice of ensuring that all developers' working copies of code are regularly merged into a shared trunk, and each code change results in the building and testing of new software.
Requirements management
The process of gathering and managing the requirements for an application and ensuring that those requirements are used to effectively drive the efforts of the development team.
Unit testing
The process where the smallest parts of an application that it is possible to test are tested individually to see if they perform as expected.

You might find some of these terms defined in a number of subtly different ways in different sources. This section of the documentation uses the terms as they are defined here.