Сценарий атрибута качества пример

Наиболее важные виды атрибуты внешнего качества и методика их формулирования

Как задавать требования к качеству ПО в цифрах?

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

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

Но в мире честных, открытых отношений выгоднее заранее обсудить эти аспекты, чем потом с удивлением спорить при сдаче, что система тормозит, в ТЗ про это ничего не сказано, «вы же профессионалы» и всё такое.

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

При этом остаётся прагматический вопрос — а что именно писать в требования, чтобы они были полезными, измеримыми, реализуемыми?

С точки зрения системной инженерии, требования к качеству программной системы являются разновидностью системных ограничений (constraints) и в этом они отличаются от требований к способностям (capabilities) системы, в мире ИТ обычно называемых «функциональными».

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

Давайте попробуем сделать это хотя бы ремеслом.

Кому и когда нужны требования
к качеству программной системы?

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

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

  1. Если вы работаете на стороне заказчика, нужно обезопасить себя от того, что система формально выполняет все необходимые функции, но работает слишком медленно, слишком неудобна для пользователя, теряются данные или, например, планировалась одновременная работа 1000 пользователей, а система может поддерживать максимум 100.
  2. Если вы работаете на стороне подрядчика, требуется аргументировано объяснить заказчику, почему при выборе определённого решения (более безопасного или более отказоустойчивого) стоимость или сроки разработки увеличиваются, какие плюсы заказчик получит в случае выбора этого решения, а также, нужно ли вообще для требуемой системы такое улучшение.
  3. Если вы поддерживаете/дорабатываете систему, нужно иметь возможность оценивать её, выявлять зоны развития и слабые места, при необходимости сравнивать с аналогичными продуктами конкурентов.
  4. В любом случае, если вы делаете требования к системе, нужно подчеркнуть необходимые моменты в спецификации для разработчика и поставить задачи так, чтобы быть уверенным, что ПО действительно будет отвечать поставленной цели, а не просто формально соответствовать спецификации.
  5. И заказчику, и подрядчику нужен список чётких, проверяемых, известных заранее критериев, которым должна соответствовать система, чтобы избежать споров при сдаче.

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

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

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

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

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

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

Самые полезные атрибуты качества

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

1. Важнейшие характеристики качества при эксплуатации (Run-Time), также называемого внешним качеством (external quality):

  • Производительность
  • Масштабируемость
  • Доступность
  • Надёжность
  • Информационная безопасность

2. Важнейшие характеристики качества при модернизации (Design-Time), также называемого внутренним качеством (internal quality):

  • Безошибочность кода
  • Изменяемость кода
  • Переносимость кода

3. Специалисты по пользовательским интерфейсам, человеко-машинному взаимодействию также предлагают характеристики качества, называемые «качество в использовании» (Quality in Use).

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

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

  • Результативность применения
  • Обучаемость
  • Эффективность применения
  • Точность применения
  • Утомляемость при применении
  • Удовлетворённость применения

В этой статье дальше мы рассмотрим только формулирование требований к первым 4-м аспектам внешнего качества.

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

Про качество в использовании также читайте в отдельной статье.

Пример требований
к внешнему качеству программной системы

4.4. Требования к внешнему качеству ПО (External Quality)

Раздел использует терминологию стандарта ГОСТ Р ИСО/МЭК 25010-2015. «Информационные технологии. Системная и программная инженерия. Требования и оценка качества систем и программного обеспечения (SQuaRE). Модели качества систем и программных продуктов»

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

  1. Система должна поддерживать одновременную работу не менее 30 пользователей;
  2. Система должна исполнять 80% типовых запросов за время не более 1 секунды;
  3. Система должна исполнять 95% типовых запросов за время не более 3 секунд.

4.4.2. Требования к Масштабируемости

  1. Система должна позволять увеличение производительности за счёт увеличения вычислительной мощности и ресурсов со стороны оборудования.
  2. Стоимость десятикратного увеличения производительности системы не должна превышать 900% от стоимости эксплуатации на момент сдачи.

4.4.3. Требования к Надежности

  1. Система должна допускать сбои без ущерба безопасности данных не более чем в 5% обращений;
  2. Система должна восстанавливаться после сбоя не более чем за 5 минут.

4.4.4. Требования к Доступности

  1. Система должна демонстрировать уровень доступности, при котором коэффициент доступности составляет:

— в рабочее время, с 8 до 18 часов по московскому времени — не менее 96%;
— в нерабочее время, с 18 до 8 часов по московскому времени — требований не предъявляется;
2. Система должна демонстрировать уровень доступности, при котором допустимое время простоя:
— в час — не более 5 мин;
— в день — не более 1 час;
— в месяц — не более 10 часов.

Как определять правильные значения требований к качеству?

Хорошие требования к качеству являются результатом исследований, измерений, расчётов, переговоров, споров и договорённостей.

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

1. Вариант первый, наивный: напрямую спросить заказчика, какую систему он хочет получить

Скорее всего, заказчик честно скажет, что хочет быстрое, надёжное и удобное ПО. При попытке уточнить детали, вы получите либо размытые требования («должна быть обеспечена безопасность передаваемых данных»), либо завышенные.

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

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

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

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

2. Второй вариант, идеальный: расчёты

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

Конкретные примеры рассмотрим ниже для каждого атрибута качества.

3. Вариант третий: сформировать требования к качеству своей системы на основе имеющихся стандартов

Однако, предлагаемые в различных стандартах (например в семействе стандартов ISO/IEC) и литературе (например в

The Quest for Software Requirements, Roxanne E. Miller

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

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

4. Вариант четвёртый: привлечь отдельных специалистов
(например, эксперта в области информационной безопасности)

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

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

5. Вариант пятый: проанализировать показатели качества в аналогичных системах

Такой подход называется benchmarking — измерение аналогичных показателей систем-конкурентов, имеющих схожую сферу применения и параметры среды.

Тогда требование можно формулировать как:

Показатель X должен быть не хуже, чем <среднее значение показателя среди конкурентов>

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

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

6. Вариант шестой: использовать типовые профили качества

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

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

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

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

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

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

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

Дополнительно можно разделить атрибут Производительность на два под атрибута: Пропускная способность (throughput) и Задержка (latency).

Пропускная способность может измеряться в:

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

Пример требования к пропускной способности:

П-1. Система должна обслуживать одновременно не менее 1 тысячи пользователей.

Это требование можно брать в работу, если сопроводить его допущением, что каждый пользователь производит в среднем не более 1 запроса в 20 секунд (3 запроса в минуту).

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

Пример прагматичного требования к задержке:

П-2. Система должна исполнять 95% запросов типа X в течение 3 секунд.

Кроме того, очень часто бывает важным оговорить не только и не столько количество запросов, но и объём данных, которые хранит или обрабатывает система.

П-3. Система должна сохранять показатели качества при работе с объёмами данных до 1000 видеофайлов записей вебинаров.

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

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

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

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

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

Принципиальная масштабируемость

Базовым требованием к масштабируемости является принципиальная масштабируемость:

М-1. Система должна позволять увеличение нагрузки (количества одновременно работающих пользователей, количества запросов в секунду, объёма хранимых и перерабатываемых данных) за рамками требований к Производительности с возможным ухудшением показателей (в частности, времени отклика и времени исполнения запросов).

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

Характер масштабируемости

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

Характер падения производительности

М-2. Система должна демонстрировать уровень масштабируемости, при котором зависимость времени отклика системы от нагрузки носит характер не хуже, чем (нужно выбрать только 1):
1) логарифмический;
2) степенной, где показатель степени < 1;
3) линейный;
4) степенной, где показатель степени > 1.

Давайте рассмотрим эти 4 варианта зависимости подробнее:

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

К такой форме стоит стремиться только в том случае, если в обозримом будущем (1-3 года) с высокой вероятностью может понадобиться рост производительности не просто на десятки процентов или разы, а в десятки или сотни раз.

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

Степенной характер (где 0 < n < 1 — «график корня») зависимости остаётся идеальным для большинства систем. Он хуже, чем логарифмический, но при этом всё равно очень выгодный для бизнеса, т.к. на обслуживание каждой следующей единицы нагрузки (пользователей, запросов, объёмов данных) бизнес тратит всё меньше и меньше ресурсов. Хорошие архитекторы умеют создавать архитектуру с таким качеством.

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

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

Степенной характер (где n > 1 — «график параболы») зависимости — это самый худший вид масштабируемости (не считая принципиальной немасштабируемости — отказа системы при увеличении нагрузки за рамками плановой).

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

Стоимость масштабирования

Такой вариант описания масштабируемости более понятен представителям бизнеса, т.к. оперирует не математикой, а инвестициями.

Пример такого требования:

М-3. Система должна демонстрировать уровень масштабируемости, при котором стоимость увеличения производительности* системы в 2 (5 / 10 / 50 / 100) раз составляет не более, чем 100% от плановой годовой стоимости эксплуатации системы на момент её сдачи в эксплуатацию.

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

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

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

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

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

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

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

Как посчитать допустимое время простоя? Проще всего это делать через расчёт допустимого ущерба. Например, заказчик разработки — интернет-магазин, который продаёт товаров на 1 миллион рублей в месяц.

Если считать грубо, не принимая во внимание распределение заказов во времени, один час простоя магазина может обернуться потерями в 1 млн / (30 дней * 24 часов) = 1 400 рублей в день или 33 тысячи рублей в месяц.

Допустимы ли такие потери? Тут решать заказчику, но чтобы у него было больше фактуры для принятия решения, команда разработки, если она уже известна, может посчитать свои расходы и ежемесячные затраты на снижение времени простоев, например, в 5 раз — с 1 часа в день до 12 минут.

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

Д-1. Система должна демонстрировать уровень доступности, при котором время простоя в работе системы не превышает 1 часа в сутки.

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

Д-2. Система должна демонстрировать уровень доступности, при котором время простоя в работе системы не превышает 5 минут в час.

Обратите внимание, что требование, которое охватывает более длительный интервал наблюдения — сутки, не является простой суммой допустимого времени простоя за час — 24 * 5 = 120 минут, а более жёстко по характеру, это обычная практика, следующая принципу, что допустимые отклонения от нормы не должны становиться нормой и накапливаться при суммировании.

Таким образом можно дополнить и более длительным по интервалу наблюдения требованием:

Д-3. Система должна демонстрировать уровень доступности, при котором время простоя в работе системы не превышает 3 часов в неделю.

Все 3 требования совместимы и органично дополняют друг друга, задавая прагматичные нормы доступности.

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

Например, посчитаем для одного часа — 5 минут простоя в час = 55 / 60 = ~92% времени доступности.

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

Д-4. Система должна демонстрировать уровень доступности с коэффициентом доступности не хуже, чем 92% в час.

Для тренировки можете попробовать самостоятельно рассчитать коэффициент доступности для требований Д-1 и Д-3 выше.

Надёжность (Н) — это способность системы работать с определённой долей сбоев, и обычно характеризуется 2-мя показателями: 1) вероятность сбоя, и временем восстановления после сбоя.

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

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

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

В общем случае стоит предъявить как минимум требования к допустимости отказов произвольной, любой функции системы:

Н-1. Система должна демонстрировать уровень надёжности, при котором вероятность сбоя при обращении к её функциям не превышает 5%.

В более сложных случаях можно поделить всё множество функций системы на несколько классов с разными ожиданиями по надёжности и предъявлять требования уже к ним или даже к надёжности отдельных функций:

Н-2. Система должна демонстрировать уровень надёжности, при котором вероятность сбоя при обращении к учётным* функциям не превышает 5%.

Дополнение: Под учётным функциями понимаются функции создания, обновления, удаления объектов учёта системы.

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

Н-3. Система должна демонстрировать уровень надёжности, при котором вероятность сбоя при обращении к функции оплаты (Ф-47) не превышает 0,5%.

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

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

Этот показатель удобнее всего задавать через benchmarking — измерение аналогичного времени в продуктах-конкурентах и изучение опыта пользователя.

Например, в интернете многие пользователи привыкли, что в случае сбоя в показе страницы пользователь может её обновить принудительно и уже на этот раз страница покажется правильно, иначе это будет уже выглядеть не только как сбой, но и в целом недоступность системы (хоть и для одного пользователя, а не всех). Таким образом ожидаемое время восстановления после сбоя в отображении веб-страницы — 0,5-1 секунды.

В случае внутренних систем автоматизации предприятия и редко вызываемых функций допустимое время восстановления может достигать нескольких минут. А в случае создания прототипов и MVP — даже часов.

Пример формулировки требования ко времени восстановления после сбоя:

Н-4. Система должна демонстрировать уровень надёжности, при котором время восстановления после сбоя в работе отдельной функции не превышает 3 секунд в 90% случаев.

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

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

Можно условно выделить четыре уровня качества, на котором может находиться система по каждому из аспектов качества:

  • 0 — низкий уровень, посредственное качество
  • 1 — средний уровень, обычное, приемлемое качество
  • 2 — высокий уровень, повышенное качество
  • 3 — исключительный уровень, необычное, редкое качество

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

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

Типовые значения требований для Производительности

Типовые значения требований для Масштабируемости

Типовые значения требований для Доступности

Типовые значения требований для Надёжности

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

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

В старых советских стандартах на качество ПО была предложена классификация из 12 категорий систем — см. ГОСТ 28195-89.

Мы не каждый день разрабатываем новые СУБД или САПР, поэтому эта классификация порядком потеряла актуальность для массовой коммерческой разработки и так что давайте рассмотрим классификацию прикладного ПО и систем, соответствующую реалиям нашего времени:

1. Простые интернет-сайты:
1.1. Home Site — личный сайт
1.2. Business Site — сайт компании

2. Публичные мобильные приложения:
2.1. Consumer Mobile App — мобильное приложение для частных лиц
2.2. Enterprise Mobile App — мобильное приложение для компаний

3. Потребительские интернет-сервисы и настольные приложения:
3.1. Consumer Web Service — публичный интернет-сервис для частных лиц
3.2. Consumer Desktop App — настольная программа для частных лиц (требует установки)

4. Отдельные программные компоненты:
4.1. Custom Component — заказной, уникальный компонент
4.2. Serial Component — тиражируемый, распространяемый компонент

5. Заказное ПО для компаний:
5.1. Custom Enterprise Desktop/Web App — заказное клиентское приложение для бизнеса (требует установки)
5.2. Custom Enterprise Server App — заказное серверное приложение для бизнеса (требует установки)

6. Тиражируемое ПО для компаний:
6.1. Enterprise Desktop App — тиражируемая настольная программа для бизнеса (требует установки)
6.2. Enterprise Server App — тиражируемая серверная программа для бизнеса (требует установки)

7. Массовые облачные интернет-сервисы по подписке:
7.1. B2C SaaS — облачный интернет-сервис для частных лиц, распространяемый по модели подписки (похож на 3.1, но тут пользователь получает собственное пространство для работы, а не просто личный кабинет)
7.2. B2B SaaS — облачный интернет-сервис для компаний, распространяемый по модели подписки (не требует установки)

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

Типовые уровни внешнего качества
для програмнных систем разного класса

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

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

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

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

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

Например, если ваша система является прототипом, понижать уровень качества на 3 пункта и т.д.

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

Можно ли подрядчику, исполнителю, команде подписывать требования к внешнему качеству ПО в таком виде (как показано выше)?

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

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

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

К таким ограничениям относятся:

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

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

Пример допущений и ограничений

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

Пользовательское оборудование:

ПО-1. Персональный компьютер архитектуры IBM PC с доступом в корпоративную сеть Заказчика со следующими характеристиками:

  1. Объём оперативной памяти не менее 2 Гб;
  2. Объём долговременной памяти не менее 256 Гб;
  3. Мощность центрального процессора не менее 40 Гфлопс;
  4. Электронный дисплей с разрешением не менее 1024 пикселов по горизонтали;
  5. Компьютерная клавиатура;
  6. Компьютерная мышь;
  7. Сетевая карта со скоростью передачи данных не менее 10 Мбит/с.

БП-1. В помещении Заказчика обеспечено бесперебойное питание персональных компьютеров пользователей системы со временем отключения питания не более 2 минут в день в рабочее время с 9 до 19 часов московского времени.

Серверное оборудование:

СО-1. Серверное вычислительное оборудование архитектуры IBM PC с доступом в интернет со следующими характеристиками:

  1. Объём оперативной памяти не менее 128 Гб;
  2. Объём долговременной памяти не менее 4 Тб (RAID);
  3. Мощность центрального процессора не менее 200 Гфлопс;
  4. Сетевая карта со скоростью передачи данных не менее 1 Гбит/с.

БП-2. В помещении Заказчика обеспечено бесперебойное питание серверного вычислительного оборудования системы со временем отключения питания не более 2 минут в неделю в интервале с 6 до 0 часов московского времени.

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

СС-1. Скорость передачи данных в корпоративной сети заказчика не менее 100 Мбит/с;
ДС-1. Доступность сетевого соединения и смежных систем составляет не менее 99,5%.

Как инженеру по требованиям в повседневной работе использовать материалы этой статьи? Вот примерный план действий.

  1. Определить существующие ограничения (например, связанные со смежными системами или оборудованием);
  2. Определить класс своей системы или понять, к какому классу она ближе и чем от него отличается (если не получается найти систему в приведенном выше списке классов);
  3. Определить уровень качества: для этого посмотреть рекомендованный уровень качества разных атрибутов для систем выбранного класса. При необходимости учесть уровень зрелости системы и снизить уровень качества в соответствии с ним.

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

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

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

Стандарты в области качества

  • Вопрос:

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

    Ответ:

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

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

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

  • Вопрос:

    Существуют ли какие-то препятствия для достижения высокого внешнего качества, если внутреннее качество находится на низком уровне?

    Ответ:

    Внутреннее качество напрямую влияет на внешнее качество.

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

    Можно проследить следующую зависимость: внутреннее качество влияет на внешнее качество продукта, а внешнее качество продукта влияет на внешнее качество использования.

  • Вопрос:

    Как варьировать значения показателей для уровней качества 0 и 3 в меньшую и большую сторону соответственно?

    Ответ:

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

  • Вопрос:

    Встречалась ли в вашей практике ситуация, при которой рассчитывалась бы надёжность, в частности, вероятность сбоя? Если да, то каким образом производился расчет?

    Ответ:

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

  • Вопрос:

    Как задавать надёжность на этапе технического проектирования?

    Ответ:

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

Денис Бесков — основатель и руководитель школы системного анализа и проектирования Systems Education. Автор курсов, ИТ-предприниматель и методист.


  • Более 20 лет в индустрии на позициях разработчика баз данных, архитектора, системного аналитика, руководителя отдела анализа (35 человек) и менеджера продуктов
  • Основной автор федерального профстандарта «Системный аналитик»
  • Вёл учебный курс по анализу требований в МФТИ
  • Организатор Летнего Аналитического Фестиваля 2013 и онлайн-марафона «Проектные истории» 2016
  • Более 20 выступлений на ИТ-конференциях
  • Certified Professional for Requirements Engineering (IREB CPRE)

Подписаться на новые статьи

Научиться создавать эффективные системные требования

Научиться создавать эффективные системные требования под руководством опытного наставника с использованием 10 современных аналитических техник, можно на нашем онлайн-курсе «Системный анализ и Разработка требований к ИТ-системам»

Driving Architectural Design and Preservation from a Persona Perspective in Agile Projects

Jane Cleland-Huang, … Mehdi Mirakhorli, in Agile Software Architecture, 2014

4.4.2 Generating and evaluating architectural solutions

Our approach loosely follows SEI’s Attribute-Driven Design process [21], which is an incremental, scenario-driven design technique that involves identifying quality attribute scenarios and then proposing and evaluating candidate architectural solutions.

Each candidate architecture is evaluated to determine the extent to which it satisfies (or satisfices) persona concerns. We adopt a template for each primary concern. The template lists all relevant persona user stories, evaluates the extent to which each user story is addressed in the solution, and lists pertinent architectural risks and planned mitigations. Instances of templates are provided in Figures 4.7 and 4.9.

Figure 4.7. Architecturally significant user stories related to the platform/language issue. Subsequent architectural decisions and their impact upon the personas are shown.

Figure 4.9. Architecturally significant user stories and architectural decisions, risks, and impacts related to the design of the workflow.

Read full chapter

URL: 

https://www.sciencedirect.com/science/article/pii/B9780124077720000289

Functional and Nonfunctional Design Verification for Embedded Software Systems

Arnab Ray, … Chris Martin, in Advances in Computers, 2011

6.1 Creating Scenarios

After the modifiability model has been built, the user can provide the nonfunctional requirements that are to be checked on the models. These nonfunctional requirements are written in the form of quality attribute scenarios. The responsibilities on which the attributed scenario is to be evaluated are input to the tool. A window then opens up in which other scenario information can be specified (Fig. 23).

Fig. 23. The user selects one or more responsibilities and creates a scenario.

The actual verification of the modifiability scenarios is conducted by ArchE. The user starts the verification process by clicking a button. The tool sends the impact graph and scenarios to the ArchE back-end and awaits a response. Upon finishing the evaluation, ArchE sends the results back, and the tool visualizes any violations in the user interface. It also displays an estimate for the modifiability of the current scenario, that is, the number of man-days needed to implement the scenario. An icon indicates whether the quality attribute scenario holds. In the example, the scenario is violated since the change cannot be implemented within 7 days as specified (Fig. 24).

Fig. 24. Visualization of the evaluation results in the tool.

If ArchE has determined that a scenario is violated, the user has several options for resolving the problem. Two of them are lowering the complexity value of the affected responsibility and lowering the PCP. Of course, in order to achieve either one, refactoring is necessary, which can potentially be time consuming. The tool allows the user to simulate the refactoring by allowing the user to provide a custom value for both the responsibility complexities and the PCPs. The impact graph and the scenarios can then be evaluated with the custom values. This is a quick solution for finding a setup that satisfies the quality attribute requirements without actually implementing the change.

Read full chapter

URL: 

https://www.sciencedirect.com/science/article/pii/B9780123855107000060

Exploring How the Attribute Driven Design Method Is Perceived

Nour Ali, Carlos Solis, in Relating System Quality and Software Architecture, 2014

2.2.3 Participants and training

We used availability (or convenience sampling) (Mitchell, 2004), where the participants were all graduate students in the Software Architecture module of software engineering master program of the University of Limerick. In the first experiment, conducted in 2010, they were 12 participants, divided into four architecting teams. In the experiment conducted in 2011, they were 7 participants, divided into three groups. One group had three members, and the two other groups had two members each.

The students had some background in requirements engineering, including use cases or viewpoints, and Software Design including the knowledge of several design patterns and modeling in UML. They did not have previous knowledge in specifying quality attribute scenarios, which is needed for using the ADD method or using a pattern-driven method. Previous to receiving training in ADD, the students had some experience using artifact-driven architecture design and use-case-driven methods, which they used in other projects. They had also previous knowledge in RUP.

The students were given the following training background as part of the ADD:

2-h lecture reviewing definitions about software architecture, its concepts, elements, and architectural views

2-h lecture about quality attribute scenarios that included understanding quality attributes by using the quality attribute scenarios and achieving quality attributes through tactics. The contents of the lecture were based on chapters 4 and 5 of Bass et al. (2003) and Wojcik et al. (2006).

2-h lecture about architectural styles/patterns that presented many options found in the literature. The contents of this lecture were based on styles/patterns presented in Chapters 4 and 11 of Taylor et al. (2010) and Chapter 3 of Shaw and Garlan (1996).

2-h lecture about designing architectures using the ADD method; contents were based on Chapter 7 of Bass et al. (2003). In addition, a few minutes were also dedicated to explaining documentation of architectures using templates.

Read full chapter

URL: 

https://www.sciencedirect.com/science/article/pii/B9780124170094000028

Practices of Software Architects in Business and Strategy—An Industry Experience Report

Michael Stal, in Economics-Driven Software Architecture, 2014

7.4 Considerations on economics-driven software architecture

Software architecture is the main step in mapping the problem space to the solution space as it covers strategic aspects such as Quality of Service as well as major tactical aspects such as reuse and modifiability. Tactical design, that is, fine-grained design, depends on this architectural backbone. As a consequence, each architectural decision has an impact on costs. To enable economic system development, architects must explicitly consider economic issues in all process phases and disciplines.

For driving economic system design, software architects should be actively involved in requirements engineering. In particular, they need to elaborate the economic soundness of the specification. Some requirements might stay in conflict with each other or might be economically unfeasible. For example, if many quality attributes or functional requirements are rated highly, it is difficult or even impossible to come up with economic software architecture. Quality attributes such as efficiency and exchangeability lead to trade-offs between minimizing and maximizing the number of indirection layers, which results in complex systems that are hard and expensive to maintain or evolve.

At Siemens, software architects are required to enforce a unique prioritization of requirements jointly with product managers or customers to avoid such problems.

Unit costs are another economic aspect we encountered in projects. If an embedded operating system license costs $50 per device, it is impossible to achieve a unit price less than $50. Thus, technical decisions such as the integration of third-party (Common-Off-The-Shelf (COTS)) must take care about economic implications. For this reason, architects are involved in make-or-buy decisions as well as outsourcing or offshoring considerations. Availability of a second source for most COTS components is important to minimize dependence on suppliers. Likewise, architects are in charge of deciding whether inner or outer open-source components might offer economic benefits such as cost reduction. On the other hand, open source bears the risk of hidden patent violations and licensing models that would require a company to reveal some of its business secrets. In a value-based software development, organization architects need to address these risks.

War Story: In a project for developing a medical therapy system, the integration into the medical information systems had to be accomplished using software from a specific vendor due to a mandatory customer requirement. However, the supplier was also a competitor. All adaptations of the software took months and millions of euros even for simple changes.

Software patents are of crucial value in the industry. They help to protect the business of a company, and they are important assets when negotiating cross-licensing contracts. Patent portfolios can reach values of millions or even billions of U.S. dollars. Software architects are responsible for recognizimg innovative concepts early in their projects, especially those that should be subject to intellectual property rights.

To mitigate risk early and to obtain early feedback, architects at Siemens create the architecture using a piecemeal approach, starting with the most important use cases and quality attribute scenarios. An incremental and iterative approach ensures that in case of budget cuts or time delays the system can meet important requirements but leave out less important features and qualities. Providing early feedback also helps check the economic feasibility of the project. For example, if the first increment takes much more time than estimated, then it is very likely that the succeeding increments were also subject to wrong cost and time estimations.

Strategic design, that is, functional design and design of operational quality attributes such as safety or efficiency, should always precede tactical design, which comprises developmental qualities such as modifiability or reusability. This is because in order to modify a system or reuse components, the availability of the artifact to be modified or reused is necessary. Extensibility has no meaning without precisely knowing what to extend and for what purpose. Some systems that did not follow these rules were subject to overuse of patterns such as strategy, which made the systems slow and hard to maintain. If the engineers don’t know what should be flexible, they might become cautious and introduce variability in many parts of the project, even where it is not beneficial. Binding of variability and configuration in such systems tend to be complex, tedious, and error prone.

Since quality attributes are essential for a product and hence an important cost factor, architects and product management should cooperatively define the quality scenarios, derive the quality tree, and estimate the economic impact as well as the technical complexity of each quality attribute scenario (Bass et al., 2013). Qualities with high economic impact should have higher priorities than those with less economic impact. If two quality attribute scenarios have the same economic value, the one with higher technical complexity is assigned a higher priority. Thus, the order of design and implementation can be driven by economic value and technical risk. Prioritization is also useful for setting up economic risk-based test strategies and test plans. Using a risk-based strategy, testing can focus on the most critical artifacts with adequate tests. By balancing economic and risk constraints, test managers and software architects determine the right amount of testing, and an appropriate test exit strategy.

One constituent of tactical design is to come up with a systematic reuse strategy. Different projects reveal that components that are hard to use are even harder to reuse because the costs for making them usable and reusable might outweigh the reuse benefits. In the most extreme cases, usage of components with bad design for reuse turned out to be much more expensive than design from scratch. Thus, architects need to provide an economically feasible reuse infrastructure. Systematic commonality/variability analysis helps to identify potential reuse candidates as well as their cost. This is an essential activity in all software applications and is of high economic importance in product line engineering.

Reuse within Siemens projects is not constrained to organizational units, but might even be applied in a cross-organization manner. For example, control systems in energy or automation domains are enforced to use the same control systems platform that has eventually become a high economic value. Furthermore, business groups use and reuse the same engineering tools.

Reuse is not constrained to implementation artifacts. Design reuse turned out to be much more important than code reuse in several projects. Within Siemens, certified architects leverage software patterns to re-use general and domain-specific design. Patterns include architecture, design, analysis s, domain-specific s, and refactoring patterns. This pattern-based architecture approach could save up to 40% costs in some previous and current company projects.

To avoid accidental complexity, each design decision must be rooted in an economic or a business reason and abide to the “keep-it-simple” principle. Otherwise, architects might introduce unnecessary design pearls that introduce accidental complexity, that is, oversophisticated design. Oversophisticated design is an important cost factor because it causes unexpressive, complex systems that are difficult to understand, to maintain, and to use.

In order to circumvent the economic pitfalls caused by inadequate design decisions, architects are supposed to conduct an architectural analysis after each increment. The earlier the design problems are detected and resolved, the less expensive is their treatment.

Design problems are resolved by refactoring and restructuring activities before succeeding with the next increment. Sometimes, refactoring of design problems cannot be conducted because of an upcoming product release. In this case, architects should explicitly document the findings, also known as design debt, report these findings and their consequences to the management, and plan later treatment of design debt.

Design debt leads to economic implications such as higher costs when untreated or resolved in a later increment. But it might also be the case that for some minor design problems it is cheaper to keep them unresolved. For most architecture problems, early feedback by architecture analysis and immediate treatment of identified design smells often proved to be much more economic than deferring refactoring to a later increment. If bad design decisions in a top-down architecture design are not resolved, fine-grained design and evolution adds more components and dependencies to these architectural locations. After a while, any refactoring will need to consider all those additional components and dependencies that might increase development costs significantly.

In the implementation phase, architects should also implement but not on the critical path. By participating in this phase, they can encounter problems in the architecture and prevent an architectural shift caused by developers who do not understand or follow the architectural design. Otherwise, architecture shift may have a major economic impact, especially when it is discovered late in the project.

For economic reasons, developer habitability should be a major concern in architecture creation. The better the habitability of a system, the easier developers can understand and use the architecture and the less development costs will be. At Siemens, strategic architecture documents must cover different stakeholder perspectives and be written from their viewpoint and needs in a systematic, prescribed way. Additional project diaries turned out to be useful to document the rationale of decisions that could not have been documented otherwise. Whenever new ineffective and time-consuming discussions pop up in meetings that cover previous decisions, the project diary reveals why a particular path has been taken. A project diary does not need to be a formal document but may be an informal Wiki site.

Read full chapter

URL: 

https://www.sciencedirect.com/science/article/pii/B9780124104648000076

Relating System Quality and Software Architecture

Peter Eeles, … Michael Stal, in Relating System Quality and Software Architecture, 2014

1.2.3 Defining the architecture

Architecture design is the process of making strategic architectural decisions. Each decision must address one or more concrete requirements, which should themselves align with the organization’s business goals. Clearly, new decisions should not adversely impact earlier decisions, and one mechanism for helping determine any impact is the traceability defined from the design to the requirements.

A number of approaches to deriving an architectural solution exist and several are worthy of note. The commonality between several approaches is discussed in Hofmeister et al. (2000) where five approaches are considered. Three are listed here.

Attribute Driven Design (ADD) method developed at the Carnegie Mellon Software Engineering Institute (Bass et al., 2013). In this approach, QAs (such as “availability”) are used to drive the derivation of the architecture and design, at successive levels of decomposition, through the use of architectural tactics and patterns that satisfy QA scenarios. Tactics are design decisions that decide how a functional requirement will be met or how a QA will be resolved. For example, a tactic that addresses availability might be to introduce redundancy into the system.

Siemens’ 4 Views (S4V) method developed at Siemens Corporate Research (Hofmeister et al., 2000). This approach starts with a global analysis of the factors that influence the architecture, such as functional requirements, desired system qualities, organizational constraints, and technical constraints. The key architectural challenges are identified, and strategies are derived for iteratively addressing these challenges across four views (conceptual, execution, module, and code architecture).

The Rational Unified Process (RUP) developed at Rational Software, now IBM Rational (Kruchten, 2000). This approach is driven by the architecturally significant use cases, nonfunctional requirements, and risks. Each iteration considers the key architectural elements of the solution before realizing the requirements using these solution elements. The solution is validated in executable software.

1.2.3.1 Documenting an architecture

The primary purpose of documenting a software architecture design is, of course, to communicate the architecture. This communication is important to ensure that all stakeholders understand the architecture, at least those parts they are involved in or responsible for, and can provide feedback. This is of particular relevance when it comes to demonstrating how, for example, qualities and other requirements are addressed in the solution. In particular, a documented architecture can help us explore alternative architectural solutions and the pros and cons of each. As mentioned earlier, the design process should also enforce requirements traceability, allowing the traceability from design to requirements to be specified. For QAs it is particularly important to explain any options and trade-off points, as well as points of sensitivity in the architecture.

There are some simple concepts that can be applied when documenting an architecture. In particular, a viewpoint specifies the conventions and techniques for describing the architecture from a particular perspective. This concept is clearly important when it comes to explaining how QAs are accommodated in the architecture description. For example, a performance-related QA may be made visible through the application of a requirements viewpoint (that is applied to communicate any architecturally significant performance requirements), a functional viewpoint (that is applied to communicate those functional components of the solution that contribute to addressing any performance requirement), and a deployment view (that is applied to communicate any deployment elements that contribute to addressing any performance requirement).

In larger companies, mandatory guidelines and conventions are often available, primarily for implementation artifacts. More mature companies define mandatory guiding principles for all roles in a project as well as for the development process. For instance, 1 of the 12 guiding principles at Siemens defines architecture design as covering the whole lifecycle, not just the short timespan where design has its greatest emphasis. A well-balanced level of architecture governance also needs to be enforced, so that problems can be detected and addressed early.

Read full chapter

URL: 

https://www.sciencedirect.com/science/article/pii/B9780124170094000016

Assumptions and their management in software development: A systematic mapping study

Chen Yang, … Paris Avgeriou, in Information and Software Technology, 2018

4.4.1 Requirements engineering

In [S108], assumptions were made for requirements (i.e., A is made for B). One example of such assumptions is “The system will be available during normal working hours”. In [S89], assumptions are scattered within multiple quality attribute scenarios (i.e., A is contained in B). One example of such assumption is “There is a subsystem that is responsible for receiving emergency calls and forwarding them to an available Coordinator”. This assumption was defined in two quality attribute scenarios. In [S100], the authors mentioned that invalid assumptions might lead to a change in requirements, and the changes of the operational domain could be a reason for assumptions changes (i.e., A leads to the changes in B).

Read full article

URL: 

https://www.sciencedirect.com/science/article/pii/S0950584916304189

A systematic review of software architecture evolution research

Hongyu Pei Breivold, … Magnus Larsson, in Information and Software Technology, 2012

6 Conclusions

As business and technology evolve and software becomes more complex, software development is increasingly faced with not only how to create new software systems of the desired quality attributes, but also, following the initial development, how to evolve the systems in their operationally changing contexts. Given that in most cases it is not desirable to develop everything from scratch [34], researchers are constantly challenged to come up with approaches to effectively support the evolution of software systems. The main objective of this review is to obtain a holistic view of the existing studies in analyzing and achieving software evolvability at architectural level. We have identified 82 primary studies, covering a spectrum of approaches with specific perspective or focus on a particular architecture-centric activity in software lifecycle. These approaches vary in terminology, descriptions, artifacts and involved activities, yet beyond these differences, we find approaches that share a lot in common, e.g. focus, goal and application context. We extract these commonalities and summarize the studies into five main categories of themes:

1.

Quality considerations during design. The approaches in this category are further refined into three sub-categories: quality attribute requirement focused, quality attribute scenario focused, and influencing factor focused. Most of the techniques that support quality considerations during software architecture design help identify key quality attribute requirements early in the software design phase. Most studies address quality attributes in general and not evolvability in particular.

2.

Architectural quality evaluation. In the subsequent iteration when an architecture starts to take form, architectural quality evaluations help elicit and refine additional quality attribute requirements and scenarios. The approaches in this category are further refined into three sub-categories: experienced-based, scenario-based and metric-based. A reflection on how these studies are related to software evolvability is that most studies focus on particular quality attributes such as adaptability, and do not cover the wide spectrum of evolvability subcharacteristics. Few studies explicitly address software evolvability. Even if the term evolvability is used in some studies, there is a lack of precise definition or explanation of authors’ perception on software evolvability.

3.

Economic valuation. Economic valuation approaches provide more details on architectural decisions’ business consequences, and assist development teams in choosing among architectural options. Most studies focus on a single quality attribute, e.g. stability, flexibility or modularity, and may exhibit a drawback in architectural design decision-making process when multiple evolvability subcharacteristics are involved, requiring explicit management of preferences and tradeoffs among evolvability subcharacteristics.

4.

Architectural knowledge management. Architectural knowledge management approaches improve architectural integrity by enriching architecture documentation with architectural knowledge captured from different information sources.

5.

Modeling techniques. Modeling techniques add value by modeling software artefacts along with their traceability, and visualizing corresponding impact of the evolution of software architecture artifacts. They do not explicitly focus on evolvability in particular, but they help control and improve software architecture evolution by modeling the relationships among inter-dependent software artefacts.

This systematic review might have implications for both research and practitioners. For researchers, the analysis of the primary studies indicates a number of challenges and topics for future research: (i) there is a space to develop new foundation theories beyond to Lehman’s law (for example quantitative expression of evolvability, along with its measurement, monitoring, prediction, impact analysis, and similar), with practical value to software architecture evolution; (ii) it is also necessary to address the multifaceted perspectives of software evolvability through combining appropriate approaches to complement each other as each approach has its specific focus and context that it is appropriate for in a software lifecycle; (iii) considering that all artefacts produced and used during the entire software lifecycle are subject to changes, novel methods and tools need to be developed to be able to design ultra-large-systems that integrate and orchestrate the evolution of thousands of platforms, decision nodes, organizations and processes [37]. For practitioners, they can use this review as a source in searching for relevant approaches before adopting and tailoring them by examining the context and characteristics of their own software development, and comparing with the application context of relevant approaches.

In future we can expect more research work in this area – in addition to case studies we could expect more basic foundation research and standardization of designing, and assessing evolvability, probably enriched by different tools.

Read full article

URL: 

https://www.sciencedirect.com/science/article/pii/S0950584911001376

Driving Architectural Design and Preservation from a Persona Perspective in Agile Projects

Jane Cleland-Huang, … Mehdi Mirakhorli, in Agile Software Architecture, 2014

4.4.2 Generating and evaluating architectural solutions

Our approach loosely follows SEI’s Attribute-Driven Design process [21], which is an incremental, scenario-driven design technique that involves identifying quality attribute scenarios and then proposing and evaluating candidate architectural solutions.

Each candidate architecture is evaluated to determine the extent to which it satisfies (or satisfices) persona concerns. We adopt a template for each primary concern. The template lists all relevant persona user stories, evaluates the extent to which each user story is addressed in the solution, and lists pertinent architectural risks and planned mitigations. Instances of templates are provided in Figures 4.7 and 4.9.

Figure 4.7. Architecturally significant user stories related to the platform/language issue. Subsequent architectural decisions and their impact upon the personas are shown.

Figure 4.9. Architecturally significant user stories and architectural decisions, risks, and impacts related to the design of the workflow.

Read full chapter

URL: 

https://www.sciencedirect.com/science/article/pii/B9780124077720000289

Functional and Nonfunctional Design Verification for Embedded Software Systems

Arnab Ray, … Chris Martin, in Advances in Computers, 2011

6.1 Creating Scenarios

After the modifiability model has been built, the user can provide the nonfunctional requirements that are to be checked on the models. These nonfunctional requirements are written in the form of quality attribute scenarios. The responsibilities on which the attributed scenario is to be evaluated are input to the tool. A window then opens up in which other scenario information can be specified (Fig. 23).

Fig. 23. The user selects one or more responsibilities and creates a scenario.

The actual verification of the modifiability scenarios is conducted by ArchE. The user starts the verification process by clicking a button. The tool sends the impact graph and scenarios to the ArchE back-end and awaits a response. Upon finishing the evaluation, ArchE sends the results back, and the tool visualizes any violations in the user interface. It also displays an estimate for the modifiability of the current scenario, that is, the number of man-days needed to implement the scenario. An icon indicates whether the quality attribute scenario holds. In the example, the scenario is violated since the change cannot be implemented within 7 days as specified (Fig. 24).

Fig. 24. Visualization of the evaluation results in the tool.

If ArchE has determined that a scenario is violated, the user has several options for resolving the problem. Two of them are lowering the complexity value of the affected responsibility and lowering the PCP. Of course, in order to achieve either one, refactoring is necessary, which can potentially be time consuming. The tool allows the user to simulate the refactoring by allowing the user to provide a custom value for both the responsibility complexities and the PCPs. The impact graph and the scenarios can then be evaluated with the custom values. This is a quick solution for finding a setup that satisfies the quality attribute requirements without actually implementing the change.

Read full chapter

URL: 

https://www.sciencedirect.com/science/article/pii/B9780123855107000060

Exploring How the Attribute Driven Design Method Is Perceived

Nour Ali, Carlos Solis, in Relating System Quality and Software Architecture, 2014

2.2.3 Participants and training

We used availability (or convenience sampling) (Mitchell, 2004), where the participants were all graduate students in the Software Architecture module of software engineering master program of the University of Limerick. In the first experiment, conducted in 2010, they were 12 participants, divided into four architecting teams. In the experiment conducted in 2011, they were 7 participants, divided into three groups. One group had three members, and the two other groups had two members each.

The students had some background in requirements engineering, including use cases or viewpoints, and Software Design including the knowledge of several design patterns and modeling in UML. They did not have previous knowledge in specifying quality attribute scenarios, which is needed for using the ADD method or using a pattern-driven method. Previous to receiving training in ADD, the students had some experience using artifact-driven architecture design and use-case-driven methods, which they used in other projects. They had also previous knowledge in RUP.

The students were given the following training background as part of the ADD:

2-h lecture reviewing definitions about software architecture, its concepts, elements, and architectural views

2-h lecture about quality attribute scenarios that included understanding quality attributes by using the quality attribute scenarios and achieving quality attributes through tactics. The contents of the lecture were based on chapters 4 and 5 of Bass et al. (2003) and Wojcik et al. (2006).

2-h lecture about architectural styles/patterns that presented many options found in the literature. The contents of this lecture were based on styles/patterns presented in Chapters 4 and 11 of Taylor et al. (2010) and Chapter 3 of Shaw and Garlan (1996).

2-h lecture about designing architectures using the ADD method; contents were based on Chapter 7 of Bass et al. (2003). In addition, a few minutes were also dedicated to explaining documentation of architectures using templates.

Read full chapter

URL: 

https://www.sciencedirect.com/science/article/pii/B9780124170094000028

Practices of Software Architects in Business and Strategy—An Industry Experience Report

Michael Stal, in Economics-Driven Software Architecture, 2014

7.4 Considerations on economics-driven software architecture

Software architecture is the main step in mapping the problem space to the solution space as it covers strategic aspects such as Quality of Service as well as major tactical aspects such as reuse and modifiability. Tactical design, that is, fine-grained design, depends on this architectural backbone. As a consequence, each architectural decision has an impact on costs. To enable economic system development, architects must explicitly consider economic issues in all process phases and disciplines.

For driving economic system design, software architects should be actively involved in requirements engineering. In particular, they need to elaborate the economic soundness of the specification. Some requirements might stay in conflict with each other or might be economically unfeasible. For example, if many quality attributes or functional requirements are rated highly, it is difficult or even impossible to come up with economic software architecture. Quality attributes such as efficiency and exchangeability lead to trade-offs between minimizing and maximizing the number of indirection layers, which results in complex systems that are hard and expensive to maintain or evolve.

At Siemens, software architects are required to enforce a unique prioritization of requirements jointly with product managers or customers to avoid such problems.

Unit costs are another economic aspect we encountered in projects. If an embedded operating system license costs $50 per device, it is impossible to achieve a unit price less than $50. Thus, technical decisions such as the integration of third-party (Common-Off-The-Shelf (COTS)) must take care about economic implications. For this reason, architects are involved in make-or-buy decisions as well as outsourcing or offshoring considerations. Availability of a second source for most COTS components is important to minimize dependence on suppliers. Likewise, architects are in charge of deciding whether inner or outer open-source components might offer economic benefits such as cost reduction. On the other hand, open source bears the risk of hidden patent violations and licensing models that would require a company to reveal some of its business secrets. In a value-based software development, organization architects need to address these risks.

War Story: In a project for developing a medical therapy system, the integration into the medical information systems had to be accomplished using software from a specific vendor due to a mandatory customer requirement. However, the supplier was also a competitor. All adaptations of the software took months and millions of euros even for simple changes.

Software patents are of crucial value in the industry. They help to protect the business of a company, and they are important assets when negotiating cross-licensing contracts. Patent portfolios can reach values of millions or even billions of U.S. dollars. Software architects are responsible for recognizimg innovative concepts early in their projects, especially those that should be subject to intellectual property rights.

To mitigate risk early and to obtain early feedback, architects at Siemens create the architecture using a piecemeal approach, starting with the most important use cases and quality attribute scenarios. An incremental and iterative approach ensures that in case of budget cuts or time delays the system can meet important requirements but leave out less important features and qualities. Providing early feedback also helps check the economic feasibility of the project. For example, if the first increment takes much more time than estimated, then it is very likely that the succeeding increments were also subject to wrong cost and time estimations.

Strategic design, that is, functional design and design of operational quality attributes such as safety or efficiency, should always precede tactical design, which comprises developmental qualities such as modifiability or reusability. This is because in order to modify a system or reuse components, the availability of the artifact to be modified or reused is necessary. Extensibility has no meaning without precisely knowing what to extend and for what purpose. Some systems that did not follow these rules were subject to overuse of patterns such as strategy, which made the systems slow and hard to maintain. If the engineers don’t know what should be flexible, they might become cautious and introduce variability in many parts of the project, even where it is not beneficial. Binding of variability and configuration in such systems tend to be complex, tedious, and error prone.

Since quality attributes are essential for a product and hence an important cost factor, architects and product management should cooperatively define the quality scenarios, derive the quality tree, and estimate the economic impact as well as the technical complexity of each quality attribute scenario (Bass et al., 2013). Qualities with high economic impact should have higher priorities than those with less economic impact. If two quality attribute scenarios have the same economic value, the one with higher technical complexity is assigned a higher priority. Thus, the order of design and implementation can be driven by economic value and technical risk. Prioritization is also useful for setting up economic risk-based test strategies and test plans. Using a risk-based strategy, testing can focus on the most critical artifacts with adequate tests. By balancing economic and risk constraints, test managers and software architects determine the right amount of testing, and an appropriate test exit strategy.

One constituent of tactical design is to come up with a systematic reuse strategy. Different projects reveal that components that are hard to use are even harder to reuse because the costs for making them usable and reusable might outweigh the reuse benefits. In the most extreme cases, usage of components with bad design for reuse turned out to be much more expensive than design from scratch. Thus, architects need to provide an economically feasible reuse infrastructure. Systematic commonality/variability analysis helps to identify potential reuse candidates as well as their cost. This is an essential activity in all software applications and is of high economic importance in product line engineering.

Reuse within Siemens projects is not constrained to organizational units, but might even be applied in a cross-organization manner. For example, control systems in energy or automation domains are enforced to use the same control systems platform that has eventually become a high economic value. Furthermore, business groups use and reuse the same engineering tools.

Reuse is not constrained to implementation artifacts. Design reuse turned out to be much more important than code reuse in several projects. Within Siemens, certified architects leverage software patterns to re-use general and domain-specific design. Patterns include architecture, design, analysis s, domain-specific s, and refactoring patterns. This pattern-based architecture approach could save up to 40% costs in some previous and current company projects.

To avoid accidental complexity, each design decision must be rooted in an economic or a business reason and abide to the “keep-it-simple” principle. Otherwise, architects might introduce unnecessary design pearls that introduce accidental complexity, that is, oversophisticated design. Oversophisticated design is an important cost factor because it causes unexpressive, complex systems that are difficult to understand, to maintain, and to use.

In order to circumvent the economic pitfalls caused by inadequate design decisions, architects are supposed to conduct an architectural analysis after each increment. The earlier the design problems are detected and resolved, the less expensive is their treatment.

Design problems are resolved by refactoring and restructuring activities before succeeding with the next increment. Sometimes, refactoring of design problems cannot be conducted because of an upcoming product release. In this case, architects should explicitly document the findings, also known as design debt, report these findings and their consequences to the management, and plan later treatment of design debt.

Design debt leads to economic implications such as higher costs when untreated or resolved in a later increment. But it might also be the case that for some minor design problems it is cheaper to keep them unresolved. For most architecture problems, early feedback by architecture analysis and immediate treatment of identified design smells often proved to be much more economic than deferring refactoring to a later increment. If bad design decisions in a top-down architecture design are not resolved, fine-grained design and evolution adds more components and dependencies to these architectural locations. After a while, any refactoring will need to consider all those additional components and dependencies that might increase development costs significantly.

In the implementation phase, architects should also implement but not on the critical path. By participating in this phase, they can encounter problems in the architecture and prevent an architectural shift caused by developers who do not understand or follow the architectural design. Otherwise, architecture shift may have a major economic impact, especially when it is discovered late in the project.

For economic reasons, developer habitability should be a major concern in architecture creation. The better the habitability of a system, the easier developers can understand and use the architecture and the less development costs will be. At Siemens, strategic architecture documents must cover different stakeholder perspectives and be written from their viewpoint and needs in a systematic, prescribed way. Additional project diaries turned out to be useful to document the rationale of decisions that could not have been documented otherwise. Whenever new ineffective and time-consuming discussions pop up in meetings that cover previous decisions, the project diary reveals why a particular path has been taken. A project diary does not need to be a formal document but may be an informal Wiki site.

Read full chapter

URL: 

https://www.sciencedirect.com/science/article/pii/B9780124104648000076

Relating System Quality and Software Architecture

Peter Eeles, … Michael Stal, in Relating System Quality and Software Architecture, 2014

1.2.3 Defining the architecture

Architecture design is the process of making strategic architectural decisions. Each decision must address one or more concrete requirements, which should themselves align with the organization’s business goals. Clearly, new decisions should not adversely impact earlier decisions, and one mechanism for helping determine any impact is the traceability defined from the design to the requirements.

A number of approaches to deriving an architectural solution exist and several are worthy of note. The commonality between several approaches is discussed in Hofmeister et al. (2000) where five approaches are considered. Three are listed here.

Attribute Driven Design (ADD) method developed at the Carnegie Mellon Software Engineering Institute (Bass et al., 2013). In this approach, QAs (such as “availability”) are used to drive the derivation of the architecture and design, at successive levels of decomposition, through the use of architectural tactics and patterns that satisfy QA scenarios. Tactics are design decisions that decide how a functional requirement will be met or how a QA will be resolved. For example, a tactic that addresses availability might be to introduce redundancy into the system.

Siemens’ 4 Views (S4V) method developed at Siemens Corporate Research (Hofmeister et al., 2000). This approach starts with a global analysis of the factors that influence the architecture, such as functional requirements, desired system qualities, organizational constraints, and technical constraints. The key architectural challenges are identified, and strategies are derived for iteratively addressing these challenges across four views (conceptual, execution, module, and code architecture).

The Rational Unified Process (RUP) developed at Rational Software, now IBM Rational (Kruchten, 2000). This approach is driven by the architecturally significant use cases, nonfunctional requirements, and risks. Each iteration considers the key architectural elements of the solution before realizing the requirements using these solution elements. The solution is validated in executable software.

1.2.3.1 Documenting an architecture

The primary purpose of documenting a software architecture design is, of course, to communicate the architecture. This communication is important to ensure that all stakeholders understand the architecture, at least those parts they are involved in or responsible for, and can provide feedback. This is of particular relevance when it comes to demonstrating how, for example, qualities and other requirements are addressed in the solution. In particular, a documented architecture can help us explore alternative architectural solutions and the pros and cons of each. As mentioned earlier, the design process should also enforce requirements traceability, allowing the traceability from design to requirements to be specified. For QAs it is particularly important to explain any options and trade-off points, as well as points of sensitivity in the architecture.

There are some simple concepts that can be applied when documenting an architecture. In particular, a viewpoint specifies the conventions and techniques for describing the architecture from a particular perspective. This concept is clearly important when it comes to explaining how QAs are accommodated in the architecture description. For example, a performance-related QA may be made visible through the application of a requirements viewpoint (that is applied to communicate any architecturally significant performance requirements), a functional viewpoint (that is applied to communicate those functional components of the solution that contribute to addressing any performance requirement), and a deployment view (that is applied to communicate any deployment elements that contribute to addressing any performance requirement).

In larger companies, mandatory guidelines and conventions are often available, primarily for implementation artifacts. More mature companies define mandatory guiding principles for all roles in a project as well as for the development process. For instance, 1 of the 12 guiding principles at Siemens defines architecture design as covering the whole lifecycle, not just the short timespan where design has its greatest emphasis. A well-balanced level of architecture governance also needs to be enforced, so that problems can be detected and addressed early.

Read full chapter

URL: 

https://www.sciencedirect.com/science/article/pii/B9780124170094000016

Assumptions and their management in software development: A systematic mapping study

Chen Yang, … Paris Avgeriou, in Information and Software Technology, 2018

4.4.1 Requirements engineering

In [S108], assumptions were made for requirements (i.e., A is made for B). One example of such assumptions is “The system will be available during normal working hours”. In [S89], assumptions are scattered within multiple quality attribute scenarios (i.e., A is contained in B). One example of such assumption is “There is a subsystem that is responsible for receiving emergency calls and forwarding them to an available Coordinator”. This assumption was defined in two quality attribute scenarios. In [S100], the authors mentioned that invalid assumptions might lead to a change in requirements, and the changes of the operational domain could be a reason for assumptions changes (i.e., A leads to the changes in B).

Read full article

URL: 

https://www.sciencedirect.com/science/article/pii/S0950584916304189

A systematic review of software architecture evolution research

Hongyu Pei Breivold, … Magnus Larsson, in Information and Software Technology, 2012

6 Conclusions

As business and technology evolve and software becomes more complex, software development is increasingly faced with not only how to create new software systems of the desired quality attributes, but also, following the initial development, how to evolve the systems in their operationally changing contexts. Given that in most cases it is not desirable to develop everything from scratch [34], researchers are constantly challenged to come up with approaches to effectively support the evolution of software systems. The main objective of this review is to obtain a holistic view of the existing studies in analyzing and achieving software evolvability at architectural level. We have identified 82 primary studies, covering a spectrum of approaches with specific perspective or focus on a particular architecture-centric activity in software lifecycle. These approaches vary in terminology, descriptions, artifacts and involved activities, yet beyond these differences, we find approaches that share a lot in common, e.g. focus, goal and application context. We extract these commonalities and summarize the studies into five main categories of themes:

1.

Quality considerations during design. The approaches in this category are further refined into three sub-categories: quality attribute requirement focused, quality attribute scenario focused, and influencing factor focused. Most of the techniques that support quality considerations during software architecture design help identify key quality attribute requirements early in the software design phase. Most studies address quality attributes in general and not evolvability in particular.

2.

Architectural quality evaluation. In the subsequent iteration when an architecture starts to take form, architectural quality evaluations help elicit and refine additional quality attribute requirements and scenarios. The approaches in this category are further refined into three sub-categories: experienced-based, scenario-based and metric-based. A reflection on how these studies are related to software evolvability is that most studies focus on particular quality attributes such as adaptability, and do not cover the wide spectrum of evolvability subcharacteristics. Few studies explicitly address software evolvability. Even if the term evolvability is used in some studies, there is a lack of precise definition or explanation of authors’ perception on software evolvability.

3.

Economic valuation. Economic valuation approaches provide more details on architectural decisions’ business consequences, and assist development teams in choosing among architectural options. Most studies focus on a single quality attribute, e.g. stability, flexibility or modularity, and may exhibit a drawback in architectural design decision-making process when multiple evolvability subcharacteristics are involved, requiring explicit management of preferences and tradeoffs among evolvability subcharacteristics.

4.

Architectural knowledge management. Architectural knowledge management approaches improve architectural integrity by enriching architecture documentation with architectural knowledge captured from different information sources.

5.

Modeling techniques. Modeling techniques add value by modeling software artefacts along with their traceability, and visualizing corresponding impact of the evolution of software architecture artifacts. They do not explicitly focus on evolvability in particular, but they help control and improve software architecture evolution by modeling the relationships among inter-dependent software artefacts.

This systematic review might have implications for both research and practitioners. For researchers, the analysis of the primary studies indicates a number of challenges and topics for future research: (i) there is a space to develop new foundation theories beyond to Lehman’s law (for example quantitative expression of evolvability, along with its measurement, monitoring, prediction, impact analysis, and similar), with practical value to software architecture evolution; (ii) it is also necessary to address the multifaceted perspectives of software evolvability through combining appropriate approaches to complement each other as each approach has its specific focus and context that it is appropriate for in a software lifecycle; (iii) considering that all artefacts produced and used during the entire software lifecycle are subject to changes, novel methods and tools need to be developed to be able to design ultra-large-systems that integrate and orchestrate the evolution of thousands of platforms, decision nodes, organizations and processes [37]. For practitioners, they can use this review as a source in searching for relevant approaches before adopting and tailoring them by examining the context and characteristics of their own software development, and comparing with the application context of relevant approaches.

In future we can expect more research work in this area – in addition to case studies we could expect more basic foundation research and standardization of designing, and assessing evolvability, probably enriched by different tools.

Read full article

URL: 

https://www.sciencedirect.com/science/article/pii/S0950584911001376

  • Введение в требования к качеству:

  • Кому и когда нужны требования к программной системе?

  • Самые полезные атрибуты качества

  • Пример требований к внешнему качеству программной системы

  • Как определять конкретные значения требований?

    4 важнейших атрибута внешнего качества:

  • Производительность, её показатели и примеры требований

  • Масштабируемость, её показатели и примеры требований

  • Доступность, её показатели и примеры требований

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

    Профили качества:

  • Уровни качества и типовые значения показателей

  • Классы программных систем

  • Типовые уровни качества для разных классов программных систем

    Применение:

  • Допущения и ограничения

  • Инструкция по применению

Введение

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

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

Но в мире честных, открытых отношений выгоднее заранее обсудить эти аспекты, чем потом с удивлением спорить при сдаче, что система тормозит, в ТЗ про это ничего не сказано, «вы же профессионалы» и всё такое.

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

При этом остаётся прагматический вопрос — а что именно писать в требования, чтобы они были полезными, измеримыми, реализуемыми?

С точки зрения системной инженерии, требования к качеству программной системы являются разновидностью системных ограничений (constraints) и в этом они отличаются от требований к способностям (capabilities) системы, в мире ИТ обычно называемых «функциональными».

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

Давайте попробуем сделать это хотя бы ремеслом.


Кому и когда нужны требования к качеству программной системы?

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

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

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

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

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

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

  5. И заказчику, и подрядчику нужен список чётких, проверяемых, известных заранее критериев, которым должна соответствовать система, чтобы избежать споров при сдаче.

Вот несколько примеров того, как недостаточное внимание к качеству системы может привести к плачевным последствиям:

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

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

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

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

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

Самые полезные атрибуты качества

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

1. Важнейшие характеристики качества при эксплуатации (Run-Time), также называемого внешним качеством (external quality):

  • Производительность

  • Масштабируемость

  • Доступность

  • Надёжность

  • Информационная безопасность

2. Важнейшие характеристики качества при модернизации (Design-Time), также называемого внутренним качеством (internal quality):

  • Безошибочность кода

  • Изменяемость кода

  • Переносимость кода

3. Специалисты по пользовательским интерфейсам, человеко-машинному взаимодействию также предлагают характеристики качества, называемые «качество в использовании» (Quality in Use).

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

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

  • Результативность применения

  • Обучаемость

  • Эффективность применения

  • Точность применения

  • Утомляемость при применении

  • Удовлетворённость применения

В этой статье дальше мы рассмотрим только формулирование требований к первым 4-м аспектам внешнего качества.

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

Про качество в использовании также читайте в отдельной статье.

Пример требований к внешнему качеству программной системы

4.4. Требования к внешнему качеству ПО (External Quality)

Раздел использует терминологию стандарта ГОСТ Р ИСО/МЭК 25010-2015. «Информационные технологии. Системная и программная инженерия. Требования и оценка качества систем и программного обеспечения (SQuaRE). Модели качества систем и программных продуктов»

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

  1. Система должна поддерживать одновременную работу не менее 30 пользователей;

  2. Система должна исполнять 80% типовых запросов за время не более 1 секунды;

  3. Система должна исполнять 95% типовых запросов за время не более 3 секунд.

4.4.2. Требования к Масштабируемости

  1. Система должна позволять увеличение производительности за счёт увеличения вычислительной мощности и ресурсов со стороны оборудования.

  2. Стоимость десятикратного увеличения производительности системы не должна превышать 900% от стоимости эксплуатации на момент сдачи.

4.4.3. Требования к Надежности

  1. Система должна допускать сбои без ущерба безопасности данных не более чем в 5% обращений;

  2. Система должна восстанавливаться после сбоя не более чем за 5 минут.

4.4.4. Требования к Доступности

  1. Система должна демонстрировать уровень доступности, при котором коэффициент доступности составляет:

    — в рабочее время, с 8 до 18 часов по московскому времени — не менее 96%;
    — в нерабочее время, с 18 до 8 часов по московскому времени — требований не предъявляется;

  2. Система должна демонстрировать уровень доступности, при котором допустимое время простоя:
    — в час — не более 5 мин;
    — в день — не более 1 час;
    — в месяц — не более 10 часов.

Как определять конкретные значения требований?

Хорошие требования к качеству являются результатом исследований, измерений, расчётов, переговоров, споров и договорённостей.

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

1. Вариант первый, наивный: напрямую спросить заказчика, какую систему он хочет получить

Скорее всего, заказчик честно скажет, что хочет быстрое, надёжное и удобное ПО. При попытке уточнить детали, вы получите либо размытые требования («должна быть обеспечена безопасность передаваемых данных»), либо завышенные.

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

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

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

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

2. Второй вариант, идеальный: расчёты

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

Конкретные примеры рассмотрим ниже для каждого атрибута качества.

3. Вариант третий: сформировать требования к качеству своей системы на основе имеющихся стандартов

Однако, предлагаемые в различных стандартах (например в семействе стандартов ISO/IEC) и литературе (например в The Quest for Software Requirements, Roxanne E. Miller) списки критериев качества часто оказываются слишком громоздкими или их тяжело использовать на практике. Приводимая в них классификация систем может быть устаревшей или неактуальной для вашей области, а предлагаемые характеристики качества часто тяжело «переводить» на язык заказчика для обсуждения.

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

4. Вариант четвёртый: привлечь отдельных специалистов(например, эксперта в области информационной безопасности)

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

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

5. Вариант пятый: проанализировать показатели качества в аналогичных системах

Такой подход называется benchmarking — измерение аналогичных показателей систем-конкурентов, имеющих схожую сферу применения и параметры среды.

Тогда требование можно формулировать как:

Показатель X должен быть не хуже, чем <среднее значение показателя среди конкурентов>

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

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

6. Вариант шестой: использовать типовые профили качества

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

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

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

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

Давайте рассмотрим 4 важнейших атрибута внешнего качества, их показатели и методики формулирования.


Производительность

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

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

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

Дополнительно можно разделить атрибут Производительность на два под атрибута: Пропускная способность (throughput) и Задержка (latency).

Пропускная способность

Пропускная способность может измеряться в:

  • Количестве обрабатываемых запросов в единицу времени или

  • Количестве одновременно работающих пользователей

Пример требования к пропускной способности:

П-1. Система должна обслуживать одновременно не менее 1 тысячи пользователей.

Это требование можно брать в работу, если сопроводить его допущением, что каждый пользователь производит в среднем не более 1 запроса в 20 секунд (3 запроса в минуту).

Задержка

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

Пример прагматичного требования к задержке:

П-2. Система должна исполнять 95% запросов типа X в течение 3 секунд.

Объём данных

Кроме того, очень часто бывает важным оговорить не только и не столько количество запросов, но и объём данных, которые хранит или обрабатывает система.

П-3. Система должна сохранять показатели качества при работе с объёмами данных до 1000 видеофайлов записей вебинаров.


Масштабируемость

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

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

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

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

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

Принципиальная масштабируемость

Базовым требованием к масштабируемости является принципиальная масштабируемость:

М-1. Система должна позволять увеличение нагрузки (количества одновременно работающих пользователей, количества запросов в секунду, объёма хранимых и перерабатываемых данных) за рамками требований к Производительности с возможным ухудшением показателей (в частности, времени отклика и времени исполнения запросов).

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

Характер масштабируемости

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

Характер падения производительности

М-2. Система должна демонстрировать уровень масштабируемости, при котором зависимость времени отклика системы от нагрузки носит характер не хуже, чем (нужно выбрать только 1):
1) логарифмический;
2) степенной, где показатель степени < 1;
3) линейный;
4) степенной, где показатель степени > 1.

Возможные варианты поведения программной системы при росте нагрузки

Возможные варианты поведения программной системы при росте нагрузки

Давайте рассмотрим эти 4 варианта зависимости подробнее:

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

К такой форме стоит стремиться только в том случае, если в обозримом будущем (1-3 года) с высокой вероятностью может понадобиться рост производительности не просто на десятки процентов или разы, а в десятки или сотни раз.

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

Степенной характер (где 0 < n < 1 — «график корня») зависимости остаётся идеальным для большинства систем. Он хуже, чем логарифмический, но при этом всё равно очень выгодный для бизнеса, т.к. на обслуживание каждой следующей единицы нагрузки (пользователей, запросов, объёмов данных) бизнес тратит всё меньше и меньше ресурсов. Хорошие архитекторы умеют создавать архитектуру с таким качеством.

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

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

Степенной характер (где n > 1 — «график параболы») зависимости — это самый худший вид масштабируемости (не считая принципиальной немасштабируемости — отказа системы при увеличении нагрузки за рамками плановой).

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

Планируемый рост нагрузки

Рекомендуемый характер зависимости времени отклика от нагрузки

На несколько порядков

Логарифмический

В разы, на порядок

Степенной, где 0 < n < 1 (корнеобразный)

На десятки процентов

Линейный

На единицы процентов

Степенной, где n > 1 (параболический)

Стоимость масштабирования

Такой вариант описания масштабируемости более понятен представителям бизнеса, т.к. оперирует не математикой, а инвестициями.

Пример такого требования:

М-3. Система должна демонстрировать уровень масштабируемости, при котором стоимость увеличения производительности* системы в 2 (5 / 10 / 50 / 100) раз составляет не более, чем 100% от плановой годовой стоимости эксплуатации системы на момент её сдачи в эксплуатацию.

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

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


Доступность

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

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

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

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

Допустимое время простоя

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

Как посчитать допустимое время простоя? Проще всего это делать через расчёт допустимого ущерба. Например, заказчик разработки — интернет-магазин, который продаёт товаров на 1 миллион рублей в месяц.

Если считать грубо, не принимая во внимание распределение заказов во времени, один час простоя магазина может обернуться потерями в 1 млн / (30 дней * 24 часов) = 1 400 рублей в день или 33 тысячи рублей в месяц.

Допустимы ли такие потери? Тут решать заказчику, но чтобы у него было больше фактуры для принятия решения, команда разработки, если она уже известна, может посчитать свои расходы и ежемесячные затраты на снижение времени простоев, например, в 5 раз — с 1 часа в день до 12 минут.

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

Д-1. Система должна демонстрировать уровень доступности, при котором время простоя в работе системы не превышает 1 часа в сутки.

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

Д-2. Система должна демонстрировать уровень доступности, при котором время простоя в работе системы не превышает 5 минут в час.

Обратите внимание, что требование, которое охватывает более длительный интервал наблюдения — сутки, не является простой суммой допустимого времени простоя за час — 24 * 5 = 120 минут, а более жёстко по характеру, это обычная практика, следующая принципу, что допустимые отклонения от нормы не должны становиться нормой и накапливаться при суммировании.

Таким образом можно дополнить и более длительным по интервалу наблюдения требованием:

Д-3. Система должна демонстрировать уровень доступности, при котором время простоя в работе системы не превышает 3 часов в неделю.

Все 3 требования совместимы и органично дополняют друг друга, задавая прагматичные нормы доступности.

Коэффициент доступности

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

Например, посчитаем для одного часа — 5 минут простоя в час = 55 / 60 = ~92% времени доступности.

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

Д-4. Система должна демонстрировать уровень доступности с коэффициентом доступности не хуже, чем 92% в час.

Для тренировки можете попробовать самостоятельно рассчитать коэффициент доступности для требований Д-1 и Д-3 выше.


Надёжность

Надёжность (Н) — это способность системы работать с определённой долей сбоев, и обычно характеризуется 2-мя показателями: 1) вероятность сбоя, и 2) временем восстановления после сбоя.

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

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

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

Вероятность сбоя

В общем случае стоит предъявить как минимум требования к допустимости отказов произвольной, любой функции системы:

Н-1. Система должна демонстрировать уровень надёжности, при котором вероятность сбоя при обращении к её функциям не превышает 5%.

В более сложных случаях можно поделить всё множество функций системы на несколько классов с разными ожиданиями по надёжности и предъявлять требования уже к ним или даже к надёжности отдельных функций:

Н-2. Система должна демонстрировать уровень надёжности, при котором вероятность сбоя при обращении к учётным* функциям не превышает 5%.

Дополнение: Под учётным функциями понимаются функции создания, обновления, удаления объектов учёта системы.

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

Н-3. Система должна демонстрировать уровень надёжности, при котором вероятность сбоя при обращении к функции оплаты (Ф-47) не превышает 0,5%.

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

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

Этот показатель удобнее всего задавать через benchmarking — измерение аналогичного времени в продуктах-конкурентах и изучение опыта пользователя.

Например, в интернете многие пользователи привыкли, что в случае сбоя в показе страницы пользователь может её обновить принудительно и уже на этот раз страница покажется правильно, иначе это будет уже выглядеть не только как сбой, но и в целом недоступность системы (хоть и для одного пользователя, а не всех). Таким образом ожидаемое время восстановления после сбоя в отображении веб-страницы — 0,5-1 секунды.

В случае внутренних систем автоматизации предприятия и редко вызываемых функций допустимое время восстановления может достигать нескольких минут. А в случае создания прототипов и MVP — даже часов.

Пример формулировки требования ко времени восстановления после сбоя:

Н-4. Система должна демонстрировать уровень надёжности, при котором время восстановления после сбоя в работе отдельной функции не превышает 3 секунд в 90% случаев.


Профили качества

Уровни качества

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

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

Можно условно выделить четыре уровня качества, на котором может находиться система по каждому из аспектов качества:

  • 0 — низкий уровень, посредственное качество

  • 1 — средний уровень, обычное, приемлемое качество

  • 2 — высокий уровень, повышенное качество

  • 3 — исключительный уровень, необычное, редкое качество

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

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

Типовые значения требований для Производительности

Показатель /
уровень качества

0

1

2

3

Пропускная способность:

П-1.1 Максимальное количество одновременно работающих пользователей, не менее

1

30

300

1000

П-1.2 Количество обрабатываемых запросов в секунду, не менее

10

100

1000

Задержка:

П-2.1 Время отклика системы в 80% случаев, не более, сек

10

3

1

0,1

П-2.2 Исполнение 80% запросов за время, не более, сек

5

3

1

Типовые значения требований для Масштабируемости

Показатель /
уровень качества

0

1

2

3

M-1. Стоимость десятикратного увеличения мощности системы, % от стоимости годовой эксплуатации системы

≤ 900

≤ 200

≤ 100

M-2. Характер зависимости времени отклика от количества запросов в секунду, не хуже чем

Степенной парабола-образный

Линейный

Степенной корне-образный

Логарифми-ческий

Типовые значения требований для Доступности

Показатель /
уровень качества

0

1

2

3

Д-1.1. Допустимое время простоя в час, минут, не более

10

1

0,25

0,02

Д-1.2. Коэффициент доступности, в час, не менее, %

83

98

99,6

99,97

Д-2.1. Допустимое время простоя в сутки, минут, не более

180

20

4

0,25

Д-2.2. Коэффициент доступности, в час, не менее, %

88

98,6

99,7

99,98

Д-3.1. Допустимое время простоя в месяц, часов, не более

50

5

1

0,1

Д-3.2. Коэффициент доступности, в месяц, не менее, %

93

99,3

99,9

99,99

Типовые значения требований для Надёжности

Показатель /
уровень качества

0

1

2

3

Н-1. Вероятность сбоя, % обращений

≤ 5

≤ 0,5

≤ 0,05

Н-2. Время восстановления после сбоя, минут

≤ 5

≤ 0,5

≤ 0,05

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

Классы программных систем

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

В старых советских стандартах на качество ПО была предложена классификация из 12 категорий систем — см. ГОСТ 28195-89.

Мы не каждый день разрабатываем новые СУБД или САПР, поэтому эта классификация порядком потеряла актуальность для массовой коммерческой разработки и так что давайте рассмотрим классификацию прикладного ПО и систем, соответствующую реалиям нашего времени:

1. Простые интернет-сайты:
1.1. Home Site — личный сайт
1.2. Business Site — сайт компании

2. Публичные мобильные приложения:
2.1. Consumer Mobile App — мобильное приложение для частных лиц
2.2. Enterprise Mobile App — мобильное приложение для компаний

3. Потребительские интернет-сервисы и настольные приложения:
3.1. Consumer Web Service — публичный интернет-сервис для частных лиц
3.2. Consumer Desktop App — настольная программа для частных лиц (требует установки)

4. Заказное ПО для компаний:
4.1. Custom Enterprise Desktop/Web App — заказное клиентское приложение для бизнеса (требует установки)
4.2. Custom Enterprise Server App — заказное серверное приложение для бизнеса (требует установки)

5. Тиражируемое ПО для компаний:
5.1. Enterprise Desktop App — тиражируемая настольная программа для бизнеса (требует установки)
5.2. Enterprise Server App — тиражируемая серверная программа для бизнеса (требует установки)

6. Отдельные программные компоненты:
6.1. Custom Component — заказной, уникальный компонент
6.2. Serial Component — тиражируемый, распространяемый компонент

7. Массовые облачные интернет-сервисы по подписке:
7.1. B2C SaaS — облачный интернет-сервис для частных лиц, распространяемый по модели подписки (похож на 3.1, но тут пользователь получает собственное пространство для работы, а не просто личный кабинет)
7.2. B2B SaaS — облачный интернет-сервис для компаний, распространяемый по модели подписки (не требует установки)

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

Типовые уровни внешнего качествадля програмнных систем разного класса

Класс системы

Производи-тельность

Масштаби-руемость

Надёжность

Доступность

1.1 Home Site

0

0

1

0

1.2 Business Site

1

1

1

1

2.1 Consumer Mobile App

1

1

1

1

2.2 Enterprise Mobile App

1

1

2

1

3.1 Consumer Web Service

2

2

2

1

3.2 Consumer Desktop App

2

1

2

2

4.1 Custom Enterprise Desktop/Web App

2

1

2

1

4.2 Custom Enterprise Server App

2

2

3

2

5.1 Enterprise Desktop App

2

2

2

2

5.2 Enterprise Server App

3

2

3

3

6.1 Custom Component

2

2

3

3

6.2 Serial Component

3

3

3

3

7.1 B2C SaaS

3

3

3

3

7.2 B2B SaaS

3

3

3

3

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

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

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

Стадии зрелости ПО

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

Стадия зрелости ПО

Понижающий коэффициент

Прототип

-3

Ранняя версия

-2

Демо-версия

-1

Промышленная версия

0

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

Например, если ваша система является прототипом, понижать уровень качества на 3 пункта и т.д.

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

Учёт допущений

Можно ли подрядчику, исполнителю, команде подписывать требования к внешнему качеству ПО в таком виде (как показано выше)?

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

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

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

К таким ограничениям относятся:

  • скорость и надежность сетевых соединений;

  • совместимость с версиями оборудования, ОС и браузеров;

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

  • другие ограничения в зависимости от контекста.

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

Пример допущений и ограничений

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

Пользовательское оборудование:

ПО-1. Персональный компьютер архитектуры IBM PC с доступом в корпоративную сеть Заказчика со следующими характеристиками:

  1. Объём оперативной памяти не менее 2 Гб;

  2. Объём долговременной памяти не менее 256 Гб;

  3. Мощность центрального процессора не менее 40 Гфлопс;

  4. Электронный дисплей с разрешением не менее 1024 пикселов по горизонтали;

  5. Компьютерная клавиатура;

  6. Компьютерная мышь;

  7. Сетевая карта со скоростью передачи данных не менее 10 Мбит/с.

БП-1. В помещении Заказчика обеспечено бесперебойное питание персональных компьютеров пользователей системы со временем отключения питания не более 2 минут в день в рабочее время с 9 до 19 часов московского времени.

Серверное оборудование:

СО-1. Серверное вычислительное оборудование архитектуры IBM PC с доступом в интернет со следующими характеристиками:

  1. Объём оперативной памяти не менее 128 Гб;

  2. Объём долговременной памяти не менее 4 Тб (RAID);

  3. Мощность центрального процессора не менее 200 Гфлопс;

  4. Сетевая карта со скоростью передачи данных не менее 1 Гбит/с.

БП-2. В помещении Заказчика обеспечено бесперебойное питание серверного вычислительного оборудования системы со временем отключения питания не более 2 минут в неделю в интервале с 6 до 0 часов московского времени.

4.2.4. Предположения о сетевом соединениииспользуемом при эксплуатации программной системы

СС-1. Скорость передачи данных в корпоративной сети заказчика не менее 100 Мбит/с;
ДС-1. Доступность сетевого соединения и смежных систем составляет не менее 99,5%.

Инструкция по применению

Как инженеру по требованиям в повседневной работе использовать материалы этой статьи? Вот примерный план действий:

  1. Определить существующие ограничения (например, связанные со смежными системами или оборудованием);

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

  3. Определить уровень качества: для этого посмотреть рекомендованный уровень качества разных атрибутов для систем выбранного класса. При необходимости учесть уровень зрелости системы и снизить уровень качества в соответствии с ним.

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

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

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

Я не рекомендую вам сразу в ближайшем проекте применять все 4 рассмотренных показателя качества СРАЗУ, начните с 1-2 наиболее важных для вашего проекта, вашей программной системы.

Помогите команде проекта научиться их систематически измерять и обеспечивать, причём здесь будет очень велика роль ваших коллег — специалистов по тестированию и, возможно, DevOps-инженеров.

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

Стандарты в области качества

Некоторые отраслевые стандарты, которые использовались при подготовке статьи:

Устаревшие советские стандарты:

  1. ГОСТ 28195-89 Оценка качества программных средств. Общие положения

  2. ГОСТ 28806-90 Качество программных средств. Термины и определения

Современные международные стандарты:

  1. ГОСТ Р ИСО/МЭК 25010-2015. «Информационные технологии. Системная и программная инженерия. Требования и оценка качества систем и программного обеспечения (SQuaRE). Модели качества систем и программных продуктов»

  2. ГОСТ Р ИСО/МЭК 25021-2014. «Информационные технологии (ИТ). Системная и программная инженерия. Требования и оценка качества систем и программного обеспечения (SQuaRE). Элементы показателя качества»

  3. ГОСТ 27.002-2015. МЕЖГОСУДАРСТВЕННЫЙ СТАНДАРТ. НАДЕЖНОСТЬ В ТЕХНИКЕ. Термины и определения


Вопросы и ответы

Вопрос:

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

Ответ:

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

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

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

Вопрос:

Существуют ли какие-то препятствия для достижения высокого внешнего качества, если внутреннее качество находится на низком уровне?

Ответ:

Внутреннее качество напрямую влияет на внешнее качество.

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

Можно проследить следующую зависимость: внутреннее качество влияет на внешнее качество продукта, а внешнее качество продукта влияет на внешнее качество использования.

Вопрос:

Как варьировать значения показателей для уровней качества 0 и 3 в меньшую и большую сторону соответственно?

Ответ:

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

Вопрос:

Встречалась ли в вашей практике ситуация, при которой рассчитывалась бы надёжность, в частности, вероятность сбоя? Если да, то каким образом производился расчёт?

Ответ:

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

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

Вопрос:

Как задавать надёжность на этапе технического проектирования?

Ответ:

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

Об авторе

Денис Бесков

Основатель и руководитель школы системного анализа и проектирования Systems Education. Автор курсов, ИТ-предприниматель и методист

  • Более 20 лет в индустрии на позициях разработчика баз данных, архитектора, системного аналитика, руководителя отдела анализа (35 человек) и менеджера продуктов

  • Основной автор федерального профстандарта «Системный аналитик»

  • Вёл учебный курс по анализу требований в МФТИ

  • Организатор Летнего Аналитического Фестиваля 2013 и онлайн-марафона «Проектные истории» 2016

  • Более 20 выступлений на ИТ-конференциях

  • Certified Professional for Requirements Engineering (IREB CPRE)

Добавил:

Upload

Опубликованный материал нарушает ваши авторские права? Сообщите нам.

Вуз:

Предмет:

Файл:

Ответы на госы по АПИС.doc

Скачиваний:

3

Добавлен:

26.09.2019

Размер:

198.14 Кб

Скачать

Атрибуты:

  • Качества системы

    • готовность

    • модифицируемость

    • производительность

    • безопасность

    • контроль на пригодность

    • практичность

  • Качества архитектуры

    • корректность и
      завершенность

    • простота реализации

    • концептуальная
      целостность

  • Коммерческие

    • срок выхода продукта

    • срок службы системы

    • поэтапное внедрение

    • интегрируемость с
      любыми системами

    • стоимость и прибыль

Сценарий — это требование к системе.

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

Элементы сценария:

  • источник (субъект,
    порождающий событие)

  • событие

  • контекст (режим
    работы или условия, в которых находится
    система)

  • объект (на который
    влияет событие)

  • реакция (действие,
    предпринимаемое системой)

  • количественная мера
    реакции (для оценки состояния системы)

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

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

Готовность
— вероятность функционирования системы
в момент времени, когда в этом возникает
необходимость.

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

Источник

Событие

Объект

Условие

Реакция

Мера

Внутренний

Внешний

Неисправность:

  • бездействие

  • аварийная
    ситуация

  • несоблюдение
    ограничений

  • неверная
    реакция

Процессор

Память

Информационный
канал

Процессы

Режим с ухудшенными
характеристиками

Недоступность

Оповещение

Отключение
источника

Регистрация

Наработка на
отказ

Время
восстановления

Факт
готовности

Модифицируемость
– это простота или стоимость внесения
изменений в систему.

Источник

Событие

Объект

Условие

Реакция

Мера

Пользователь

Админ.

Разраб.
системы

Запрос на изменение/

Добавление
функции, атрибутов или характеристик
системы

Пользовательский
интерфейс, система,

Этап проектирования

Реализации

Интеграции

Развертывания

Эксплуатации

Локализация
изменений, выполнение модиф. Тест и
развертывание изменений

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

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

Источник

Событие

Объект

Условие

Реакция

Мера

Внутренний

Внешний

Переодичное

Непереодичное

Слчайное

Система или ее
компонент

Нормальный режим

Перегруженный
режим

Обработка событий

Снижение
уровня обслуживания

Задержка

Предельный
срок

Пропуск

Неустойчивость

Коэффициент
неудач

Тактики
реализации производительности

  1. Тактика снижения
    потребления ресурсов

    1. Повышение
      производительности за счет оптимизации
      алгоритмов, отказа от использования
      медленных ресурсов, выявления узких
      мест.

    2. Сокращение
      непроизводственных издержек. Отказ
      от посредников, лишних выводов и
      операций копирования данных.

    3. Уменьшения частоты
      срабатывания.

    4. Ограничение времени
      обработки входящих запросов.

    5. Ограничение длины
      очереди входящих запросов.

  2. Тактика управления
    ресурсами

    1. Параллельная
      обработка поступающих запросов.

    2. Дублирование данных
      или вычислений.

    3. Увеличение
      вычислительной мощности системы.

  3. Тактика доступа к
    ресурсам

    1. FIFO.

    2. На основе приоритетов.

      1. Статические
        приоритеты в зависимости от времени
        запуска задачи

      2. Статические
        приоритеты в зависимости от предельного
        срока обработки

      3. Статические
        приоритеты в зависимости от частоты
        поступления запросов.

      4. Динамические
        приоритеты с циклическим обслуживанием
        запросов.

      5. Динамические
        приоритеты в зависимости от предельного
        срока обработки

Безопасность
— способность противостоять попыткам
несанкционированного доступа к данным
при одновременном обслуживании легальных
пользователей.

Тактики
реализации безопасности

  1. Противодействие
    атакам

    1. Аутентификация
      (проверка на то, является ли пользователем
      тем, за кого себя выдает)

    2. Авторизация (проверка
      прав доступа авторизованного
      пользователя)

    3. Обеспечение
      целостности данных (кэширование,
      контрольные суммы, электронная подпись)

    4. Защита от внешних
      воздействий (через ОС)

    5. Ограничение сетевого
      доступа

  2. Обнаружение атак

  3. Восстановление после
    атак

  4. Идентификация
    злоумышленника

    1. Журнал транзакций

Контролепригодность
— способность программы демонстрировать
неисправность в процессе тестирования.

Тактики:

  1. Документирование
    входных/выходных данных

    1. Запись/считывание
      информации при прохождении через
      компонент

    2. Тестирование
      компоненты (замена компонента
      эквивалентным)

  2. Внутренний мониторинг
    (компонент сам регистрирует информацию
    о своем состоянии)

Практичность — степень
простоты выполнения пользователем
стоящей перед ним задачи.

Тактики:

  1. Тактики на этапе
    проектирования

    1. Отделение
      пользовательской информации от
      остальных компонентов системы (шаблоны
      архитектыры)

  2. Тактики на этапе
    выполнения

    1. Поддержка модели
      задач

      Система определяет, что
      пользователь намерен сделать и пытается
      ему помочь.

    2. Поддержка модели
      пользователя

      Система собирает
      информацию о навыках пользователя.

    3. Поддержка модели
      системы

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Продолжаю публикацию перевода отчёта SEI о классификации бизнес-целей.

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

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

3. Использование категорий

Теперь, когда мы создали эту категоризацию, для чего мы можем ее использовать? Мотивация для этих «археологических раскопок» в наборах бизнес-целей из прошлых оценок ATAM заключалась в том, что у организаций обычно возникали проблемы с созданием верхнего уровня дерева полезностей и презентации бизнес-целей. Кроме того, презентации бизнес-целей, которые они создали, были самого разного качества. Часто организации просто повторно использовали существующую презентацию. Эта презентация обычно не соответствовала потребностям ATAM и, следовательно, давала плохие результаты.

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

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

2. Обеспечить связь между полезностью и конкретными сценариями атрибута качества в процессе создания дерева полезности. Дерево утилит — это полезное нисходящее устройство для выявления и структурирования, которое уже много лет успешно применяется в оценках ATAM. Однако обычно заинтересованные стороны не могут начать процесс. Наличие примеров бизнес-целей для демонстрации заинтересованным сторонам наряду с примерами сценариев, выведенных из этих целей, облегчит начало процесса.

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

3.1. Снижение стоимости разработки

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

• Бизнес-цель: управлять гибкостью
Сценарий атрибута качества: в систему добавлен дополнительный параметр. Значение этого параметра проверяется на непротиворечивость и возможные неверные значения в течение 10 минут.

• Бизнес-цель: распределенная разработка
Сценарий атрибута качества: Компонент A разрабатывается в Месте X, а Компонент B разрабатывается в Месте Y. Пропущенный крайний срок определяется как для Компонентов A, так и B. Причина пропущенного крайнего срока определяется, и предлагается решение в течение двух человеко-дней.

• Бизнес-цель: мобильность
Сценарий атрибута качества: система A перемещается с платформы B на платформу C без потери функциональности в течение двух человеко-недель.

• Бизнес-цель: открытые системы / стандарты
Сценарий атрибута качества: компонент, соответствующий стандарту X, интегрируется в систему в течение двух человеко-дней.

• Бизнес-цель: тестируемость
Сценарий атрибута качества: модификация функции полностью тестируется в течение двух человеко-дней.

• Бизнес-цель: продуктовые линейки
Сценарий атрибута качества: выпускается новый продукт. Этот продукт должен повторно использовать более 80% основных активов, а для его завершения потребуется не более восьми человеко-лет.

• Бизнес-цель: интегрируемость
Сценарий атрибута качества: интеграция подсистем A, B и C будет завершена в течение двух человеко-месяцев.

• Бизнес-цель: взаимодействие
Сценарий атрибута качества: после развертывания Система A сможет взаимодействовать с существующими системами B и C с использованием протокола D без дальнейших изменений.

3.2. Снижение затрат на развертывание и эксплуатацию

• Бизнес-цель: простота установки и простота ремонта
Сценарий атрибута качества: новый выпуск системы A можно развернуть и установить на рабочие столы всех пользователей в течение двух дней.

Сценарий атрибута качества: количество операторов, необходимых для работы с Системой A, будет вдвое меньше, чем требуется для работы с существующей Системой B.

3.3. Снижение затрат на обслуживание

Бизнес-цель: гибкость / настраиваемость
Сценарий атрибута качества: новая функция может быть добавлена в систему A в течение двух человеко-дней.

3.4. Снижение стоимости вывода системы / перехода на новую систему

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

3.5. Улучшение возможностей / качества системы

• Бизнес-цель: производительность
Сценарий атрибута качества: пользователь вводит запрос карты через Интернет во время нормальной работы, и полная карта отправляется пользователю в течение двух секунд.

• Бизнес-цель: надежность / доступность
Сценарий атрибута качества: когда датчик перестает реагировать, система обнаруживает неисправный датчик, устанавливает его состояние как недоступный и сообщает о состоянии оператору в течение 100 миллисекунд.

• Бизнес-цель: продуктовые линейки
Сценарий атрибута качества: выпускается новый продукт. Этот продукт должен повторно использовать более 80% основных активов, а для его завершения потребуется не более восьми человеко-лет.

• Бизнес-цель: простота использования.
Сценарий с атрибутом качества: без обучения начинающий пользователь может создать простой рисунок с помощью инструмента рисования.

• Бизнес-цель: безопасность
Сценарий с атрибутом качества: когда конечный пользователь пытается получить доступ к неавторизованной веб-странице, перейдя на нее напрямую, без входа в систему, в доступе отказывается, и попытка регистрируется.

• Бизнес-цель: сохранность
Сценарий атрибута качества: пилот пытается посадить самолет без опускания шасси. Система предупреждает пилота и предпринимает корректирующие действия.

• Бизнес-цель: масштабируемость / расширяемость
Сценарий атрибута качества: два новых сервера данных могут быть добавлены в систему за два человеко-дня без простоя системы.

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

• Бизнес-цель: системные ограничения
Сценарий атрибута качества: система будет реализована с использованием PHP 5, MySQL 4.1 и Apache 2.0.

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

3.6. Улучшение позиции на рынке

• Бизнес-цель: расширить или сохранить долю рынка
Сценарий атрибута качества: Систему A можно перенести на платформу B в течение одной человеко-недели.

• Бизнес-цель: поддерживать или улучшать репутацию
Сценарий с атрибутом качества: Система A обеспечивает на 20% лучшее время отклика для варианта использования X, чем ее конкуренты, с на 10% меньше ошибок.

• Бизнес-цель: выход на новые рынки
Сценарий атрибута качества: система A позволит организации B продавать продукты на новом рынке C.

• Бизнес-цель: сократить время вывода на рынок
Сценарий атрибута качества: Система A будет завершена в течение двух календарных лет.

3.7. Поддержка улучшенных бизнес-процессов

• Бизнес-цель: распределенная разработка
Сценарий атрибута качества: Система A будет совместно разработана командами в пунктах B, C и D в течение 20 человеко-лет и в течение шести месяцев.

• Бизнес-цель: поддерживать рабочие места сотрудников в устаревших системах
Сценарий атрибута качества: Система A будет обслуживаться существующими командами в пунктах A и B в течение следующих двух лет.

3.8. Повышение уверенности и восприятия системы

Бизнес-цель: поддерживать или улучшать репутацию
Сценарий с атрибутом качества: Система A обеспечивает на 20% лучшее время отклика для варианта использования X, чем ее конкуренты, с на 10% меньше ошибок.

Продолжение следует…

Понравилась статья? Поделить с друзьями:
  • Сценарий атаки на веб приложение
  • Сценарий аптека тетушки пчелы
  • Сценарий апокалипсиса 2022
  • Сценарий атаки информационная безопасность
  • Сценарий апокалипсис борджиа