OMG Essence — различия между версиями

(Локализация)
(не показаны 23 промежуточные версии этого же участника)
Строка 1: Строка 1:
'''OMG Essence''' (Kernel and Language for Software Engineering Methods) является результатом работы инициативы [[SEMAT]]. Статус разработки (на 2013г) – заявка на стандарт, получившая одобрение необходимых инстанций OMG® (Object Management Group), проходящая окончательную подготовку, необходимую для публикации стандарта.
+
'''OMG Essence''' (Kernel and Language for Software Engineering Methods) является результатом работы инициативы [[SEMAT]]. Стандарт опубликован в ноябре 2014 г.
  
 
В стандарте можно выделить две части:
 
В стандарте можно выделить две части:
Строка 5: Строка 5:
 
*'''сущности''' (kernel, в словаре есть и значение "сущность") для методов такой предметной области (domain), как программная инженерия.
 
*'''сущности''' (kernel, в словаре есть и значение "сущность") для методов такой предметной области (domain), как программная инженерия.
  
В части языка Основы представляют собой следующее поколение стандартов ситуационной инженерии методов (предыдущее поколение - [[OMG SPEM 2.0]] и ISO 24744, отличия из которых прямо прописаны в Основах). От предыдущих стандартов главное отличие - это отказ от сложности и нацеленности на нужды модельеров методов. Упрощено было всё: и язык (в духе отказа от "занаученных" терминов), и нотация, и способ употребления (простейший из них теперь - раскладывание карточек на столе).
+
В части языка Основы представляют собой следующее поколение стандартов ситуационной инженерии методов (предыдущее поколение [[OMG SPEM 2.0]] и ISO 24744, отличия из которых прямо прописаны в Основах). От предыдущих стандартов главное отличие это отказ от сложности и нацеленности на нужды модельеров методов. Упрощено было всё: и язык (в духе отказа от "занаученных" терминов), и нотация, и способ употребления (простейший из них теперь раскладывание карточек на столе).
  
 
Увы, эта "простота" временами чрезмерна. Так, вместо того, чтобы сказать "онтология" или хотя бы "мета-модель", говорится о common ground.
 
Увы, эта "простота" временами чрезмерна. Так, вместо того, чтобы сказать "онтология" или хотя бы "мета-модель", говорится о common ground.
  
 
== Язык ==
 
== Язык ==
Язык (language) Основ - это минимальный набор понятий, в терминах которых описываются методы программной инженерии. Особое внимание тут уделялось минимальности языка. Язык не ограничен именно программной инженерией, но особо оговорено, что никаких пока приложений к другим областям (domains - системной инженерии, адаптивному управлению кейсами и т.д.) не было.
+
Язык (language) Основ это минимальный набор понятий, в терминах которых описываются методы программной инженерии. Особое внимание тут уделялось минимальности языка. Язык не ограничен именно программной инженерией, но особо оговорено, что никаких пока приложений к другим областям (domains системной инженерии, адаптивному управлению кейсами и т.д.) не было.
  
"Описывать в терминах" - это означает использовать мета-язык. Основы вводят четыре уровня этих "мета" (традиционных для MDA, но и очень похожих на уровни [[ISO 15926]]) для описания
+
"Описывать в терминах" это означает использовать мета-язык. Основы вводят четыре уровня этих "мета" (традиционных для MDA, но и очень похожих на уровни [[ISO 15926]]) для описания:
 +
*3 — '''meta-language''': [[MOF]] (мета-класс, отношение и т.д.)
 +
*2 — '''мета-модель/язык''': Construct (понятия языка Основ — ядро, альфа, рабочий продукт, действие, компетенция и т.д.)
 +
*1 — '''ситуационный метод/сущности''': Types (конкретные ядра и практики — "[[требования]]", "прописать сценарии использования").
 +
*0 — '''жизнь''': Occurence (экземпляры времени выполнения, объекты в реальной жизни)
  
*3 - '''meta-language''': [[MOF]] (мета-класс, отношение и т.д.)
+
== Мета-модель ==
*2 - '''мета-модель/язык''': Construct (понятия языка Основ - alpha/[[альфа]], activity/дело)
+
[[Файл:OMG-Essence-language.svg|center]]
*1 - '''ситуационный метод/сущности''': Types (конкретные ядра и практики - "[[требования]]", "прописать сценарии использования").
+
*0 - '''жизнь''': Occurence (экземпляры времени выполнения, объекты в реальной жизни)
+
  
== Термины ==
+
Язык Основ предписывает использовать следующие термины-конструкты:
Язык Основ предписывает использовать следующие основные термины-конструкты (их, конечно, больше -- но эти главные):
+
*альфа (alpha - то, что требует отслеживания для [[Успешность системы|успеха]] разработки, что будет продвигаться работами по последовательности состояний)
+
*состояние альфы в ходе разработки (alpha state)
+
*деятельность (activity space, "пространство дел", т.е. деятельность - она меняет состояния)
+
компетенции, требуемые для деятельностей - с набором уровней для каждой компетенции.
+
  
Для увеличения выразительности Языка добавлены:
+
{| class="wikitable"
*ресурсы (то, что будет потом использоваться без изменений при переносе из метода в жизнь: шаблоны, примеры, руководства, курсы для *получения компетенций и т.д.)
+
|style="width: 5%;"| [[Файл:practice_25.png]]
*паттерны (связки сущностей и их отношений - стадии жизненного цикла и даже роли вводятся паттернами).
+
|style="width: 20%;"| '''[[:Категория:Практики|Практика]]'''
 +
|style="width: 15%;"| (Practice)
 +
|style="width: 60%;"| Постоянные действия, направленные на достижение какой-то цели.
 +
|-
 +
| [[Файл:alpha_25.png]]
 +
| '''[[:Категория:Альфы|Альфа]]'''
 +
| (Alpha)
 +
| Элемент, который требует отслеживания для [[Успешность системы|успеха]] разработки, что будет продвигаться работами по последовательности состояний ([[Файл:state_25.png]] alpha state), которые проверяются ответами на [[Практика контрольных вопросов|контрольные вопросы]].
 +
|-
 +
| [[Файл:work_product_25.png]]
 +
| '''[[Рабочий продукт]]'''
 +
| (Work Product)
 +
| Артефакт (документ, кусок программного кода, какая-то созданная сущность). Вводится понятие "уровени проработки" ([[Файл:level_of_detail_25.png]] level of detail) рабочего продукта, которые проверяются ответами на [[Практика контрольных вопросов|контрольные вопросы]].
 +
|-
 +
| [[Файл:activity_space_25.png]]
 +
| '''Деятельность'''
 +
| (Activity Space)
 +
| Указание на что-то, что должно быть сделано в процессе разработки программного обеспечения. Деятельность может включать в себя несколько дел (activity) или не включать ни одного.
 +
|-
 +
| [[Файл:activity_25.png]]
 +
| '''[[Дело]]'''
 +
| (Activity)
 +
| Набор [[Работа|работ]] и указания по их выполнению.
 +
|-
 +
| [[Файл:competency_25.png]]
 +
| '''[[Компетенция]]'''
 +
| (Competency)
 +
| Возможности, способности, знания и умения, необходимые для выполнения определенной работы. Для каждого члена [[Команда|команды]] может быть определен набор и уровень ([[Файл:competency_level_25.png]] competency level) компетенций.
 +
|-
 +
| [[Файл:pattern_25.png]]
 +
| '''[[Паттерны|Шаблон]]'''
 +
| (Pattern)
 +
| Связки сущностей и их отношений - стадии жизненного цикла и даже роли вводятся паттернами
 +
|-
 +
| [[Файл:resource_25.png]]
 +
| '''Ресурс'''
 +
| (Resource)
 +
| То, что будет использоваться без изменений при переносе из метода в жизнь: шаблоны, примеры, руководства, курсы для получения компетенций и т.д.
 +
|-
 +
| [[Файл:kernel_25.png]]
 +
| '''Ядро'''
 +
| (Kernel)
 +
| Набор элементов, формирующий общее описание деятельности (endeavor), определяющий базовые концепции (альфы, деятельности, компетенции и т.д.) и предметную область (например, Программная инженерия)
 +
|-
 +
| [[Файл:method_25.png]]
 +
| '''[[:Категория:Методы|Метод]]'''
 +
| (Method)
 +
| Сочетание ядра и набора практик для достижения определенной цели. Из 250 практик составляются (composed) тысячи и тысячи методов, в зависимости от ситуации (см. [[Ситуационная инженерия методов]]). Важно, что метод не становится организационной догмой, он эволюционирует в ходе разработки (практики в методе меняются). Для методов определены способы их задействования (enactment), вплоть до того, что стандарт позволяет формально подсказывать, что когда можно делать (для этого может быть использован традиционный для OMG язык ограничений - [[OCL]]).
 +
|-
 +
| [[Файл:area_of_concern_48.png|25px]]
 +
| '''Область интересов'''
 +
| (Area of Concern)
 +
| Все элементы практик и ядра попадают в одну из трёх областей интересов (см. ниже)
 +
|}
  
 
== Области интересов ==
 
== Области интересов ==
 
[[Файл:OMG-Essence-kernel.png|center]]
 
[[Файл:OMG-Essence-kernel.png|center]]
 
В терминах-конструктах Языка описываются '''абстрактные сущности''' (kernel) для программной инженерии, имеющие определяемые Языком типы. Эти сущности разбиты на три '''области интересов''' (area of concern):
 
В терминах-конструктах Языка описываются '''абстрактные сущности''' (kernel) для программной инженерии, имеющие определяемые Языком типы. Эти сущности разбиты на три '''области интересов''' (area of concern):
* '''Клиент''' (Customer)
+
{| class="wikitable" style="font-size:9pt"
** ''Альфы:'' возможности, [[стейкхолдер|заинтересованные стороны]].
+
! style="font-weight: bold;" | №
** ''Деятельности:'' исследовать возможности, понять нужды заинтересованных сторон, обеспечить удовлетворение заинтересованных сторон, использовать систему.
+
! style="font-weight: bold;" | Область интересов
** ''Компетенции:'' представление заинтересованной стороны.
+
! style="font-weight: bold;" | Альфы
* '''Решение''' (Solution)
+
! style="font-weight: bold;" | Действия
** ''Альфы:'' [[требования]], программная система.
+
! style="font-weight: bold;" | Компетенции
** ''Деятельности:'' понять требования, смоделировать/shape систему, изготовить систему, тестировать систему, развернуть/deploy систему, управлять/operate системой.
+
|-
** ''Компетенции:'' анализ, разработка, тестирование.
+
| 1
* '''Усилия''' (Endeavor)
+
| '''Клиент''' (Customer)
** ''Альфы:'' [[работы]], [[команда]], способ работы.
+
|
** ''Деятельности:'' приготовиться к выполнению работы, координировать дела, поддерживать команду, отслеживать прогресс, остановить работу.
+
* [[возможности]]
** ''Компетенции:'' [[лидерство]], [[менеджмент]].
+
* [[стейкхолдер]]
 
+
|
Для каждого типа альф вводятся её состояния, а для состояний приводится [Практика контрольных вопросов|чеклист].
+
* исследовать возможности;
 
+
* понять нужды заинтересованных сторон
Конечно, понятие Alpha (Abstract-Level Progress Health Attribute) является ключевым для стандарта, оно определяется как существенный (essential) элемент софтверноинженерного проекта, за которым нужно следить при оценке его продвижения (progress) и "здоровья".
+
* обеспечить удовлетворение заинтересованных сторон
 +
* использовать систему
 +
| [[Представление стейкхолдера]]
 +
|-
 +
| 2
 +
| '''Решение''' (Solution)
 +
|
 +
* [[требования]]
 +
* [[программная система]]
 +
|
 +
* понять требования
 +
* смоделировать (shape) систему
 +
* изготовить систему
 +
* тестировать систему
 +
* развернуть (deploy) систему
 +
* управлять (operate) системой
 +
|
 +
* [[Анализ]]
 +
* [[Разработка]]
 +
* [[Тестирование]]
 +
|-
 +
| 3
 +
| '''Деятельность''' (Endeavor)
 +
|
 +
* [[работа]]
 +
* [[команда]]
 +
* [[технология]]
 +
|
 +
* приготовиться к выполнению работы
 +
* координировать дела
 +
* поддерживать команду
 +
* отслеживать прогресс
 +
* остановить работу
 +
|
 +
* [[Лидерство]]
 +
* [[Менеджмент]]
 +
|}.
  
 
== Карточки ==
 
== Карточки ==
Строка 55: Строка 141:
 
см. [http://www.ivarjacobson.com/uploadedFiles/Content/Landing_Pages/SEMAT%20SW%20Eng%20Kernel%20Cards%20A8.pdf Англоязычные карточки, готовые к распечатке].
 
см. [http://www.ivarjacobson.com/uploadedFiles/Content/Landing_Pages/SEMAT%20SW%20Eng%20Kernel%20Cards%20A8.pdf Англоязычные карточки, готовые к распечатке].
 
а потом для каждой альфы выкладывается ряд этих карточек с группировкой состояний по разным принципам:
 
а потом для каждой альфы выкладывается ряд этих карточек с группировкой состояний по разным принципам:
*уже достигнутые, в работе, ещё не достигнутые (оценка состояния дел в проекте). Попробуйте оценить состояние проекта в онлайн-инструменте SEMAT Accelerator -- http://sematacc.meteor.com/ (требует бесплатной регистрации).
+
*уже достигнутые, в работе, ещё не достигнутые (оценка состояния дел в проекте). Попробуйте оценить состояние проекта в онлайн-инструменте [sematacc.herokuapp.com/ SEMAT Accelerator] (требует бесплатной регистрации).
 
*те, которые будем достигать мы, и которые были достигнуты или будут достигнуты другими (жизненный цикл нашего проекта в общем жизненном цикле)
 
*те, которые будем достигать мы, и которые были достигнуты или будут достигнуты другими (жизненный цикл нашего проекта в общем жизненном цикле)
 
*те, которые будут достигнуты на каждой стадии жизненного цикла (так определяется вид жизненного цикла -- см. также рис.160 в тексте самого стандарта)
 
*те, которые будут достигнуты на каждой стадии жизненного цикла (так определяется вид жизненного цикла -- см. также рис.160 в тексте самого стандарта)
 
*те, которые будут достигнуты на текущем шаге/итерации/спринте (планирование шага работы).
 
*те, которые будут достигнуты на текущем шаге/итерации/спринте (планирование шага работы).
 
== Практики и методы ==
 
 
[[Работы]] (works) ведутся в соответствии с [[Практика|Практиками]], которые добавляют к абстрактным сущностям более конкретные:
 
* '''[[Рабочий продукт|рабочие продукты]]''' (work products), состояние которых позволяет судить об абстрактных состояниях альф. Сами рабочие продукты имеют не состояния, но уровни детальности.
 
* '''дела''' (activity), которые выполняются в деятельностях, изменяют рабочие продукты в части поднятия их уровня детальности, и тем самым продвигают состояние альф. Дела делаются по порядку (между делами есть связь "следует за" - то есть это такой способ описания процессов).
 
 
'''[[Метод]]''' - это тот небольшой набор практик из библиотеки, которым в жизни будет пользоваться команда разработчиков. Из 250 практик составляются (composed) тысячи и тысячи методов, в зависимости от ситуации (см. [[Ситуационная инженерия методов]]). Важно, что метод не становится организационной догмой, он эволюционирует в ходе разработки (практики в методе меняются).
 
 
Далее для методов определены способы их задействования (enactment), вплоть до того, что стандарт позволяет формально подсказывать, что когда можно делать (для этого может быть использован традиционный для OMG язык ограничений - [[OCL]]).
 
  
 
== Локализация ==
 
== Локализация ==
 
* [http://semat.org/russian-chapter Русское отделение SEMAT]
 
* [http://semat.org/russian-chapter Русское отделение SEMAT]
 
* [http://se-essence.com/ru/ Русскоязычный блог SEMAT Essence]
 
* [http://se-essence.com/ru/ Русскоязычный блог SEMAT Essence]
* [http://se-essence.com/downloads/Essence%20glossary.pdf Перевод глоссария Essence]]
+
* [http://se-essence.com/downloads/Essence%20glossary.pdf Перевод глоссария Essence]
 +
* [http://ailev.livejournal.com/1059781.html Перевод контрольных вопросов к состоянию проекта Essence]
  
 
== Приложения ==
 
== Приложения ==
 
* [https://www.ivarjacobson.com/alpha-state-explorer-app Alpha State Explorer]
 
* [https://www.ivarjacobson.com/alpha-state-explorer-app Alpha State Explorer]
  
 +
== Ссылки ==
 +
* [https://practicelibrary.ivarjacobson.com/ Библиотека практик OMG Essence от Ivar Jacobson]
  
[[Категория: Стандарты]]
+
[[Категория: Стандарты OMG]]

Версия 16:24, 30 ноября 2017

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 (экземпляры времени выполнения, объекты в реальной жизни)

Мета-модель

OMG-Essence-language.svg

Язык Основ предписывает использовать следующие термины-конструкты:

Practice 25.png Практика (Practice) Постоянные действия, направленные на достижение какой-то цели.
Alpha 25.png Альфа (Alpha) Элемент, который требует отслеживания для успеха разработки, что будет продвигаться работами по последовательности состояний (State 25.png alpha state), которые проверяются ответами на контрольные вопросы.
Work product 25.png Рабочий продукт (Work Product) Артефакт (документ, кусок программного кода, какая-то созданная сущность). Вводится понятие "уровени проработки" (Level of detail 25.png level of detail) рабочего продукта, которые проверяются ответами на контрольные вопросы.
Activity space 25.png Деятельность (Activity Space) Указание на что-то, что должно быть сделано в процессе разработки программного обеспечения. Деятельность может включать в себя несколько дел (activity) или не включать ни одного.
Activity 25.png Дело (Activity) Набор работ и указания по их выполнению.
Competency 25.png Компетенция (Competency) Возможности, способности, знания и умения, необходимые для выполнения определенной работы. Для каждого члена команды может быть определен набор и уровень (Competency level 25.png competency level) компетенций.
Pattern 25.png Шаблон (Pattern) Связки сущностей и их отношений - стадии жизненного цикла и даже роли вводятся паттернами
Resource 25.png Ресурс (Resource) То, что будет использоваться без изменений при переносе из метода в жизнь: шаблоны, примеры, руководства, курсы для получения компетенций и т.д.
Kernel 25.png Ядро (Kernel) Набор элементов, формирующий общее описание деятельности (endeavor), определяющий базовые концепции (альфы, деятельности, компетенции и т.д.) и предметную область (например, Программная инженерия)
Method 25.png Метод (Method) Сочетание ядра и набора практик для достижения определенной цели. Из 250 практик составляются (composed) тысячи и тысячи методов, в зависимости от ситуации (см. Ситуационная инженерия методов). Важно, что метод не становится организационной догмой, он эволюционирует в ходе разработки (практики в методе меняются). Для методов определены способы их задействования (enactment), вплоть до того, что стандарт позволяет формально подсказывать, что когда можно делать (для этого может быть использован традиционный для OMG язык ограничений - OCL).
Area of concern 48.png Область интересов (Area of Concern) Все элементы практик и ядра попадают в одну из трёх областей интересов (см. ниже)

Области интересов

OMG-Essence-kernel.png

В терминах-конструктах Языка описываются абстрактные сущности (kernel) для программной инженерии, имеющие определяемые Языком типы. Эти сущности разбиты на три области интересов (area of concern):

Область интересов Альфы Действия Компетенции
1 Клиент (Customer)
  • исследовать возможности;
  • понять нужды заинтересованных сторон
  • обеспечить удовлетворение заинтересованных сторон
  • использовать систему
Представление стейкхолдера
2 Решение (Solution)
  • понять требования
  • смоделировать (shape) систему
  • изготовить систему
  • тестировать систему
  • развернуть (deploy) систему
  • управлять (operate) системой
3 Деятельность (Endeavor)
  • приготовиться к выполнению работы
  • координировать дела
  • поддерживать команду
  • отслеживать прогресс
  • остановить работу
.

Карточки

Стандарт вводит кроме графического и текстового языков для описания практик ещё и представление на карточках - когда для каждого состояния альфы делается отдельная карточка с представлением чеклиста. см. Англоязычные карточки, готовые к распечатке. а потом для каждой альфы выкладывается ряд этих карточек с группировкой состояний по разным принципам:

  • уже достигнутые, в работе, ещё не достигнутые (оценка состояния дел в проекте). Попробуйте оценить состояние проекта в онлайн-инструменте [sematacc.herokuapp.com/ SEMAT Accelerator] (требует бесплатной регистрации).
  • те, которые будем достигать мы, и которые были достигнуты или будут достигнуты другими (жизненный цикл нашего проекта в общем жизненном цикле)
  • те, которые будут достигнуты на каждой стадии жизненного цикла (так определяется вид жизненного цикла -- см. также рис.160 в тексте самого стандарта)
  • те, которые будут достигнуты на текущем шаге/итерации/спринте (планирование шага работы).

Локализация

Приложения

Ссылки