Software Development

Application Lifecycle Management

When creating an application, we outline the entire life cycle with a few key concepts referred to as Application Lifecycle Management (ALM). These concepts are not limited to the development of the application, and are concerned with everything from decision making to test frameworks, maintenance schedules and processes, and developer resources / customer security.

Software Development Life Cycle

The Software Development Life Cycle is mostly concerned with the development of the application. In general, the development of an application follows these steps

There are many models for software development -

Continuous Integration

Continuous Integration (CI) often used to streamline testing new contributions to a repository by verifying builds, test cases, and merges to aid in ALM and SDLC. By automating building the application, we ensure that the change is valid in respect to the tools and technologies that assemble the end product. We then test this build with a series of Unit / Integration / Functional test cases, and when all of these pass we proceed to attempt a merge of the changes into the current code base. This process ensures that the changes being made are improvements on the current status of the application, and not degredations. This process also ensures that changes are more frequently merged into a common repository or branch, whereas without CI we risk building up a large set of changes that could otherwise be difficult to merge into the current code base. CI helps to avoid this complexity and in-turn reduce development time required to make changes to the product, while simultaneously ensuring that bugs are realized and fixed earlier in development rather than later.

Continous Delivery

Continuous Delivery (CD) is the delivery of the changes to a remote repository, where this delivery takes minimal effort on the behalf of development teams which enable them to focus their work on the improvement of the application without having to manually deliver their changes each time. In order for delivery to be effective, it's important to have a good CI process in place that protects the code base from unwanted bugs or breaking changes. The delivery process can include deploying the application to a testing environement where more tests are performed to validate the changes made.

This step can optionally automate deployments also, or there can be an additional system that handles Continuous Deployment strategies independent from repository / source code management.

Continous Deployment

Continuous Deployment (CD) is the deployment of changes deliverd by a Continuous Delivery system. This process can either be independent from or part the of Continous Delivery strategy. Once tests from all previous stages in the CI / CD pipeline are passing, the changes are deployed to production where the end users can benefit from the new features or upgrades made in this iteration of development.

CI / CD Pipeline

The CI / CD pipeline has several meaning that are all context dependent for the application

In general, the CI / CD pipeline refers to the use of automation tools to streamline the development of an application.

Some CI / CD tools are listed below. Some of these focus on CI, Continuous Delivery, Continuous Deployment, or any combination of the three.

Resources

RedHat - Application Lifecycle

RedHat - CI / CD

Tutorialspoint - SDLC

Wikipedia - SDLC

Guru99 - CI tools


Revision #1
Created 3 April 2022 18:20:31 by Shaun Reed
Updated 3 April 2022 20:57:38 by Shaun Reed