- •Міністерство освіти і науки України
- •Программное обеспечение
- •Общая структура затрат на создание по
- •Функциональные свойства
- •Определение системных требований
- •Модель исполнения
- •Инсталляция системы
- •Моделирование систем
- •Определение системных требований
- •Проектирование систем
- •Разработка подсистем
- •Инсталляция системы
- •Ввод системы в эксплуатацию
- •Эволюция систем
- •Вывод систем из эксплуатации
- •Приобретение систем
- •1. Введение
- •2. Общее описание
- •4. Приложения
- •5. Указатели
- •Управление требованиями
- •Постоянные и изменяемые требования
- •Планирование управления требованиями
- •Управление изменениями требований
- •Формальные спецификации по
- •Формальные спецификации в процессе разработки по
- •Специфицирование интерфейсов
- •Спецификация поведения систем
- •Структурирование системы
- •Модель репозитория
- •Модель клиент/сервер
- •Модель абстрактной машины
- •Модели управления
- •Централизованное управление
- •Системы, управляемые событиями
- •Модульная декомпозиция
- •Объектные модели
- •Модели потоков данных
- •Проблемно-зависимые архитектуры
- •Модели классов систем
- •Базовые архитектуры
Формальные спецификации по
Традиционные технические дисциплины, такие, как электротехника или гражданское строительство, обычно легко адаптируют лучшие математические методы. Например, в машиностроении не возникало трудностей с применением методов математического анализа. Однако инженерия программного обеспечения не идет таким путем. Хотя прошло более 25 лет исследований по использованию математических методов в процессе создания ПО, воздействие этих методов все же ограниченно. Так называемые формальные методы разработки программных систем широко не используются. Многие компании, разрабатывающие ПО, не считают экономически выгодным применение этих методов в процессе разработки.
Термин "формальные методы" подразумевает ряд операций, в состав которых входят создание формальной спецификации системы, анализ и доказательство спецификации, реализация системы на основе преобразования формальной спецификации в программы (см. главу 3) и верификация программ. Все эти действия зависят от формальной спецификации программного обеспечения. Формальная спецификация — это системная спецификация, записанная на языке, словарь, синтаксис и семантика которого определены формально. Необходимость формального определения языка предполагает, что этот язык основывается на математических концепциях. Здесь используется область математики, которая называется дискретной математикой и основывается на алгебре, теории множеств и алгебре логики.
Формальные спецификации в процессе разработки по
Определены три уровня спецификации программного обеспечения. Это пользовательские и системные требования и спецификация структуры программной системы. Пользовательские требования наиболее обобщенные, спецификация структуры наиболее детальна. Формальные математические спецификации находятся где-то между системными требованиями и спецификацией структуры. Они не содержат деталей реализации системы, но должны представлять ее полную математическую модель.
По мере разработки спецификации участие заказчика уменьшается, а участие подрядчиков и непосредственно разработчиков ПО возрастает. На ранних стадиях разработки спецификация должна быть "ориентирована на заказчика" и написана так, чтобы он мог ее понять. Однако на заключительной стадии процесса разработки должна быть получена спецификация, в основном предназначенная для подрядчиков и разработчиков ПО, поскольку она будет служить основой для реализации системы. Эта конечная спецификация может быть формальной.
На рис. 9.1 показаны этапы разработки спецификации ПО и их взаимосвязи с процессом проектирования. Этапы разработки спецификации, показанные на рис. 9.1, не являются независимыми и не обязательно разрабатываются в приведенной последовательности. На рис. 9.2 показано, что разработка, спецификация и проектирование могут выполняться параллельно, когда информация от этапов разработки спецификации передается к «этапам проектирования и наоборот.
Рис. 9.1. Разработка спецификации и проектирование
Рис. 9.2. Разработка формальной спецификации
Создание формальной спецификации требует детального анализа системы, который позволяет обнаружить ошибки и несоответствия в спецификации неформальных требований. Эта возможность обнаружения ошибок — наиболее важный аргумент для использования формальной спецификации. Проблемы в требованиях, которые остаются необнаруженными до последних стадий процесса разработки ПО, обычно требуют больших затрат на исправление.
