Помимо стандартных требований к поведению (или функциональности) разрабатываемого приложения крайне важно выявлять и документировать так называемые нефункциональные требования. Именно они будут отвечать за стабильность и надежность работы приложения, что является не менее важной оценкой успешности проекта, после того как разработанное приложение позволяет выполнять основные возложенные на него функции.
Принято разделять нефункциональные требования (или атрибуты качества) на две большие категории, соответствующие структурным и поведенческим аспектам приложения. Первая категория (runtime) содержит атрибуты, имеющие значение при исполнении приложения, то есть в режиме его работы. Вторая категория (designtime) определяет атрибуты, относящиеся к аспектам проектирования приложения. Далее мы приведем таблицу основных критериев качества, которые вам необходимо учитывать при описании или проектировании архитектуры.
Атрибуты качества в runtime
|
Availability | Доступность - требования ко времени непрерывной работы приложения, например, 24x7, минимальное время простоя и т.п. | Reliability | Надежность - поведение приложения при наступлении нештатных ситуаций, например, автоматический перезапуск, восстановление работы, дублирование важных данных, резервирование логики | Durability | Требования к долговременному хранению результатов работы приложения, например, использование базы данных, требования ко времени продолжительности хранения данных | Scalability | Масштабируемость - требования к горизонтальному или вертикальному масштабированию приложения | Usability | Требования к удобству использования приложения с точки зрения использования, поддержки | Security | Требования к безопасности работы или использования приложения, связанные с разграничением доступа, работой с приватными данным, снижения подверженности рискам от внешних атак | Configurability | Требования к конфигурируемости работы приложения, взаимодействия и расположения компонентов | Performance | Требования к производительности решения, количество одновременно работающих пользователей, обслуживаемых транзакций, времени реакции, продолжительности вычислений, скорости и пропускной способности каналов связи | Restrictions | Описание ограничений, накладываемых на объем доступной памяти, процессорного времени, дискового пространства, пропускную способность сети, при которых приложение должно эффективно выполнять возложенные на него задачи |
Атрибуты качества в design time
|
Reusability | Требования к повторному использованию реализации или компонентов приложения, а также реализация приложения с возможностью повторного его использования для различных задач | Extensibility | Требования к расширяемости приложения в связи с появлением новых функциональных требований | Portability | Требования к портируемости (переносимости) приложения на различные платформы | Interoperability | Требования к взаимодействию между компонентами решения, между внешними компонентами, использование стандартных протоколов и технологий взаимодействия | Supportability | Требования к различным аспектам поддержки приложения, таким как дешевизна и скорость разработки, прозрачность поведения приложения, простота анализа ошибок и проблем в работе | Modularity | Требования к разделению приложения на модули | Testability | Требования к возможности автоматического и ручного тестирования приложения, наличие необходимого инструментария | Localizability | Требования к возможности и простоте локализации приложения, перечень языков, на которые предполагается локализация приложения | Compatibility | Особые требования к совместимости между версиями приложений, между различными приложениями и внешними подсистемами |
Используйте этот перечень для подробного описания архитектуры разрабатываемого приложения. Если вам встречались и другие атрибуты качества, или как их еще называют - нефункциональные требования, то пишите в комментариях. Совместными усилиями мы сможем составить наиболее полный перечень критериев, который поможет выявить возможные проблемы, ожидания и риски на более ранних этапах разработки приложений. |