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.
- 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.
- Software Change and Configuration Management (SCCM)
-
Distributed tools that implement a set of disciplines used to stabilize, track and control the versions and configurations of a set of
artifacts. This also includes development change management, defect tracking, change automation, development release management,
integrated test management, integrated build management and other related processes.
- 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.