Программная инженерия. Учебное пособие для магистрантов направления подготовки 09.04.02 – Информационные системы и технологии
.pdf2. Спроектировать систему пригодную для использования, и продемонстрировать свою оперативную пригодность.
Стадия пост-разработки
Стадия пост-разработки состоит из деятельности за пределами периода разработки системы, но все еще требует значительной поддержки со стороны системных инженеров, особенно когда встречаются непредвиденные проблемы, требующие скорейшего разрешения. Кроме того, достижения в области технологий часто требуют внутренней модернизации системы обслуживания, которая может быть столь же зависимой от системной инженерии, как стадии концепции и технической разработки.
Стадия пост-разработки новой системы начинается после успешно проведенной операции тестирования и оценивания данной системы (тестирование приёмки), выпуска в производство и последующим оперативным использованием. Пока основная разработка не будет завершена, системная инженерия будет продолжать играть главную поддерживающую роль.
Контрольные вопросы:
1.Какими параметрами характеризуется жизненный цикл ИТ- системы ?
2.В чем проявляется сущность типовой модели жизненного цикла ПО в разрезе стандартов?
3.Уточните особенности типовой модели жизненного цикла программного обеспечения
Литература:
Основная:
1.Лаврищева Е.М. Технология программирования и программная инженерия. Учебник для вузов. – М.: Ось-М, 2018. – 287 с.
2.Лешек А.М. Практическая программная инженерия на основе учебного примера. – Новосибирск: ЦРНС, 2017. – 254 с.
3.Черткова Е.А. Программная инженерия. Визуальное моделирование программных систем. М.: Академкнига, 2017. – 356 с.
Дополнительная:
1.Беркун С. Искусство управления IT-проектами. – СПб.: Питер, 2018. – 186
с.
2.Гайдышев И.Н. Решение научных и инженерных задач средствами Excel, VBA и C/C++. – М.: Инфра-М, 201. – 288 с.
1.3. Стейкхолдеры в среде программной инженерии
Стейкхо́лдер (англ. stákeholder), также заинтересованная сторона, причастная сторона, участник работ, роль в проекте – лицо или организация, имеющая права, долю, требования или интересы относительно системы или её свойств, удовлетворяющих их потребностям и ожиданиям (ISO/IEC/IEEE 15288:2015, ISO/IEC 29148:2011).
21
Другие определения:
–Индивидуум, команда, организация или их группы, имеющие интерес в си-
стеме (ISO/IEC 42010).
–Люди, группы или организации, которые могут влиять на систему или на которых может повлиять система (OMG Essence).
–Лицо, группа или организация, которая может влиять, на которую могут повлиять или которая может воспринимать себя подвергнутой влиянию решения, операции или результата проекта (PMBoK).
–Лицо или организация, которые могут воздействовать на осуществление деятельности или принятие решения, быть подверженными их воздействию или воспринимать себя в качестве последних (ISO 9000:2015).
Стейкхолдеры обеспечивают возможности для системы и являются источником требований для системы.
Стейкхолдеров всегда на одного больше, чем вы знаете, а те, которых вы знаете, имеют минимум на одну потребность больше, чем вам сейчас известно.
В системной инженерии стейкхолдеры рассматриваются в контексте процесса принятия решений как люди или организации, зависящие от результатов принимаемых решений. Понимание того, кто является стейкхолдером по отношению к принимаемым решениям, должно быть установлено заранее. Очень часто этого не происходит — стейкхолдеры не определяются до принятия решений. Однако, как только решение будет объявлено или реализовано, все, кто хоть как-то был затронут этим решением, выскажут своё мнение.
По мнению А.И. Левенчука, для стейкхолдеров уместно использовать термин роли в проекте.
Типы (группы) стейкхолдеров.
Исчерпывающего списка типов (групп) стейкхолдеров не существует, так как для различных целевых систем они могут значительно отличаться. Можно привести примеры наиболее распространённых типов (групп) стейкхолдеров, которые упоминаются в стандартах (ГОСТ Р ИСО/МЭК 15288:2005, ISO/IEC 29148:2011, ГОСТ Р ИСО/МЭК 12207:2010, OMG Essence), Своде знаний по си-
стемной инженерии (SEBoK) и учебниках по системной инженерии:
–Приобретающая сторона, или покупатель (англ. acquirer) – организация или физическое лицо, которое приобретает или получает (англ. procures) продукт или услугу от поставщика. Приобретающей стороной может быть: покупатель, заказчик, владелец, оптовый покупатель.
–Заказчик, или клиент (англ. customer) – организация или физическое лицо, получающее продукт или услугу.
–Разработчик (англ. developer) – организация или физическое лицо, которое выполняет задачи разработки, включая анализ требований, проектирование, тестирование в течение всего жизненного цикла.
–Поставщик (англ. supplier) – организация или физическое лицо, которое вступает в соглашение с приобретающей стороной на поставку продукта или услуги.
22
–Пользователь (англ. user) – лицо или группа лиц, извлекающих пользу в процессе применения системы.
–Производитель (англ. producer) – представитель, ответственный за выполнение работы; лицо, ответственное за выравнивание расписания, бюджета и ограниченность ресурсов, чтобы удовлетворить клиента.
–Сопровождающая сторона (англ. maintainer) – организация или физическое лицо, выполняющее поддержку системы на одном или нескольких этапах жизненного цикла; организация, которая осуществляет деятельность по сопровождению.
–Ликвидатор (англ. disposer) – организация или физическое лицо, выполняющее ликвидацию (изъятие и списание) рассматриваемой системы и связанных с нею эксплуатационных и поддерживающих служб.
–Аккредитор, или инспектор (англ. accreditor) – организация или физическое лицо, выполняющее проверку системы на соответствие требованиям в процессе сдачи системы в эксплуатацию.
–Регулирующий орган (англ. regulatory bodies) – организация или физическое лицо, проверяющее систему на соответствие требованиям в процессе эксплуатации.
– Остальные – персонал поддержки (англ. supporters), инструкторы (англ. trainers), операторы (англ. operators) и другие.
Идентификация стейкхолдеров по стадиям жизненного цикла
Каждая система имеет свои собственные стадии жизненного цикла, например, концептуальное проектирование, разработку, производство, внедрение, эксплуатацию и ликвидацию. Для каждой стадии определяется список всех стейкхолдеров, имеющих интерес (отношение) к будущей системе. Целью этого действия является рассмотрение точки зрения каждого стейкхолдера на всех стадиях жизненного цикла системы для утверждения полного набора потребностей стейкхолдеров, которые могут быть преобразованы в требования стейкхолдеров. Примеры связи стейкхолдеров со стадиями жизненного цикла представлены в табл. 1.1.
Степень учёта и вовлечения стейкхолдеров.
Согласно предложениям OMG выделяются 6 состояний, в которых может находиться проект с точки зрения учёта, вовлечения и удовлетворённости стейкхолдеров:
–Определены (англ. Recognized) – стейкхолдеры были идентифицированы.
–Представлены (англ. Represented) – согласованы методы привлечения стейкхолдеров и назначены представители от каждой группы стейкхолдеров.
–Вовлечены (англ. Involved) – представители групп стейкхолдеров принимают активное участие в работе и выполняют свои обязанности.
–В согласии (англ. In agreement) – представители стейкхолдеров находятся в согласии.
–Удовлетворены для развёртывания (внедрения) (англ. Satisfied for deployment) – достигнуты минимальные ожидания представителей стейкхолдеров.
23
– Удовлетворены использованием (англ. Satisfied in use) – система удовлетво-
ряет или превышает минимальные ожидания стейкхолдеров.
Таблица 1.1 – Определение стейкхолдеров в соответствии со стадиями жизненного цикла системы
Стадии |
|
|
|
|
жизненного |
|
|
Примеры стейкхолдеров |
|
цикла |
|
|
|
|
|
|
|
|
|
Инженерия |
|
Приобретающая |
сторона, потенциальные пользователи, от- |
|
|
дел маркетинга, |
отдел разработки, орган по стандартиза- |
||
(проектирова- |
||||
ции, поставщики, отдел тестирования (верификация и валида- |
||||
ние, анализ) |
|
|||
|
ция), система производства и др. |
|||
|
|
|||
|
|
|
||
Разработка |
|
Приобретающая сторона, поставщики, проектировщики, ко- |
||
|
манда по интеграции и др. |
|||
|
|
|||
|
|
|
|
|
Передача |
в |
|
|
|
производство |
|
Отдел по контролю качества, система производства, опера- |
||
или в исполь- |
торы и др. |
|
||
зование |
|
|
|
|
|
|
|
|
|
Логистика |
и |
Вспомогательные сервисы, инструкторы, участники цепочек |
||
сопровожде- |
|
|||
|
поставок и др. |
|
||
ние |
|
|
||
|
|
|
||
|
|
|||
Эксплуатация |
Обычные пользователи, случайные пользователи и др. |
|||
|
|
|
||
Ликвидация |
|
Операторы, подтверждающий орган и др. |
||
|
|
|
|
|
Для оценки текущего состояния проекта с точки зрения учёта, вовлечения и удовлетворённости стейкхолдеров предлагаются следующие контрольные списки (табл. 1.2).
Роль стейкхолдеров в процессах организационного обеспечения проектов.
Организационное обеспечение проекта состоит из управления возможностями организаций поставлять и приобретать продукты и услуги через поддержку, инициализацию и управление проектами.
Это обеспечение поставляет ресурсы и инфраструктуру необходимые для содействия проектам и гарантирует исполнение организационных целей и действующих соглашений. Оно не претендует на звание совокупности деловых процессов, составляющих управление деловой деятельностью организации.
24
|
Таблица 1.2 – Контрольные списки для стейкхолдеров |
|
|
|
|
|
Состояние |
Контрольный список |
|
|
|
|
|
Идентифицированы все группы стейкхолдеров, которые на данный |
|
|
момент или в будущем будут затронуты разработкой и функциониро- |
|
|
ванием системы. |
|
Определены |
Есть соглашение, какие группы стейкхолдеров должны быть представ- |
|
|
лены. Как минимум, учтены группы стейкхолдеров, которые финанси- |
|
|
руют, используют, поддерживают и обслуживают систему. |
|
|
Определены ответственности представителей стейкхолдеров. |
|
|
|
|
|
Представители стейкхолдеров согласились выполнять свои обязанно- |
|
|
сти. |
|
|
Представители стейкхолдеров уполномочены выполнять свои обязан- |
|
Представлены |
ности. |
|
Согласован подход к обеспечению сотрудничества среди представите- |
|
|
|
|
|
|
лей стейкхолдеров. |
|
|
Представители стейкхолдеров поддерживают и уважают технологию |
|
|
работы команды. |
|
|
|
|
|
Представители стейкхолдеров помогают команде в соответствии со |
|
|
своими обязанностями. |
|
Вовлечены |
Представители стейкхолдеров обеспечивают обратную связь и прини- |
|
мают участие в принятии решений своевременно. |
|
|
|
|
|
|
Представители стейкхолдеров быстро сообщают изменения, которые |
|
|
имеют значение для их групп стейкхолдеров. |
|
|
|
|
|
Представители стейкхолдеров пришли к согласию по минимальным |
|
|
ожиданиям от предстоящего внедрения новой системы. |
|
|
Представители стейкхолдеров довольны своим участием в работе. |
|
|
Представители стейкхолдеров согласны, что команда ценит и уважает |
|
В согласии |
их вклад в работу. |
|
|
Члены команды согласны, что представители стейкхолдеров ценят и |
|
|
уважают их вклад в работу. |
|
|
Представители стейкхолдеров согласны с тем, как их приоритеты и |
|
|
точки зрения уравновешены, чтобы дать ясные указания для команды. |
|
|
|
|
Удовлетворены для |
Представители стейкхолдеров обеспечивают обратную связь с точки |
|
зрения их групп стейкхолдеров. |
|
|
развёртывания |
|
|
Представители стейкхолдеров подтверждают, что система готова для |
|
|
(внедрения) |
|
|
развёртывания (внедрения). |
|
|
|
|
|
|
|
|
|
Стейкхолдеры используют новую систему и предоставляют обратную |
|
Удовлетворены ис- |
связь об их опыте. |
|
пользованием |
Стейкхолдеры подтверждают, что новая система соответствует их |
|
|
ожиданиям. |
|
|
|
|
|
|
Контрольные вопросы:
1.Уточните, основные проблемы и тенденции развития программной и системной инженерии
2.Какова роль системной и программной инженерии в структуре информатизации?
25
3.Перечислите основные характеристики жизненного цикла информационной системы в архитектуре программной инженерии
4.Какова роль стейкхолдеров в среде программной инженерии?
Литература:
Основная:
1.Лаврищева Е.М. Технология программирования и программная инженерия. Учебник для вузов. – М.: Ось-М, 2018. – 287 с.
2.Лешек А.М. Практическая программная инженерия на основе учебного примера. – Новосибирск: ЦРНС, 2017. – 254 с.
3.Черткова Е.А. Программная инженерия. Визуальное моделирование программных систем. М.: Академкнига, 2017. – 356 с.
Дополнительная:
1.Беркун С. Искусство управления IT-проектами. – СПб.: Питер, 2018. – 186
с.
2.Гайдышев И.Н. Решение научных и инженерных задач средствами Excel, VBA и C/C++. – М.: Инфра-М, 201. – 288 с.
РАЗДЕЛ 2 – МЕТОДЫ И ТЕХНОЛОГИИ ПРОГРАММНОЙ ИНЖЕНЕРИИ
2.1. Управление проектированием программного обеспечения как важный компонент программной инженерии
Управление программным проектом и его основные процессы
Управление разработкой программного средства (ПС) (software management)
– это деятельность, направленная на обеспечение необходимых условий для работы коллектива разработчиков ПС, на планирование и контроль деятельности этого коллектива с целью обеспечения требуемого качества ПС, выполнения сроков и бюджета разработки ПС. Часто эту деятельность называют также управле-
нием программным проектом (software project management). Здесь под про-
граммным проектом (software project) понимают всю совокупность работ, связанную с разработкой ПС, а ход выполнения этих работ называют развитием программного проекта (software project progress).
К необходимым условиям работы коллектива относятся помещения, аппа- ратно-программные средства разработки, документация и материально-финан- совое обеспечение. Планирование и контроль предполагает разбиение всего процесса разработки ПС на отдельные конкретные работы (задания), подбор и расстановка исполнителей, установление сроков и порядка выполнения этих работ, оценка качества выполнения каждой работы. Финальной частью этой
26
деятельности является организация и проведения аттестации (сертификации) ПС, которой завершается стадия разработки ПС.
Хотя виды деятельности по управлению разработкой ПС могут быть весьма разнообразными в зависимости от специфики разрабатываемого ПС и организации работ по его созданию, можно выделить некоторые общие процессы (виды деятельности) по управлению разработкой ПС:
–составление плана-проспекта по разработке ПС;
–планирование и составление расписаний по разработке ПС;
–управление издержками по разработке ПС;
–текущий контроль и документирование деятельности коллектива по разработке ПС.
–подбор и оценка персонала коллектива разработчиков ПС.
Составление плана-проспекта по разработке ПС включает формулирование предложений о том, как выполнять разработку ПС. Прежде всего, должно быть зафиксировано, для кого разрабатывается ПС:
–для внешнего заказчика,
–для других подразделений той же организации,
–или является инициативной внутренней разработкой.
В плане-проспекте должны быть установлены общие очертания работ по создания ПС и оценена стоимость разработки, а также предоставляемые для разработки ПС материально-финансовые ресурсы и временные ограничения. Кроме того, он должен включать обоснование, какого рода коллективом должно разрабатываться ПС (специальной организацией, отдельной бригадой и т.п.). И, наконец, должны быть сформулированы необходимые технологические требования (включая, возможно, и выбор подходящей технологии программирования).
Планирование и составление расписаний по разработке ПС – это деятель-
ность, связанная с распределением работ между исполнителями и по времени их выполнения в рамках намеченных сроков и имеющихся ресурсов.
Управление издержками по разработке ПС – это деятельность, направленная на обеспечение подходящей стоимости разработки в рамках выделенного бюджета. Она включает оценивание стоимости разработки проекта в целом или отдельных его частей, контроль выполнения бюджета, выбор подходящих вариантов расходования бюджета. Эта деятельность тесно связана с планированием и составлением расписаний в течение всего периода выполнения проекта. Основными источниками издержек являются
–затраты на аппаратное оборудование (hardware);
–затраты на вербовку и обучение персонала;
–затраты на оплату труда разработчиков.
Текущий контроль и документирование деятельности коллектива по разра-
ботке ПС – это непрерывный процесс слежения за ходом развития проекта, сравнения действительных состояния и издержек с запланированными, а также документирования различных аспектов развития проекта. Этот процесс помогает вовремя обнаружить затруднения и предсказать возможные проблемы в развитии проекта.
27
Подбор и оценка персонала коллектива разработчиков ПС – это деятель-
ность, связанная с формированием коллектива разработчиков ПС. Имеющийся в распоряжении штат разработчиков далеко не всегда будет подходящим по квалификации и опыту работы для данного проекта. Поэтому приходится, частично, вербовать подходящий персонал, а, частично, организовывать дополнительное обучение имеющихся разработчиков. В любом случае в формируемом коллективе хотя бы один его член должен иметь опыт разработки программных средств (систем), сопоставимых с ПС, который требуется разработать. Это поможет избежать многих простых ошибок в развитии проекта.
Структура управления проектированием и разработкой программных средств
Разработка ПС обычно производится в организации, в которой одновременно могут вестись разработки ряда других программных средств. Для управления всеми этими программными проектами используется иерархическая структура управления. Традиционная структура такого рода представлена на рис. 2.1.
Во главе этой иерархии находится директор (или вице-президент) программистской организации, отвечающий за управление всеми разработками программных средств.
Ему непосредственно подчинены несколько менеджеров сферы разработок и один менеджер по качеству программных средств. В результате общения с потенциальными заказчиками директор принимает решение о начале выполнения какого-либо программного проекта, поручая его одному из менеджеров сферы разработок, а также решение о прекращение того или иного проекта. Он участвует в обсуждении общих организационных требований (ограничений) к программному проекту и возникающих проблем, решение которых требует использование общих ресурсов программистской организации или изменения заказчиком общих требований.
Менеджер сферы разработок отвечает за управление разработками программных средств (систем) определенного типа, например, программные системы в сфере бизнеса, экспертные системы, программные инструменты и инструментальные системы, поддерживающие процессы разработки программных средств, и другие. Ему непосредственно подчинены менеджеры проектов, относящихся к его сфере. Получив поручение директора по выполнению некоторого проекта, он организует формирование коллектива исполнителей по этому проекту (в частности, необходимую вербовку и обучение персонала). Он участвует в обсуждении плана-проспекта программного проекта, относящегося к сфере разработок, за которую он отвечает, а также в обсуждении и решении возникающих проблем в развитии этого проекта. Он организует обобщение опыта разработок программных средств в его сфере и накопление программных средств и документов для повторного использования.
28
По каждому программному проекту назначается свой менеджер, который |
|||||||
управляет развитием этого проекта. Ему непосредственно подчинены лидеры |
|||||||
бригад разработчиков. |
|
|
|
|
|
|
|
|
|
|
|
|
Директор |
|
|
|
|
|
|
(вице-президент) |
|
|
|
|
|
|
|
программистской |
|
|
|
|
|
|
|
|
организации |
|
|
Менеджер |
|
|
|
Менеджер |
Менеджер |
|
|
сферы |
|
. . . |
|
сферы |
по |
|
|
разработок |
|
|
разработок |
|
|
||
|
|
|
качеству |
|
|||
|
|
|
|
|
|
|
|
Менеджер |
. . . |
Менеджер |
|
|
|
||
проекта |
|
проекта |
Бригада по |
Бригада по |
|||
|
|
|
|
|
|||
|
|
|
|
|
контролю ка- |
контролю ка- |
|
|
|
|
|
|
чества |
. . . |
чества |
|
|
|
|
|
|
||
Лидер |
|
|
|
|
Лидер |
|
|
бригады |
|
. . . |
|
бригады |
|
|
|
разработчиков |
|
|
разработчиков |
|
|
||
Рисунок 2.1 – Структура управления разработкой программных средств |
|||||||
Менеджер проекта осуществляет планирование и составление расписаний работы этих бригад по разработке соответствующего ПС.
29
Считается крайне нецелесообразным разработка большого ПС (программной системы) одной большой единой бригадой разработчиков. Для этого имеется ряд серьезных причин. В частности, в большой бригаде время, затрачиваемое на общение между ее членами, может быть больше времени, затрачиваемого на собственно разработку. Отрицательное влияние оказывает большая бригада на строение ПС и на интерфейс между отдельными его частями. Все это приводит к снижению надежности ПС. Поэтому обычно большой проект разбивается на несколько относительно независимых подпроектов таким образом, чтобы каждый подпроект мог быть выполнен отдельной небольшой бригадой разработчиков (обычно считается, что в бригаде не должно быть больше 8–10 сотрудников). При этом архитектура ПС должна быть такой, чтобы между программными подсистемами, разрабатываемыми независимыми бригадами, был достаточно простой и хорошо определенный системный интерфейс.
Наиболее употребительны три подхода к организации бригад разработчиков:
–обычные бригады,
–неформальные демократические бригады,
–бригады ведущего программиста.
Вобычной бригаде старший программист (лидер бригады) непосредственно руководит работой младших программистов. Недостатки такой организации непосредственно связаны со спецификой разработки ПС: программисты разрабатывают сильно связанные части программной подсистемы, сам процесс разработки состоит из многих этапов, каждый из которых требует особенных способностей от программиста, ошибки отдельного программиста могут препятствовать работе других программистов. Успех работы такой бригады достигается в том случае, когда ее руководитель является компетентным программистом, способным предъявлять к членам бригады разумные требования и умеющим поощрять хорошую работу.
Внеформальной демократической бригаде поручаемая ей работа обсужда-
ется совместно всеми ее членами, а задания между ее членами распределяются согласованно в зависимости от способностей и опыта этих членов. Один из членов этой бригады является лидером (руководителем) бригады, но он также выполняет и некоторые задания, распределяемые между членами бригады. Неформальные демократические бригады могут весьма успешно справляться с порученной им работой, если большинство членов бригады являются опытными и компетентными специалистами. Если же неформальная демократическая бригада состоит, в основном, из неопытных и некомпетентных членов, в деятельности бригады могут возникать большие трудности. Без наличия в бригаде хотя бы одного квалифицированного и авторитетного члена, способного координировать
инаправлять работу членов бригады, эти трудности могут привести к неудаче проекта.
Вбригаде ведущего программиста за разработку порученной программной подсистемы несет полную ответственность один человек, называемый ведущим программистом (chief programmer) и являющийся лидером бригады: он сам кон-
струирует эту подсистему, составляет и отлаживает необходимые программы,
30
