Я пытаюсь найти контрольный список или набор вопросов/критериев для оценки и оценки предлагаемых или возникающих архитектур (выполнить архитектурные обзоры). Каковы наиболее важные вопросы, которые вы задаете при планировании, оценке или обзоре архитектуры?
Я знаю, что это большая тема, поэтому я хотел бы ограничить ее одной сквозной системой, а не архитектурой для всей организации.
Код Complete обеспечивает достойную отправную точку:
Архитектура
- Является ли полная организация программы понятной, в том числе хорошей архитектурный обзор и обоснование?
- Являются ли модули определенными, включая их функциональность и их интерфейсы к другим модулям?
- Все функции, перечисленные в требованиях, не слишком много или слишком мало модулей?
- Является ли архитектура предназначена для размещения вероятных изменений?
- Необходимы ли решения о покупке-vs.-build?
- Описывает ли архитектура, как будет использоваться повторно используемый код для соответствия другие архитектурные цели?
- Все ли основные структуры данных скрыты за процедурами доступа?
- Является ли организация и содержание базы данных обоснованной?
- Все ли ключевые алгоритмы описаны и обоснованы?
- Все основные объекты описаны и обоснованы?
- Описана ли стратегия обработки пользовательского ввода?
- Является ли стратегия обработки I/O описанной и обоснованной?
- Определены ли ключевые аспекты пользовательского интерфейса?
- Является ли интерфейс пользователя модульным, чтобы изменения в нем не повлияли на остальная часть программы?
- Имеются оценки использования памяти и стратегия управления памятью описаны и обоснованы?
- Описывает ли архитектура пространство и бюджет скорости для каждого модуля?
- Является стратегией обработки описанных строк и является символьной строкой оценки хранения?
- Предоставляется ли согласованная стратегия обработки ошибок?
- Являются ли сообщения об ошибках управляемыми как набор для представления чистого пользовательского интерфейса?
- Определен ли уровень надежности?
- Является ли какая-либо часть чрезмерной или недокритичной? Ожидаются ли эта область явно указана?
- Четко ли сформулированы основные системные цели?
- Концепция концептуально висит вместе в целом архитектуре?
- Является ли дизайн верхнего уровня независимым от машины и язык, который будет использоваться для реализовать его?
- Могут ли быть мотивы для всех основных решений?
- Вы, как программист, который будет внедрять систему, архитектура?
Я ищу практические знания с примерами, например, какие самые болезненные моменты в архитектуре вы создали?