(PDF)ISO 15288-2015 Systems and software engineering — Systems life cycle processes.
(PDF)ГОСТ Р 57193-2016 Системная и программная инженерия. Процессы жизненного цикла систем.
(PDF)ISO 29148-2018. Systems and software engineering — Life cycle processes — Requirements engineering
За ISO пришлось раскошелиться. Разрабатывать и затем продавать мировые стандарты это высший пилотаж цинизма. Мы, человеки, так долго будем идти к колонизации дальнего космоса...
Заметки с лекций
Контринстинктивность/контринтуитивность в мышлении.
Люди обычно проникают вглубь вещей, обычно на один шаг, один уровень.
Системный инженер проникает внаружу вещей, смотрит вверх, вовне.
Функция как поведение объекта для какого-то назначения.
Формы обратной связи
Положительная — усиливает влияние воздействия. Повышает нестабильность системы и может привести к стойкому патологическому процессу.
Отрицательная — ослабляет влияние воздействия, способствует восстановлению исходного состояния. Повышает стабильность системы.
Основные понятия
Системная инженерия (systems engineering) — наука о создании крупных комплексных систем, которые соответствуют определенному набору экономических и технических требований. Системная инженерия — междисциплинарный подход, определяющий полный набор технических и управленческих усилий, необходимых для преобразования совокупности потребностей клиента, ожиданий и ограничений в решения и для поддержки этих решений на протяжении их жизни.
Системная инженерия занимается тем, что система удовлетворяет требованиям заказчика, может быть сооружена в оговорённые сроки и попадёт в бюджет.
Основные понятия:
система (system) — совокупность (комбинация) взаимодействующих элементов, организованных для достижения одной или нескольких поставленных целей.
Целевая система (system of interest)
Обеспечивающая система (enabling system). Это та система, которая берёт Целевую систему за шкирку и тащит её по жизненному циклу (lifecycle).
Система в операционном (эксплуатационном) окружении (system in operational environment) — системы, которые непосредственно связаны с целевой системой, с выполнением ею своей функции
соответствуют основным понятиям, введённым международным стандартом процессов жизненного цикла ISO/IEC 15288:2008 Systems and software engineering — System life cycle processes.
источник изображения — книга Анатолия Левенчука "Системное мышление".
Система определяется как иерархия холонов — холархия. Холон — это что-то, что является одновременно целым для своих частей и само является частью для какого-то объемлющего целого. Система — это холон, у которого есть появляющиеся (emergent) свойства, получающиеся от взаимодействия его частей. Эмерджентность — это главное свойство системы: "целое больше, чем сумма его частей" (синергия).
О системе говорят в терминах функции. Систему задаёт функция, а не конструкция. В функции главное — назначение.
Один и тот же объект может выполнять разные функции, принадлежать разным системам. Один и тот же человек в одной системе — преподаватель, а в другой системе — муж жены.
Одна и та же конструкция может выполнять разные функции Ф1..Фn. Например, один и тот же камень может быть якорем, а может быть подпоркой.
Одна и та же функция может поддерживаться различными вариантами конструкций, К1..Кn. Например, в системе водоснабжения может использоваться одна марка насоса, а может другая.
Это есть дуализм — система представляет из себя пару из Функции и Конструкции.
Воображение системного инженера одновременно зажигает три экрана: надсистемы (группа деревьев), системы (дерево), подсистемы (лист дерева).
Иногда включаются и другие экраны: наднадсистема (лес) и подподсистема (клетка листа).
А главное — всё это видно в развитии, потому что работают боковые экраны, показывающие прошлое и будущее на каждом уровне.
Один из методов изобретательства — сделать заранее. Т.е., обладая знанием, что система из одного состояния впоследствии перейдёт в другое, подчас дешевле произвести необходимые манипуляции в её "молодом возрасте".
В процессе развития каждой системы неизбежен этап "динамизации" — переход от жёсткой, неменяющейся структуры к структуре гибкой, поддающейся управляемому изменению.
Первая группа законов развития технических систем — статика — относится к критериям жизнеспособности новых технических систем.
Необходимыми условиями принципиальной жизнеспособности технической (как и биологической!) системы являются:
наличие и хотя бы минимальная работоспособность её основных частей;
сквозной проход энергии через систему к её рабочему органу;
согласование собственных частот колебаний (или периодичности действия) всех частей системы.
Вторая группа законов развития технических систем — кинематика характеризует направление развития независимо от конкретных технических и физических механизмов этого развития.
Все технические системы развиваются:
в направлении увеличения степени идеальности;
в направлении увеличения степени динамичности;
неравномерно — через возникновение и преодоление технических противоречий, причем чем сложнее система, тем неравномернее и противоречивее развитие её частей;
до определенного предела, за которым система включается в надсистему в качестве одной из её частей; при этом развитие на уровне системы резко замедляется или совсем прекращается, заменяясь развитием на уровне надсистемы.
Нельзя автоматически переносить закономерности, выявленные на техническом материале, на социальные системы — сначала нужно собрать свой фонд данных, выявить решения высоких уровней, проделать обобщения и т. п.
Системно-инженерные роли
На практике чаще всего встречаются следующие системно-инженерные роли:
системный аналитик — отвечает за требования к системе, за целостность Функции.
системный архитектор — отвечает за системную архитектуру, за целостность Конструкции. Архитектор думает как требования удовлетворить. Для этого Архитектор должен досконально знать свою предметную область.
системный тестировщик — отвечает за тестирование системы;
системный администратор — отвечает за обслуживание системы
Системно-инженерная роль подразумевает не только ответственность, но и способность — компетенцию.
Понятно, что в реальности не для всех этих ролей используется слово "системный", но здесь это важно для закрепления понимания, что всё всегда вертится вокруг конкретных систем, и исполнителям этих ролей важно это перманентно держать в своей голове, чтобы не "терять фокусировку" внимания в процессе работы.
Определение потребностей стейкхолдеров Разработка реалистичной концепции системы. Как правило, включает в себя цели, требования назначения, функции верхнего уровня и концепцию архитектуры системы.
Спираль — с методом гибкой (agile) работы, SCRUM, использующийся в разработке ПО
Фазы жизненного цикла системы в разрезе деятельностей
Так называемая "горбатая диаграмма" (hump diagram):
Практики (processes)
Практика существует в мире только в тот момент, когда выполняются её работы.
В практике дисциплина загружается в голову, а технология разворачивается на местности.
Дисциплина — имеется ввиду "научная дисциплина"/"учебная дисциплина", то есть некоторая теория (фундаментальная или прикладная, это неважно), которая определяет основные альфы, необходимые для деятельностного мышления о предметной области (domain), которой занимается тот или иной стейкхолдер.
Дисциплине обучается актёр, который потом будет играть стейкхолдерскую роль, требующую владения этой дисциплиной.
Технология — это совокупность поддерживающих работу с дисциплиной инструментов, средства производства.
Для реализации практики, организация должна иметь:
оргспособность (enablers) = структурная способность организации к выполнению работ.
оргвозможность (capability) = функциональная способность к выполнению работ в организации. "Поставленная практика", загруженные уже в головы стейкхолдеров-исполнителей знания по дисциплине и развёрнутый и опробованный инструментарий
25 обязательных практик (processes) ISO 15288
Предприятия
(enterprise processes)
Проекта
(project enabling processes)
Технические
(techincal processes)
Контрактации (соглашения):
закупки
поставки
управление моделью жизненного цикла (life cycle model management)
управление инфраструктурой предприятия (infrastructure management)
управление портфелем проектов / программой (project portfolio management)
управление ресурсами (персоналом) (human resource management)
управление качеством (quality management)
Управление проектами:
планирование проекта (project planning)
оценки и контроля проекта (project assessment and control)
Поддержка проектов:
управление принятием решений (decision management)
управление рисками (risk management)
управление конфигурацией (configuration management)
управление информацией (information management)
измерение (measurement)
определение требований (stakeholder requirements definition)
анализ требований (requirements analysis)
проектирование архитектуры (architectural design)
реализация (изготовление) элементов (implementation, production)
Требование (requirement) = утверждение (statement), которое переводит или выражает нужды (needs) и связанные с ними обстоятельства (conditions) и ограничения (constraints).
Типы требований в контекстах:
источник изображения — книга Анатолия Левенчука "Системное мышление".
Инженер по требованиям:
находит требования
отвечает за целостность функции
умеет быть лидером (leadership) — упаковывать живых тушек с личными интересами в культурно-обусловленные позиции. Работает с людьми
умеет быть социотехником — найти и извлечь все требования из человека в позиции . Работает с диаграммами целеполагания (early requirements engineering). Работает с безличными группами людей.
умеет быть инженером — понимать архитектуру, разбираться в инженерных обоснованиях, читать чертежи.
Инженер по требованиям должен знать, откуда какие люди выпрыгнут и за какое место укусят проект.
Порядок сбора самих требований:
Сначала выявляются цели создания Системы (бизнес-требования). Может сложиться впечатление, что фиксация данных требований не является обязательной для разработки. Но в этом случае у Исполнителя не будет возможности контролировать соответствие разработанной Системы тем целям, для которых она создавалась, а так же – возможности устанавливать семантические зависимости между целями разработки системы и сценариями её использования;
Далее определяются роли пользователей Системы (как людей, так и других программных систем, см. стейкхолдеры). После этого выявляются и описываются сценарии использования Системы каждой из данных ролей. Так формируются Требования пользователей.
Далее разрабатывается полный набор требований к функционалу Системы таким образом, чтобы данная функциональность позволяла выполнить все сценарии, описанные в Требованиях пользователей. Так же фиксируются ограничения для Системы и параметры среды её функционирования.
Бизнес-требования
Бизнес-требования (Business Requirements, BR) или Стейкхолдерские требования (Stakeholder Requirements, StR) или Пользовательские требования (User Requirements) — обычно описывают проблемную область, определяют контекст, в котором система будет функционировать, — но не то что именно она делает, а её роль, которую она играет в глобальном окружении.
Формулируются рынком, внешними регуляторами, Заказчиком, Пользователями. Требования от разных стейкхолдеров могут быть противоречивы, разрознены и неполны.
Например, для проектируемого квадрокоптера это будет описание миссий, для которых он будет предназначаться. Для нового смартфона бизнес требования могут определять, каким образом он будет функционировать в инфраструктуре конкретного мобильного оператора.
Кому эти требования необходимы:
Заказчикам ПО
лицу, заключающему контракт на разработку ПО
Тестировщикам для валидации
Системные требования
Системные требования (System Requirements) — Требования, которые достаточны для разработки/доработки Системы.
Системные/подсистемные требования определяют то, что система должна иметь возможность делать. Они берут свое начало на высоком системном уровне, затем анализируются и декомпозируются, чтобы образовать требования для подсистем уровнем ниже. Они могут выражаться в простых формах ("система должна..."), либо изображаться в виде моделей и диаграмм.
Кому эти требования необходимы:
Заказчикам ПО
руководству компании-Разработчика
Разработчикам
Тестировщикам для верификации
Администраторам системы (тем, кто будет заниматься её поддержкой)
Требования к ПО
Требование к ПО (Software Requirements) = описание того, какие функции и с соблюдением каких условий должно выполнять приложение в процессе решения полезной для пользователя задачи.
Спецификации этих требований (Software Requirements Specification, SRS) детализируют требования к ПО до уровня, достаточного для разработки ПО для удовлетворения этих требований.
Когда сигнал X получен [Обстоятельство], система [Субъект] должна установить [Действие] разряд сигнала [Объект] в течение 2-х секунд [Ограничение].
ИЛИ [Обстоятельство] [Действие или Ограничение] [Значение]
Например:
В состоянии 1 [Обстоятельство] радарная система должна обнаруживать цели в радиусе [Действие или Ограничение] 100 километров [Значение].
ИЛИ [Субъект] [Действие] [Значение]
Например:
Учетная система [Субъект] должна отображать неоплаченные счета [Действие] в порядке возрастания [Значение] в котором счета должны быть оплачены.
Виды требований
требования назначения (Operational Requirements) — относятся к назначению и целям создания системы. Совокупность этих требований должна описывать конечное состояние мира после того, как система будет развернута и начнет использоваться. Иногда их называют "требования к возможностям системы", "необходимые возможности".
Требования, выведенные из потребностей стейкхолдеров после анализа потребностей.
функциональные требования (Functional Requirements) — требования к системе или её элементам, определяющие их задачи или функции, которые должны выполняться.
Требования, выведенные из сценариев использования, сценариев взаимодействия — user stories, use cases.
к показателям функционирования (Performance Requirements) — описывают насколько хорошо система должна выполнять предъявленные к ней требования (минимальные числовые пороговые значения).
к реализации (Design Constraints) — требуемые характеристики и атрибуты физического воплощения системы и ограничения на её конструкцию, внешний вид, общие свойства, вес, мощность, материал, ограничения на внешние интерфейсы.
Спецификация требований к ПО (software requirements specification, SRS) = структурированный набор требований (функции, производительность, ограничения разработки, атрибуты) ПО и его интерфейсов (связей с внешними системами).
Необходимы:
Разработчикам
Тестировщикам для верификации
Администраторам Системы (тем, кто будет заниматься её поддержкой)
Спецификация требований к ПО обычно содержит:
требования к внешним интерфейсам (external interfaces).
Определяют все входы и выходы из программного обеспечения
требования к функциям продукта (functions).
Определяют все фундаментальные действия, имеющие место быть в программном продукте в приёме и обработке входящих потоков, в обработке и генерировании исходящих.
требования к дизайну/юзабилити (usability).
Определяют требования к юзабилити (качество в использовании) и целям программного системы, включая измеряемую эффективность и критерии удовлетворения контекстов использования.
требования к производительности (performance).
Определяют как статические, так и динамические числовые требования, предъявляемые к программному обеспечению или к взаимодействию человека с программным обеспечением в целом.
требования к логической структуре БД (logical database).
Задают логические требования для любой информации, которая должна быть помещена в базу данных.
Ограничения проектирования/разработки (design constraints).
Указывают ограничения на проектирование системы, налагаемые внешними стандартами, нормативными требованиями или ограничениями проекта.
Соответствие стандартам (standard compilance).
Указывают требования, вытекающие из существующих стандартов или правил.