Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
51_505.doc
Скачиваний:
275
Добавлен:
14.05.2015
Размер:
1.5 Mб
Скачать

182

Санкт-Петербургский государственный университет информационных технологий,

механики и оптики

Учебно-методическое пособие

"Управление качеством разработки программного обеспечения" Содержание

  1. Введение

  2. Основные определения

  3. Процесс разработки программного обеспечения

    1. Жизненный цикл программного обеспечения

    2. Модели жизненного цикла программного обеспечения

      1. Каскадная модель

      2. Инкрементная модель

      3. Итерационная модель

      4. Спиральная модель

      5. V-модельжизненного цикла

      6. Модель быстрого прототипирования

      7. Agile-методологии

3.2.7.1 Описание методологии

3.2.7.2 Экстремальное программирование - XP

3.2.7.3 Гибкая разработка - SCRUM

3.2.8. Подгонка жизненного цикла разработки

  1. Качество программных продуктов

    1. Определение качества. Стандарты качества

    2. Стоимость качества

    3. Введение в CMMI

    4. Управление требованиями

  2. Тестирование программного обеспечения

    1. Цели и задачи. Основные определения

      1. Методологии тестирования

      2. Уровни тестирования

      3. Виды тестирования

    2. Процесс тестирования

      1. Этапы и задачи

      2. Принципы организации тестирования

      3. Планирование тестирования

      4. Автоматизация тестирования

      5. Примеры. Модульное тестирование. Разработка через тестирование

    3. Дефекты. Причины, описания, отслеживание

    4. Типы дефектов и статические методы тестирования

5.3.1. Классификация дефектов

5.3.2. Инспекции и сквозные просмотры

5.3.3. Проверка «за столом»

    1. Техники создания тест-кейсов

      1. Проектирование и исполнение

      2. Методология черного ящика

      3. Методология белого ящика

  1. Приложение 1 – Конфигурационное управление – построение «билдов»

  2. Приложение 2 – RUP и UML

  3. Приложение 3 – Глоссарий

  4. Литература

1. Введение

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

В настоящее время существуют различные значения термина “качество”. Фил Кросби (Phil Crosby) в 1979 году дал определение качеству как “соответствие пользовательским требованиям”. Уотс Хемпфри (Watts Hamphrey, оригинальный автор концепции модели оценки зрелости CMM, а также PSP и TSP – People Software Process и Team Software Process, описывает качество как “достижение отличного уровня пригодности к использованию”. Существуют корпоративные стандарты управления качеством. Так, например, компания IBM ввела в оборот “качество, управляемое рыночными потребностями”. Критерий Бэлдриджа (Baldrige) для организационного качества (National Institute of Standards and Technology, “Baldrige National Quality Program”, http://www.quality.nist.gov) использует похожую фразу - “качество, задаваемое потребителем” (“customer-driven quality”), определяя удовлетворение потребителя основным принципом в отношении качества.

Чаще, понятие качества используется в соответствии с определением системы менеджмента качества ISO 9001 как “степень соответствия присущих характеристик требованиям” как это сформулировано в официальном переводе ИСО 9000-2000 "Системы менеджмента качества. Основные положения и словарь”. Интересно, что и сама “степень соответствия” также выступает в роли ограничения проекта, а в приложении к индустрии программного обеспечения представлена практически во всех областях проектной деятельности – от управления требованиями (“атрибуты качества” как категория нефункциональных требований), до тестирования (т.н. наработка на отказ, такие метрики как MTTF - Mean Time To Failure, то есть среднее время между обнаруженными сбоями системы, и т.п.).

В какой-то степени, “приемлемое качество” можно сравнивать с уровнем обслуживания в рамках заданного SLA – Service Level Agreement, давно уже принятого на вооружение в телекоммуникационной индустрии. Таким образом, приемлемое качество может рассматриваться как количественно выраженный компромисс между заказчиком и исполнителем в отношении характеристик продукта, создаваемого исполнителем в интересах решения задач заказчика с учетом других ограничений проекта (в частности, стоимостью, что часто именуется как “cost of quality” – “стоимость качества”). Можно сказать, что такой взгляд может в какой-то степени рассматриваться как расширение определения в ISO 9001 с учетом достигнутого компромисса между заказчиком и исполнителем (поставщиком) в отношении характеристик качества.

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

Другой важный стандарт – CMMI, предоставляет рекомендации по совершенствованию процесса. Требуется упомянуть и ISO 15504 “Information Technology - Software Process Assessment”, известный как SPICE - Software Process Improvement and Capability dEtermination.

Непосредственно с управлением качеством связаны процессные области (области компетенции) CMMI: обеспечение качества процесса и продукта (process and product quality assurance, категория процессов CMMI “Support”), проверка (verification, категория “Engineering”) и аттестация (validation, категория “Engineering”). При этом,CMMIклассифицирует обзор (review) и аудит (audit) в качестве методов верификации, но не как самостоятельные процессы, в отличие, например, от стандарта 12207.

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

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

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

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

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

Как уже отмечалось ранее, тестирование программного обеспечения тесно связано с программированием (ГОСТ 12207). Более того, модульное (unit-) и интеграционное тестирование все чаще рассматривают как неотъемлемый элемент деятельности по конструированию программного обеспечения в SWEBOK.