- •Введение
- •Практическая работа №1. Тема: технология программирования. Основные понятия и подходы.
- •1.1. Назначение технологии программирования
- •1.2. История развития технологии программирования
- •1.2.1. Дореволюционный период
- •1.2.2. «Революция в программировании»
- •1.2.3. Послереволюционный период
- •1.3. Типы программных проектов
- •1.4. Составные части технологии программирования
- •1.5. Проект, продукт, процесс и персонал
- •Вопросы для рассмотрения.
- •Рекомендуемая литература по теме.
- •Практическая работа №2. Тема: приемы обеспечения технологичности программных продуктов.
- •2.1. Циклический характер разработки
- •2.2. Основные понятия технологии программирования
- •2.2.1. Процессы и модели
- •2.2.2. Фазы и витки
- •2.2.3. Вехи и артефакты
- •2.2.4. Заинтересованные лица и работники
- •2.3. Выявление и анализ требований
- •2.3.1. Требования к программному обеспечению
- •2.3.2. Схема разработки требований
- •2.3.3. Управление требованиями
- •2.4. Архитектурное и детальное проектирование
- •2.4.1. Архитектурное проектирование
- •2.4.2. Детальное проектирование
- •2.5. Реализация и кодирование
- •2.6. Тестирование и верификация
- •2.6.1. Процесс контроля качества
- •2.6.2. Методы «белого ящика» и «черного ящика»
- •2.6.3. Инспектирование и обзоры
- •2.6.4. Цели тестирования
- •2.6.5. Верификация, валидация и системное тестирование
- •2.7. Сопровождение и продолжающаяся разработка
- •Вопросы для рассмотрения.
- •Рекомендуемая литература по теме.
- •Практическая работа №3. Тема: определение требований к программному обеспечению и исходных данных для его проектирования. Модели процесса разработки.
- •3.1. Водопадные и конвейерные модели
- •3.2. Спиральные и инкрементные модели
- •3.4. Конструирование модели процесса
- •3.4.1. Выявление требований к процессу
- •3.4.2. Используемые фазы, вехи и артефакты
- •3.4.2.1. Фаза «Анализ»
- •3.4.2.2. Фаза «Проектирование»
- •3.4.2.3. Фаза «Реализация»
- •3.4.2.4. Фаза «Стабилизация»
- •3.4.2.5. Фаза «Внедрение»
- •3.4.3. Выбор архитектуры процесса.
- •3.4.3.1. Типы проектов
- •3.4.3.2. Модель процесса сверх легкого проекта
- •3.4.3.3. Модель процесса легкого проекта
- •3.4.3.4. Модель процесса тяжелого проекта
- •3.4.3.5. Модель процесса сверх тяжелого проекта
- •3.4.3.6. Занятость исполнителей
- •3.4.4. Порядок проведения типового проекта
- •3.4.4.1. Этап 1. Подготовка к проекту
- •3.4.4.2. Сбор и анализ предварительной информации
- •3.4.4.3. Формирование бригады проекта
- •3.4.4.4. Подготовка исходных документов
- •3.4.4.5. Этап 2. Работа над проектом
- •3.4.4.6. Процедура выполнения фазы проекта
- •3.4.4.7. Подготовка результирующих материалов вех
- •3.4.4.8. Этап 3. Завершение проекта
- •3.4.4.9. Архивирование результатов работы
- •3.4.4.10. Подведение итогов проекта
- •3.4.5. Документированные процедуры
- •3.4.5.3. Проверка качества материалов
- •3.4.6. Выводы
- •Вопросы для рассмотрения.
- •Рекомендуемая литература по теме
- •Практическая работа №4. Тема: анализ требований и определение спецификаций программного обеспечения при структурном подходе.
- •4.1. Спецификации программного обеспечения при структурном подходе
- •4.2. Определение понятий и видов требований
- •Виды требований
- •4.1.2. Анализ и сбор требований
- •4.1.3. Инженерия требований по
- •4.2. Трассирование требований
- •Вопросы для рассмотрения.
- •Рекомендуемая литература по теме
Введение
Совокупность известных технологических подходов к разработке программного обеспечения, или, несколько короче, технология программирования, является инженерной дисциплиной, входящей в обязательный набор знаний и умений всякого инженера, причастного к созданию и эксплуатации программного обеспечения компьютеров. Технология программирования имеет четко выделенный объект изучения - процессы разработки и сопровождения программного обеспечения, но, в настоящее время, не имеет единого метода и общепринятого способа построения. Технология программирования не является строгой математической дисциплиной, которую можно изложить последовательно, начиная с основополагающих понятий и применяя дедуктивные доказательства. Напротив, технология программирования является собранием разнородных и часто несогласованных друг с другом моделей, методик и средств. Детально изложить все используемые в технологии программирования приемы в рамках одного курса невозможно - их разнообразие слишком велико. Кроме того, технологические приемы разработки программного обеспечения очень быстро меняются, почти каждые полгода предлагаются новые подходы, и всякое изложение конкретных технологических решений в рамках учебного курса заведомо отставало бы от практики их применения в реальной жизни.
Практическая работа №1. Тема: технология программирования. Основные понятия и подходы.
Процесс создания программ для компьютеров обычно называют программированием. Однако этим же словом часто обозначают и другие виды человеческой деятельности. Например, «математическое программирование» - раздел математики, или «политическое программирование» - словосочетание, которое нетрудно встретить в средствах массовой информации. Если речь идет именно о создании программ для компьютеров, то во избежание неоднозначности используют оборот разработка программного обеспечения. В этом курсе слово программирование используется только в смысле «процесс разработки программного обеспечения», а потому для краткости и удобочитаемости везде, где это возможно, используется термин «программирование» как синоним оборота «процесс разработки программного обеспечения».
Программирование (computer programming) — это процесс создания программистом (человеком) программы (информационной структуры), предназначенной для последующего исполнения (компьютером).
Как правило (в большинстве случаев), интерес представляет не только факт исполнения программы компьютером, но и использование результата исполнения человеком. Однако можно указать и несколько исключений, например, программа первоначальной загрузки операционной системы, так что включение ссылки на использование результатов исполнения программы человеком ограничило бы общность приведенного определения без явной необходимости. Мы не включаем указание на использование результатов исполнения программы человеком в явном виде в определение, но неявно подразумеваем, что в типичном случае такое использование имеет место.
Таким образом, в процессе программирования присутствуют явно субъект, объект и цель. В типичном (и привычном) случае субъектом является человек, который ведет процесс осознанно, объектом является текст на формальном языке, а целью является такое выполнение программы, которое в свою очередь имеет явно обозначенную цель. Далее, если явно не оговорено противное, подразумевается именно этот типичный случай.
Замечание:
Спектр вариантов процесса программирования отнюдь не исчерпывается рассматриваемым типичным случаем. Например, программирующим субъектом может быть не человек, а другая программа (автоматический синтез программы по формальным спецификациям или по примерам), процесс программирования может быть не осознан (запись макроса с помощью макрорекордера). Программа может быть выражена на нелинейном языке (нейрокомпьютер) или же не иметь материального носителя (план действий в голове пользователя графического интерфейса). Целью программирования может быть публикация текста программы (а не получение результата ее выполнения) или получение невыполнимой программы (защита от несанкционированного копирования). В настоящее время эффективность и результативность программирования в целом оставляет желать лучшего. Несмотря повсеместное распространение компьютеров и очевидное улучшение их программного обеспечения, остается весьма значительной доля проектов по разработке программного обеспечения, которые нельзя считать вполне успешными. Наряду с эффектными достижениями имеются и сравнительно многочисленные досадные неудачи. К сожалению, до сих пор слишком часто приходится делать вывод, что программирование рискованно, программы ненадежны, а программисты неуправляемы.