CASE. Структурный системный анализ.
Часть 3
CASE-СРЕДСТВА АВТОМАТИЗАЦИИ
МЕТОДОЛОГИЙ СТРУКТУРНОГО
СИСТЕМНОГО АНАЛИЗА
ПРОЕКТИРОВАНИЯ
ГЛАВА 11. КОНЦЕПТУАЛЬНЫЕ ОСНОВЫ CASE-ТЕХНОЛОГИЙ
Эволюция CASE-средств
---------------------------------------------------------------------
С самого начала CASE-технологии развивались за счет автоматизации и
интеграции поддерживающих средств. Таким образом CASE-технологии не могут
считаться самостоятельными методологиями, они только делают более
эффективными пути их применения. CASE - не революция в программотехнике:
современные CASEсредства являются естественным продолжением эволюции всей
отрасли средств разработки ПО. Традиционно выделяют шесть периодов,
качественно отличающихся применяемой техникой и методами разработки ПО,
которые характеризуются использованием в качестве инструментальных
следующих средств:
¦ ассемблеров, дампов памяти, анализаторов;
¦ компиляторов, интерпретаторов, трассировщиков;
¦ символических отладчиков, пакетов программ;
¦ систем анализа и управления исходными текстами;
¦ CASE-средств анализа требований, проектирования спецификаций и
структуры, редактирования интерфейсов (первая генерация CASE-I);
¦ CASE-средств генерации исходных текстов и реализации
интегрированного окружения поддержки полного жизненного цикла (ЖЦ)
разработки ПО (вторая генерация CASE-II).
CASE-I является первой технологией, адресованной непосредственно
системным аналитикам и проектировщикам, и включающей средства для
поддержки графических моделей, проектирования спецификаций, экранных
редакторов и словарей данных. Она не предназначена для поддержки полного
ЖЦ и концентрирует внимание на функциональных спецификациях и начальных
шагах проекта - системном анализе, определении требований, системном
проектировании, логическом проектировании БД.
CASE-II отличается значительно более развитыми возможностями,
улучшенными характеристиками и исчерпывающим подходом к полному ЖЦ. В ней
в первую очередь используются средства поддержки автоматической
кодогенерации, а также обеспечивается полная функциональная поддержка
порождения графических системных требований и спецификаций проектирования;
контроля анализа и связывания системной информации, а также информации по
управлению проектированием; построения прототипов и моделей системы;
тестирования, верификации и анализа сгенерированных программ; генерации
документов по проекту; контроля на соответствие стандартам по всем этапам
ЖЦ. CASE-11 может включать свыше 100 функциональных компонентов,
поддерживающих все этапы ЖЦ, при этом пользователям предоставляется
возможность выбора необходимых средств и их интеграции в нужном составе.
CASE-модель жизненного цикла ПО
---------------------------------------------------------------------
CASE-технологии предлагают новый, основанный на автоматизации подход
к концепции ЖЦ ПО. При использовании CASE изменяются все фазы ЖЦ, при этом
наибольшие изменения касаются фаз анализа и проектирования. На рис. 11.1
приводится простейшая модель ЖЦ (рис. 11.1а) и соответствующая CASE-модель
(рис. 11.1б), в которой фаза прототипирования заменяет традиционную фазу
системного анализа. Необходимо отметить, что наиболее автоматизируемыми
фазами являются фазы контроля проекта и кодогенерации (хотя все остальные
фазы также поддерживаются CASE-средствами).
Рис. 11.1: Модели жизненного цикла ПО
В таблице 11.1 приведены оценки трудозатрат по фазам ЖЦ . Первая
строка таблицы соответствует традиционной разработке, вторая - разработке
с использованием структурных методологий проектирования, третья -
разработке с использованием CASE-технологии. В таблицу 11.2 сведены
основные изменения в ЖЦ при использовании CASE-технологии по сравнению с
традиционной разработкой.
Таблица 11.1
Таблица 11.2
1 Основные усилия - на кодирование Основные усилия - на анализ
и тестирование и проектирование
2 "Бумажные" спецификации Быстрое итеративное
прототипирование
3 Ручное кодирование Автоматическая кодогенерация
4 Ручное документирование Автоматическая генерация
документации
5 Тестирование кодов Автоматический контроль проекта
6 Сопровождение кодов Сопровождение спецификаций
проектирования
На рис. 11.2 представлены результаты сравнения традиционной
разработки программных проектов и разработки с применением
CASE-технологий.
Рис. 11.2: Уменьшение затрат на проектирование программных
систем за счет CASE-технологий
Состав, структура и функциональные особенности CASE-средств
---------------------------------------------------------------------
CASE-средства служат инструментарием для поддержки и усиления методов
структурного анализа и проектирования. Эти инструменты поддерживают работу
пользователей при создании и редактировании графического проекта в
интерактивном режиме, они способствуют организации проекта в виде иерархии
уровней абстракции, выполняют проверки соответствия компонентов.
Фактически CASE-средства представляют собой новый тип
графически-ориентированных инструментов, восходящих к системе поддержки ЖЦ
ПО. Обычно к ним относят любое программное средство, обеспечивающее
автоматическую помощь при разработке ПО, его сопровождении или
деятельности по управлению проектом, и проявляющее следующие
дополнительные черты:
¦ мощная графика для описания и документирования систем ПО, а также
для улучшения интерфейса с пользователем, развивающая творческие
возможности специалистов и не отвлекающая их от процесса
проектирования на решение второстепенных вопросов;
¦ интеграция, обеспечивающая легкость передачи данных между
средствами и позволяющая управлять всем процессом проектирования и
разработки ПО непосредственно через процесс планирования проекта;
¦ использование компьютерного хранилища (репозитария) для всей
информации о проекте, которая может разделяться между
разработчиками и исполнителями как основа для автоматического
продуцирования ПО и повторного его использования в будущих
системах.
Помимо перечисленных основополагающих принципов графической
ориентации, интеграции и локализации всей проектной информации в
репозитарии в основе концептуального построения CASE-средств лежат
следующие положения:
1. Человеческий фактор, определяющий разработку ПО как легкий,
удобный и экономичный процесс.
2. Широкое использование базовых программных средств, получивших
массовое распространение в других приложениях (БД и СУБД,
компиляторы с различных языков программирования, отладчики,
документаторы, издательские системы, оболочки экспертных систем и
базы знаний, языки четвертого поколения и др).
3. Автоматизированная или автоматическая кодогенерация, выполняющая
несколько видов генерации КОДОВ: преобразования для получения
документации, формирования БД, ввода/модификации данных, получения
выполняемых машинных кодов из спецификаций ПО, автоматической
сборки модулей из словарей и моделей данных и повторно
используемых программ, автоматической конверсии ранее используемых
файлов в форматы новых требований.
4. Ограничение сложности, позволяющее получать компоненты,
поддающиеся управлению, обозримые и доступные для понимания, а
также обладающие простой и ясной структурой.
5. Доступность для разных категорий пользователей.
6. Рентабельность.
7. Сопровождаемость, обеспечивающая способность адаптации при
изменении требований и целей проекта.
Интегрированный CASE-пакет содержит четыре основные компонента:
1. Средства централизованного хранения всей информации о
проектируемом ПО в течении всего ЖЦ (репозитарий) являются основой
CASE-пакета Соответствущая БД должна иметь возможность
поддерживать большую систему описаний и характеристик и
предусматривать надежные меры по защите от ошибок и потерь
информации. Репозитарий должен обеспечивать:
¦ инкрементный режим при вводе описаний объектов;
¦ распространение действия нового или скорректированного описания
на информационное пространство всего проекта;
¦ синхронизацию поступления информации ОТ различных пользователей;
¦ хранение версий проекта и его отдельных компонентов;
¦ сборку любой запрошенной версии;
¦ контроль информации на корректность, полноту и состоятельность.
2. Средства ввода предназначены для ввода данных в репозитарий, а
также для организации взаимодействия с CASE-пакетом. Эти средства
должны поддерживать различные методологии и использоваться на всем
ЖЦ разными категориями разработчиков: аналитиками,
проектировщиками, инженерами, администраторами и т.д.
3. Средства анализа, проектирования и разработки предназначены для
того, чтобы обеспечить планирование и анализ различных описаний, а
также их преобразования в процессе разработки.
4. Средства вывода служат для документирования, управления проектом и
кодовой генерации.
Все перечисленные компоненты в совокупности должны:
¦ поддерживать графические модели;
¦ контролировать ошибки;
¦ организовывать и поддерживать репозитарий;
¦ поддерживать процесс проектирования и разработки.
Поддержка графических моделей
---------------------------------------------------------------------
Графическая ориентация CASE заключается в том что программы являются
схематическими проектами и формами, которые много проще в использовании,
чем многостраничные описания. Для представления программ применяются
структурные диаграммы различных типов, дополнительное достоинство которых
заключается в их использовании в качестве наглядной "двумерной"
документации по проекту.
Для CASE существенны 4 типа диаграмм: диаграммы функционального
проектирования (для этих целей наиболее часто употребляются DFD-диаграммы
потоков данных), диаграммы моделирования данных (как правило,
ERD-диаграммы "сущность-связь"), диаграммы моделирования поведения (как
правило, STD-диаграммы переходов состояний) и структурные диаграммы
(карты), применяющиеся на этапе проектирования и описывающие отношения
между модулями и внутримодульную структуру. Создание и модификация
подобных диаграмм осуществляется с помощью специальных графических
редакторов (диаграммеров), являющихся сервисными средствами на этапах
анализа требований и проектирования спецификаций. Современные диаграммеры
обеспечивают:
¦ создание иерархически связанных диаграмм, в которых комбинируются
графические и текстовые объекты;
¦ создание и редактирование объектов в любом месте диаграммы;
¦ создание, перемещение и выравнивание групп объектов, изменение их
размеров, масштабирование;
¦ сохранение связей между объектами при их перемещении и изменении
размеров;
¦ автоматический контроль ошибок и др.
Реализация подобных возможностей позволяет пользователю целиком
сосредоточиться на собственно проектировании, не отвлекаясь на решение
второстепенных вопросов, связанных с размещением элементов диаграмм, их
компоновкой и т.п.
Полученные диаграммы дают ясное понимание и решение проблемы,
позволяют проанализировать функционирование создаваемого ПО, фиксируют
связи между разработчиками, пользователями и руководителями, обеспечивают
стандартизацию представления структуры программы и данных.
Контроль ошибок
---------------------------------------------------------------------
Важность контроля ошибок на этапах анализа требований и
проектирования спецификаций обуславливается возможностью их
автоматического обнаружения на ранних этапах ЖЦ. CASE обеспечивает
автоматическую верификацию и контроль проекта на полноту и состоятельность
на ранних этапах ЖЦ, что влияет на успех разработки в целом. В
подтверждение этого можно привести следующие статистические данные,
основанные на отчетах фирмы TRW по анализу 5 крупных проектов:
¦ при традиционной организации работ ошибки проектирования и
кодирования составляют, соответственно, 64% и 32% от общего числа
ошибок;
¦ ошибки проектирования в 100 раз труднее обнаружить на этапе
сопровождения ПО, чем на этапах анализа требований и проектирования
спецификаций.
В CASE диаграммеры и верификаторы способны осуществлять следующие
типы контроля:
1. Контроль синтаксиса диаграмм и типов их элементов. Обычно такой
контроль осуществляется при вводе и редактировании элементов
диаграмм. Примеры контролируемых ситуаций:
¦ по синтаксису: любой функциональный элемент диаграммы должен
иметь по крайней мере один входной и один выходной поток; два
элемента данных не могут быть непосредственно связаны;
¦ по типам: функциональный элемент должен всегда использоваться
для представления процедурного компонента; поток данных всегда
должен быть представлен компонентом данных.
2. Контроль полноты и состоятельности диаграмм: все элементы диаграмм
должны быть идентифицированы и отражены в репозитарии. Например,
для DFD контролируются неименованные или несвязанные потоки
данных, процессы и хранилища данных; источники и стоки данных
(внешние сущности) вне контекстной диаграммы; хранилища данных на
контекстной диаграмме и т.п. При анализе словаря данных необходимо
выявлять циклические определения, эквивалентные определения,
неопределенные объекты.
3. Контроль декомпозиции функций включает оценку качества на основе
различных метрик ПО и частичный семантический контроль.
4. Сквозной контроль диаграмм одного или различных типов на предмет
их состоятельности по уровням - вертикальное и горизонтальное
балансирование диаграмм. При вертикальном балансировании
(Диаграммы ОДНОГО типа) выявляются несбалансированные потоки
данных между детализируемой и детализирующей диаграммами.
Горизонтальное балансирование определяет некорректности между DFD,
ERD, STD, словарями данных и миниспецификациями процессов. Так при
балансировании DFD-ERD контролируется соответствие каждого
хранилища данных на DFD сущности или отношению на ERD. Контроль
DFD-STD осуществляется по следующим правилам: каждый управляющий
процесс на DFD детализируется спецификацией управления STD, и
наоборот, каждой STD должен соответствовать управляющий процесс;
каждое условие (действие) в STD должно соответствовать входному
(выходному) управляющему потоку на DFD, и наоборот, каждому
управляющему потоку в зависимости от его направленности должно
соответствовать условие/действие на STD. При балансировании
DFD-словарь данных - миниспецификация должны проверяться следующие
правила:
¦ каждый поток и хранилище данных должны быть определены в словаре
данных (контроль неопределенных значений), и наоборот, Каждое
определение в словаре должно быть отражено на диаграмме, в
миниспецификации или другом определении (контроль неиспользуемых
значений);
¦ каждый процесс на DFD должен детализироваться с помощью DFD или
миниспецификации (но не тем и другим одновременно), и наоборот,
каждая миниспецификация должна соответствовать единственному
процессу; ссылки к данным в миниспецификациях должны
соответствовать объектам на диаграммах и в словаре данных;
¦ по возможности должна контролироваться семантика
миниспецификации: например, если входные и/или выходные потоки
связаны с хранилищем данных, то это должно быть отражено в
миниспецификации (операторами READ, GET, WRITE, PUT и т.п.).
Организация и поддержка репозитария
---------------------------------------------------------------------
Основные функции средств организации и поддержки репозитария -
хранение, доступ, обновление, анализ и визуализация всей информации по
проекту ПО. Содержимое репозитария включает не только информационные
объекты различных типов, но и отношения между их компонентами, а также
правила использования или обработки этих компонентов (рис. 11.3).
Репозитарий может хранить свыше 100 типов объектов, примерами которых
являются структурные диаграммы, определения экранов и меню, проекты
отчетов, описания данных, логика обработки, модели данных, модели
организации, модели обработки, исходные коды, элементы данных и т.п.
Рис. 11.3: Содержимое репозитария
Каждый информационный объект в репозитарий описывается перечислением
его свойств: идентификатор, имена-синонимы, тип, текстовое описание,
компоненты, файл-хранилище, область значений. Кроме этого, хранятся все
отношения с другими объектами (например, все объекты, в которых данный
объект используется; все перекрестные ссылки), правила формирования и
редактирования объекта, а также контрольная информация о времени
порождения объекта, времени его последнего обновления, кем и в каком
проекте он был порожден, номере версии, возможности обновления и т.п.
На основе репозитария осуществляется интеграция CASE-средств и
разделение системной информации между разработчиками. При этом возможности
репозитария обеспечивают несколько уровней интеграции: общий
пользовательский интерфейс по всем средствам, передачу данных между
средствами, интеграцию этапов разработки через единую систему
представлений фаз ЖЦ, передачу данных и средств между аппаратурными
платформами.
Репозитарий является базой для стандартизации документов по проекту и
контроля состоятельности проектных спецификаций. Все отчеты строятся
автоматически по репозитарию, ниже перечислены основные их типы:
1. Отчеты по содержимому включают сводки потоков данных и их
компонентов, сводки всех пар интерфейсов в описывающих
межмодульные отношения структурных диаграммах, списки входных и
выходных потоков для каждого функционального блока диаграмм,
списки измененных за определенный период объектов, истории всех
изменений объектов, описания модулей, планы тестирования модулей и
подпрограмм, списки всех данных и их атрибутов, а также отношений
между их компонентами и правил их обработки.
2. Отчеты по перекрестным ссылкам включают списки всех вызывающих и
вызываемых модулей; списки объектов репозитария, к которым имеет
доступ конкретный разработчик; сводки диаграмм, использующих
конкретные данные; маршруты движения данных от входа к выходу.
3. Отчеты по результатам анализа включают сводки балансирования
диаграмм по уровням, списки неопределенных информационных
объектов, списки неполных диаграмм, сводки результатов анализа
структуры проекта, списки несогласованных в диаграммах и
репозитарии объектов, списки неиспользуемых объектов, списки
удаленных объектов.
4. Отчеты по декомпозиции объектов включают таблицы иерархии всех
объектов модели.
Пример отчета по функциональным блокам SADTмодели управления банком,
автоматически создаваемого пакетом Design/IDEF, приведен ниже.
Activity Report
[AO] Банк
Inputs: Платежные документы
Outputs: Деньги
Controls: Законы, Время, Баланс
Mechanisms: Техника, Сотрудники
Sub-Activities: [A1] Операционные залы,
[A2] Управление банком,
[A3] Центральный банк
[A1] Операционные залы
Inputs: Платежные документы
Outputs: Принятые платежные документы
Controls: Законы, Продолжит, раб. дня, Остатки счетов клиентов
Mechanisms: Сотрудники, Терминал БД
[A2] Управление банком
Inputs: Принятые платежные документы
Outputs: (Unlabled), Деньги, (Unlabled)
Controls: Спец. законы, Расчет баланса, Срок обработки
Mechanisms: Управленческий персонал, Компьютеры
[A3] Центральный банк
Inputs: (Unlabled)
Outputs: Деньги, (Unlabled)
Controls: Срок отправки
Mechanisms: Экспедиторы, Автомашины
Done
Важные функции управления и контроля проекта также реализуются на
основе репозитария. В частности, через репозитарий может осуществляться
контроль безопасности (ограничения доступа, привилегии доступа), контроль
версий, контроль изменений и др.
Поддержка процесса проектирования и разработки
---------------------------------------------------------------------
При поддержке процесса проектирования и разработки основную роль
играют следующие возможности CASEпакетов: покрытие ЖЦ, поддержка
прототипирования, поддержка структурных методологий, автоматическая
кодогенерация.
При покрытии ЖЦ наибольшее внимание уделяется его критическим этапам
- анализу требований и проектированию спецификаций. Последние являются
основой всего проекта, поэтому их полнота и корректность влияют на успех
разработки в целом.
Важную роль при автоматизации ранних этапов ЖЦ играют возможности
поддержки прототипирования. Соответствующие средства используются для
определения системных требований и ответа на вопросы об ожидаемом
поведении системы. Такие средства как генераторы меню, экранов и отчетов
позволяют быстро построить прототипы пользовательских интерфейсов и
снабдить моделью функционирования системы с позиций конечного
пользователя. Использование языков четвертого поколения (4GL) позволяет
строить более сложные модели, при этом прототип позволяет промоделировать
основные функции системы, но не способен контролировать ее ожидаемое
поведение. Исполняемые языки спецификаций преобразуют процесс разработки в
следующий итеративный процесс: спецификации определяются и выполняются,
затем производится переопределение или корректировка. Созданные таким
образом прототипы позволяют определять, является ли проектируемая система
полной и корректной.
Поддержка структурных методологий осуществляется за счет средств их
автоматизации на следующих двух уровнях:
¦ подготовка документации, графическая поддержка построения
структурных диаграмм различных ТИПОВ, продуцирование спецификаций
для детализации функциональных блоков в диаграммах и структур
данных на нижних уровнях;
¦ корректное использование шагов обработки в методологиях.
Кодогенерация осуществляется на основе репозитария и позволяет
автоматически построить до 80-90% объектных кодов или текстов программ на
языках высокого уровня. При этом различными CASE-пакетами поддерживаются
практически все известные языки программирования, однако наиболее часто в
качестве целевых языков выступают COBOL, С и ADA. Средства кодогенерации
по отношению к полноте целевого продукта разделяются на средства генерации
каркаса ПО и средства генерации полного продукта. В первом случае
автоматически строится откомментированная логика (потоки управления) ПО, а
также коды для БД, файлов, экранов, отчетов и т.п., остальные фрагменты ПО
кодируются вручную. Во втором случае из проектных спецификаций
генерируется полная документированная программа, включая выполняемый код,
пользовательскую и программную документацию, наборы тестов и т.д. Все эти
компоненты полной программы связываются в единый объект, хранящийся в
репозитарии для облегчения доступа и сопровождения.
|