могут появиться на предприятии внедрения и как это может повлиять на функционирование изготовляемой АИС.
3. Описание требований
3.1.Описание вариантов использования. Параграф содержит описание вариантов использования и связанных с ними нефункциональные требований, либо ссылки на соответствующие артефакты.
3.2.Специальные требования. Параграф содержит описание функциональных требований (не описанных, как варианты использования), а также описание нефункциональных требований общего характера (не сопоставленных ни одному прецеденту в предыдущем разделе), либо ссылки на соответствующие артефакты.
4. Вспомогательная информация. Сюда включается информация, облегчающая понимание документа. Это может быть оглавление и приложения, например, описывающие прототипы пользовательского интерфейса.
Документирование требований на основе IEEE Standard 830-1998
Рассмотрим шаблон документа описания требований, составленный К.Вигерсом [8] на основе стандарта [25]. Данный стандарт содержит развёрнутое описание требований, которое может быть оптимизировано для нужд конкретной организации.
1.Введение
1.1Назначение документа.
1.2.Поддерживаемые соглашения.
1.3.Предполагаемая аудитория и рекомендации по последовательности работы с документом для каждого класса читателей.
1.4.Границы проекта. Здесь содержится ссылка на документ «Концепция», если таковой имеется, либо краткое резюме продукта.
1.5.Ссылки.
2.Общее описание.
2.1.Общий взгляд на продукт. Здесь необходимо определить - является ли описываемый продукт новым членом растущего семейства продуктов, новой версией существующей системы, заменой существующего приложения или совершенно новым продуктом. Если спецификация требований определяет компонент более крупной системы, укажите, как это ПО соотносится со всей системой и определите основные интерфейсы между ними.
2.2.Особенности продукта. Перечисляются ключевые особенности продукта или его главные свойства. Здесь уместно поместить контекстную диаграмму (в виде диаграммы вариантов использования, потоков данных или др. спецификаций).
2.3.Классы и характеристики пользователей. Документируется процесс поиска акторов, в котором выявляются все пользователи системы и осуществляется обобщение (выделение классов) пользователей. Найденные классы описываются (например – уровень квалификации, доступный функционал и т.д.).
2.4.Операционная среда. Рассматривается среда функционирования АИС, включая аппаратные средства, операционные системы, для распределённых систем – географическое расположение пользователей и серверов, топология сети.
2.5.Ограничения проектирования и реализации. Рассмотрим классификацию ограничений [8]:
определенные технологии, средства, языки программирования и базы данных, которые следует использовать или избегать;
ограничения, налагаемые операционной средой продукта;
обязательные соглашения или стандарты разработки;
обратная совместимость с продуктами, выпущенными ранее;
ограничения, налагаемые бизнес-правилами;
ограничения, связанные с оборудованием, например требования к быстродействию, ограничения памяти или процессора;
соглашения, связанные с пользовательским интерфейсом существующего продукта, которые необходимо соблюдать при его улучшении
форматы и протоколы обмена данными.
2.6Документация для пользователей.
2.7Предположения и зависимости
3.Функции системы
Для каждой i-й функции составляется следующее описание. З.i Наименование i-й функции системы.
З.i.1 Описание и приоритеты. Приводится краткое описание функции и указывается её приоритет (степень важности/очерёдности реализации).
З.i.2 Последовательности «воздействие - реакция». Необходимо перечислить последовательность воздействий, оказываемых на систему (действия пользователей, сигналы внешних устройств и др.), и отклики системы, определяющие реакцию конкретной функции.
З.i.З Функциональные требования. Необходимо дать детализацию i-й функции, перечислить детализированные функциональные требования, включая реакцию на ожидаемые ошибки и неверные действия. Каждому детальному функциональному требованию присваивается уникальный идентификатор.
4. Требования к внешнему интерфейсу
Ниже рассмотрены конкретные рекомендации по написанию разделов этого параграфа, согласно [8]:
4.1 Интерфейсы пользователя
Основные характеристики UI:
ссылки на стандарты графического интерфейса пользователей или стилевые рекомендации для семейства продукта, которые необходимо соблюдать;
стандарты шрифтов, значков, названий кнопок, изображений, цветовых схем, последовательностей полей вкладок, часто используемых элементов управления и т.п.;
конфигурация экрана или ограничения разрешения;
стандартные кнопки, функции или ссылки перемещения, одинаковые для всех экранов, например кнопка справки;
быстрые клавиши;
стандарты отображения сообщений;
стандарты конфигурации для упрощения локализации ПО;
специальные возможности для пользователей с проблемами со зрением.
4.2 Интерфейсы оборудования
Опишите характеристики каждого интерфейса между компонентами ПО и оборудования системы. В описание могут входить типы поддерживаемых устройств, взаимодействия данных и элементов управлений между ПО и оборудованием, а также протоколы взаимодействия, которые будут использоваться,
4.3 Интерфейсы ПО
Опишите соединения продукта и других компонентов ПО (идентифицированные по имени и версии), в том числе базы данных, операционные системы, средства, библиотеки и интегрированные коммерческие компоненты. Укажите назначение элементов сообщений, данных и элементов управления, обмен которыми происходит между компонентами ПО. Опишите службы, необходимые внешним компонентам ПО, и природу взаимодействия между компонентами. Определите данные, к которым будут иметь доступ компоненты ПО.
4.4 Интерфейсы передачи информации
Укажите требования для любых функций взаимодействия, которые будут использоваться продуктом, включая электронную почту, Web-браузер, протоколы сетевого соединения и электронные формы. Определите соответствующие форматы сообщений. Опишите особенности безопасности взаимодействия или шифрования, частоты передачи данных и механизмов синхронизации.
5.Другие нефункциональные требования
Вэтом разделе описываются остальные нефункциональные требования, не относящиеся к требованиям к интерфейсу, которые представлены в разделе 4, и к ограничениям, описываемым в разделе 2.5.
5.1 Требования к производительности
Укажите специальные требования к производительности для различных системных операций. Обоснуйте их необходимость для того, чтобы помочь разработчикам принять правильные решения, касающиеся дизайна. Например, из-за жестких требований к времени отклика базы данных разработчики могут зеркализовать базу данных в нескольких географических метаположениях или денормализовать связанные таблиц баз данных для получения более быстрого ответа на запрос.
Приложение А. Словарь терминов (глоссарий).
Приложение Б. Модели анализа. В этот раздел помещаются все модели, построенные в процессе анализа требований (см. материалы лекции 09-Моделирование требований).
Приложение В. Список вопросов
Это динамический список еще не разрешенных проблем, связанных с требованиями. Это могут быть элементы, помеченные как «ТВD» (to be determined — необходимо определить), отложенные решения, необходимая информация, неразрешенные конфликты и т.п.
Документирование требований в MSF
В начале фазы проектирования проектная группа работает с проектными требованиями. Они подразделяются на:
бизнес-требования,
требования к эксплуатации,
системные требования,
требования пользователя.
Одним из основных результатов фазы проектирования являются
функциональная спецификация, которая служит:
инструкцией команде разработчиков о том, что они должны будут создать;
основой для оценивания объема работы;
четкое соглашение с Заказчиком о том, что должно быть сделано;
основой для синхронизации работы всей проектной команды.
Сшаблонами соответствующих документов можно ознакомиться на сайте
Microsoft, [26].
Верификация и валидация
Термин «верификация» (verification) в русскоязычной литературе обычно переводят, как «проверка». Термин «валидация» - как «проверка правильности», «аттестация», «утверждение».
Согласно стандарту IЕЕЕ 1012-1986, верификация представляет собой процесс оценивания системы или компонента с целью определить, удовлетворяют ли результаты некой фазы условиям, наложенным в начале данной фазы. Валидация в этом же стандарте определяется, как процесс оценивания системы или компонента во время или по окончании процесса разработки с целью определить, удовлетворяет ли она указанным требованиям.
Трудно ожидать от читателя, впервые столкнувшегося с этой терминологией и её определениями в этом и других стандартах, ясности понимания. По крайней мере, у автора настоящего курса лекций при первом знакомстве с определениями тех же понятий в ISO IEC 12207 возникло чёткое ощущение, что авторы стандарта явно чего-то не договаривают. Посудите сами: согласно данному стандарту, верификация – это подтверждение экспертизой и представлением объективных доказательств того, что конкретные требования полностью реализованы. С другой стороны, валидация - это подтверждение экспертизой и представлением объективных доказательств того, что конкретные требования к конкретным объектам полностью реализованы. Правда, к чести авторов последнего стандарта, они приводят примечание, которое несколько приближает читателя к пониманию: «валидация связана с экспертизой продукта в целях определения его соответствия потребностям пользователя». В этом и заключается суть отличия: если верификация связана с выяснением того, удовлетворяет ли разрабатываемый объект, либо процесс его создания сформулированным требованиям, то валидация отвечает на вопрос – правильно ли разработан целевой объект (продукт), удовлетворяет ли он потребностям заказчика. Другой аспект валидации заключается в том, что она обычно увязывается с формальной приёмкой (аттестацией) системы.
Некоторые стандарты, например SWEBOK, IEEE 1059-93 “IEEE Guide for Software Verification and Validation Plans”, вводят для этих двух процессов обобщающее понятие
V&V (Validation and Verification). Согласно IEEE 1059-93, верификация и валидация программного обеспечения – упорядоченный подход в оценке программных продуктов, применяемый на протяжении всего жизненного цикла. Усилия, прилагаемые в рамках работ по верификации и валидации, направлены на обеспечение качества как неотъемлемой характеристики программного обеспечения и удовлетворение пользовательских требований (конец цитаты).
Из вышесказанного ясно, как осуществить верификацию и валидацию АИС и (или) процесса её создания: в первом случае необходимо убедиться, что АИС (компонента, процесс) соответствует сформулированным требованиям, во втором – что АИС действительно работает! Но если критерием проверки АИС служат требования, то что может послужить критерием проверки самих требований? Ответ заключается в том, что требования должны удовлетворять свойствам, сформулированным в лекции 2, Кроме того, следует убедиться в том, что [8]:
в спецификации требований к ПО должным образом описаны предполагаемые возможности и характеристики системы, которые удовлетворят потребности различных заинтересованных в проекте лиц;
требования к ПО точно отражают системные требования, бизнес-правила и др.;
требования обеспечивают качественную основу для проектирования и сборки ПО.
Некоторые типичные проблемные ситуации процесса формирования и оценки требований
Двусмысленность требований
В ряду проблем и недостатков требований двусмысленность, является, пожалуй, наиболее критичным фактором риска проекта, закладываемого в фазе формирования требований. Двусмысленность (несоответствие свойству ясности, определённости) закладывает под проект «бомбу замедленного действия». На практике требование, сформулированное двусмысленным образом, может привести к различным его интерпретациям представителями Разработчика и Заказчика. Разработчик, руководствуясь своей интерпретацией, определит на её основе архитектурную основу, создаст аналитические и проектные модели и в конечном итоге создаст программный код. Как показывают исследования, цена исправления ошибки вырастает примерно на порядок при переходе между рабочими потоками (от анализа требований к проектированию, от проектирования к реализации и т.д.).
Тем самым, если не заложить средства на проверку требований на предмет двусмысленности в момент их формирования – существует риск непринятия готовой системы в момент приёмо-сдаточных испытаний, т.к. каждая из сторон будет придерживаться своей версией интерпретации требований, что ведёт к убыткам, судебным процессам и т.п. и тому есть масса примеров.
«Золочение» продукта
Под «золочением» [8] понимают такие ситуации, когда разработчики добавляют функции, которых нет в спецификации, но им кажется, что это понравится пользователям. Зачастую же клиентам не нужны такие избыточные возможности, получается, что время, отведенное на реализацию, тратится впустую (конец цитаты).
Эта ситуация возникает в случае, когда, во-первых, в коллективе Разработчика присутствуют творческие личности (ведь далеко не всякая команда станет проявлять инициативу и делать сверх того, о чём её просили), во вторых – существует разрыв в прохождении информации от Заказчика к Разработчику. Инициативный разработчик «золотит» продукт из самых лучших побуждений, но, возможно, он плохо знаком с бизнес-процессом Заказчика и заложенные им «фичи» попросту не будут востребованы.
Другая сторона «золочения» заключается в том, что группа представителей Заказчика неоднородна по своей структуре и может возникнуть ситуация, когда представитель Заказчика, формулирующий «дорогие» требования, не обладает соответствующими полномочиями. Это – специфика российских предприятий, где часто всё бывает устроено существенно неформально.
Минимальная спецификация
Создавать полную документацию требований в соответствии с вышеизложенными принципами, или ограничиться наброском требований на 2-3 страницы, как это зачастую делает автор лекций в небольших проектах – как говориться, дело вкуса.
Однако, для работы «не по правилам», во-первых, должны быть объективные предпосылки, во-вторых – следует отдавать себе отчёт в выгодах и рисках этого выбора.
Минимальная спецификация уместна, если имеет место наличие одновременно трёх обстоятельств (объединение по «И»):
а) цена контракта и размеры проекта таковы, что разработка развёрнутого ТЗ экономически нецелесообразна; б) коллектив Разработчика обладает достаточной степенью профессионализма и опыта
выполнения проектов в смежных областях, чтобы уметь создавать по краткой спецификации продукт, который пройдёт приёмку Заказчиком;