Файл: Обеспечения Базовый курс (3е издание) Версия книги 2 от 17. 04. 2023.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.11.2023
Просмотров: 867
Скачиваний: 31
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Уровни и типы требований
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 43/301
Спецификация требований (software requirements specification, SRS
84
) объ- единяет в себе описание всех требований уровня продукта и может представлять собой весьма объёмный документ (сотни и тысячи страниц).
Поскольку требований может быть очень много, а их приходится не только единожды написать и согласовать между собой, но и постоянно обновлять, работу проектной команды по управлению требованиями значительно облегчают соответ- ствующие инструментальные средства (requirements management tools
85
,
86
).
Для более глубокого понимания принципов создания, организации и ис- пользования набора требований рекомендуется ознакомиться с фунда- ментальной работой Карла Вигерса «Разработка требований к программ- ному обеспечению» («Software Requirements (3rd Edition) (Developer Best
Practices)
», Karl Wiegers, Joy Beatty). В этой же книге (в приложениях) при- ведены крайне наглядные учебные примеры документов, описывающих требования различного уровня.
84
Software requirements specification, SRS. SRS describes as fully as necessary the expected behavior of the software system.
The SRS is used in development, testing, quality assurance, project management, and related project functions. People call this deliverable by many different names, including business requirements document, functional spec, requirements document, and others. [
«Software Requirements (3rd edition)», Karl Wiegers and Joy Beatty]
85
Requirements management tool. A tool that supports the recording of requirements, requirements attributes (e.g. priority, knowledge responsible) and annotation, and facilitates traceability through layers of requirements and requirements change management. Some requirements management tools also provide facilities for static analysis, such as consistency checking and violations to predefined requirements rules. [ISTQB Glossary]
86
Обширный список инструментальных средств управления требованиями можно найти здесь: http://makingofsoftware.com/resources/list-of-rm-tools
Свойства качественных требований
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 44/301
2.2.5.
Свойства качественных требований
В процессе тестирования требований проверяется их соответствие опреде- лённому набору свойств (рисунок 2.2.f).
Рисунок 2.2.f — Свойства качественного требования
Завершённость (completeness
87
). Требование является полным и закончен- ным с точки зрения представления в нём всей необходимой информации, ничто не пропущено по соображениям «это и так всем понятно».
Типичные проблемы с завершённостью:
• Отсутствуют нефункциональные составляющие требования или ссылки на соответствующие нефункциональные требования (например: «пароли
должны храниться в зашифрованном виде» — каков алгоритм шифрова- ния?).
• Указана лишь часть некоторого перечисления (например: «экспорт осу-
ществляется в форматы PDF, PNG и т.д.» — что мы должны понимать под
«и т.д.»?).
• Приведённые ссылки неоднозначны (например: «см. выше» вместо «см. раз-
дел 123.45.b»).
Способы обнаружения проблем
Способы устранения проблем
Применимы почти все техники тестиро- вания требований
{51}
, но лучше всего по- могает задавание вопросов и использо- вание графического представления раз- рабатываемой системы. Также очень по- могает глубокое знание предметной об- ласти, позволяющее замечать пропу- щенные фрагменты информации.
Как только было выяснено, что чего-то не хватает, нужно полу- чить недостающую информа- цию и дописать её в требова- ния. Возможно, потребуется не- большая переработка требова- ний.
87
Each requirement must contain all the information necessary for the reader to understand it. In the case of functional requirements, this means providing the information the developer needs to be able to implement it correctly. No requirement or necessary information should be absent. [
«Software Requirements (3rd edition)», Karl Wiegers and Joy Beatty]
Корректность и проверяемость
Проранжированность
Важность
Стабильность
Срочность
Модифицируемость
Прослеживаемость
Обязательность
Актуальность
Выполнимость
Недвусмысленность
Непротиворечивость
Атомарность
Завершённость
Свойства качественных требований
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 45/301
1 2 3 4 5 6 7 8 9 ... 38
Атомарность, единичность (atomicity
88
). Требование является атомарным, если его нельзя разбить на отдельные требования без потери завершённости и оно описывает одну и только одну ситуацию.
Типичные проблемы с атомарностью:
• В одном требовании, фактически, содержится несколько независимых
(например: «кнопка “Restart” не должна отображаться при остановленном
сервисе, окно “Log” должно вмещать не менее 20-ти записей о последних
действиях пользователя» — здесь зачем-то в одном предложении описаны совершенно разные элементы интерфейса в совершенно разных кон- текстах).
• Требование допускает разночтение в силу грамматических особенностей языка (например: «если пользователь подтверждает заказ и редактирует
заказ или откладывает заказ, должен выдаваться запрос на оплату» — здесь описаны три разных случая, и это требование стоит разбить на три от- дельных во избежание путаницы). Такое нарушение атомарности часто вле- чёт за собой возникновение противоречивости.
• В одном требовании объединено описание нескольких независимых ситуа- ций (например: «когда пользователь входит в систему, ему должно отоб-
ражаться приветствие; когда пользователь вошёл в систему, должно
отображаться имя пользователя; когда пользователь выходит из си-
стемы, должно отображаться прощание» — все эти три ситуации заслужи- вают того, чтобы быть описанными отдельными и куда более детальными требованиями).
Способы обнаружения проблем
Способы устранения проблем
Обдумывание, обсуждение с колле- гами и здравый смысл: если мы счи- таем, что некий раздел требований перегружен и требует декомпози- ции, скорее всего, так и есть.
Переработка и структурирование требований: разбиение их на раз- делы, подразделы, пункты, под- пункты и т.д.
Непротиворечивость, последовательность (consistency
89
). Требование не должно содержать внутренних противоречий и противоречий другим требованиям и документам.
Типичные проблемы с непротиворечивостью:
• Противоречия внутри одного требования (например: «после успешного
входа в систему пользователя, не имеющего права входить в систему…»
— тогда как он успешно вошёл в систему, если не имел такого права?)
• Противоречия между двумя и более требованиями, между таблицей и тек- стом, рисунком и текстом, требованием и прототипом и т.д. (например: «
712.a
Кнопка “Close” всегда должна быть красной» и «36452.x Кнопка “Close” все-
гда должна быть синей» — так всё же красной или синей?)
• Использование неверной терминологии или использование разных терминов для обозначения одного и того же объекта или явления (например: «в случае,
если разрешение окна составляет менее 800x600…» — разрешение есть у экрана, у окна есть размер).
88
Each requirement you write represents a single market need that you either satisfy or fail to satisfy. A well written requirement is independently deliverable and represents an incremental increase in the value of your software. [
«Writing Good Requirements
— The Big Ten Rules», Tyner Blain: http://tynerblain.com/blog/2006/05/25/writing-good-requirements-the-big-ten-rules/
]
89
Consistent requirements don’t conflict with other requirements of the same type or with higher-level business, user, or system requirements. [
«Software Requirements (3rd edition)», Karl Wiegers and Joy Beatty]
Свойства качественных требований
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 46/301
Способы обнаружения проблем
Способы устранения проблем
Лучше всего обнаружить противоречи- вость помогает хорошая память ☺, но даже при её наличии незаменимым ин- струментом является графическое пред- ставление разрабатываемой системы, позволяющее представить всю ключевую информацию в виде единой согласован- ной схемы (на которой противоречия очень заметны).
После обнаружения противо- речия нужно прояснить ситуа- цию с заказчиком и внести не- обходимые правки в требова- ния.
Недвусмысленность (unambiguousness
90
, clearness
). Требование должно быть описано без использования жаргона, неочевидных аббревиатур и расплывча- тых формулировок, должно допускать только однозначное объективное понимание и быть атомарным в плане невозможности различной трактовки сочетания отдель- ных фраз.
Типичные проблемы с недвусмысленностью:
• Использование терминов или фраз, допускающих субъективное толкование
(например: «приложение должно поддерживать передачу больших объёмов
данных» — насколько «больших»?) Вот лишь небольшой перечень слов и выражений, которые можно считать верными признаками двусмысленности: адекватно (adequate), быть способным (be able to), легко (easy), обеспечи- вать (provide for), как минимум (as a minimum), быть способным (be capable of
), эффективно (effectively), своевременно (timely), применимо (as applica- ble), если возможно (if possible), будет определено позже (to be determined,
TBD
), по мере необходимости (as appropriate), если это целесообразно (if practical
), но не ограничиваясь (but not limited to), быть способно (capability of), иметь возможность (capability to), нормально (normal), минимизировать
(minimize
), максимизировать (maximize), оптимизировать (optimize), быстро
(rapid), удобно (user-friendly), просто (simple), часто (often), обычно (usual), большой (large), гибкий (flexible), устойчивый (robust), по последнему слову техники (state-of-the-art), улучшенный (improved), результативно (efficient).
Вот утрированный пример требования, звучащего очень красиво, но совер- шенно нереализуемого и непонятного: «В случае необходимости оптимиза-
ции передачи больших файлов система должна эффективно использовать
минимум оперативной памяти, если это возможно».
• Использование неочевидных или двусмысленных аббревиатур без расшиф- ровки (например: «доступ к ФС осуществляется посредством системы
прозрачного шифрования» и «ФС предоставляет возможность фиксиро-
вать сообщения в их текущем состоянии с хранением истории всех изме-
нений» — ФС здесь обозначает файловую систему? Точно? А не какой-ни- будь «Фиксатор Сообщений»?)
• Формулировка требований из соображений, что нечто должно быть всем оче- видно (например: «Система конвертирует входной файл из формата PDF
в выходной файл формата PNG» — и при этом автор считает совершенно очевидным, что имена файлов система получает из командной строки, а мно- гостраничный PDF конвертируется в несколько PNG-файлов, к именам кото- рых добавляется «page-1», «page-2» и т.д.). Эта проблема перекликается с нарушением корректности.
90
Natural language is prone to two types of ambiguity. One type I can spot myself, when I can think of more than one way to interpret a given requirement. The other type of ambiguity is harder to catch
. That’s when different people read the requirement and come up with different interpretations of it. [
«Software Requirements (3rd edition)», Karl Wiegers and Joy Beatty]
Свойства качественных требований
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 47/301
Способы обнаружения проблем
Способы устранения проблем
Увидеть в требованиях двусмыслен- ность хорошо помогают перечислен- ные выше слова-индикаторы. Столь же эффективным является проду- мывание проверок: очень тяжело придумать объективную проверку для требования, допускающего раз- ночтение.
Самый страшный враг двусмыслен- ности – числа и формулы: если что- то можно выразить в формульном или числовом виде (вместо словес- ного описания), обязательно стоит это сделать. Если это невозможно, стоит хотя бы использовать макси- мально точные технические тер- мины, отсылки к стандартам и т.п.
Выполнимость (feasibility
91
). Требование должно быть технологически вы- полнимым и реализуемым в рамках бюджета и сроков разработки проекта.
Типичные проблемы с выполнимостью:
• Так называемое «озолочение» (gold plating) — требования, которые крайне долго и/или дорого реализуются и при этом практически бесполезны для ко- нечных пользователей (например: «настройка параметров для подключе-
ния к базе данных должна поддерживать распознавание символов из же-
стов, полученных с устройств трёхмерного ввода»).
• Технически нереализуемые на современном уровне развития технологий требования (например: «анализ договоров должен выполняться с примене-
нием искусственного интеллекта, который будет выносить однозначное
корректное заключение о степени выгоды от заключения договора»).
• В принципе нереализуемые требования (например: «система поиска должна
заранее предусматривать все возможные варианты поисковых запросов и
кэшировать их результаты»).
Способы обнаружения проблем
Способы устранения проблем
Увы, здесь есть только один путь: максимально нарабатывать опыт и исходить из него. Невозможно по- нять, что некоторое требование
«стоит» слишком много или вовсе невыполнимо, если нет понимания процесса разработки ПО, понима- ния предметной области и иных со- путствующих знаний.
При обнаружении невыполнимости требования не остаётся ничего дру- гого, как подробно обсудить ситуа- цию с заказчиком и/или изменить требование (возможно – отказаться от него), или пересмотреть условия выполнения проекта (сделав выпол- нение данного требования возмож- ным).
Обязательность, нужность (obligatoriness
92
) и актуальность (up-to-date).
Если требование не является обязательным к реализации, оно должно быть просто исключено из набора требований. Если требование нужное, но «не очень важное», для указания этого факта используется указание приоритета (см. «проранжирован- ность по…»). Также исключены (или переработаны) должны быть требования, утра- тившие актуальность.
Типичные проблемы с обязательностью и актуальностью:
• Требование было добавлено «на всякий случай», хотя реальной потребности в нём не было и нет.
91
It must be possible to implement each requirement within the known capabilities and limitations of the system and its operating environment, as well as within project constraints of time, budget, and staff. [
«Software Requirements (3rd edition)», Karl Wiegers and Joy Beatty]
92
Each requirement should describe a capability that provides stakeholders with the anticipated business value, differentiates the product in the marketplace, or is required for conformance to an external standard, policy, or regulation. Every requirement should originate from a source that has the authority to provide requirements. [
«Software Requirements (3rd edition)», Karl
Wiegers and Joy Beatty]