О системе Требование. О термине «требования». Синтаксис требований. Уровни требований. 1Требования к продукту 2Требования к системе
Скачать 43.81 Kb.
|
Содержание 1Требования к продукту 2Требования к системе 2.1Требования по ГОСТ 34 3Модальность 4Виды требований 4.1Свойства качества (внешние) 5Стандарты представления требований 6Практики ЖЦ требований по ISO 15288 6.1Жизненный цикл требований стейкхолдеров 6.2Жизненный цикл требований к системе 7Рабочие продукты требований 8Управление требованиями и инженерия требований 9Требования к требованиям 9.1Требования к требованиям по ISO 29148 9.2Другое 10Состояния Категория: Требования Термин “требования” имеет два разных смысла: Определение системы как “чёрного ящика” — что требуется от целевой системы с точки зрения её стейкхолдеров (stakeholder requirements) и использующей надсистемы (system requirements). Обычно это спецификация (т.е. точное формулирование) способности (capability) или условия (condition), которое должно или может быть удовлетворено (функция, которую нужно будет выполнить, или характеристика, которую нужно достигнуть и т.д.). Любые определения системы (”чёрного ящика”, “прозрачного ящика”, на любых стадиях жизненного цикла), в которых присутствует деонтическая модальность (модальность долженствования). Так что лучше не использовать слово “требования” (ибо непонятно, о чём идёт речь), а использовать уточняющие определения: в системной инженерии принято говорить о требованиях к продукту (требованиях стейкхолдеров) и требованиях к системе (системные требования), а всякие остальные “требования” (требования стандартов, требования системной архитектуры, требования чертежей, требования проектной документации и т.д.) просто означают, что “система должна удовлетворить этим описаниям”, но это не будет “требованиями” в смысле системной инженерии. Требования к продукту Требования к продукту (бизнес-требования, требования стейкхолдеров) — это описания “черного ящика”, которые формулируются пользователями, рынком, внешними регуляторами, и, обычно, описывают проблемную область: основные действующие лица, взаимодействие между ними, продукты труда, сценарии работы, правила и ограничения. Требования к продукту от разных стейкхолдеров могут быть противоречивы, разрознены и неполны. Обычно от инженера по требованиям требуется документировать (в тексте или какой-то модели) требования стейкхолдеров, а затем завизировать эти требования у них — чтобы подтвердить правильность понимания. Каждый клиент мнит себя инженером (а иногда не мнит, а является ещё и инженером, более знающим, чем инженеры команды проекта). Такой клиент не только будет формулировать требования стейкхолдера, а также требования к системе, но обязательно попытается сформулировать конкретные инженерные решения “прозрачного ящика” (например, из каких частей должна составлять система, какое в ней должно быть использовано оборудование). Формально высказывания о “прозрачном ящике” не называются требованиями, поэтому некоторые авторы предлагают называть их “ограничениями” (свободы творчества инженерной команды). Неплохо бы понимать в каждом проекте, что является требованиями, а что является ограничениями. Прежде всего вы должны удовлетворить требования. И если придуманное вами инженерное решение лучше того, которое требует клиент в своих ограничениях, попытаться убедить клиента снять эти ограничения. Но нужно понимать, что иногда эти ограничения отражают какой-то опыт клиента, неизвестный команде, или они появляются из неинженерных (политических, финансовых, логистических и т.д.) соображений. Поэтому по поводу ограничений нужно каждый раз понимать, почему они были прописаны, почему клиент без них не может обойтись (см. GORE). Требование к требованиям стейкхолдеров: их понятность самим стейкхолдерам. Стейкхолдеры нуждаются в требованиях, которые сфокусированы их нуждами. Требования к системе Требования к системе (system requirements) — требования, достаточные для разработки системы, которые формулируются архитекторами, проектировщиками и аналитиками на основе анализа требований к продукту и описывают: основные роли в системе, сценарии использования системы, информационные модели, модели классов, поведения, развертывания, прочие алгоритмы. Их разрабатывает инженер по требованиям в ходе так называемой “аналитической” работы (хотя в этой работе кроме анализа требований стейкхолдеров и присутствует синтез системных требований). К требованиям к системе предъявляют множество самых разных требований: непротиворечивость, полнота, проверяемость и т.д. Требования по ГОСТ 34 ГОСТ 34.602 устанавливает состав, содержание, правила оформления документа «Техническое задание на создание (развитие или модернизацию) системы». Техническое задание определяет требования и порядок создания системы, в соответствии с которым проводится её разработка и приемка при вводе в действие. Техническое задание содержит следующие разделы: общие сведения; назначение и цели создания (развития) системы; характеристика объектов автоматизации; требования к системе; состав и содержание работ по созданию системы; порядок контроля и приемки системы; требования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие; требования к документированию; источники разработки. Модальность Чтобы понять природу требований, нужно разобраться с логическими модальностями высказываний о системе (модальная логика): нейтральные высказывания о мире, суть которых непонятна без указания модальности. Например, "длина дана как 16". алетическая (alethic) модальность, относящаяся к возможности существования: пока воплощения системы ещё нет, возможны варианты определений системы для разных возможных вариантов будущего воплощения системы. деонтическая (deontic) модальность, относящаяся к обязыванию и дозволению. Например, "длина должна быть 16". Собственно, это и есть главная модальность “требований”, требования — это то, что должно быть, рекомендуется быть, разрешается быть, обязательно или необязательно и т.д. темпоральная (temporal) модальность, связанная со временем. Например, "длина была 16 три года назад". доксическая (doxastic) модальность, связанная с верой. "Я верю, что длина дана как 16". Доксическая модальность важна для квалификации (удостоверения того, что требования выполнены — вера в то, что система соответствует её определению). Требования довольно трудно формализовать именно потому, что нужно разбираться с их модальностями. Требования связаны с инженерными обоснованиями: они переформулируются как "декларации" (claim) разработчиков о соответствии — т.е. "я верю, что длина равна 16", а затем это высказывание доказывается по логическим правилам рациональной аргументации (помним, что логика — это дисциплина, занимающаяся правильностью рассуждений). Эти доказательства проводятся “как в суде” — и для этого даже заводится “дело” (assurance case, как раз от “судебного дела” — с вариантами dependability case, safety case, security case, requirement case, architectural quality case). Обзор по инженерным обоснованиям приведён тут. Виды требований Требования назначения (operational requirements) - относятся к назначению и целям создания системы. Совокупность этих требований должна описывать конечное состояние мира после того, как система будет развернута и начнет использоваться. Иногда их называют "требования к возможностям системы", "необходимые возможности". - требования, выведенные из портебностей стейкхолдеров после анализа потребностей. Функциональные требования (functional requirements) - требования, определяющие функцию, которую должна быть способна выполнить система или элемент системы (ISO 24765) - требования, выведенные из сценариев использования. Самые распространённые практики инженерии требований — это выявление функций (поведения) системы из каких-то сценариев взаимодействия (user stories, use cases). Требования к показателям функционирования (performance requirements) - описывают насколько хорошо система должна выполнять предъявленные к ней требования (минимальные числовые пороговые значения). Требования к реализации (requirements) - требуемые характеристики и атрибуты физического воплощения системы и ограничения на ее конструкцию, внешний вид, общие свойства, вес, мощность, материал, ограничения на внешние интерфейсы. Нефункциональные, “требования качества” (например, требованиям надёжности, ремонтопригодности, доступности, безопасности и т.д., так называемые “-ости”, по- английски это будут “ilities” — reliability, repairability, availability, safety, etc.). Но есть замечание Donald Firesmith, что “не бывает нефункциональных требований” — ибо все эти "требования качества" это абсолютно функциональные требования, характеризующие функции системы с точки зрения каких-то стейкхолдеров, обычно не рассматривающихся в сценариях “пользования”. Главный источник ошибок в проекте — это неведение относительно наличия каких-то требований. Впрочем, классификация может помочь, если вы зададите себе вопрос: какие виды требований вы ещё не рассматривали для вашего проекта? Свойства качества (внешние) Подробнее про требования защитоспособности (выделенные на рисунке выше) можно посмотреть в презентации Дональда Файерсмита — и там же можно посмотреть на презентацию по целеориентированной инженерии требований Яна Александера. Стандарты представления требований SysML AP 233 RIF ISO 29148 ITU Z.151 (URN=GRL+UCM) другие языки из подхода GORE: выражение оппозиции цели-средства (ends – means) i* RFLP ArchiMate MBRD OMG BMM Planguage ISO 15926 Практики ЖЦ требований по ISO 15288 Жизненный цикл требований стейкхолдеров Подготовиться (идентифицировать стейкхолдеров, определить стратегию определения потребностей стейкхолдеров и требований, получить или купить обеспечивающую систему и сервисы) Определить потребности стейкхолдеров (определить контекст использования, идентифицировать потребности стейкхолдеров, приоритизировать и отобрать потребности, определить потребности стейкхолдеров и их обоснование) Разработать Концепцию функционирования (operational concept) и другие концепции жизненного цикла (определить набор сценариев, определить взаимодействия пользователей и системы) Преобразовать потребности стейхколдеров в требования стейкхолдеров (идентифицировать ограничения на инженерные решения, идентифицировать требования стейкхолдеров и все функции для требований качества, гармонизировать требования стейкхолдеров) Анализировать требования стейкхолдеров (анализировать полное множество требований стейкхолдеров, определить критические показатели результативности, которые позволят оценить технические достижения, получить обратную связь от стейкхолдеров – валидировать, устранить все проблемы и противоречия со стейкхолдерами) Управлять определением потребностей стейкхолдеров и требованиями (получить явное согласие на требования стейкхолдеров, поддерживать трассировку потребностей и требований, обеспечивать сведения по базисам) Жизненный цикл требований к системе Подготовиться (определить функциональную границу системы в терминах поведения и свойств, которые нужно обеспечить, определить стратегию определения системных требований, идентифицировать и спланировать обеспечивающую систему для определения системных требований, получить или купить обеспечивающую систему) Определить системные требования (определить каждую функцию, которую должна выполнять система, определить необходимые реализационные ограничения, определить системные требования, которые относятся к риску, критичности системы или критические характеристики качества, определить системные требования и их обоснование) Анализировать системные требования (анализировать полный набор системных требований, определить критические характеристики качества, которые делают возможным оценку технического достижения, предоставить требования системы подходящим стейкхолдерам для рассмотрения, решить все возникшие проблемы с требованиями) Управлять системными требованиями (получить явное соглашение по системным требованиям, поддержать трассировку по системным требованиям, обеспечить информацию базиса) Рабочие продукты требований Рабочие продукты требований могут быть самые разные — и чаще всего они не называются “требования”. Так, требования можно обнаружить в: разделе “технические требования” технических заданий (хотя “техническое задание” чаще всего подробно перечисляет работы — “задание на работы”, а не требования, но всё-таки какое-то описание целевой системы как “чёрного ящика” это описание содержит); документе “Опросный лист” (который посылается, чтобы опросить потенциальных поставщиков инженерных решений и содержит как раз основные требования к поставляемой системе); посылаемом в ответ на “Опросный лист” документе “Технико-коммерческие предложения”; Различных стандартах, некоторые из которых называются “технические условия” (т.е. даже в названиях они не содержат слова “стандарт” или “требования”). Управление требованиями и инженерия требований Различие: Управление требованиями — дисциплина инженерного менеджмента (логистическая, “инженерного документооборота”), она заключается в том, чтобы предоставить средства хранения требований и сообщения о них всем тем, кто в них нуждается. Для того, чтобы управлять требованиями, нужно их сначала иметь. Инженерия требований — это поддисциплина системной инженерии, занимается разработкой требований. Главная часть инженерии требований — это реверс-инжиниринг использующей (над)системы (using system) для того, чтобы получить описания “чёрного ящика”. Требования к требованиям. Требования к требованиям по ISO 29148 Требования к группе требований: Полнота (complete) Согласованность с другими (consistent) Выполнимость (affordable, проходимы по бюджетам и срокам) Ограниченность (bounded) Требования к одному требованию: Необходимость (necessary) - Требование представляет определённую заинтересованным лицом характеристику, отсутствие которой приведёт к неполноценности решения, которая не может быть проигнорирована. Необязательное требование — противоречие самому понятию требования. Абстрактность (abstract) - Недвусмысленность (unambiguous) - Требование кратко определено без обращения к техническому жаргону, акронимам и другим скрытым формулировкам. Оно выражает объективные факты, не субъективные мнения. Возможна одна и только одна интерпретация. Определение не содержит нечётких фраз. Использование отрицательных утверждений и составных утверждений запрещено. Согласованность с другими (consistent) - Требование не противоречит другим требованиям и полностью соответствует внешней документации. Полнота (complete) - Требование полностью определено в одном месте и вся необходимая информация присутствует. Лаконичность (concise) - Требование не может быть разбито на ряд более детальных требований без потери завершённости. Достижимость (feasible) - Требование может быть реализовано в пределах проекта. Трассируемость (traceable) - Связь с вышестоящими и нижестоящими требованиями. Проверяемость (verifiable) - Реализованность требования может быть определена через один из четырёх возможных методов: осмотр, демонстрация, тест или анализ. Единичность - Требование описывает одну и только одну вещь. Актуальность - Требование не стало устаревшим с течением времени. Состояния OMG Essence определяет следующие состояния для альфы "Требования" и контрольные вопросы для проверки каждого состояния:
|