Введение

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

История

Проект "Разработка и оптимизация информационных систем" (ISDOS), начатый в 1968 году в Мичиганском университете, вызвал значительный интерес к самой идее использования компьютерных систем для помощи аналитикам в сложнейшем процессе анализа требований и разработки систем. Ряд работ Дэниела Тейхроу вдохновили целое поколение энтузиастов потенциалом автоматизированной разработки систем. Его инструмент "Язык описания проблем / Анализатор описания проблем" (PSL/PSA) был инструментом CASE, хотя термин появился позже. Другое важное направление возникло как логическое расширение словаря данных базы данных. Расширяя спектр хранимых метаданных, атрибуты приложения можно было хранить в словаре и использовать во время выполнения. Этот "активный словарь" стал предшественником современных возможностей разработки, основанной на моделях. Однако активный словарь не предоставлял графического представления метаданных. Именно объединение концепции словаря, содержащего метаданные аналитиков, полученные в результате использования интегрированного набора методов, с графическим представлением этих данных привело к появлению ранних версий CASE-средств. Следующим игроком на рынке стал Excelerator от Index Technology из Кембриджа, штат Массачусетс. В то время как DesignAid работал на сетевых микрокомпьютерах Convergent Technologies, а затем Burroughs Ngen, Index запустил Excelerator на платформе IBM PC/AT. Хотя на момент запуска и в течение нескольких лет платформа IBM не поддерживала сетевые соединения или централизованную базу данных, как машины Convergent Technologies или Burroughs, привлекательность IBM была сильна, и Excelerator завоевал популярность. Сразу после Excelerator появилось множество предложений от таких компаний, как Knowledgeware (Джеймс Мартин, Фран Таркентон и Дон Аддингтон), CA Gen от Texas Instrument и инструментарий FOUNDATION от Andersen Consulting (DESIGN/1, INSTALL/1, FCP). Инструменты CASE достигли пика своей популярности в начале 1990-х годов. По данным журнала PC Magazine за январь 1990 года, более 100 компаний предлагали почти 200 различных CASE-средств. С упадком мэйнфреймов, AD/Cycle и крупные CASE-средства исчезли, освободив рынок для современных CASE-средств. Многие лидеры рынка CASE начала 1990-х годов были приобретены компанией Computer Associates, включая IEW, IEF, ADW, Cayenne и Learmonth & Burchett Management Systems (LBMS). Другой тенденцией, способствовавшей эволюции CASE-средств, был рост популярности объектно-ориентированных методов и инструментов. Большинство поставщиков инструментов добавили некоторую поддержку объектно-ориентированных методов и инструментов. Кроме того, появились новые продукты, разработанные с нуля для поддержки объектно-ориентированного подхода. Andersen разработал проект Eagle как альтернативу Foundation. Несколько ведущих экспертов в области объектно-ориентированной разработки разработали свои собственные методологии и наборы CASE-средств: Джейкобсон, Рамбо, Буч и другие. В конечном итоге эти разнообразные наборы инструментов и методы были стандартизированы под руководством Объектного управления группы (OMG). Единый язык моделирования (UML) OMG в настоящее время широко признан отраслевым стандартом для объектно-ориентированного моделирования.

Инструменты

Инструменты CASE поддерживают конкретные задачи в жизненном цикле разработки программного обеспечения. Их можно разделить на следующие категории:
Бизнес- и аналитическое моделирование: инструменты графического моделирования. Например, E/R-моделирование, объектное моделирование и т.д. Разработка: фазы проектирования и реализации жизненного цикла. Отладочные среды. Например, IISE LKO. Верификация и валидация: анализ кода и спецификаций на корректность, производительность и т.д. Управление конфигурацией: контроль за добавлением и извлечением объектов и файлов из репозитория. Например, SCCS, IISE. Метрики и измерения: анализ кода на сложность, модульность (например, отсутствие операторов "goto"), производительность и т.д. Управление проектами: управление планами проектов, назначением задач, составлением расписания. Другой распространенный способ классификации инструментов CASE – разделение на Upper CASE и Lower CASE. Инструменты Upper CASE поддерживают бизнес- и аналитическое моделирование. Они поддерживают традиционные диаграммы, такие как ER-диаграммы, диаграммы потоков данных, структурные схемы, деревья решений, таблицы решений и т.д. Инструменты Lower CASE поддерживают этапы разработки, такие как физическое проектирование, отладка, кодирование, тестирование, интеграция компонентов, сопровождение и обратная разработка. Все остальные виды деятельности охватывают весь жизненный цикл и применимы как к Upper CASE, так и к Lower CASE.

Окружающая среда

Окружающая среда – это набор CASE-инструментов или рабочих мест, предназначенный для поддержки полного процесса разработки программного обеспечения. Это отличается от инструментов, ориентированных на конкретную задачу или определенный этап жизненного цикла. CASE-среды классифицируются Фугеттой следующим образом:

Наборы инструментов (Toolkits): Слабо связанные наборы инструментов. Обычно они построены на рабочих местах операционных систем, таких как Unix Programmer's Workbench или набор VMS VAX. Интеграция в них обычно осуществляется посредством конвейеров или других базовых механизмов для обмена данными и передачи управления. Простота интеграции является одновременно и преимуществом, и недостатком. Простая передача параметров с использованием технологий, таких как скрипты оболочки, не обеспечивает такой сложной интеграции, как общая репозиторная база данных.

Четвертое поколение (Fourth generation): Эти среды также известны как 4GL (среды языков четвертого поколения), поскольку ранние среды были разработаны вокруг конкретных языков, таких как Visual Basic. Они стали первыми средами, обеспечивающими глубокую интеграцию нескольких инструментов. Как правило, эти среды были ориентированы на определенные типы приложений, например, приложения с пользовательским интерфейсом, выполняющие стандартные атомарные транзакции к реляционной базе данных. Примеры: Informix 4GL и Focus.

Языко-ориентированные (Language centered): Среды, основанные на одном, часто объектно-ориентированном языке, например, Symbolics Lisp Genera или VisualWorks Smalltalk от Parcplace. В этих средах все ресурсы операционной системы были представлены как объекты в объектно-ориентированном языке. Это обеспечивает мощные возможности отладки и графического представления, но разработанный код в основном ограничен конкретным языком. По этой причине эти среды занимали нишевую позицию в CASE. Их использование было в основном ограничено прототипированием и проектами НИОКР. Основной идеей этих сред был пользовательский интерфейс "модель-представление-контроллер", который облегчал поддержание согласованности нескольких представлений одного и того же проекта с базовой моделью. Архитектура MVC была принята и другими типами CASE-сред, а также многими приложениями, разработанными с их использованием.

Интегрированные (Integrated): Эти среды – пример того, о чем в первую очередь думают большинство ИТ-специалистов, когда речь заходит о CASE. Примеры: AD/Cycle от IBM, FOUNDATION от Andersen Consulting, система ICL CADES и DEC Cohesion. Эти среды стремятся охватить весь жизненный цикл разработки, от анализа до сопровождения, и предоставляют интегрированное хранилище баз данных для хранения всех артефактов процесса разработки программного обеспечения. Интегрированное хранилище программного обеспечения было определяющей характеристикой этих инструментов. Они предоставляли несколько различных моделей проектирования, а также поддержку кода на разнородных языках. Одной из основных целей этих сред была "двусторонняя разработка" (round trip engineering): возможность вносить изменения на уровне проектирования и автоматически отражать их в коде и наоборот. Эти среды также обычно были связаны с определенной методологией разработки программного обеспечения. Например, набор FOUNDATION CASE от Andersen был тесно связан с методологией Andersen Method/1.

Процессо-ориентированные (Process centered): Это наиболее амбициозный тип интеграции. Эти среды стремятся не только формально определить объекты анализа и проектирования процесса разработки программного обеспечения, но и сам процесс, а также использовать этот формальный процесс для управления и направления программных проектов. Примеры: East, Enterprise II, Process Wise, Process Weaver и Arcadia. По определению, эти среды связаны с определенной методологией, поскольку сам процесс разработки программного обеспечения является частью среды и может контролировать многие аспекты вызова инструментов.

На практике различие между рабочими местами и средами было гибким. Например, Visual Basic был рабочей платформой для программирования, но многие считали его и средой 4GL. Основными характеристиками, отличающими рабочие места от сред, были глубокая интеграция через общий репозиторий или общий язык, а также наличие определенной методологии (в интегрированных и процессо-ориентированных средах) или специфики предметной области (в 4GL).