Всё для Учёбы — студенческий файлообменник
1 монета
doc

Студенческий документ № 005330 из ИУБиП

Обзор стандартов описания жизненного цикла и его практик

TechInvestLab.ru

Версия 1.0, 30 ноября 2009г.

1.Понятие жизненного цикла и его практик

2.Подходы к описанию деятельности

3.Что значит описать жизненный цикл и его практики

4.Ситуационная Инженерия Методов (Situational Method Engineering)

5.Метамодели описания жизненного цикла

Источники

Системная инженерия применяется для решения проблем, связанных с ростом сложности рукотворных систем. Стандарт ISO 15288, описывающий методы системной инженерии, предписывает иметь описание жизненного цикла системы и его практик. Такое описание требуется для успешного продвижения системы по жизненному циклу. Но стандарт не указывает на методы, с помощью которых требуется создавать подобное описание. Целью данного обзора является рассмотрение существующих подходов к описанию жизненного цикла и его практик.

1. Понятие жизненного цикла и его практик

В мире наблюдается постоянный рост сложности систем, создаваемых человеком. Такое усложнение приводит к ряду новых проблем, возникающих на всех стадиях жизненного цикла системы и на различных уровнях ее архитектурной детализации. Источниками проблем служат разнородность составных элементов системы (оборудование, люди, ПО), комплексное использование компьютерных технологий, недостаточная интеграция применяемых дисциплин. Для преодоления возникающих проблем требуется общий подход, обеспечивающий эффективное взаимодействие лиц, которые создают, используют и управляют современными системами. Основными группами задействованных лиц являются менеджеры, управляющие созданием систем, и инженеры, создающие системы. Стандарт ISO/IES 15288 (Системная и программная инженерия - Практики жизненного цикла системы) [34] в качестве подхода, объединяющего эти группы, предлагает общий набор практик, охватывающий весь жизненный цикл рукотворных систем, и предписывает при работе со сложной системой иметь описание ее жизненного цикла.

Определение стандарта гласит: жизненный цикл (ЖЦ) - это эволюция системы, продукции, услуги, проекта или иного рукотворного объекта от замысла до прекращения использования. Каждая система, вне зависимости от ее вида и масштаба, проходит весь свой жизненный цикл согласно некоторому описанию. Продвижение системы по частям этого описания и есть жизненный цикл системы. Описание жизненного цикла, таким образом, - это концептуальная сегментация по стадиям, способствующим планированию, разворачиванию, эксплуатации и поддержке целевой системы. Стадии представляют наиболее крупные периоды жизненного цикла, ассоциируемые с системой, и соотносятся с состояниями описания системы или реализацией системы как набора продуктов или услуг. Стадии описывают основные контрольные точки продвижения и успехов системы по ходу жизненного цикла. Такие сегменты дают упорядоченное продвижение системы через установленные пересмотры выделения ресурсов, что снижает риски и обеспечивает удовлетворительное продвижение. Основной причиной применения описаний жизненного цикла является потребность в принятии решений по определенным критериям до продвижения системы на следующую стадию.

Жизненный цикл неотделим от конкретной системы, поэтому особенности разных систем порождают большое разнообразие экземпляров жизненных циклов. Управленцы, в зависимости от выбранной стратегии и профиля существующих рисков, применяют различные последовательности стадий, что приводит к формам жизненного цикла с различающимися характеристиками. К ним можно отнести последовательную, инкрементальную, эволюционную формы. Инженеры, в свою очередь, используют различные формы разработки системы - восходящую, нисходящую, изнутри-наружу (middle-out). Были созданы методы управления жизненным циклом, представляющие собой типовые описания форм жизненного цикла в их связи с формами разработки, нацеленные на использование в определенных условиях. Наиболее распространенными методами являются RUP, Agile, DSDM, V-model, ICM.

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

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

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

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

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

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

Цель данного обзора - выбор метода для описания жизненного цикла и его практик на основе существующих стандартов.

2. Подходы к описанию деятельности

Рассматривая жизненный цикл как набор актов деятельности, мы имеем возможность при его описании применить подходы, предложенные в рамках теории производства (Theory of Production). Лаури Коскела (Lauri Koskela), в попытке сформулировать эту теорию, на основе исторического анализа выявил три различных способа концептуализации производства, которые использовались и развивались на понятийном уровне в XX веке [1].

Первый способ, трансформационный, предлагает рассматривать производство как трансформацию исходных сущностей (inputs) в конечные сущности (outputs). Управление производством приравнивается к декомпозиции совокупной трансформации на элементарные трансформации или дела (tasks) и выполнению этих дел с максимальной эффективностью. Этот вариант концептуализации основан на идеях, заложенных в экономическую теорию Вальраса (Walras) и в рамки научной организации труда Тейлора (Taylor), который выделял понятие дела. На этом традиционном подходе основаны push-методы управления производством: MRP, MRP II, APS, метод критического пути (CPM).

Второй способ основан на концепции потока (flow) и представляет производство как поток ресурсов во времени и пространстве направленный к их целевому состоянию, т.е. готовому продукту. Соответственно, помимо трансформации рассматриваются транспортировка, ожидание, и проверка. Управление производством приравнивается к минимизации доли этапов производственного потока, не приносящих пользы. Гилбрет (Gilbreth) выделил эти этапы в рамках потока в 1922 году. Позже Шинго (Shingo) развернул критику трансформационного подхода, в рамках которой обосновал потоковый подход. На этом подходе базируются pull-методы, лежащие в основе гибкого производства, теории ограничений, управления проектами на основе критической цепочки (critical chain), подхода LastPlanner.

Третий способ основан на концепции создания ценности (value generation) и представляет производство как превращение нужд заказчика в продукты, которые их удовлетворяют. Управление производством приравнивается к переводу этих нужд в спецификацию решения и последующее производство продуктов, отвечающих требованиям спецификации. Такая концептуализация была предложена Шухартом (Shewhart) в 1931 году, во время становления дисциплины управления качеством. Позже ее развили Левит (Levitt) и Друкер (Druker). Движение за качество основано на этом способе концептуализации производства. Одним из примеров применения этого способа являются Issue Tracking системы.

К трем описанным способам концептуализации производства мы можем применить два фундаментальных метафизических подхода к рассмотрению окружающего мира [2]. Это вещный (thing-based) и процессный (process-based) подходы. Вещный подход рассматривает статические объекты в дискретные моменты времени. Он отвечает на вопросы о том, какие вещи и где находятся, почему они там, какая декомпозиция этих вещей на части. Неопределенность при таком подходе - отклонение. Процессный подход обязательно включает рассмотрение времени. Он выясняет, что и когда случилось, почему именно тогда, каков был контекст тех событий, а учет эмерджентности и неопределенности встроены в рассуждения. Для интеграции способов рассмотрения производства необходимо выбрать один из подходов.

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

Предположения, на которых основано такое рассмотрение трансформации, могут быть подвергнуты критике [3]. Первое предположение утверждает, что трансформация является черным ящиком, который только может быть декомпозирован на другие черные ящики. Результатом этого является отказ от рассмотрения теорий, которые могут быть обнаружены при рассмотрении содержимого такого ящика. В итоге технология выполнения дела и компетенции, требуемые для этого, выводятся за рамки управления производством. Второе предположение утверждает, что все дела, независимо от уровня декомпозиции, имеют одинаковые характеристики. Из этого следует, что те же самые принципы управления могут применяться в разных ситуациях, но тогда мы не можем рассматривать различия между множеством ситуаций, возникающих при производстве. Третье предположение о том, что дела независимы друг от друга, и каждым из них можно управлять, не принимая остальные во внимание. Но, к сожалению, тогда мы не можем рассматривать взаимосвязи между делами. Такой вещной подход к трансформации затрудняет ее интеграцию с концепциями потока и создания ценности, которые базируются на процессном подходе.

Для традиционных методов управления, основанных на концепции трансформации и, соответственно, вещном подходе, центральным является цикл планирование-исполнение-контроль, в котором планирование играет доминирующую роль. Отсюда термин управление как планирование (management-as-planning), критика которого развернулась в конце XX века [3]. Во-первых, оно не поддерживает полное и актуальное описание мира и действий, который требуется в нем предпринять. Во-вторых, оно предполагает, что организация четко разграничена на сектор менеджеров и сектор исполнителей, а это приводит к централизованному управлению. В-третьих, план передает дела на выполнение без учета состояния производственной системы. Кроме того, управление как планирование тесно связано с пониманием контроля как коррекции, которое также несет в себе ряд проблем. Такое понимание контроля усиливает ограничения вещного подхода и показало свою неэффективность. Интересно, что даже в военной отрасли заметен постепенный переход от централизованного управления и контроля к распределенным операциям [4].

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

* С точки зрения работы рассматривается взаимодействие ресурсов (людей и машин) и материалов: нас интересует, что ресурсы делают и достигают;

* С точки зрения потока рассматривается пространственное и временное движение материалов (или информации), т.е. логистика;

* С точки зрения создания ценности рассматривается проектирование и производство продуктов, соответствующих требованиям заказчика.

Стандарт ISO 42010 (Рекомендованная практика архитектурного описания программоемких систем) [35], разработанный для управления архитектурным описанием сложных систем, позволяет установить, что у деятельности, а значит и у ЖЦ и его практик, как у любой системы, есть одна или несколько заинтересованных сторон (stakeholders). Каждая из этих сторон обычно имеет набор интересов (concerns), связанных с системой, и стремится их удовлетворить. Для удовлетворения каждого из интересов создаются отдельные группы описаний (views) системы. По сути, группа описаний представляет систему с определенной точки зрения, а набор групп образует полное описание системы. Соглашения, по которым группа описаний создается, отображается и анализируется, устанавливаются методом описания (viewpoint). Тем самым метод описания определяет языки, включая нотации, описания или типы продуктов, применяемые для описания группы описаний, а также все связанные методы моделирования или приемы анализа, применяемые к моделям этой группы. Данные языки и приемы применяются для получения результатов, имеющих отношение к адресуемым интересам. Каждая группа создается в соответствии со своим методом.

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

Процессная группа описаний

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

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

Интерес инженеров к описанию технологической цепочки стал причиной появления и распространения ряда методов процессного описания. В момент зарождения процессного метода описания получили популярность методы функционального разбиения IDEF0 для описания "логической последовательности" дел, и описания процесса IDEF3 [20, 21] для описания развертки во времени. IDEF0 - это метод и язык, являющийся вариантом метода структурного анализа и проектирования (Structural Analysis and Design Technique, SADT), возникшем в конце 60-х годов прошлого века. IDEF0 отражает логические отношения между работами, но не позволяет рассматривать временную последовательность. Позже появился IDEF3, документирующий технологические процессы. В нем предоставлена возможность описывать различные сценарии выполнения работы и описывать состояния объектов и переход между ними. IDEF0/IDEF3 успешно дополняют друг друга и широко использовались системными инженерами. Однако, ввиду ряда ограничений, прежде всего отсутствие формальной теоретической модели, а также отсутствия средств для описания артефактов и потоков информации, они теряют свою популярность.

Идея необходимости множества групп описаний привела к появлению языка UML, поддерживающего одновременно пять групп описаний (пять типов диаграмм). Для описания процессов могут использоваться UML диаграммы активности и вариантов использования (Use Case diagram, Activity diagram). Язык SysML, основанный на UML, предлагает расширение диаграммы активности, предоставляющую возможность моделировать потоки физических элементов или энергии. По сути, диаграмма активности - это вариация диаграммы состояний (State Diagram), где состояния заменены на акты активности, а переходы между состояниями представляют собой выполнение работы. Но диаграммы состояний не позволяют нам представить развертку процесса по времени в терминах, которые понятны человеку ("раньше-позже-одновременно"). Этим же недостатком страдает и BPEL (Business Process Execution Language), который представляет собой машину состояний и ориентирован на машинное исполнение моделей процессов. В настоящий момент активно развивается и набирает популярность метод BPMN (OMG Business Process Metamodel and Notation). Готовится вторая версия этого стандарта, включающая возможность описания взаимодействия между исполнителями работ. BPMN поддерживает описание процессов на разных уровнях абстракции, имеет высокую выразительность и выражает процесс с использованием понятного людям представления времени.

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

Проектная группа описаний

Для планирования ресурсов и управленческого контроля более приспособлена проектная или логистическая группа описаний, которая удовлетворяет нужды менеджеров. Они не заинтересованы в рассмотрении последовательности работ (микропроцессы). Для достижения целей проекта им требуется возможность распределения ресурсов по выполняемым работам и синхронизация работ во времени. Для этого используется функциональная иерархия, разбиение работ (work breakdown structure, WBS). С таким деревом работ удобно работать менеджерам. Становятся возможны группировка работ в стадии ЖЦ и определение контрольных точек для принятия решений, таких как пересмотр выделения ресурсов. Функциональная иерархия работ поддерживается большим количеством систем управления проектами и может отображаться в таких системах различными способами, например в виде диаграммы Ганта.

Диаграмма Ганта один из наиболее распространенных методов проектного описания. Она была разработана в 1910 году Генри Л. Гантом (Henry L. Gantt). По сути, она представляет собой объединение функциональной иерархии и временной шкалы (но не "процессной последовательности"). Это дает возможность оценивать время, требуемое для выполнения проекта в целом и отдельных его стадий, выявлять конфликты загрузки ресурсов. Отдельным объектом выделены контрольные точки (milestones), с помощью которых можно установить моменты проведения контроля и принятия решений.

Еще одним распространенным методом проектного описания является PERT (Program Evaluation and Review Technique). Этот способ анализа работ, необходимых для выполнения проекта, был разработан в 50-е годы прошлого века для упрощения планирования и составления графиков больших и сложных проектов. PERT-диаграмма представляет собой сетевой график, то есть граф, вершины которого отображают состояния некоторой системы, а дуги - работы, ведущиеся над этой системой. Такая диаграмма также предоставляет возможности для анализа времени, которое требуется для выполнения каждой отдельной задачи, а также помогает определить минимальное необходимое время для завершения проекта (это обычно называют "сетевым планированием").

Менеджеры проектов с успехом применяют эти методы для решения собственных задач. Они могут описывать стадии и этапы ЖЦ, определять контрольные точки. Но применение только проектной группы описаний накладывает свои ограничения. Эти методы не предоставляют возможности описания артефактов, использующихся в проекте, в том числе планов, руководств, отчетов. Графики проектов не предусматривают четкого описания последовательности выполнения работ. Это реализуется в виде связей-зависимостей начала и окончания отдельных работ. Но такой подход не позволяет описывать, например, итерации свойственные ЖЦ сложных систем. Группа проектных описаний не предоставляет стандартного способа описания ролей. В системах управления проектами они представляются в качестве особого вида ресурсов. Эти недостатки указывают на то, что использовать только проектную группу описаний недостаточно.

3. Что значит описать жизненный цикл и его практики

Для создания описания жизненного цикла и его практик недостаточно использовать процессный и проектный методы описаний в их классическом виде. Когда мы говорим о ЖЦ, то понимаем типовые активности (работы), внутри которых используются те или иные методы, описанные отдельно от их применений в жизненном цикле. Эти описанные отдельно методы, которые в терминологии ISO 15288 названы практиками (в оригинале - process, унаследованное из трансформационного описания), применяются в стадиях ЖЦ, сгруппированных в определенную последовательность и разделенных контрольными точками. Для того чтобы создать полноценное описание ЖЦ и его практик необходимо:

* отразить технологию осуществления проекта, т.е. показать:

o методы, которые должны применяться;

o последовательность применения дел, из которых состоят методы;

o артефакты, связанные с методами;

o исходные и конечные сущности и информация;

o роли, ответственные за дела;

o инструменты, применяемые ролями;

o квалификацию, требуемую для выполнения дел;

o руководства, используемые при работе;

* отразить сам процесс ЖЦ (его форму) и его результаты, т.е. определить:

o стадии проекта;

o последовательность стадий во времени;

o повторяемость стадий (применение итераций);

o продукты, производимые на каждой стадии;

o контрольные точки, в которых принимаются решения по проекту.

На основе этого списка видно, как должны поменяться процессная и проектная группы описаний.

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

В проектной группе описания появляется другая специфика. Упор делается на последовательность и точки пересмотра ресурсов. Но, помимо процессной и проектной разверток деятельности во времени, при рассмотрении ЖЦ нас, прежде всего, интересует то, что обычно отражается на так называемой "горбатой" диаграмме (hump diagram). Она показывает применение практик во времени, то есть синхронизацию методов в рамках процесса ЖЦ. Классическим примером такой диаграммы является набор методов RUP (Rational Unified Process) для разработки программного обеспечения (см. рис 1). "Горбатую" диаграмму можно использовать рекурсивно, спускаясь на уровни более детальных и конкретных методов. Например, реализуя одну из практик RUP, а именно "Анализ и Проектирование" (Analysis and Design), можно воспользоваться набором методов, предложенных в MFESA (Method Framework for Engineering System Architecture) [31]. Пример описания этого набора методов с помощью горбатой диаграммы представлен на рис. 2. Подобные диаграммы наглядно показывают то, как и какие методы применяются на определенных стадиях проекта.

Рис. 1 Разумный унифицированный процесс (Rational Unified Process)

Рис. 2 Методический подход к инженерии системной архитектуры (Method Framework for Engineering System Architecture)

Очевидно, что ни процессная группа описаний, ни проектная группа описаний, ни их комбинация не могут обеспечить отражение всех аспектов, требуемых для описания ЖЦ и его практики. Требуется изменить точку зрения, сам метод описания, получить принципиально новое качество для описания того, как именно нужно выполнять работы в проекте/процессе. Такой метод описания может быть основан на подходе ситуационной инженерии методов.

4. Ситуационная Инженерия Методов (Situational Method Engineering)

В 80-х годах XX века начала формироваться специальная дисциплина, получившая название инженерия методов. Ее целью является обеспечение эффективных средств для создания и поддержки методов управления жизненным циклом разработки программных средств [5,6]. Результатом развития инженерии методов стало появление различных типовых наборов (frameworks) методов (methods, disciplines, practices, processes) для выполнения определенного вида работ. Набор методов выполняется определенными ролями в ходе установленных мероприятий в рамках конкретных стадий ЖЦ. К примерам наборов методов можно отнести CMMI, PMBoK, ITIL, ISO 12207, ISO 15288. Они описывались на основе вещного варианта трансформационного подхода, т.е. в терминах "процесса", подразумевающего последовательность трансформационных актов деятельности, склеенных через начальные и исходящие сущности. По сути, в прошлом инженерия методов представляла собой лишь такое процессное описание.

Каждый из наборов методов неявно включает в себя метамодель (онтологию, взятую в отрыве от нотации ее презентации, а также процесса описания) метода описания работ в ЖЦ. Позже фокус исследований был перенесен именно на эти метамодели: сначала они стали явно описываться, а затем и стандартизироваться.

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

В области разработки программных систем был создан ряд конкурирующих стандартизованных метамоделей, позволяющих описывать ЖЦ (например, SPEM 1.0 и OOSPICE). Со временем часть из них была перенесена в более широкий контекст системной инженерии и в настоящий момент они могут применяться для управления ЖЦ любых рукотворных систем, а не только ЖЦ программных средств.

Ограничения традиционной инженерии методов, неявно предполагавшей непосредственное применение метода независимо от ситуации, послужили предпосылками к появлению ситуационной инженерии методов (Situational Method Engineering). Она основана на идее о том, что набор методов, предназначенный для выполнения определенных работ, нельзя задать заранее: каждая система уникальна, имеет свой собственный уникальный жизненный цикл, к тому же исполнители задействуют разные инструменты для выполнения работы, поэтому каждая из систем в сочетании с используемыми инструментами требует для себя уникального метода работы. Утверждается, что какие-то куски/фрагменты методов все-таки можно выделить и хранить для повторного использования, но для конкретной системы и набора инструментов из таких кусков нужно в зависимости от ситуации собирать ее уникальный набор методов в уникальной последовательности. Такой набор будет продвигать эту систему по ее уникальному жизненному циклу, учитывая уникальную специфику и уникальные риски, соответствующие ситуации. Тем самым утверждается, что людям нельзя дать универсальный метод, но можно дать конструктор методов с достаточным количеством этих кусков/фрагментов, который позволит породить необходимый специализированный метод по потребности [29].

Особенностью ситуационной инженерии является явное отделение методов от (макро)процесса в рамках, которого они используются. Метод - это систематический, документированный, осознанный (intended) способ, которым должна быть выполнена работа. В методе вполне могут быть шаги, но заранее неизвестно, в какой момент этот метод будет выполняться в конкретном жизненном цикле. Метод - это единица повторной используемости. (Макро)процесс, в контексте инженерии методов, - это способ, которым выполняется работа "в жизни". Можно сказать, что процесс - это применения методов, происходящие в конкретные интервалы времени (и тем самым тесно переплетенные между собой в силу параллельности применения). Процесс - это всегда развертка во времени. Впрочем, описания процесса тоже могут использоваться повторно, быть типовыми: тогда говорят о "шаблонах процесса" (в SPEM это capability patterns). Объемлющий все другие процессы процесс - это и есть жизненный цикл, который тем самым описывается в терминах применения методов.

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

Используемые понятия

Одним из подходов к классификации и сравнению метамоделей ситуационной инженерии методов является рассмотрение используемого метода описания (viewpoint) процесса ЖЦ и его практик в терминах выделяемых в разных метамоделях понятий. Подобная классификация предложена в работе франко-австралийской команды исследователей [7]. Ниже приведено краткое описание выделенных классов. Далее, утверждая, что метамодель основана на чем-то, мы подразумеваем понятия, являющиеся для нее центральными.

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

Метамодели на основе деятельности (activity-oriented process metamodels)

Метамодели на основе деятельности позволяют создавать описания методов фокусирующиеся на актах деятельности (activities and tasks), выполняемых при производстве требуемых продуктов, а также порядке их выполнения. Обычно они включают в себя концепции "Единица Работы" / "Работа" (Work Unit / Work Definition), которые используют "Продукты" в качестве исходных и конечных сущностей (inputs and outputs), и которые выполняются "Ролями".

Такие метамодели как SPEM, The Open Process Framework, ISO 24744 преимущественно основаны на актах деятельности. Некоторые из них включают в себя и другие методы описания. Например, SPEM и ISO 24744 поддерживают, с разной степенью детализации, метод описания на основе продуктов.

Описания методов RUP, XP, SCRUM представляют собой экземпляры, порожденные на основе деятельность-ориентированных метамоделей, и, следовательно, о них можно говорить как о деятельность-ориентированых.

На рис. 3 приведена выдержка из метамодели SPEM 1.1 [8]. "Работа" (WorkDefinition) может представлять собой конкретный "АктДеятельности" (Activity), "Стадию" (Phase), "Итерацию" (Iteration) или сам "ЖизненныйЦикл" (Lifecycle) (в SPEM 2.0 [9] эти концепты несколько изменились). "Работа" описывает деятельность, выполняемую в рамках (макро)процесса. Концепт "Роль" (ProcessRole) определяет ответственность за конкретный "Продукт" (WorkProduct) и устанавливает роли, выполняющие и помогающие выполнять определенные дела. Метакласс "ПараметрАктаДеятельности" (ActivityParameter) позволяет специфицировать входы и выходы ("Продукты") для "Работы".

Рис. 3 Выдержка из метамодели SPEM 1.1

Метамодели на основе продукта (product-oriented process metamodels)

Метамодели на основе продукта позволяют порождать описания методов, связывающие состояние продукта (product state) с делами (activities), генерирующими это состояние. Они опираются на концепт "Продукт", который имеет различные "Состояния" и переходы между ними. Состояние продукта отражает его положение в конкретный момент процесса жизненного цикла, выделенные переходы между состояниями отражают порядок, согласно которому состояние может изменяться. Переход - это связь между исходным состоянием и целевым состоянием. Он инициируется событием.

Примерами метамоделей на основе продукта, использующих описанные концепты, являются метамодель диаграммы состояний (Harel Statechart) и машины состояний (UML State Machine), а также менее распространенные метамодель Entity Process Model и State-Transition template.

На рис. 4 в качестве примера метамодели на основе продукта, показана упрощенная метамодель подхода State-Transition, описанного Финкельштейном [10]. "Продукт" (Product) состоит из одного или более "Состояний" (States). "Переход" (Transition) определяется между исходным (source) и целевым (target) состояниями.

Рис. 4 Выдержка из метамодели подхода State-Transition

Метамодели на основе решений (decision-oriented process metamodels)

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

Метод управления ЖЦ на основе решений впервые упомянут в 1970 в контексте проектирования информационных систем на основе вопросов (Issue-Based Information Systems, IBIS). Позже он совершенствовался в рамках исследовательских проектов (например, DAIDA), но не получил широкого распространения.

На рис. 5 в качестве примера приведена метамодель, описанная Поттсом (Potts) [11] в 1989 году. Выполнение "Шагов" (Steps) - синоним дел - в процессе ЖЦ приводит к возникновению "Задач" (Issues). "Альтернативы" (Alternatives) предлагают решения задач и подтверждаются или опровергаются "Аргументами" (Arguments), которые ссылаются на "Артефакты" (Artefacts). "Задача" может просматривать "Артефакт", а "Шаг" может его модифицировать.

Рис. 5 Выдержка из метамодели Поттса

Метамодели на основе контекста (context-oriented process metamodels)

Этот класс метамоделей способствует созданию моделей методов, которые отражают ситуацию и намерение Деятеля (Actor) в конкретный момент ЖЦ. Связка "Положение" - "Намерение" образует "Контекст". Эти концепты являются ключевыми для метамоделей на основе контекста. Положение - это часть проектируемого продукта, касательно которой должно приниматься решение. Намерение отражает цель, которую, в соответствии с положением, стремится достичь деятель.

Понятие контекста было дано в 1990 году, а позже получило окончательную форму в рамках европейского проекта NATURE и одноименной метамодели метода управления ЖЦ. В 2000 году метамодель NATURE была адаптирована к дисциплине Управления Знаниями (Enterprise Knowledge Management). Тогда концепт "Намерение" заменил "Решение", который также был определен в рамах NATURE. Стоит отметить, что "Положение" и "Намерение" являются основными концептами ситуационной инженерии методов, которая поддерживает конструирование метода "на лету" в соответствии с тем, как метод определяется в конкретный момент ("Положение"), и что инженеру метода требуется в него добавить ("Намерение").

На рис. 6 показана выдержка из метамодели NATURE, описанной Ролландом (Rolland) в 1995 году [12]. Показано, что "Контекст" (Context) состоит из "Положения" (Situation), касающегося продукта, и "Намерения" (Intention), т.е. цели, связанной с продуктом. Предложено три типа контекста. "ПлановыйКонтекст" (Plan based) состоит из нескольких упорядоченных контекстов. "ВыборочныйКонтекст" (Choice based) соответствует "Положению", что требует рассмотрения альтернативных контекстов, базирующихся на "Аргументах". "КонтекстИсполнения" (Executive based) реализует "Намерение" путем выполнения "Действия" (Action), трансформирующего "ЧастьПродукта" (ProductPart).

Рис. 6 Выдержка из метамодели NATURE

Метамодели на основе стратегии (strategy-oriented process metamodels)

Метамодели на основе стратегии позволяют создавать описания, отражающие многоподходные процессы (Multi-Approach Processes, MAP), и планировать различные возможные пути разработки продукта, базирующиеся на представлении о намерении и стратегии. "Намерение" и "Стратегия" - базовые концепты данного класса метамоделей. Намерение - это цель для достижения. Стратегия - это способ достижения цели.

Метамодель MAP, также описанная Ролландом [13], возможно, является единственной метамоделью на основе стратегии, которая доступна в настоящий момент. Однако, подход к ситуационной инженерии методов, применяющий цели для конструирования методов, и подход пула продуктов (work product pool approach) тоже могут быть условно отнесены к этому классу метамоделей.

На рис. 7 представлена упрощенная метамодель подхода MAP. "Секция" (Section) состоит из "Стратегии" (Strategy). "Стратегия" представляет собой пару "Исходное Намерение" (Source Intention) - "Целевое Намерение" (Target Intention). Сам MAP-процесс состоит из одной или нескольких "Секций". Он всегда имеет намерения начала (start) и конца (stop).

На рис. 8 показан пример описания, созданного с помощью метода многоподходного процесса (MAP). Пример описывает процесс выбора концептов, взятый из метода создания метамоделей, который предложен в [7]. На рисунке можно увидеть намерения и возможные стратегии. Очевидно, что такая модель позволяет описывать деятельность, которая может быть выполнена различными путями, в зависимости от конкретной ситуации.

Рис. 7 Упрощенная метамодель подхода MAP

Рис. 8 Пример использования метода многоподходного процесса (Multi-Approach Process, MAP)

Проблемы разнообразия классов метамоделей

Для большого количества частных проектов может быть использована одна из существующих предопределенных метамоделей, отвечающая организационным требованиям. Именно с этой целью они были разработаны и стандартизованы. Однако, во многих других случаях, инженеры методов нуждаются в объединении концепций из двух и более классов метамоделей, т.е. они нуждаются в применении нескольких методов описаний и унифицированной метамодели, а также в метамоделях, подогнанных к специфике организации или проекта. Сегодня, для того, чтобы описать требуемый метод управления ЖЦ с помощью нескольких методов описания, приходится независимо использовать несколько метамоделей. Возможны два решения: объединение классов метамоделей на базе общей унифицированной метамодели или развитие существующих метамоделей с постепенным включением в них новых методов описания.

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

Проблемой здесь является не только частичное соответствие онтологий (понятийных наборов), используемых в разных метамоделях, но и просто терминологические проблемы. Например, сравнение онтологически близких метамоделей на основе деятельности показывает, что один и тот же термин может использоваться для отражения различных концепций. Например, "Activity" из SPEM не соответствует "Activity" из OPF [7]. Подобные различия могут стать причиной трудностей в понимании метамоделей. В настоящий момент разработки унифицированных метамоделей ведутся отдельными исследователями, не стандартизованы и не имеют широкой инструментальной поддержки. Основной подход к унификации метамоделей включает методы онтологической интеграции данных с использованием библиотек справочных данных (например, использование ISO 15926).

С другой стороны, существующие метамодели описаний жизненного цикла можно расширять путем включения в них новых концепций, поддерживающих дополнительные методы описания. Как уже упоминалось, SPEM и ISO 24744 поддерживают также метод описания на основе продуктов. В планах Object Management Group (OMG) объединение SPEM с Business Motivation Metamodel (BMM), что позволит применять в рамках этой метамодели метод описания на основе стратегии. Подобный подход возможен, потому что ряд самых разных относящихся к деятельности метамоделей (целеполагания, организационной структуры, последовательности действий и т.д.) стандартизирован и поддерживается инструментарием.

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

Представление фрагментов методов (method fragments)

Ситуационная инженерия разделила методы (практики) и (макро)процессы, в которых они используются. Методы превратились в единицы повторного использования, из которых можно собирать специфические процессы ЖЦ путем "применения" этих методов в определенные моменты времени. В каждой метамодели описания ЖЦ предложены свои подходы к выделению и описанию таких единиц. Далее для их обозначения мы будем использовать термин "фрагмент", т.к. исторически он был предложен в работе [5] одним их первых. Бринкемпер (Brinkkemper) определил фрагмент как "логически последовательную (когерентную) часть метода создания информационной системы". Сейчас мы видим, что фрагменты методов могут применяться для формирования процессов ЖЦ любых систем, не только информационных. Понятие фрагмента можно считать самым простым, а другие подходы рассматривать как его расширение.

Когда для описания ЖЦ, подходящего под специфическую ситуацию, необходимо использовать фрагменты разных типовых наборов методов, встает ряд вопросов. Как разбить типовой набор методов на фрагменты, которые могут быть повторно использованы в различных контекстах? Какие свойства должны характеризовать фрагмент? Как (или в какой степени) различные фрагменты могут быть объединены в уникальный набор методов? [14]. Выбор и модификация этих фрагментов в результате должны привести к законченному и последовательному процессу ЖЦ. Поэтому подход, который используется для описания фрагментов методов, является критичным для ситуационной инженерии методов.

Группы описания фрагментов методов

В процессе становления и развития ситуационной инженерии методов было предложено несколько подходов к представлению фрагментов. Такое представление должно включать набора специфических групп описания, которые соответствуют определенным интересам (concerns) заинтересованных сторон. В [15] предложена модель для оценки подходов к описанию фрагментов, основанная на четырех группах описания:

* группа описаний задачи (objective view) отвечает на вопросы о том, почему надо использовать конкретный метод, и какие выгоды это принесет. Она адресует интересы сторон, выбирающих методы работы для решения своих задач;

* группа описаний пользования (usage view) описывает различные аспекты, связанные с пользованием фрагментами, и адресует интересы пользователей, требующих удобства пользования;

* разработческая группа описаний (development view / process view) отвечает на вопросы о том, как организован доступ к фрагментам и как они применяются на практике в ходе порождения описания ЖЦ. Эта группа адресует интересы инженеров методов, стремящихся понять, как они могут применять фрагменты для создания конкретных наборов методов и процессов ЖЦ;

* системная/предметная группа описаний (system view / subject view) объясняет, как представляется фрагмент и его внутренняя структура, на каком уровне абстракции, как и какие свойства должны быть формализованы. Эта группа адресует интересы сторон, занимающихся моделированием фрагментов.

Для каждой из групп можно выделить ряд интересов, которые она стремится удовлетворить. Основные из них вкратце описаны ниже.

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

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

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

Использование фрагментов должно поддерживаться инструментарием, то есть должны быть обеспечена их реализация. Реализация фрагментов с помощью инструментария (tool/implementation) второй важный интерес, оцениваемый в группе описаний пользования. Можно рассматривать различные уровни реализации фрагментов. С одной стороны, у фрагмента метода надо различать процессную часть и часть продукта, с другой стороны, мы выделяем операции, которые можно производить с фрагментами. Объединяя эти признаки можно выделить для рассмотрения следующие функции для поддержки инструментарием: хранение фрагментов и обращение к их записям, а также использование, извлечение и конструирование процессов.

Системная группа отвечает на вопрос "Что?", формализуя фрагмент и раскрывая его внутреннюю структуру элементов и их связей. Можно выделить три уровня рассмотрения (levels) фрагмента: контекстный, структурный и операционный. Контекстный уровень описывает окружение, в котором используется или повторно используется фрагмент. Структурный уровень определяет структуру фрагмента и типы структурных связей между элементами фрагмента: специализация, композиция, ссылка. Операционный уровень имеет дело с работающими частями фрагмента, позволяя реализовать его во время проекта.

Фрагмент не всегда рассматривается в одном и том же измерении (dimension), которое также является интересом, адресованным системной группой. Измерение фрагмента характеризуется элементами, доминирующими в подходе. Выделяют три измерения: процесса (process focused), продукта (product focused) и исполнителя (producer focused).

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

Еще одним интересом, связанным со системной группой, является уровень абстракции фрагмента (abstraction level). Фрагмент может быть определен на разных уровнях: мета-метамодель, метамодель, модель.

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

В разработческой группе описаний (process view) рассматривается как применять фрагменты для создания методов. Интересы, адресуемые этой группой, описывают основные операции инженерии методов в части фрагментов. Можно выделить принципы декомпозиции метода, извлечения/выбора фрагментов, установления соответствия фрагмента ситуации проекта (matching with situation), конструирование нового метода. В работе [16] выделены следующие подходы к конструированию нового метода: порождение (instantiation), сборка (assembly), расширение (extension), сокращение (reduction). При порождении используется описывающая общие характеристики метода метамодель, представляющая систему понятий. Ее экземпляр представляет собой метод. Сборка концентрируется на группировании фрагментов, принадлежащих смежным в процессе методам. Расширение производится путем добавления новых фрагментов в существующий метод для расширения его функциональности. При сокращении фрагменты изымаются из метода, чтобы сделать его более компактным и удобным. Кроме того, в [15] отдельно выделен гибкий (agile) подход к конструированию новых методов.

Существующие подходы к представлению фрагментов методов

Несколько различных подходов к описанию фрагментов методов появилось в литературе. Ниже описаны некоторые предложенные подходы, которые сравнивались в рамках различных исследований [14, 15, 17].

Как упоминалось выше, одним из первых выделять фрагменты методов (method fragments) предложил Бринкемпер (Brinkkemper) в работе [5]. Он определял их как стандартизованные строительные блоки на базе логически последовательных (когерентных) частей метода. Он выделял продуктные фрагменты (product fragments) и процессные фрагменты (process fragments). Первые описывают продукты (диаграммы, модели, таблицы и т.д. - тогда речь шла только об информационных системах), используемые методом. Процессные фрагменты описывают работу, выполняемую в рамках процесса ЖЦ. Они могут представлять либо высокоуровневые макропроцессы, например, проектные стратегии, либо детализированные микропроцессы - процедуры, приемы. Соответственно, фрагменты могут составлять фрагменты более высокого уровня, а также быть связаны между собой. Для выбора фрагментов используются характеристики проектов (project characteristics), описывающие конкретную ситуацию и связанные с подходящими фрагментами. Фрагменты предлагается хранить в базе методов (method base), откуда они могут извлекаться для конструирования новых методов в соответствии с правилами сборки.

На рис. 9 приведена метамодель, описывающая этот подход к представлению фрагментов.

Рис. 9 Фрагмент Метода (Method Fragment)

Другим предложенным подходом является использование кусков методов (method chunks). Этот подход был предложен Роландом (Rolland) как способ описывать ситуационные аспекты инженерии методов и поддерживать возможность извлечения таких кусков из репозитория. Кусок метода определяется как автономная, связная и логически последовательная часть метода, которая обеспечивает руководства (guidelines) и связанные с ними концепты для выполнения конкретного вида деятельности системной инженерии.

Знание о методе описывается в теле (body) и интерфейсе (interface) куска метода. Интерфейс описывает предусловия и постусловия использования куска с помощью пары (). Положение описывает продуктные части (product parts) требуемые на входе, интерфейс определяет цель, которую помогает достичь кусок метода. Тело куска включает в себя два типа знаний: о продукте и о процессе. Первый определяет рабочие продукты (исходные и конечные), используемые куском метода, и обычно описывается в виде метамодели.

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

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

На рис. 10 приведена метамодель, описывающая кусок метода и связанные концепты.

Рис. 10 Кусок Метода (Method Chunk)

Следующим подходом является использование компонентов методов (method components) [17, 18]. Основная идея подхода заключается в представлении метода, состоящего из компонентов, которые можно повторно использовать и которыми можно обмениваться. Каждый компонент состоит из описания выполнения работы (акт деятельности), нотаций и понятий. Описание работы определяет правила и рекомендация для пользователя компонента и информирует его о том, какие акты деятельности предпринять и в каком порядке. Нотации определяют семантические, синтаксические и символьные правила документирования. Понятия тут - это используемые актами деятельности и нотациями понятия. Каждый компонент метода решает отдельную задачу.

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

Компонент метода состоит из двух частей: содержание (content) и обоснование (rationale). Содержание состоит из элементов метода, определяющих целевое состояние компонента или поддерживающих переход из одного состояния в другое. Выделяют пять категорий элементов. Во-первых, три основные пересекающиеся категории: акт деятельности (action), нотация (notation) и концепт (concept). Их дополняют категории артефакт (artefact) и роль деятеля (actor role). Артефакты используются в качестве входящих и исходящих сущностей трансформации. Выбор ролей определяется предписанными действиями. Обоснование метода основано на целях (goals). Элементы содержания метода существуют по определенным причинам. Эти причины явно выражаются путем связи элементов с целями.

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

На рис. 11 представлено описание компонента методов.

Рис. 11 Method Component

OPEN Process Framework [19] также использует фрагменты (OPF Fragments), но особо подчеркивается то, что каждый фрагмент должен генерироваться на основе элемента предписанной метамодели. Эта метамодель тесно связана с метамоделью стандарта ISO 24744.

В подходе OPF используются концепты ориентированные и на акты деятельности, и на продукты, и на исполнителей. Стадии (stages) описывают макропроцессы и обеспечивают организацию исполнителей, продуктов и микропроцессов (актов деятельности). Классы стадий предоставляют достаточную выразительность для описания формы ЖЦ. Исполнители (producers) выполняют единицы работы и производят продукты. Единицы работы (work units) делятся на акты деятельности (activities), дела (tasks) и приемы (techniques). Акты деятельности можно разбить на дела, каждое из которых выполняется в соответствии с приемами. Единицы работы используют и производят рабочие продукты (work products). Продукты документируется с помощью языка (language). Отдельно выделяется концепт предприятия (endeavor), который отражает высокоуровневые начинания с целью создать или поддержать одну и более систему. Такими предприятиями могут являться классические проекты, их совокупности (программы), и совокупности программ - предприятия как юридические лица (enterprises). С каждым из фрагментов OPF связаны руководства (guidelines) по его применению.

Главное преимущество этого подхода в богатом выборе элементов метода, которые включают описание множества различных аспектов. Подход поддерживает различные уровни описания фрагмента (granularity levels). Имеющиеся описания большого числа фрагментов позволяют собирать и настраивать новые процессы ЖЦ. Однако, эти описания, возможно, слишком объемны, текстуальны (т.е. затруднены для автоматизированного применения) и сложны для изучения и использования [14].

На рис. 12 представлено описание фрагмента OPF.

Рис. 12 OPF Фрагмент (OPF Fragment)

В SPEM 2.0 повторно используемое содержание метода (method content) отделено от процесса ЖЦ (process), в котором оно используется. Содержание метода состоит из элементов (method content elements). Они включают в себя определения продуктов (work product definition), ролей (role definition), дел (task definition), используемых инструментов (tool definition). Также важной составляющей описания метода является руководства (guidance), которые могут представлять собой контрольные листы, примеры, инструкции, технические описания и т.д. Руководства определяются на пересечении процесса и метода, так как они могут поддерживать и то, и другое. Дела могут разбиваться на шаги (step). И шаги, и дела являются описаниями работы (work definition). В этом подходе предполагается описание квалификации (qualification), которая требуется от роли или для выполнения дела. На рис. 13 представлена выдержка из метамодели SPEM 2.0, описывающая элементы содержания метода.

Рис. 13 Элемент содержания метода (Method Content Element)

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

Изучая деятельность и анализируя механизмы ее воспроизводства, включая описание, Щедровицкий пришел к выводу о необходимости рассмотрения актов индивидуальной деятельности и разнообразных форм кооперации их в сложные системы. При этом структуры кооперации рассматриваются как механизм, обеспечивающий процесс воспроизводства деятельности, как самостоятельные структуры, и как процессы функционирования деятельности, которые должны быть воспроизведены. Описания актов деятельности, включающие разнородные элементы, выступают в роли конструктивных единиц, из которых могут быть собраны сложные системы кооперированной деятельности; при этом различным элементам приведенной схемы придаются разнообразные спецификации, благодаря чему она дает множество изображений актов деятельности разного вида и типа [30]. Здесь видна четкая параллель с ситуационной инженерией методов. Акты индивидуальной деятельности можно рассматривать как фрагменты метода, а структуры их кооперации либо как функциональные сборки в "логическом времени", либо как процессы ЖЦ, состоящие из множества применений методов, расположенных во времени.

У Щедровицкого повторно используемые единицы, т.е. методы, описываются с помощью схем актов деятельности. Цель этой схемы раскрыть "черный ящик" трансформации, показать ее в виде "разборного ящика". Это представление включает две части: объектная и субъектная. Объектная часть включает: продукт (Пр), получающийся в результате трансформации; исходный материал(ИсМ), из которого производится продукт; набор действий (д1...дn), прикладываемых к материалу; любые внешне выраженные средства, используемые в действиях, включая орудия и знания, которые фиксируется в специальных знаковых формах. Субъектная часть деятельности включает: самого индивида, который может быть представлен позицией (ролью); сознание индивида; внутренние средства и способности необходимые для оперирования всеми орудиями и выполнения действий. Особое место занимает цель деятельности, которая может рассматриваться и как объектный, и как субъектный элемент деятельности.

На рис. 14 представлено классическое описание схемы акта деятельности, предложенное Щедровицким. На рис. 15 предложено описание схемы акта деятельностью с помощью диаграммы классов UML.

Рис. 14 Схема акта деятельности (классическое представление)

Рис. 15 Схема акта деятельности (в виде диаграммы классов)

В СМД-методологии в схеме акта деятельности разные исследователи выделяли до 20 составляющих.

В [15] предложен подход на основе выделения сервисов методов (method service). Этот подход объединяет концепции cервисно-ориентированной Архитектуры (SOA) и кусков методов (method chunks) и предлагает рассматривать реализацию фрагментов метода как автономных сервисов, обеспечивая тем самым их внешнюю функциональную совместимость. Метамодель в основе этого подхода базируется на трех основных принципах: ориентация на сервисы, применение онтологии актов деятельности для повторного использования знаний о проблемах процесса ЖЦ, динамическая композиция сервисов методов для генерации адаптированных методов.

Оценка подходов к представлению фрагментов методов

Рассматривая существующие подходы к представлению фрагментов методов в разрезе выделенных интересов заинтересованных сторон можно придти к нескольким выводам.

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

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

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

Фрагменты методов (method fragments) определены либо как продуктовые, либо как процессные фрагменты, в то время как во всех остальных подходах фрагменты включают в себя возможность обоих групп описаний. Группа описаний исполнителя явно выделяется в компонентах методов, фрагментах OPF, содержимом метода SPEM, схеме акта деятельности.

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

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

Куски и компоненты методов формализуются понятийно-текстово, тогда как OPF фрагменты, сервисы метода и содержание метода SPEM поддерживают техническое представление. Фрагмент метода имеет и неформальное и формальное представление.

Все подходы применяют достаточно различающиеся принципы декомпозиции. Фрагменты методов используют иерархическую декомпозицию для связи всех частей метода. Куски и компоненты получаются путем разбиения методов на основе существующих намерений, целей. Фрагменты ISO 24744 являются "клабджектами" (clabjects), являющиеся результатом создания экземпляра родительских классов и наследования их свойств, а фрагменты OPF представляют собой простую иерархию классов (что, как отмечают авторы, теоретически неправильно, но зато существенно упрощает понимание).

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

Дополнительные рассмотрения касательно метамоделей описания ЖЦ

Связь с ориентацией на аспекты

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

В области разработки ПО для решения этого вопроса был предложен метод аспектно-ориентированной разработки, который предлагает декомпозицию проблемы, учитывающую перекрестные интересы (аспекты) раздельно от традиционных единиц разбиения. В более широком контексте, на ранних фазах проекта мы можем использовать аспектно-ориентированное описание (aspect-oriented modeling) для определения, спецификации, вплетания и управления аспектами или перекрестными интересами, затрагивающими множество частей системы. В контексте ситуационной инженерии методов требуется поддержка вплетения методов, выполнение которых требуется в разные моменты ЖЦ, в процесс ЖЦ, а также вплетение перекрестных фрагментов в сами методы [32, 33]. Например, инженеру методов может понадобиться вплести метод выявления требований в несколько стадий ЖЦ или вплести продукт "список требований безопасности" в различные методы.

Один из подходов ситуационной инженерии методов, а именно ADOM-SME (см. его описание в разделе "Метамодели описания жизненного цикла"), предлагает особую структуру моделей для использования вплетания [26]. Аспектно-ориентированный ADOM выделяет три типа моделей: базисная, аспектная и модель вплетания.

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

Аспектная модель описывает конкретные перекрестные фрагменты и их возможное вплетение в методы. Она создается с помощью трех групп описания перекрестных фрагментов. Спецификация аспекта (concern specification) имеет дело с задачами, которые связаны с рассматриваемым аспектом, то есть определяет что именно будет вплетаться. Будучи отделенной от правил вплетания, спецификация аспекта представляет собой то же самое, что и базисная модель, но в отношении аспекта. Мы описываем аспект как систему связанных между собой понятий. Для этого можно также применить диаграмму классов UML. Описание паттерна совместимости (match pattern) ограничивает спектр базисных моделей, к которым может быть применен аспект. С помощью правил и ограничений, накладываемых на базисные модели, он определяет куда аспект может быть вплетен. Дополнительно паттерн совместимости устанавливает "якоря" в тех местах, где могут быть применены руководства слияния (merge guidance). Это третья группа описаний, составляющих аспектную модель, и она обеспечивает наставления для вплетения выбранных аспектов (фрагментов методов) в подходящие базисные модели (описания методов). Руководства слияния определяют как вплетать аспект, объединяя спецификацию аспекта и паттерн совместимости. Дополнительно стоит указать, что аспектная модель, в зависимости от уровня рассмотрения, может описывать экземпляр метамодели (уровень приложения) или метамодель (уровень домена).

Результатом вплетания спецификации аспекта с помощью руководства слияния в базисную модель, отвечающую требованиям паттерна совместимости, является модель вплетания (woven model).

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

Применение Clabjects и Powertype

Разработчики систем не работают непосредственно с метамоделями. В своей деятельности они используют методы, которые обеспечивают руководства по выполнению конкретных задач. Эти методы описываются с помощью моделей. Когда разработчики применяют подобную модель, они порождают ее экземпляр, соответствующий нуждам конкретного проекта. Подобный экземпляр должен соответствовать модели набора методов. Качество набора методов определяется его способностью порождать полезные экземпляры.

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

Эти рассмотрения помогают выделить три уровня абстракции, предложенные в ISO 24744: метамодель, метод и проект (экземпляр ЖЦ). Разные заинтересованные стороны работают на разных уровнях. Инженеры методов используют метамодели, чтобы создавать и модифицировать методы. Разработчики систем применяют метод для генерации конкретного проекта. Таким образом, методы служат в качестве моста между метамоделями и проектами и обеспечивают косвенное взаимодействие разработчиков, работающих над проектом, и метамоделью, которая была использована для создания применяемого метода.

Для описания трех уровней моделирования процесса жизненного цикла применяется следующая схема. Элементы уровней метамодели и методов описывается с помощью классов. Классы метода являются подтипами классов метамодели. При генерации проекта создаются объекты-экземпляры классов метода, которые будут являться также экземплярами классов метамодели. Этот подход приводит к тому, что элементы метамодели не могут передавать информацию элементам слоя методов. У элемента метода нет возможности получить значения любых атрибутов или связей, так как он тоже является классом, а не объектом [23].

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

Обычно набор объектов описывается как класс, а свойство, которым должен обладать каждый объект этого набора, будет иметь значение, описанное атрибутом класса. Таким образом, в продолжение примера, требуется, чтобы метамодель обеспечивала класс, описывающий разные типы работ проекта и имеющий атрибут Цель. Такой класс можно назвать ТипРаботы. Экземпляр этого класса будет находиться на уровне метода. В нашем примере могут быть созданы экземпляры "НаписаниеКода" и "МодификацияТребований", имеющие соответствующие значение атрибута Цель.

Мы упоминали, что инженер методов использует классы метамодели для создания подклассов и сборки их в метод. Но теперь получается, что инженеру требуется создавать экземпляры некоторых классов метамодели и размещать их на уровне метода. В нашем примере, инженер на уровне метода создаст подкласс НаписаниеКода класса Работа и объект "НаписаниеКода", который будет экземпляром класса ТипРаботы уровня метамодели. Очевидно, что эти подкласс и объект отражают одно и то же, то есть работы, целью которых является написание кода, реализующего требования ТЗ. Подкласс унаследует свойства и отношения класса Работа и позволит своим экземплярам на уровне проекта получать их значения и связи. С другой стороны, объект принимает значения и связи из атрибутов и отношений класса ТипРаботы уровня метамодели. Для обращения к этому набору класса и объекта применяется специальный термин "clabject". В нашем случае мы имеем clabject #НаписаниеКода (см. рис. 12).

Важно понимать, что два элемента метамодели, которые являются базой для clabject'a, это два разных класса со своими наборами свойств и отношений. Но, в то же время, они тесно связаны. Фактически, один класс (ТипРаботы) отражает группу экземпляров другого класса (Работа); экземпляры класса Работа представляют собой реальные работы, выполняемые в проекте, а экземпляры класса ТипРаботы представляют наборы работ, которые разделяют общие свойства, то есть имеют один тип. В этом смысле, экземпляры класса ТипРаботы дробят экземпляры класса Работа. Такое отношение получило название powertype. В нашем примере, ТипРаботы - это powertype класса Работа, так как его экземпляры составляют аспект объектов clabject'а, аспекты классов которого представлены подтипами класса Работа. Сложная композиция уровня метамодели, сформированная разделяемым классом и его powertype, может использоваться в качестве шаблона (powertype pattern).

Дополнительно clabject'ы позволяют переносить свойства классов метамодели уровень метода в объекты уровня проекта (deep instantiation) и задавать им значения. В нашем примере, свойство Продолжительность, заданное на уровне метамодели, будет перенесено в объекты проекта и получит значение при создании экземпляра "Работа 2.1" (см. рис. 16)

Рис. 16 Пример использования Powertype и Clabject

С точки зрения инструментария, Clabject'ы являются мощными средствами, которые могут быть легко реализованы. Аспект объектов может храниться в БД, в то время как аспект классов будет использоваться инструментом как шаблон для создания экземпляров. Их реализация облегчается тем, что clabject'ы состоят из общепринятых концепций (классов и объектов).

В настоящий момент широко распространено строгое метамоделирование (strict metamodeling), которое предполагает, что элементы любого уровня должны быть экземплярами элементов второго уровня, который располагается сразу над первым. В таких ситуациях невозможно применять clabject и powertype Очевидно, что строгое метамоделирование не позволяет описать все ситуации, которые возникают в реальном мире. Поэтому выразительность метамодели стоит оценивать, в том числе, и по наличию поддержки clabject'ов.

Интересно, что сама концепция clabject и PowerType развивается сейчас главным образом исходя из требований деятельностного подхода - ситуационной инженерии методов.

5. Метамодели описания жизненного цикла

ADOM-SME Подход ADOM-SME (Application-based Domain Modeling for Situational Method Engineering) предложен и последовательно развивается израильскими исследователями [24]. Он нацелен на повторное использование и валидацию моделей приложений в соответствии с моделью предметной области. Рамочная структура ADOM-SME включает три слоя: приложение, предметная область и язык. Слой приложений состоит из моделей частных приложений, включающих описание их структуры и поведения. Промежуточный слой предметной области состоит из описаний различных доменов, понимаемых как группы приложений с общими свойствами. Наконец, слой языка включает метамодель языка описания, например UML. ADOM-SME позиционируется как общий подход, который может быть применен к разным языкам. Но при выборе какого-либо языка он используется и в слое предметной области, и в слое приложений, обеспечивая общую терминологию. В контексте ситуационной инженерии методов процессы ЖЦ можно рассматривать как предметную область. Очевидно соответствие слоя предметной области уровню метода, а слоя приложений уровню проекта в ISO 24744.

Метамодель, предлагаемая к использованию в ADOM-SME, позаимствована у ISO 24744. Стоит отметить отсутствие в ней явного упоминания о жизненном цикле.

Повторное использование в ADOM-SME реализуется с помощью конфигурации и конкретизации, таким образом, что ограничения, наложенные слоем предметной области, служат руководством при повторном использовании и разработке моделей слоя приложений. Конфигурация представляет собой выбор набора элементов из описания предметной области с целью создания конкретной модели приложения. Конкретизация - это результат использования общих знаний из описания предметной области в модели приложения. Выделяется пять операций конкретизации: уточнение, создание подтипов, контекстное заимствование, исключение и включение. ADOM-SME явно указывает на то, что слои накладывают ограничения друг на друга: слой предметной области, ограниченный слоем языка, устанавливает ограничения на слой приложений. Также ADOM-SME выделяется из других подходов явным рассмотрением правил валидации, которые определяют, является ли модель слоя приложений валидным экземпляром описания предметной области.

Авторы развивают свой подход к описанию процессов ЖЦ. Проведены исследования по использованию эталонных моделей процессов на уровне предметной области [25], по реализации аспектно-ориентированного проектирования на базе ADOM-SME [26], предложен способ описания и хранения фрагментов методов при помощи UML [14].

Этот подход является результатом работы небольшой группы исследователей, не стандартизован и не используется широко на практике. Отсутствуют доступные инструменты для работы с метамоделью, заложенной в ADOM-SME.

ISO 24744 (SESDM)

Стандарт ISO 24744 [36] предлагает метамодель SESDM (Software Engineering Metamodel for Development Methodologies). SESDM - это адаптированная метамодель SMSDM (Standard Metamodel for Software Development Methodologies), представленная австралийскими учеными и опубликованная ранее в стандарте AS4651 [22]. В свою очередь, AS4651 явился развитием модели OOSPICE (Object-Oriented SPICE), связанной с определением методов, выполнение которых возможно проверить согласно ISO 15504 (SPICE) [37].

Масштаб способа ISO 24744 покрывает многие группы описаний в рассмотрении ЖЦ: процессную, продуктов и исполнителей. Метамодель также позволяет раздельно описывать микро- и макропроцессы с помощью Стадий (stages) и единиц работы (Work Units) соответственно. Люди являются одним из основных элементов, чего не предусмотрено в ряде других метамоделей, и представлены классом Производители (Producers). Моделирование интегрировано в процесс ЖЦ с помощью элемента Единицы Описания (Model Units) - этого нет в SPEM, где предполагается, что собственно моделирование покрывается профилем стандарта UML.

ISO 24744 обеспечивает широкие возможности по описанию взаимосвязи продуктов и актов деятельности. Есть возможность описать, как разные виды продукты используются и модифицируются разными актами деятельности.

ISO 24744 предлагает онтологию, которая может применяться для описания элементов на всех уровнях: метамодель, метод, проект. Для описания таких сложных сущностей как метод и проект предлагается богатая метамодель, поддерживающая clabjects и powertype. Powertype описываются подтипами класса Шаблон (Template), а разделяемые элементы (parititioned elements) описываются подтипами класса Элемент Проекта (ProjectElement). Дополнительно выделены, так называемые Ресурсы (resources). Ресурсы представляют собой классы метамодели, которые не участвуют в шаблонах powertype. Экземпляры ресурсов могут быть созданы на уровне метода, но не передаются на уровень проекта. Ресурсы отражают элементы метода, которые используются разработчиками без создания экземпляров, например, это может быть нотация или ссылка на описание метода. Все эти механизмы обеспечивают адаптацию метода на уровне проекта, что является критичным для использования метамодели.

Еще одним преимуществом ISO 24744 является то, что ему (через соответствие требованиям к типовой модели практик ISO 15504) соответствует стандарт ISO 15288, описывающий практики системной инженерии. Поэтому его использование для моделирования ISO 15288, который является главным источником методов для системных инженеров, исключает множество проблем, связанных с интеграцией разнородных стандартов.

Метамодель ISO 24744 обладает и недостатками. Этот стандарт не включает в себя явное определение жизненного цикла в части менеджерской группы описаний (стадии, контрольные точки, пересмотры выделения ресурсов) что затрудняет его использования для создания требуемых нам описаний ЖЦ. Остро стоит проблема отсутствия готового инструментария для моделирования методов в соответствии с ISO 24744, и это главное препятствие перед ее практической реализацией.

OPF OPEN Process Framework - это свободный набор компонентов для создания процессов ЖЦ на уровне проекта. Он включает в себя три основных компонента: метамодель, репозиторий фрагментов методов и руководства по конструированию и использованию, которые описывает способы повторного использования фрагментов [27].

Метамодель вкратце описана в разделе. В целом OPF фокусируется на уровне метода, меньше внимание уделяется уровню конкретного проекта и его связям с уровнем метода. Метамодель OPF приблизительно соответствует ISO 24744 (но, например, не использует powertypes и clabjects).

Репозиторий повторно используемых фрагментов методов организован в виде иерархии связанных веб-страниц, которые включают в себя также и руководства про созданию готовых методов. В составе репозитория (свободно доступного по адресу www.opfro.org) находятся около 1100 фрагментов готовых к использованию. Это облегчает практическую реализацию OPF.

Есть несколько видов руководств, которые требуются для инженера методов. Это руководства по конструированию метода, адаптации метода, и расширению метамодели. Другими важными элементами могут являться правила связывания, которые могут выражаться в виде предусловий и постусловий выполнения работ и/или обеспечивать корректную взаимосвязь процессных фрагментов и фрагментов продуктов. Руководство по конструированию метода помогает инженеру породить экземпляр метамодели, чтобы создать элементы метода, и выбрать подходящие элементы из репозитория, чтобы создать конкретный метод. Конкретно, руководство помогает выбрать надлежащие продукты, исполнителей и акты деятельности, а также способствует распределению актов деятельностей и связанных с ними приемов по исполнителям и группировки актов деятельности в потоки работ. Кроме того, выбираются стадии ЖЦ, включая фазы.

Типичный подход к использованию репозитория OPF представляет собой следующее. Определяются продукты, которые будут созданы. Выбираются соответствующие акты деятельности и приемы, требуемые для создания продуктов. Затем отбираются исполнители для выполнения актов деятельности и, при необходимости, инструменты. Устанавливаются контрольные точки и точки измерений показателей и распределяются по фазам проекта. Затем проводится проверка метода, и он документируется. После утверждения метода заинтересованными сторонами проводится обучение команд. Метод используется с применением итераций в случае необходимости. Подобное применение OPF требует некоторого опыта. В помощь предоставляются матрицы соответствия, описывающие взаимосвязи между любыми двумя типами элементов метода.

Сейчас OPEN Process Framework можно считать упрощенной версией ISO 24744, которая предоставляет репозиторий с набором фрагментов методов. Но она не устраняет недостатков метамодели SESDM. Здесь снова основным ограничением является отсутствие инструментария по работе с фрагментами, который бы автоматизировал поиск фрагментов, определение характеристик методов, подгонку и интеграцию фрагментов, поддержку последовательности метода, публикацию метода. OPFRO (OPF Repository Organization) в настоящий момент рассматривает возможность как создания таких инструментов (пока безуспешно), так и конверсии содержания своего репозитория в формат метамодели SPEM 2.0 для использования уже имеющимся инструментарием [28]

SPEM 2.0

SPEM (System and Software Process Engineering Metamodel) 2.0 - это открытый стандарт OMG на базе профиля UML 2, предлагающий унифицированный способ представления ЖЦ [9].

Эта метамодель покрывает описание фрагментов продуктов и процессных фрагментов с помощью отдельных элементов. В метамодели SPEM явно упоминается жизненный цикл. Он представлен объектом Delivery Process, который отражает процесс, покрывающий ЖЦ с момента начала проекта и до его конца. Он обеспечивает полное описание ЖЦ с предопределенными стадиями, итерациями и актами деятельности, которые описываются последовательностью методов (method content). Delivery Process определяет что и как будет произведено, а также кто для этого нужен. Это описывается в виде функциональной иерархии, иерархии продуктов и иерархии команды участников.

Среди недостатков SPEM выделяется отсутствие поддержки многоуровневого описания методов. Высокоуровневые "обзорные диаграммы" процессов практически невозможно получить, их приходится строить вручную, автоматизация хорошо работает только на нижних детальных уровнях иерархии. SPEM также плохо поддерживает уровень конкретного проекта (endeavor), что затрудняет адаптацию описанных методов - Delivery Process в нем "типовой" прямо по определению. Стандарт описания методов OMG SPEM 2.0 не соответствует стандарту описанию практик, данному в ISO TR 24774 [38], а стандарты описания практик/методов системной инженерии опираются именно на него. Поэтому методы (практики) ISO 15288 трудно отмоделировать на SPEM непосредственно.

Главным и определяющим преимуществом является то, что по факту существует только один вариант повсеместно доступного инструментария, подразумевающего обмен моделями методов между инструментами, и он существует именно для метамодели OMG SPEM 2.0. Во всех остальных случаях приходится пользоваться результатами академических разработок, или какими-то "настройками" к разным моделерам общего назначения - что явно не подразумевает обмена результатами работы по моделированию методов [29]. Кроме того, для моделирования в соответствии со SPEM 2.0 с некоторыми ограничениями может использоваться любой поддерживающий профили UML-моделер, так как SPEM основан на UML.

Источники

[1] Koskela, L. An exploration towards a production theory and its application to construction. Espoo 2000. Technical Research Centre of Finland, VTT Publications 408. Доступно в http://www.leanconstruction.org/pdf/P408.pdf

[2] Koskela, L., Rooke, J., Bertelsen, S. and Henrich, G. The TFV theory of production: new developments. 2007. Доступно в http://www.iglc.net/conferences/2007/folder.2007-06-29.2095743756/01%20Koskela%20Rooke%20Bertelsen%20Henrich_The%20TFV%20Theory%20of%20Production_New%20Developments.pdf

[3] Koskela, L. Towards New Theory-Based Project Management. 2007 Доступно в http://www.bertelsen.org/strategisk_r%E5dgivning_aps/pdf/Koskela%20Towards%20a%20New%20Theory.pdf

[4] Smith, E. Effects-based operations. CCRR Publications series. 2003. Доступно в http://www.dodccrp.org/files/Smith_EBO.PDF

[5] Brinkkemper, S. Method Engineering: Engineering of information systems development methods and tools. Information and Software Technology, 38(4), pp. 275-280, 1996. Доступно в http://doc.utwente.nl/18012/

[6] Tolvanen, J. P. Incremental Method Engineering with Modeling Tools: Theoretical Principles and Empirical Evidence. 1998. Доступно на http://www.cs.jyu.fi/~jpt/doc/thesis/ime.html

[7] Hug, C., Front, A., Rieu, D., Henderson-Sellers, B. A method to build information systems engineering process metamodels. Journal of Systems and Software, Volume 82, Issue 10, October 2009, Pages 1730-1742

[8] OMG. Software Process Engineering Metamodel Specification, Version 1.1. 2005

[9] OMG. Software Process Engineering Metamodel Specification, Version 2.0. 2008. Доступно в http://www.omg.org/technology/documents/formal/spem.htm

[10] Finkelstein, A., Kramer, J., Goedicke, M., ViewPoint oriented software development. In: Third International Workshop on Software Engineering and its Applications, pp. 374-384. 1990. Доступно в http://www.cs.ucl.ac.uk/staff/a.finkelstein/papers/vose90.pdf

[11] Potts, C. A Generic Model for Representing Design Methods, ICSE'89. ACM Press, pp. 217-226. 1989.

[12] Rolland, C., Souveyet, C., Moreno, M. An approach for defining ways-of-working. Information Systems Journal, 20 (4), 337-359. 1995.

[13] Rolland, C., Prakash, N., Benjamen, A. A multi-model view of process modelling. Requirements Engineering, 4 (4), 169-187. 1999.

[14] Aharoni, A., Reinhartz-Berger, I. Representation of method Fragments, a comparative Study. Proceedings of ME 07. Springer. Geneva, Switzerland. 2007.

[15] Deneckere, R., Iacovelli, A., Kornyshova, E., Souveyet, C. From Method Fragments to Method Services. Exploring Modeling Methods for Systems Analysis and Design (EMMSAD'08). Montpellier, France. 2008. Доступно в http://arxiv.org/ftp/arxiv/papers/0911/0911.0428.pdf

[16] Nehan, Y.-R., Deneckere, R. Component-based Situational Methods: A framework for understanding SME. IFIP, Volume 244, Situational Method Engineering: Fundamentals and Experiences. Switzerland. 2007. Доступно в http://crinfo.univ-paris1.fr/users/denecker/Articles/me07-2.pdf

[17] Agerfalk, P., Brinkkemper, S., Gonzales-Perez, C., Henderson-Sellers, B., Karlsson, F., Kelly, S., Ralyte, J. Modularization Constructs in Method Engineering: Towards Common Ground? Panel of ME 07. Springer. Geneva, Switzerland. 2007.

[18] Agerfalk, P.J.: Information systems actability: Understanding Information Techology as a Tool for Business Action and Communication. Doctoral dissertation. Dept. of Computer and Information Science, Linkoping University. 2003. Доступно в http://www.ep.liu.se/smash/record.jsf?pid=diva2:20816&searchId=1

[19] Firesmith, D.G., Henderson-Sellers, B. The OPEN Process Framework. An Introduction. Addison-Wesley. 2002.

[20] ICAM Architecture Part II-Volume IV - Function Modeling Manual (IDEF0). AFWAL-TR-81-4023, Materials Laboratory, Air Force Wright Aeronautical Laboratories, Air Force Systems Command, Wright-Patterson Air Force Base, Ohio 45433, June 1981. Доступно в http://handle.dtic.mil/100.2/ADB062457

[21] Richard J. Mayer et al. Information Integration for Concurrent Engineering (IICE): IDEF3 Process Description Capture Method Report. Logistics Research Division, Wright-Patterson AFB, OH 45433. 1993. Доступно в http://www.staratel.com/iso/IDEF/IDEF3/Idef3.pdf

[22] Standards Australia. 2004. Australian Standard 4651-2004. Standard metamodel for software development methodologies. Доступно в http://www.saiglobal.com/PDFTemp/Previews/OSH/as/as4000/4600/4651-2004.pdf

[23] Gonzales-Perez, C., Henderson-Sellers, B. The rationale of powertype-based metamodelling to underpin software development methodologies. Proceedings of the 2nd Asia-Pacific conference on Conceptual modelling - Volume 43. Newcastle, New South Wales, Australia. 2005. Доступно в: http://crpit.com/confpapers/CRPITV43HendersonSellers.pdf

[24] Aharoni, A., Reinhartz-Berger, I. A Domain Engineering-based Approach for Situational Method Engineering. Proceedings of the 27th International Conference on Conceptual Modeling (ER'2008), Lecture Notes in Computer Science 5231, pp. 455-468, 2008. Доступно в http://is.haifa.ac.il/~iris/research/Conferences/DESME_ER08.pdf

[25] Reinhartz-Berger, I., Soffer, P., Sturm, A. A Domain Engineering Approach to Specifying and Applying Reference Models, Enterprise Modeling and Information Systems Architectures (EMISA'05) in conjunction with ER'05, 2005. Доступно в http://is.haifa.ac.il/~iris/research/Conferences/eADOM_EMISA05.pdf

[26] Reinhartz-Berger, I. Domain Aspects: Weaving Aspect Families to Domain-Specific Applications. Domain Engineering workshop (DE@CAiSE'09) in conjunction with CAiSE'09, 2009.Доступно в http://is.haifa.ac.il/~iris/research/Conferences/aspectDE_DEatCAiSE09.pdf

[27] Zowghi, D., Firesmith, D., Henderson-Sellers, B. Using the OPEN Process Framework to Produce a Situation-Specific Requirements Engineering Method. Proceedings of SREP'05, Paris, France. 2005. Доступно в http://cui.unige.ch/db-research/SREP05/Papers/05.pdf

[28] Firesmith, D. Method Engineering Using OPFRO. EuroSEPG. 2006. Доступно в http://www.sei.cmu.edu/library/abstracts/presentations/methodengopfro.cfm

[29] Левенчук, А. Ситуационная инженерия методов (situational method engineering). Ноябрь, 2009. Доступно на http://ailev.livejournal.com/750878.html

[30] Щедровицкий Г. П. Избранные труды. Москва. Школа Культурной Политики. 1995.

[31] Firesmith, D. The Method-Framework for System Engineering Architectures (MFESA). MFESA Tutorial. 2009. Доступно в http://www.sei.cmu.edu/library/assets/mfesatutorialoneday20090420.pdf

[32] Saeki, M., Kaiya, H. Security Requirements Elicitation Using Method Weaving and Common Criteria. Models in Software Engineering. Workshops and Symposia at MODELS 2008, Toulouse, France, September 28 - October 3, 2008. Reports and Revised Selected Papers. Lecture Notes in Computer Science 5421, pp. 185-196, 2009.

[33] Chastek, G., McGregor, J. Integrating Domain Specific Modeling into the Production Method of a Software Product Line. Proceedings of the 5th OOPSLA Workshop on Domain-Specific Modeling (DSM'05), Tolvanen, J.-P., Sprinkle, J., Rossi, M., (eds.), Computer Science and Information System Reports, Technical Reports, TR-36, University of Jyvaskyla, Finland 2005. Доступно в http://www.dsmforum.org/events/DSM05/chastek.pdf

[34] ISO/IEC 15288:2008 Systems and software engineering -- System life cycle processes. http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=43564

[35] ISO/IEC 42010:2007 Systems and software engineering -- Recommended practice for architectural description of software-intensive systems. http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=45991

[36] ISO/IEC 24744:2007 Software Engineering -- Metamodel for Development Methodologies. http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=38854

[37] ISO/IEC 15504-1 Information technology -- Process assessment -- Part 1: Concepts and vocabulary. http://www.iso.org/iso/catalogue_detail.htm?csnumber=38932

[38] ISO/IEC 24774 oftware and systems engineering -- Life cycle management -- Guidelines for process description. http://www.iso.org/iso/catalogue_detail.htm?csnumber=41544

40

Показать полностью… https://vk.com/doc305989276_416865342
828 Кб, 3 сентября 2015 в 21:11 - Россия, Ростов-на-Дону, ИУБиП, 2015 г., doc
Рекомендуемые документы в приложении