
- •Раздел 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
Обзор используемых подходов
Рассмотрим кратко используемые языки и подходы формальной разработки.
Нотация Z(Z notation) – ЯФС, названный по теории множеств Цермело – Френкеля и основанный на стандартной математической системе обозначений, используемой аксиоматической теорией множеств, лямбда-исчислением и логикой предикатов первого порядка. Предложен в 1977 г. Ж.–Р. Абриалем совместно с С. Шуманом и Б. Мейером. В дальнейшем развивался Исследовательской группой по программированию Оксфордского университета, в которой Ж.‑Р. Абриаль работал в начале 1980‑х гг. Этот язык послужил основой для многих других ЯФС (Z++,Object‑Z,Alloy), подходов (B‑Method) и средств (проектCZT, средаZETA).
Язык общей алгебраической спецификации(CASL) – общецелевой ЯФС, основанный на логике первого порядка с индукцией и поддерживающий некоторые дополнительные возможности. Разработан группой Инициатива по созданию общих каркасов, целью которой является категоризация большинства существующих языков спецификации. Существует множество разнообразных расширений языкаCASL(HasCASL,CoCASL,ModalCASL,CASL-LTL,HetCASL).
B‑Метод(B‑Method) – подход формальной разработки, использующий формальный методB. Он базируется на языкеАбстрактно-машинная нотация(AMN) – ЯФС для спецификации абстрактных машин, основанный на математической теории обобщённых подстановок. МетодBразработан Ж.–Р. Абриалем как развитие нотацииZ, но является более низкоуровневым и более акцентированным на усовершенствовании кода. На основеBреализовано множество инструментальных средств (ABTools,Atelier B,B4free,jbtools,ProB,Batcave) и платформ (BRILLIANT,Rodin).
Венский метод разработки (VDM) – подход формальной разработки с использованием ЯФСVDM‑SLдля моделирования систем на высоком уровне абстракции. Разработан в Венской лаборатории фирмыIBMв 1970‑х гг. Первоначально в виде Венского языка определения, а затем метаязыкаMeta-IV, использовался для разработки компиляторов для языков программирования из определений этих языков. В дальнейшем вVDMбыли включены методики и средства, разработанные наVDM‑SL. В частности расширение подхода под названиемVDM++поддерживает объектно-ориентированные и параллельные системы. ДляVDMиVDM++существуют и средства разработки (VDMTools,Overture).
Исчисление процессов(Process calculi,Process calculus) илиАлгебры процессов(Process algebras) – разнородное семейство связанных языков и подходов формального моделирования параллельных систем. Оно обеспечивает возможность высокоуровневого описания взаимодействия, коммуникации и синхронизации набора независимых процессов, в также манипуляции описаниями процессов. Обзор подходов исчисления процессов приведён ниже.
Несмотря на чрезвычайное разнообразие подходов исчисления процессов, можно выделить следующие три общие особенности:
1. Представление взаимодействия между независимыми процессами как коммуникации (передачи сообщений –message-passing), а не как модификации разделяемых переменных.
2. Описание процессов и систем с использованием небольшого набора примитивов, а также операторов для комбинирования этих примитивов.
3. Определение алгебраических законов для процессных операторов, которые позволяют манипулировать процессными выражениями с помощью эквациональных рассуждений.
Самыми известными до сих пор подходами исчисления процессов являются CCS,CSPиACP. Современными подходами исчисления процессов являются‑исчисление, исчисление среды,PEPA(Алгебра процессов для оценки производительности), исчисление слияния.
Исчисление взаимодействующих систем(CCS) – подход формальной разработки в рамках исчисления процессов, тесно связанный с исследованием теоретических положений и практических методов в области организации, взаимодействия и эквивалентности процессов. Создан Р. Милнером между 1973 г. и 1980 г. (изложен в книге в 1980 г.). Под взаимным влияниемCCSиCSPдля обоих подходов был разработан ряд усовершенствований. НаCCSреализовано несколько языков (CBS,LOTOS), кроме того для изученияCCS‑подобных систем применяются такие модели, как моноид истории и модель актёра.
Взаимодействующие последовательные процессы(CSP) – подход для описания образцов взаимодействия в параллельных системах. Предложен (в виде параллельного языка программирования) Т. Хоаром в статье 1978 г. В дальнейшем автор совместно с С. Бруксом и А.В. Роско развили этот язык в форму исчисления процессов и изложили статье в 1984 г. Т. Хоар изложил современную формуCSPв своей книге в 1985 г. ТеорияCSPдо сих пор остаётся предметом активных исследований. Ряд языков и подходов являются производнымиCSP(Timed CSP,RPT,CSPP,HCSP) или интегрируют его возможности с другими языками и подходами (TCOZ,Circus,CspCASL). ИзвестнымCSP–средством является программа проверки моделиFDR(букв. Очищение от сбоев / отклонений) – коммерческий продукт фирмыFormal Systems Ltd. ДругиеCSP–средства:ProBE,ARCиCasper.
Алгебра взаимодействующих процессов(ACP) – алгебраический подход к обоснованию параллельных систем. Разработан Ж. Бергстрой и Ж.У. Клопом в 1982 г. РазработкаACPсвязана с созданием абстрактной обобщённой аксиоматической системы для процессов (отсюда и понятие «алгебра процессов»). ПодходACPпослужил основой для разработки нескольких подходов для описания и анализа параллельных систем (CRL,mCRL2,HyPA).