
- •Раздел 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. Понятие «программирование»
Программирование может рассматриваться как научная дисциплина и как инженерная деятельность.
Программирование как дисциплина
Программирование рассматривают как научную дисциплину [1].
Информатика– наука, изучающая законы и методы накопления, обработки и передачи информации. С теоретической точки зрения выделяют теоретическую информатику.Теоретическая информатикаилиИнформационная наука– раздел информатики, изучающий информационные процессы и системы, в том числе структуру информации и её использование в различных областях человеческой деятельности. С практической точки зрения выделяют прикладную информатику.Прикладная информатикаилиВычислительная наука– совокупность разделов информатики и вычислительной техники, ориентированная на решение разнообразных вопросов автоматизации накопления, передачи и обработки информации.
Тогда программирование можно охарактеризовать следующим образом.
Программирование– раздел информатики, изучающий описание процессов обработки данных. Следует отметить, что большинство разделов и направлений программирования обычно относят к прикладной информатике.
В программировании чётко выделяются разделы, перечисленные ниже.
1.Теория программирования(тж. наука программирования): изучает математические абстракции программ, рассматриваемых как объекты, выраженные на формальном языке, обладающие определённой информационной и логической структурой и подлежащие автоматическому выполнению на компьютере. Это совокупность направлений, изучающих основные принципы программирования с помощью формальных математических методов.
Рис.1.2. Понятия и направления теории программирования
Она основывается на трёх понятиях: алгоритм, задача и вычислитель, и включает в себя следующие направления, связанные с ними (рис.1.2): структуры данных; поиск и упорядочивание; формальные языки и грамматики, автоматы и другие абстрактные машины; синтаксический анализ программ; оценка трудоёмкости и теория сложности алгоритмов; эквивалентные преобразования алгоритмов; спецификация задач, доказательство свойств программ, автоматический синтез программ; семантика языков программирования (теория моделей программ).
2.Методология программирования: изучает методы с точки зрения основ их построения. Конкретная методология (подход) – это объединённая единым философским подходом совокупность методов, применяемых в процессе разработки.
3.Технология программирования: изучает процессы разработки ПО как технологические процессы, а также порядок их прохождения (с использованием знаний, методов и средств). Конкретная технология (подход) содержит в себе определённый набор процессов, а также используемых в них знаний, методов и средств.
4.Инженерия программированияилипрограммная инженерия: изучает различные методы и инструментальные средства с точки зрения определённых целей, т.е. имеет очевидную практическую направленность. Инженерия понимается как инженерное дело, творческая техническая деятельность. Основная идея инженерии программирования состоит в том, что разработка ПО является формальным процессом, который можно изучать и совершенствовать.
Содержание инженерии весьма динамично и включает большое количество направлений, среди которых следует отметить следующие: процесс разработки в рамках проекта; моделирование ПрО; формирование требований к продукту; формальные спецификации; архитектура ПО; тестирование ПО; сопровождение и эволюция ПО; анализ ПО; инструментарий и окружение инженерии; математические основания инженерии; метрики ПО; экономика ПО; инженерия программирования специфичных систем (связующего обеспечения, систем реального времени, мобильных систем, распределённых систем, систем на основе Интернет и т.д.); инженерия программирования как учебная дисциплина.
Некоторые из этих направлений тесно связаны с методологией и технологией программирования, которые рассматривают их с соответствующих точек зрения.
5.Инструментарий программирования илипрограммный инструментарий: изучает системы программирования. Сюда входят все инструменты, поддерживающие процесс разработки ПО.
Понятие «технология».Часто используются сочетания «CASE-технология», «Интернет-технология», «Java-технология» и т.п. В них слово «технология» обычно применяется в рекламных и маркетинговых акциях. Оно подчёркивает специфику средства, поддерживающего ведение технологических процессов, например набора инструментов, совокупности стандартов или языка / среды программирования, и связанных механизмов.
Термин «метод».В каждом из таких разделов, как методология, технология и инженерия, использовался термин «метод». В общем случаеметодпредставляет собой путь исследования или познания. Метод включаетсредства– с помощью чего осуществляется действие – испособы– каким образом осуществляется действие. В методологии программирования методы рассматриваются с точки зренияосновихпостроения, в технологии программирования – с точки зрения ихиспользованияпри организации процессов, а в инженерии программирования – с точки зрениядостиженияс их помощьюопределённых целей.
Основные направления в программировании представлены тремя взаимосвязанными группами (рис.1.3). Первая –направляющая– группа содержит два направления, с которыми надо определиться перед началом работы с проектом. Выбранные методы и подходы определят основную идеологию и принципы проекта. Вторая –инструментальная– группа содержит два направления – языковую и системную поддержку проекта. Третья –базисная– группа содержит два направления, представляющие платформы – основу, на которой базируется проект.
Рис.1.3. Группы направлений программирования
Основная задача программирования на профессиональном уровне решается с помощью приведённых основных направлений.
Краткие рекомендации по их применению выглядят следующим образом:
1. Сначала следует определить методологию, которая будет включать совокупность методов и концепций, объединенных общим философским подходом.
2. Далее следует выбрать технологию, который будет определять совокупность процессов, применяемых при разработке программного продукта. Определенная ранее методология включает совокупность методов, которые будут применены в технологическом подходе.
3. Методология и технология определяют языки и системы программирования, необходимые для каждого процесса избранного технологического подхода.
4. Технологические процессы будут исполняться на некоторых аппаратной и операционной платформах. Заметим, что аппаратная и операционная платформы могут существенно определять наличие и специфику инструментов (систем программирования). В большинстве разработок следует избегать зависимости от платформ, однако ряд проектов (как правило, системных) в большой степени опирается на их хорошее знание.