Существующее требование: что это такое, описание и особенности

Как писать требования чтобы их понимали

В этой статье на примерах расскажу о том, как писать и оформлять требования, чтобы их было просто использовать команде разработки и их все-таки дочитывали до конца.

Данный материал будет интересен бизнес- и системным аналитикам, менеджерам и владельцам продуктов, CEO небольших стартапов, в общем – всем, кому нужно писать требования к разработке фичей и ИТ-систем.

Здесь не будет базовой теории, что есть требование и что оно должно соответствовать SMART (надеюсь, вы это и так знаете). Скорее, я покажу некие best practice, как требования лучше оформлять в документации.

Начнем с обсуждения:

  • Общих принципов написания «удобных» требований
  • Использования таблиц
  • Использования схем и диаграмм

Если тема окажется интересной, то в следующей статье посмотрим на использование более продвинутых инструментов, таких как:

  • Подход Specification by Example
  • Варианты использования
  • Мокапы интерфейса

Требования это не роман и удивлять слогом тут никого не нужно. Я еще не раз это повторю в статье, но тот кто читает ваши требования, должен напрягаться по минимуму.

Здесь, как и в дизайне интерфейсов, отлично работает правило: «Не заставляйте меня думать», про которое писал Стив Круг в одноименной книге.

Ниже я привел рекомендации, которые призваны упростить восприятие ваших требований:

  • Используйте простой слог и слова, избегайте общих формулировок.
  • Избегайте сложносочиненных предложений. В идеале, одно предложение = одна мысль.
  • Если вы встречаете союзы «но», «или», то скорее всего, здесь скрыты два отдельных требования.
  • Не используйте двойные отрицания.
  • Для требованиий со структурой «если , то » пишите сначала результат, а потом – условие. Пример: « Система должна запрещать сохранение заказа, если хотя бы одного товара нет в наличии» .

« Должна быть возможность удалить конкретный товар или сразу все товары из корзины» .

По сути, данное требование содержит два отдельных требования:

  1. «Должна быть возможность удалить конкретный товар из корзины» .
  2. «Должна быть возможность удалить сразу все товары из корзины» .

Такое разделение поможет не пропустить скрытое требование разработчику или QA и подскажет менеджеру, что здесь лучше завести две отдельные задачи.

Сам текст должен быть хорошо отформатирован. Есть мнение, что разработчики «не читают» требования. Оно отчасти верно. Обычно это вызвано тем, что требования «неудобно» читать: плохая структура, сложный слог, слишком большие блоки текста – пока дочитываешь конец, забываешь началои т.д.

Используйте средства, которые доступны вам в любом редакторе:

  • Списки
  • Абзацы
  • Полужирный шрифт

Например, если вы используете союз «и» (или несколько таких союзов), то лучше каждое условие написать с новой строки.

«Необходимо перевести заказ в статус «Доставляется», если заказ оплачен и весь товар есть в наличии на складе.»

Давайте упростим восприятие этого требования. Получим следующее:

«Необходимо перевести заказ в статус «Доставляется», если:

  • Заказ оплачен
  • И весь товар есть в наличии на складе.

Что мы сделали? Мы сняли часть когнитивной нагрузки с того, кто будет изучать данное требование. Уже из форматирования становится видно, что:

  • Речь идет о заказе в статусе «Доставляется».
  • Действие изменения статуса должно выполняться при соблюдении двух условий.

На первый взгляд все это очевидно, но в процессе рабочей деятельности, я постоянно сталкиваюсь с подобными недочетами. Я намерено не пишу «ошибки», так как формально оба требования равнозначны, но на практике, второй вариант воспринимается гораздо проще.

Вы должны не только писать просто, но и оптимизировать свои требования, упрощать их. Этот принцип должен работать во всем. Когда вы пытаетесь передать информацию, она неизменно искажается, а часть ее теряется. И, чем больше передается информации, тем больше ее теряется в процессе передачи.

«Заказ отображается в личном кабинете пользователя, если заказ находится в одном из статусов: «Новый», «Ожидает оплаты», «Оплачен», «Доставляется». Заказ в статусе «Доставлен» не должен отображаться в личном кабинете.»

Как можно его упростить:

«Заказ отображается в личном кабинете пользователя, если его статус не равен «Доставлен» .

Во-первых, мы сделали само требование короче, а значит вероятность, что его прочитают стала выше.

Во-вторых, технические специалисты отлично считывают такие конструкции и вы, опять же, снимаете с них когнитивную нагрузку.

В-третьих, мы сделали требование универсальнее. При появлении в будущем нового статуса заказа, например, « Проверяется наличие на складе» , второй пример будет актуален, а первый придется обновлять в спецификации.

Запомните, таблицы – ваш главный «бро»

Таблицы позволяют хорошо структурировать информацию и не пропустить важное при изучении требований. Когда я пишу очередной блок требований я всегда задаю себе два вопроса:

  • Как я могу упростить эти требования?
  • Как эти требования можно оформить в табличном виде?

Почему таблицы лучше работают:

  • Таблицы воспринимаются проще, чем сплошной текст. Меньше вероятность упустить важные детали при изучении требований.
  • Таблицы проще изменять и дополнять информацией в будущем (новые колонки, новые строки).
  • Удобно добавлять комментарии (в отдельной колонке), отделяя их от требований.

Рассмотрим пример части из ТЗ на большую государственную систему из открытых источников:

«Успешно авторизованный пользователь, входящий в группу пользователей c ролью «Исполнитель», должен попадать на «UI-006 Главная страница личного кабинета», а пользователь, входящий в группу пользователей с ролью «Наблюдатель» – на «UI-092 Главная страница Мониторинга (дашборд)» подсистемы «Мониторинг». Если пользователь в личном кабинете настроил страницу по умолчанию, то открываемая страница должна определяться на основе выбранной настройки.»

Если прочитать это требование внимательно и сделать пару заметок, то ничего сложного в нем нет, разобраться можно. Но давайте упростим восприятие этого требования, с помощью таблицы. Получим следующее:

«После успешной авторизации в системе, пользователю должна открываться стартовая страница, согласно условиям ниже:»

Если в дальнейшем у нас появится новая роль, то нужно будет всего лишь добавить еще одну строку в таблицу.

Таблицы являются отличным инструментом для описания форм и пользовательских интерфейсов.

Читайте также:
Хищение либо вымогательство наркотических средств или психот

Пример формы редактирования из того же ТЗ:

Для описания требований к форме можно использовать таблицу ниже, в которой мы укажем для каждого поля:

  • Тип поля.
  • Значение поля при открытии формы.
  • Ограничения на выбираемые данные.
  • Можно ли редактировать поле и требования к валидации (если есть).

Для описания действий на форме (Сохранить и Отмена) лучше использовать отдельную таблицу, так как описания действий и полей формы сильно отличаются.

Когда использовать таблицы (спойлер – всегда!):

  • Вы описываете два и более объектов со одинаковыми свойствами (поля формы; разделы сайта; роли пользователей и т.д.).
  • Вы хотите описать реакцию системы при возникновении определенных событий.
  • Вы описываете миграцию данных или маппинг полей между системами.

Схемы и диаграммы – это еще один отличный способ улучшить качество передачи знаний в команде разработки.

Нарисованную схему можно дополнитель текстовым описанием для каждого блока и/или процесса. Это работает намного лучше, чем резкий переход к текстовому описанию, так как схемы имеют свойство заинтересовывать, ведь все мы любим рассматривать картинки.

Далее я поделюсь схемами, которые использую чаще всего.

Зачем нужна: Показывает как разрабатываемая система взаимодействует с внешними миром.

Внешний мир может быть представлен: другими ИТ-системами, пользователями или устройствами.

Когда использовать: На этапе проектирования системы, чтобы:

  • Понять, с какими системами придется интегрироваться.
  • Понять, какие интерфейсы ввода/вывода нужно реализовать.

P.S. Еще эту диаграмму очень любят архитекторы.

Я не сторонник строгих правил разработки диаграмм, но стараюсь придерживаться следующих рекомендаций для контекстной диаграммы:

  • Разрабатываемая система изображается в виде круга в центре.
  • По ее периметру изображаются внешние акторы (системы, пользователи, устройства) в виде прямоугольников.
  • Стрелками рисуются потоки данных (в том числе физических объектов) от актора к системе и наоборот.
  • Нужно показывать только основные потоки данных и/или операции.

Пример контекстной диаграммы из книги «Разработка требований к программному обеспечению» (Джой Битти, Карл Вигерс):

BPMN – это нотация описания бизнес-процессов в виде набора обозначений и ряда определенных правил.

Зачем нужна: Позволяет зафиксировать описание бизнес-процессов на этапе их дизайна и использовать это «знание» на этапе разработки и внедрения решения.

Когда использовать: Вообще, у BPMN довольно широкий спектр применения.

В контексте описания требований, чаще всего эта нотация используется для описания взаимодействий пользователей с системой и между собой. Становится видно, какие операции выполняет пользователь, а какие – система, и в какой последовательности. Можно показать процессы обработки ошибок.

При разработке BPMN-диаграмм (в контексте описания требований) главное – избавиться от перфекционизма.

Ваша основная задача – передать информацию, которой вы владеете, команде разработки с минимальными искажениями.

Качество ваших диаграмм будет зависеть от количества ранее созданных (волшебной пилюли, увы, здесь нет). На начальных этапах советую использовать базовые элементы:

  • Start/End Events – начальное и конечное события.
  • Activity – Действие, которое выполняет пользователь или система.
  • Gates – Шлюзы. Используются для принятия решений и запуска параллельных процессов.
  • Lanes – Дорожки, которые разграничивают разные типы пользователей и системы.

Пример описания бизнес-процесса обработки инцидентов:

Если вам интересна отдельная статья про примеры построения BPMN-диаграмм на реальных примерах, напишите об этом в комментариях.

Зачем нужна: показывает как объект переходит из одного состояния в другое.

Когда использовать:

  • У объекта много состояний (2+), логика переходов зависит от определенных событий.
  • С объектом могут совершать действия сразу несколько пользователей (например, редактирование заказа). Это поможет выявить исключительные ситуации, которые можно заранее продумать, а не фиксить потом на production.

Как и схемы в BPMN, диаграмма состояний отлично читается и техническими специалистами, и бизнес-пользователями, и экспертами.

Пример диаграммы состояний для объекта «инцидент» из BPMN-диаграммы выше:

Требования

Требование – это документ вспомогательного характера, нужный для отправки каких-либо официальных требований. Представляет собой вид служебного письма.

Функции письма-требования

Документ фиксирует 2 ключевых положения:

  • Требование отправителя (к примеру, о возврате задолженности).
  • Меры, которые будут приняты при невыполнении требований.

То есть, документ имеет сразу несколько функций. Он служит инструментом для предъявления требований, а также является предупреждением получателя о будущих мерах воздействия.

Это официальный документ, который можно будет предъявить в суде для доказательства своей позиции. К примеру, он может доказывать, что отправитель предпринимал попытки договориться, урегулировать вопрос в досудебном порядке.

Особенности составления

Бумага составляется в свободной форме. Она может отличаться различной структурой и содержанием. Однако есть общие правила заполнения:

  • Деловой стиль и лаконичность.
  • Отсутствие двусмысленностей.
  • Исключена нецензурная лексика, излишняя эмоциональность, угрозы.
  • Приветствуется сжатое изложение информации.
  • Возможно ссылаться на документы, которые раскрывают суть дела (к примеру, договор, на основании которого предоставлялся займ).
  • Если составляется требование о возврате долга, нужно зафиксировать размер задолженности и реквизиты для возврата средств.

Требование отличается стандартной для деловых писем структурой:

  • Реквизиты документа.
  • Причина заполнения документа (к примеру, наличие задолженности).
  • Ссылки на законы, на основании которых сформировано требование.
  • Требование к получателю документа (к примеру, можно написать так: «требуем предоставить реквизиты»).
  • Срок исполнения требований.
  • Меры, предпринимаемые в случае игнорирования положений документа.
  • Подпись составителя и руководителя.

Если получатель не исполнит официально предъявленных требований, к нему предъявляются меры. Они могут быть самыми разными. Примеры: наложение штрафа в определенном размере, наложение ареста на имущество, обращение в суд, прекращение деловых отношений.

Письмо-требование обычно дополняется сопроводительной документацией. Это могут быть бумаги, являющиеся доказательством обоснованности требований. К примеру, договор займа. Текст письма можно сократить. В частности, допускается отсутствие преамбулы.

В одном письме должно быть одно требование. Если к одному лицу нужно предъявить несколько требований, составляется несколько писем.

Требование об уплате задолженности

Письма-требования могут составляться в самых разных обстоятельствах. Но самое распространенная ситуация – необходимость в возврате задолженности. Если дебитор не возвращает деньги, нужно напомнить о наличии долга. Рекомендуется использовать для этого именно официальный порядок. Письмо-требование, в отличие от обычной неофициальной переписки, можно будет предъявить в суде в качестве доказательства наличия попыток досудебного разбирательства.

Читайте также:
Частный процесс: что это такое, описание и особенности

Письмо-требование о возврате задолженности решает эти задачи:

  • Сохранение нормальных отношений с контрагентом.
  • Уточнение сроков возврата долга.
  • Эффективное досудебное разбирательство, избежание судебного разбирательства.
  • Возврат долга с наименьшими расходами.
  • Корректное уведомление должника о размере долга и сроках его возврата.
  • Эффективное взаимодействие с дебиторами организации.

Ответом на письмо-требование могут быть следующие меры дебитора:

  • Выплата задолженности.
  • Составление гарантийного письма с указанием точных сроков возврата.
  • Письмо с сообщением о том, что дебитор не может вернуть долг в указанные сроки.

К письму-требованию можно приложить расчет пени, которые начислены за период просрочки.

К СВЕДЕНИЮ! Требование рекомендуется отправлять ценным письмом. Потребуется отметка о вручении и опись вложения. Эти дополнения нужны для подтверждения того, что документ на самом деле был отправлен дебитору.

ВАЖНО! Требование должно быть рассмотрено в течение 30 дней. Этот срок отсчитывается с момента получения документа. Если в течение этого времени дебитор не рассмотрел письмо, кредитор может отправляться в суд.

WEBURSITET.RU

Онлайн-курсы профессиональной разработки ПО

Виды требований к программному продукту

Текстовая расшифровка третьего видеоурока курса Введение в профессию аналитика.

Давайте более подробно рассмотрим виды требований, и будем при этом пользоваться классификацией Вигерса. Возможно, многие из вас уже с этой классификацией знакомы. Я для каждого вида требований приведу пример.

Вот эта картинка Вигерса, о которой я уже говорил, и на которой он перечислил различные виды требований. Эти названия уже, пожалуй, общеприняты. Большинство аналитиков их понимает, но иногда путаются. Давайте мы по ним пройдёмся.

В курсе будет эта терминология использоваться довольно активно, потому что когда мы будем говорить о методах разработки требований, мы всегда будем подразумевать определенный вид требований в соответствии с этой классификацией.

Самый первый вид требований: . Что это такое, обобщённо? Описание высокоуровневых целей организации или заказчика, достигаемых посредством разрабатываемой системы.

Я понимаю, что эти определения несколько суконным языком написаны. Но я взял их из книги Вигерса, и мы попробуем перевести их на простой человеческий язык.

Что дает описание бизнес требований? Описывает , без реализации которой продукт не будет нужен потребителю. Это описание тех самых проблем и возможностей, для решения или реализации которых создается продукт.

Например, если мы разрабатываем сайт поиска авиабилетов, мы можем описать в , какие возможности он предоставляет.

Например, посетителю сайта он обеспечивает возможность подобрать оптимальный по цене маршрут, чтобы сэкономить деньги. Также позволяет сэкономить время планирования поездки, потому что поиск авиабилетов на разных сайтах разных авиакомпаний и их сравнение всегда требует большого количества времени. Поэтому многие пользуются подобными сервисами именно для того, чтобы сэкономить время.

Авиакомпаниям дает возможность использовать дополнительный канал продаж авиабилетов. Владельцу сайта дополнительно может дать возможность продавать на сайте ещё. Например, дополнительные услуги для путешественников — бронирование машин, заказ гостиниц, заказ такси и так далее.

Вполне можно включить такой перечень возможностей в Концепцию, и эти будут определять образ нашего продукта в целом и влиять на способ его разработки.

Тут я должен сделать оговорку, и я её сделаю ещё не раз в этом модуле, что те примеры, которые я привожу, достаточно искусственны в том смысле, что они не похожи на реальные формулировки требований в реальных документах. Но мы будем изучать собственно методы разработки , и там мы поймем, что за этими формулировками стоит перечень заинтересованных лиц (в данном случае вот они перечислены: посетитель сайта, авиакомпания, владелец сайта — это всё заинтересованные лица), перечень предоставляемых возможностей, а за этими возможностями стоят проблемы, которые решает сайт.

В конечном итоге при описании требований они будут выглядеть несколько иначе. Но для того, чтобы понять, что стоит за этим видом требований, я привел такой пример. В данном случае этот перечень возможностей — к сайту поиска авиабилетов.

Часто путают с , потому что они начинаются со слова «бизнес». Что понимается под ? Положение, определяющее или ограничивающее стороны бизнеса. Я не буду перечитывать то, что написано у Вигерса, а лучше сразу покажу на примерах, что за этим стоит.

За этим стоят, , документы, регламентирующие на уровне законов или отраслевых стандартов (или ещё стандартов) то, как должен работать наш продукт. Если, например, мы разрабатываем банковскую систему, то там есть огромное количество правил, которые генерируют Центробанки. Если говорить о России, то это наш Центральный Банк, который выпускает различные инструкции, и банковская система должны обязательно им следовать.

Это законы. Сейчас это становится более актуальным для в нашей стране, потому что выпускается всё больше законов, регулирующих эту отрасль.

Это могут быть ещё общепринятые или стандартные функции и алгоритмы, которые должны быть реализованы в системе. Ну, первое что приходит в голову, — например, алгоритм расчёта НДС, который тоже является .

То есть, ещё раз, это такие требования, принятые в практике бизнеса, либо в законодательстве, либо в отрасли, которые мы в любом случае должны исполнять при реализации нашей системы.

Ну вот, собственно, пример, ставший актуальным как раз в этом году, и ещё не все об этом знают. Были приняты два федеральных закона, которые затрагивают практически все сайты, используемые для продаж .

, закон о персональных данных, накладывающий требования по реализации определенных функций на сайте, и не только на сайте. То есть сайт должен учитывать требования закона при хранении и обработке персональных данных покупателей.

И второй закон, который тоже был принят в этом году. Если продается на сайте с использованием электронных денег или банковских карт, то к сайту должна быть подключена .

Вот простой и очевидный пример того, как влияют собственно на требования к сайту. Вы понимаете, что за этими будут стоять более детализированные требования к тому, как эти правила реализовать — интерфейсы, функции, определённое поведение сайта в разных ситуациях.

Читайте также:
Какие нужны документы для регистрации ООО?

Следующий вид требований: пользовательские требования.

Это большой класс требований. Я его, наверное, достаточно подробно описал, когда говорил о втором — пользовательском — уровне требований. Описывает конкретный способ использования продукта конечным пользователем.

Как я уже сказал, основная масса существующих методов разработки требований относится именно к этому уровню. Use Cases, User Stories, «персоны» и ещё некоторые методы, не так часто используемые. Лучше всего проработанные, концептуально завершенные, они как раз относятся к уровню взаимодействия людей с продуктом. Но это естественно, потому что продукты, в основном, до сих пор создаются для людей.

Здесь может быть очень много разных примеров. Я даже не стал их детализировать.

Например, мы можем описать пошаговый сценарий покупки авиабилета на выбранный маршрут, и сам этот сценарий, собственно, и будет формой представления пользовательских требований.

Мы можем описать требования в виде набора user stories, например, для . Если я хочу выполнить покупку на сайте , то мне нужно будет реализовать user stories для сравнения товаров, для добавления в корзину, для управления корзиной и оформления заказа, для . Каждая user story имеет определенный формат, который не представлен на этом слайде.

Каждая user story — это такой единичный кусок, unit при разработке требований, обладающий своими собственными характеристиками, и разработанный по определённому методу.

Это всё примеры пользовательских требований. Их может быть ещё больше, как я говорил, но этих достаточно, я думаю, для понимания.

Атрибуты качества. Более детально мы атрибуты качества рассмотрим ещё сегодня на этом вебинаре.

Что за этим стоит? Свойство продукта, выраженное через описание характеристик, важных для пользователей или разработчиков. Тоже несколько суконное определение.

Есть понятие качества программного обеспечения или качества программного продукта. Для него есть стандарты, там есть своя теория, есть методы определения качества, его оценки, обеспечения качества. И за этим стоит множество разных точек зрения на то, как должен работать программный продукт.

Мы сегодня эти точки зрения рассмотрим на этом вебинаре, а пока три примера, которые разные точки зрения представляют.

Я снова делаю оговорку: то, что здесь написано, это не сами атрибуты качества, а то, как могут выглядеть требования, которые эти атрибуты качества представляют по отношению к создаваемому продукту.

Например, время загрузки главной страницы и карточки товара не должно превышать 3 секунд при нагрузке до 20 посетителей в минуту. Это требование отражает атрибуты качества «производительность» и «надёжность». Производительность — это время загрузки страницы, а надёжность — это какую нагрузку должен держать сайт.

База данных сайта должна устанавливаться на сервера mysql или MS SQL Server или Oracle без необходимости внесения изменений в установочные скрипты. Это, опять же, конкретное представление требования, которое отражает такой атрибут качества как «переносимость». Мы можем наш разработанный сайт устанавливать в разном окружении, и при этом должны быть реализованы эти требования, чтобы мы могли использовать разные системы баз данных.

Сайт должен быть адаптирован для мобильных устройств. Это может вам показаться спорным, но это требования тоже отражают атрибут качества. Удобство использования тоже является атрибутом качества. Сейчас он больше известен под словом «юзабилити», которое в стандарте последнем так и переведено: «удобство использования».

Эти три примера, конечно, совсем не отражают всё многообразие атрибутов качества, но мы на это многообразие сегодня ещё посмотрим. Пока для нас важно только, что стоит за этим за этим видом требований.

Я должен сказать, что книга Вигерса уже выдержала три издания, и он в каждом издании эту картинку немножко меняет. Он перемещает отдельные виды требований между разными уровнями, он иногда меняет зависимости между ними. Это нормально, и это отражает тот факт, что в все требования на самом деле связаны друг с другом. Почему я об этом вспомнил: потому что раньше у него находились на втором уровне, а сейчас он их поднял наверх, на уровень .

Следующий вид требований — это ограничения. Условия, которые модифицируют требование или набор требований, сужая выбор возможных решений. Обычно это внешние по отношению к системе условия или принятые ранее решения.

Мы лучше всего знаем, наверное, ограничения технические, которые часто отражаются в ТЗ, исходя из имеющихся возможностей заказчика или разработчика.

Например: сервер приложений сайта должен разрабатываться на языке Java. Почему? А потому что, например, у заказчика есть множество специалистов, которые могут эту джаву сопровождать, и все другие его сервера приложений тоже работают в этом окружении.

Или похожий пример: сайт должен устанавливаться на определенную версию операционной системы.

Это самые простые виды ограничений, бывают и более сложные. Это ограничения, которые мы должны учитывать ещё до начала разработки системы, и они сужают область возможных решений в процессе её разработки.

Внешние интерфейсы. Описание интерфейса между системой и пользователем, другой системой или оборудованием.

Этот вид требований становится все более актуальным в эпоху интернета, потому что сейчас всё больше сращиваются друг с другом, находят интерфейсы для взаимодействия и, в общем, представляют всё более единую среду. Если в эпоху первых больших машин этот вид требований был не очень актуален, то сейчас он иногда даже начинает замещать и вытеснять пользовательские требования. Я говорил, что большинство систем до сих пор разрабатывается для людей, но уже появляются системы, которые разрабатываются для взаимодействия машин друг с другом. Поэтому внешние интерфейсы становятся всё более важный частью требований.

Ну например, что это может быть.

Спецификации взаимодействия с платежным агрегатором для оплаты на сайте — тоже распространённый внешний интерфейс. Если вы принимаете оплату в любом , то должен быть реализован такой интерфейс взаимодействия с платежным агрегатором. Это определенная спецификация передачи данных, и она собой представляет описание внешнего интерфейса.

Читайте также:
Можно ли лишить родительских прав умственно отсталого?

Ещё пример: протокол взаимодействия с сервером транспортной компании для резервирования и оплаты билетов. Уже приведенный пример для авиакомпаний: единая точка для возможности сравнить и купить билеты разных авиакомпаний. Для такого сервиса очень важными тоже являются внешние интерфейсы взаимодействия с разными внешними сервисами резервирования и оплаты билетов.

Системные требования — это самый запутанный вид требований у Вигерса. Он, , пишет, что тоже взял его из других документов. В книге системные требования упоминаются только в самом начале и в одной из глав книги, посвященной архитектуре. Поэтому в результате под системными требованиями люди понимают всё, что угодно.

В оригинале это требования к продукту, содержащему несколько подсистем. То есть это некоторые требования, которые описывают то, как эти подсистемы должны между собой взаимодействовать.

Я знаю, что во многих компаниях термин «системные требования» используется для всего третьего уровня требований. Практически все знают, что такое бизнес-требования , что такое пользовательские требования тоже все прекрасно понимают. А вот на этом (третьем) уровне я предлагаю использовать термин «требования к реализации», Вигерс предлагает использовать термин «функциональные требования», но я знаю несколько компаний, где для обозначения этого всего использовуют термин «системные требования».

Но, тем не менее, если мы придерживаемся терминологии Вигерса, то можно привести такие примеры системных требований, то есть именно требований к системе, состоящей из нескольких подсистем.

Доступ к операциям со счётом (речь идет об ) должен обеспечиваться через единый сервер приложений, с которым взаимодействуют клиентские приложения, три разных: в браузере пользователя, либо в мобильном приложении на телефоне, либо в отдельном , которое запускается на компьютере пользователя (обычно это обеспечивает более высокую защиту с использованием ключей, и поэтому даёт больше возможностей в управлении своим счётом). В данном случае это требование описывает систему в целом, и нам становится понятно, что у нас есть разные варианты клиентской части приложения, но все эти варианты должны работать с единым сервером.

Функциональные требования. Я говорил, что мне не нравится называть так целый уровень требований именно потому, что в этом случае он перемешивается вот с этим видом требований, и получается некоторая путаница.

На самом деле, в это яйцо на картинке Вигерса включается всё, что не попало в остальные виды требований. Это описание требований к системе в разнообразных форматах, которые, собственно, описывают, как она должна функционировать.

Если прочитать определение Вигерса, это «описание функциональности, которая должна быть реализована в разрабатываемой системе, чтобы пользователь мог выполнить свои задачи в рамках ». Нам станет чуть более понятным, почему здесь присутствует слово «функциональные» сегодня, когда мы вспомним, что такое автоматизированные системы.

Давайте пока просто на примеры посмотрим. Но эти примеры, наверное, не отражают и на пять процентов (а может быть, и на один процент) всё разнообразие методов представления этих требований, потому что они очень сильно зависят от разрабатываемой системы.

Например, на сайте должен быть реализован поиск статей по ключевым словам и по проставляемым тегам. Это дает нам требования к поиску или, собственно, к функции «поиск» — что должно быть реализовано на сайте.

Ещё пример: операции оплаты со счёта должны быть доступны только с использованием двухфакторной авторизации. Тоже функциональное требование, которая ограничивает нас в реализации разных видов операций работы со счётом в .

Может быть, это не самые лучшие примеры. Я честно признаюсь, что я очень долго думал над этим слайдом, но у меня просто мысль растекается, потому что, как я уже говорил, большинство требований, которые не укладываются в другие виды требований, можно назвать функциональными. Как правило, технические задания или спецификации требований состоят из множества предложений, каждое из которых можно отнести к функциональным требованиям.

Давайте мы на этом закончим обзор видов требований. Это такой очень верхнеуровневый обзор, который даёт только, собственно, определения. Так, чтобы в рамках курса, когда мы будем говорить о , вы их не путали с , или чтобы вы понимали, чем пользовательские требования отличается до внешних интерфейсов. В общем, эта часть просто задаёт определенную терминологию.

18. Разработка требований к программному обеспечению. Выявление и анализ требований. Спецификации требований. Управление изменениями требований.

Проблемы, которые приходится решать специалистам в процессе создания программного обеспечения, обычно очень сложны. Природа этих проблем не всегда ясна, особенно если разрабатываемая программная система инновационная. В частности, трудно четко описать те действия, которые должна выполнять система. Описание функциональных возможностей и ограничений, накладываемых на программную систему, называется требованиями к этой системе, а сам процесс формирования, анализа, документирования и проверки этих функциональных возможностей и ограничений — разработкой требований (requirements engineering).

Термин требования (к программной системе) может трактоваться по-разному. В некоторых случаях под требованиями понимаются высокоуровневые обобщенные утверждения о функциональных возможностях и ограничениях системы. Другая крайняя ситуация— детализированное математическое формальное описание системных функций

Например, если компания хочет выиграть контракт на разработку большого программного проекта, она вынуждена, пока решение не принято, представлять требования в самом обобщенном виде, чтобы, с одной стороны, удовлетворить требования заказчика, а с другой — иметь возможность для маневра при конкуренции с другими компаниями-разработчиками. После того как контракт выигран, компания должна представить заказчику более подробное описание системы с указанием всех выполняемых ею функ­ций. В обеих ситуациях предоставляются документы, которые называются документированными требо­ваниями к системе.

На практике часто применяется подход, используемый в различных методологиях разработки ПО и базирующийся на определении групп требований к продукту. Такой подход обычно включает группы (типы, категории) требований, например: системные, программные, функциональные, нефункциональные (в частности, атрибуты качества) и т.п.

Некоторые проблемы, возникающие в процессе разработки требований, порождены отсутствием четкого понимания различия между этими разными уровнями требований. Чтобы различить требования разных уровней, здесь используются термины пользователь­ские требования (user requirements) для обозначения высокоуровневых обобщенных требований и системные требования (system requirements) для детализированного описания вы­полняемых системой функций. Кроме требований этих двух уровней, применяется еще более детализированное описание системы — проектная системная спецификация (software design specification), которая может служить мостом между этапом разработки требований и этапом проектирования системы. Три перечисленных вида требований можно определить следующим образом.

Читайте также:
Судебные издержки: что это такое, описание и особенности

Пользовательские требования— описание на естественном языке (плюс поясняющие диа­граммы) функций, выполняемых системой, и ограничений, накладываемых на нее.

Системные требования. — детализированное описание системных функций и ограниче­ний, которое иногда называют функциональной спецификацией. Она служит основой для заключения контракта между покупателем системы и разработчиками ПО.

Проектная системная спецификация— обобщенное описание структуры программной системы, которое будет основой для более детализированного проектирования системы и се последующей реализации. Эта спецификация дополняет и детализи­рует спецификацию системных требований.

Различие между пользовательскими и системными требованиями показаны в примере, представленном примере 1. Здесь показано, как пользовательские требования могут быть преобразованы в системные.

Пример. Пользовательские и системные требования

Пользовательские требования

1. ПО должно предоставить средство доступа к внешним файлам, созданным в других программах.

Спецификация системных требований

Пользователь должен иметь возможность определять тип внешних файлов.

Для каждого типа внешнего файла должно иметься соответствующее средство, при­менимое к этому типу файлов.

Внешний файл каждого типа должен быть представлен соответствующей пикто­граммой на дисплее пользователя.

Пользователю должна быть предоставлена возможность самому определять пикто­грамму для каждого типа внешних файлов.

При выборе пользователем пиктограммы, представляющей внешний файл, к этому файлу должно быть применено средство, ассоциированное с внешними файлами данного типа.

Пользовательские требования пишутся для заказчика ПО и для лица, заключающего контракт на разработку программной системы, причем они могут не иметь детальных технических знаний по разрабатываемой системе (рис. 4.2). Спецификация системных требований предназначена для руководящего технического состава компании-разработчика и для менеджеров проекта. Она также необходима заказчику ПО и субпод­рядчикам по разработке. Эти оба документа также предназначены для конечных пользо­вателей программной системы. Наконец, проектная системная спецификация является документом, который ориентирован на разработчиков ПО.

Выявление и анализ требований

Фаза с таким или сходным названием (чаще всего применяют термин «разработка требо­ваний») присутствует во всех известных моделях жизненного цикла. Более того, совре­менные тенденции в технологии программирования таковы, что данная фаза все чаще рас­сматривается не только как первая, но и как главная, а иногда и решающая фаза жизнен­ного цикла. Дело в том, что заметные успехи технологии программирования позволяют, при наличии адекватных требований, организовать выполнение других фаз, если и не как автоматический, то, во всяком случае, как управляемый и измеримый процесс. Другими словами, если современные программисты точно знают, что именно нужно сделать, они это, скорее всего, сделают. Верно и обратное: если требования к программному обеспече­нию не определены, или недостаточно определены, то, скорее всего, успешной разработка не будет. Об этом свидетельствует статистика, собранная при анализе проведения проек­тов — большая часть причин неуспешного выполнения конкретных проектов была квали­фицирована как ошибки или недоработки на фазе анализа требований.

Схема разработки требований

Разработка требований это первая из основных фаз процесса создания программных сис­тем. Этот фаза состоит из следующих основных работ (рис. 5).

Анализ предметной области. Позволяет выделить сущности предметной области, определить первоначальные требования к функциональности и определить грани­цы проекта.

Анализ осуществимости. Должен выполняться для новых программных систем. На основании анализа предметной области, общего описания системы и ее назна­чения принимается решение о продолжении или завершении проекта.

Формирование и анализ требований. Взаимодействуя с пользователями, обсуж­дая и анализируя с ними задачи, возлагаемые на систему, разрабатывая модели и прототипы, разработчики формулируют пользовательские требования.

Документирование требований. Сформированные на предыдущем этапе пользо­вательские требования должны быть документированы. При этом нужно учесть, что основными читателями этого документа будут пользователи, поэтому основ­ными требованиями к нему будут ясность и понятность.

Детализация требований. Разработчики детализируют требования пользователей, формируя более точные подробные системные требования.

Согласование и утверждение требований. На этом этапе пользовательские и сис­темные требования должны быть оформлены в виде единого документа, содержа­щего все функциональные и нефункциональные требования. Такой документ, обычно, называется спецификацией требований. Спецификация требований долж­на удовлетворять следующим характеристикам качества: корректность, однознач­ность, завершенность и согласованность.

На этапе анализа разрабатываются пользовательские и системные требования к про­граммной системе, которые оформляются в виде единого документа – спецификации тре­бований, – являющегося формальным соглашением заказчика с разработчиком системы. Практика показывает, что требования к разрабатываемой программной системе часто из­меняются. Это обусловлено тем, что разработка программной системы довольно дли­тельный процесс, во время которого:

понимание пользователями возможностей системы, решаемых ею задач, может из­мениться;

происходят изменения в деловой среде, техническом, программном и другом обес­печении системы, которые должны быть учтены;

понимание разработчиками поставленных перед ними задач меняется.

Под управлением требованиями понимают все действия, направленные на поддержание целостности, точности и актуальности спецификации требований в процессе разработки программной системы.

К действиям по управлению требованиями относятся:

определение основной (базовой) версии спецификации требований для конкретной версии продукта;

анализ предлагаемых изменений требований, оценка воздействия и стоимости каж­дого изменения до его принятия;

включение одобренных изменений при помощи определенной процедуры;

согласование плана проекта с требованиями;

отслеживание отдельных требований от проектирования до кода приложения и его тестирования;

отслеживание статуса требований и действий по изменению на протяжении всего проекта.

В организации (или в проекте) должны быть определены действия по управлению требо­ваниями. Эти действия должны быть документированы и должны выполняться всеми уча­стниками проекта. При разработке процесса нужно определить:

методы и средства управления версиями спецификации и отдельных требований;

процесс разработки, согласования, экспертизы и утверждения базовой версии;

процесс присвоения, контроля и изменения статуса требования;

процесс передачи новых требований и изменений существующих требований заин­тересованным лицам;

Читайте также:
Субъект РФ: что это такое, описание и особенности

методы анализа влияния и стоимости внесения изменения.

Кроме этого описание процесса должно содержать определение участников проекта, от­ветственных за выполнение каждой конкретной задачи.

Минимальной единицей управления в спецификации требований является отдельное тре­бование, поэтому вопрос идентификации требования достаточно важен. Форма представления требования может быть различной (текстовая, графическая и т.д.), поэтому для идентификации требования обычно используют связанный с ним набор атри­бутов. Атрибутами могут быть: дата создания требования, номер текущей версии требо­вания, номер версии продукта, для которой предназначено требование, автор требования, ответственный за реализацию требования, состояние требования, происхождение и обос­нование требования, подсистема, для которой предназначено требование и т.д. Главное при выборе атрибутов, чтобы они однозначно идентифицировали требование и его со­стояние.

В процессе выполнения проекта требование, обычно, изменяет свое состояние от началь­ного («предложено»), до конечного, например, «реализовано». Состояния требований по­зволяет оценить степень готовности проекта. Рекомендуются использовать состояния тре­бования, приведенные в табл. 1.

Таблица 1. Состояния требования

Определение

Требование запрошено авторизированным источником

Требование проанализировано, его влияние на проект просчитано, и оно было размещено в базовой версии определенной версии продукта. Клю­чевые заинтересованные в проекте лица согласились с этим требованием, а разработчики обязались его реализовать.

Код, реализующий требование разработан, написан и протестирован. Требование отслежено до соответствующих элементов дизайна и кода.

Корректное функционирование реализованного требования подтвержде­но в соответствующем продукте. Требование отслежено до соответст­вующих вариантов тестирования. Теперь требование считается выпол­ненным.

Утвержденное требование удалено из базовой версии. Следует зафикси­ровать причины и лицо, принявшее это решение.

Требование предложено, но не запланировано для реализации ни в одной из будущих версий. Следует зафиксировать причины и лицо, принявшее это решение.

В процессе управления требованиями должны быть определены лица, которые могут из­менить состояние требования. Управление статусом позволяет численно определить сте­пень готовности проекта, считая, например, что основная часть работы закончена, если все требования имеют состояние «Проверено» или «Удалено».

После разработки, согласования и утверждения спецификация требований становится ос­новным документом в проектировании системы (версии системы). Изменения в этот до­кумент разрешается вносить только через определенный в организации (или проекте) процесс внесения изменений.

Диаграмма состояний для типового процесса внесения изменений в спецификацию приве­дена на рис. 6.

Требования к программной системе часто классифицируются как функциональные, нефункциональные и требования предметной области.

Функциональные требования задают “что” система должна делать; нефункциональные – с соблюдением “каких условий” (например, скорость отклика при выполнении заданной операции); часто функциональные требования представляют в виде сценариев (вариантов использования) Use Сase.

Функциональные требования. Это перечень сервисов, которые должна выполнять система, причем должно быть указано, как система реагирует на те или иные вход­ные данные, как она ведет себя в определенных ситуациях и т.д. В некоторых слу­чаях указывается, что система не должна делать.

Нефункциональные требования. Описывают характеристики системы и ее окружения, а не поведение системы. Здесь также может быть приведен перечень ограничений, накладываемых на действия и функции, выполняемые системой. Они включают временные ограничения, ограничения на процесс разработки системы, стандарты и тд.

Требования предметной области. Характеризуют ту предметную область, где будет эксплуатироваться система. Эти требования могут быть функциональными и не­функциональными.

В действительности четкой границы между этими типами требований не существует. Например, пользовательские требования, касающиеся безопасности системы, можно отнести к нефункциональным. Однако при более детальном рассмотрении такое требование можно отнести к функциональным, поскольку оно порождает необходимость включения в систему средства авторизации пользователя. Поэтому, рассматривая далее эти виды требований, мы должны всегда помнить, что данная классификация в значительной степени искусственна.

Группа функциональных требований

Бизнес-требования (Business Requirements) – определяют высокоуровневые цели организации или клиента (потребителя) – заказчика разрабатываемого программного обеспечения.

Пользовательские требования (User Requirements) – описывают цели/задачи пользователей системы, которые должны достигаться/выполняться пользователями при помощи создаваемой программной системы. Эти требования часто представляют в виде вариантов использования (Use Cases).

Функциональные требования (Functional Requirements) – определяют функциональность (поведение) программной системы, которая должна быть создана разработчиками для предоставления возможности выполнения пользователями своих обязанностей в рамках бизнес-требований и в контексте пользовательских требований.

Группа нефункциональных требований (Non-Functional Requirements)

Бизнес-правила (Business Rules) – включают или связаны с корпоративными регламентами, политиками, стандартами, законодательными актами, внутрикорпоративными инициативами (например, стремление достичь зрелости процессов по CMMI 4-го уровня), учетными практиками, алгоритмами вычислений и т.д. На самом деле, достаточно часто можно видеть недостаточное внимание такого рода требованиям со стороны сотрудников ИТ-департаментов и, в частности, технических специалистов, вовлеченных в проект. Business Rules Group дает понимание бизнес-правила, как “положения, которые определяют или ограничивают некоторые аспекты бизнеса. Они подразумевают организацию структуры бизнеса, контролируют или влияют на поведение бизнеса”. Бизнес-правила часто определяют распределение ответственности в системе, отвечая на вопрос “кто будет осуществлять конкретный вариант, сценарий использования” или диктуют появление некоторых функциональных требований. В контексте дисциплины управления проектами (уже вне проекта разработки программного обеспечения, но выполнения бизнес-проектов и бизнес-процессов) такие правила обладают высокой значимостью и, именно они, часто определяют ограничения бизнес-проектов, для автоматизации которых создается соответствующее программное обеспечение.

Внешние интерфейсы (External Interfaces) – часто подменяются “пользовательским интерфейсом”. На самом деле вопросы организации пользовательского интерфейса безусловно важны в данной категории требований, однако, конкретизация аспектов взаимодействия с другими системами, операционной средой (например, запись в журнал событий операционной системы), возможностями мониторинга при эксплуатации – все это не столько функциональные требования (к которым ошибочно приписывают иногда такие характеристики), сколько вопросы интерфейсов, так как функциональные требования связаны непосредственно с функциональностью системы, направленной на решение бизнес-потребностей.

Атрибуты качества (Quality Attributes) – описывают дополнительные характеристики продукта в различных “измерениях”, важных для пользователей и/или разработчиков. Атрибуты касаются вопросов портируемости, интероперабельности (прозрачности взаимодействия с другими системами), целостности, устойчивости и т.п.

Ограничения (Constraints) – формулировки условий, модифицирующих требования или наборы требований, сужая выбор возможных решений по их реализации. В частности, к ним могут относиться параметры производительности, влияющие на выбор платформы реализации и/или развертывания (протоколы, серверы приложений, баз данных, . ), которые, в свою очередь, могут относиться, например, к внешним интерфейсам.

Читайте также:
Обращение взыскания на заложенное имущество

Системные требования (System Requirements) – иногда классифицируются как составная часть группы функциональных требований (не путайте с как таковыми “функциональными требованиями”). Описывают высокоуровневые требования к программному обеспечению, содержащему несколько или много взаимосвязанных подсистем и приложений. При этом, система может быть как целиком программной, так и состоять из программной и аппаратной частей. В общем случае, частью системы может быть персонал, выполняющий определенные функциисистемы, например, авторизация выполнения определенных операций с использованием программно-аппаратных подсистем.

Управление требованиями

Проблема

Например, строители строят дома, пусть разные: многоэтажные, отдельные коттеджи, офисные здания и пр. – однако, весь этот спектр вполне может охватить одна компания. Но все это дома. Строительной компании не приходится строить летающую тарелку, гиперболоид инженера Гарина, луноход , систему мгновенной телепортации и пр. А разработчики ПО , во многом, находятся именно в таком положении.

Велико разнообразие систем, которые создает одна компания, одна команда . Хотя сейчас и намечаются тенденции к специализации рынка разработки ПО , однако, причуды мировой экономики и многие другие причины приводят к тому, что строго специализированных компаний не так много, как хотелось бы. Многие области испытывают большой дефицит отдельных программистов и целых коллективов и компаний, хорошо разбирающихся в их специфике. Примером такой области может служить телевидение, где о данной проблеме открыто говорят на заседаниях различных международных сообществ.

Кроме того, ПО продолжает проникать во все новые и новые области человеческой деятельности , и сформулировать адекватные требования в этом случае вообще оказывается супертрудной задачей.

Но даже если речь идет об одной, определенной области, то процент новых, уникальных черт систем, принадлежащих этой области, высок: по сочетанию пользовательских характеристик, по особенностям среды исполнения и требованиям к интеграции , по распределенности информации о требованиях среди работников компании-заказчика. Все это несет на себе очень большой отпечаток индивидуальности заказчика – персональной или его компании, – сильно связано со спецификой его бизнеса, используемого в этой области оборудования.

Кроме того, существуют трудности в понимании между заказчиком и программистами, а еще – в изменчивости ПО (требования имеют тенденцию меняться в ходе разработки).

В итоге, далеко не очевидно, что та система, которую хочет заказчик, вообще может быть сделана. Трудно найти черную кошку в темной комнате, особенно если ее там нет. Или то, как поняли и воплотили задачу разработчики, окажется удобным, востребованным на рынке.

Ошибки и разночтения, которые возникают при выявлении требований к системе, оказываются одними из самых дорогих. Требования – это то исходное понимание задачи разработчиками, которое является основой всей разработки.

Несколько слов о трудности взаимопонимания заказчика и разработчиков. Здесь сказывается большой разрыв между программистами и другими людьми. Во-первых, потому, что чтобы хорошо разобраться, какой должна быть система автоматизации больницы и система поддержки химических экспериментов – надо поработать в соответствующей области достаточное время. Или как-то иным способом научиться видеть проблемы данной предметной области изнутри. Во-вторых, сказывается специфичность программирования как сферы деятельности . Для большинства пользователей и заказчиков крайне не просто сформулировать точное знание , которое необходимо программистам. На вопрос, сколько типов анализов существует в вашей лаборатории, доктор, подумав, отвечает – 43. И уже потом, случайно, программист уточнил, а нет ли других типов? Конечно, есть, ответил доктор, только они случаются редко и могут быть в некотором смысле, какими угодно. В первый же раз он назвал лишь типовые. Но, конечно же, информационная система должна хранить информацию обо всех анализах, проведенных в лаборатории….

Теперь чуть подробнее об изменчивости ПО и ее причинах.

  • Меняется ситуация на рынке, для которого предназначалась система или требования к системе ползут из-за быстро сменяющихся перспектив продажи еще неготовой системы.
  • В ходе разработки возникают проблемы и трудности, в силу которых итоговая функциональность меняется (видоизменяется, урезается).
  • Заказчик может менять свое собственное видение системы: то ли он лучше понимает, что же ему на самом деле надо, то ли выясняется, что он что-то упустил с самого начала, то ли выясняется, что разработчики его не так поняли. В общем, всякое бывает, важно лишь, что теперь заказчик определенно хочет иного.

Нечего и говорить, что изменчивость требований по ходу разработки очень болезненно сказывается на продукте. Авторы сталкивались, например, с такой ситуацией, что еще не созданную систему отдел продаж начинает активно продавать, в силу чего поступает огромный поток дополнительных требований. Все их реализовать в полном объеме не удается, в итоге система оказывается набором демо-функциональности….

Виды и свойства требований

Разделим требования на две большие группы – функциональные и нефункциональные.

Функциональные требования являются детальным описанием поведения и сервисов системы, ее функционала. Они определяют то, что система должна уметь делать.

Нефункциональные требования не являются описанием функций системы. Этот вид требований описывает такие характеристики системы, как надежность , особенности поставки (наличие инсталлятора, документации), определенный уровень качества (например, для новой Java-машины это будет означать, что она удовлетворяет набору тестов, поддерживаемому компанией Sun ). Сюда же могут относиться требования на средства и процесс разработки системы, требования к переносимости , соответствию стандартам и т.д. Требования этого вида часто относятся ко всей системе в целом. На практике, особенно начинающие специалисты, часто забывают про некоторые важные нефункциональные требования.

Сформулируем ряд важных свойств требований.

  • Ясность, недвусмысленность — однозначность понимания требований заказчиком и разработчиками. Часто этого трудно достичь, поскольку конечная формализация требований, выполненная с точки зрения потребностей дальнейшей разработки, трудна для восприятия заказчиком или специалистом предметной области , которые должны проинспектировать правильность формализации.
  • Полнота и непротиворечивость.
  • Необходимый уровень детализации. Требования должны обладать ясно осознаваемым уровнем детализации , стилем описания, способом формализации: либо это описание свойств предметной области , для которой предназначается ПО, либо это техническое задание , которое прилагается к контракту, либо это проектная спецификация, которая должна быть уточнена в дальнейшем, при детальном проектировании. Либо это еще что-нибудь. Важно также ясно видеть и понимать тех, для кого данное описание требований предназначено, иначе не избежать недопонимания и последующих за этим трудностей. Ведь в разработке ПО задействовано много различных специалистов – инженеров, программистов, тестировщиков , представителей заказчика, возможно, будущих пользователей – и все они имеют разное образование, профессиональные навыки и специализацию, часто говорят на разных языках. Здесь также важно, чтобы требования были максимально абстрактны и независимы от реализации.
  • Прослеживаемость — важно видеть то или иное требование в различных моделях, документах, наконец, в коде системы. А то часто возникают вопросы типа – “Кто знает, почему мы решили, что такой-то модуль должен работать следующим образом ….?”. Прослеживаемость функциональных требований достигается путем их дробления на отдельные, элементарные требования, присвоение им идентификаторов и создание трассировочной модели, которая в идеале должна протягиваться до программного кода. Хочется например, знать, где нужно изменить код, если данное требование изменилось. На практике полная формальная прослеживаемость труднодостижима, поскольку логика и структура реализации системы могут сильно не совпадать с таковыми для модели требований. В итоге одно требование оказывается сильно “размазано” по коду, а тот или иной участок кода может влиять на много требований. Но стремиться к прослеживаемости необходимо, разумно совмещая формальные и неформальные подходы.
  • Тестируемость и проверяемость — необходимо, чтобы существовали способы оттестировать и проверить данное требование. Причем, важны оба аспекта, поскольку часто проверить-то заказчик может, а вот тестировать данное требование очень трудно или невозможно в виду ограниченности доступа (например, по соображениям безопасности) к окружению системы для команды разработчика. Итак, необходимы процедуры проверки –выполнение тестов, проведение инспекций, проведение формальной верификации части требований и пр. Нужно также определять “планку” качества (чем выше качество, тем оно дороже стоит!), а также критерии полноты проверок, чтобы выполняющие их и руководители проекта четко осознавали, что именно проверено, а что еще нет.
  • Модифицируемость. Определяет процедуры внесения изменений в требования.
Читайте также:
Уголовное право: что это такое, описание и особенности

Варианты формализации требований

Вообще говоря, требования как таковые – это некоторая абстракция . В реальной практике они всегда существуют в виде какого-то представления – документа, модели, формальной спецификации , списка и т.д. Требования важны как таковые, потому что оседают в виде понимания разработчиками нужд заказчика и будущих пользователей создаваемой системы. Но так как в программном проекте много различных аспектов, видов деятельности и фаз разработки, то это понимание может принимать очень разные представления. Каждое представление требований выполняет определенную задачу, например, служит “мостом”, фиксацией соглашения между разными группами специалистов, или используется для оперативного управления проектом (отслеживается, в какой фазе реализации находится то или иное требование, кто за него отвечает и пр.), или используется для верификации и модельно-ориентированного тестирования. И в первом, и во втором, и в третьем примере мы имеем дело с требованиями, но формализованы они будут по -разному.

Итак, формализация требований в проекте может быть очень разной – это зависит от его величины, принятого процесса разработки, используемых инструментальных средств, а также тех задач, которые решают формализованные требования. Более того, может существовать параллельно несколько формализаций, решающих различные задачи. Рассмотрим варианты.

  1. Неформальная постановка требований в переписке по электронной почте. Хорошо работает в небольших проектах, при вовлеченности заказчика в разработку (например, команда выполняет субподряд). Хорошо также при таком стиле, когда есть взаимопонимание между заказчиком и командой, то есть лишние формальности не требуются. Однако, электронные письма в такой ситуации часто оказываются важными документами – важно уметь вести деловую переписку, подводить итоги, хранить важные письма и пользоваться ими при разногласиях. Важно также вовремя понять, когда такой способ перестает работать и необходимы более формальные подходы.
  2. Требования в виде документа – описание предметной области и ее свойств, техническое задание как приложение к контракту, функциональная спецификация для разработчиков и т.д.
  3. Требования в виде графа с зависимостями в одном из средств поддержки требований ( IBM Rational RequisitePro, DOORS , Borland CaliberRM и нек. др.). Такое представление удобно при частом изменении требований, при отслеживании выполнения требований, при организации “привязки” к требованиям задач, людей, тестов, кода. Важно также, чтобы была возможность легко создавать такие графы из текстовых документов, и наоборот, создавать презентационные документы по таким графам.
  4. Формальная модель требований для верификации , модельно-ориентированного тестирования и т.д.

Итак, каждый способ представления требований должен отвечать на следующие вопросы: кто потребитель, пользователь этого представления, как именно, с какой целью это представление используется.

Некоторые ошибки при документировании требований. Перечислим ряд ошибок, встречающихся при составлении технических заданий и иных документов с требованиями.

  • Описание возможных решений вместо требований.
  • Нечеткие требования, которые не допускают однозначную проверку, оставляют недосказанности, имеют оттенок советов, обсуждений, рекомендаций: “Возможно, что имеет смысл реализовать также…..”, “и т.д.”.
  • Игнорирование аудитории, для которой предназначено представление требований . Например, если спецификацию составляет инженер заказчика, то часто встречается переизбыток информации об оборудовании, с которым должна работать программная система, отсутствует глоссарий терминов и определений основных понятий, используются многочисленные синонимы и т.д. Или допущен слишком большой уклон в сторону программирования, что делает данную спецификацию непонятной всем непрограммистам.
  • Пропуск важных аспектов, связанных с нефункциональными требованиями, в частности, информации об окружении системы, о сроках готовности других систем, с которыми должна взаимодействовать данная. Последнее случается, например, когда данная программная система является частью более крупного проекта. Типичны проблемы при создании программно-аппаратных систем, когда аппаратура не успевает вовремя и ПО невозможно тестировать, а в сроках и требованиях это не предусмотрено….

Цикл работы с требованиями

В своде знаний по программной инженерии SWEBOK определяются следующие виды деятельности при работе с требованиями.

Читайте также:
Узловая фотосъемка: что это такое, описание и особенности

Недостаток товара и существенный недостаток товара (понятия и отличия)

Основой нормативного регулирования отношений Покупателя и Продавца является закон «О защите прав потребителей».

Каждый потребитель знает, что при обнаружении в приобретенном товаре какого-то изъяна, если быть точнее, недостатка, он имеет право предъявить определенный круг требований к продавцу. Для определения вида предъявляемых требований, необходимо учитывать следующее.

Законодатель разделяет два таких понятия как «недостаток товара» и «существенный недостаток товара», имеющих большое значение при выборе порядка и способа защиты своих прав покупателем (потребителем), в случае продажи ему товара ненадлежащего качества.

Например, согласно статье 18 Закона «О защите прав потребителей» покупатель (потребитель) вправе потребовать от продавца расторжения договора купли-продажи технически сложного товара либо предъявить требование о его замене на товар этой же марки или на такой же товар другой марки с соответствующим перерасчетом покупной цены по истечении 15 дней с момента его приобретения только в случае наличия в таком товаре «существенного недостатка».

Таким образом, наличие несущественного (простого) недостатка в технически сложном товаре дает покупателю (потребителю) меньшее количество способов защиты своих прав (требование о соразмерном уменьшении покупной цены; требование о незамедлительном и безвозмездном устранении недостатков товара или возмещении расходов на их исправление), чем наличие существенного недостатка.

Согласно рассматриваемому закону, под недостатком товара понимается несоответствие товара обязательным требованиям, предусмотренным законом, либо условиям договора, либо обычно предъявляемым требованиям к такому товару, либо целям, для которых товар такого рода обычно используется либо целям, о которых продавец был поставлен в известность потребителем при заключении договора, либо товар, не соответствующий образцу и (или) описанию

Существенный же недостаток товара – это неустранимый недостаток или недостаток, который не может быть устранен без несоразмерных расходов или затрат времени, или выявляется неоднократно, или проявляется вновь после его устранения, или другие подобные недостатки.

Таким образом, «недостатком товара» является не только наличие в нем каких-либо дефектов (во внешнем виде, функциональном плане, и т.д.), но и иные признаки, свойства и характеристики товара, не позволяющие его использоваться в том объеме и для тех целей, для которых данный товар приобретен или обычно приобретается.

Например, такими недостатками могут быть:

— визуальные признаки (нарушение рисунка, изображения, расплывание краски и т.д.) в случае, когда визуальный внешний вид товара имеет значение для его эксплуатации;

— наличие каких-либо элементов, выступов, лишних деталей (когда наличие таких деталей препятствует, усложняет, либо делает невозможным использование товара по его прямому назначению, либо портит его внешний вид, если внешний вид имеет значение для эксплуатации товара);

— иные свойства товара, который хотя внешне предназначен для определенного использования и обычно используется для этого, но в силу наличия в нем таких свойств использоваться по назначению не может (например, одежда или элемент одежды, позиционируемые продавцом как такой объект, но фактически имеющие декоративный характер (кошелек без кармашков, шляпа, не приспособленная для носки, и т.д.);

В свою очередь «существенный недостаток товара» предполагает наличие в товаре каких-либо негативных свойств, препятствующих его эксплуатации в принципе.

Основными чертами существенного недостатка товара являются:

— невозможность устранения недостатка без несоразмерных расходов, при этом расходы на устранение такого недостатка приближены к стоимости или превышают стоимость самого товара либо выгоду, которая могла бы быть получена покупателем (потребителем) от его использования;

— невозможность устранения недостатка без несоразмерной затраты времени, при этом время, затрачиваемое на устранение такого недостатка, должно превышать установленный соглашением сторон в письменной форме срок и ограниченный 45 днями, а если такой срок соглашением сторон не определен,

— время, превышающее минимальный срок, объективно необходимый для устранения данного недостатка обычно применяемым способом;

— неоднократность выявленного недостатка, а именно совокупность различных недостатков всего товара, выявленных более одного раза, каждый из которых в отдельности делает товар не соответствующим обязательным требованиям, предусмотренным законом, либо условиям договора, либо условиям и требованиям, обычно предъявляемым к такому товару, и приводит к невозможности или недопустимости использования данного товара в целях, для которых товар такого рода обычно используется, или в целях, о которых продавец был поставлен в известность покупателем (потребителем) при заключении договора, или образцу и/или описанию товара при продаже товара по образцу и/или по описанию.

Под недостатком, который проявляется вновь после его устранения, понимается недостаток товара, повторно проявляющийся после проведения мероприятий по его устранению (ремонту товара).

неустранимость недостатка, при этом недостаток, не может быть устранен посредством проведения мероприятий по его устранению с целью приведения товара в состояние, соответствующее обязательным требованиям, предусмотренными законом, или условиями договора или требованиям, обычно предъявляемым к такому товару, приводящий к невозможности или недопустимости использования данного товара в целях, для которых товар такого рода обычно используется, или в целях, о которых продавец был поставлен в известность покупателем (потребителем) при заключении договора, или образцом и/или описанием при продаже товара по образцу и/или по описанию.

В случае несогласия Продавца товара в части доводов покупателя (потребителя) о наличии в товаре существенного недостатка (обычно Продавцом квалифицируются подобные недостатки как «простые»), как правило, назначается и проводится экспертиза товара, подтверждающая или опровергающая доводы покупателя (потребителя) о существенности недостатка товара.

Что же такое «Существенный недостаток» в автомобиле?

В виду своей предыдущей записи Почувствуй качество KIA The power to surprise! Или «Битва за гарантию» part #1., я бы хотел сказать пару слов о таком правовом понятии, как «Существенный недостаток».

Многие из нас уже знают, что автомобиль – это технически сложная техникатовар, т.к. входит в перечень, утвержденный правительством РФ, и отстаивать права потребителя в плане возврата или обмена автомобиля возможно лишь при наличии «существенного недостатка» — об этом нам говорят соответствующие статьи Закона РФ «О защите прав потребителей».

Читайте также:
Утрата трудоспособности: что это такое, описание и особенности

В самом Законе РФ «О защите прав потребителей» это понятие раскрыто весьма тривиально и очень сложно определить существенность того или иного недостатка:
«существенный недостаток товара (работы, услуги) — неустранимый недостаток или недостаток, который не может быть устранен без несоразмерных расходов или затрат времени, или выявляется неоднократно, или проявляется вновь после его устранения, или другие подобные недостатки;»

Что бы верно растолковать это понятие вышеуказанных знаний недостаточно, необходимо понимать более конкретно, что является, к примеру, неустранимым недостатком, несоразмерными затратами расходов или времени, и что является другими недостатками? Собственно, еще очень важен факт при каких обстоятельствах этот недостаток получен и на что он в последствии повлияет. Да, этого в самом Законе РФ «О защите прав потребителей» нет.

Именно поэтому я хотел бы рассказать о существенности недостатков подробнее:

Существенный недостаток товара (работы, услуги), недостаток технически сложного товара
13. Исходя из преамбулы и пункта 1 статьи 20 Закона о защите прав потребителей под существенным недостатком товара (работы, услуги), при возникновении которого наступают правовые последствия, предусмотренные статьями 18 и 29 Закона, следует понимать:
а) неустранимый недостаток товара (работы, услуги) — недостаток, который не может быть устранен посредством проведения мероприятий по его устранению с целью приведения товара (работы, услуги) в соответствие с обязательными требованиями, предусмотренными законом или в установленном им порядке, или условиями договора (при их отсутствии или неполноте условий — обычно предъявляемыми требованиями), приводящий к невозможности или недопустимости использования данного товара (работы, услуги) в целях, для которых товар (работа, услуга) такого рода обычно используется, или в целях, о которых продавец (исполнитель) был поставлен в известность потребителем при заключении договора, или образцом и (или) описанием при продаже товара по образцу и (или) по описанию;
б) недостаток товара (работы, услуги), который не может быть устранен без несоразмерных расходов, — недостаток, расходы на устранение которого приближены к стоимости или превышают стоимость самого товара (работы, услуги) либо выгоду, которая могла бы быть получена потребителем от его использования.
В отношении технически сложного товара несоразмерность расходов на устранение недостатков товара определяется судом исходя из особенностей товара, цены товара либо иных его свойств;
в) недостаток товара (работы, услуги), который не может быть устранен без несоразмерной затраты времени, — недостаток, на устранение которого затрачивается время, превышающее установленный соглашением сторон в письменной форме и ограниченный сорока пятью днями срок устранения недостатка товара, а если такой срок соглашением сторон не определен, — время, превышающее минимальный срок, объективно необходимый для устранения данного недостатка обычно применяемым способом;
г) недостаток товара (работы, услуги), выявленный неоднократно, — различные недостатки всего товара, выявленные более одного раза, каждый из которых в отдельности делает товар (работу, услугу) не соответствующим обязательным требованиям, предусмотренным законом или в установленном им порядке, либо условиям договора (при их отсутствии или неполноте условий — обычно предъявляемым требованиям) и приводит к невозможности или недопустимости использования данного товара (работы, услуги) в целях, для которых товар (работа, услуга) такого рода обычно используется, или в целях, о которых продавец (исполнитель) был поставлен в известность потребителем при заключении договора, или образцу и (или) описанию при продаже товара по образцу и (или) по описанию;
д) недостаток, который проявляется вновь после его устранения, — недостаток товара, повторно проявляющийся после проведения мероприятий по его устранению.
14. В отношении технически сложного товара в качестве недостатка товара по пункту 1 статьи 18 Закона о защите прав потребителей следует понимать различные недостатки товара, на устранение которых в совокупности затрачивается время, приводящее к невозможности использования товара (работы, услуги) более чем тридцать дней в течение каждого года гарантийного срока.

Хочу обратить внимание, что большинство специалистов заблуждаются в том, что «существенный недостаток» обязательно должен иметь серьезные неисправности, которые не позволяют полноценно использовать техникутовар (в данном случае автомобиль), но это не совсем не так.

Давайте разберем пару пунктиков:
а) неустранимый недостаток товара (работы, услуги) — недостаток, который не может быть устранен посредством проведения мероприятий по его устранению с целью приведения товара (работы, услуги) в соответствие с обязательными требованиями, предусмотренными законом или в установленном им порядке, или условиями договора (при их отсутствии или неполноте условий — обычно предъявляемыми требованиями), приводящий к невозможности или недопустимости использования данного товара (работы, услуги) в целях, для которых товар (работа, услуга) такого рода обычно используется, или в целях, о которых продавец (исполнитель) был поставлен в известность потребителем при заключении договора, или образцом и (или) описанием при продаже товара по образцу и (или) по описанию;

г) недостаток товара (работы, услуги), выявленный неоднократно, — различные недостатки всего товара, выявленные более одного раза, каждый из которых в отдельности делает товар (работу, услугу) не соответствующим обязательным требованиям, предусмотренным законом или в установленном им порядке, либо условиям договора (при их отсутствии или неполноте условий — обычно предъявляемым требованиям) и приводит к невозможности или недопустимости использования данного товара (работы, услуги) в целях, для которых товар (работа, услуга) такого рода обычно используется, или в целях, о которых продавец (исполнитель) был поставлен в известность потребителем при заключении договора, или образцу и (или) описанию при продаже товара по образцу и (или) по описанию;

Всё. Тут все предельно ясно написано. Остальные пункты в Пленуме имеют свое, независимое от этих пунктов, значение.

О несоразмерности затрат или времени, я напишу чуть позже, когда откопаю эти статьи. Будет полезно.
Спасибо.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: