Анализ качества и оценкапрограммного дизайна
Параметры качества– это общие свойства архитектуры, которые оказывают влияние на дизайн системы, ее поведение во время работы и взаимодействие с пользователем, такие как удобство ипростота использования, производительность, надежность и безопасность и др. Обеспечение приложением требуемого сочетания параметров качества определяет успешность его дизайна и общее качество программного продукта. В ходе проектирования приложения, отвечающего любому из этих параметров, необходимо учесть влияние и других требований, а также при этом должны быть проанализированы плюсы и минусы по отношению к другим параметрамкачества.
Атрибуты качества дизайна. Существует целый спектр различных атрибутов, помогающих оценить разработку и добиться качественного дизайна. Эти атрибуты могут описывать многие характеристики системы и элементов дизайна: «тестируемость», «переносимость», «модифицируемость», «производительность», «безопасность» и т. п. Важно понимать, что обсуждаемые атрибуты касаются толькодизайна (как результата), но не проектирования (как процесса). Всеэти атрибуты принято объединять в следующие группы:
- применимые к run-time, т. е. ко времени выполнения системы, например, среднее время отклика системы, позволяющее оценитькачество дизайна с точки зрения производительности;
- ориентированные на design-time, т. е. позволяющие оцениватькачество получаемого дизайна еще на этапе проектирования и, вобщем случае, вплоть до тестирования включительно; например, средняянагруженность классов бизнес-методами (в каждом классебизнес-методов «в среднем» или «много»);
- атрибуты качества архитектурного дизайна как такового – концептуальная целостность дизайна, непротиворечивость, полнота, завершенность; например, любой определенный бизнес-метод является вызываемым, т. е. создан не потому, что может понадобиться вбудущем, а определен в соответствии с требованиями или необходимдля реализации дизайна в выбранном архитектурном стиле.
Существуют атрибуты, которые сложно измерить, например, портируемость (переносимость на другие операционные системы и т. д. или безопасность. Измеряемые атрибуты качества описываютсяопределенными метриками. Метрика позволяет количественно оценить атрибут качества, например, «модифицируемость» и «сложность» системы.
Не надо путать атрибуты качества дизайна с атрибутами качества, используемыми в ряде требований, предъявляемых к системе. Частьиз них может отображаться друг на друга и нести эквивалентнуюсмысловую нагрузку, некоторые могут быть связаны, однако большаячасть атрибутов качества дизайна является специфичной именно длядизайна и не связана с требованиями. Например, если используетсяплатформа J2EE (Java 2 EnterpriseEdition) и компонентная модельEJB (Enterprise JAVABEANS), существуют признаки хорошего дизайна, специфичные для данной платформы и компонентной модели, ноабсолютно никак не связанные с какими-либо требованиями к создаваемой на этой платформе программной системе.
Анализ качества и техники оценки. В индустрии разработкиПО распространены многие инструменты, техники и практики, помогающие добиться качественного дизайна:
- обзор дизайна (softwaredesignreview), например, неформальныйобзор архитектуры членами проектной команды;
- статический анализ (staticanalysis), например трассировка стребованиями
- симуляция и прототипирование (simulationandprototyping) – динамические техники проверки дизайна в целом или отдельных егоатрибутов качества, например, для оценки производительности используемых архитектурных решений при симуляции нагрузки, близкой к прогнозируемым пиковым.
Программные средства
При проектировании ПС можно пользоваться различными программными средствами, которые позволяют рисовать различныевиды диаграмм. Из наиболее востребованных можно выделить следующие:
- MicrosoftVisio– платный программный продукт, позволяющийрисовать любые диаграммы, а также схемы интерфейсов пользователя;
- Plant UML – бесплатный программный продукт, позволяющийавтоматически рисовать диаграммы по написанным на специальномязыке сценариям
- BalsamiqMockups– платный программный продукт, позволяющий проектировать Web-интерфейсы.