OMG Essence
OMG Essence (Kernel and Language for Software Engineering Methods) является результатом работы инициативы SEMAT. Стандарт опубликован в ноябре 2014 г.
В стандарте можно выделить две части:
- язык (language) для описания методов программной инженерии
- сущности (kernel, в словаре есть и значение "сущность") для методов такой предметной области (domain), как программная инженерия.
В части языка Основы представляют собой следующее поколение стандартов ситуационной инженерии методов (предыдущее поколение — OMG SPEM 2.0 и ISO 24744, отличия из которых прямо прописаны в Основах). От предыдущих стандартов главное отличие — это отказ от сложности и нацеленности на нужды модельеров методов. Упрощено было всё: и язык (в духе отказа от "занаученных" терминов), и нотация, и способ употребления (простейший из них теперь — раскладывание карточек на столе).
Увы, эта "простота" временами чрезмерна. Так, вместо того, чтобы сказать "онтология" или хотя бы "мета-модель", говорится о common ground.
Язык
Язык (language) Основ — это минимальный набор понятий, в терминах которых описываются методы программной инженерии. Особое внимание тут уделялось минимальности языка. Язык не ограничен именно программной инженерией, но особо оговорено, что никаких пока приложений к другим областям (domains — системной инженерии, адаптивному управлению кейсами и т.д.) не было.
"Описывать в терминах" — это означает использовать мета-язык. Основы вводят четыре уровня этих "мета" (традиционных для MDA, но и очень похожих на уровни ISO 15926) для описания:
- 3 — meta-language: MOF (мета-класс, отношение и т.д.)
- 2 — мета-модель/язык: Construct (понятия языка Основ — ядро, альфа, рабочий продукт, действие, компетенция и т.д.)
- 1 — ситуационный метод/сущности: Types (конкретные ядра и практики — "требования", "прописать сценарии использования").
- 0 — жизнь: Occurence (экземпляры времени выполнения, объекты в реальной жизни)
Мета-модель
Язык Основ предписывает использовать следующие термины-конструкты:
Практика | (Practice) | Постоянные действия, направленные на достижение какой-то цели. | |
Альфа | (Alpha) | Элемент, который требует отслеживания для успеха разработки, что будет продвигаться работами по последовательности состояний ( alpha state), которые проверяются ответами на контрольные вопросы. | |
Рабочий продукт | (Work Product) | Артефакт (документ, кусок программного кода, какая-то созданная сущность). Вводится понятие "уровени проработки" ( level of detail) рабочего продукта, которые проверяются ответами на контрольные вопросы. | |
Деятельность | (Activity Space) | Указание на что-то, что должно быть сделано в процессе разработки программного обеспечения. Деятельность может включать в себя несколько дел (activity) или не включать ни одного. | |
Дело | (Activity) | Набор работ и указания по их выполнению. | |
Компетенция | (Competency) | Возможности, способности, знания и умения, необходимые для выполнения определенной работы. Для каждого члена команды может быть определен набор и уровень ( competency level) компетенций. | |
Шаблон | (Pattern) | Связки сущностей и их отношений - стадии жизненного цикла и даже роли вводятся паттернами | |
Ресурс | (Resource) | То, что будет использоваться без изменений при переносе из метода в жизнь: шаблоны, примеры, руководства, курсы для получения компетенций и т.д. | |
Ядро | (Kernel) | Набор элементов, формирующий общее описание деятельности (endeavor), определяющий базовые концепции (альфы, деятельности, компетенции и т.д.) и предметную область (например, Программная инженерия) | |
Метод | (Method) | Сочетание ядра и набора практик для достижения определенной цели. Из 250 практик составляются (composed) тысячи и тысячи методов, в зависимости от ситуации (см. Ситуационная инженерия методов). Важно, что метод не становится организационной догмой, он эволюционирует в ходе разработки (практики в методе меняются). Для методов определены способы их задействования (enactment), вплоть до того, что стандарт позволяет формально подсказывать, что когда можно делать (для этого может быть использован традиционный для OMG язык ограничений - OCL). | |
Область интересов | (Area of Concern) | Все элементы практик и ядра попадают в одну из трёх областей интересов (см. ниже) |
Области интересов
В терминах-конструктах Языка описываются абстрактные сущности (kernel) для программной инженерии, имеющие определяемые Языком типы. Эти сущности разбиты на три области интересов (area of concern):
№ | Область интересов | Альфы | Действия | Компетенции |
---|---|---|---|---|
1 | Клиент (Customer) |
|
Представление стейкхолдера | |
2 | Решение (Solution) |
|
||
3 | Деятельность (Endeavor) |
|
Карточки
Стандарт вводит кроме графического и текстового языков для описания практик ещё и представление на карточках - когда для каждого состояния альфы делается отдельная карточка с представлением чеклиста. см. Англоязычные карточки, готовые к распечатке. а потом для каждой альфы выкладывается ряд этих карточек с группировкой состояний по разным принципам:
- уже достигнутые, в работе, ещё не достигнутые (оценка состояния дел в проекте). Попробуйте оценить состояние проекта в онлайн-инструменте SEMAT Accelerator (требует бесплатной регистрации).
- те, которые будем достигать мы, и которые были достигнуты или будут достигнуты другими (жизненный цикл нашего проекта в общем жизненном цикле)
- те, которые будут достигнуты на каждой стадии жизненного цикла (так определяется вид жизненного цикла -- см. также рис.160 в тексте самого стандарта)
- те, которые будут достигнуты на текущем шаге/итерации/спринте (планирование шага работы).
Локализация
- Русское отделение SEMAT
- Русскоязычный блог SEMAT Essence
- Перевод глоссария Essence
- Перевод контрольных вопросов к состоянию проекта Essence