Ис. Конспект лекций Маглинец Ю. А. Красноярск сфу 2007 Введение. Понятие и классификация требований
Скачать 0.88 Mb.
|
Документирование требований в 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 страницы, как это зачастую делает автор лекций в небольших проектах – как говориться, дело вкуса. Однако, для работы «не по правилам», во-первых, должны быть объективные предпосылки, во-вторых – следует отдавать себе отчёт в выгодах и рисках этого выбора. Минимальная спецификация уместна, если имеет место наличие одновременно трёх обстоятельств (объединение по «И»): а) цена контракта и размеры проекта таковы, что разработка развёрнутого ТЗ экономически нецелесообразна; б) коллектив Разработчика обладает достаточной степенью профессионализма и опыта выполнения проектов в смежных областях, чтобы уметь создавать по краткой спецификации продукт, который пройдёт приёмку Заказчиком; в) между Заказчиком и Разработчиком существуют конструктивные отношения и обе стороны понимают и принимают риски мини-спецификации. Другой вариант работы по мини-спецификации: Заказчик и Разработчик понимают, что создание развёрнутой спецификации оттягивает окончание выпуска готового продукта, что главная цель проекта – продукт, а не документация и готовы к плотному сотрудничеству в процессе его создания. Это – путь так называемых agile-методологий разработки ПО, подробнее см. в http://www.agile.org Основной риск применения мини-спецификации заключаются в том, что они базируются на человеческом факторе. Хорошие и конструктивные отношения между сторонами «на берегу» должны сохраниться на всём протяжении проекта, в противном случае у сторон возникнут существенные проблемы в формальном доказательстве того – что должна делать программа, т.к. мини-спецификация для этого недостаточно полна. Пропуск типов пользователей Корпоративные АИС создаются для того, чтобы быть использованными различными группами пользователей. Может сложиться ситуация, в которой в группу представителей Заказчика, участвующих в формировании требований, попадут наиболее инициативные персоны предприятия, которые, по всей видимости, смогут донести свой голос до представителей Разработчика. Те же категории пользователей, у которых не найдётся активных представителей, могут оказаться «за бортом» автоматизации. Именно эта ошибка формирования требований называется «пропуск классов пользователей». Чтобы её избежать, представитель Разработчика должен объективно оценить организационную структуру предприятия и его бизнес-процессы и вдумчиво подойти к выбору ключевых персон, проведение интервью с которыми поможет сформировать целостную картину требований к создаваемой АИС. Методы и средства проверки требований Наработано значительное количество методов и средств проверки требований [8,21-31]. Они разнятся по ряду параметров. Так, различают: по широте анализа – просмотр (выборочная проверка) и сквозной контроль (тотальная проверка); по степени формализации – неофициальные процедуры, процедуры, проводимые по формальным правилам (инспекции, экспертизы); по составу группы проверки – с (без) участием автора, с (без) участием менеджера проекта, с (без) участием представителей внешних организаций; по используемым средствам – тексты требований, тестовые сценарии, критерии приемлемости, прототипы. Понятие и методы прототипирования были рассмотрены в лекции 5 Некоторые другие, наиболее важные из перечисленного выше, методы и средства, рассмотрены далее по тексту. Неофициальные просмотры требований Различают [8] несколько способов неофициальных просмотров требований: просмотр «за столом», коллективная проверка, критический анализ. В первых двух случаях автор требований обращается за помощью к коллегам (соответственно, к одному, либо к нескольким) с целью выдачи практических рекомендаций по улучшению продукта. В третьем случае автор осуществляет презентацию разработанные им требования на совещании с последующим обсуждением. Неофициальные просмотры используют для знакомства с разработкой, сбора отзывов, формирования обратной связи. По статистике, приведённой в [31], неофициальные просмотры позволяют выявить до 60% ошибок в требованиях. Инспекции Понятие инспекции, применительно к IT-индустрии, впервые было сформулировано Майклом Фэганом (Michael Pagan) из IBM в середине 70-х гг. 19 Согласно стандарту IEEE 20 , проведение инспекций, в отличие от неформальных просмотров, базируется на своде формальных требований и правил. Представленный ниже обзор правил приведён, основываясь на работе [6]. Кроме того, слушателям следует порекомендовать ознакомиться с параграфом «Проведение экспертизы» главы 15 монографии [8], где представлено детальное описание процедуры экспертизы. Лица, занимающие управленческие позиции (менеджеры) в отношении к любым членам команды инспектирования, не должны участвовать в инспекциях. Инспекция должна вестись под руководством непредвзятого (независимого от проекта и его целей) лидера, обученного техникам инспектирования. Инспектирование всегда вовлекает авторов промежуточного или конечного продукта. В группу инспекции входят лидер, регистратор, рецензент и несколько (от 2 до 5) инспекторов. Члены команды инспектирования могут специализироваться в различных областями экспертизы (обладать различными областями компетенции), например, предметной области, методах проектирования, языке и т.п. В заданный момент (промежуток) времени инспекции проводятся в отношении отдельного небольшого фрагмента продукта (в большинстве случаев, фокусируясь на отдельных функциональных или других характеристиках; часто, отталкиваясь от отдельных бизнес-правил, функциональных требований или атрибутов качества, прим. автора). Каждый член команды должен исследовать оцениваемый продукт и другие входные данные до проведения инспекционной встречи, применяя, возможно, те или иные аналитические техники в небольшим фрагментам продукта или к продукту, в целом, рассматривая в последнем случае только один его аспект, например, интерфейсы. Любая найденная аномалия должна документироваться, а информация передаваться лидеру инспекции. В процессе инспекции лидер руководит сессией и проверяет, что все подготовились к инспектированию. Общим инструментом, используемым при инспектировании, является проверочный лист (checklist), содержащий аномалии и вопросы, связанные с аспектами, вызывающими интерес. Результирующий лист часто классифицирует аномалии и оценивается командой с точки зрения его завершенности и точности. Решение о завершении инспекции принимается в соответствии с одним (любым) из трех критериев: 1. Принятие с отсутствием либо малой необходимостью переработки 2. Принятие с проверкой переработанных фрагментов 3. Необходимость повторной инспекции. Разработка тестов Механизм вариантов использования (uses cases), рассмотренный в лекции 4 , позволяет ответить на вопрос: как будет использоваться система. Чтобы проверить систему, используется аналогичный механизм: тестовых сценариев (test cases). Тестовые сценарии (ТС) рекомендуется создавать уже на ранних стадиях работы с требованиями, в идеале – после получения запросов совладельцев, параллельно с разработкой вариантов использования. 19 Pagan, Michael E. 1976. Design and Code Inspections to Reduce Errors in Program Development. IBM Systems Journal 15(3): 182-21. 20 IEEE 1028-97 “IEEE Standard for Software Reviews“ Тестовые сценарии, как и варианты использования, могут поддерживать разные уровни абстракции. Различаются концептуальные и детальные ТС. Концептуальный уровень предполагает проработку процедуры тестирования, инвариантную к конкретной реализации UI. Как использовать тестовые сценарии для тестирования требований? В [8] предлагается следующая процедура. 1. Построить матрицу, где по вертикали отмечены функциональные требования, а по горизонтали – тестовые сценарии. 2. Убедиться, что каждый из ТС осуществим на существующем наборе требований. 3. Убедиться, что для каждого требования представлен как минимум один ТС. 4. Прочертить «путь» каждого из ТС на карте диалогов. Это позволит: обнаружить некорректные или пропущенные требования, исправить ошибки на карте диалогов и отшлифовать варианты тестирования. Как быть с тестированием нефункциональных требований? Согласно [33], процедура анализа требований считается выполненной только тогда, когда все требования, включенные в спецификацию, обладают методами оценки соответствия им создаваемого программного продукта. Для того, чтобы нефункциональные требования были измеримы, каждому из них в идеале необходимо сопоставить количественную метрику. Если это не удаётся – возможно, требование следует переформулировать, либо детализировать. Определение критериев приемлемости При формальной приёмке продукта существуют две типовые процедуры: демонстрация продукта Разработчиком на тестовых сценариях и проверка продукта Заказчиком. Далеко не каждого Заказчика можно убедить, что он не должен «тыкать кнопки», лежащие за пределами тестовых сценариев. Однако, в период стабилизации продукта, для Заказчика важнее даже не количество выявленных дефектов, а возможность проверки – годится ли разработанная АИС для решения поставленных им задач. Чтобы не откладывать столь важный вопрос до момента приёмки системы, крайне важно, наряду с формированием требований, вовлечь Заказчика на ранних стадиях создания продукта в процесс формирования критериев приемлемости. Критерии приемлемости (acceptance criteria) 21 должны отразить точку зрения Заказчика на то, что он считает правильной системой. Делегирование разработки тестов на приемлемость пользователям — эффективная стратегия разработки требований [8]. Это позволяет уже на этапе сбора информации перейти от формулировки вопроса с «Что вам нужно делать с помощью системы?» к «Как вы делаете вывод о том, что система удовлетворяет вашим потребностям?». Если клиент не может описать, как он оценит, что конкретное требование удовлетворено системой, значит, требование сформулировано недостаточно ясно. Раннее формирование тестов для проверки приемлемости позволяет обнаружить дефекты в требованиях. Проверка приемлемости базируется на ключевых (существенных) вариантах использования. При этом следует абстрагироваться от альтернативных сценариев и исключений и сосредоточить внимание на основном потоке событий. Необходимо учесть также и нефункциональные требования, такие, как производительностью, легкость и простота использования. 21 IEEE. 1990. IEEE Std 610.12-1990: IEEE Standard Glossary of Software Engineering Terminology. Los Alamitos, CA: IEEE Computer Society PreEis. Литература к лекции 24. Вигерс Карл Разработка требований к программному обеспечению/Пер, с англ. — М.:Издательско-торговыйi дом «Русская Редакция», 2004. —576с.: ил. 25. IEEE Standard 830-1998, «IEEE Recommended Practice for Software Requirements Specifications» 26. Белые страницы MSF. http://www.microsoft.com/rus/msdn/msf 27. ГОСТ 19.201-78 «Техническое задание, требования к содержанию и оформлению» 28. ГОСТ 34.602-89 «Техническое задание на создание автоматизированной системы» (ТЗ на АС) 29. Брауде Э. Технологии разработки программного обеспечения. – СПб: Питер, 2004. – 655 с.: ил. 30. Леффингуелл Д., Уидриг Д. Принципы работы с требованиями к программному обеспечению. М.: ИД “Вильямс”, 2002. 31. Соммервилл, Иан. Инженерия программного обеспечения, 6-е издание. : Пер. с англ. – М.: Издательский дом «Вильямс», 2002. – 624 с.: ил. – Парал. тит. англ. 32. Орлик С. Программная инженерия. Качество программного обеспечения (Software Quality) Copyright © Сергей Орлик, 2004-2005 http://www.sorlik.ru/swebok/3-10-software_engineering_quality.pdf 33. Орлик С., Булуй Ю. Введение в программную инженерию и управление жизненным циклом ПО Программная инженерия. Программные требования. Copyright © Сергей Орлик, 2004-2005. http://www.sorlik.ru/swebok/3-1-software_engineering_requirements.pdf |