Набор инструментов для реинжиниринга программного обеспечения DMS - DMS Software Reengineering Toolkit

Набор инструментов для реинжиниринга программного обеспечения DMS
Разработчики) Семантические проекты
Лицензия проприетарный
Интернет сайт www .semanticdesigns .com / Products / DMS / DMSToolkit .html

DMS Software Реинжиниринг Toolkit является запатентованным набор преобразований программы инструментов , доступных для анализа Automating пользовательского источника программы, изменения, перевода или генерации программных систем для любых смесей исходных языков для больших систем масштаба программного обеспечения.

Применение

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

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

Многие инструменты анализа и преобразования программ ограничиваются наборами символов ASCII или западноевропейских символов, например ISO-8859 ; DMS может обрабатывать их, а также UTF-8 , UTF-16 , EBCDIC , Shift-JIS и различные кодировки символов Microsoft.

DMS использует технологию синтаксического анализа GLR , позволяющую обрабатывать все практические контекстно-свободные грамматики. Семантические предикаты расширяют эту возможность до интересных неконтекстно-свободных грамматик ( Fortran требует сопоставления нескольких циклов DO с общими операторами CONTINUE по метке; GLR с семантическими предикатами позволяет синтаксическому анализатору DMS Fortran создавать AST для правильно вложенных циклов во время синтаксического анализа).

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

Изменения в AST могут быть выполнены как процедурными методами, закодированными в PARLANSE, так и преобразованиями дерева от источника к источнику, закодированными как правила перезаписи, с использованием поверхностного синтаксиса, обусловленного любыми извлеченными фактами программы, с использованием языка спецификации правил DMS (RSL). Механизм правил перезаписи, поддерживающий RSL, обрабатывает ассоциативные и коммутативные правила. Правило перезаписи C для замены сложного условия ?: оператором должно быть записано как:

   rule simplify_conditional_assignment(v:left_hand_side,e1:expression,e2:expression,e3:expression)
        :statement->statement
   =  " if (\e1) \v=\e2; else \v=e3; " 
   -> " \v=\e1?\e2:\e3; "
   if no_side_effects(v);

У правил перезаписи есть имена, например simpleify_conditional_assignment . У каждого правила есть пара шаблонов «сопоставить это» и «заменить этим», разделенные знаком -> , в нашем примере в отдельных строках для удобства чтения. Шаблоны должны соответствовать категориям синтаксиса языка; В этом случае обе модели должны быть категории синтаксиса заявления также отделенного сочувственно с шаблонами по -> . Поверхностный синтаксис целевого языка (например, C) закодирован внутри мета-кавычек " , чтобы отделить синтаксис правил перезаписи от синтаксиса целевого языка. Обратные косые черты внутри метакавотов представляют собой экранирование домена, чтобы указать мета-переменные шаблона (например, \ v , \ e1 , \ e2 ) , которые соответствуют любой языковой конструкции , соответствующей метапеременной декларации в строке подписи, например, e1 должен быть синтаксической категории: (любое) выражение Если метапеременная упоминается несколько раз в. спичечной узор, он должен соответствовать к идентичным поддеревьям; в обоих присваиваниях в шаблоне соответствия в этом примере должна встречаться v одинаковой формы . Метапеременные в шаблоне замены заменяются соответствующими совпадениями с левой стороны. Условное предложение if предоставляет дополнительное условие, которое должно быть выполнено для применения правила, например, что сопоставленная метапеременная v , будучи произвольной левой частью, не должна иметь побочного эффекта (например, не может иметь форму [i ++] ; предикат no_side_effects определяется alyzer, построенный с другими механизмами DMS).

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

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

DMS имеет множество предопределенных языковых интерфейсов, охватывающих большинство реальных диалектов C и C ++, включая C ++ 0x , C # , Java , Python , PHP , EGL , Fortran , COBOL , Visual Basic , Verilog , VHDL и около 20 или более других языков. Предопределенные языки позволяют настройщикам немедленно сосредоточиться на задаче реинжиниринга, а не на деталях обрабатываемых языков.

DMS также необычна тем, что реализована на языке параллельного программирования , PARLANSE, который использует симметричные мультипроцессоры, доступные на обычных рабочих станциях . Это позволяет DMS предоставлять более быстрые ответы для анализа и преобразования больших систем.

Первоначально DMS была основана на теории поддержки проектов программного обеспечения под названием Design Maintenance Systems.

DMS и «Design Maintenance System» являются зарегистрированными товарными знаками Semantic Designs.

использованная литература

внешние ссылки