Environments represent isolated instances of an application. An application environment can run on physical hardware, virtual machines or containerized platforms. Each environment is deployed for a unique purpose and serves a specific audience.
- Production - Production environment includes only stable, fully tested, source code. It's accessible to all users and represents the "live" system.
- Staging/QA - Staging or QA environments includes source code which has been unit tested and deemed ready for user acceptance testing.
- Development - Development environments are used by software developers working on new features and bug fixes. Access is typically limited to IT staff.
ITS Applications & Technology Solutions recommends deploying at least one non-production environment for every application.
Virtual machines and containers may be requested from ITS Infrastructure as a Service.
Developers use issue tracking systems to plan and track software development activities, such as new feature requests, tasks and bug fixes.
ITS Applications & Technology Solutions supports version control using JIRA by Atlassian. JIRA is tightly integrated with other Atlassian products and provides developers with a mechanism to audit SDLC activities from project initiation through deployment.
Visit the SDLC Tools page for a summary of JIRA features.
Requests for access to JIRA can be facilitated by submitting a Support Request to the Technology Support Center.
Version control systems, such as Git, track changes to source code (and other application files) committed to their respective code repositories. Implementing version control allows developers to view change histories and, if needed, rollback to previous versions.
ITS Applications & Technology Solutions supports version control using BitBucket (formerly Stash) by Atlassian. Visit the SDLC Tools page for a summary of BitBucket features and its integration capabilities with other Atlassian solutions.
Requests for access to BitBucket can be facilitated by submitting a Support Request to the Technology Support Center.
Technical documentation is created for a multitude of reasons, including serving as a reference point for the developer long after an application has been developed and deployed. Most importantly though, it informs other team members (or any future developer responsible for maintaining or improving software) of the business rules, data constructs and architectures associated with the application.
ITS Applications & Technology Solutions supports Confluence by Atlassian for a variety of different documentation needs. Visit the SDLC Tools page for a summary of Confluence features and its integration capabilities with other Atlassian solutions.
Requests for access to Confluence can be facilitated by submitting a Support Request to the Technology Support Center.
Deployment & Release Management
Deployment tools interact with source code control systems and environments to create builds, compile sources, test (automated) and deploy software. Deploying source code using a product such as Bamboo is highly recommended. For example, Bamboo allows software developers to configure a deployment project that is associated to a specific BitBucket branch and deploy the source code or compiled package to a specific target environment (e.g. master branch to production environment).
ITS Applications & Technology Solutions supports version control using Bamboo by Atlassian. Visit the SDLC Tools page for a summary of Babmoo features and its integration capabilities with other Atlassian solutions.
Requests for access to Bamboo can be facilitated by submitting a Support Request to the Technology Support Center.
It is recommended developers follow a controlled, well documented, release management process.
Release management is the process of managing, planning, scheduling and controlling a software build through different stages and environments; including testing and deploying software releases.1
A typical release management process will include control steps to insure software developers are not unilateraly releasing code to production environments:
- Developer creates JIRA issue to track new feature or bug fix
- Developer commits code to BitBucket branch
- Developer deploys sources/packages using Bamboo to non-production environment for testing
- Developer troubleshoots and resolves issues reported during testing (commits code changes as needed)
- Developer updates JIRA issue when fully tested code is ready for production release (may require functional approval/sign off)
- Release Manager reviews source code changes in BitBucket
- Release Manager creates and assigns release/fix version in JIRA
- Release Manager submits Change Request and updates JIRA issue with approval
- Developer merges BitBucket branch to master branch
- Developer deploys sources/packages using Bamboo to production environment
- Developer updates JIRA issue after code has been successfully deployed to production
- Release Manager closes Change Request
- Release Manager releases JIRA issue
1 Wikipedia. 2020. "Release management". Last modified December 22, 2020. https://en.wikipedia.org/wiki/Release_management