Development Cycle

Let's talk about software development prioritization as well as the development cycle.

Prioritization

When developing a software system, should we choose to build it in a bottom-up fashion, starting from low-level components, or should we follow a top-down style, starting from high-level features? Here is the comparison.

Comparison

No matter which way of prioritization we choose, here are some tips:

Now we have figured out our priorities, and we are ready to talk about the development cycle.

Development cycle

  1. Create user stories based on requirements (plan).
  2. Pick up user stories from the backlog based on prioritization and put them into a sprint of a two-week development cycle.
  3. Commit source code into the code repository (code).
    • Prefer many small Pull Requests (PR) over one large PR.
      • Choose among feature addition, bug fix, and refactoring but not two or more.
      • Colleagues are more willing to review many small PRs rather than one giant PR.
      • Get feedback early to revise architecture design before spending too much time and energy on less impactful things.
      • Smaller PR works well with Continuous Integration / Continuous Delivery (CI/CD) and testing.
  4. Build artifacts (build).
  5. Conduct unit tests (test).
  6. If the build passes the unit test verification, store the artifacts into the artifactory and deploy the build into the development environment, otherwise, go back to step 3.
  7. Deploy build into the Quality Assurance (QA) environment.
  8. Conduct QA testing including version-specific test, regression test, cross-version test and performance test.
  9. If the build passes the QA test verification, deploy the build into the UAT environment, otherwise, go back to step 3.
  10. Conduct User Acceptance Testing (UAT).
  11. If the build passes the UAT verification, make it a release candidate and deploy the build into the production environment (deploy).
    • Git branch management
    • Semantic versioning
    • Release schedule
    • End-of-life schedule
  12. Monitor the production environment and watch for alerts. Escalate issues if needed (monitor).
    • Error logging
    • Performance monitoring
    • User feedback collection
  13. Write documentation (document).
    • Versioned documentation
    • Migration guide

See also

←Previous Next→