Качество программного обеспечения

редактировать
Относится к двум связанным, но различным понятиям: функциональное качество и структурное качество

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

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

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

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

Исторически структура, классификация и терминология атрибутов и показателей, применимых к менеджменту качества программного обеспечения, были получены или извлечены из ISO 9126-3 и последующих ISO 25000: модель качества 2005, также известная как SQuaRE. На основе этих моделей Консорциум качества программного обеспечения ИТ (CISQ) определил пять основных желательных структурных характеристик, необходимых для того, чтобы программное обеспечение могло обеспечить ценность для бизнеса : надежность, эффективность, безопасность, Ремонтопригодность и (адекватный) размер.

Измерение качества программного обеспечения позволяет количественно оценить, в какой степени программа или система оценивают каждое из этих пяти измерений. Агрегированный показатель качества программного обеспечения может быть рассчитан с помощью качественной или количественной схемы оценки или их комбинации, а затем системы взвешивания, отражающей приоритеты. Этот взгляд на качество программного обеспечения, помещенный в линейный континуум, дополняется анализом «критических ошибок программирования», которые при определенных обстоятельствах могут привести к катастрофическим сбоям в работе или снижению производительности, которые делают данную систему непригодной для использования независимо от рейтинга, основанного на агрегированных измерениях. Такие ошибки программирования, обнаруживаемые на системном уровне, составляют до 90% производственных проблем, в то время как на уровне подразделения, даже если они гораздо более многочисленны, ошибки программирования составляют менее 10% производственных проблем. Как следствие, качество кода без контекста всей системы, как W. Эдвардс Деминг описал это, имеет ограниченное значение.

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

Содержание
  • 1 Мотивация
  • 2 Определения
    • 2.1 Пять взглядов Kitchenham, Pfleeger и Garvin на качество
    • 2.2 Качество программного обеспечения согласно Демингу
    • 2.3 Качество программного обеспечения согласно Фейгенбауму
    • 2.4 Качество программного обеспечения согласно Джурану
    • 2.5 Модель качества CISQ
  • 3 Альтернативные подходы
  • 4 Измерение
    • 4.1 Введение
    • 4.2 Анализ на основе кода
    • 4.3 Надежность
    • 4.4 Эффективность
    • 4.5 Безопасность
    • 4.6 Ремонтопригодность
    • 4.7 Размер
    • 4.8 Идентификация критические ошибки программирования
    • 4.9 Действующие модели качества
  • 5 См. также
  • 6 Дополнительная литература
  • 7 Ссылки
  • 8 Внешние ссылки
Мотивация

«Наука настолько зрелая, насколько его измерительные инструменты »(Луи Пастер в Ebert Dumke, стр. 91). Оценка качества программного обеспечения мотивирована как минимум двумя причинами:

  • Управление рисками : сбой программного обеспечения вызвал больше, чем неудобства. Программные ошибки привели к человеческим жертвам. Причины варьируются от плохо разработанного пользовательского интерфейса до прямых ошибок программирования. Пример ошибки программирования, которая привела к многочисленным смертельным случаям, обсуждается в статье доктора Левесона. Это привело к появлению требований к разработке некоторых типов программного обеспечения, в частности, исторически для программного обеспечения, встроенного в медицинские и другие устройства, которые регулируют критические инфраструктуры: «[Инженеры, которые пишут встроенное программное обеспечение] видят, что программы Java останавливаются на одну треть секунды, чтобы выполнить сборку мусора и обновить пользовательский интерфейс, и они представляют себе самолеты, падающие с неба ». В Соединенных Штатах в рамках Федерального авиационного управления (FAA) Служба сертификации самолетов FAA предоставляет программное обеспечение, политику, рекомендации и обучение, уделяя особое внимание программному обеспечению и сложному электронному оборудованию, которое влияет на бортовую продукцию. («продукт» - это летательный аппарат, двигатель или винт).
  • Управление затратами: Как и в любых других областях инженерии, приложение с хорошим качеством программного обеспечения для структурной обработки требует меньших затрат на обслуживание и более легкое для понимания и изменения в ответ на насущные потребности бизнеса. Отраслевые данные показывают, что низкое структурное качество приложений в основных бизнес-приложениях (таких как планирование ресурсов предприятия (ERP), управление взаимоотношениями с клиентами (CRM) или крупные обработка транзакций систем в финансовых услугах) приводит к перерасходу средств и сроков и создает потери в виде переделок (до 45% времени разработки в некоторых организациях). Более того, низкое структурное качество сильно коррелирует с серьезными сбоями в работе бизнеса из-за поврежденных данных, сбоев приложений, нарушений безопасности и проблем с производительностью.

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

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

Определения

Есть много разных определений качества. Для некоторых это «способность программного продукта соответствовать требованиям». (ISO / IEC 9001, комментарий), в то время как для других это может быть синонимом «потребительской ценности» (Highsmith, 2002) или даже уровня дефекта.

Первое определение качества, которое помнит история, дано Шухартом в начале 20 века: есть два общих аспекта качества: один из них связан с рассмотрением качества вещи как объективной реальности. независимо от существования человека. Другой имеет отношение к тому, что мы думаем, чувствуем или ощущаем в результате объективной реальности. Другими словами, есть субъективная сторона качества. (Шухарт)

Пять точек зрения Китченхэма, Пфлегера и Гарвина на качество

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

  • Трансцендентальная перспектива имеет дело с метафизическим аспектом качества. С этой точки зрения качества это «то, к чему мы стремимся как к идеалу, но никогда не сможем реализовать его полностью». Его трудно определить, но он похож на то, что федеральный судья однажды прокомментировал по поводу непристойности: «Я знаю это, когда вижу это».
  • С точки зрения пользователя, с точки зрения пользователя важно соответствие продукта данному контексту. использования. В то время как трансцендентный взгляд эфирен, взгляд пользователя более конкретен, основан на характеристиках продукта, которые удовлетворяют потребности пользователя.
  • С точки зрения производства качество представляет собой соответствие требованиям. Этот аспект качества подчеркивается такими стандартами, как ISO 9001, который определяет качество как «степень, в которой набор неотъемлемых характеристик соответствует требованиям» (ISO / IEC 9001).
  • С точки зрения продукта, качество может быть оцененным путем измерения неотъемлемых характеристик продукта.
  • Конечная точка зрения на качество основана на ценностях. Эта точка зрения признает, что разные точки зрения качества могут иметь разное значение или ценность для различных заинтересованных сторон.

Качество программного обеспечения по Демингу

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

W. Эдвардс Деминг

Качество программного обеспечения в соответствии с Фейгенбаумом

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

Качество программного обеспечения по Джурану

Слово качество имеет несколько значений. Два из этих значений доминируют в использовании слова: 1. Качество состоит из тех характеристик продукта, которые удовлетворяют потребности клиентов и тем самым обеспечивают удовлетворение продукта. 2. Качество заключается в отсутствии недостатков. Тем не менее, в подобном справочнике удобно стандартизировать краткое определение слова «качество» как «пригодность для использования».

Модель качества CISQ

Даже несмотря на то, что «качество является перцептуальным, условным и несколько субъективный атрибут и могут по-разному пониматься разными людьми »(как отмечалось в статье о качестве в бизнесе ), структурные характеристики качества программного обеспечения были четко определены Консорциумом качества программного обеспечения ИТ (CISQ). Под руководством Билла Кертиса, соавтора концепции модели зрелости возможностей и первого директора CISQ; и Каперс Джонс, выдающийся советник CISQ, CISQ определила пять основных желаемых характеристик программного обеспечения, необходимого для обеспечения ценности для бизнеса. В модели House of Quality это «Что» необходимо достичь:

Надежность
Атрибут устойчивости и прочности конструкции. Надежность измеряет уровень риска и вероятность потенциальных сбоев приложения. Он также измеряет дефекты, внесенные из-за модификаций, внесенных в программное обеспечение (его «стабильность», как это называется ISO). Целью проверки и мониторинга надежности является сокращение и предотвращение простоев приложений, сбоев приложений и ошибок, которые напрямую влияют на пользователей, а также улучшение имиджа ИТ и их влияния на эффективность бизнеса компании.
Эффективность
Исходный код и Атрибуты архитектуры программного обеспечения - это элементы, которые обеспечивают высокую производительность, когда приложение находится в режиме выполнения. Эффективность особенно важна для приложений в средах с высокой скоростью выполнения, таких как алгоритмическая или транзакционная обработка, где производительность и масштабируемость имеют первостепенное значение. Анализ эффективности и масштабируемости исходного кода дает четкое представление о скрытых бизнес-рисках и вреде, который они могут причинить удовлетворению запросов клиентов из-за снижения времени отклика.
Безопасность
Мера вероятности потенциальных нарушений безопасности. плохой практике кодирования и архитектуре. Это позволяет количественно оценить риск обнаружения критических уязвимостей, наносящих ущерб бизнесу.
Ремонтопригодность
Ремонтопригодность включает понятие адаптируемости, переносимости и переносимости (от одной группы разработчиков к другой). Измерение и мониторинг ремонтопригодности является обязательным условием для критически важных приложений, в которых изменения обусловлены жесткими сроками вывода на рынок и где важно, чтобы ИТ-отделы оставались отзывчивыми на изменения, обусловленные бизнесом. Также важно держать под контролем расходы на обслуживание.
Размер
Хотя размер исходного кода не является атрибутом качества как таковым, он является характеристикой программного обеспечения, которая, очевидно, влияет на ремонтопригодность. В сочетании с вышеуказанными характеристиками качества размер программного обеспечения может использоваться для оценки объема работы, выполненной и выполняемой командами, а также их производительности посредством корреляции с данными табеля рабочего времени и другими, связанными с SDLC.

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

Двойное структурное / функциональное измерение качества программного обеспечения согласуется с моделью, предложенной в Стива МакКоннелла в Code Complete, которая разделяет характеристики программного обеспечения на две части: внутренние и внешние качественные характеристики. Внешние качественные характеристики - это те части продукта, с которыми сталкиваются пользователи, а внутренние качественные характеристики - те, которых нет.

Альтернативные подходы

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

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

Другое определение, данное Джеральдом Вайнбергом в книге «Управление качеством программного обеспечения: системное мышление», - «Качество - это ценность для некоторых людей». Это определение подчеркивает, что качество по своей сути субъективно - разные люди будут по-разному воспринимать качество одного и того же программного обеспечения. Одной из сильных сторон этого определения являются вопросы, которые оно предлагает разработчикам обсудить, например: «Кто такие люди, которым мы хотим ценить наше программное обеспечение?» и «Что будет для них ценным?».

Измерение

Хотя концепции, представленные в этом разделе, применимы как к структурному, так и к функциональному качеству программного обеспечения, измерение последнего в основном выполняется посредством тестирования [см. Основную статью: Тестирование программного обеспечения ].

Введение

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

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

Структура, классификация и терминология атрибутов и показателей, применимых к менеджменту качества программного обеспечения, были получены или извлечены из модели качества ISO 9126-3 и последующей модели качества ISO / IEC 25000: 2005. Основное внимание уделяется качеству внутренней структуры. Подкатегории были созданы для обработки конкретных областей, таких как архитектура бизнес-приложений и технических характеристик, таких как доступ к данным и манипулирование ими или понятие транзакций.

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

  • Практика архитектуры приложения
  • Практика кодирования
  • Сложность приложения
  • Документация
  • Переносимость
  • Технический и функциональный объем

Корреляция между ошибками программирования и производственными дефектами показывает, что основные ошибки кода составляют 92% от общего числа ошибок в исходном коде. Эти многочисленные проблемы на уровне кода в конечном итоге составляют лишь 10% производственных дефектов. Плохие методы разработки программного обеспечения на уровне архитектуры составляют лишь 8% от общего числа дефектов, но потребляют более половины усилий, затрачиваемых на устранение проблем, и приводят к 90% серьезных проблем с надежностью, безопасностью и эффективностью в производственной среде.

Анализ на основе кода

Многие из существующих программных показателей подсчитывают структурные элементы приложения, которые возникают в результате анализа исходного кода для таких отдельных инструкций (Park, 1992), токенов (Halstead, 1977), управляющих структур. (McCabe, 1976) и объекты (Chidamber Kemerer, 1994).

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

Такой взгляд на качество программного обеспечения в линейном континууме должен быть дополнен идентификацией дискретных критических ошибок программирования. Эти уязвимости не могут не пройти тест, но они являются результатом неправильной практики, которая при определенных обстоятельствах может привести к катастрофическим отключениям, снижению производительности, нарушениям безопасности, повреждению данных и множеству других проблем (Nygard, 2007), из-за которых данная система де-факто непригоден для использования независимо от его рейтинга, основанного на совокупных измерениях. Хорошо известным примером уязвимости является Common Weakness Enumeration, хранилище уязвимостей в исходном коде, которые делают приложения уязвимыми для нарушений безопасности.

Измерение критических характеристик приложения включает измерение структурных атрибутов архитектуры приложения, кодирования и встроенной документации, как показано на рисунке выше. Таким образом, на каждую характеристику влияют атрибуты на различных уровнях абстракции в приложении, и все они должны быть включены в расчет показателя характеристики, если она должна быть ценным предиктором качественных результатов, влияющих на бизнес. Многослойный подход к вычислению характеристических показателей, показанный на рисунке выше, был впервые предложен Бемом и его коллегами из TRW (Boehm, 1978) и является подходом, принятым в стандартах серий ISO 9126 и 25000. Эти атрибуты можно измерить на основе проанализированных результатов статического анализа исходного кода приложения. Даже динамические характеристики приложений, такие как надежность и производительность, имеют свои причинные корни в статической структуре приложения.

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

Надежность

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

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

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

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

Эффективность

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

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

  • Практики архитектуры приложений
  • Соответствующее взаимодействие с дорогими и / или удаленными ресурсами
  • Производительность доступа к данным и управление данными
  • Управление памятью, сетью и дисковым пространством
  • Практика кодирования
  • Соответствие передовым методам объектно-ориентированного и структурированного программирования (при необходимости)
  • Соответствие передовым методикам программирования SQL

Безопасность

Большинство уязвимостей безопасности возникает из-за плохого кодирования и архитектурных практик, таких как внедрение SQL или межсайтовые сценарии. Они хорошо задокументированы в списках, поддерживаемых CWE и SEI / Computer Emergency Center (CERT) в Университете Карнеги-Меллона.

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

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

Ремонтопригодность

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

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

  • Практика архитектуры приложений
  • Архитектура, программы и документация по коду, встроенная в исходный код
  • Код читаемость
  • Уровень сложности транзакций
  • Сложность алгоритмов
  • Сложность практики программирования
  • Соответствие лучшим практикам объектно-ориентированного и структурированного программирования (если применимо)
  • Коэффициент повторного использования компонента или шаблона
  • Контролируемый уровень динамического кодирования
  • Коэффициент связи
  • Грязное программирование
  • Документация
  • Оборудование, ОС, промежуточное ПО, программные компоненты и данные ase независимости
  • Соответствие многоуровневому дизайну
  • Переносимость
  • Практики программирования (уровень кода)
  • Сокращение дублирования кода и функций
  • Чистота организации файла исходного кода

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

Размер

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

  • Существует несколько методов технического определения размера программного обеспечения, которые были широко описаны. Наиболее распространенный технический метод определения размера - это количество строк кода (#LOC) для каждой технологии, количество файлов, функций, классов, таблиц и т. Д., На основе которых могут быть вычислены контрольные точки функции;
  • Наиболее распространенный Для измерения функционального размера используется функциональная точка анализ. Функциональный анализ измеряет размер поставляемого программного обеспечения с точки зрения пользователя. Размер функциональных точек выполняется на основе требований пользователя и обеспечивает точное представление как размера для разработчика / оценщика, так и ценности (функциональность, которая должна быть предоставлена), а также отражает бизнес-функции, предоставляемые заказчику. Метод включает идентификацию и взвешивание распознаваемых пользователем входов, выходов и хранилищ данных. Затем значение размера доступно для использования вместе с многочисленными мерами для количественной оценки и оценки поставки и производительности программного обеспечения (стоимость разработки на функциональную точку; количество доставленных дефектов на функциональную точку; функциональных баллов на персонал в месяц).

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

С момента создания анализа функциональных точек было разработано несколько вариаций, и семейство методов функционального определения размеров расширилось за счет включения таких мер определения размера, как COSMIC, NESMA, Use Case Points, FP Lite, Early и Quick FPs, и совсем недавно Story Points. Тем не менее, функциональные точки обладают историей статистической точности и используются в качестве общей единицы измерения работы в многочисленных проектах по управлению разработкой приложений (ADM) или аутсорсингу, выступая в качестве «валюты», в которой предоставляются услуги и измеряется производительность.

Одним из общих ограничений методологии Function Point является то, что это ручной процесс, и поэтому он может быть трудоемким и дорогостоящим в крупномасштабных инициативах, таких как разработка приложений или аутсорсинг. Этот негативный аспект применения методологии может быть тем, что побудило отраслевых ИТ-лидеров сформировать Консорциум по качеству ИТ-программного обеспечения, направленный на введение стандарта вычислимых показателей для автоматизации измерения размера программного обеспечения, в то время как IFPUG продолжает продвигать ручной подход, поскольку большая часть его деятельности зависит от по сертификации счетчиков FP.

CISQ объявила о доступности своего первого метрического стандарта, Automated Function Points, для членов CISQ в CISQ Technical. These recommendations have been developed in OMG's Request for Comment format and submitted to OMG's process for standardization.

Identifying critical programming errors

Critical Programming Errors are specific architectural and/or coding bad practices that result in the highest, immediate or long term, business disruption risk.

These are quite often technology-related and depend heavily on the context, business objectives and risks. Some may consider respect for naming conventions while others – those preparing the ground for a knowledge transfer for example – will consider it as absolutely critical.

Critical Programming Errorsтакже могут быть классифицированы по характеристикам CISQ. Базовый пример ниже:

  • Надежность
    • Избегайте шаблонов программного обеспечения, которые могут привести к неожиданному поведению (Неинициализированная переменная, нулевые указатели и т. Д.)
    • Методы, процедуры и функции выполнение Insert, Update, Delete, Create Table или Select должно включать управление ошибками
    • Многопоточные функции должны быть поточно-ориентированными, например, сервлеты или классы действий struts не должны иметь instance / non -final static fields
  • Эффективность
    • Обеспечение централизации клиентских запросов (входящих и данных) для уменьшения сетевого трафика
    • Избегайте запросов SQL, которые не используют индекс для больших таблиц в цикле
  • Безопасность
    • Избегайте полей в классах сервлетов, которые не являются окончательными статическими
    • Избегайте доступа к данным без включения управления ошибками
    • Проверьте коды возврата управления и внедрите механизмы обработки ошибок
    • Обеспечьте проверку входных данных, чтобы избежать ошибок межсайтового скриптинга или ошибок внедрения SQL.
  • Ремонтопригодность
    • Деревья глубокого наследования и следует избегать вложенности, чтобы улучшить понимание
    • Модули должны быть слабо связаны (разветвление, посредники), чтобы избежать распространения модификаций
    • Обеспечить соблюдение однородных соглашений об именах

Действующие модели качества

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

См. Также
Дополнительная литература
Ссылки

Примечания

Библиография

Внешние ссылки
На Wikimedia Commons есть материалы, относящиеся к Качество программного обеспечения.
Последняя правка сделана 2021-06-08 08:27:58
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте