Что такое CASE-система?
В последние годы на мировом рынке программных продуктов появилось много программных средств, называемых CASE-cucme-мами, CASE-инструментами или CASE-средст-вами (CASE-tools). Слово CASE является сокращением от Computer Aided Software Engineering. В русскоязычной литературе нет общепринятого соответствующего термина. Мы предлагаем русский термин, который является достаточно разумной и благозвучной калькой английского: "Программная Инженерия, Поддерживаемая Компьютерами" (или "с Помощью Компьютеров"), сокращенно — ПИПК.
CASE-Системы и соответствующий термин появились не в научных, а в производственно-коммерческих кругах. Теоретическое осмысление этого явления и его места в методологии и технологии программирования (программной инженерии) только начинается [1]. На русском языке имеются довольно поверхностные обзоры коммерческих CASE-систем [2, 15], в которых кратко перечисляются средства, включенные в ряд конкретных систем, и упор делается на внешние характеристики интерфейса.
Рассмотрим сначала спектр значений, фактически покрываемых термином CASE-система, а также соотношение этого спектра с давно используемыми в методологии программирования понятиями среды программирования (programming environment) и среды разработки программ (software development environment -кстати, букву Е в CASE расшифровывают и как Environment).
Если термин CASE понимать буквально, то CASE-системой можно считать всякую программную систему, помогающую в разработке программ, включая любой транслятор или систему программирования. Но CASE-системы, первоначально появившиеся на рынке программных продуктов под этим названием (такие как Exelerator [2]), — это системы, поддерживающие.этап анализа проектируемой системы и фиксацию результатов этой работы в виде соответствующих спецификаций. По мере того как слово CASE входило в моду, им стали называть самые разные инструментальные программные средства, относящиеся к автоматизации проектирования и разработкам программ. Поэтому имеет смысл ввести' некоторую классификацию CASE-систем.
Прежде всего CASE-системы классифицируются по уровням (или этапам) разработки программ, которые они охватывают, т.е. содержат средства, помогающие в работах, относящихся к этим уровням или этапам. Различают верхние (upper) и нижние (lower) системы [7].
Верхние CASE-системы поддерживают работы по уточнению постановки задачи и анализу проектируемых систем, в ходе которых составляются, корректируются и анализируются спецификации систем. Так как верхние CASE-системы поддерживают те же виды работ, что и упомянутые выше первоначальные CASE-системы, их называют еще нормальными [10].
Нижние CASE-системы поддерживают работы по проектированию программ, следующие за системным анализом, а также в той или иной степени собственно построение программ (кодирование, генерацию кода). Границу между верхними и нижними CASE-системами проводят и несколько иначе, а также выделяют средние (middle) CASE-системы, поддерживающие уровень, промежуточный между верхним и нижним и частично пересекающийся с ними.
Для верхних CASE-систем характерно использование графических средств, позволяющих строить, преобразовывать и анализировать разные виды диаграмм, сетей, деревьев. Появление первых CASE-систем связано с развитием графических средств на персональных компьютерах и рабочих станциях. В этом смысле они как системы автоматизации проектирования программ подобны системам автоматизации проектирования промышленных изделий (САПР), в которых главенствующую роль играют графические средства.
По степени интегрированности и полноте охвата работ различают менее полные и слабо интегрированные CASE-инструментарии (toolkit) и более полные и интегрированные CASE-АРМы (workbench) [7]. Сопоставим интегрированные CASE-системы со средами программирования и средами разработки программ. Интеграция, обеспечиваемая типичной средой рограммирования, касается средств более низкого уровня (этапа) разработки программ, чем'в CASE-системах (компилятор с языка программирования, текстовой редактор, отладчик). В типичных интегрированных средах разработки программ интеграция охватывает, кроме указанных средств среды программирования, еще и средства, поддерживающие коллективную работу над большими и сложными проектами (соответствующим образом организованную библиотеку программной документации, средства связи между разработчиками и отслеживания версий).
Таким образом, специфика нормальных CASE-систем, отличающая их от традиционных сред программирования и сред разработки программ, состоит в поддержке верхних уровней разработки программ. Однако тенденция развития CASE-систем и сред разработки программ, называемых также фабриками программ (software factory), заключается в том, чтобы обеспечить большую полноту охвата этапов жизненного цикла программ и усилить интеграцию разнородных средств, поддерживающих разные виды работ.
Какого рода программные средства характерны для нормальной (верхней) CASE-систем ы? Это средства следующих четырех видов. Во-первых, это графический редактор, позволяющий быстро строить, преобразовывать и просматривать диаграммы определенного вида. Таким редактором можно не только рисовать картинки, но и конструировать диаграммы из шаблонных элементов, выбирая их с помощью меню и пиктограмм и указывая их положение на экране. Во-вторых - это база данных (справочник, библиотека, энциклопедия), в которой можно хранить спецификации и относящуюся к ним информацию в соответствии с подходящей моделью данных и получать ответы на запросы. В-третьих, это средства анализа спецификаций, зависящие от типа используемых диаграмм (графического языка спецификации) и модели данных. В-четвертых, это средства про-тотипирования, позволяющие выполнять (интерпретировать) на компьютере спецификации в соответствии с их семантикой и благодаря этому демонстрировать их как прототипы проектируемых программ.
Нормальные CASE-системы могут содержать не все эти средства (например, может не быть средств прототипирования), и возможности средств того или иного вида могут быть представлены в них по-разному (например графический редактор только для одного типа диаграмм или же для нескольких типов).
Методы спецификации программ в CASE-системах
Методологической основой нормальных (верхни-х) CASE-систем являются методы спецификации программ. Спецификацией программы (program specification) называют описание задачи, которую должна решать программа. Задача может быть как простой функцией, так и сложной системой. В последнем случае постановка задачи становится анализом проектируемой системы, а постановщика задач называют системным аналитиком. Результатом постановки задачи или системного анализа является спецификация, в которой фиксируется понимание задачи или проектируемой системы. Спецификация большой н сложной системы включает в себя много подспецификаций, так же как большая программа включает много подпрограмм (модулей). Людей, составляющих спецификации, называют еще спецификаторами (specifier), а спецификацией называют и деятельность по разработке спецификаций.
Для поддержки спецификации программ как деятельности, отличающейся от разработки собственно программ, создано большое количество разнообразных языков спецификации (см. [13, 16]). Они отличаются от языков программирования более высоким уровнем и выразительностью, ориентацией на удобство, естественность и наглядность описания задач и систем. В коммерческих CASE-системах используются графические языки спецификации, позволяющие применять в спецификациях наглядные графические средства описания - диаграммы того или иного типа, сети, деревья и т.д. Такие языки появились в 70-х годах задолго до появления коммерческих CASE-систем и использовались как вручную, так и с компьютерной поддержкой на больших ЭВМ [14]. Однако только благодаря развитию и широкому распространению относительно дешевых графических средств на микроЭВМ и рабочих станциях стало рентабельным создание коммерческих CASE-систем, использующих графические языки спецификации.
В коммерческих CASE-системах чаще всего используются три графических языка спецификации, основанные на диаграммах следующих типов:
1) диаграммах потоков данных (data flow digram),
2) диаграммах объектов - связей (entity — relationship diagram),
3) диаграммах переходов состояний (state- transition diagram).
Для описания иерархической структуры систем и спецификаций широко используются деревья (диаграммы структур). Первый тип диаграмм обычно применяется для описания систем обработки данных в бизнесе, второй -для описания информационных систем (баз данных), третий - для описания систем реального времени.
Диаграмма потоков данных состоит из узлов трех типов: узлов обработки данных, узлов хранения данных н внешних узлов, представляющих внешние по отношению к описываемой диаграммой системе источники или потребители данных. Дуги (стрелки) в диаграмме соответствуют потокам данных, передаваемых от узла к узлу. Они помечены именами соответствующих данных. На рисунке 1 показана диаграмма потоков данных, описывающая упрощенную систему обработки заказов на продук-
![]() ![]() ![]() ![]() |