CASE-технологии
CASE-техноло́гии (Разработка программного обеспечения при помощи компьютеров; от англ. Сomputer Aided Software Engineering – CASE), методы и инструментальные программные средства, программные инструменты для разработки программного обеспечения (ПО). CASE-технологии по своему назначению аналогичны инструментам автоматизированного проектирования, которые используются для проектирования микропроцессоров, только CASE-технологии используются для проектирования и разработки программных систем. CASE-технологии призваны повышать производительность разработчиков и способствовать повышению надёжности, упрощению модернизации и сопровождения созданных при помощи CASE-технологий программных систем. CASE-технологии часто связывают со средствами разработки информационных систем, имеющих в своём составе базы данных, хотя спектр типов программного обеспечения, для которых создаются и используются CASE-технологии, значительно шире.
В англоязычной литературе термин «CASE» используется без второй части «-технологии». Возможно, это связано с различием значений термина «технология» в русском и английском языках. В русском языке под программной технологией понимается процесс, построенный на определённой концепции (методологии) и поддержанный программными инструментами. В англоязычной литературе технологией часто называют конкретный программный продукт, обычно обеспечивающий инфраструктурные функции, или, как говорят, платформу. Примером такой технологии является .Net – технология, которая предоставляет поддержку времени исполнения (англ. run-time support) для программных продуктов, разработанных, например, на C# или Visual Basic.
CASE-средством называется некоторый программный продукт (комплекс инструментов), поддерживающий некоторую CASE-технологию. Так, имеется широкий набор CASE-средств для поддержки CASE-технологий объектно-ориентированной разработки программ на основе унифицированного языка моделирования (англ. Unified Modeling Language – UML). В состав CASE-средства может входить несколько различных инструментов, например графический редактор и генератор программ на каком-либо языке программирования или генератор тестов. Вместе с тем нередко само CASE-средство называется инструментом (англ. CASE tool).
История появления CASE-технологий
Одним из первых CASE-средств называют комплекс программ для проектирования и оптимизации информационных систем (англ. ISDOS), работа над которым началась в 1968 г. в Мичиганском университете, хотя термина «CASE» в то время ещё не было. Уже в начале 1990 г. (PC Magazine. 1990) более 100 компаний предлагали почти 200 различных CASE-средств. В СССР CASE-технологии в основном разрабатывались для систем реального времени и встроенных систем. Прообразами CASE-средств были специализированные комплексы разработки и интеграции программ, которые создавались в интересах военно-промышленного комплекса, например система автоматизированной разработки ПО ПРОТВА.
Можно назвать следующие виды ПО, для разработки которого уже первые CASE-средства были успешно внедрены в практику:
системы реального времени – Statemate/IBM Rational Raphsody (iLogix, IBM), SCADE (Telelogic, Esterel Technology, Ansys), Rational Rose RealTime Edition (IBM), RealTime Software Technology – RTST-технология (Терком), ГРАФИТ (ИПМ АН СССР и НИИ АП), ГРАФИТ-ФЛОКС (НПЦ АП);
компоненты стека телекоммуникационных протоколов: Telelogic Tau for SDL/MSC/TTCN (Telelogic, IBM);
информационные системы уровня предприятия: SILVERRUN (Computer Systems Advisors), ERwin/Bpwin (Logic Works, Erwin, Inc.);
программное обеспечение, построенное в парадигме объектно ориентированного программирования, в частности бизнес-приложения, включающие в себя базы данных: IBM Rational Rose (IBM).
В большей степени известны применения CASE-технологий в области построения информационных систем предприятия (ERP-систем), где они одновременно являются инструментами анализа, моделирования и оптимизации бизнес-процессов и информационных потоков. CASE-технологии в инженерии большей частью используются в крупных организациях – разработчиках сложных и уникальных программных и программно-аппаратных систем, таких как Ericcson, Motorola, Boeing, Lockheed Martin, Thales Group, Airbus, Bosch и др.
Языки и средства моделирования
CASE-технологии можно рассматривать как реализацию концепции разработки программ на основе моделей (англ. Model Driven Development – MDD), а многие CASE-средства, базирующиеся на UML или SDL, согласуются с подходом к проектированию архитектуры систем на основе моделей (англ. Model Driven Architecture – MDA). Под моделями в данном случае понимают описание архитектуры или поведения программы в графической нотации. В UML, например, имеется несколько типов диаграмм, имеющих различное назначение. Так, диаграммы классов показывают модульную структуру программы и связи между такими программными сущностями, как классы и объекты. Связи между сущностями, в свою очередь, могут быть разной природы (например, связь по наследованию). Диаграммы деятельности или диаграммы состояний предназначены для описания поведения программы.
Использование графической нотации упрощает понимание описания программных систем. Особенно это важно, когда требования к системе и её основные характеристики приходится обсуждать со специалистами в проблемных областях без опыта в программировании.
Многие из работ по развитию, стандартизации и повышению интероперабельности языков и средств моделирования важных для CASE-технологий координировались консорциумами OMG, развивающим UML и MDA, и OASIS, развивающим стандарты для моделирования бизнес-процессов BPEL, UBL, OSLC, TOSCA.
Сферы применения CASE-технологий
Задача-максимум CASE-технологий – интегрировать все инструменты и процессы разработки, организовать «бесшовные» связи между инструментами и потоками информации в рамках жизненного цикла разработки, а в пределе – эксплуатации и модернизации программных систем, и в конечном итоге получить полный контроль над процессами разработки и эксплуатации программных систем. К сожалению, прямолинейное решение такой глобальной задачи всегда приводит к чрезмерно сложному программному продукту и сложным процессам обучения персонала, поддержки и др. По этой причине все удачные CASE-средства ограничивают область своего применения тем или иным образом.
Области применения различаются:
фазами жизненного цикла, на поддержку которых нацелена CASE-технология, видами процессов этого жизненного цикла;
базовым слоем программной или программно-аппаратной платформы [архитектура ЭВМ, языки программирования, тип системы управления базами данных, технологии реализации пользовательского (графического) интерфейса];
типом разрабатываемого ПО (информационные системы на основе баз данных, системы реального времени, бизнес-приложения, например CRM-системы, бухгалтерские системы и т. д.).
Основные фазы жизненного цикла, где возможности CASE-средств наиболее востребованы, – это анализ требований, эскизное проектирование систем, обратная инженерия (англ. reverse-engineering) унаследованного ПО (англ. legacy). Вместе с тем некоторые CASE-средства также поддерживают фазы разработки, тестирования и развёртывания. Детальная модель разрабатываемой системы может служить исходной информацией для генерации исходного кода программной реализации на языке программирования, эта же модель может служить исходными данными для генерации тестов и/или оценки полноты тестового покрытия.
Современные CASE-средства объединяют в себе средства для моделирования и разработки программных систем и управления процессами разработки. К задачам управления примыкают задачи конфигурационного управления, автоматизированной сборки и интеграции компонентов программной системы. Наиболее известны в этой области средства по поддержке т. н. совместной разработки (англ. lifecycle collaboration), непрерывной разработки (англ. Continuous Integration and Continuous Delivery/Deployment tools – CI/CD), а также классические средства управления проектами для составления графиков работ, планирования ресурсов, сетевого планирования и др.
Иногда термин «CASE» трактуется расширенно как Computer Aided System Engineering или Computer Aided Software and System Engineering, что указывает на особое внимание к анализу и учёту общесистемных требований, включая организацию деятельности предприятия в целом, выделения ролей персонала и т. д. CASE-средства такой направленности в основном помогают на предпроектных фазах разработки собственно программного обеспечения, когда важно понять текущую структуру информационных потоков, схемы принятия решений, выявить критические звенья в системе управления предприятием. Такие CASE-средства могут включать специфические инструменты, например средства автоматического построения моделей бизнес-процессов (англ. process mining) на основе журналов событий, которые накапливаются в информационной системе.
Помимо создания чисто программных решений CASE-средства используются для моделирования, анализа и разработки программно-аппаратных систем управления (например, систем авионики) и для систем, включающих в себя не только компьютерные и сетевые составляющие, но и реальные физические или механические объекты, например реальные двигатели или крылья самолётов, радары и т. д. В первом случае используются средства системного или архитектурного моделирования. Основными языками моделирования здесь являются SysML (специализированный диалект UML) и AADL (англ. Architecture Analysis & Design Language). При наличии в целевой системе физических объектов говорят о моделировании киберфизических систем. В этой области пока нет общепринятых лидеров, хотя исследования и разработки CASE-средств для киберфизических систем активно ведутся.
Перечисленные выше CASE-средства в первую очередь нацелены на высокоуровневое моделирование, вместе с тем иногда к CASE-средствам относят и собственно средства разработки программ, которые также интегрируют в себе поддержку нескольких процессов разработки, например написания программного кода и его отладки. К этому классу относятся такие инструментальные средства, как интегрированные среды разработки (англ. Integrated Development Environment – IDE) и наборы инструментов для разработки программного обеспечения (англ. Software Development Kit – SDK). Помимо таких традиционных компонентов IDE, как интерактивный редактор, компилятор, редактор связей, загрузчик и отладчик, современные IDE предоставляют средства, реализующие навигацию в программном проекте, возможности автопродолжения с настройкой на язык программирования, средства разработки графических пользовательских интерфейсов, средства статического и динамического анализа, поддержку инструментации кода. Высшим достижением является поддержка согласованных графических и текстовых представлений программ, когда изменения в одном из представлений автоматически производят аналогичное изменение в другом. Однако эта технология чрезмерно сложна и практически ни один из современных разработчиков её не поддерживает в полной мере.
Преимущества CASE-технологий
После того как выбрано адекватное CASE-средство, персонал обучен и процессы жизненного цикла отлажены, CASE-средства начинают демонстрировать свои преимущества: производительность разработчиков значительно возрастает, удаётся существенно сократить сроки и расходы на создание модификаций разрабатываемых программных продуктов и на поддержку процессов верификации и валидации. В случае когда целевой программный продукт должен проходить сложную процедуру сертификации (например, при создании систем авионики), обойтись без некоторых CASE-средств просто невозможно, т. к. в сертификационный комплект документации необходимо включить свидетельства о качестве и надёжности разработанной программы, которые невозможно составить вручную.
Проблемы внедрения CASE-технологий
Недостатки CASE-средств и факторы риска при их внедрении связаны со сложностью выполнения перечисленных выше условий: CASE-средство может оказаться неадекватным классу решаемых задач, квалифицированный и обученный персонал трудно удержать в течение длительного времени, процессы жизненного цикла нелегко отладить, в частности сложно наладить мониторинг эффективности использования CASE-средств и оперативную поддержку пользователей, включая оперативное устранение проблем, выявляемых в ходе использования CASE-средств. Кроме того, внедрение CASE-средств ставит компанию-разработчика в зависимость от поставщика CASE-средства, что также является дополнительным фактором риска, т. к. переход с одного CASE-средства на другое крайне сложен.
Без учёта перечисленных факторов риска можно оказаться в плену неоправданных ожиданий, и инвестиции, вложенные в приобретение и внедрение CASE-средств, окажутся неэффективными. Вероятно, невнимание к этим вопросам в начале 2000-х гг. сначала породило прогнозы о тотальном внедрении CASE-средств, в частности на основе UML, а затем интерес к этой теме упал.
CASE-технологии продолжают развиваться, чему способствует как заинтересованность разработчиков ПО, так и развитие новых языков и новых программных технологий в целом. Активное распространение техник итеративной разработки (т. н. Agile-методов) привело к понижению интереса к CASE-средствам как средствам полной интеграции инструментов разработки в единое целое. Основное внимание в таких методологиях разработки ПО, как непрерывное развёртывание (англ. Сontinuous Deployment or Delivery – DevOps или CD), уделяется интеграции процессов жизненного цикла разработки программ.
Вместе с тем следует ожидать, что на смену «деинтеграции» через некоторое время придут подходы, ведущие к консолидации не только процессов, но и технологий и инструментов разработки программ. В настоящее время такая консолидация наблюдается в сфере разработки защищённого и надёжного ПО и создания технологий, нацеленных на обеспечение кибербезопасности и надёжности ПО ответственного назначения. В англоязычной литературе эти технологии часто называются Security Development Lifecycle (SDL), в России известны как технологии поддержки разработки доверенного ПО. Ещё одной новой волной в развитии CASE-технологий является распространение технологических платформ для «разработки программ без программирования» (англ. low-code/no-code platforms). Необходимым условием для расширения использования CASE-технологий является стандартизация интерфейсов между различными инструментами поддержки жизненного цикла. Широкое распространение принципов «совместной разработки» и «непрерывной разработки» уже позволило стандартизовать эти интерфейсы в значительной мере, т. е. возврат интереса к CASE-технологиям на новой технологической базе уже происходит.