Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программная инженерия (Ехлаков Ю.П.).doc
Скачиваний:
158
Добавлен:
09.11.2018
Размер:
1.48 Mб
Скачать
      1. Проектирование по

Процесс «Проектирование ПО» предназначен для описания, на основе анализа требований, архитектуры (программного дизайна) ПО в виде иерархической совокупности компонентов и интерфейсов между ними (рис. 17).

Рис. 17. Состав область знаний «Проектирование ПО »

Основы проектирования. В данном разделе документа приводится понятия и терминология в качестве основы для понимания роли и содержания проектирования (как деятельности) и дизайна (архитектуры, как результата) программного обеспечения. Для понимания содержания проектирования программного обеспечения важно выбрать одну из моделей жизненного цикла на основе которой будет осуществляться проектирование. Сам процесс проектирования состоит из двух частей:

  • Архитектурный дизайн – описание многоуровневой структуры компонентов системы;

  • Детализированная архитектура – описание поведения характеристик отдельных компонент.

К ключевым вопросам проектирования ПО относятся декомпозиция архитектуры на функциональные компоненты для независимого и параллельного их выполнения, принципы и механизмы их взаимодействие между собой, обеспечения качества и живучести программного обеспечения в целом.

Один из вариантов декомпозиции описан в ГОСТ 34.003-90 «Информационная технология. Автоматизированные системы. Термины и определения» где предлагается выделять и описывать следующие элементы программного продукта:

  • интегрированный программный продукт – совокупность двух и более программных продуктов, в которых функционирование одного из них зависит от результатов функционирования другого;

  • программный продукт – совокупность программных компонент, реализующих конкретный бизнес-процесс;

  • сложный программный компонент — совокупность программных кодов, реализующих сложную функцию бизнес-процесса;

  • программный компонент — совокупность программных кодов, реализующих элементарную функцию бизнес-процесса.

Такая декомпозиция на модули сложного программного обеспечения производится с целью получения более мелких и относительно независимых программных компонентов, каждый из которых несет различную функциональность.

Структуры и архитектуры ПО. В строгом значении архитектура программного обеспечения содержит описание логики отдельных компонентов системы, достаточное для проведения работ по кодированию, и связей между ними.

По способам организации внутренней структуры, описания и конструирования ее элементов и связей между ними архитектура программного обеспечения может рассматриваться с разных точек зрения – например, поведенческой (динамической), структурной (статической), логической (удовлетворение функциональным требованиям), физической (распределенной).

В результате будут получены различные архитектурные представления и дизайн системы. Архитектурное представление может быть определено, как частные аспекты программной архитектуры, рассматривающие специфические свойства программного обеспечения. В свою очередь, дизайн системы – комплекс архитектурных представлений, достаточный для реализации системы и удовлетворения требований, предъявляемых к ней.

Анализ качества и оценка программного дизайна. Данный раздел включает мероприятия по анализу сформулированных в требованиях атрибутов оценки качества различных аспектов ПО. Все множество атрибутов предлагается условно разбить на три группы:

  • применимые ко времени реализации программного обеспечения; например, среднее время отклика системы позволяющей оценить качество дизайна с точки зрения производительности;

  • позволяющие оценивать качество получаемого дизайна еще на этапе проектирования, например, средняя нагруженность классов бизнес-методами характеризующая, легкость поддержки, модифицикации и развития систему с такой внутренней структурой.

Проведения качественного анализа результатов проектирования возможно путем статического анализа, моделирования и прототипирования.

Нотации проектирования. В общем случае нотация определяется как соглашение о представлении (описании) структуры и поведения системы и взаимосвязей между ее элементами. Существует два типа нотаций: структурные и поведенческие и соответственно множество различных методов их представления.

Структурные нотации являются графическими, они используются для представления структурных аспектов проектирования, компонентов и их взаимосвязей, элементов архитектуры и их интерфейсов. Нотации включают языки описания архитектуры и интерфейса, диаграммы классов и объектов, диаграммы сущность-связь, компонентов, развертывания, а также структурные диаграммы и схемы.

Такие нотации создаются с использованием формальных языков проектирования: UML (Unified Modeling Language), ERD (Entity–Relation Diagrams) и т.д.

Поведенческие нотации отражают динамический аспект поведения систем и их компонентов. Таким нотациям соответствуют диаграммы: Data Flow - один из основных инструментов структурного анализа и проектирования информационных систем; Decision Tables - способ компактного представления модели со сложной логикой. Аналогично условным операторам в языках программирования, они устанавливают связь между условиями и действиями; Activity - диаграмма поведения, на которой показан автомат и подчеркнуты переходы потока управления от одной деятельности к другой; Colloboration - диаграмма поведения, на которой показано взаимодействие и подчеркнута структурная организация объектов, посылающих и принимающих сообщения; Sequence - диаграмма поведения, на которой показано взаимодействие и подчеркнута временная последовательность событий и др.

Стратегия и методы проектирования ПО. Данный раздел знаний представляет различные стратегии и методы, которые используются при проектировании.

Функционально–ориентированные (структурные) методы ориентированы на идентификацию функций и их уточнение сверху–вниз, после чего проводится разработка диаграмм потоков данных и описание процессов.

В объектно-ориентированном проектировании базируется на концепции объектов, ключевую роль играет наследование, полиморфизм и инкапсуляция, а также абстрактные структуры данных и отображение объектов

Подходы, ориентированные на структуры данных, базируются на методе Джексона и используются для задания входных и выходных данных структурными диаграммами. В данном подходе фокус сконцентрирован в большей степени на структурах данных, которыми управляет система, чем на функциях системы. Инженеры по программному обеспечению часто вначале описывают структуры данных входов и выходов, а, затем, разрабатывают структуру управления этими данными.

Компонентное проектирование ориентировано на использование и интеграцию компонентов (особенно компонентов повторного использования) и на их интерфейсов, обеспечивающих взаимодействие компонентов.