Спонсор: Microsoft
Опубликован: 24.09.2008 | Уровень: специалист | Доступ: платный | ВУЗ: Московский физико-технический институт
Лекция 2:

Области знаний программной инженерии и стандарты ЖЦ программного обеспечения

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >

1.1.9. Методы и инструменты инженерии ПО

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

Область знаний "Методы и инструменты инженерии ПО (Software Engineering Tools and Methods)" состоит из разделов:

  • инструменты инженерии ПО (Software Engineering Tools),
  • методы инженерии ПО (Software Engineering Methods).

Методы инженерии ПО - это эвристические методы (heuristic methods), формальные методы (formal methods) и методы прототипирования (prototyping methods),.

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

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

  • языки и нотации спецификации (specification languages and notations), ориентированные на модель, свойства и поведение;
  • уточнение спецификации (refinement specification) путем трансформации в конечный результат, близкий к конечному исполняемому программному продукту;
  • методы доказательства/верификации (verification/proving properties), использующие утверждения (теоремы), пред- и постусловия, которые формально описываются и применяются для установления правильности спецификации программ.

Эти методы применялись в основном в теоретических экспериментах и более 25 лет их практическое применение было ограничено из-за трудоемкости и экономической невыгодности. В 2005 г. проблема верификации приобрела вновь актуальность в связи c разработкой нового международного проекта по верификационному ПО "Целостный автоматизированный набор инструментов для проверки корректности ПС" (идея Т. Хоара, "Открытые системы", 2006, № 6), ставящим следующие перспективные задачи:

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

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

Методы прототипирования (Prototyping Methods) основаны на прототипировании ПО и подразделяются на:

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

Инструменты инженерии ПО обеспечивают автоматизированную поддержку процессов разработки ПО и включают множество разных инструментов, охватывающих все процессы ЖЦ.

Инструменты работы с требованиями (Software Requirements Tools) - это:

  • инструменты разработки (Requirement Development) управления требованиями (Requirement Management) для анализа, сбора, специфицирования и проверки требований. Например, в модели CMMI Staged на 2-м уровне зрелости находится управлении требованиями, а на 3-м уровне - разработка требований;
  • инструменты трассировки требований (Requirement traceability tools) являются неотъемлемой частью работы с требованиями, их функциональное содержание зависит от сложности проектов и уровня зрелости процессов.

Инструменты проектирования (Software Design Tools) - это инструменты для создания ПО с применением базовых нотаций (SADT/IDEF, UML, Microsoft DSL, Oracle и т.п.).

Инструменты конструирования ПО (Software Construction Tools) - это инструменты для производства, трансляции программ и машинного выполнения. К ним относятся:

  • редакторы (program editors) для создания и модификации программ, и редакторы "общего назначения" (UNIX и UNIX-подобные среды);
  • компиляторы и генераторы кода (compilers and code generators) как самостоятельные средства объединения в интегрированной среде программных компонентов для получения выходного продукта с использованием препроцессоров, сборщиков, загрузчиков и др.;
  • интерпретаторы (interpreters) обеспечивают исполнение программ путем эмуляции, предоставляя для исполнения программ контролируемое и наблюдаемое окружение. Наметилась тенденотладчики (debuggers) для проверки правильности описания исходных программ и устранения ошибок;
  • интегрированные среды разработки (IDE - integrated developers environment), библиотеки компонент (libraries components), без которых не может проводится процесс разработки ПС, программные платформы (Java, J2EE и Microsoft .NET) и платформа распределенных вычислений (CORBA и WebServices).

Инструменты тестирования (Software Testing Tools) это:

  • генераторы тестов (test generators), помогающие в разработке сценариев тестирования;
  • средства выполнения тестов (test execution frameworks) обеспечивают выполнение тестовых сценариев и отслеживают поведение объектов тестирования;
  • инструменты оценки тестов (test evaluation tools) поддерживают оценку результатов выполнения тестов и степени соответствия поведения тестируемого объекта ожидаемому поведению;
  • средства управления тестами (test management tools) обеспечивают инженерию процесса тестирования ПО;
  • инструменты анализа производительности (performance analysis tools), количественной ее оценки и оценки поведения программ в процессе выполнения.

Инструменты сопровождения (Software Maintenance Tools) включают в себя:

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

Инструменты конфигурационного управления (Software Configuration Management Tools) - это:

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

Инструменты управления инженерной деятельностью (Software Engineering Management Tools) состоят из:

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

Инструменты поддержки процессов (Software Engineering Process Tools) разделены на:

  • инструменты моделирования и описания моделей ПО (например, UML и его инструменты);
  • инструменты управления программными проектами (Microsoft Project 2003);
  • инструменты управления конфигурацией для поддержки версий и всех артефактов проекта.

Инструменты обеспечения качества (Software Quality Tools) делятся на две категории:

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

Дополнительные аспекты инструментального обеспечения (Miscellaneous Tool Issues) соответствуют таким аспектам:

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

1.1.10. Качество ПО (Software Quality)

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

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

Каждая модель имеет различное число уровней, и все известные модели качества имеют полное или частичное совпадение набора характеристик качества. Например, модель качества МакКолла на самом высоком уровне имеет три характеристики: функциональность, модифицируемость и переносимость, а на более нижних уровнях модели, 11 подхарактеристик качества и 18 критериев (атрибутов) качества.

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

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

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

Окончательная оценка качества проводится в соответствии со стандартом ISO 15504-98 [1.15]. Качество может повышаться за счет постоянного улучшения используемого продукта в связи с процессами обнаружения, устранения и предотвращения сбоев/дефектов в ПО.

Область знаний "Качество ПО (Software Quality)" состоит из следующих разделов:

  • концепция качества ПО (Software Quality Concepts);
  • определение и планирование качества (Definition & Planning for Quality);
  • техники и активности, обеспечивающие гарантию качества, валидацию и верификацию (Activities and Techniques for Software Quality Assurance, Validation -V & Verification - V);
  • измерение при анализе качества ПО (Measurement in Software Quality Analysis).

Концепция качества ПО - это внешние и внутренние характеристики качества, их метрики, а также модели качества, определенные на множестве этих характеристик, которые представлены в стандартах качества [1.16] - это шесть характеристик и каждая из них имеет несколько атрибутов. К характеристикам качества относятся:

  • функциональность (functionality);
  • надежность (reliability);
  • удобство применения (usability);
  • эффективность (efficiency);
  • сопровождаемость (maitainnability);
  • переносимость (portability).

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

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

Планирование качества обеспечивает управление процессами обеспечения качества продуктов проекта (в частности промежуточных рабочих продуктов) и ресурсов - программных, технических,

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

  • определение продукта в терминах заданных характеристик качества;
  • планирование процессов для гарантии получения требуемого качества;
  • выбор методов оценки планируемых характеристик качества и установления соответствия продукта сформулированным требованиям.

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

Деятельности и техники гарантии качества включают: инспекцию, верификацию и валидацию ПО.

Инспекция ПО - анализ и проверка различных представлений системы и ПО (спецификаций, архитектурных схем, диаграмм, исходного кода и др.). Выполняется на всех этапах ЖЦ разработки ПО.

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

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

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

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

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

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

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

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

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

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >
Alex Diil
Alex Diil

Здравствуйте, прошел курс МБА Управление ИТ-проектами и направил документы на получение диплома почтой. Подскажите, сроки получения оного в бумажной форме?

:

Наталья Ра
Наталья Ра

Здравствуйте!

Большинство курсов из этой программы я изучила в бесплатном режиме и сдала экзамены. Теперь нужно будет все пересдавать?

Артур Каразанов
Артур Каразанов
Россия, Йошкар-Ола