ГЛАВА 14
К оглавлению1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1617 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
34 35 36
КОНЦЕПТУАЛЬНЫЕ ОСНОВЫ CASE - ТЕХНОЛОГИЙ
14.1. Эволюция CASE - средств
С самого начала CASE-технологии развивались с целью преодоления ограничений ручных применений методологий структурного анализа и проектирования 60-70-х годов (сложности понимания, большой трудоемкости и стоимости использования, трудности внесения изменений в проектные спецификации и т.д.) за счет их автоматизации и интеграции поддерживающих средств. Таким образом CASE-технологии не могут считаться самостоятельными методологиями, они только делают более эффективными пути их применения. CASE - не революция в программотехнике: современные СASE-средства являются естественным продолжением эволюции всей отрасли средств разработки ПО. Традиционно выделяют шесть периодов, качественно отличающихся применяемой техникой и методами разработки ПО, которые характеризуются использованием в качестве инструментальных следующих средств:
ассемблеров, дампов памяти, анализаторов;
компиляторов, интерпретаторов, трассировщиков;
символических отладчиков, пакетов программ;
систем анализа и управления исходными текстами;
CASE-средств анализа требований, проектирования спецификаций иструктуры, редактирования интерфейсов (первая генерация CASE-I);
CASE-средств генерации исходных текстов и реализации интегрированного окружения поддержки полного жизненного цикла (ЖЦ) разработки ПО(вторая генерация CASE-II).
CASE-I является первой технологией, адресованной непосредственносистемным аналитикам и проектировщикам,и включающей средства для поддержки графических моделей, проектирования спецификаций, экранных редакторов и словарей данных. Она не предназначена для поддержки полного ЖЦ и концентрирует внимание на функциональных спецификациях и начальных шагах проекта - системном анализе, определении требований, системном проектировании, логическом проектировании БД.
CASE-II отличается значительно более развитыми возможностями,улучшенными характеристиками и исчерпывающим подходом к полному ЖЦ.В ней в первую очередь используются средства поддержки автоматическойкодогенерации, а также обеспечивается полная функциональная поддержкадля порождения графических системных требований и спецификаций проектирования; контроля,анализа и связывания системной информации,а такжеинформации по управлению проектированием; построения прототипов и моделей системы; тестирования, верификации и анализа сгенерированныхпрограмм; генерации документов по проекту; контроля на соответствиестандартам по всем этапам ЖЦ. CASE-II может включать свыше 100 функциональных компонент, поддерживающих все этапы ЖЦ, при этом пользователям предоставляется возможность выбора необходимых средств и их интеграции в нужном составе.
14.2. CASE-модель жизненного цикла ПО
CASE-технологии предлагают новый, основанный на автоматизацииподход к концепции ЖЦ ПО. При использовании CASE изменяются все фазыЖЦ, при этом наибольшие изменения касаются фаз анализа и проектирования. На рис.14.1 приводится простейшая модель ЖЦ (рис.14.1а) и соответствующая CASE-модель (рис.14style='font-size:12.0pt;'>.1б), в которой фаза прототипирования заменяеттрадиционную фазу системного анализа. Необходимо отметить, что наиболее автоматизируемыми фазами являются фазы контроля проекта и кодогенерации (хотя все остальные фазы также поддерживаются CASE-средствами).
В таблице 14.1 приведены оценки трудозатрат по фазам ЖЦ. Перваястрока таблицы соответствует традиционной разработке, вторая - разработке с использованием структурных методологий проектирования, третья - разработке с использованием CASE-технологий.В таблицу 14.2 сведены основные изменения в ЖЦ при использованииCASE-технологий по сравнению с традиционной разработкой.
На рис. 14.2 представлены результаты сравнения традиционной разработки программных проектов и разработки с применением CASE-технологий.
А) B)
Рис. 14.1. Модели жизненного цикла
Таблица 14.1
Способ разработки |
Анализ |
Проектирование |
Кодирование |
Тестирование |
Традиционная разработка |
20% |
15% |
20% |
45% |
Использование структурных методологий проектирования |
30% |
30% |
15% |
25% |
Использование CASE-технологий |
40% |
40% |
5% |
15% |
Таблица 14.2
|
Традиционная разработка |
CASE |
1 |
Основные усилия – на кодирование и тестирование |
Основные усилия - на анализ и проектирование |
2 |
“Бумажные” спецификации |
Быстрое итеративное прототипирование |
3 |
Ручное кодирование |
Автоматическая кодогенерация |
4 |
Ручное документирование |
Автоматическая генерация документации |
5 |
Тестирование кодов |
Автоматический контроль проекта |
6 |
Сопровождение кодов |
Сопровождение спецификаций проектирования |
Рис. 14.2. Уменьшение затрат на проектирование программных систем за счет CASE-технологий
14.3. Состав, структура и функциональные особенности CASE-средств
CASE-средства служат инструментарием для поддержки и усиления методов структурного анализа и проектирования. Эти инструменты поддерживают работу пользователей при создании и редактировании графического проекта в интерактивном режиме, ониспособствуют организации проекта в виде иерархии уровней абстракции,выполняют проверки соответствия компонентов.Фактически CASE-средства представляют собой новый тип графически-ориентированных инструментов, восходящих к системе поддержки ЖЦ ПО.Обычно к ним относят любое программное средство, обеспечивающее автоматическую помощь при разработке ПО,его сопровождении или деятельности по управлению проектом,и проявляющее следующие дополнительные черты:
мощная графика для описания и документирования систем ПО, а такжедля улучшения интерфейса с пользователем, развивающая творческие возможности специалистов и не отвлекающая их от процесса проектированияна решение второстепенных вопросов;
интеграция,обеспечивающая легкость передачи данных между средствами и позволяющая управлять всем процессом проектирования и разработки ПО непосредственно через процесс планирования проекта;
использование компьютерного хранилища (репозитария) для всей информации о проекте, которая может разделяться между разработчиками и исполнителями как основа для автоматического продуцирования ПО и повторного его использования в будущих системах.
Помимо перечисленных основополагающих принципов графической ориентации, интеграции и локализации всей проектной информации в репозитарии в основе концептуального построения CASE-средств лежат следующие положения:
Человеческий фактор, определяющий разработку ПО как легкий,удобный и экономичный процесс.
Широкое использование базовых программных средств, получившихмассовое распространение в других приложениях (БД и СУБД, компиляторыс различных языков программирования, отладчики, документаторы, издательские системы, оболочки экспертных систем и базы знаний, языкичетвертого поколения и др.).
Автоматизированная или автоматическая кодогенерация,выполняющаянесколько видов генерации кодов: преобразования для получения документации, формирования БД,ввода/модификации данных,получения выполняемыхмашинных кодов из спецификаций ПО, автоматической сборки модулей изсловарей и моделей данных и повторно используемых программ, автоматической конверсии ранее используемых файлов в форматы новых требований.
Ограничение сложности, позволяющее получать компоненты, поддающиеся управлению, обозримые и доступные для понимания, а также обладающие простой и ясной структурой.
Доступность для разных категорий пользователей.
Рентабельность.
Сопровождаемость,обеспечивающая способность адаптации при изменении требований и целей проекта.
Интегрированный CASE-пакет содержит четыре основные компоненты:
1) Средства централизованного хранения всей информации о проектируемом ПО в течении всего ЖЦ (репозитарий) являются основой CASE-пакета. Соответствущая БД должна иметь возможность поддерживать большую систему описаний и характеристик и предусматривать надежные меры позащите от ошибок и потерь информации. Репозитарий должен обеспечивать:
инкрементный режим при вводе описаний объектов;
распространение действия нового или скорректированного описания на информационное пространство всего проекта;
синхронизацию поступления информации от различных пользователей;
хранение версий проекта и его отдельных компонент;
сборку любой запрошенной версии;
контроль информации на корректность, полноту и состоятельность.
2) Средства ввода предназначены для ввода данных в репозитарий, а также для организации взаимодействия с CASE-пакетом. Этисредства должны поддерживать различные методологии и использоватьсяна всем ЖЦ разными категориями разработчиков: аналитиками,проектировщиками, инженерами, администраторами и т. д.
3) Средства анализа, проектирования и разработки предназначены длятого, чтобы обеспечить планирование и анализ различных описаний, а также их преобразования в процессе разработки.
4) Средства вывода служат для документирования, управления проектами кодовой генерации.
Все перечисленные компоненты в совокупности должны:
поддерживать графические модели;
контролировать ошибки;
организовывать и поддерживать репозитарий;
поддерживать процесс проектирования и разработки.
14.4. Поддержка графических моделей
Графическая ориентация CASE заключается в том, что программы являются схематическими проектами и формами, которые много проще в использовании, чем многостраничные описания. Для представления программ применяются структурные диаграммы различных типов, дополнительное достоинство которых заключается в их использованиии в качестве наглядной “двумерной” документации по проекту.
Для CASE существенны 4 типа диаграмм: диаграммы функционального проектирования (для этих целей наиболее часто употребляются DFD - диаграммы потоков данных), диаграммы моделирования данных (как правило, ERD - диаграммы “сущность-связь”), диаграммы моделирования поведения (как правило, STD - диаграммы переходов состояний) и структурные диаграммы (карты), применяющиеся на этапе проектирования и описывающие отношения между модулями и внутримодульную структуру. Создание и модификация подобных диаграмм осуществляется с помощью специальных графических редакторов (диаграммеров), являющихся сервисными средствами на этапах анализа требований и проектирования спецификаций. Современные диаграммеры обеспечивают:
создание иерархически связанных диаграмм, в которых комбинируются графические и текстовые объекты;
создание и редактирование объектов в любом месте диаграммы;
создание, перемещение и выравнивание групп объектов, изменение их размеров, масштабирование;
сохранение связей между объектами при их перемещении и изменении размеров;
автоматический контроль ошибок и др.
Реализация подобных возможностей позволяет пользователю целиком сосредоточится на собственно проектировании, не отвлекаясь на решение второстепенных вопросов, связанных с размещением элементов диаграмм, их компоновкой и т.п.
Полученные диаграммы дают ясное понимание и решение проблемы, позволяют проанализировать функционирование создаваемого ПО, фиксируют связи между разработчиками, пользователями и руководителями, обеспечивают стандартизацию представления структуры программы и данных.
14.5. Контроль ошибок
Важность контроля ошибок на этапах анализа требований и проектирования спецификаций обуславливается возможностью их автоматического обнаружения на ранних этапах ЖЦ. 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 и т.п.).
14.6. Организация и поддержуа репозитария
Основные функции средств организации и поддержки репозитария - хранение, доступ, обновление, анализ и визуализация всей информации по проекту ПО. Содержимое репозитария включает не только информационные объекты различных типов, но и отношения между их компонентами, а также правила использования или обработки этих компонент (рис. 14.3). Репозитарий может хранить свыше 100 типов объектов, примерами которых являются структурные диаграммы, определения экранов и меню, проекты отчетов, описания данных, логика обработки, модели данных, модели организации, модели обработки, исходные коды, элементы данных и т.п.
Рис. 14.3. Содержимое репозитария
Каждый информационный объект в репозитарии описывается перечислением его свойств: идентификатор, имена-синонимы, тип, текстовое описание, компоненты, файл-хранилище, область значений. Кроме этого, хранятся все отношения с другими объектами (например, все объекты, в которых данный объект используется; все перекрестные ссылки), правила формирования и редактирования объекта, а также контрольная информация о времени порождения объекта, времени его последнего обновления, кем и в каком проекте он был порожден, номере версии, возможности обновления и т.п.
На основе репозитария осуществляется интеграция CASE-средств и разделение системной информации между разработчиками. При этом возможности репозитария обеспечивают несколько уровней интеграции: общий пользовательский интерфейс по всем средствам, передачу данных между средствами, интеграцию этапов разработки через единую систему представлений фаз ЖЦ, передачу данных и средств между аппаратурными платформами.
Репозитарий является базой для стандартизации документации по проекту и контроля состоятельности проектных спецификаций. Все отчеты строятся автоматически по репозитарию, ниже перечислены основные их типы:
Отчеты по содержимому включают сводки потоков данных и их компонент, сводки всех пар интерфейсов в описывающих межмодульные отношения структурных диаграммах, списки входных и выходных потоков для каждого функционального блока диаграмм, списки измененных за определенный период объектов, истории всех изменений объектов, описания модулей, планы тестирования модулей и подпрограмм, списки всех данных и их атрибутов, а также отношений между их компонентами и правил их обработки.
Отчеты по перекрестным ссылкам включают списки всех вызывающих и вызываемых модулей; списки объектов репозитария, к которым имеет доступ конкретный разработчик; сводки диаграмм, использующих конкретные данные; маршруты движения данных от входа к выходу.
Отчеты по результатам анализа включают сводки балансирования диаграмм по уровням, списки неопределенных информационных объектов, списки неполных диаграмм, сводки результатов анализа структуры проекта, списки несогласованных в диаграммах и репозитарии объектов, списки неиспользуемых объектов, списки удаленных объектов.
Отчеты по декомпозиции объектов включают таблицы иерархии всех объектов модели.
Пример отчета по функциональным блокам SADT-модели управления банком, автоматически создаваемого пакетом Design/IDEF, приведен ниже.
Activity Report
[A0] Банк
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: Экспедиторы, Автомашины
Важные функции управления и контроля проекта также реализуются на основе репозитария. В частности через репозитарий может осуществляться контроль безопасности (ограничения доступа, привелегии доступа), контроль версий, контроль изменений и др.
14.7. Поддержка процесса проектирования и разработки
При поддержке процесса проектирования и разработки основную роль играют следующие возможности CASE-пакетов: покрытие ЖЦ, поддержка прототипирования, поддержка структурных методологий, автоматическая кодогенерация.
При покрытии ЖЦ наибольшее внимание уделяется его наиболее критичным этапам - анализу требований и проектированию спецификаций. Последние являются основой всего проекта, поэтому их полнота и корректность влияют на успех разработки в целом.
Важную роль при автоматизации ранних этапов ЖЦ играют возможности поддержки прототипирования. Соответствующие средства используются для определения системных требований и ответа на вопросы об ожидаемом поведении системы. Такие средства как генераторы меню, экранов и отчетов позволяют быстро построить прототипы пользовательских интерфейсов и снабдить моделью функционирования системы с позиций конечного пользователя. Использование языков четвертого поколения (4GL) позволяет строить более сложные модели, при этом прототип позволяет промоделировать основные функции системы, но не способен контролировать ее ожидаемое поведение. Исполняемые языки спецификаций преобразуют процесс разработки в следующий итеративный процесс: спецификации определяются и выполняются, затем производится переопределение или корректировка. Созданные таким образом прототипы позволяют определять, является ли проектируемая система полной и корректной.
Поддержка структурных методологий осуществляется за счет средств их автоматизации на следующих двух уровнях:
подготовка документации, графическая поддержка построения структурных диаграмм различных типов, продуцирование спецификаций для детализации функциональных блоков в диаграммах и структур данных на нижних уровнях (для таких спецификаций введен специальный термин - “миниспецификация”);
корректное использование шагов обработки в методологиях.
Кодогенерация осуществляется на основе репозитария и позволяет автоматически построить до 80-90% объектных кодов или текстов программ на языках высокого уровня. При этом различными CASE-пакетами поддерживаются практически все известные языки программирования, однако наиболее часто в качестве целевых языков выступают COBOL, C и ADA. Средства кодогенерации по отношению к полноте целевого продукта разделяются на средства генерации каркаса ПО и средства генерации полного продукта. В первом случае автоматически строится откомментированная логика (потоки управления) ПО, а также коды для БД, файлов, экранов, отчетов и т.п., остальные фрагменты ПО кодируются вручную. Во втором случае из проектных спецификаций генерируется полная документированная программа, включая выполняемый код, пользовательскую и программную документацию, наборы тестов и т.д. Все эти компоненты полной программы связываются в единый объект, хранящийся в репозитарии для облегчения доступа и сопровождения.
Идея автоматической кодогенерации на основе модели заключается в следующем. Любая программа схематически может быть представлена в виде тройки: обрабатываемые данные, логический каркас обработки, линейные участки обработки. Схема базы данных может быть легко сгенерована на основании модели “сущность-связь”, и современные средства информационного моделирования (например, ERWin, Designer/2000 и др.) обеспечивают такую генерацию. Логика обработки генерируется на основе диаграмм потоков данных: известны алгоритмы автоматического преобразования иерархии DFD в структурные карты, а с задачей получения из структурных карт соответствующих кодов легко справляется теория компиляции. Наконец, линейным участкам соответствуют миниспецификации модели. И именно здесь лежит ключ к высокому проценту автоматически сгенерированного кода, существенно зависящему от метода задания миниспецификаций.
КОНЦЕПТУАЛЬНЫЕ ОСНОВЫ CASE - ТЕХНОЛОГИЙ
14.1. Эволюция CASE - средств
С самого начала CASE-технологии развивались с целью преодоления ограничений ручных применений методологий структурного анализа и проектирования 60-70-х годов (сложности понимания, большой трудоемкости и стоимости использования, трудности внесения изменений в проектные спецификации и т.д.) за счет их автоматизации и интеграции поддерживающих средств. Таким образом CASE-технологии не могут считаться самостоятельными методологиями, они только делают более эффективными пути их применения. CASE - не революция в программотехнике: современные СASE-средства являются естественным продолжением эволюции всей отрасли средств разработки ПО. Традиционно выделяют шесть периодов, качественно отличающихся применяемой техникой и методами разработки ПО, которые характеризуются использованием в качестве инструментальных следующих средств:
ассемблеров, дампов памяти, анализаторов;
компиляторов, интерпретаторов, трассировщиков;
символических отладчиков, пакетов программ;
систем анализа и управления исходными текстами;
CASE-средств анализа требований, проектирования спецификаций иструктуры, редактирования интерфейсов (первая генерация CASE-I);
CASE-средств генерации исходных текстов и реализации интегрированного окружения поддержки полного жизненного цикла (ЖЦ) разработки ПО(вторая генерация CASE-II).
CASE-I является первой технологией, адресованной непосредственносистемным аналитикам и проектировщикам,и включающей средства для поддержки графических моделей, проектирования спецификаций, экранных редакторов и словарей данных. Она не предназначена для поддержки полного ЖЦ и концентрирует внимание на функциональных спецификациях и начальных шагах проекта - системном анализе, определении требований, системном проектировании, логическом проектировании БД.
CASE-II отличается значительно более развитыми возможностями,улучшенными характеристиками и исчерпывающим подходом к полному ЖЦ.В ней в первую очередь используются средства поддержки автоматическойкодогенерации, а также обеспечивается полная функциональная поддержкадля порождения графических системных требований и спецификаций проектирования; контроля,анализа и связывания системной информации,а такжеинформации по управлению проектированием; построения прототипов и моделей системы; тестирования, верификации и анализа сгенерированныхпрограмм; генерации документов по проекту; контроля на соответствиестандартам по всем этапам ЖЦ. CASE-II может включать свыше 100 функциональных компонент, поддерживающих все этапы ЖЦ, при этом пользователям предоставляется возможность выбора необходимых средств и их интеграции в нужном составе.
14.2. CASE-модель жизненного цикла ПО
CASE-технологии предлагают новый, основанный на автоматизацииподход к концепции ЖЦ ПО. При использовании CASE изменяются все фазыЖЦ, при этом наибольшие изменения касаются фаз анализа и проектирования. На рис.14.1 приводится простейшая модель ЖЦ (рис.14.1а) и соответствующая CASE-модель (рис.14style='font-size:12.0pt;'>.1б), в которой фаза прототипирования заменяеттрадиционную фазу системного анализа. Необходимо отметить, что наиболее автоматизируемыми фазами являются фазы контроля проекта и кодогенерации (хотя все остальные фазы также поддерживаются CASE-средствами).
В таблице 14.1 приведены оценки трудозатрат по фазам ЖЦ. Перваястрока таблицы соответствует традиционной разработке, вторая - разработке с использованием структурных методологий проектирования, третья - разработке с использованием CASE-технологий.В таблицу 14.2 сведены основные изменения в ЖЦ при использованииCASE-технологий по сравнению с традиционной разработкой.
На рис. 14.2 представлены результаты сравнения традиционной разработки программных проектов и разработки с применением CASE-технологий.
А) B)
Рис. 14.1. Модели жизненного цикла
Таблица 14.1
Способ разработки |
Анализ |
Проектирование |
Кодирование |
Тестирование |
Традиционная разработка |
20% |
15% |
20% |
45% |
Использование структурных методологий проектирования |
30% |
30% |
15% |
25% |
Использование CASE-технологий |
40% |
40% |
5% |
15% |
Таблица 14.2
|
Традиционная разработка |
CASE |
1 |
Основные усилия – на кодирование и тестирование |
Основные усилия - на анализ и проектирование |
2 |
“Бумажные” спецификации |
Быстрое итеративное прототипирование |
3 |
Ручное кодирование |
Автоматическая кодогенерация |
4 |
Ручное документирование |
Автоматическая генерация документации |
5 |
Тестирование кодов |
Автоматический контроль проекта |
6 |
Сопровождение кодов |
Сопровождение спецификаций проектирования |
Рис. 14.2. Уменьшение затрат на проектирование программных систем за счет CASE-технологий
14.3. Состав, структура и функциональные особенности CASE-средств
CASE-средства служат инструментарием для поддержки и усиления методов структурного анализа и проектирования. Эти инструменты поддерживают работу пользователей при создании и редактировании графического проекта в интерактивном режиме, ониспособствуют организации проекта в виде иерархии уровней абстракции,выполняют проверки соответствия компонентов.Фактически CASE-средства представляют собой новый тип графически-ориентированных инструментов, восходящих к системе поддержки ЖЦ ПО.Обычно к ним относят любое программное средство, обеспечивающее автоматическую помощь при разработке ПО,его сопровождении или деятельности по управлению проектом,и проявляющее следующие дополнительные черты:
мощная графика для описания и документирования систем ПО, а такжедля улучшения интерфейса с пользователем, развивающая творческие возможности специалистов и не отвлекающая их от процесса проектированияна решение второстепенных вопросов;
интеграция,обеспечивающая легкость передачи данных между средствами и позволяющая управлять всем процессом проектирования и разработки ПО непосредственно через процесс планирования проекта;
использование компьютерного хранилища (репозитария) для всей информации о проекте, которая может разделяться между разработчиками и исполнителями как основа для автоматического продуцирования ПО и повторного его использования в будущих системах.
Помимо перечисленных основополагающих принципов графической ориентации, интеграции и локализации всей проектной информации в репозитарии в основе концептуального построения CASE-средств лежат следующие положения:
Человеческий фактор, определяющий разработку ПО как легкий,удобный и экономичный процесс.
Широкое использование базовых программных средств, получившихмассовое распространение в других приложениях (БД и СУБД, компиляторыс различных языков программирования, отладчики, документаторы, издательские системы, оболочки экспертных систем и базы знаний, языкичетвертого поколения и др.).
Автоматизированная или автоматическая кодогенерация,выполняющаянесколько видов генерации кодов: преобразования для получения документации, формирования БД,ввода/модификации данных,получения выполняемыхмашинных кодов из спецификаций ПО, автоматической сборки модулей изсловарей и моделей данных и повторно используемых программ, автоматической конверсии ранее используемых файлов в форматы новых требований.
Ограничение сложности, позволяющее получать компоненты, поддающиеся управлению, обозримые и доступные для понимания, а также обладающие простой и ясной структурой.
Доступность для разных категорий пользователей.
Рентабельность.
Сопровождаемость,обеспечивающая способность адаптации при изменении требований и целей проекта.
Интегрированный CASE-пакет содержит четыре основные компоненты:
1) Средства централизованного хранения всей информации о проектируемом ПО в течении всего ЖЦ (репозитарий) являются основой CASE-пакета. Соответствущая БД должна иметь возможность поддерживать большую систему описаний и характеристик и предусматривать надежные меры позащите от ошибок и потерь информации. Репозитарий должен обеспечивать:
инкрементный режим при вводе описаний объектов;
распространение действия нового или скорректированного описания на информационное пространство всего проекта;
синхронизацию поступления информации от различных пользователей;
хранение версий проекта и его отдельных компонент;
сборку любой запрошенной версии;
контроль информации на корректность, полноту и состоятельность.
2) Средства ввода предназначены для ввода данных в репозитарий, а также для организации взаимодействия с CASE-пакетом. Этисредства должны поддерживать различные методологии и использоватьсяна всем ЖЦ разными категориями разработчиков: аналитиками,проектировщиками, инженерами, администраторами и т. д.
3) Средства анализа, проектирования и разработки предназначены длятого, чтобы обеспечить планирование и анализ различных описаний, а также их преобразования в процессе разработки.
4) Средства вывода служат для документирования, управления проектами кодовой генерации.
Все перечисленные компоненты в совокупности должны:
поддерживать графические модели;
контролировать ошибки;
организовывать и поддерживать репозитарий;
поддерживать процесс проектирования и разработки.
14.4. Поддержка графических моделей
Графическая ориентация CASE заключается в том, что программы являются схематическими проектами и формами, которые много проще в использовании, чем многостраничные описания. Для представления программ применяются структурные диаграммы различных типов, дополнительное достоинство которых заключается в их использованиии в качестве наглядной “двумерной” документации по проекту.
Для CASE существенны 4 типа диаграмм: диаграммы функционального проектирования (для этих целей наиболее часто употребляются DFD - диаграммы потоков данных), диаграммы моделирования данных (как правило, ERD - диаграммы “сущность-связь”), диаграммы моделирования поведения (как правило, STD - диаграммы переходов состояний) и структурные диаграммы (карты), применяющиеся на этапе проектирования и описывающие отношения между модулями и внутримодульную структуру. Создание и модификация подобных диаграмм осуществляется с помощью специальных графических редакторов (диаграммеров), являющихся сервисными средствами на этапах анализа требований и проектирования спецификаций. Современные диаграммеры обеспечивают:
создание иерархически связанных диаграмм, в которых комбинируются графические и текстовые объекты;
создание и редактирование объектов в любом месте диаграммы;
создание, перемещение и выравнивание групп объектов, изменение их размеров, масштабирование;
сохранение связей между объектами при их перемещении и изменении размеров;
автоматический контроль ошибок и др.
Реализация подобных возможностей позволяет пользователю целиком сосредоточится на собственно проектировании, не отвлекаясь на решение второстепенных вопросов, связанных с размещением элементов диаграмм, их компоновкой и т.п.
Полученные диаграммы дают ясное понимание и решение проблемы, позволяют проанализировать функционирование создаваемого ПО, фиксируют связи между разработчиками, пользователями и руководителями, обеспечивают стандартизацию представления структуры программы и данных.
14.5. Контроль ошибок
Важность контроля ошибок на этапах анализа требований и проектирования спецификаций обуславливается возможностью их автоматического обнаружения на ранних этапах ЖЦ. 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 и т.п.).
14.6. Организация и поддержуа репозитария
Основные функции средств организации и поддержки репозитария - хранение, доступ, обновление, анализ и визуализация всей информации по проекту ПО. Содержимое репозитария включает не только информационные объекты различных типов, но и отношения между их компонентами, а также правила использования или обработки этих компонент (рис. 14.3). Репозитарий может хранить свыше 100 типов объектов, примерами которых являются структурные диаграммы, определения экранов и меню, проекты отчетов, описания данных, логика обработки, модели данных, модели организации, модели обработки, исходные коды, элементы данных и т.п.
Рис. 14.3. Содержимое репозитария
Каждый информационный объект в репозитарии описывается перечислением его свойств: идентификатор, имена-синонимы, тип, текстовое описание, компоненты, файл-хранилище, область значений. Кроме этого, хранятся все отношения с другими объектами (например, все объекты, в которых данный объект используется; все перекрестные ссылки), правила формирования и редактирования объекта, а также контрольная информация о времени порождения объекта, времени его последнего обновления, кем и в каком проекте он был порожден, номере версии, возможности обновления и т.п.
На основе репозитария осуществляется интеграция CASE-средств и разделение системной информации между разработчиками. При этом возможности репозитария обеспечивают несколько уровней интеграции: общий пользовательский интерфейс по всем средствам, передачу данных между средствами, интеграцию этапов разработки через единую систему представлений фаз ЖЦ, передачу данных и средств между аппаратурными платформами.
Репозитарий является базой для стандартизации документации по проекту и контроля состоятельности проектных спецификаций. Все отчеты строятся автоматически по репозитарию, ниже перечислены основные их типы:
Отчеты по содержимому включают сводки потоков данных и их компонент, сводки всех пар интерфейсов в описывающих межмодульные отношения структурных диаграммах, списки входных и выходных потоков для каждого функционального блока диаграмм, списки измененных за определенный период объектов, истории всех изменений объектов, описания модулей, планы тестирования модулей и подпрограмм, списки всех данных и их атрибутов, а также отношений между их компонентами и правил их обработки.
Отчеты по перекрестным ссылкам включают списки всех вызывающих и вызываемых модулей; списки объектов репозитария, к которым имеет доступ конкретный разработчик; сводки диаграмм, использующих конкретные данные; маршруты движения данных от входа к выходу.
Отчеты по результатам анализа включают сводки балансирования диаграмм по уровням, списки неопределенных информационных объектов, списки неполных диаграмм, сводки результатов анализа структуры проекта, списки несогласованных в диаграммах и репозитарии объектов, списки неиспользуемых объектов, списки удаленных объектов.
Отчеты по декомпозиции объектов включают таблицы иерархии всех объектов модели.
Пример отчета по функциональным блокам SADT-модели управления банком, автоматически создаваемого пакетом Design/IDEF, приведен ниже.
Activity Report
[A0] Банк
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: Экспедиторы, Автомашины
Важные функции управления и контроля проекта также реализуются на основе репозитария. В частности через репозитарий может осуществляться контроль безопасности (ограничения доступа, привелегии доступа), контроль версий, контроль изменений и др.
14.7. Поддержка процесса проектирования и разработки
При поддержке процесса проектирования и разработки основную роль играют следующие возможности CASE-пакетов: покрытие ЖЦ, поддержка прототипирования, поддержка структурных методологий, автоматическая кодогенерация.
При покрытии ЖЦ наибольшее внимание уделяется его наиболее критичным этапам - анализу требований и проектированию спецификаций. Последние являются основой всего проекта, поэтому их полнота и корректность влияют на успех разработки в целом.
Важную роль при автоматизации ранних этапов ЖЦ играют возможности поддержки прототипирования. Соответствующие средства используются для определения системных требований и ответа на вопросы об ожидаемом поведении системы. Такие средства как генераторы меню, экранов и отчетов позволяют быстро построить прототипы пользовательских интерфейсов и снабдить моделью функционирования системы с позиций конечного пользователя. Использование языков четвертого поколения (4GL) позволяет строить более сложные модели, при этом прототип позволяет промоделировать основные функции системы, но не способен контролировать ее ожидаемое поведение. Исполняемые языки спецификаций преобразуют процесс разработки в следующий итеративный процесс: спецификации определяются и выполняются, затем производится переопределение или корректировка. Созданные таким образом прототипы позволяют определять, является ли проектируемая система полной и корректной.
Поддержка структурных методологий осуществляется за счет средств их автоматизации на следующих двух уровнях:
подготовка документации, графическая поддержка построения структурных диаграмм различных типов, продуцирование спецификаций для детализации функциональных блоков в диаграммах и структур данных на нижних уровнях (для таких спецификаций введен специальный термин - “миниспецификация”);
корректное использование шагов обработки в методологиях.
Кодогенерация осуществляется на основе репозитария и позволяет автоматически построить до 80-90% объектных кодов или текстов программ на языках высокого уровня. При этом различными CASE-пакетами поддерживаются практически все известные языки программирования, однако наиболее часто в качестве целевых языков выступают COBOL, C и ADA. Средства кодогенерации по отношению к полноте целевого продукта разделяются на средства генерации каркаса ПО и средства генерации полного продукта. В первом случае автоматически строится откомментированная логика (потоки управления) ПО, а также коды для БД, файлов, экранов, отчетов и т.п., остальные фрагменты ПО кодируются вручную. Во втором случае из проектных спецификаций генерируется полная документированная программа, включая выполняемый код, пользовательскую и программную документацию, наборы тестов и т.д. Все эти компоненты полной программы связываются в единый объект, хранящийся в репозитарии для облегчения доступа и сопровождения.
Идея автоматической кодогенерации на основе модели заключается в следующем. Любая программа схематически может быть представлена в виде тройки: обрабатываемые данные, логический каркас обработки, линейные участки обработки. Схема базы данных может быть легко сгенерована на основании модели “сущность-связь”, и современные средства информационного моделирования (например, ERWin, Designer/2000 и др.) обеспечивают такую генерацию. Логика обработки генерируется на основе диаграмм потоков данных: известны алгоритмы автоматического преобразования иерархии DFD в структурные карты, а с задачей получения из структурных карт соответствующих кодов легко справляется теория компиляции. Наконец, линейным участкам соответствуют миниспецификации модели. И именно здесь лежит ключ к высокому проценту автоматически сгенерированного кода, существенно зависящему от метода задания миниспецификаций.