Agile Software Architects logo

Software Architecture

Remove the unknowns from your project
with a plan of action

Developing software without an architectural plan is like building a house without an architectural plan. It's impossible to coordinate and there's an endless amount of mistakes to fix.

Conception

A Conception plan is used to determine the requirements a project will need in order to keep on track throughout the development process


  • What is the best server setup?

  • What is the best database solution?

  • What is the best language and frameworks to use?

  • How will CI/CD be implemented?

  • Where will developer notes / tickets / documentation be stored?

  • What are the logging standards?

  • Where will analytics be gathered?

Iteration

An Iteration plan is used as a guideline for each two-week sprint / release cycle.


  • How many days are spent in development?

  • How is QA handled?

  • How much time is spent in refactoring?

  • How is code review done?

  • How are pull requests handled?

  • How many meetings are required?

  • How do you handle unknowns (developers leaving, new client requirements, etc)?

  • How do you adjust for overworked / underworked developers?

Maintenance

A Maintenance plan is used to determine how upkeep of a current release is handled.


  • What gets patched and what waits for the next release?

  • How will user feedback be gathered?

  • How will crashes / downtime be monitored and what is the plan of action when it happens?

  • What redundancy systems are in place to prevent crashes / downtime from affecting the user?

  • How is crash data collected?

Implementation

An Implementation plan is used to create a roadmap for development.


  • What parts of the stack will be required to start developing and when should they be in place?

  • What placeholders / dummy data can be used so that development can run in parallel?

  • Who is responsible for what?

  • What are the development rules every developer must follow?

  • How will development stay coordinated?

  • What is the GIT branching strategy?

  • How is testing implemented?

  • How are analytics implemented?

Release

A Release plan is used to set standards for what can be released to users.


  • What day will software be released?

  • How will releases be coordinated with marketing / sales / customer service?

  • Who signs off on the release?

  • How many alpha and beta testers are needed?

  • How will customer service tickets be handled?

  • How is scaling handled?

  • Who handles release notes?

  • How will distribution work?