Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
78-161~.DOC
Скачиваний:
16
Добавлен:
30.10.2018
Размер:
1.17 Mб
Скачать

6.3 Проектирование

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

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

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

1) доведение до минимума ошибок пользователя;

2) обнаружение ошибок пользователя в случае их возникновения;

3) доведение до минимума сложности разрабатываемого ППП.

Фредерик Брукс, один из создателей операционной системы OS/360 для ЭВМ IBM 360/370, отмечал: «Если сразу не определена единая концепция системы, не созданы проектные спецификации («чертежи») системы, то дальнейшее развитие и сопровождение такой системы не только становится трудоемким делом, но и приводит к росту хаотичности структуры системы в дальнейшем» [5].

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

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

Основными принципами структурного подхода являются:

  • принцип абстрагирования – выделение существенных характеристик системы и отвлечения от несущественных;

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

  • принцип непротиворечивости – обоснованность и согласованность элементов системы;

  • принцип структурированности данных – данные должны быть структурированы и иерархически организованы.

Этот подход реализован, например, в методе SADT (Structured Analysis and Design Technique), в уже упоминаемом методе Oracle CDM, в CASE-технологии Silverran (Silverran Technologies, Inc.).

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

Основными понятиями объектно-ориентированного подхода являются объект и класс1, а основными принципами:

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

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

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

  • полиморфизм – способность класса принадлежать более чем одному типу;

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

Этот подход реализован во многих современных проектных технологиях, например, в семействе CASE-средств Rational Rose корпорации Rational Software.

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

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

В процессе внешнего проектирования становятся возможными проверка правильности промежуточного уровня проекта и сопоставление его с поставленными целями. Кроме того, появляется контрольная точка для руководства проектом.

Детальный внешний проект каждой функции пользователя должен включать следующую информацию:

1. Описание входных данных. Точное описание синтаксиса (формат, допустимые значения, области изменения) и семантики всех данных, вводимых пользователем.

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

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

4. Характеристики надежности. Здесь описывается влияние всех возможных отказов функций на систему, на файлы пользователя.

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

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

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

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

Чтобы изменения в проекте не приводили к дополнительным ошибкам, следует внимательно относиться к работе с изменениями и соблюдать следующие правила:

1. Во время всего периода работы над проектом поддерживать документацию на уровне последних решений.

2. Фиксировать результаты каждого этапа процесса проектирования. Требования и цели фиксируются после их утверждения, внешние спецификации – после успешного завершения проверки их правильности. Изменения должны также проходить формальную процедуру утверждения.

3. Контролировать, чтобы соответствующие изменения были сделаны на всех уровнях разработки ПИ.

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

Далее формируются структура программного изделия и общие правила взаимодействия компонентов.

Как уже отмечалось выше, программное изделие создается на основе модульно-иерархической структуры.

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

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

логика модуля – внутренний алгоритм модуля, т.е. то, как модуль выполняет функцию;

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

При использовании модульно-иерархической структуры:

  • улучшается проектирование ППП, так как сложную и большую проблему легче понять, разбив ее на отдельные функциональные части;

  • улучшаются возможности оптимального использования ресурсов на разработку за счет распределения работы над модулями между программистами в соответствии с их способностями;

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

  • упрощается оценка текущего состояния работ.

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

Спецификации модулей должны содержать следующую информацию:

1) имя модуля – указывается имя, с помощью которого можно обратиться к модулю. Для модуля, имеющего несколько входов, составляются отдельные спецификации;

2) функция – определяется, что делает модуль, когда он вызван, а также его назначение. Этот элемент спецификации не должен содержать сведения о том, как функция реализуется;

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

4) внешние эффекты – дается описание всех внешних для программы или системы событий, происходящих при работе модуля, таких, как прием запроса, выдача сообщений об ошибках и т.п.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]