Anatoly Levenchuk ([info]ailev) wrote,
@ 2009-11-14 22:21:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
Второе поколение инженерии требований
Опубликованы minutes к шестнадцатому заседанию INCOSE, на котором [info]puln докладывал о системах управления требованиями (СУТ) в системной инженерии -- http://community.livejournal.com/incose_ru/9396.html. Там есть ссылка на два часа видео (в принципе, видео могло быть и больше, только при подключении флешки для демонстрации пары специально припасенных одним из участников обсуждения слайдов был выдернут шнур камеры для освобождения USB-разъема. В пылу дискуссии это не было замечено).

Обсуждение споткнулось на понимании того, как СУТ обслуживают работу с требованиями на схеме V-диаграммы



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

Работа СУТ в верхней части V (обеспечения соглашений) понятна -- можно обеспечивать "автоматизацию выдачи технических заданий и проверки их выполнения", а также "проверку соответствия требованиям технического регулирования"). Именно тут и появляется RIF, формат обмена требованиями, существенно отличающийся от формата обмена кусками информационной модели системы между подрядчиками.

Работа в нижней части V (практики придумывания-изготовления) оказалась непонятна: природа этой работы сегодня стремительно меняется по мере появления нового поколения онтологических САПР и объединения всех видов информационных моделей по мере перехода к датацентрике, а вот что происходит при этом с "моделью требований" (эээ... содержимым базы данных системы управления требованиями) -- непонятно. Сами требования продолжают существовать не в виде семантических информационных моделей, как существует проект в сегодняшнем САПР, а в виде обрывков текста, требующих человеческой интерпретации. Такое впечатление, что все понятное машинам сегодня просто прекращают называть требованиями, а предпочитают называть как-нибудь иначе: business rules, информационная модель и т.д. А когда из понятного машинам это делается понятным юристам документом (юристы ведь появляются на запах контракта), то для обеспечения контрактации используют какие-то системы документооборота, только косвенно связанные с основными инженерными практиками. А разговор про инженерию требований к этому документообороту приклеивают только по историческим причинам: поезд ушел, а перрон-то остался!

Моделирование самих требований еще не завоевало место под солнцем. Так, классики "текстовых требований" для систем типа DOORS пишут (http://download.boulder.ibm.com/ibmdl/pub/software/dw/ru/download/eBook_RU_Requirements_Engineering.pdf), что "Некоторые употребляют термин «моделирование требований». Это термин является неверным по сути. Моделируется реализация системы, а не требования к ней". У классиков СУТ старого поколения модели отдельно, а требования -- тоже отдельно.

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

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

Факт X становится требованием, когда записано "должен быть X" или "может быть X". Подробно об этом можно почитать в диссертации Andries Van Renssen, который подробно про это рассказывает для факто-ориентированного описания Gellish (http://repository.tudelft.nl/file/313741/306185). Абсолютно аналогична ситуация со всеми современными САПР (замечание в сторону: Gellish планируется на сегодня как ISO 15926-11, но выход этой части стандарта будет позже, чем в 2010 году. С другой стороны, ISO 15926-7 определяет фактоориентированное описание, в противовес атрибутному на EXPRESS и OWL. Так что все сказанное относится и к ISO 15926. Более того, все сказанное верно и для других концептуальных схем, используемых в современных САПР от Dassault Systemes, Intergraph, Bentley, AVEVA и т.д.).

Приведем ссылку на статью еще одного геллишевца Leo van Ruijven -- Requirement management, traditional and a second generation scenario, 2006г.. В этой статье прямо говорится про второе поколение управления требованиями.

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

Итак, моделирование, появившись, съедает традиционную работу с огромными списками текстовых требований, требовавших специализированного документооборота. Заинтересованные стороны в model-driven requirement engineering честно при этом говорят (Software & Systems Requirements Engineering: In Practice, by Brian Berenbach, Daniel J. Paulish, Juergen Kazmeier, Arnold Rudorfer. ): "В зависимости от изощренности используемого инструмента моделирования, полная реализация URML может позволить организации проводить большинство мероприятий инженерии требований c URML [моделями], порождая по потребности без специальной о том заботы такие артефакты, как документы или спецификации требований" ("Depending on the sophistication of the modeling tools used, a full implementation of the URML would permit an organization to do most of its RE activities with a URML, generating artifacts such as documents or requirement specifications as needed on an ad hoc basis").

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

Я утверждаю, что при смене управления требованиями существенно поменяется и сама инженерия требований, управление требованиями в которой является важной (и даже определяющей) составной частью, но явно не единственной. Главные практики дисциплины инженерии требований (дисциплина = объединенный общей предметной/domain онтологией набор практик) по проекту ISO/IEC 29148 "Инженерия требований", это определение требований заинтересованных сторон, и анализ требований. Управление требований определяется (наряду с ) как "Управление требованиями объединяет те дела, которые записывают и сопровождают становящиеся требования и возникающие из [выполнения] мероприятий инженерии требований связанные исторические сведения и сведения о контексте. Управление требованиями таже устанавливает инструкции для определения, контроля и публикации базисов требований для всех уровней [структуры] целевой системы. Результативное управление требованиями происходит в контексте организационных и технических практик, как это определено в ISO/IEC 15288 и ISO/IEC 12207 (Requirements management encompasses those tasks that record and maintain the evolving requirements and associated context and historical information from the requirements engineering activities. Requirements management also establishes procedures for defining, controlling, and publishing the baseline requirements for all levels of the system-of-interest. Effective requirements management occurs within the context of an organization's project and technical processes as defined in ISO/IEC 15288 and ISO/IEC 12207).

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

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

Я думаю, что этот подход "электронной работы с ранее бумажными требованиями" прошлое поколение, хотя и с модными словами типа URML, Unified Requirement Modeling Language. В классификации Dassault Systemes -- это PDM, product data management. Есть данные, мы не интересуемся, какие они по сути (у них собственная схема данных, которая открыта, если они нам специально потребуются в другой информационной системе), и мы обеспечиваем их надлежащее хранение и выдачу по особым запросам. PDM -- это не про интеграцию данных, это про interoperability, когда легко обеспечить незначительным программированием взаимодействие двух каких-то указанных информационных систем. Например, системы требований и 3D-САПР. Системы требований, и P&ID САПР. Беда в том, что этих разнообразных САПР развелось очень много, со всеми систему управления требований не насвязываешь. Интеграции данных (произвольная выборка данных из разных хранилищ, обеспечиваемая внешней библиотекой справочных данных) при таком подходе прошлого поколения нет.

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

Это все не исключает инженерии требований как содержательной дисциплины: в любом случае, нужно выявлять и анализировать то, что нужно, кому нужно, когда нужно, зачем нужно, как эта потребность удовлетворяется, как проверяется соответствие этой потребности и т.д.. Для этого все равно нужно иметь специальный инструментарий, способный отобразить эту группу описаний -- "система управления требованиями", конечно, нужна, как нужна "система управления геометрией" ("геометрия" -- это 3D описания, к ним обычно привязываются и все остальные описания, т.е. P&ID, electrical etc.). В современных САПР есть много разных domain specific languages со своими редакторами, для группы описаний, затрагивающих аспект "долженствования" тоже может быть спец.редактор, связанный с 3D-описанием примерно так же, как P&ID. Его и назовем СУТ второго поколения, которая будет работать со специфической моделью данных "деонтики", связанной с фактами всей модели системы (а то еще и моделями обеспечивающих систем -- организационной моделью, например). Весь вопрос в том, как эти ранее stand-alone редакторы потихоньку сползаются в единую коллаборативную интерактивную среду, поддерживающую множество предметно-специфичных языков: 3D-описания, описания диаграмм P&ID, описания требований в их деонтической части и т.д.. Сначала полностью автономные системы, потом в рамках "семейств САПР" (Dassault Systemes V5, Intergraph SmartPlant Enterpise и т.д.) обмен файлами при "публикации" в "репозиторий-со-схемой", использующийся для многих уже по факту полуавтономных САПР -- это поддерживают сейчас практически все поставщики САПР. Позже -- непосредственная работа с общим репозиторием, пока из "больших" систем это реализовано только у Dassault Systemes. См. обсуждение технологий этого обеспечиваемого онтологическими технологиями слияния в http://ailev.livejournal.com/748188.html.

Если поглядеть не только на сбор-анализ требований и проектирование-конструирование, но и на изготовление, то нужно обратить внимание тренд к унификации языка для представления цепочки "требования-->набор моделей-->программа для изготовления на станках", который обсуждается в подходе порождающего производства (Stephen Fox, Generative Production Systems for sustainable product creation, 2009, http://www.vtt.fi/inf/pdf/workingpapers/2009/W129.pdf).

Аналогичные тренды по изменению работы с требованиями наблюдаются не только для САПР "железных" и "железобетонных" систем, но и в других классах информационных систем. Например, для явное выделение проблемы инженерии требований для организаций-систем проходит в другой терминологии (business rules, см.Манифест организационных норм http://ailev.livejournal.com/693597.html), но по сути представляет собой все то же самое: начав с заявления о том, что "к организации есть требования, и системы работы с этими требованиями должны быть семантическими, а не "полнотекстовыми", авторам пришлось признать, что "требовательная" часть занимает всего 15% от объема предлагаемого ими стандарта моделирования требований (OMG SBVR, Semantic Business Vocabulary and Rules, http://ailev.livejournal.com/692588.html), а все остальное посвятить описанию способа моделирования фактов об организации, который затем предполагается использовать во всех "частных" (аналогичных "частным" САПР в машиностроении) моделях. В принципе, этот ход приводит к новому пониманию архитектуры предприятия (Enterprise Architecture), где собственно архитектуру предприятия начинают, наконец, отклеивать от архитектуры IT-систем предприятия, и вставлять в более общий ряд моделей -- требования-архитектура-"модель для изготовления"-"модель as build с историческими данными". Старые архитектурные подходы (все эти TOGAF, "по Захману" и т.д.) трещат по всем швам, хотя и представляют собой такой же нынешний мейнстрим, как "управление требованиями с использованием DOORS и IRqA".

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

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

Так что задачей является создание методологии/дисциплины инженерии требований, соответствующей современной моделе-ориентированной системной инженерии (http://ailev.livejournal.com/728605.html). Для моделирования инженерии требований используем ситуационную инженерию методов -- http://ailev.livejournal.com/750878.html. И положим это все кирпичиком в PraxOS.


(10 comments) - (Post a new comment)


[info]avlasov
2009-11-16 01:14 pm UTC (link)
"Некоторые употребляют термин «моделирование требований». Это термин является неверным по сути. Моделируется реализация системы, а не требования к ней". У классиков СУТ старого поколения модели отдельно, а требования -- тоже отдельно.
Если требования формализованы (тем более, если исполнимы) - то говорить о моделировании требований вполне корректно. Потому как формальный язык отличается от обычного человеческого, который весьма многозначен. А формальный как раз упрощенный, зато строгий. Т.е. по факту имеем моделирование (реального языка на неком искусственном).
Ну и процесс записи явно является моделированием. К примеру, даже такой базовый объект как множество, можно представить на формальном языке, т.е. отмоделировать, разными способами: конструируемым типом, предикатом, функцией возвращающей bool, списком, другой структурой данных, типа разнообразных деревьев.

(Reply to this) (Thread)


[info]ailev
2009-11-16 05:47 pm UTC (link)
Тут много спекуляций по поводу "моделирования" и "описания" как терминов. У меня вот статья на английском в верстку уже пошла -- так там начинается с того, что "слово моделирование уже имеет примерно такое же значение, как просто слово описание, и значение это так же туманно".

Мне очень понравилось: "формальный язык упрощенный, зато строгий". По пять, но большие ;) В этом-то и фишка.

(Reply to this) (Parent)


[info]avlasov
2009-11-16 02:01 pm UTC (link)
Когда мы меняем природу "требования", меняем природу "трассировки", переходим на управление конфигурацией в контексте всего жизненного цикла, а базис требований становится всего лишь частью общей информации модели, а не отдельной "базой данных требований", мы должны ожидать, что меняются и все остальные практики, связанные с требованиями. Так, сбор требований сразу может проходить в форме моделей, без предварительного текстового описания в виде полотен бумаги. Анализ требований -- тоже связан с моделированием.
Хуже того, если рассматривать исполнимые спецификации, то спецификация часто может являться реализацией, по крайней мере, прототипом. Особенно, это касается библиотечных спецификаций.
К примеру, рассмотрим (софтверное) требование, что функция должна выдавать в качестве результата масимальный элемент из списка переданного в параметре. Пример конечно примитивнй, но тем не менее, если записать требование в виде forall params, In (func params) params /\ forall a, In a params -> (func params) >= a, то нетрудно представить себе алгоритм, который такие спеки при некоторых условиях преобразует в исполнимый код (логическое программирование, программирование в ограничениях).

(Reply to this)


[info]avlasov
2009-11-16 02:06 pm UTC (link)
Так, сбор требований сразу может проходить в форме моделей, без предварительного текстового описания в виде полотен бумаги.
Кстати, сбор требований лучше все-таки на бумаге проводить. Потому как формальная запись уже сама по себе является моделированием, т.е. анализом требований.
Иногда эти две фазы нужно разделять - по организационным соображениям (временной график специалистов, заказчиков и т.д.).
В идеале конечно хорошо бы сразу записывать в форме моделей. Но в связи с наличием ограничений в формальном языке, нужно иметь весьма подготовленного эксперта, чтобы он мог это делать на ходу.
Плюс, на самом деле, сбор требований - это скорее нечто вроде допроса :). Т.е. тут нужна несколько другая квалификация, хотя безусловно быстрый анализ очень полезен при допросе, вопрос только как совместить в одном человеке разные квалицикации :).

(Reply to this) (Thread)


[info]ailev
2009-11-16 05:44 pm UTC (link)
Вопрос о квалификации того, кто допрашивает -- крайне важен. Об этом тома пишут. Тут еще важно разделить (или совместить) три дела: выявление требований (продукт: требования заинтересованной стороны), анализ требований (продукт: определение системы), архитектурное проектирование (логическая архитектура). В жизни они крепко перепутаны, но теоретики строго предупреждают: путать нельзя, чтобы отлавливать несоответствия и проводить рефлексию сделанного. Вот и думать, какое тут разделение труда...

(Reply to this) (Parent)(Thread)


[info]andy_scott
2009-11-17 07:10 pm UTC (link)
Где бы парочку таких томов заполучить, о квалификации допрашивающего? Был бы весьма признателен за на водку...

(Reply to this) (Parent)(Thread)


[info]ailev
2009-11-17 07:53 pm UTC (link)
Я беру оттуда же, откуда и все: http://ebdb.ru/Search.aspx?p=1&s=requirements+engineering&x=0&y=0. Ну и другие запросы тоже можно попробовать (requirements management, например).

(Reply to this) (Parent)(Thread)


[info]andy_scott
2009-11-17 08:12 pm UTC (link)
Спасибо, ушел изучать :)

(Reply to this) (Parent)


[info]vit_r
2009-11-17 11:35 pm UTC (link)
Как-то смотрел я на языки формальных спецификаций, а именно на Z. Это тихий ужас. Для систем со сколько-нибудь размытыми границами такого не создать. Это я к тому, что часть требований всегда будет находиться в некой субстанции, называемой "культура фирмы". Можно накопать много, но по мере углубления цена добывания информации растёт, а ценность падает.

Чёткие релизы (в том числе и в виде бумажек) нужны для передачи работы от отдела к отделу. Если не фиксировать, то последнее звено в цепи всегда будет виновато. Так что менеджер откажется брать работу, состояние которой не зафиксировано. И по цепочке череда замороженных View поднимится вверх.

(Reply to this) (Thread)


[info]ailev
2009-11-18 05:31 am UTC (link)
Тут я пишу о совсем разных механизмах, каждый из которых почти независим:
-- формальные спецификации, только совсем не на языке Z или каком-то особом языке управления требованиями. Формальные спецификации делаются в том же языке, с которым работают разные workbenches/editors/workstations САПР, только ставится пометка "требования"
-- передача требований между работниками (необязательно между "отделами"). Это делается внутри САПР, а не внутри отдельной системы. Можно еще предположить, что внутри отдельных окошек одной системы, но не в виде отдельной специализированной системы, предназначенной только для этого.

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

(Reply to this) (Parent)


(10 comments) - (Post a new comment)

Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…