6.1 Discovery Phase
The discovery phase comprises product feasibility and requirements gathering and is typically performed by the Product Manager.
6.2 Design Phase
During the planning and design phase high-level designs, user stories, and UI mock ups are created. Stories are broken up into tasks and estimated for complexity and effort which is measured in time (days). Stories and Tasks are assigned to Sprints. All planning and tracking are performed on JIRA.
6.3 Development Phase
During the development phase, engineers are assigned tasks from an active Sprint. Each developer has their own port running on the Dev Server where they can commit code without review. Engineers rely on manual peer code reviews to ensure the code changes are correct and the quality of code is high. Once their code has been reviewed and tested on their port they can submit a pull request to move the code to the main dev branch and main dev port 443. Once pulled on port 443 of the dev server a third-party code analysis system runs automated SAST and code quality analysis and report on issues back to developers.
6.4 Testing Phase
Engineers write regression tests, unit tests, manual tests, and integration tests during this phase. Changes are tested locally by developers on Dev and verified to work on Dev by the QA team. We use various testing tools for developing test cases. Once the code is verified on Dev it is moved to the Stage environment where QA will run regression and security tests before approving for production.
6.5 Deploy Phase
Engineering managers will follow the Change Management procedures by submitting a CR to CAB which includes release notes of the update and rolls back procedures. Upon approval by CAB, date and time are select to move code to production. Customers are notified of scheduled maintenance. Production pushes are coordinated and managed via Jira, Slack, GitHub, and other automation tools. Stories are then tested in production until the Sprint is closed.
6.6 Monitoring Phase
We monitor all deployments post-release to ensure stability and performance. Our engineering team rotates on-call and is responsible for fixing or rolling back any issues if they ever occur.