Jump to content

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

Разработчик(и) Семантические конструкции
Лицензия собственный
Веб-сайт www .semanticdesigns /Продукция /ДМС /DMSToolkit .html

DMS Software Reengineering Toolkit — это запатентованный набор инструментов преобразования программ , доступных для автоматизации анализа, модификации, перевода или создания программных систем для произвольных смесей исходных языков для крупномасштабных программных систем. [1] Первоначально DMS была основана на теории поддержки проектов программного обеспечения под названием « Системы сопровождения дизайна». [2] DMS и Design Maintenance System являются зарегистрированными торговыми марками Semantic Designs.

Использование

[ редактировать ]

DMS использовалась для реализации языков, специфичных для предметной области (например, для генерации кода для заводского управления), тестового покрытия. [3] и инструменты профилирования, обнаружение клонов , [4] инструменты миграции языка, реинжиниринг компонентов C++., [5] а также для исследования сложных тем, таких как надежный рефакторинг C++. [6]

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

DMS использует технологию синтаксического анализа GLR с семантическими предикатами. Это позволяет ему обрабатывать все контекстно-свободные грамматики, а также большинство синтаксисов неконтекстно-свободных языков, таких как Fortran , который требует сопоставления нескольких циклов DO с общими операторами CONTINUE по метке для создания AST для правильно вложенных циклов при анализе. DMS имеет множество предопределенных языковых интерфейсов, охватывающих большинство реальных диалектов C и C++, включая C++0x , C# , Java , Python , PHP , EGL , Fortran , COBOL , Visual Basic , Verilog , VHDL и около 20 или более других. языки. DMS может обрабатывать ASCII , ISO-8859 , UTF-8 , UTF-16 , EBCDIC , Shift-JIS и различные кодировки символов Microsoft.

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

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

Переписывание

[ редактировать ]

Изменения в AST могут быть выполнены как процедурными методами, закодированными на PARLANSE, так и преобразованиями дерева между источниками, закодированными как правила перезаписи с использованием поверхностного синтаксиса, обусловленного любыми извлеченными фактами программы, с использованием языка спецификации правил (RSL) DMS. Механизм правил перезаписи, поддерживающий 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);

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

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

Полный пример определения языка и правил преобразования «источник-источник», определенных и применяемых, показан с использованием школьной алгебры и небольшого количества математических вычислений в качестве предметно-ориентированного языка.

  1. ^ DMS: Преобразования программ для практической эволюции масштабируемого программного обеспечения . Материалы Международной конференции по программной инженерии 2004 г. Перепечатка
  2. ^ Системы технического обслуживания проектирования . ACM 1992 г. Перепечатка
  3. ^ Покрытие ветвей для произвольных языков стало проще
  4. ^ « Обнаружение клонов с использованием абстрактных синтаксических деревьев . Материалы Международной конференции по обслуживанию программного обеспечения, 1998 г.» . дои : 10.1109/ICSM.1998.738528 . S2CID   12834606 . Архивировано из оригинала 10 октября 2012 г. Проверено 6 ноября 2010 г. {{cite journal}}: Для цитирования журнала требуется |journal= ( помощь )
  5. ^ Акерс, Роберт Л.; Бакстер, Ира Д.; Мехлих, Майкл; Эллис, Брайан Дж.; Люке, Кенн Р. (2007). «Пример: Реинжиниринг моделей компонентов C++ посредством автоматического преобразования программ». Информационные и программные технологии . 49 (3): 275–291. дои : 10.1016/j.infsof.2006.10.012 . S2CID   13219993 .
  6. ^ Исследования инноваций в малом бизнесе (DoE): Refactor++
  7. ^ «Семантическое проектирование: язык параллельного программирования PARLANSE для Windows Pentium/80x86» . www.semanticdesigns.com .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: a08f3727722b11f4e07581fdb8aa4e4c__1654131600
URL1:https://arc.ask3.ru/arc/aa/a0/4c/a08f3727722b11f4e07581fdb8aa4e4c.html
Заголовок, (Title) документа по адресу, URL1:
DMS Software Reengineering Toolkit - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)