Anatoly Levenchuk (ailev) wrote,
Anatoly Levenchuk
ailev

Группы элементов языка Essence: дисциплины, практики, методы, библиотеки

Стандарт OMG Essence крут и объёмен: сейчас в нём 277 страниц как попсового для разработчиков, так и не слишком попсового текста для методологов. Напишу-ка я тут про группы элементов (ElementGroup) языка (language) этого стандарта.

Группа элементов -- это абстрактный элемент языка Essence (LanguageElement), которая позволяет собрать по ссылке (referredElements) либо по содержанию (ownedElements) элементы языка Essence. Специализируется эта абстракция в метод (Method), практику (Practice), комплектующее практики (PracticeAsset), дисциплину (Kernel), библиотеку (Library).

Дисциплина

Дисциплина (kernel) -- это набор элементов, необходимый для минимального согласования понимания инженерного проекта ("что есть в инженерном проекте" -- онтология, common ground for describing). Дисциплина содержит основные элементы (BasicElements, иногда про них говорят Essentials) инженерного проекта, т.е. только:
-- альфы (alpha), связи альф (AlphaAssociation, это "стрелочки" на диаграмме альф), вложенности альф (AlphaContainment, это связи подчинённости альф в их ациклическом графе),
-- деятельности (ActivitySpace),
-- компетенции (Competency),
-- элементы расширения (ExtensionElement) и разрешения коллизий слияния (MergeResolution) -- используются для модификаций и кастомизаций атрибутов элементов и объединения нескольких элементов в один, когда имеющиеся описания на Essence адаптируют к новым ситуациям.

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

Дисциплины закрыты в том смысле, что элементы в дисциплинах могут ссылаться только друг на друга и на элементы из других дисциплин. К дисциплине могут применяться правила связности (задаются или текстом, или на каком-то логическом языке, например OCL).

Графическое обозначение дисциплины -- шестиугольник с шестерёнкой внутри.

Практика

Практика (Practice) -- это описание того, как справиться с каким-то отдельным аспектом (но не всеми!) инженерного проекта как в собственно инженерной части, так и в части организации работы команды, включая стратегирование. Практика даёт имя группе элементов, которая составляет руководство по достижению указанной цели. Практика может быть определена и как составленная (composition) из других практик.

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

У практики есть свои правила обеспечения целостности. Цель указывается лаконичной обособленной фразой (предложением), но могут быть даны и дополнительные объяснения.

Практика также имеет указание на единицы измерения, оценивающих характеристики (performance) практики и достижение её цели. Измерения проводятся и документируются в ходе выполнения практики.

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

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

В отличие от дисциплины, которые включают только базовые элементы (альфы, деятельности и т.д.), практики включают и разнообразные другие элементы языка Essence (рабочие продукты, дела и т.д.) -- назовём эти элементы "технологией", но в самом Essence этого слова нет, группа элементов "технология" не существует (не нужно путать эти элементы с альфой way of working, которую мы пока тоже переводим "технология"). Дисциплинам учат в ВУЗах, а технологии специфичны для каждого отдельного предпринятия -- разнообразие возможных рабочих продуктов для каких-то альф и дел для каких-то деятельностей огромно, существенно зависит от инструментов, оно и отражается в технологии.

Практики закрыты в том смысле, что элементы в практике могут ссылаться только на элементы этой практики или группы элементов (практики, методы, библиотеки и т.д.), к которым эта практика относится.

Практика имеет графическое обозначение как шестиугольник.

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

Метод

Метод -- это сочетание (composition) дисциплины и набора практик для достижения какой-то цели (purpose [попробуйте перевести как "назначение" метода, и у вас возникнут трудности в употреблении этого термина во многих контекстах]). Бывают методы разработки, методы сопровождения, методы интеграции систем, и т.д..

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

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

Практики, которые составляют (articulate, makes up, contained in) метод, должны удовлетворять свойствам:
-- однородности (coherency): достижение цели каждой практики даёт вклад в достижение цели всего метода.
-- связности (consistency): каждый вход (entry) и результат (result) взаимосвязаны и используются.
-- полноты (completeness): достижение целей всех практик означает достижение цели метода и достигает ожидаемого результата.
Эти свойства в начале создания (authoring) метода почти никогда не присутствуют.

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

Библиотека

Библиотека (Library) -- это именованный контейнер, в котором содержится коллекция групп элементов (и только групп -- т.е. дисциплин, практик, методов и т.д.) для какой-то определённой цели. Например, это может быть библиотека используемых какой-то компанией практик, или коллекция дисциплин и основанных на них практик, которым учат студентов какого-то ВУЗа.

В ВУЗах, конечно, нужно учить дисциплинам, давая для этих дисциплин примеры каких-нибудь практик попроще, и приводя в пример пару-тройку методов, составленных из этих практик. Например, в дисциплине системной инженерии нужно рассказывать об определении системы (system definition), подальфой для неё давать требования, а дальше разводить практики user case и user story (обе будут в библиотеке), показывая принятие решения, какую именно из этих двух практик использовать в методе для реализации какого-то учебного инженерного проекта.
* * *
UPDATED 2 ноября 2013: заменил "основа" на "дисциплина" для kernel.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 11 comments