Научная статья на тему 'АВТОМАТИЧЕСКАЯ КОДОГЕНЕРАЦИЯ И РЕИНЖИНИРИНГ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ПРИ СОЗДАНИИ АВТОМАТИЗИРОВАННЫХ И АВТОМАТИЧЕСКИХ СИСТЕМ'

АВТОМАТИЧЕСКАЯ КОДОГЕНЕРАЦИЯ И РЕИНЖИНИРИНГ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ПРИ СОЗДАНИИ АВТОМАТИЗИРОВАННЫХ И АВТОМАТИЧЕСКИХ СИСТЕМ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
199
13
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
АВТОМАТИЗИРОВАННЫЕ СИСТЕМЫ / AUTOMATED SYSTEMS / ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ / SOFTWARE / ЖИЗНЕННЫЙ ЦИКЛ / LIFECYCLE / АВТОМАТИЧЕСКАЯ КОДОГЕНЕРАЦИЯ / AUTOMATED CODE GENERATION / АВТОМАТИЧЕСКОЕ ДОКУМЕНТИРОВАНИЕ СИСТЕМ И ПРОГРАММ / AUTOMATED SOFTWARE AND SYSTEMS DOCUMENTATION / ПРЯМОЕ И ОБРАТНОЕ ПРОЕКТИРОВАНИЕ / DIRECT AND REVERSE ENGINEERING / РЕИНЖИНИРИНГ / REENGINEERING / МОДЕЛИ / MODELS / МЕТОДЫ / METHODS / СРЕДСТВА АВТОМАТИЗАЦИИ ПРОЦЕССОВ СОЗДАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ И СИСТЕМ / SOFTWARE AND SYSTEMS DEVELOPMENT AUTOMATION TOOLS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Иванов Ф.Ф.

В статье анализируются эволюция и состояние кодогенерации при выполнении работ по созданию, внедрению и сопровождению программного обеспечения и автоматизированных систем. Несмотря на то, что эта работа была начата с момента построения первого транслятора (автоматическое кодирование программы на машинном языке с искусственного, алгоритмического), до сих пор труд проектировщика, программиста, кодировщика автоматом не заменен. Статья посвящена средствам автоматизации стадий жизненного цикла автоматизированных информационных систем, а также фирмам, методологиям, технологиям, средствам, способным уже сегодня оказать существенную помощь и поддержку в создании качественного продукта в области программного обеспечения и автоматизированных систем, существенно сократить сроки выполнения этих работ, их состав и структуру.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Иванов Ф.Ф.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

AUTOMATED CODE GENERATION AND SOFTWARE REENGINEERING FOR AUTOMATED AND AUTOMATIC SYSTEMS DEVELOPMENT

The paper examines the evolution and current status of code generation for the development, implementation, and maintenance of software and automated systems. Despite the fact that this work has been performed since the first translator was invented (a system that automatically translates an artificial algorithmic language into machine codes), so far system architects and programmers have not been replaced by computers. The paper covers the automation of automated information system lifecycle stages. It also discusses what companies, methodologies, technologies, tools, are available today to significantly facilitate quality software products and automated systems development, reduce development time, and streamline their composition and structure.

Текст научной работы на тему «АВТОМАТИЧЕСКАЯ КОДОГЕНЕРАЦИЯ И РЕИНЖИНИРИНГ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ПРИ СОЗДАНИИ АВТОМАТИЗИРОВАННЫХ И АВТОМАТИЧЕСКИХ СИСТЕМ»

УДК 004.78:004.4'2

АВТОМАТИЧЕСКАЯ КОДОГЕНЕРАЦИЯ И РЕИНЖИНИРИНГ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ПРИ СОЗДАНИИ АВТОМАТИЗИРОВАННЫХ И АВТОМАТИЧЕСКИХ

СИСТЕМ

Ф. Ф. Иванов

Сургутский государственный университет, iff777@yandex.ru

В статье анализируются эволюция и состояние кодогенерации при выполнении работ по созданию, внедрению и сопровождению программного обеспечения и автоматизированных систем. Несмотря на то, что эта работа была начата с момента построения первого транслятора (автоматическое кодирование программы на машинном языке с искусственного, алгоритмического), до сих пор труд проектировщика, программиста, кодировщика автоматом не заменен. Статья посвящена средствам автоматизации стадий жизненного цикла автоматизированных информационных систем, а также фирмам, методологиям, технологиям, средствам, способным уже сегодня оказать существенную помощь и поддержку в создании качественного продукта в области программного обеспечения и автоматизированных систем, существенно сократить сроки выполнения этих работ, их состав и структуру.

Ключевые слова: автоматизированные системы, программное обеспечение, жизненный цикл, автоматическая кодогенерация, автоматическое документирование систем и программ, прямое и обратное проектирование, реинжиниринг, модели, методы, средства автоматизации процессов создания программного обеспечения и систем.

AUTOMATED CODE GENERATION AND SOFTWARE REENGINEERING FOR AUTOMATED

AND AUTOMATIC SYSTEMS DEVELOPMENT

F. F. Ivanov

Surgut State University, iff777@yandex.ru

The paper examines the evolution and current status of code generation for the development, implementation, and maintenance of software and automated systems. Despite the fact that this work has been performed since the first translator was invented (a system that automatically translates an artificial algorithmic language into machine codes), so far system architects and programmers have not been replaced by computers. The paper covers the automation of automated information system lifecycle stages. It also discusses what companies, methodologies, technologies, tools, are available today to significantly facilitate quality software products and automated systems development, reduce development time, and streamline their composition and structure.

Keywords: automated systems, software, lifecycle, automated code generation, automated software and systems documentation, direct and reverse engineering, reengineering, models, methods, software and systems development automation tools.

В этой статье описывается состояние с автоматической кодогенерацией в процессе создания автоматизированных систем обработки информации и управления (АСОИУ). Прежде всего, будет представлена именно автоматическая кодогенерация, т.е. средства получения программного кода на основе формализованного представления предметной области, объекта автоматизации и всех бизнес-процессов на нём происходящих.

Мечта всех участников процесса создания автоматизированных систем - перейти на автоматизированное/автоматическое проектирование и программирование и реализацию в самом ближайшем будущем представляется до конца неосуществимой.

Несмотря на значительные успехи в области структурного системного анализа, соединения структурного, объектно-ориентированного и процессного подходов при проведении формализации, декомпозиции, анализа и синтеза систем, сближение целей создания автоматизированных систем по своему собственному жизненному циклу (ЖЦ), но с максимальным учётом ЖЦ продукции (для АС

управления производством, предприятием, объединением) есть ещё очень много препятствий и ограничений. Однако именно автоматическое (и даже автоматизированное) проектирование и прямое формирование физических моделей на основе логических дают реальную возможность реинжиниринга (восстановления) для целей модификации (добавления, исправления) и поддержания актуальности всех типов моделей, участвующих в анализе и синтезе, обеспечения взаимопонимания и взаимозаменяемости участников проекта на всех его стадиях.

Первые шаги по унификации многочисленных методологий системного анализа, средств проектирования и обеспечения единства в понимании проблем автоматизации на всех стадиях ЖЦ АС исключительно для быстрого, построения основных структур самой АС, позволяющих передать на плечи ЭВМ решение задач не только расчётных, но и символьной обработки, а позднее, оптимизационных, задач в области поддержки принятия решений, были сделаны еще в 60-70-е гг. прошлого столетия. Замена ручного труда программистов/кодировщиков является важной целью, она же и подведёт итог масштабных теоретических и практических изысканий в процессах формализации всех стадий жизненного цикла программного обеспечения (ПО) и автоматизированных систем (АС). Тогда появится реальная возможность навести единообразие в стандартизации и типизации всех процессов создания автоматизированных и автоматических систем, в том числе и в кодогенерации.

Автоматическая (кодогенерация) - это автоматическое создание одним исполняемым кодом (программой) другого исполняемого кода.

Явные признаки автоматической кодогенерации, а также реинжиниринга имеются в инструментарии части CASE-технологий и целых систем проектирования и программирования (методологий, моделей, нотаций и самих CASE-средств), прежде всего в новейших версиях продукта UML (2.1.1.-2.5) фирмы IBM RATIONAL SOFTWARE, с её разработкой RATIONAL ROSE [3, 9] и других в составе комплекса, а также с приобретением фирмой IBM шведской фирмы Telelogic и её интеграция с ф.RATIONAL с её современным продуктом Rhapsody [5, 6] не без влияния фирмы Rational Software. Отдельное направление фабрик программного обеспечения (Software Factories [1]), программный продукт UModel компании Altova [8] и другие также реализуют кодогенерацию, только не всегда на 100 %. Немаловажным обстоятельством для большинства указанных реализаций является наличие механизмов замкнутого реинжиниринга (прямая и обратная кодогенерация, варианты round-trip engineering), что позволяет поддерживать постоянную актуальность всех типов моделей (абстрактных, логических и физических) и обеспечивать реализацию автодокументирования.

Процесс кодогенерации с использованием моделей искусственных языков всегда был задачей на всех этапах применения ЭВМ для эффективного многоразового использования и модификации разработанных программ. До появления первых программ, написанных на каких-либо языках, вычисления производились непосредственным использованием машинных команд, строго фиксированных по построению, организации, использованию определенными правилами, допустимыми форматом конкретной вычислительной установки (ЭВМ, контроллера, микропроцессора). То есть пользователь точно выполнял ограничения ЭВМ по форматам команд, адресов, данных, состояний и т.п. Так он «разговаривал» с ЭВМ на её машинном языке.

Когда появились первые языки программирования, а это были искусственные языки записи алгоритма, возникла задача перевода программы, всех её операций, команд, данных на машинный язык с помощью программы-транслятора (компилятора, интерпретатора), которая могла преобразовывать конструкции использованного алгоритмического языка на язык машины строго по её правилам.

Программа составлялась вручную, вносилась в память машины напрямую или с технического носителя, а затем по заданию пользователя транслировалась, переводилась в двоичный формат, редактировалась (собиралась) из составных частей, входящих в исходный набор программы (подпрограммы, процедуры, функции), также системных блоков, находящихся в программных библиотеках ЭВМ и заранее представленных пользовательских сегментов, предварительно прошедших трансляцию и записанных также в специальные библиотеки. Получаемая собранная загрузочная программа называлась исполняемой (EXE-модуль, *.exe), приобретала соответствующее оформление и запускалась на выполнение или сохранялась в постоянной или временной библиотеке. Данный процесс представлен на рис. 1.

Объектный модуль, создаваемый после трансляции (*.obj), также мог быть исполняемым, если в нём не было неразрешенных ссылок. Таким же исполняемым является динамически загружаемый

Программа на исходном алгоритмическом языке

Трансляция,

перевод в машинный формат

Редактиров ание

связей (сборка). Исполняемая

разрешение _^ (загрузочная)

внешних г программа

и внутренних

ссылок на вызовы

Рис. 1. Традиционная кодогенерация исполняемого модуля

модуль с расширением *.dll. Нельзя не сказать и о программах, написанных на интерпретируемых языках.

Переход на языки визуально и объектно-ориентированные привели к новым представлениям о программном коде, который частично инкапсулировался в классы в виде методов, т.е. программный код стал частью класса, который наследуется всеми объектами и считается готовым для исполнения при наступлении некоторых ожидаемых событий в операционной, программной среде, а также во внешней среде, включая действия оператора, пользователя. Поскольку значительное число классов является фирменной библиотекой, апробированной многократно, своеобразным репозиторием инструментальных сред, они и образуют устойчивую комбинацию, фундамент создаваемого приложения в объектно-классовой методологии, завоевавшей большую часть проектирования и программирования. Однако создаваемые самим пользователем классы и целые библиотеки имеют ту же природу, как и обычный программный код, т.е. создаются вручную на известном языке в специальном редакторе и даже для типовых классов не всегда есть методы, подготовленные специально для обработки всех событий, а в ряде случаев они содержат только шаблон, который следует заполнить вручную.

Чего же хочет программист, разработчик, член команды группы разработки от используемых инструментальных средств?

1. Для всего жизненного цикла программного обеспечения, системы должны быть средства автоматизации, а именно стадии анализа и проектирования, разработки, отладки, тестирования и документирования должны быть максимально формализованы и завершались бы созданием многочисленных: данных (информационных моделей); бизнес-процессов (функциональных моделей); состояний; поведения; объектов управления; внешней среды; интерфейсов взаимодействия; технической документации и др.

2. По завершении, например, процесса проектирования должна существовать возможность автоматического получения физических моделей: схем баз данных и знаний (БД, БЗ), компонент интерфейса, программных модулей на основе стандартных библиотек или библиотек классов, шаблонов, конфигураций, технологических цепочек, репозиториев объектов, компонент, интерфейсов и т.п.

3. Для поддержания актуальности логических моделей как на этапах разработки, отладки, тестирования, предварительных испытаний, опытной эксплуатации, так и в дальнейшем при документировании и сопровождении, необходимо обеспечение реинжиниринга (обратного преобразования) программного кода, БД, интерфейса в логические модели с целью их модификации и повторного инжиниринга.

4. Для АСОИУ также актуальны процессы управления проектом, конфигурацией, изменениями на всех стадиях жизненного цикла, которые реально возможны при таком положении, независимо от того каким вариантом создания автоматизированной системы она была создана (собственная разработка, прототипирование, готовое решение с адаптацией и настройкой, приобретение ядра АС и её модификация, аренда АС у провайдера).

Сегодня есть такие средства в составе семейства технологий UML [6, 9] фирмы IBM Rational Software, в продукте Umodel фирмы Altova [8], в разработках фирм ORACLE, BAAN, BETEC и др. Не перевелись и энтузиасты, отдельные специалисты, которые используют возможности средств проектирования, действующие методологии и упражняются в создании программного кода, как правило, на одном алгоритмическом языке.

Как ранее формировалось такое видение при создании программ? Всегда подготавливалась блок-схема, представленная графом. Блок-схема отражала алгоритм, который переводился вручную в код программы на алгоритмическом языке. И алгоритм, и блок-схема содержали сведения, полученные при анализе предметной области, являлись результатом проектирования, своеобразной формой, моде-

лью представления знаний о процессах, объектах (их свойствах), которые и становились параметрами, данными, элементами управления в программе. Всё остальное в схеме получения исполняемого кода не изменилось (рис. 2).

Составление Составление Трансляция, Редактирование связей (сборка), разрешение внешних и Исполняемая

модели обра- программы на перевод в (3aqjy304Haff)

ботки дан- исходном ал- машинный —'\ —^ программа

ных-олок- горитмиче- формат внутренних ссылок

схема ском языке на вызовы

Рис. 2. Кодогенерация с предварительным составлением блок-схемы

Оставалось теперь только научиться проводить формирование исходного текста прямо из блок-схемы, т.е. автоматически получать код. Для этого надо было создать, развить и принять стандарты на все стадии и этапы проектирования: методологию, модели, нотации и претранслятор-программу, распознающую элементы блок-схемы. Кроме этого, следовало создать шаблоны, каркасы, профили под основные существующие уже языки программирования, поскольку всё остальное уже существовало. Частично для типовых информационных процессов (ввод/вывод) формализация даже без блок-схем состоялась, поэтому первыми построителями автоматического кода были генераторы ввода/вывода. Простые информационные системы, работающие, как сегодня говорят, на основном слое (интерфейс + данные) создавалось именно таким способом. В качестве языка для генераторов использовались специальные метаданные, похожие концептуально на современные представления метаданных о предметной области, объекте автоматизации в СУБД.

К настоящему времени кодогенерация в той или иной форме состоялась. Этому способствовали и кодогенераторы, как отдельные приложения, генераторы кода на основе SQL-конструкций при обмене с БД либо средствами СУБД, либо с помощью расширений среды разработки, тем более что в недрах инфологических, физических моделей данных были метаданные, а требования пользователей трансформировались в типовые запросы. Немало было сделано для кодогенерации за счёт внедрения скриптов в web-страницы.

Приведём кратко обзор современных средств прямой или косвенной (внутренней) кодогенера-ции, а остановимся на превалирующей методологии фирмы IBM, точнее, её подразделений Rational Software и Telelogic.

Это прежде всего кодогенераторы, вошедшие в состав визуальных редакторов сред разработки. Особенно ускорился этот процесс с переходом на объектно-ориентированные среды. Тогда же появился наследуемый из классов в объекты код методов, а также многочисленные мастера, «волшебники», построители в интегрированных средах проектирования и разработки, простейшие приложения, образующие программное обеспечение информационных систем (систем обработки данных), системы взаимодействия пользователей с БД с простейшими операциями обработки данных.

Однако ни в одном случае вопрос реинжиниринга, тем более синхронного обратного проектирования не рассматривался. Обычно генерировался код на специальных языках разметки (Visual Basic, Delphi), но потом стали генерировать формы на том же языке, на котором писалась программа. Следующим шагом был перенос такого приёма в среду Web-программирования.

Такие платформы, как Java и .NET также генерируют низкоуровневый код на основе высокоуровневого. В .NET эта техника активно используется для поддержания многоязычности. В этом случае много языков высокого уровня генерируются в один язык низкого уровня.

Особо следует отметить технологию MVC (Model-View-Controller)-framework (фреймворки). Компонентами этих фреймворков являются скрипты-кодогенераторы. Одни скрипты генерируют модели на основе БД, другие генерируют контроллеры (программы) и виды (представления) на основе моделей. К ним относятся прежде всего MVC фреймворки RubyOnRails [7], CakePHP [11].

В C# применяется специализированный язык LINQ (Language Integrated Query). В технологии LinqToObject используется генерация анонимных методов и классов, а в средстве LinqToSql -генерация SQL кода для Microsoft - SQL Server. Подобная реализация успешно используется и другими производителями современных средств разработки для многих источников данных. С помощью высокоуровневого языка генерируются реализации под конкретные типы данных. Разработки фирмы

ORACLE ориентированы на серверную, внутреннюю кодогенерацию, а также на динамический SQL. Используются возможности PL/SQL как процедурного языка для компоновки генерируемого текста и, одновременно, как языка доступа к БД для выборки и обработки метаданных. Надо признать, что получаемый код чрезвычайно сложен.

Следует упомянуть здесь CodeSmith [12] - это профессиональный кодогенератор на основе шаблонов (он включает в себя Code Smith Explorer и Code Smith Studio и шаблоны для генерации кода на C#. VB.NET и T-SQL), StringTemplate [14], Groovy [13], RubyOnRails, Xpand [15], Codegen. Особый интерес вызывает метод метапрограммирования (scaffolding) для создания web-приложений, работающих с базами данных. Он же успешно внедрён в MVC-фреймворках: Grails, Yii, Ruby on Rails, Django, Phalcon PHP, Symfony, ASP.NET MVC.

Разработчик в них задаёт спецификации, по которым в дальнейшем генерируется программный код для операций создания определённых записей в БД, их чтения, обновления и удаления. Стоит указать и на шаблоны в C++ как вариант кодогенерации.

Когда стало ясно, что можно и нужно продолжать углубляться в абстрактные модели для всех элементов систем (данных, программ, интерфейсов, архитектур), что растущее многообразие авторских методологических разработок должно быть укрощено единым подходом, появился структурный системный анализ и проектирование (ССАиП), но, к сожалению, опять в большом ассортименте. Выработаны принципы, методологии, модели и средства. Это и SADT, DFD, STD (функциональное, информационное, технологическое моделирование, бизнес-моделирование), стандарты на IDEF0, IDEF1X, IDEF2, IDEF3 и последующие IDEF4-IDEF14. Вновь открытые объектно-ориентированные и процедурный (ООАиП) подходы ускорили процесс создания и внедрения CASE-технологий как по ССАиП, так ООАиП, а затем стали возникать интегрированные методологии и средства - ARIS [4], ARENA [2], ORACLE, BETEC [10] и др.

Наиболее прогрессивным направлением, придавшим в последние 10-15 лет ускорение всем этим процессам, включая автоматическую кодогенерацию, оказалось объектно-ориентированное. Такие авторы, как Гради Буч, Джеймс Рамбо, Ивар Якобсон, каждый со своей методологией (ООП, ОМТ, OOSE) в составе фирмы RATIONAL SOFTWARE, вошедшей в 2003 г. в состав мощной фирмы IBM, смогли за 18 лет с 1997 г. создать и распространить унифицированный язык UML (версии от UML 0,9 - 1995 г., UML 1.1. - 1997 г., UML 2.0. - 2005 г., UML 2.4.1. - 2011 г., до UML-2.5 - 2015 г.), целое направление построения моделей, максимально описывающих предметную область, статические, поведенческие и модели взаимодействия, приблизили и саму фирму и всех партнёров, и конкурентов к варианту замкнутого инжиниринга в создании автоматизированных систем.

Надо сразу оговорить, что создание систем на основе закупаемых типовых проектных решений (SAP R3, ГАЛАКТИКА), СУБД (ORACLE), CASE-средств (ALL FUSION MODELER SUITE), конфигураций (1QERP) и других не рассматривается, поскольку речь идёт о простейшем способе использовании средств формализации, графических нотаций методологий для формирования программного кода автоматически, прямо из графического инструментария среды.

В последние десять-пятнадцать лет на основе визуального и объектно-ориентированного проектирования и программирования создавался программный код, поддерживающий взаимодействие с базой данных, организацию простейших операций на основе базового интерфейса информационно-справочных систем и даже реализацию поисковых функций, фильтрации, применения вычислительной обработки согласно выбранным данным.

В настоящее время можно назвать успешными разработки Rational/Telelogic Rhapsody для создания систем реального времени (встраиваемых систем). Telelogic Rhapsody - среда разработки с использованием языков моделирования UML 2.1 и OMG SysML, предназначенная для проектирования, разработки и тестирования встраиваемых систем и программного обеспечения реального времени. В этом продукте успешно реализована итерационная схема «модель - код», которая просто и надёжно синхронизирует весь процесс проектирования и разработки, включая тестирование и документирование. Естественно этому способствовало совместное сотрудничество как с подразделениями самой фирмы IBM, так и с фирмой IBM Rational Software с её такими же успешными разработками в виде, например, Rational Rose Realtime. И тот, и другой продукт обеспечивают 100 %-ое формирование исполняемого кода, а сам реинжиниринг обеспечивается синхронно по цепочке «модель-код». Для прочих систем класса ERP (Enterprise Resource Planning) таких успехов пока достичь не удалось. В

Rhapsody применяется модель MDD (Model-Driven Development) на основе языков SysML (Systems Modeling Language) и UML (Unified Modeling Language).

Rhapsody обеспечивает полноценную среду разработки для рабочих групп любого по масштабу проекта. Интегрированное управление, трассировка, синхронизация процессов проектирования, кодо-генерации, автодокументирования и полноценного тестирования на основе средств подготовки тестов гарантированно обеспечивают объекту автоматизации адекватность и актуальность информационной и функциональной моделей системы. Тестирование осуществляется с самых ранних стадий проектирования.

Round-trips в этих условиях становится похожим на проверенные временем технологии связывания и внедрения объектов (OLE, Object - Linking and Embedding), а также соответствует архитектурным решениям класса CORBA (Common Object Request Broker Architecture) с его маршаллингом, скелетонами, репозиториями объектов и интерфейсов.

Визуальная спецификация архитектуры и проектных решений на основе моделей-диаграмм, возможность их актуального реинжиниринга позволяют полно и непротиворечиво обеспечивать участникам проекта синхронное соответствие системным требованиям как в среде разработки, так и на стороне целевой системы реального времени. Переносимость на любую аппаратную и программную платформу обеспечивается собственными сервисами среды Rhapsody.

Компоненты, входящие в Telelogic Rhapsody: System Designer (определение архитектуры), Check Model (контроль полноты и корректности модели), Gateway (трассировка требований), ReporterPlus (генерация системных спецификаций, документации в форматах HTML, RTF, Power Point, Word, в текстовом формате), TestConductor, ValuePack, пакеты Rhapsody Developer и System Architect, комплект DoDAF дополнительно улучшает взаимодействие между заказчиком, поставщиком, подрядчиком.

Языки для кодогенерации, обслуживаемые в Rhapsody: C, C++, Ada, Java с использованием специального программного каркаса для обеспечения переносимости между ОС РВ и ОС общего назначения.

По коду автоматически строится модель, её анализ и генерация по ней технической документации. Совершенно очевидно, что в проектировании могут участвовать только профессиональные специалисты в области анализа, проектирования и программирования, совершенно владеющие всеми типами языков, принятыми в системе.

Сравнительно независимая деятельность двух фирм Rational Software (RS) и Telelogic до 2008 г. в области проектирования и разработки средств создания автоматизированных систем на основе объектно-ориентированного подхода, привела к кооперации под управлением несомненного гиганта как в области аппаратного, так и программного обеспечения различного назначения фирмы IBM. Несмотря на то, что Telelogic специализируется на системах реального времени (СРВ), а Rational Software имеет отношение вообще к разработкам систем управления общего назначения, тем не менее несомненны её успехи и в создании СРВ. Их взаимное влияние проявилось в последние пять-семь лет, хотя суперпозиция вложенности по названию продуктов показывает подчинённость Telelogic фирме RS. Об этом свидетельствует и сравнительная таблица, представленная ниже.

Эволюционное развитие методологий, технологий, средств проектирования и программирования привели к тому, что основная доля интеллектуального труда проектировщиков, а также тяжесть, риски, успех сосредоточились на первых стадиях ЖЦ систем. Повысилась ответственность исполнителей, короче стали итерационные связи, сама модель ЖЦ оказалась всё больше спиральной, что раньше было характерно только для системного программного обеспечения, и прежде всего операционных систем, промышленных пакетов прикладных программ (в частности, СУБД, пакетов математической и статистической обработки, CASE-средств). Именно это значительно повышает роль автоматизации самих создателей систем, в частности, соединяет формализацию, логические конструкции, системный анализ процесса проектирования с созданием основного компонента любой системы - программного обеспечения.

Программирование сегодня из искусства становится промышленным, автоматическим преобразованием абстрактных моделей систем в реальные конструкции машинных команд, которые с помощью ЭВМ, её программного потенциала как автономно, так и в сетях, в «облаках» успешно реализуют алгоритмы и технологии управления различных уровней и предназначения. Для больших и сложных

динамических систем это единственная возможность обеспечения управляемости проектами на всём их жизненном цикле за обозримое время, создавая предпосылки быстрого внедрения и окупаемости, лёгкого сопровождения и модернизации.

Таблица 1

Сравнительная таблица программных средств Rational Software и Telelogic

Характеристика, компонент Наличие в RS Наличие в Telelogic

Язык проектирования/моделирования UML SysML, UML

Язык кодогенерации Java, C++, Smalltalk, PowerBuilder, Ada, SQLWindows и ObjectPro, ANSI C++, J2EE, Visual C++ и Visual Basic (для СРВ - 100 %-ая кодогенерация) C, C++, Ada, Java 100 %-ая кодогенерация

Определение архитектуры Software Modeler, Application Developer, Web Developer, Robot, Rose RealTime System Designer

Контроль полноты и корректности модели Check Model

Тестировка требований и генерация системных спецификаций Requisite Pro Gateway, ReporterPlus

Автоматическая генерация тестов Visual Test Auto Test Generator

Средства моделирования Rose, XDE Modeler Telelogic Modeler

Средства отладки и тестирования PerformanceStudio, Summit, Robot +, Performance Tester, Test Manager, Functional Tester, Manual Tester, Purify, Quantify, PureCoverage, TestStudio, TestMate, PreVue Telelogic Tester, Logiscope

Средства документирования SoDA Telelogic DocExpress

Средства управления конфигурацией, средства управления проектом ClearCase, RequisitePro, ProjectConsole, ClearQuest, TestManager Telelogic Change и Telelogic Synergy

Средства создания БД и реинжиниринг Rose Data Modeler

Интегрирующие пакеты в составе среды Portfolio Manager, Professional Bundle (Software Architect), Suite(Team Unifying Platform, PurifyPlus for Windows, Rose XDE DeveloperPlus, Robot), Software Architect(Software Modeler, Application Developer, Web Developer) Rhapsody Developer и System Architect

Двунаправленная синхронизация проектирования, разработки, тестирования и документирования + +

Использование внешнего кода для включения в проект + +

ЛИТЕРАТУРА

1. Гринфилд Д., Шорт К., Кук С., Кент С. Фабрики разработки программ (Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools). М. : Вильямс, 2007. 592 с.

2. Гусева Е. Н. Имитационное моделирование экономических процессов в среде Arena. URL : http://books. academic.ru/book.nsf/60499651 (дата обращения: 14.10.15).

3. Иванов Д. Ю., Новиков Ф. А. Основы моделирования на UML : учеб. пособие. СПб. : Изд-во политехн. ун-та, 2010. 249 с.

4. Ильин В. Реинжиниринг бизнес-процессов с использованием ARIS. М. : Вильямс, 2008. 256 с.

5. Коллективная среда разработки на основе модели для создания систем, программного обеспечения и тестов. URL : http://www.swd.ru/files/pdf/brochures/Rhapsody.pdf. (дата обращения: 25.10.15).

6. Программные продукты фирмы IBM. URL : http://www-03.ibm.com/software/products/ru/ (дата обращения: 14.10.15).

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

7. Руби С., Томас Д., Хэнссон Д. Гибкая разработка веб-приложений в среде Rails. Питер, 2012. 464 с.

8. Сайт компании ALTOVA. URL : http://www.altova.com. (дата обращения: 18.11.15).

9. Стандарты по UML. URL : http://www.omg.org/spec/UML/ (дата обращения: 14.10.15).

10. BETEC - программная система. URL : http://www.softforfree.com/all-programs/2312_0.html. (дата обращения: 14.10.15).

11. CakePHP - официальный сайт. URL : http://cakephp.org. (дата обращения: 14.10.15).

12. CodeSmith Generator-кодогенератор. URL : www.codesmithtools.com. (дата обращения: 01.10.15).

13. Groovy-кодогенератор. URL : http://groovy-lang.org/404.html (дата обращения: 19.12.15).

14. StringTemplate-кодогенератор. URL : http://www.stringtemplate.org. (дата обращения: 14.10.15).

15. xPand-кодогенератор-http://www.eclipse.org/gmt/oaw/doc/4.1/r20_xPandReference.pdf. (дата обращения: 25.10.15).

i Надоели баннеры? Вы всегда можете отключить рекламу.