# Software Development Life Cycle main phases

The following diagram shows the main phases of the Software Development Life Cycle : analysis and requirements definition, development of Jobs and tests, setting up of an automated build, Quality Assurance tests as well as product go-live and maintenance.

For more information on the people involved in these phases, see [Profiles](https://help.qlik.com/talend/en-US/software-dev-lifecycle-best-practices-guide/8.0/profiles).

![](https://help.qlik.com/talend/en-US/software-dev-lifecycle-best-practices-guide/Resources/images/sdlc-circular_phases.png)

## Development life cycle of a product

The development life cycle of a product or a feature is a wide process that includes specifications, development, and testing, deployment into QA and Production environments, maintenance as well as migration.

* Specifications, which is the conceptual part of the process (technical requirements, task assignments and so on.). For more information, see [Specifications](https://help.qlik.com/talend/en-US/software-dev-lifecycle-best-practices-guide/8.0/specifications "Before designing processes, business managers, decision makers or developers need to write down their specifications, this is one of the foundations of the test-driven development.").
* Development, testing, and deployment, which are the designing and publishing parts of the process. For more information, see [Developing and Testing](https://help.qlik.com/talend/en-US/software-dev-lifecycle-best-practices-guide/8.0/developing-and-testing "In a test-driven approach, process development and tests are closely related to each other and thus the task of the developer is only complete once the process has been both designed and tested. Once the specifications are defined, the development team can start designing the processes which are called Jobs.") and [Building and Deploying](https://help.qlik.com/talend/en-US/software-dev-lifecycle-best-practices-guide/8.0/ci-build "Talend offers you several ways to publish your project artifacts to Talend Cloud, artifact repositories (Nexus, Artifactory) or Docker, and schedule their executions, and allows you to choose the one that suits best your needs.").
* Deployment into QA and Production environments. For more information, see [Deploying to QA and Production environments](https://help.qlik.com/talend/en-US/software-dev-lifecycle-best-practices-guide/8.0/deploying-to-qa-and-production-environments).
* Maintenance which is mainly achieved through GIT branching and tags. For more information, see [Maintaining](https://help.qlik.com/talend/en-US/software-dev-lifecycle-best-practices-guide/8.0/maintaining "Once a product or feature is live, developers might still need to update it in order to improve its performances, meet new requirements or correct some errors discovered in the product.").
* Migration.

## SDLC-related concepts

* Continuous Integration (CI) is a development practice where members of a team integrate their work frequently, each integration being verified by an automated build to detect integration errors as quickly as possible.

* Continuous Deployment (CD) is a practice where the code changes that passed automated testing can be rapidly and safely deployed to production.

* Build automation is a best practice used during the software development life cycle to compile and package source code with an automation build script.

  For example, Talend users can export the sources of a Job they created in Talend Studio as a zip file using Maven and they can re-use this generated archive file in Talend Management Console to schedule the next executions of this Job.

* Version control and Source Code Management (SCM) allow you to manage and track the changes made to the software by assigning revisions to these changes. Talend achieves this thanks to its shared Repository and branching system based on Git. For example, Talend users can use the Repository that is shared between Talend Studio and other applications, as well as its branching system to version changes.

## Profiles

Example set of the main persona that are involved in the phases of a product life cycle.

![](https://help.qlik.com/talend/en-US/software-dev-lifecycle-best-practices-guide/Resources/images/sdlc-personas.png)

* Alan the Project Manager (Analysis and Requirements / Specifications Phase): Alan drives the project architecture and picks technologies to be used. He is in charge of designing the specifications along with business managers and developers.
* Jim the developer (Development and Tests + Maintenance Phases): Jim designs and implements Jobs and components in the Development environment. They also create and run tests for the Jobs they designed, then pass these Jobs to Thomas. If needed, they can handle maintenance by fixing errors or improving the software to meet new technical requirements.
* Thomas the Quality Assurance engineer (QA Tests Phase): Thomas creates and executes test suites on features and products using manual (based on user scenarios) and automated build tests (using Test Cases) in the QA environment. He also sends regular result reports to Megan.
* Megan the Operation/Release Manager (Go Live Phase): Megan approves the release candidate build (RC) and deploys it to Production when she is sure all tests have passed.