Следующий список вопросов позволяет сделать вывод о качестве архитектуры. Этот список не является исчерпывающим руководством по проектированию архитектуры - это прагматичный способ оценки того, что вы получаете на программистском конце пищевой цепи разработки ПО. Используете его как основу для создания собственного контрольного списка. Как и в случае аналогичного списка вопросов о требованиях, при работе над неформальным проектом некоторые вопросы будут неактуальны, однако при работе над более крупным проектом большинство из них пригодится.
Специфические аспекты архитектуры
- Ясно ли описана общая организация программы? Включает ли спецификация грамотный обзор архитектуры и ее обоснование?
- Адекватно ли определены основные компоненты программы, их области ответственности и взаимодействие с другими компонентами?
- Все ли функции, указанные в спецификации требований, реализуются разумным, не слишком большим и не слишком малым, числом компонентов?
- Приведено ли описание самых важных классов и их обоснование?
- Приведено ли описание организации данных и ее обоснование?
- Приведено ли описание организации и содержания БД?
- Определены ли все важные бизнес-правила? Описано ли их влияние на систему?
- Описана ли стратегия проектирования GUI?
- Сделан ли GUI модульным, чтобы его изменения не влияли на оставшуюся часть программы?
- Приведено ли описание стратегии ввода-выводы данных и ее обоснование?
- Указаны ли оценки степени использования ограниченных ресурсов, таких как потоки, соединения с БД, дескрипторы, пропускная способность сети? Приведено ли описание стратегии управления такими ресурсами и ее обоснование?
- Описаны ли требования к защищенности архитектуры?
- Определяет ли архитектура требования к объему и быстродействию всех классов, подсистем и функциональных областей?
- Описывает ли архитектура способ достижения масштабируемости системы?
- Рассмотрены ли вопросы взаимодействия системы с другими системами?
- Описана ли стратегия интернационализации/локализации?
- Определена ли согласованная стратегия обработки ошибок?
- Определен ли подход к отказоустойчивости системы (если это требуется)?
- Подтверждена ли возможность технической реализации всех частей системы?
- Определен ли подход к реализации избыточной функциональности?
- Приняты ли необходимые решения относительно "покупки и создания" компонентов системы?
- Описано ли в спецификаци, как повторно используемый код будет адаптирован к другим аспектам архитектуры?
- Сможет ли архитектура адаптироваться к вероятным изменениям?
Общее качество архитектуры
- Все ли требования отражены в архитектуре?
- Является ли какая-нибудь часть системы чрезмерно или недостаточно проработанной? Заданы ли явные ожидания по этому поводу?
- Является ли вся архитектура концептуально целостной?
- Независим ли высокоуровневый проект системы от платформы и языка, который будет использован для его реализации?
- Указаны ли мотивы принятия всех основных решений?
- Удовлетворяет ли вас - программиста, который будет реализовывать систему, - разработанная архитектура?
© Стив Макконнелл
Комментариев нет:
Отправить комментарий