Диссертация (1145120), страница 37
Текст из файла (страница 37)
Таким образом, повторно используемые элементы имеют параметризацию. Повторы специфицируются с помощью языка DRL, который является расширением языка DocBook. Имеется специальный препроцессор, который превращает текст со вставками на DRL в «чистый» DocBook, и далее такой текстможно превращать в pdf, HTML и другие форматы средствами DocBook.Язык DRL предназначен для управления повторно используемой документацией при разработке ПО с помощью организации семейств продуктов(product lines) [112], [210], [373], [405].
DRL имеет две формы: текстовую222(DRL/PR), в виде формата XML, и графическую (DRL/RG), основанную наFeature Diagrams [297].В рамках данной диссертационной работы метод DocLine интересен тем,что включает в себя DSM-решение — разработку и реализацию языкаDRL/GR. Однако это DSM-решение не является центральным аспектом метода.
Следует также отметить, что в данном случае предметная область, гдеиспользован DSM-подход, не связана с решением проблем конкретного индустриального проекта, компании и т.д. Поскольку DocLine является исследовательским проектом, мы не будем рассматривать процесс его разработкии процесс разработки встроенного в него DSM-решения. Будут изложенылишь язык DRL и описаны инструментальные средства, созданные для егоподдержки.На рис. 4.22 показана схема языка DRL48.СредствапроектированиядокументацииСредстваподдержкиповторногоиспользованияDRL/GRDRL/PRСредстваформатированиядокументацииDocBookРис. 4.22.
Схема языка DRLDRL/GR является средством для проектирования документации, в томчисле — для создания «крупноблочной» схемы повторного использованиядокументов, и описывает продукты семейства, шаблоны документов, связимежду шаблонами и продуктами, повторно-используемые компоненты и ихсвязи между собой и с шаблонами документов.DRL/PR является средством для детальной спецификации повторного использования фрагментов текста. Также DRL/PR поддерживает служебныйсинтаксис для хранения спецификаций, созданных с помощью DRL/GR.DocBook предназначен для форматирования документации (выделенияглав, вставки рисунков, таблиц, заголовков и т.д.). DocLine использует Doc48Изложение языка DRL/GR выполняется в соответствии с работами автора [74], [75].223Book и не реализует свой собственный язык разметки текстов (Mark-up Language).Рассмотрим DRL/GR более детально.
Язык поддерживает следующие видыдиаграмм:главная диаграмма — предназначена для описания списка продуктовсемейства и состава документации типового продукта;диаграмма вариативности — отображает набор повторно используемыхкомпонент документации и правила их объединения в документы;диаграмма продукта — адаптирует диаграмму вариативности кконкретному продукту семейства программных продуктов.Формальная спецификация языка DRL/GR в виде расширенной графической грамматики в форме Бэкуса-Науора представлена в приложении 2. Использовано расширение этой грамматики графическими операторами, как этобыло описано в разделе 1.2.2.
Следует отметить, что для описания главнойдиаграммы не вполне подходит использованный автором оператор set, который задаёт множество графических элементов — своих аргументов, — располагая их на диаграмме в произвольном порядке. Однако автор диссертационной работы не стал ради одного случая расширять грамматику.На рис. 4.23 представлен пример главной диаграммы.Семейство продуктов «Телефонный аппарат Унител»Унител-АОНУнителавтоответчикУнителтаксофонРуководствопользователяСправочнаясистемаРис.
4.23. Пример главной диаграммы224В примере представлено семейство телефонных аппаратов «Унител»: каждый аппарат имеет своё назначение и функциональность. Диаграмма состоитиз трёх секций: название (верхняя секция), продукты семейства (левая секция), информационные продукты (правая секция). В секции продуктов семейства определены все продукты семейства — в примере выше это телефонные аппараты: «Унител-автоответчик» (обычный аппарат с функцией автоответчика), «Унител-таксофон» (уличный аппарат, поддерживающий только исходящую связь), «Унител-АОН» (обычный аппарат с поддержкой функции АОН). В секции информационных продуктов задаётся пакет документации семейства.
В примере выше это «Руководство пользователя» и «Справочная система». Информационный продукт — это обобщённый документ.Пакет документации для продукта семейства состоит из информационныхпродуктов (это показано через связи продуктов семейства и информационных продуктов). При этом каждый информационный продукт описан на диаграмме вариативности как набор возможных вариантов информационныхэлементов (см. пример на рис. 4.24). Информационный элемент — этообособленные фрагменты текста, подготовленные к повторному использованию (глава, секция, произвольный фрагмент текста). При включении информационного продукта в документацию определённого продукта семействаэти вариативность вхождения информационных элементов разрешается подходящим образом, и результат представляется на диаграмме продукта (см.пример на рис. 4.25).Рассмотрим пример диаграммы вариативности.
На рис. 4.24 представленаспецификация информационного продукта «Руководство пользователя».Этот информационный продукт состоит из информационных элементов, содержащих документацию модулей «Исходящие вызовы», «Входящие вызовы», «Автоответчик», «АОН».
Повторное использование в терминах информационных элементов называется «крупноблочным» повторным использованием. С помощью связей на диаграммах вариативности показывается иерар225хия включения информационных элементов, при этом один и тот же информационный элемент может быть включён в произвольное количество контекстов, но — на разных диаграммах вариативности (здесь множественностьвключения одного элемента аналогична «каталожному» агрегированию в модели классов UML [426]). Диаграмма вариативности является модификациейFeature Diagrams [297].На диаграммах вариативности помимо структуры включения информационных продуктов и элементов специфицируется также и простейший вариантадаптивности информационных продуктов — так называемая структурнаяадаптивность: включение отдельных информационных элементов можетбыть обязательным или необязательным.
На рис. 4.24 показано, что при создании руководства пользователя для определённого продукта семейства в«Руководство пользователя» можно включить/исключить документацию модуля «АОН». Включение элемента «Номеронабиратель» является обязательным: данный элемент должен присутствовать во всех документах, куда входит «Исходящие вызовы». В рассматриваемом примере один из элементов«Исходящие вызовы» и «Входящие вызовы» должен обязательно входить вкаждое руководство пользователя (OR-группа). Имеются также XOR-группы:в рассматриваемом примере это группа, включающая элементы «АОН ГОСТРФ» и «АОН Caller ID».Кроме иерархических связей на диаграмме вариативности допустимы также семантические связи между произвольными элементами.
Конкретная интерпретация зависит от потребностей проекта. Такие связи удобны при сопровождении документов, так как с их помощью можно указать логическуюсвязность двух элементов документации, что позволяет организовать прослеживаемость (traceability).Наконец, на рис. 4.25 показаны варианты разрешённых диаграмм вариативности — для продуктов «Унител-таксофон» (рис. 4.25, а) и «Унителавтоответчик» (рис. 4.25, б).226Графическая нотация позволяет быстро просмотреть структуру документации. С её помощью также можно проектировать структуру повторного использования — то есть имеется возможность создавать визуальные спецификации (не только просматривать XML в диаграммном виде). Информация,которая задаётся с помощью визуальной нотации, сохраняется в XMLформате (DRL/PR).
Рассмотрим DRL/PR-представление главной диаграммы.Семейство и список продуктов описываются в корневой конструкции<ProductLine/>:<ProductLine name='Телефонный аппарат Унител'><Product id=pay name=Унител-таксофон/><Product id=answer name=Унител-автоответчик/><Product id=aon name=Унител-АОН/></ProductLine>Для каждого продукта (<Product />) указывается имя (name), которое отображается на диаграмме, а также внутренний идентификатор (id), используемый для указания продукта в тексте документации.Информационные продукты описываются в корневой конструкции<DocumentationCore/>:<DocumentationCore><InfProduct id=guide name='Руководство пользователя' /><InfProduct id=help name='Справочная система' /></DocumentationCore>Для каждого информационного продукта (<InfProduct />) указывается имя,которое отображается на диаграмме, а также внутренний идентификатор, используемый для указания информационного продукта в тексте документации.