- •Содержание
- •1.13. Задания для самопроверки 59
- •1.17. Задания для самопроверки 88
- •1.19. Задания для самопроверки 108
- •1.23. Задания для самопроверки 116
- •1.27. Задания для самопроверки 125
- •1.37. Задания для самопроверки 144
- •1.48. Задания для самопроверки 159
- •Перечень рисунков
- •Перечень таблиц
- •Введение
- •Принятые сокращения
- •1.Жизненный цикл разработки по
- •Программные проект и его атрибуты
- •Ролевые модели в программном проекте
- •Размер и сложность программного проекта
- •Характеристики программного проекта
- •Качество программного продукта
- •Экран проекта и сводка о подходе
- •Критерий smart для формулирования целей
- •Критерии успешности программного проекта
- •Модели жизненного цикла
- •Водопадная модель
- •Модель быстрой разработки приложения
- •Пошаговая модель
- •Спиральная модель Боэма
- •Прототипная модель
- •Выбор модели жизненного цикла
- •Задания для самопроверки
- •2.Типовой каркас для разработки по
- •Программная разработка
- •Планирование проекта
- •Модель cocomo для оценки трудозатрат в проекте
- •Модель slim для оценки трудозатрат в проекте
- •Разработка спецификации требований
- •Отслеживание и контроль
- •Верификация и валидация
- •Обеспечение качества
- •Конфигурационное управление
- •Метрики
- •Повышение квалификации
- •Задания для самопроверки
- •3. Модели зрелости способностей cmm/cmmi
- •Ключевые области процесса в модели cmm
- •Характеристика уровней зрелости в модели cmm
- •Интегрированная модель зрелости способностей cmmi
- •История возникновения
- •Уровни зрелости и области процесса
- •Уровни способностей процесса в модели cmmi
- •Специальные и общие цели и практики процессных областей
- •Характеристики уровней зрелости в модели cmmi
- •Задания для самопроверки
- •4.Управление рисками в программном проекте
- •Модели esi и pmi управления рисками
- •Выявление рисков
- •Анализ рисков
- •Расстановка приоритетов для рисков
- •Планирование рисков
- •Исполнение ответных стратегий
- •Оценивание результатов исполнение ответных стратегий
- •Документирование действий по рискам
- •Заключительное оценивание рисков
- •Задания для самопроверки
- •5.Стандарты качества iso в применении к по
- •Структура и принципы семейства стандартов iso 9000
- •Модели iso 9000 на базе процессов
- •Самооценивание по ключевым элементам iso 9000
- •Задания для самопроверки
- •6.Формальные методы в разработке по
- •Инструменты формализации и верификации
- •Взаимодействие функциональностей
- •Интегрированная технология анализа и верификации
- •Задания для самопроверки
- •7.Некоторые общие технологические приемы
- •Инспекции по Фейгану
- •Диаграммы Исикавы («рыбий скелет»)
- •Инструменты
- •Swot-анализ
- •Сбалансированный экран результативности
- •Технологическая дорожная карта
- •Метод Дельфи
- •Деревья решений
- •Сравнительное ранжирование
- •Методология подвижного программирования
- •Принципы подвижного программирования
- •Рабочий цикл и роли участников
- •Рабочие документы и обстановка
- •Задания для самопроверки
- •8.Сертификация программного обеспечения в авиации
- •История создания серии документов do-178 и ed-12
- •Уровни программного обеспечения
- •Процессы жизненного цикла по авиационных систем
- •Цели процессных деятельностей
- •Рабочие документы и категории их контроля
- •Процесс планирования по
- •Процессы разработки по
- •Определение требований
- •Проектирование
- •Кодирование
- •Верификация
- •Конфигурационное управление
- •Обеспечение качества
- •Контакт с органом сертификации
- •Выводы и рекомендации
- •Задания для самопроверки
- •9.Задания для самостоятельной работы
- •Темы, связанные с единым каркасом для разработки по
- •Перечень тем
- •Краткое описание каждой темы
- •Тема 2. Программная архитектура базового инструмента для распределенного управления программными проектами
- •Тема 3. Профили типовых рабочих компонентов для разработки приложений
- •Тема 1. Прототип метрической базы данных для управления разработкой приложений
- •Тема 5. Репозиторий повторно используемых компонентов
- •Тема 6. Сквозной пример для единого каркаса разработки приложений
- •Темы, связанные применением формальных методов перечень тем
- •Тема 1. Сравнительный анализ систем верификации
- •Тема 2. Формализация протоколов связи краткое описание каждой темы
- •Тема 1. Сравнительный анализ систем верификации
- •Тема 2. Формализация протоколов связи
- •10.Литература
- •11.Приложения
- •Шаблон для одностраничного экрана проекта
- •Примерная структура положения о работе и тз
- •Примерная форма еженедельного отчета
- •Примерная форма презентации на ежемесячном операционном обзоре
- •12.Указатель
Интегрированная технология анализа и верификации
Рассмотрим для примера интегрированную технологию для анализа и верификации телекоммуникационных приложений [29].
Базой для применения технологий верификации является формальная модель приложения, которая строится вручную по исходным неформальным требованиям, описывающим его поведение, с применением определенных средств автоматизации. После того, как модель построена, к ней применяются различные инструментальные средства, проверяющие выполнимость определенных ее свойств (непротиворечивость, полнота и другие). В случае корректности модели автоматически создаются тестовые наборы, гарантированно покрывающие исходные требования в соответствии с заданным критерием покрытия.
Как правило, спецификация формальной модели состоит из описания среды, включающего декларацию агентов и типизированных атрибутов, переходов, и проверяемых свойств. Агенты работают параллельно, асинхронно и взаимодействуют между собой посредством чтения и изменения атрибутов. Состояние среды состоит из набора значений ее атрибутов и значений атрибутов всех действующих агентов.
Переходы между состояниями модели записываются на языке «базовых протоколов» [30]. Базовый протокол представляет собой выражение вида тройки Хоара: α → <u> β , где α – предусловие, u – процесс (действие), β – постусловие, и описывает атомарный параметризированный (имя агента – один из параметров) переход модели. Пред- и пост-условия являются формулами логики первого порядка. Постусловие также может содержать операторы присваивания.
Процесс базового протокола представляет собой линейную последовательность конструкций MSC, в терминах которых часто специфицируют телекоммуникационные приложения. Преимущество этого формализма так же в простоте и эффективности использования методов верификации – язык использует базовый набор структур данных и операций над ними, и при этом обладает достаточной выразительной мощностью для описания систем, специфицированных в таких инженерных языках, как MSC, SDL, UML .
В описываемой системе верификации осуществляется проверка таких свойств, как недетерминизм, выход за пределы допустимых значений, переполнение, обращение к неинициализированному элементу системы, а так же проверка условий безопасности, достижимости и отсутствия тупиков. Всякий раз, когда достигнуто состояние, в котором нарушается одно из перечисленных свойств, будет построена трасса, которая иллюстрирует поведение модели из ее начального состояния в текущее.
Трасса представляет собой последовательность имен переходов модели (т.е. имен базовых протоколов с их фактическими параметрами), а так же может быть построена из событий (конструкций MSC), заданных в процессной части базовых протоколов. Такие события описывают наблюдаемое поведение модели, и могут быть использованы в качестве сценарных тестовых контр-примеров.
Недетерминизм (non-determinism) в модели является не ошибкой ее поведения, а лишь сигналом для дальнейшего анализа. Важно отделить естественный недетерминизм от непреднамеренного. Некоторые системы верификации проверяют недетерминизм путем введения специальных атрибутов, значения которых выбираются недетерминировано в процессе моделирования.
Выход за пределы допустимых значений (out-of-range) – распространенная ошибка, часто являющаяся источником нарушения безопасности систем. Проверка обеспечивается путем генерации дополнительных ограничений на индексацию в пред- и пост-условиях переходов (обращение к элементу массива, параметризированному атрибуту, либо при обращении к процессу по индексу).
Переполнение (over/underflow) определяется таким образом: арифметические выражения, согласно приоритетам операций, раскладываются на эквивалентную последовательность вычислений значений бинарных операций, вводятся вспомогательные локальные переменные для хранения и дальнейшего использования результата предыдущих вычислений, и перед каждым производится проверка на возможное переполнение.
Проверка использования неинициализированного атрибута (non-initialized variable) обеспечивается посредством (неявного) введения вспомогательных атрибутов, цель которых – хранить информацию об инициализации каждого атрибута модели и генерировать дополнительные проверки таких атрибутов. Если производится присваивание, в правой части которого есть неинициализированный атрибут, то переход осуществляется, а атрибут, стоящий в левой части присваивания становится неинициализированным.
Условия безопасности (safety, liveness) выражаются формулами линейной темпоральной логики (LTL – Linear Temporal Logic). В качестве примеров можно привести такие свойства: «лифт никогда не едет с открытой дверью», «выделенный ресурс когда-нибудь освободится», и т.д.
Проверка достижимости выполняется как для целевых состояний, так и для переходов. Целевое состояние формулируется пользователем в виде LTL-формулы. При окончании работы генерируется вердикт, включающий в себя информацию о статистике выполнения переходов.
Тупиковой (deadlock) называется ситуация, из которой нет ни одного допустимого перехода.
Замкнутой (livelock) называется ситуация, из которой нет возможности достигнуть хотя бы одно состояние, достижимое из начального (initial) состояния. Другими словами, условие отсутствия livelock можно сформулировать так: каждое достижимое состояние должно быть достижимо из любого изначально достижимого состояния. Проверяется так же, как и «сильная связность» в терминах теории графов.
В качестве средства формализации требований на поведение приложений наряду с традиционными языками используются UCM-диаграммы, позволяющие представить реализацию требований в виде совокупности взаимодействующих процессов в нотации, доступной для контроля заказчиком, что позволяет сохранить соответствие семантики генерируемых поведенческих моделей семантике исходных требований.
Конечный UCM-проект представляет собой набор связанных и структурированных диаграмм, каждая из которых состоит из последовательности элементов нотации среди которых элементы описания событий, параллелизма, таймеров, прерываний и т.п. В совокупности набор диаграмм задает возможные поведения системы, описанные в требованиях. На Рис. 45 приведена одна из UCM-диаграмм для телекоммуникационного протокола CDMA.
Рис. 45. Пример UCM-нотации для протокола CDMA