Метрика числа ошибок в программе закон миллера

Обновлено: 05.07.2024

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

Вывод уравнения работы

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

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

3. На основании шагов 1 и 2 можно заключить, что программа порождается выполнением N ´ log2h мысленных сравнений.

4. Поскольку объем программы V определяется как

из шага 3 следует, что он равен числу мысленных сравнений, затрачиваемых на порождение программы.

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

6. Так как объем V равен числу мысленных сравнений, а величина, обратная уровню программы, т.е. 1/L, есть среднее число элементарных мысленных различений, входящих в каждое мысленное сравнение, общее число элементарных мысленных различений Е, требуемых для порождения программы, должно задаваться выражением

Можно выявить более глубокий смысл уравнения работы, если вспомнить уравнение (3.1)

и подставить его в уравнение (4.2)

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

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


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



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

…в продуктовом дизайне, да и вообще в жизни.

(Мы продолжаем переводить цикл статей по UX/UI. Полную подборку можно найти в коллекции «UX-дизайн»)

Есть один организационный принцип, которого должны придерживаться все — особенно дизайнеры продуктов. Изо дня в день я вижу, как компании нарушают этот принцип — и в 100% случаев это играет против них. В статье я объясню, что это за принцип и почему важно его учитывать при проектировании продуктов и услуг. Я также расскажу, как он может влиять на эффективность управления людьми, совместной работы — да и работы вообще. Я говорю о законе Миллера. Но вместо того, чтобы рассказывать о законе Миллера, я предлагаю вам для погружения в тему выполнить небольшое упражнение.

Интересуетесь свежими статьями по дизайну? Вступайте в группу на Facebook.

Ищите системное погружение в тему? Загляните в блог для дизайнеров.

Шаг 1

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

Ниже вы увидите список из 20 слов. Внимательно прочтите эти слова и попробуйте запомнить как можно больше. Постарайтесь держать слова “в голове”, не записывайте. У вас около минуты. Когда прочитаете все слова, прокручивайте дальше, до слова СТОП. Потом читайте шаг 2.


Шаг 2

Теперь возьмите ручку и запишите как можно больше слов из списка по памяти. Думайте, вспоминайте, но неподсматривайте в список слов, иначе весь эксперимент насмарку. У вас есть полминутки… Потом вернитесь к списку и посмотрите, сколько слов вы вспомнили.

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

7 элементов — и это называется законом Миллера.

В 1956 году когнитивный психолог Джордж А. Миллер с факультета психологии Принстонского университета написал в журнал Psychological Review статью. Статья называлась “Магическое число семь, плюс-минус два: об ограничениях нашей способности обработки информации”. Позднее статья Миллера стала одной из самых цитируемых работ в области психологии. Ключевая идея теории Миллера в том, что среднестатистический человек может удерживать в кратковременной памяти только 7 ± 2 элементов. Вот информация из статьи на википедии:


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

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

Одна из ключевых концепций закона Миллера — это деление на порции. По сути это означает, что кусочки информации нужно собирать в “гештальты” — информационные порции, которые проще осмыслить. К примеру, слово ·с т а к а н · — это одна “порция”, поскольку буквы скомбинированы в некий осмысленный “гештальт”. Если мы переставим буквы местами · к а а н т с ·, то перед нами уже 6 отдельных порций информации. Формирование “порций” — это важнейший элемент организации информации. Это основа нашего UX.


Элементы информации следует объединять в тематические группы — при этом в каждой группе должно быть не более 9 (а желательно

Чем больше порций информации в вашем интерфейсе, тем сложнее использовать эту информацию при работе с ним. Особенно это проявляется у новичков, потому что у них еще не сформировался “навык” или привычка — что означало бы, что интерфейс записался в долгосрочную память. Закон Миллера постоянно нарушают даже такие гиганты как Facebook, Google и WordPress. И даже не заводите тему автомобильных интерфейсов!

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

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

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

Эффект края — это особенность восприятия, при которой человек лучше запоминает начальные и конечные элементы группы, и хуже — промежуточные. Термин был введен Германом Эббингаузом в результате исследований, которые он проводил на себе. Он установил, что существует функциональная зависимость между позицией элемента в списке и точностью запоминания. Когда нас просят вспомнить элементы списка в любой последовательности, мы сначала называем последние элементы списка (которые еще свежи в памяти — recency effect). Что касается остального списка, люди лучше помнят те элементы, что стояли в начале списка (primacy effect).

В свете этих наблюдений, встают важные вопросы в области бизнеса и дизайна. Если люди лучше помнят начало и конец, то как нам правильно воспользоваться этими “пиковыми” точками восприятия, и как компенсировать недостаток восприятия промежуточных элементов? В какой момент начинается и заканчивается опыт взаимодействия? Может стоит разместить самые важные элементы в начале и в конце? Все эти вопросы UX дизайнер должен задавать себе при проектировании и разработке продукта.


Закон Миллера можно применить в любой ситуации, когда требуется выполнить задачу средней сложности. Достаточно просто уменьшить количество элементов, которые попадают в рабочую память — и собрать их в порции по 5–9 элементов. Так мозгу будет проще запомнить, что и где находится, чтобы при случае быстро найти нужные элементы. Когда список слишком большой, нам сложнее визуализировать его в своей голове — на это уходит дополнительный ресурс мозга.

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

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

Именно поэтому сейчас особенно актуален вопрос отказа от всего лишнего: вещей, продуктов, услуг, которые не дают качественной отдачи. Тут вступает в игру принцип Парето — что 20% вложений обеспечивают 80% результата. Вы пытаетесь быть эффективным, прыгая между кучей разных задач? У вашей команды слишком много инструментов для совместной работы? В команде слишком много человек? Возможно, вы перегружаете новичков информацией?

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

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


Закон Миллера также можно упомянуть в контексте концепции “потока”, которую сформулировал известный психолог Михай Чиксентмихайи. Поток — это состояние концентрации и вовлеченности в решение задачи, которое доставляет человеку чувство удовольствия и уверенности в себе. Ученый называет потокоптимальным состоянием, в котором мы работаем на максимальной мощности и действительно “живем в моменте”.

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

Практические советы

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

Если вам понравилась статья и перевод, дайте нам знать — нажмите 👏 (можно “хлопать” несколько раз!)

А если у вас есть на примете какая-нибудь классная статья по UX и не только — скиньте нам ссылку, и мы будем рады над ней поработать.

Нас можно найти в Facebook: Ольга Жолудова и Ринат Шайхутдинов.

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

1.13. Метрика числа ошибок в программе. Закон Миллера

Предсказывает число первоначальных ошибок (до отладки и тестирования) и не может служить доказательством правильности (корректности) программы, даже если ее значение равно нулю.
^ Джордж Миллер – мозг человека может обрабатывать не более 7+-2 «объектов» одновременно (Закон «7+-2»): 9 двоичных чисел, 8 десятичных чисел, 7 букв алфавита, 5 односложных слов.
Представив эту способность мозга как критическое значение получим ее программное значение.

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

Из уравнения уровня языка

Для английского языка , тогда для описания программы на уровне английского языка

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

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

Время наработки на отказ (

(основная масса ошибок выявляется во время отладки, то есть, приблизительно равна )

^ Количество ошибок в текстах программ пропорционально работе программирования, которая может быть вычислена.

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

 расчетный объем программы.
^

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

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

Учитывая, что оптимальное число входных переменных модуля равно 8, число модулей ПС должно быть равно:

Если , необходимо сделать поправку на число модулей в соответствии с выражением

^ 2. Расчет длины программы.
Длина модуля  слов.

Полная длина программы 

Последним членом часто пренебрегают.
^ 3. Расчет объема программы
Объем одного модуля: 

Объем ПС: 
^ 4. Расчет количества команд ассемблера

 – коэффициент пересчета Кнута на команды ассемблера
^ 5. Расчет календарного времени программирования.

^ 6. Расчет начального количества ошибок (перед комплексной отладкой)

7. Расчет начальной надежности ПС
В пределах календарного времени разработки  период отладки определяется из неравенства

Будем считать, что отладка занимает у разработчика половину времени, 

В настоящее время в программной инженерии еще не сформировалась окончательно система метрик. Действуют разные подходы к определению их набора и методов измерения [10.11-10.13].

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

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

Согласно стандарту [1.16] метрики определяются по модели измерения атрибутов ПО на всех этапах ЖЦ (промежуточная, внутренняя метрика) и особенно на этапе тестирования или функционирования (внешние метрики) продукта.

Остановимся на классификации метрик ПО, правилах для проведения метрического анализа и процесса их измерения.

Типы метрик.

Существует три типа метрик:

  • метрики программного продукта, которые используются при измерении его характеристик - свойств;
  • метрики процесса, которые используются при измерении свойства процесса ЖЦ создания продукта.
  • метрики использования.

Метрики программного продукта включают:

  • внешние метрики, обозначающие свойства продукта, видимые пользователю;
  • внутренние метрики, обозначающие свойства, видимые только команде разработчиков.

Внешние метрики продукта - это метрики:

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

Внутренние метрики продукта включают:

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

Внутренние метрики позволяют определить производительность продукта и являются релевантными по отношению к внешним метрикам.

Внешние и внутренние метрики задаются на этапе формирования требований к ПО и являются предметом планирования и управления достижением качества конечного программного продукта.

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

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

Стандарт ISO/IEC 9126-2 определяет следующие типы мер:

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

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

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

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

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

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

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

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

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

10.1.3. Стандартная оценка значений показателей качества

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

По определению стандарта ISO/IES 9126-2 метрика качества ПО представляет собой "модель измерения атрибута, связываемого с показателем его качества". При измерении показателей качества данный стандарт позволяет определять следующие типы мер:

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

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

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

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

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

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

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

Для изложения оценки значений показателей качества используется стандарт [10.4], в котором представлены следующие методы: измерительный, регистрационный, расчетный и экспертный (а также комбинации этих методов). Измерительный метод базируется на использовании измерительных и специальных программных средств для получения информации о характеристиках ПО, например, определение объема, числа строк кода, операторов, количества ветвей в программе, число точек входа (выхода), реактивность и др.

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

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

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

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

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

Показатели, которые вычисляются с помощью метрических шкал, называются количественные, а определяемые с помощью порядковых и классификационных шкал - качественные.

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

Стандарт ISO/IES 9126-2 рекомендует применять 5 видов шкал измерения значений, которые упорядочены от менее строгой к более строгой:

Читайте также: