Как задавать требования к качеству ПО в цифрах? |
12.07.2022 00:00 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Автор: Денис Бесков ВведениеТребования к качеству, несмотря на свой небольшой размер, очень сильно влияют на реализуемость всей совокупности требований, на трудоёмкость, длительность и стоимость реализации, а следовательно окупаемость инвестиций в разработку и в целом возможную успешность проекта. Это та причина, по которой многие подрядчики стараются избегать таких требований, как огня, что перекладывает риски во времени на более поздние этапы и на заказчика. Но в мире честных, открытых отношений выгоднее заранее обсудить эти аспекты, чем потом с удивлением спорить при сдаче, что система тормозит, в ТЗ про это ничего не сказано, «вы же профессионалы» и всё такое. Стандарты по программной и системной инженерии предлагают десятки видов атрибутов качества системы, а заказчики требуют, чтобы система была удобной, быстрой, надёжной и безопасной. При этом остаётся прагматический вопрос — а что именно писать в требования, чтобы они были полезными, измеримыми, реализуемыми? С точки зрения системной инженерии, требования к качеству программной системы являются разновидностью системных ограничений (constraints) и в этом они отличаются от требований к способностям (capabilities) системы, в мире ИТ обычно называемых «функциональными». Пока что умение специалистов и команд выявлять и формулировать такие ограничения представляет собой скорее искусство, а не ремесло, и не инженерию. Давайте попробуем сделать это хотя бы ремеслом. Введение в требования к качеству: Кому и когда нужны требования к программной системе? Самые полезные атрибуты качества Пример требований к внешнему качеству программной системы Как определять конкретные значения требований? 4 важнейших атрибута внешнего качества: Производительность, её показатели и примеры требований Масштабируемость, её показатели и примеры требований Доступность, её показатели и примеры требований Надёжность, её показатели и примеры требований Уровни качества и типовые значения показателей Типовые уровни качества для разных классов программных систем Кому и когда нужны требования к качеству программной системы?Большинство начинающих аналитиков и проектировщиков работают с системами на уровне функций: пишут сценарии использования, рисуют макеты интерфейсов. Со временем любой инженер по требованиям сталкивается с проблемой качества ПО или разработкой сложной системы. В таком случае встает вопрос разработки не функциональных требований, а ограничений, что влечет за собой необходимость изучения атрибутов качества ПО. Вот несколько ситуаций, при которых может потребоваться выявлять атрибуты качества:
Вот несколько примеров того, как недостаточное внимание к качеству системы может привести к плачевным последствиям:
Еще одна ситуация, с которой может столкнуться команда разработки. Иногда при проектировании системы отсутствуют требования к скорости обучения пользователей, система содержит сложный функционал и разрабатывается исходя из предположения, что заказчик возьмет на себя работы по обучению пользователей. К тому же разработчикам, которые погружены в работу над системой, кажется, что она проста и интуитивно понятна. В процессе сдачи выясняется, что, хотя функционал системы работает корректно, разобраться в нем самостоятельно практически невозможно: требуются длинные инструкции или даже обучение. Это приводит к увеличению порога вхождения для пользователей системы, росту количества пользовательских ошибок и другим неприятным последствиям, заказчик недоволен и просит переделать систему. А на финальном этапе это крайне дорого. Самые полезные атрибуты качестваИз десятков возможных атрибутов качества стоит начать с наиболее важных в большинстве проектов: 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. Требования к Производительности
4.4.2. Требования к Масштабируемости
4.4.3. Требования к Надежности
4.4.4. Требования к Доступности
Как определять конкретные значения требований?Хорошие требования к качеству являются результатом исследований, измерений, расчётов, переговоров, споров и договорённостей. Давай рассмотрим несколько вариантов действий по выявлению и формулированию требований к качеству: 1. Вариант первый, наивный: напрямую спросить заказчика, какую систему он хочет получить Скорее всего, заказчик честно скажет, что хочет быстрое, надёжное и удобное ПО. При попытке уточнить детали, вы получите либо размытые требования («должна быть обеспечена безопасность передаваемых данных»), либо завышенные. Завышенные требования — это требования, озвученные без понимания того, нужны ли они для конкретной системы и к каким временным и материальным затратам приведет их выполнение (например, требование к доступности, звучащее как «система должна быть доступна 24/7»). Требования, полученные таким образом и не проработанные аналитиком дополнительно, будет невозможно протестировать при сдаче ПО заказчику, либо их будет очень сложно реализовать. В любом случае это приведёт к дополнительным конфликтам с заказчиком, а ведь именно этого мы хотим избежать, когда формулируем требования к качеству системы. Конечно, требования нужно обсуждать и согласовывать с заказчиком, но перекладывать на него работу по формулированию требований — это не очень хорошая идея. 2. Второй вариант, идеальный: расчёты Всегда, если есть возможность, желательно считать цифры, исходя из уже с хорошей точностью известных показателей бизнеса — количества сотрудников, клиентов, заказов, средней стоимости заказа и т.д. Конкретные примеры рассмотрим ниже для каждого атрибута качества. 3. Вариант третий: сформировать требования к качеству своей системы на основе имеющихся стандартов Однако, предлагаемые в различных стандартах (например в семействе стандартов ISO/IEC) и литературе (например в The Quest for Software Requirements, Roxanne E. Miller) списки критериев качества часто оказываются слишком громоздкими или их тяжело использовать на практике. Приводимая в них классификация систем может быть устаревшей или неактуальной для вашей области, а предлагаемые характеристики качества часто тяжело «переводить» на язык заказчика для обсуждения. Чтобы требования получились жизнеспособными, требуется потратить много усилий на адаптацию такого стандарта под свою ситуацию. Заглядывать в специальную литературу полезно, но брать решения as is получается не всегда. 4. Вариант четвёртый: привлечь отдельных специалистов(например, эксперта в области информационной безопасности) Будем честны, далеко не всегда есть такая возможность. Бывает, формирование требований к качеству системы сваливают на архитектора, ссылаясь на то, что у него широкая техническая экспертиза. Но такой подход тоже имеет свои минусы, потому что архитектор — это исполнитель. Формулируя требования к качеству, он по сути пишет требования сам для себя и может быть не объективен. Иногда архитектор может схалтурить, а иногда (в погоне за действительно крутой системой) написать требования, реализация которых слишком сильно увеличит стоимость и сроки разработки. 5. Вариант пятый: проанализировать показатели качества в аналогичных системах Такой подход называется benchmarking — измерение аналогичных показателей систем-конкурентов, имеющих схожую сферу применения и параметры среды. Тогда требование можно формулировать как:
Это разумный умеренный бизнес-подход. Опираясь на полученные значения, вы можете сделать свою систему лучше, или хотя бы не хуже систем-конкурентов. Однако систем-аналогов иногда просто нет в свободном доступе, то есть их изучение невозможно. А если даже и есть, то для измерения ее надежности или производительности потребуется привлечь отдельных специалистов. Это делает такой подход для большинства случаев очень дорогостоящим или вовсе невозможным. 6. Вариант шестой: использовать типовые профили качества В каждом из описанных выше вариантов есть здравое зерно, однако в чистом виде применять их сложно. Мне неизвестно готовых отраслевых профилей качества, поэтому я решился разработать и предложить свои. С ними можно ознакомиться во второй половине статьи. В этой статье будет предложен подход, который позволит формировать чёткие и тестируемые требования к качеству в терминах, понятных заказчику. Подход может быть использован в качестве готового инструмента для оценки уровня качества системы или взят за основу и видоизменен в зависимости от целей и контекста. Давайте рассмотрим 4 важнейших атрибута внешнего качества, их показатели и методики формулирования. ПроизводительностьПроизводительность (П) — характеристика, которая отвечает за то, какое количество каких операций и как быстро может выполняться в системе, насколько система подходит для одновременной работы нескольких пользователей (или взаимодействия с несколькими системами). При проектировании системы есть большая разница, будут ли её использовать десять или сотни тысяч пользователей, также важно, предполагается ли пиковая нагрузка или распределение запросов от пользователей будет равномерным. Например, если вы проектируете портал, на котором будут доступны результаты экзамена, вы должны учесть не только общее количество пользователей, но и тот факт, что почти все они одновременно зайдут на портал, чтобы посмотреть свои результаты и он должен выдержать такой пик нагрузки. Дополнительно можно разделить атрибут Производительность на два под атрибута: Пропускная способность (throughput) и Задержка (latency). Пропускная способность Пропускная способность может измеряться в:
Пример требования к пропускной способности:
Это требование можно брать в работу, если сопроводить его допущением, что каждый пользователь производит в среднем не более 1 запроса в 20 секунд (3 запроса в минуту). Задержка Задержка обычно измеряется средним временем исполнения запроса. Пример прагматичного требования к задержке:
Объём данных Кроме того, очень часто бывает важным оговорить не только и не столько количество запросов, но и объём данных, которые хранит или обрабатывает система.
МасштабируемостьМасштабируемость (М) показывает, насколько можно увеличить мощность системы и сколько это будет стоить. Чем больше ресурсов придётся вкладывать дополнительно, тем менее масштабируемой считается система. Коварство этого атрибута качества в том, что сразу после сдачи системы он может казаться неважным, однако при попытке доработать систему и увеличить её мощность, масштабируемость становится критичным параметром и отсутствие изначальных требований может привести к необходимости полностью или частично переписать систему. Если нужно увеличить мощность системы в десять раз, придётся заплатить в десять, сто или всего в два раза больше? Ответ на этот вопрос показывает, насколько хорошо масштабируется система. Кроме того, масштабируемость является своего рода производной от Производительности во времени, она характеризует то, позволяет ли система увеличивать нагрузку на неё в принципе, и если да, то насколько хорошо сохраняются её характеристики производительности при росте нагрузки. Обычно эти характеристики ухудшаются, вопрос только в том, насколько быстро. Принципиальная масштабируемость Базовым требованием к масштабируемости является принципиальная масштабируемость:
Это может показаться странным, но иногда встречаются программные архитектуры, которые принципиально не позволяют подключаться к системе большему, чем N, числу пользователей, что приводит к отказам в обслуживании для всех M > N пользователей. Характер масштабируемости Дальнейшие требования к качеству масштабирования можно задавать либо через характер кривой времени отклика и времени обработки запросов в зависимости от нагрузки либо, более грубо, через стоимость увеличения производительности. Характер падения производительности
Давайте рассмотрим эти 4 варианта зависимости подробнее: Логарифмический характер зависимости самый лучший по качеству — при росте нагрузки время отклика растёт с сильным затуханием, это некоторый эталон масштабируемой архитектуры. К такой форме стоит стремиться только в том случае, если в обозримом будущем (1-3 года) с высокой вероятностью может понадобиться рост производительности не просто на десятки процентов или разы, а в десятки или сотни раз. В случае стартапов зачастую таким требованием разумно пренебрегают, считая, что если вдруг стартап выстрелит, то его основатели смогут получить инвестиции, достаточные для переписывания системы с 0 (т.е. для полной замены системы). Степенной характер (где 0 < n < 1 — «график корня») зависимости остаётся идеальным для большинства систем. Он хуже, чем логарифмический, но при этом всё равно очень выгодный для бизнеса, т.к. на обслуживание каждой следующей единицы нагрузки (пользователей, запросов, объёмов данных) бизнес тратит всё меньше и меньше ресурсов. Хорошие архитекторы умеют создавать архитектуру с таким качеством. Этот характер применим тогда, когда в течение эксплуатации системы возможен рост нагрузки в несколько раз или порядков (и система должна будет уметь вести себя достойно). Линейный характер зависимости можно считать посредственным, но допустимым для широкого класса систем, у которых не предполагается масштабируемость более, чем на десятки процентов. Степенной характер (где n > 1 — «график параболы») зависимости — это самый худший вид масштабируемости (не считая принципиальной немасштабируемости — отказа системы при увеличении нагрузки за рамками плановой). В таком случае каждая следующая единица нагрузки приводит к непропорционально нарастающему увеличению времени реакции системы в целом.
Стоимость масштабирования Такой вариант описания масштабируемости более понятен представителям бизнеса, т.к. оперирует не математикой, а инвестициями. Пример такого требования:
При этом в стоимость увеличения производительности могут входить как расходы на покупку оборудования, на аренду вычислительных мощностей, так и на модернизацию программной системы в части кода. ДоступностьДоступность (Д) — характеристика, показывающая, какое время может простаивать система, а также процент времени, который система должна быть доступна для работы. Например, если вы делаете систему для использования сотрудниками компании и все они работают в Москве, время простоя может быть достаточно большое, то есть все нерабочее время и выходные система может быть недоступна без риска для бизнеса. Но если сотрудники распределены по всей стране, возможность для простоя системы резко сокращается, так как все работают в разных часовых поясах. В целом современные системы почти всегда можно делать так, чтобы простоя практически не возникало. Но для команд разработки и эксплуатации, особенно в режиме стартапа, удобно, чтобы возникали окна допустимого простоя. Поэтому не стоит жестить с этими требованиями, а лучше делать их, как и все остальные, максимально прагматичными. Допустимое время простоя С точки зрения бизнеса, проще оперировать допустимым временем простоя, чем коэффициентом доступности, кроме того, бывает удобно задавать разные интервалы простоя для разных режимов работы системы — например, в рабочее время, в выходные дни, в ночные и т.д. Как посчитать допустимое время простоя? Проще всего это делать через расчёт допустимого ущерба. Например, заказчик разработки — интернет-магазин, который продаёт товаров на 1 миллион рублей в месяц. Если считать грубо, не принимая во внимание распределение заказов во времени, один час простоя магазина может обернуться потерями в 1 млн / (30 дней * 24 часов) = 1 400 рублей в день или 33 тысячи рублей в месяц. Допустимы ли такие потери? Тут решать заказчику, но чтобы у него было больше фактуры для принятия решения, команда разработки, если она уже известна, может посчитать свои расходы и ежемесячные затраты на снижение времени простоев, например, в 5 раз — с 1 часа в день до 12 минут. В таком случае заказчик сможет аргументированно принять взвешенное решение — например, стоит ли сокращение риска потери 33 тыс рублей в месяц разовых дополнительных инвестиций в размере 300 тысяч рублей на оптимизацию схемы развёртывания и 10 тыс рублей в месяц на аренду специализированного ПО.
Однако может быть такое, что час непрерывного простоя чреват не только потерей заказов, но и потерей лояльности существующих клиентов, поэтому бывает разумно дополнительно ограничить допустимый простой в час.
Обратите внимание, что требование, которое охватывает более длительный интервал наблюдения — сутки, не является простой суммой допустимого времени простоя за час — 24 * 5 = 120 минут, а более жёстко по характеру, это обычная практика, следующая принципу, что допустимые отклонения от нормы не должны становиться нормой и накапливаться при суммировании. Таким образом можно дополнить и более длительным по интервалу наблюдения требованием:
Все 3 требования совместимы и органично дополняют друг друга, задавая прагматичные нормы доступности. Коэффициент доступности Коэффициент доступности, так любимый многими технократами, может быть рассчитан напрямую из допустимого времени простоя. Например, посчитаем для одного часа — 5 минут простоя в час = 55 / 60 = ~92% времени доступности. Как будет выглядеть требование к надёжности, выраженное через коэффициент доступности, а не через время простоя:
Для тренировки можете попробовать самостоятельно рассчитать коэффициент доступности для требований Д-1 и Д-3 выше. НадёжностьНадёжность (Н) — это способность системы работать с определённой долей сбоев, и обычно характеризуется 2-мя показателями: 1) вероятность сбоя, и 2) временем восстановления после сбоя. Если в случае нарушения доступности не работают все функции системы сразу, вся система целиком, то в случае надёжности речь обычно идёт о сбоях в работе её отдельных функций. Функции бывают очень разные по критичности, поэтому это тоже важная характеристика качества системы. При определении этой характеристики, также как и в случае доступности, важно понимать, что обойдётся заказчику дороже: сбой работы системы и понесённые в связи с ним репутационные и иные убытки, или затраты на проектирование и поддержание более надёжного решения. Например, если проектируется платёжная система и сбой может повлечь потерю денег клиента — надёжность становится принципиальной характеристикой, а если проектируется информационный портал, то серьёзные затраты на повышение надёжности могут быть неоправданными. Вероятность сбоя В общем случае стоит предъявить как минимум требования к допустимости отказов произвольной, любой функции системы:
В более сложных случаях можно поделить всё множество функций системы на несколько классов с разными ожиданиями по надёжности и предъявлять требования уже к ним или даже к надёжности отдельных функций:
Обратите внимание, что если вы предъявляете требования к надёжности всех функций системы сразу и их отдельных классов, то требования к общей надёжности не должно быть строже, чем частные требования к классам функций или отдельным функциям.
Время восстановления после сбоя Время, которое нужно программной системе на восстановление после сбоя, влияет на опыт отдельного пользователя, столкнувшегося со сбоем. Этот показатель удобнее всего задавать через benchmarking — измерение аналогичного времени в продуктах-конкурентах и изучение опыта пользователя. Например, в интернете многие пользователи привыкли, что в случае сбоя в показе страницы пользователь может её обновить принудительно и уже на этот раз страница покажется правильно, иначе это будет уже выглядеть не только как сбой, но и в целом недоступность системы (хоть и для одного пользователя, а не всех). Таким образом ожидаемое время восстановления после сбоя в отображении веб-страницы — 0,5-1 секунды. В случае внутренних систем автоматизации предприятия и редко вызываемых функций допустимое время восстановления может достигать нескольких минут. А в случае создания прототипов и MVP — даже часов. Пример формулировки требования ко времени восстановления после сбоя:
Профили качестваУровни качества Ожидания от уровня качества системы не меняются произвольным образом от проекта к проекту, а обусловлены категорией системы и другими, вполне конкретными факторами. Чтобы в любом, даже мелком проекте не изобретать велосипед и не придумывать, как оценить каждый из атрибутов качества, мы можем определить типовые уровни качества и затем посмотреть, что каждый из уровней значит применимо к конкретным атрибутам качества. Можно условно выделить четыре уровня качества, на котором может находиться система по каждому из аспектов качества:
Не обязательно при разработке каждой системы по каждому атрибуту стремиться к достижению исключительного или даже высокого уровня. Вcё зависит от целей, которых нужно достичь. Например, в системе для внутреннего заказчика может больше цениться надёжность, а в системе, разрабатываемой для внешних пользователей, быстродействие может быть значительно важнее. Типовые значения требований для Производительности
Типовые значения требований для Масштабируемости
Типовые значения требований для Доступности
Типовые значения требований для Надёжности
Бизнес-заказчику не всегда интересны точные величины, однако важно иметь возможность оценить выполнение требований к качеству системы. Величины в таблицах приведены примерные, их можно адаптировать под текущий контекст. Классы программных системКак понять, на какой уровень качества ориентироваться при определении значений того или иного показателя? Это можно сделать, опираясь на класс, к которому относится разрабатываемая вами система. В старых советских стандартах на качество ПО была предложена классификация из 12 категорий систем — см. ГОСТ 28195-89. Мы не каждый день разрабатываем новые СУБД или САПР, поэтому эта классификация порядком потеряла актуальность для массовой коммерческой разработки и так что давайте рассмотрим классификацию прикладного ПО и систем, соответствующую реалиям нашего времени: 1. Простые интернет-сайты: 2. Публичные мобильные приложения: 3. Потребительские интернет-сервисы и настольные приложения: 4. Заказное ПО для компаний: 5. Тиражируемое ПО для компаний: 6. Отдельные программные компоненты: 7. Массовые облачные интернет-сервисы по подписке: Ниже в таблице приведены уровни качества, на которые можно ориентироваться при выборе значений для того или иного атрибута в зависимости от класса системы: Типовые уровни внешнего качества для программных систем разного класса
Как пользоваться этой таблицей? Необходимо найти класс, к которому относится ваша система (первый столбец) и посмотреть, какому уровню качества должны соответствовать её атрибуты (столбцы со 2 по 5). Разумеется, в вашей работе могут быть какие-то нюансы, влияющие на требования к качеству, но в таблице приведена некоторые ориентировочные значения, которые можно брать за основу. Все характеристики можно вычислить уникальным образом, основываясь на вашем знании о том, какой проект, какой заказчик, какие есть ограничения по срокам, стоимости и чему-то ещё. Стадии зрелости ПОНеобходимо уточнить, что если система находится на стадии разработки прототипа или бета-версии, целесообразно применять некоторые понижающие коэффициенты.
Как учитывать эти коэффициенты? Прибавлять к ориентировочному уровню качества из большой таблицы выше значение понижающего коэффициента. Например, если ваша система является прототипом, понижать уровень качества на 3 пункта и т.д. Соответственно, для промышленной версии ничего понижать не надо и можно смело ориентироваться на предложенную таблицу. Учёт допущенийМожно ли подрядчику, исполнителю, команде подписывать требования к внешнему качеству ПО в таком виде (как показано выше)? На самом деле нет, эти требования нельзя подписывать только в таком составе и даже в комплекте с функциональными требованиями. Чтобы гарантировать их выполнение, команда разработки, в свою очередь, должна получить некоторые гарантии по производительности вычислительного оборудования, устройств хранения данных и сетевых устройств и соединений. Поэтому требования к качеству надо обязательно сопровождать разделом «Допущения о техническом обеспечении», а раздел требований к качеству предварять уточнением «Последующие требования применимы только при условии выполнения допущений, описанных в разделе X». К таким ограничениям относятся:
Как могут выглядеть типовые допущения об оборудовании, на которые может опираться команда разработки: Пример допущений и ограничений4.2.3. Предположения об оборудовании, используемом при эксплуатации программной системы Пользовательское оборудование: ПО-1. Персональный компьютер архитектуры IBM PC с доступом в корпоративную сеть Заказчика со следующими характеристиками:
БП-1. В помещении Заказчика обеспечено бесперебойное питание персональных компьютеров пользователей системы со временем отключения питания не более 2 минут в день в рабочее время с 9 до 19 часов московского времени. Серверное оборудование: СО-1. Серверное вычислительное оборудование архитектуры IBM PC с доступом в интернет со следующими характеристиками:
БП-2. В помещении Заказчика обеспечено бесперебойное питание серверного вычислительного оборудования системы со временем отключения питания не более 2 минут в неделю в интервале с 6 до 0 часов московского времени. 4.2.4. Предположения о сетевом соединении, используемом при эксплуатации программной системы СС-1. Скорость передачи данных в корпоративной сети заказчика не менее 100 Мбит/с; Инструкция по применениюКак инженеру по требованиям в повседневной работе использовать материалы этой статьи? Вот примерный план действий:
Также можно адаптировать конкретные значения под свою ситуацию и вести их в аналогичной таблице, что поможет систематизировать требования. Выявление отдельных атрибутов и конкретные числовые значения для характеристик помогут вести более конструктивный диалог с архитекторами, заказчиками и другими участниками проекта. А понимание того, что и как влияет на качество системы делает вашу работу как инженера по требованиям более ценной. Я не рекомендую вам сразу в ближайшем проекте применять все 4 рассмотренных показателя качества СРАЗУ, начните с 1-2 наиболее важных для вашего проекта, вашей программной системы. Только после этого, в следующих проектах, беритесь формулировать оставшиеся атрибуты и показатели качества и организовывать их измерение. Стандарты в области качестваНекоторые отраслевые стандарты, которые использовались при подготовке статьи: Устаревшие советские стандарты:
Современные международные стандарты:
Вопросы и ответыВопрос: Какие негативные стороны есть в предложенном подходе определения требований к качеству системы? Ответ: Предложенный в статье подход направлен на то, чтобы максимально защитить интересы Заказчика. В большинстве заказных проектов Подрядчику кажется невыгодным, неудобным фиксировать и подписываться под требованиями к внешнему качеству системы. Это связано с тем, что при ограничении системы не только по функциональности, но и по качеству, подрядчику становится сложнее обеспечивать треугольник «сроки-качество-функциональность», это требует особого уровня инженерной культуры и зрелости. Подрядчик понимает, что обеспечить все предъявляемые требования к качеству может быть проблематично. Если вы работаете на стороне Заказчика, можно использовать предложенный подход в полной мере, но если вы работаете на стороне Подрядчика, нужно применять этот подход с осторожностью, чётко осознавая, какие цели вы преследуете. Вопрос: Существуют ли какие-то препятствия для достижения высокого внешнего качества, если внутреннее качество находится на низком уровне? Ответ: Внутреннее качество напрямую влияет на внешнее качество. Например, если у вас есть задача иметь высокую масштабируемость, при плохом внутреннем качестве этого добиться невозможно, либо придется осуществлять модернизацию системы, что может повлечь большие затраты ресурсов. Можно проследить следующую зависимость: внутреннее качество влияет на внешнее качество продукта, а внешнее качество продукта влияет на внешнее качество использования. Вопрос: Как варьировать значения показателей для уровней качества 0 и 3 в меньшую и большую сторону соответственно? Ответ: Для своей системы вы можете устанавливать значения показателей выше или ниже, в предложенной таблице указаны именно рекомендуемые значения. Но при занижении или завышении значений показателей необходимо быть аккуратными и чётко понимать, зачем вы это делаете. Вопрос: Встречалась ли в вашей практике ситуация, при которой рассчитывалась бы надёжность, в частности, вероятность сбоя? Если да, то каким образом производился расчёт? Ответ: В статье приведены примеры расчёта допустимых пределов вероятности сбоя при разработке требований. Если хочется погрузиться в математику, стоит поизучать теорию надёжности технических систем. Для конкретного прототипа проще и полезнее производить не столько расчёты, сколько измерения. Например, можно выполнять тестирование функций прототипа, рабочей версии программной системы за счёт продолжительного циклического вызова функции — в течение нескольких часов, дней или даже недель. Вопрос: Как задавать надёжность на этапе технического проектирования? Ответ: Задавать надёжность необходимо ещё на стадии формулирования требований. На этапе технического проектирования происходит выбор решения (программная архитектура, технологии, оборудование), которое способно обеспечить требуемую надёжность. Для того, чтобы убедиться, что выбранное решение может обеспечить требуемую надёжность, необходимо разработать прототип системы. Об автореДенис БесковОснователь и руководитель школы системного анализа и проектирования Systems Education. Автор курсов, ИТ-предприниматель и методист
|