Главная страница
Навигация по странице:

  • Участники процессов (Process Actors)

  • Управление и поддержка процессов (Process Support and Management)

  • Качество и улучшение процессов (Process Quality and Improvement)

  • Извлечение требований (Requirements Elicitation)

  • Источники требований (Requirement Sources)

  • Техники извлечения требований (Elicitation Techniques)

  • Анализ требований (Requirements Analysis)

  • Классификация требований (Requirements Classification)

  • Концептуальное моделирование (Conceptual Modeling)

  • Основы Программной Инженерии (по swebok) Введение Программная инженерия как дисциплина swebok руководство


    Скачать 3.21 Mb.
    НазваниеОсновы Программной Инженерии (по swebok) Введение Программная инженерия как дисциплина swebok руководство
    Анкорswebok
    Дата14.10.2022
    Размер3.21 Mb.
    Формат файлаpdf
    Имя файлаswebok_2004_ru.pdf
    ТипРуководство
    #733732
    страница3 из 30
    1   2   3   4   5   6   7   8   9   ...   30
    Модель процесса определения требований:
    Не является дискретным; это постоянно действующий процесс на всех этапах жизненного цикла программного обеспечения. Процесс работы с требованиями инициируется в начале проекта и продолжается на протяжении всего жизненного цикла, в плоть до завершения проекта. Например,
    функциональные тесты создаются в соответствии с функциональными требованиями к программной системе и обычно выполняются, в том числе, при проведении приемочных испытаний. Как вы уже заметили, в переводе использовалась все же
    “работа с требованиями” для акцентирования внимания на том факте, что требования не только
    “определяются” на начальных этапах работ, но и модифицируются и используются во всем жизненном цикле.
    Идентифицирует программные требования как элементы конфигурации (в терминах конфигурационного обеспечения) и контролирует их с использованием тех же практик конфигурационного управления, что и для других
    активов программных проектов (например, файлов или запросов на изменения).
    Требует адаптации к проектному и/или организационному контексту, в рамках которого ведется соответствующий программный проект.
    В частности, тема процесса определения требований касается тех вопросов, которые охватываются в рамках сбора, анализа, специфицирования и утверждения требований ч точки зрения организации этих видов деятельности для различных типов проектов и значимости тех или иных ограничений по отношению к процессу. В большинстве случаев, процесс определения,
    работы с требованиями выделен в самостоятельный набор и описан как последовательность (сценарии)
    действий, связанных с ними ролей и непосредственных результатов (их часто называют “артефактами”,
    например, в RUP – Rational Unified Process), в рамках конкретных методологий разработки программного обеспечения, наиболее популярные из которых мы рассмотрим позднее.
    Участники процессов (Process Actors)
    В этой теме вводится понятие “роли” и дается понимание “ролей” для людей, которые участвуют в процессе работы с требованиями (чувствуете отличие между “определением” требований и “работой” с ними?).
    Таких людей также называют “заинтересованными лицами” (в данном контексте - software stakeholders).
    Заинтересованное лицо – некто, имеющий возможность
    (в том числе, материальную) повлиять на реализацию проекта/продукта.

    Типичные примеры ролей:
    Пользователи (Users): группа, охватывающая тех людей, кто будет непосредственно использовать программное обеспечение; пользователи могут описать задачи, которые они решают (планируют решать) с использованием программной системы, а также ожидания по отношению к атрибутам качества, отображаемые в пользовательских требованиях.
    Заказчики (Customers): те, кто отвечают за заказ программного обеспечения или, в общем случае,
    являются целевой аудиторией на рынке программного обеспечения (образуют целевой рынок ПО);
    Стандарт 12207 (его обзор будет приведен в другой главе) определяет более суженное понятие “заказчика”
    (обратите внимание – acquirer, а не customer, хотя часто оба термина переводятся на русский язык одинаково)
    как организацию, которая приобретает или получает систему, программный продукт или программную услугу от поставщика. Здесь возможно использовать такое общее определение: заказчик – лицо или организация,
    получающие прямую или косвенную выгоду от использования продукта. Клиентами считают тех заинтересованных лиц, кто требует, оплачивает,
    выбирает, использует или получает результаты работы программного обеспечения. В этом плане, “заказчик” в понимании стандарта 12207 скорее ближе к “клиенту” в такой интерпретации.
    Аналитики (Market analysts): продукты массового рынка программного обеспечения (как и других
    массовых рынков, например, бытовой техники) не обладают “заказчиками” в понимании персонификации тех, кто “заказывает разработку. В
    то же самое время, лица, отвечающие за маркетинг,
    нуждаются в идентификации потребностей и обращению к тем, кто может играть роль
    <квалифицированных> “представителей”
    потребителей;
    Регуляторы (Regulators): многие области применения (“домены”) являются регулируемыми,
    например, телекоммуникации или банковский сектор. Программное обеспечение для ряда целевых рынков (в первую очередь, корпоративного сектора) требует соответствия руководящим документам и прохождения процедур,
    определяемых уполномоченными органами.
    Инженеры по программному обеспечению, иженеры- программисты (Software Enginner): лица,
    обладающие обоснованным интересом к разработке программного обеспечения, например, повторному использованию тех или иных компонент, библиотек,
    средств и инструментов. Именно инженеры ответственны за техническую оценку путей решения поставленных задач и последующую реализацию требований заказчиков.
    SWEBOK особо подчеркивает, что если невозможно в точности (в оригинале – “perfectly”) удовлетворить требования каждого заинтересованного лица, именно работа инженера включает проведение переговоров и поиск компромисса, приемлемого для ключевых заинтересованных лиц (“стейкхолдеров”) и
    удовлетворяющего бюджетным, техническим,
    временным и другим ограничениям проекта. Необходимо понимать, что такая деятельность практически наверняка приведет к изменениям в требованиях, как минимум, на уровне соответствующих приоритетов требований и, следовательно, работ по их реализации.
    Управление и поддержка процессов (Process Support and
    Management)
    Эта тема затрагивает вопросы распределения ресурсов,
    необходимых для осуществления проектной деятельности, устанавливая контекст для первой секции
    “Инициация и определение содержания” (Initiation and
    Scope Definition) области знаний “Управление в программной инженерии” (Software Engineering
    Management). Основная цель данной темы –
    обеспечение связи между процессами и деятельностью,
    определенными в 2.1 “модели процесса определения требований” и вопросами использования проектных ресурсов – стоимостью, человеческими ресурсами,
    инструментами и т.п.
    Качество и улучшение процессов (Process Quality and
    Improvement)
    Эта тема связана с оценкой качества процессов работы с программными требованиями и улучшением этих процессов. Особое значение данной темы заключается в подчеркивании значимости работы с требованиями,
    ключевой роли этих процессов для определения стоимостных и временных ресурсов, необходимых для реализации программного проекта, в целом.

    Удовлетворение потребностей заказчика является целью любого программного проекта. Соответственно,
    обеспечение адекватности реализации требований в проекте просто невозможно представить без адекватных процессов работы с ними – начиная со сбора требований, заканчивая проверкой соответствия получаемого программного продукта этим требованиям на всех этапах его создания.
    Улучшение процессов и в частности процессов разработки и управления требованиями должно предваряться формулировкой проблемы. Т.е. нет смысла заниматься улучшением ради улучшения, нужно четко понимать какая в настоящее время есть проблема в работе с требованиями, и насколько эта проблема значима, и только потом приступать к ее устранению, в частности через улучшение процессов. Реальная отечественная практика многих организаций,
    занимающихся разработкой ПО, показывает, что очень немногие имеют действительно четкое представление о том, каким образом организация работы с требованиям может повлиять на успех компании в целом. Обычно,
    отечественные компании, в лучшем случае просто документируют требования, выпуская документы,
    например, Техническое задание по ГОСТ. Но действительно ли в этом документе можно увидеть требования – увы. Следуя только рекомендациям,
    которые есть в ГОСТ можно только соответствующим образом оформить разделы, что практически никак не влияет на качество и информативность документа.
    Вопросы совершенствования процессов – process improvement будут рассматриваться как в главах,
    посвященных CMMI, так и в других частях этой книги.

    Данная тема тесно связана с областями знаний
    “Качество программного обеспечения” (Software Quality)
    и “Процесс программной инженерии” (Software
    Engineering Process). В этом контексте, фокусы обсуждаемой темы – определение атрибутов и метрик качества, а также определение соответствующих процессов в применении к программным требованиям,
    которые можно свести в три группы практик:
    Покрытие процессов работы с требованиями с точки зрения стандартов и моделей улучшения процессов,
    в целом;
    Измерение и количественная оценка (benchmarking)
    процессов работы с требованиями;
    Планирование и реализация процесса улучшения,
    как такового.
    Извлечение требований (Requirements Elicitation)
    Данная секция освещает вопросы сбора требований как с точки зрения организации процесса, так и определения источников, откуда поступают требования. Это первая стадия построения видения автоматизируемой проблемной области. Идентификация заинтересованных лиц, их взаимодействия, выполняемых ими бизнес- процессов – все это является ключевыми вопросами, без четкого и однозначного ответа на которые даже не стоит думать об успешности проекта (кстати, не только программного…).
    Один из ключевых принципов программной инженерии заключается в обеспечении взаимодействия между пользователями и инженерами. Прежде, чем начинается разработка программного обеспечения, именно
    специалисты “по требованиям” – аналитики перекидывают тот самый “мостик” между заказчиками и исполнителями, который задает тот уровень коммуникаций и взаимопонимания между ними, который необходим для решения задач проекта.
    Источники требований (Requirement Sources)
    Необходимо идентифицировать все возможные источники требований, значимые для решения задач проекта. Только после этого можно определить их влияние на проект. Данная тема касается вопросов понимания информированности источников требований и их значимости.
    Тема фокусируется на:
    Целях
    Знании предметной области
    Заинтересованных лицах
    Операционном окружении
    Организационной среде
    Выделение приоритетов, однозначность требований,
    передаваемых инженерам, связь между требованиями и их взаимное влияние друг на друга – все это является следствием четкого и однозначного понимания источников требований.
    Техники извлечения требований (Elicitation Techniques)
    Идентифицировав источники требований мы не должны
    “покоится на лаврах”. Даже обладая пониманием того,
    кто владеет необходимой информацией, мы далеко не застрахованы от проблем, связанных с получением
    требований, необходимых для дальнейшей работы.
    Осуществление своей профессиональной деятельности пользователями далеко не гарантирует, к сожалению,
    способность ясно, четко и однозначно сформулировать то, что они делают и что именно им необходимо для решения их задач сегодня и завтра. Во многом, поэтому,
    сбор требований, зачастую, превращается в столь тяжелый и часто порождающий конфликты процесс действительно извлечения, “вытаскивания” информации,
    без которой невозможно переходить к дальнейшим проектным работам. Недопонимание между аналитиком и пользователем, упущение тех или иных аспектов, на первый взгляд кажущихся второстепенными,
    неоднозначность или тем более некорректность интерпретации информации, полученных от пользователей – все это наиболее типичные причины
    “сверх-затрат” (времени, денег и т.п.), а иногда, и полного провала проектов.
    Существует множество практик и подходов,
    позволяющих добиться действительно стройной системы требований, отвечающих реальным потребностям и приоритетам заказчиков. Среди них можно выделить следующие:
    Интервьюрирование – традиционный подход извлечения требований; не стоит забывать, что получение информации от пользователя “не равно”
    получению требований; информация должна быть проанализирована и трансформирована в требования, таким образом, информация от пользователя является “входом” в процессы сбора
    требований, а сами требования – “выходом” этих процессов;
    Сценарии – контекст для сбора пользовательских требований, определяющий ответы на вопросы “что если” и “как это делается” в отношении бизнес- процессов, реализуемых пользователями;
    Прототипы – отличный инструмент для уточнения и/
    или детализации требований; существуют разные подходы к прототипированию – от “бумажных”
    моделей до пилотных подсистем, реализуемых как самостоятельные (в терминах управления ресурсами) проекты или бета-версии продуктов;
    часто прототипы постепенно трансформируются в результаты проекта и используются для проверки и утверждения требований;
    “Разъясняющие встречи” - в оригинале звучит как
    “facilitated meetings”; достаточно емкий по смыслу термин, пришедший из общей практики менеджмента и базирующийся на идеях сотрудничества заинтересованных лиц для совместного анализа путей решения проблем,
    определения и предупреждения рисков и т.п. В
    отличие от “обычного”, с позволения сказать,
    “мозгового штурма”, как исключительной формы обсуждения тех или иных задач (часто в критические моменты работ над проектом), “запланированный мозговой штурм” – особая форма встреч участников проекта и заинтересованных лиц со стороны заказчика, посвященная обсуждению тех вопросов,
    ответы на которые не могут быть определены в результате обычных интервью и которые требуют вовлечения большего количества лиц, чем просто пары “пользователь-аналитик”; я позволили себе
    сконструировать на русском языке этот термин еще и как “запланированный мозговой штурм”, так как такого рода встречи действительно обычно планируются с заданной периодичностью для обеспечения однозначности интерпретации информации, значимой для проекта и, что очень важно – проведения таких встреч до того, как связанные с данными вопросами риски не превратились в реальные проблемы, требующие решения “вчера”, а, следовательно, и дополнительных (изначально незапланированных)
    ресурсов времени, денег и т.д.;
    Наблюдение (observation) – подразумевает непосредственное присутствие аналитиков и инженеров рядом с пользователем в процессе выполнения последним его работ по обеспечению функционирования бизнес-процессов: в определенной степени можно провести аналогию с практикой присутствия представителя заказчика в проектной группе исполнителя ( типовая практика в eXtreme Programming “on-site customer” –
    “присутствующий заказчик”); данная техника является достаточно затратной, но, в то же время,
    очень эффективной, а иногда – просто незаменимой, особенно, если речь идет о достаточно сложных и взаимосвязанных бизнес- процессах;
    Существуют и другие, достаточно эффективные практики, описание которых можно найти в литературе и которые вы, наверняка, сами используете в своей работе
    (например, Requirements Workshop, Role Playing,

    Storyboarding и т.п.). Некоторые из них будут также упоминаться в контексте конкретных методологий.
    Анализ требований (Requirements Analysis)
    Эта секция посвящена процессам анализа требований,
    то есть трансформации информации, полученной от пользователей (и других заинтересованных лиц) в четко и однозначно определенные требования, передаваемые инженерам для реализации в программном коде.
    Анализ требований включает:
    Обнаружение и разрешение конфликтов между требованиями;
    Определение границ задачи, решаемой создаваемым программным обеспечением; в общем случае - определение “scope” (или “bounds”), границ и содержания программного проекта;
    Детализация системных требований для установления программных требований;
    Практически всегда, хотя это явно и не отмечено в описании анализа требований как секции SWEBOK, на практике выделяется и детализация бизнес-требований для установления программных требований. Например,
    пресловутый режим работы 24x7, сформулированный в виде бизнес-требования, накладывает достаточно жесткие рамки на выбор технологической платформы и архитектурных решений как технических требований к разрабатываемой программной системе.
    SWEBOK отмечает, что традиционный взгляд на анализ требований часто сфокусирован или
    уменьшен до вопросов концептуального моделирования с использованием соответствующих аналитических методов, одним из которых является
    SADT – Structured Analysis and Design Technique
    (методология структурного анализа и техники проектирования), знакомый многим по нотациям
    IDEF0 (функциональное моделирование – стандарт
    IEEE 1320.1), IDEF1X (информационное моделирование – стандарт IEEE 1320.2, известный также как IDEFObject), часто применяемым как для моделирования бизнес-процессов, так и структур данных, в частности – реляционных баз данных.
    ???
    Так или иначе, вне зависимости от выразительных средств, которые являются лишь инструментом анализа и фиксирования результатов, результатом анализа требований должны быть однозначно интерпретируемые требований, реализация которых проверяема, а стоимость и ресурсы – предсказуемы.
    Классификация требований (Requirements Classification)
    Требования могут классифицироваться по целому ряду параметров, например:
    Функциональные и нефункциональные требования
    Внутренние (с другими требованиями) или внешние зависимости
    Требования к процессу или продукту
    Приоритет требований
    Содержание требований в отношении конкретных подсистем создаваемого программного обеспечения
    Изменяемость/стабильность требований

    Другие варианты классификации могут, и часто базируются, на принятых в организации подходах,
    применяемых методологиях, методах и практиках, а,
    зачастую, и специфике проектов и даже требованиях заказчиков к процессу разработки и, в частности,
    определения требований и форме представления результатов их анализа.
    Концептуальное моделирование (Conceptual Modeling)
    Разработка модели проблемы реального мира –
    ключевой элемент анализа требований. Цель моделирования – понимание проблемы, задачи и методов их решения до того, как начнется решение проблемы.
    Часто приходится слышать, что прагматичность подхода в отношении программных проектов заключается в
    “пропуске” этапа (или стадии, фазы) моделирования. В
    свою очередь, часто ставят знак равенства между моделированием и “этими красивыми квадратиками со стрелочками”. Ни то, ни другое утверждение неверны.
    Например, в XP и в других гибких (Agile) практиках существуют и истории пользователей, и карточки задач,
    и процедуры анализа (в частности, связанных с ними
    “мозговых штурмов”, как запланированных, так и, к сожалению, не очень) , в результате которого мы сформулировали задачи, высокоуровневые возможности
    - “фичи” продукта (feature - особенность), а также необходимые модели (см. [Амблер, 2002]). Объем моделей, их детализация и средства представления могут быть различны. Их выбор базируется и/или диктуется конкретным культурным контекстом организаций, вовлеченных в проект, и практик,
    применяемых проектной группой. Именно не форма, но сама идея моделирования как попытка упростить и однозначно интерпретировать на концептуальном уровне проблематику деятельности в реальном мире –
    обязательная составляющая как управления требованиями, так и программной инженерии, в целом.
    Среди факторов, которые влияют на выбор модели,
    метода и детализации ее представления, степени связанности с программным кодом и другими вопросами:
    Природа проблемы (проблемной области)
    Экспертиза и опыт инженеров
    Требования заказчика к процессу
    Доступность методов и инструментов
    Внутрикорпоративные стандарты и регламенты
    Культура разработки
    В любом случае, моделирование рассматривается в программном контексте, а не только с точки зрения бизнес-задач как таковых, Это обусловлено необходимостью понимания операционного и системного контекста, то есть окружения, в котором программная система будет реально использоваться и которое накладывает свои, иногда достаточно жесткие ограничения.
    Вопросы моделирования тесно связаны с применяемыми методами и подходами. Однако, частные методы или нотации, как отмечается в SWEBOK, так или иначе следуют распространенным в индустрии практикам и тяготеют к тем формам, с которыми связаны накопленный опыт и подтвержденные общепринятой практикой знания. SWEBOK отмечает, что могут быть
    разработаны различные виды моделей, включающие потоки работ и данных, модели состояний, трассировки событий, взаимодействия пользователей, объектные модели, модели структур данных, и т.п. Кстати, именно такая ситуация сложилась с UML, все чаще воcпринимаемым в качестве общепринятого или de-facto стандарта в моделировании и включающем целый комплекс моделей (в UML 2.0 включено 14 моделей,
    представленные в двух группах – статические модели и поведенческие), связанных и объединенных общей архитектурой, на основе концепции метамоделей.
    Cовременное состояние стандарта UML
    (унифицированного языка моделирования Unified
    Modeling Language, разрабатываемого консорциумом
    OMG – www.omg.org ) версии 2.0 вполне позволяет говорить о расширении его применимости в “чистом”
    бизнес-моделировании. На фоне богатства выразительных средств, появления соответствующего инструментального обеспечения работы с UML 2.0,
    длительной истории успешного применения стандарта
    UML 1.x, инструментов на его основе и повсеместного использования UML в области объектно- ориентированного анализа и проектирования не только аналитиками, но архитекторами и разработчиками ПО,
    можно с уверенностью говорить о смещении фокуса индустрии программного обеспечения в сторону UML и отходу (как минимум, частичному) от IDEF, в применении к аналитической деятельности. Темпы такой “миграции”,
    конечно, зависят от степени консервативности взглядов конкретных специалистов-аналитиков. Однако, давление рынка, требование унификации, в частности,
    выразительных средств описания активов проектов в
    рамках всей проектной команды – те причины, по которым, по мнению автора, аналитики, не воспринявшие UML-ориентированный тренд, могут оказаться за бортом серьезных корпоративных ИТ- проектов. Даже на фоне “неприятия” UML некоторыми игроками рынка, критическая масса знаний и практик по его применению уже оказалась достаточно велика,
    чтобы игнорировать его применение. В то же самое время, не стоит воспринимать UML как панацею – это касается любой технологии, практики или подхода.
    Создан, активно развивается и уже поддержан индустрией стандарт BPMN – Business Process
    Management Notation (см. www.bpmi.org). Таким образом,
    все определяется конкретным “культурным” контекстом.
    Просто надо помнить об этом и оставаться
    “прагматиками”, в положительном понимании этого слова, не теряя креативности в повседневной деятельности.
    Необходимо отметить, что на практике наблюдается тенденция разделения вопросов определения требований и моделирования. Это, например, заметно в современных методологиях, таких как RUP (Rational
    Unified Process), где работа с требованиями и моделирование/проектирование – суть две разные дисциплины.
    1   2   3   4   5   6   7   8   9   ...   30


    написать администратору сайта