
- •Раздел 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
Сборочное программирование
Сборочное программирование– вид подходов, предполагающих сборку программы из уже разработанных фрагментов. Сборка может осуществляться вручную, указываться на языке сборки или извлечена полуавтоматическим образом из спецификации. Фрагментами кода обычно выступают программные модули или иные части программы, представляемые в виде модулей определённого вида.
Выделяют следующие основные способы поддержки этого подхода:
1. Выработка стиля программирования, соответствующего принятым принципам модульности.
2. Повышение эффективности межмодульных интерфейсов. Обеспечение поддержки модульности на уровне программно-аппаратной платформы.
3. Ведение большой базы программных модулей. Решение проблемы идентификации модулей и проверки пригодности по описанию интерфейса.
Сборочное программирование тесно связано с методом повторного использования кода, причём как исходного, так и бинарного. Выделяют несколько разновидностей технологических подходов сборочного программирования, которые в значительной степени определяются базисной методологией: 1. Модульное сборочное;2. Объектное сборочное;3. Компонентное сборочное и4. Аспектное сборочное программирование.
Каждый из подходов (после модульного программирования) можно рассматривать как развитие предыдущего подхода в направлении решения различных проблем разработки. Особенно это важно для программирования, так как многие проблемы связаны с поддержкой и улучшением программного кода системы.
Модульное сборочное программирование– исторически первый подход сборочного программирования, базирующийся на процедурах и функциях методологии структурного императивного программирования, точнее их объединении – программных модулях. В разных языках программные модули называются по-разному: модуль (moduleвModula‑2,unitвPascal), пакет (packageвAda) или просто отдельный файл (вC/C++и т.п.).
Некоторые рассматривают указанную методологию, дополненную концепцией модуля, как полноправную, самостоятельную, используя для неё название модульно-ориентированное программирование, подчёркивая этим выделениемодульностикак отдельной специфики, а не части топологической специфики.
Развитием этого подхода является расширяемое программирование– модульно-основанное программирование, при котором добавление новых модулей возможно без каких-либо изменений в существующих модулях. Данный подход предложен Н. Виртом и впервые реализован при проектированииOberon System. Фактически это компонентно-основанное программирование без ООП, так как модуль вOberonявляется полноценным компонентом (т.е. выполняет соответствующие ему функции). РазвитиемOberonсталComponent Pascal, в своём названии отразивший своё происхождение от языкаPascalи свою нацеленность на компонентное программирование.
Объектное сборочное программирование– подход сборочного программирования, базирующийся на библиотеках классов ООП, поставляемых в виде исходного (VCLвDelphi) или бинарного кода (DLLвC/C++дляMS Windows).
Как следует из названия, подход соответствует методологии ООП.
Компонентное сборочное программирование– развитие предыдущего подхода, базирующееся на библиотеках компонентов. Данный подход связан с такими понятиями, как компонент и интерфейс.
Компонент– класс, доступ к которому обеспечивается через строго определённые интерфейсы. Подинтерфейсомпонимается набор средств и правил для обеспечения единообразного взаимодействия. Использование интерфейсов компонентов вместо непосредственного доступа к объектам позволяет снять проблему несовместимости компиляторов и обеспечивает смену версий компонентов без перекомпиляции основанного на них ПО. Наиболее известными примерами реализации этого подхода являютсяCOM(DCOM,COM+),CORBA,.NET.
Некоторые рассматривают этот подход как соответствующий своей определённой методологии, используя для неё название компонентно-ориентированное программирование(КОП). Эта методология является дальнейшим развитием ООП. Её можно рассматривать как методологию, полученную применением специфики модульности к ООП.
Аспектное сборочное программирование– развитие предыдущего подхода, базирующееся на библиотеках многоаспектных компонентов. Данный подход связан с такими понятиями, как аспект и значимость.
Аспект– модуль, который содержит реализацию определённой значимости.Значимость(букв. участие, отношение) – эксплуатационная часть системы, несущая определённую характеристику (в отличие от основной части, ориентированной на ПрО). Значимость связана с определёнными эксплуатационными требованиями, предъявляемыми к системе (надёжность, контролируемость, безопасность). Примерами значимостей являются обработка контекстно-зависимых ошибок и исключений, ведение журналов работы с системой, выполнение контрольных проверок параметров, подтверждение подлинности.
Существенные проблемы связаны с реализацией пересекающихся значимостей. Пересекающаяся значимость– это значимость, связанная с написанием кода, при обычном программировании сложно взаимосвязанного и рассредоточенного по всем модулям системы, т.е. «пересекающего» весь программный код. Выделение пересекающей значимости в аспект позволяет в полной мере использовать модульность при реализации всех требований и естественным образом разделить ответственность членов команды.
Некоторые рассматривают этот подход (аналогично КОП) как соответствующий своей определённой методологии, используя для неё название аспектно-ориентированное программирование(АОП). Эта методология является дальнейшим развитием ООП и КОП. Её можно рассматривать как методологию, полученную повторным применением специфики модульности к КОП на более высоком уровне организации модульности.