DMS Программного обеспечение Реинжиниринг Инструментарий [1] представляет собой запатентованный набор преобразований программы инструментов , доступных для анализа Automating пользовательского источника программы, изменения, перевода или генерации программных систем для любых смесей исходных языков для больших систем масштаба программного обеспечения.
Разработчики) | Семантические проекты |
---|---|
Лицензия | проприетарный |
Веб-сайт | www |
Применение
DMS был использован для осуществления широкого спектра практических инструментов, включают в себя языки домен-специфические (например, генерации кода для заводского контроля), тестового покрытия [2] и профилирующих инструментов, обнаружения клона , [3] миграции языка инструментов, C ++ компонент реинжиниринг ., [4] и для исследования сложных тем, таких как надежный рефакторинг C ++. [5]
Этот инструментарий предоставляет средства для определения языковых грамматик и создает синтаксические анализаторы, которые автоматически создают абстрактные синтаксические деревья (AST), и prettyprinters для преобразования исходных или измененных AST обратно в компилируемый исходный текст. Деревья синтаксического анализа захватывают, и симпатичные принтеры регенерируют полную информацию об исходной программе, включая позицию источника, комментарии, систему счисления и формат чисел и т. Д., Чтобы гарантировать, что восстановленный исходный текст так же узнаваем для программиста, как и исходный текст по модулю. любые прикладные преобразования.
Многие инструменты анализа и преобразования программ ограничиваются наборами символов 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 для замены сложного условия ?:
оператором должно быть записано как:
правило simpleify_conditional_assignment (v: left_hand_side, e1: выражение, e2: выражение, e3: выражение) : заявление-> заявление = "если (\ e1) \ v = \ e2; else \ v = e3;" -> "\ v = \ e1? \ e2: \ e3;" если 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. [6]
DMS и «Design Maintenance System» являются зарегистрированными товарными знаками Semantic Designs.
Рекомендации
- ^ DMS: программные преобразования для практической масштабируемой эволюции программного обеспечения . Труды Международной конференции по разработке программного обеспечения 2004 г. Переиздание
- ^ Покрытие ветвей для произвольных языков стало проще
- ^ " Обнаружение клонов с использованием абстрактных синтаксических деревьев . Труды Международной конференции по сопровождению программного обеспечения 1998" . DOI : 10.1109 / ICSM.1998.738528 . S2CID 12834606 . Архивировано из оригинала на 2012-10-10 . Проверено 6 ноября 2010 . Цитировать журнал требует
|journal=
( помощь ) - ^ Акерс, Роберт Л .; Baxter, Ira D .; Мехлих, Майкл; Эллис, Брайан Дж .; Люке, Кенн Р. (2007). «Практический пример: реинжиниринг компонентных моделей C ++ с помощью автоматического преобразования программы». Информационные и программные технологии . 49 (3): 275–291. DOI : 10.1016 / j.infsof.2006.10.012 . S2CID 13219993 .
- ^ Исследование инноваций малого бизнеса (DoE): Refactor ++
- ^ Проектирование систем обслуживания . Сообщения переиздания ACM 1992 г.
Внешние ссылки
- Главная страница DMS Software Reengineering Toolkit
- Приглашенный Google TechTalk: DMS: Software Tool Infrastructure на YouTube
- Модернизация программных систем B-2 Spirit Bomber, на которую косвенно ссылается финансируемая Northrop Grumman инициатива, которая разработала рентабельный способ перевода (JOVIAL) программного обеспечения
- ПАРЛАНС
- Семантические проекты