Организация разработки требований к сложным программным средствам
Проекты программных средств различаются по уровню сложности, масштабу и необходимому качеству. Они имеют различное назначение, содержание и относятся к разным областям применения. Поэтому существует потребность в четко организованном процессе, методах формализации и управления требованиями к конкретным программным продуктам. Чаще всего проблемами, с которыми встретились не достигшие своих целей проекты программных продуктов, являются: недостаток информации от пользователя или заказчика о функциях проекта, неполные, некорректные требования, а также многочисленные изменения требований и спецификаций. Это происходит потому, что зачастую разработчики и заказчики считают, что “даже если мы не очень точно знаем, чего хотим достичь, лучше быстрее приступить к реализации проекта, так как мы и так выбились из графика и нам некогда размышлять. Мы можем уточнить требования позднее”. Подобный подход приводит к хаотическим, неупорядоченным действиям при разработке ПС, когда никто не знает, что на самом деле хочет заказчик и пользователь, и как в действительности функционирует созданная на данный момент система и/или программный продукт.
Формализация и управление требованиями - это систематический метод выявления, организации и документирования требований к системе и/или ПС, а также процесс, в ходе которого вырабатывается и обеспечивается соглашение между заказчиком и выполняющими проект специалистами, в условиях меняющихся требований к системе - рис. 6.1. Развитие программной инженерии, её обозримое будущее, связаны с непрерывным возрастанием сложности, поэтому разработкой ПС должны заниматься хорошо организованные и обученные коллективы - команды разработчиков. Каждый член команды в той или иной степени должен привлекаться к управлению и формализации требований к проекту. Команде необходимо выработать профессиональные приемы для понимания потребностей пользователей, управления масштабом ПС, структурой и построением системы, удовлетворяющей эти потребности.
Команда должна применить методы и процессы для того, чтобы понять решаемую проблему заказчика до начала разработки ПС. Для этого следует использовать метод анализа, выявления и освоения проблемы и интересов заказчика:
- достигнуть соглашения между заказчиком и разработчиком по определению проблемы, целей и задач проекта;
- выделить основные причины - проблемы, являющиеся её источниками и стоящие за основной проблемой проекта системы и ПС;
- выявить заинтересованных лиц и пользователей, чье коллективное мнение и оценка в конечном итоге определяет успех или неудачу проекта;
- определить, где приблизительно находятся область и границы возможных решений проблем;
- понять ограничения, которые будут наложены на проект, команду и решения проблем.
В результате необходимо предложить заказчику возможные решения рассматриваемой проблемы. Для анализа проблемы можно использовать разнообразные методы. В частности, моделирование бизнес-процессов, специальный метод анализа проблем, который достаточно хорошо зарекомендовал себя для сложных информационных систем, осуществляющих поддержку ключевых инфраструктур. Выявленные на данном этапе прецеденты, могут позднее применяться для определения совокупности требований к ПС. Методы системного анализа, позволяют осуществить разбиение сложной системы на подсистемы. Этот процесс помогает понять, каким общим целям должно служить ПС. При этом часто оказывается, что в чем-то усложняются требования, создавая новые подсистемы, для которых в свою очередь нужно заниматься разработкой и пониманием требований.
Понимание потребностей пользователейнеобходимый организационный этап, так как разработчики редко получают совершенные спецификации требований к создаваемой системе, они должны сами добывать информацию, необходимую им для успешной работы. Термин выявление требований точно отражает данный процесс, в котором разработчики должны играть активную роль. Чтобы помочь команде решить эти проблемы, лучше понять потребности пользователей и других заинтересованных лиц, целесообразно использовать методы:
- интервьюирования и анкетирования - создание структурированного интервью; проведение интервью с 5 - 15 пользователями и/или заинтересованными лицами; подведение итогов совокупности интервью, формулирование 10 - 15 наиболее часто упоминавшихся потребностей заказчика и пользователей;
- совещания, посвященные анализу и синтезу требований - формулирование и определение целей программного продукта; ознакомление с ними всех участников проекта и установление, что они с ними согласны; если это не так, следует остановиться и уточнениями добиться согласия; обязательно убедиться в согласии заказчиков;
- мозговой штурм и отбор идей, чтобы: выявить и/или уточнить функции проекта; отсечь нецелесообразные идеи; провести классификацию функций,чтобы определить приоритеты, риски, трудоемкости реализации фун-кций;
- анализ иллюстративных прецедентов в приложении к концепции требований (или системному проекту), чтобы их функции были наглядны и понятны;
- по возможности выявление или создание временных прототипов на основе первичных требований.
Хотя ни один из методов не является универсальным, каждый из них позволяет лучше понять потребности пользователей и тем самым превратить “неясные” требования, в требования, которые “лучше известны и понятны”. Каждый из этих методов эффективен в определенных ситуациях, однако целесообразно отдавать предпочтение совещанию, посвященному требованиям, и мозговому штурму.
Для сложных систем требуются стратегии управления информацией о требованиях. Для этого применяется информационная иерархия; она начинается с потребностей пользователей, описанных с помощью функций, которые затем превращаются в более подробные требования к ПС, выраженные посредством прецедентов или традиционных форм описания и стандартизированных характеристик. Эта иерархия отражает уровень абстракции при рассмотрении взаимосвязи области проблемы и области решения. Концепцию требований, модифицированную в соответствии с конкретным содержанием комплекса программ, необходимо иметь в каждом проекте. В требованиях к ПС следует указывать, какие функции должны осуществляться, а не то, как они могут реализоваться. Они используются для задания функциональных и конструктивных требований, а также ограничений ресурсов проектирования. Нужно использовать набор характеристик для установления и оценки качества ПС и содержащихся в нем компонентов. Если необходимо, документация требований может дополняться одним или несколькими более формальными, либо более структурированными методами спецификации требуемого качества.
Без лидера - руководителя проекта, который будет утверждать требования к ПС, согласовывать и поддерживать потребности заказчика и команды разработчиков, нельзя быть уверенным в том, что будут приняты необходимые четкие, скоординированные решения. Возможно возникновение флюктуаций требований, задержек, а также принятие неоптимальных решений, вызванное приближением срока окончания проекта. Руководитель должен создать совет по контролю за изменениями, который призван помогать лидеру в принятии действительно сложных решений и гарантировать, что изменения и утверждения требований будут приниматься только после их обсуждения.
Концепция требований к проекту (или системный проект) должна быть “живым” документом, чтобы было легче его использовать и пересматривать. Следует сделать концепцию официальным каналом изменения функций так, чтобы проект всегда имел достоверный, соответствующий современному состоянию документ. Лидер должен нести персональную ответственность за концепцию, регулярно (вместе с командой) оценивать состояние дел и готовить отчеты и запросы, способствующие этим действиям. Процесс отслеживания спецификаций требований к ПС, должен помогать убедиться, что концепция надлежащим образом реализуется в детализированных требованиях к компонентам ПС. Руководство процессом контроля за изменениями, должно гарантировать, что перед тем, как разрешить внесение существенных изменений в систему, производится оценка рентабельности поступивших предложений (см. лекцию 16).
Проекты, как правило, инициируются с объемом функциональных возможностей, значительно превышающим тот, который разработчик может реализовать, обеспечив приемлемое качество при заданных ресурсах. Тем не менее, необходимо ограничиваться, чтобы иметь возможность предоставить в срок достаточно целостный и качественный продукт. Существуют различные методы задания очередности выполнения (приоритетов) требований и понятие базового уровня - совместно согласованного представления о том, в чем будут состоять ключевые функции системы как продукта проекта - понятие состава требований, задающих ориентир для принятия решений и их оценки.
Если масштаб проекта и сопутствующие требования заказчика превышают реальные ресурсы, в любом случае придется ограничиваться в функциях и качестве ПС. Поэтому следует определять, что обязательно должно быть сделано в версии программного продукта при имеющихся ресурсах проекта. Для этого придется вести переговоры. Нельзя ожидать, что данный процесс полностью решит проблемы масштаба и требований к ПС. Но такие шаги окажут заметное воздействие на размеры проблемы, позволят разработчикам ПС сконцентрировать свои усилия на критически важных подмножествах требований и функций и, в несколько приемов, предоставить высококачественные системы, удовлетворяющие или даже превосходящие основные ожидания пользователей. Привлечение заказчика к решению проблемы управления масштабом и функциями повышает взаимные обязательства сторон, способствует росту взаимопонимания и доверия между заказчиком и разработчиками. Имея достаточное определение функций продукта (концепцию) и сократив масштаб проекта до разумного уровня, можно надеяться на успех в следующих фазах или версиях проекта.
На основе выполненных оценок трудозатрат рекомендуется определять базовый уровень для каждой версии концепции требований, используя атрибут “номер версии”, достигнуть соглашения с заказчиком относительно масштаба, а также принять жесткие решения по масштабу версии. Итеративная разработка и управление изменениями, используя базовый уровень, позволяет контролировать, что все предложенные функции записаны и ничего не потеряно. Целесообразна система управления запросами на изменения требований, чтобы фиксировать все изменения и гарантировать, что они поступают через эту систему в совет по контролю за изменениями. На всех этапах развития спецификации требований к ПС, следует задавать полный набор характеристик функционального и конструктивного поведения программного продукта и подробные прецеденты для основных функций системы.
В требованиях должны быть полно и сжато зафиксированы потребности пользователей в таком виде, чтобы разработчик мог построить удовлетворяющее их ПС и его компоненты. Кроме того, требования должны быть достаточно конкретными, чтобы можно было определить, когда они удовлетворены. Зачастую именно разработчики обеспечивают эту конкретизацию. Существуют различные возможности организации и документирования этих требований. Вся разработка должна вытекать из требований, а все спецификации ПС и компонентов должны найти отражение в процессах и продуктах разработки. Сложный программный комплекс следует пересматривать и обновлять на протяжении всего жизненного цикла проекта.
Проектирование и реализация корректной(правильной) системы, адекватной требованиям - весьма трудоемкая задача. Один из полезных методов состоит в использовании прототипов требований и прецедентов в качестве основы архитектуры и реализации проекта. Постоянно отслеживать эволюцию функций и требований, а также их реализацию позволяет верификация (см. лекцию 13). Её поддержка осуществляется путем использования методов трассировки, что позволяет связывать друг с другом части проекта, проводить трассировку требований к прецедентам и функциям и обратно. С помощью трассировки можно удостовериться в том, что:
- все элементы требований проекта учтены;
- все реализованные элементы проекта служат заданной цели и требованиям.
Хотя верификация является аналитическим методом, рекомендуется помнить о важности размышлений и интуиции. Нельзя ограничиваться механическим применением верификации. Основное внимание при её проведении уделяется тестированию и использованию трассировки для отбора компонентов системы, нуждающихся в тестировании. Методы проверки корректности требований призваны гарантировать, что:
- все элементы требований могут надлежащим образом и достаточно полно тестироваться;
- все тесты служат цели проекта и не являются избыточными.
Чтобы принять решение о том, какая часть системы нуждается в верификации и проверке корректности и в каком объеме, целесообразно применять анализ и оценку рисков. Это позволяет определить, для каких элементов неправильная реализация требований недопустима, а также разработать план действий по верификации и проверке правильности, основываясь на результатах этих оценок. На этом этапе следует привлекать к управлению требованиями и анализу их корректности, специалистов по тестированию, подключая их к планированию тестов с самого начала проекта (см. лекцию 13) . Группа тестирования должна разработать тестовые процедуры и сценарии, которые трассируются к прецедентам, а также функциональным и конструктивным требованиям.
Построение корректных требований к системе во многом зависит от надлежащей обработки изменений. Изменения - неотъемлемая часть жизни ПС, это нужно учитывать при создании планов, а также необходимо разработать процесс, с помощью которого можно управлять изменениями требований. Управление изменениями дает уверенность в том, что создаваемая система является корректной и, более того, будет правильной и в дальнейшем. Специалистам по независимой гарантии качества, должна отводиться роль в отслеживании и оценке процесса управления требованиями и плана их тестирования, а также периодических испытаний по окончании значительных этапов, чтобы проверить правильность результатов работы и обеспечить постоянное участие заказчиков.
Дата добавления: 2016-04-06; просмотров: 1761;