- •1. Основы качества программного обеспечения (Software Quality Fundamentals)
- •1.1. Культура и этика программной инженерии (Software Engineering Culture and Ethics)
- •1.2. Значение и стоимость качества (Value and Costs of Quality)
- •1.3. Модели и характеристики качества (Models and Quality Characteristics)
- •1.3.1. Качество процессов программного обеспечения (Software engineering process quality)
- •1.3.2. Качество программного продукта (Software product quality)
- •1.4. Повышение качества (Quality Improvement)
- •2.1. Подтверждение качества программного обеспечения (Software Quality Assurance, sqa)
- •2.2. Проверка (верификация) и аттестация (Verification and Validation, V&V)
- •2.3. Оценка (обзор) и аудит (Review and Audit)
- •2.3.1. Управленческие оценки (Management Reviews)
- •2.3.2. Технические оценки (Technical Reviews)
- •2.3.3. Инспекции (Inspections)
- •2.3.4. Прогонки (Walk-throughs)
- •2.3.5. Аудиты (Audits)
- •3. Практические соображения (Practical Considerations)
- •3.1. Требования к качеству программного обеспечения (Software Quality Requirements)
- •3.1.1. Факторы влияния (Influence factors)
- •3.1.2. Гарантоспособность (Dependability)
- •3.1.3. Уровни целостности программного обеспечения (Integrity levels of software)
- •3.2. Характеристика дефектов (Defect Characterization)
- •3.3. Техники управления качеством программного обеспечения (Software Quality Management Techniques)
- •3.3.1. Статические техники (Static techniques)
- •3.3.2. Техники коллективной оценки (People - intensive techniques)
- •3.3.4. Динамические техники (Dynamic techniques)
- •3.3.5. Тестирование (Testing)
- •3.4. Количественная оценка качества программного обеспечения (Software Quality Measurement)
3.3. Техники управления качеством программного обеспечения (Software Quality Management Techniques)
Техники SQM могут быть распределены по нескольким категориям:
статические;
техники использования человеческих ресурсов;
аналитические;
динамические.
3.3.1. Статические техники (Static techniques)
Статические техники предполагают детальное исследование проектной документации, программного обеспечения и другой информации о программном продукте без его исполнения.
Эти техники могут включать другие, рассматриваемые ниже, действия по оценке (см. 3.3.2) или индивидуальному анализу (см. 3.3.3), вне зависимости от степени использования средств автоматизации.
3.3.2. Техники коллективной оценки (People - intensive techniques)
Обычно, такого рода техники предполагают очное взаимодействие специалистов. При этом, встречи специалистов могут требовать предварительной подготовки.
К ресурсам, используемым в таких техниках, наравне с исследуемыми артефактами (продуктом, документацией, моделями и т.п.) могут относится различного рода листы проверки и результаты аналитических техник и работ по тестированию.
Данные техники рассматриваются в стандарте 12207.
3.3.3. Аналитические техники (Analytical techniques)
Инженеры, занимающиеся программным обеспечением, как правило, применяют аналитические техники и гибкие технологии (Agile-методики).
Иногда, несколько инженеров используют одну и ту же технику, но в отношении разных частей продукта. Некоторые техники базируются на специфике применяемых инструментальных средств, другие – предполагают «ручную» работу. Многие могут помогать находить дефекты напрямую, но
чаще всего они используются для поддержки других техник (например, статической).
Ряд техник также включает различного рода экспертизу как составной элемент общего анализа качества. Примеры таких техник - анализ сложности (complexity analysis), анализ управляющей логики (или анализ контроля потоков управления - control flow analysis) и алгоритмический анализ.
Каждый тип анализа обладает конкретным назначением и не все типы применимы к любому проекту.
Примером техники поддержки является анализ направленный на выявление фрагментов дизайна системы, обладающих слишком высокой сложностью для корректной реализации, тестирования или сопровождения. Результат анализа сложности может также применяться для разработки тестовых сценариев.
Может также использоваться анализ управляющей логики. Например, для программного обеспечения с обширной алгоритмической логикой крайне важно применять алгоритмические техники, особенно в тех случаях, когда некорректный алгоритм (не его реализация, а именно логика) может привести к катастрофическим результатам (например, программное обеспечение авионики, для которой вопросы безопасности использования играют решающую роль).
Другие формальные методы применяются для проверки требований.
Проверка корректности применяется к критическим фрагментам программного обеспечения. Кроме того они используются для верификации особо важных частей систем, отвечающих за информационную безопасность и надежность.
