
- •Раздел 1. Основы разработки по 4
- •Раздел1. Основы разработки по
- •1.1. Основные понятия и определения
- •1.2. Понятие «программирование»
- •Программирование как дисциплина
- •Программирование как деятельность
- •1.3. Области разработки по
- •Контрольные вопросы
- •Раздел2. Методология разработки по
- •2.1. Основные понятия и определения
- •2.2. Классификация методологий
- •2.3. Происхождение методологий
- •Практическое происхождение
- •Алгоритмическое происхождение
- •Структурно-языковое происхождение
- •2.4. Методологии программирования
- •Методология императивного программирования
- •Методология объектно-ориентированного программирования
- •Методология функционального программирования
- •Методология логического программирования
- •Методология сентенциального программирования
- •Методология ограничительного программирования
- •Методология структурного императивного программирования
- •Методология императивного параллельного программирования
- •Методология логического параллельного программирования
- •Контрольные вопросы
- •Раздел3. Технология разработки по
- •3.1. Основные понятия и определения
- •3.2. Основные классификации
- •3.3. Модели жизненного цикла по
- •Непланируемая модель
- •Каскадная модель
- •Прототипируемая модель
- •Итеративная инкрементная модель
- •Эволюционная модель
- •Спиральная модель
- •Модифицированная спиральная модель
- •3.4. Классические технологические процессы Процесс 1. Исследование идеи
- •Процесс 2. Управление
- •Процесс 3. Анализ
- •Процесс 4. Проектирование
- •Процесс 5. Кодирование
- •Процесс 6. Тестирование
- •Процесс 7. Ввод в действие
- •Процесс 8. Сопровождение
- •Процесс 9. Снятие с эксплуатации
- •3.5. Методики анализа и проектирования
- •3.6. Стандартные технологические процессы
- •Стандарт iso/iec 12207
- •Основные процессы
- •Вспомогательные процессы
- •Организационные процессы
- •Адаптация стандарта
- •Стандарт iso/iec15288
- •Контрольные вопросы
- •Раздел4. Подходы разработки по
- •4.1. Каскадные технологические подходы
- •4.2. Каркасные технологические подходы
- •Унифицированный процесс (up)
- •Рациональный унифицированный процесс (rup)
- •Основы подхода
- •Жизненный цикл проекта
- •Каркас решений Microsoft(msf)
- •Основы подхода
- •Жизненный цикл проекта
- •Процесс iconix(iconix Process)
- •Основы подхода
- •Жизненный цикл проекта
- •4.3. Эволюционные технологические подходы
- •Подходы прототипирования
- •Итеративная инкрементная разработка (iid)
- •Быстрая разработка приложений (rad)
- •Основы подхода
- •Жизненный цикл проекта
- •4.4. Адаптивные технологические подходы
- •Особенности живых подходов
- •Адаптивная разработка по (asd)
- •Основы подхода
- •Жизненный цикл проекта
- •Экстремальное программирование (xp)
- •Основы подхода
- •Жизненный цикл проекта
- •4.5. Генетические технологические подходы
- •Синтезирующее программирование
- •Конкретизирующее программирование
- •Сборочное программирование
- •4.6. Формальные технологические подходы
- •Формальные генетические подходы
- •Подходы формальной разработки
- •Жизненный цикл проекта
- •Обзор используемых подходов
- •Инженерия стерильного цеха (CrSe)
- •Основы подхода
- •Жизненный цикл проекта
- •Методика подхода
- •Контрольные вопросы
- •Раздел5. Инженерия и инструментарий по
- •5.1. Инженерия по
- •5.2. Инструментарий по
- •Контрольные вопросы
- •Раздел6. Методические указания
- •6.1. Лабораторные работы
- •1. Введение вRational Rose
- •1.1. Цель работы
- •1.2. Общие сведения
- •1.3. Порядок выполнения
- •1.4. Содержание отчёта
- •1.5. Варианты заданий
- •1.6. Контрольные вопросы
- •2. Диаграмма прецедентов
- •2.1. Цель работы
- •2.2. Общие сведения
- •2.3. Порядок выполнения
- •2.4. Содержание отчёта
- •2.5. Варианты заданий
- •2.6. Контрольные вопросы
- •3. Диаграмма классов. Пакеты
- •3.1. Цель работы
- •3.2. Общие сведения
- •3.3. Порядок выполнения
- •3.4. Содержание отчёта
- •3.5. Варианты заданий
- •3.6. Контрольные вопросы
- •4. Диаграммы взаимодействия
- •4.1. Цель работы
- •4.2. Общие сведения
- •4.3. Порядок выполнения
- •4.4. Содержание отчёта
- •4.5. Варианты заданий
- •4.6. Контрольные вопросы
- •5. Диаграммы переходов состояний
- •5.1. Цель работы
- •5.2. Общие сведения
- •5.3. Порядок выполнения
- •5.4. Содержание отчёта
- •5.5. Варианты заданий
- •5.6. Контрольные вопросы
- •6. Диаграмма компонентов
- •6.1. Цель работы
- •6.2. Общие сведения
- •6.3. Порядок выполнения
- •6.4. Содержание отчёта
- •6.5. Варианты заданий
- •6.6. Контрольные вопросы
- •7. Диаграмма развёртывания
- •7.1. Цель работы
- •7.2. Общие сведения
- •7.3. Порядок выполнения
- •7.4. Содержание отчёта
- •7.5. Варианты заданий
- •7.6. Контрольные вопросы
- •8. Дальнейшая работа с моделью
- •8.1. Цель работы
- •8.2. Общие сведения
- •8.3. Порядок выполнения
- •8.4. Содержание отчёта
- •8.5. Варианты заданий
- •8.6. Контрольные вопросы
- •6.2. Курсовая работа
- •7. Общие сведения
- •Обзор языка uml
- •Принципы моделирования
- •Формальное описание
- •Представления модели
- •Диаграмма робастности
- •Процесс iconix
- •Обзор подхода
- •Особенности подхода
- •Ключевые принципы
- •Жизненный цикл проекта
- •8. Порядок выполнения
- •Определение задания
- •Этапы выполнения
- •Содержание отчёта
- •9. Типовые задания
- •Предметные области
- •Примеры автоматизации
- •Варианты заданий
- •6.3. Самостоятельная работа студентов
- •Тема 1. Основы разработки по Содержание темы
- •Самостоятельная работа
- •Контрольные вопросы
- •Тема 2. Методология разработки по Содержание темы
- •Самостоятельная работа
- •Контрольные вопросы
- •Тема 3. Технология разработки по Содержание темы
- •Самостоятельная работа
- •Контрольные вопросы
- •Тема 4. Подходы разработки по Содержание темы
- •Самостоятельная работа
- •Контрольные вопросы
- •Тема 5. Инженерия и инструментарий по Содержание темы
- •Самостоятельная работа
- •Контрольные вопросы
- •6.4. Примерные тестовые задания Тема 1. Основы разработки по
- •Тема 2. Методология разработки по
- •Тема 3. Технология разработки по
- •Тема 4. Подходы разработки по
- •Тема 5. Инженерия и инструментарий по
- •Литература Основная литература
- •Дополнительная литература
- •Документация
- •Интернет – источники
- •Литература по Rational RoseиUml
4.6. Формальные технологические подходы
Формальные подходыоснованы на применении математических принципов к разработке ПО. Выделяют формальные подходы следующих трёх видов:
1. Формальные генетические подходы.
2. Подходы формальной разработки.
3. Смешанные формальные подходы: Инженерия стерильного цеха (CrSE).
Подходы формальной разработки фактически являются комбинацией и/или развитием идей и принципов формальных генетических подходов. Смешанные формальные подходы используют ряд принципов формальной разработки в рамках часто используемых моделей ЖЦ.
Высокая трудоёмкость формальных подходов в настоящее время существенно ограничивает область их применения на практике, поэтому для них справедливы те же рекомендации по классам систем, что и для каскадных подходов.
Эти виды подходов предназначены для обеспечения разработки путём применения математического формализма в спецификациях и процессах ЖЦ.
Формальные генетические подходы
Формальные генетические подходыоснованы на аналогии разработки ПО и вывода математических утверждений.
Проблемами доказательств (правильности) программ занимались многие отечественные и зарубежные исследователи. Под правильностью ПО здесь понимается отсутствие в нём любых дефектов. В 1975 г. Э.В. Дейкстра в работе «Охраняемые команды, недетерминированность и формальное порождение программ» высказал идею и сформулировал свои положения по доказательству программ. Эти положения послужили основой его известной книги «Дисциплина программирования», изданной в 1976 г. В 1981 г. Дэвид Грис опубликовал адаптацию этой книги к учебному процессу под названием «Наука программирования». В 1984 г. А.П. Ершов в своём докладе (Труды Академии наук СССР) предложил термин «доказательное программирование». Доказательное программирование– разработка ПО, обладающая свойством доказательности правильности создаваемого продукта. Кроме того, А.П. Ершов указал 3 вида доказательного программирования, которые тесно связаны с видами генетических подходов. Поэтому эти виды получили в дальнейшем название формальных генетических подходов.
Выделяют следующие формальные генетические подходы:
1. Формальное синтезирующее программирование.
2. Формальное конкретизирующее программирование.
3. Формальное сборочное программирование.
Перечисленные подходы ориентированы в основном на решение проблем вычислительного характера и часто применяются в комбинации. Фактически генетические подходы являются упрощением этих подходов с целью существенного расширения ПрО и ускорения разработки ПО.
Приведём краткий обзор формальных генетических подходов.
Формальное синтезирующее программированиеосновывается на примененииматематической спецификации– совокупности логических формул, представляющих постановку проблемы.
Под синтезом программыпонимается разработка этой программы по её математической спецификации. В случае явно существующего разделения постановки проблемы и метода её решения синтез заключается в правильном представлении метода решения в виде программы. Однако на практике метод решения проблемы присутствует лишь неявно – в постановке этой проблемы (что дано и что надо определить) и её ПрО (особенности проблемы в виде соотношений или условий). Тогда синтез заключается в извлечении метода решения с помощью систематической процедуры для его дальнейшего воплощения в виде программы.
Формальное синтезирующее программирование основывается на творческом поиске, совокупности доказываемых логических утверждений и разнообразной формальной манипуляционной технике и использует различные сведения, образующие определённую систему – базу знаний.
В настоящее время формальное синтезирующее программирование является редко используемым подходом доказательного программирования.
Формальное конкретизирующее программированиеосновывается на примененииуниверсальных программ– программ, реализующих некоторый обобщённый метод, пригодный для решения любых проблем некоторого класса из соответствующей ПрО.
Под конкретизацией программыпонимается разработка этой программы по её математической спецификации в случае, когда существует универсальная программа для решения более общей проблемы. Фактически конкретизация в этом понимании является противоположностью синтезу программы.
Исследование ПрО приводит к созданию теории этой ПрО. Как правило, признаком полноты такой теории является создание обобщённого метода для решения любых проблем некоторого класса. Однако на практике применение такого метода ограничивается тем, что по отношению к конкретной проблеме он оказывается избыточным. Поэтому наиболее эффективным считается разработка специального частного метода, учитывающего особенности конкретной проблемы. В этом случае конкретизация заключается в систематическом построении (извлечении) специализированной программы из универсальной.
С теоретической точки зрения конкретизация означает поиск программы, рассматриваемой на некотором сужении области исходных данных и получающей на этом сужении такой же результат, что и универсальная программа, но делающей это более эффективно. Одним из наиболее важных видов сужений является фиксация (или связывание) параметров – задание определённых значений некоторых данных. Использование зафиксированных (связанных) параметров позволяет упростить универсальную программу. На основе фиксации параметров возможно построение систематической процедуры для конкретизации программы. Математическим аппаратом для этой операции являются смешанные вычисления, в рамках которых выявлены преобразования, необходимые для такого упрощения.
Теория показывает, что существует некоторая дисциплина последовательного применения этих преобразований, которая:
– при полностью заданных исходных данных вычисляет результат программы,
– при отсутствии заданных исходных данных оставляет программу нетронутой,
– при частичном задании исходных данных редуцирует (упрощает) программу к так называемой остаточной программе, являющейся требуемой специализированной программой.
В настоящее время формальное конкретизирующее программирование является часто используемым подходом доказательного программирования.
Формальное сборочное программированиеосновывается на применении повторно используемых заранее разработанных фрагментов, в роли которых выступаютпрограммные модули.
Здесь используется более конкретное понимание этого понятия. Модуль обладает определённой структурной и функциональной целостностью и специально приспособлен для организации чётко определяемого и контролируемого информационно-логического взаимодействия с другими модулями. Указанное взаимодействие означает обмен информацией или соподчинённость выполнения.
Под сборкой программыпонимается разработка этой программы по её математической спецификации в случае, когда отдельные блоки решения проблемы уже разработаны и оформлены в виде программных модулей. Фактически сборка в этом понимании является частным случаем синтеза программы.
Особенностью подхода является ориентация на некоторый класс проблем, связанных с определённой ПрО. Наличие небольшого числа заранее запрограммированных модулей позволяет скомбинировать их для решения конкретной проблемы этой области. В этом случае сборка заключается в извлечении из постановки проблемы схемы сборки модулей. Для некоторых классов проблем извлечение может быть выполнено по формальным правилам.
В настоящее время формальное сборочное программирование является наиболее продвинутым и часто используемым подходом доказательного программирования.