Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What should be included in an Application Architecture checklist?

Based on my research, here are some architectural review checklists I've found that do this question a little more justice, and provide some background on what an architecture review is. (Seems to be a bit of confusion about it here.)

Each of these potential candidates include a number of different categories. The overall importance of these categories will vary somewhat depending on business needs. IMHO, that's OK. It's much less costly to ask another question when going through a checklist for a review and rule it out than it is to miss a question or category entirely because it didn't seem important enough to include on a checklist initially.

  • "Software architecture review guidelines" by Alexander Nowak
  • "Review Checklist for Architectural Design Document[s]" by Tom Verhoeff
  • "Checklist: Architecture and Design Review" from Microsoft patterns & practices Developer Center
  • "Conceptual Architecture Checklist" by Craig Borysowich
  • "App Arch Guide 2.0 Knowledge Base: Checklist - Architecture and Design" by J.D. Meier, Alex Homer, et al. (found via Peter Stuer's link)
  • "TOGAF Architecture Compliance Review Checklists" from the Open Group
  • "Architecture Review Process" by Ricky Ho

There also appears to be a white-paper written on this topic, although I have not read it. It attempts to answer this question over the course of about 11 pages.

  • Architecture reviews: practice and experience by Maranzano, Rozsypal, et al.

Additionally a colleague recommended a set of books from Springer, though I have not checked any of these out myself:

  • The Enterprise Engineering Series from Springer

Some other points to consider:

  • Are all stakeholders identified? (Examples: Customer, end users, business analysts, user interface designers, developers, testers, maintainers.) Is the architecture verified with the stakeholders?
  • How does the architecture address security?
  • Are the requirements to availability and reliability specified? How does the architecture address these? (Examples: mean time between failures, mean time to repair.)
  • How is disaster recovery handled?

Two good books for more ideas:

  • Software Systems Architecture by Nick Rozanski and Eóin Woods
  • Software Architecture in Practice by Len Bass, Paul Clements, and Rick Kazman

How are you going to test it


Does it use SOLID principles?