- •Введение
- •Практическая работа №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.1. Назначение технологии программирования
Проблемы в области программирования существуют, и отрицать это невозможно. Лучшие программисты, ведущие предприятия и компьютерное сообщество в целом постоянно тратят значительные и все возрастающие усилия на решение этих проблем. В результате в общем поле компьютерных наук выделились и дифференцировались различные дисциплины. Дисциплина, которая направлена, прежде всего, на решение внутренних проблем программирования, получила название технологии прогаммирования, или инженерии программных систем. Последний термин является точным переводом английского термина software engineering.
Технология программирования (software engineering) - это совокупность методов и средств, позволяющая наладить производственный процесс создания программного обеспечения.
В этом определении особо следует подчеркнуть слово «производственный», которое отражает важнейшую особенность технологии программирования. Например, в официальном определении родственной дисциплины - информатики (computer science) указание на производственный характер дисциплины отсутствует.
Информатика (computer science) - это дисциплина, изучающая общие свойства информации, а также вопросы, связанные с ее сбором, хранением и обработкой.
Поскольку сбор, хранение и обработка информации в настоящее время выполняются, главным образом, с помощью компьютеров, а компьютеры не могут работать без программного обеспечения, информатика оказывается неразрывно связанной с программированием.
Соотношение технологии программирования (software engineering) и информатики (computer science) трудно описать в двух словах. Информатика - более общее понятие, но считать технологию программирования просто частью информатики было бы не совсем верно. В современной практике применения этих отраслей знания те вопросы, которые имеют преимущественно теоретический характер, принято относить к информатике, а сугубо практические приемы принято считать элементами технологии программирования. Например, методы математического доказательства правильности программ обычно относят к теоретической информатике, а методы тестирования - к технологии программирования, хотя это различные методы решения одной и той же задачи. Конечно, это отделение технологии программирования от информатики несколько условно и строгой границы здесь нет, но тенденция очевидна ебать,
1.2. История развития технологии программирования
Программирование - сравнительно молодая область человеческой деятельности. Как массовая профессия программирование существует около полувека, и этот срок намного меньше, чем история развития других инженерных дисциплин. Неудивительно, что программирование еще не избавилось от многих «детских болезней», характерных для всех новых видов человеческой деятельности. Но программирование развивается стремительно, а детские болезни быстро проходят.
В истории технологии программирования происходило множество событий, предлагалась и предлагается масса идей. Чтобы как-то систематизировать эти факты, мы предлагаем следующую классификацию.
Все факты истории технологии программирования делятся на три класса, которые приближенно соответствуют трем периодам.