- •Введение
- •Практическая работа №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. Трассирование требований
- •Вопросы для рассмотрения.
- •Рекомендуемая литература по теме
2.2. Основные понятия технологии программирования
В данном разделе рассматриваются общеизвестные термины, которые используются в технологии программирования. Такое рассмотрение необходимо, потому что иначе очень легко упустить некоторые тонкости, специфические для рассматриваемого предмета, положившись на «общеизвестность» терминов. По нашему мнению, едва ли не самым заметным свидетельством прогресса в технологии программирования является то, что, наконец, удалось договориться о терминах.7
2.2.1. Процессы и модели
Так или иначе, предметом технологии программирования является процесс разработки программного обеспечения.
Процесс - Последовательность смены состояний в развитии чего-нибудь.
Процесс - Последовательность действий для достижения какого-либо результата.
Заметим, что два процитированных определения не являются разными определениями -это описание одного и того же предмета с разных точек зрения. Можно обратить свое внимание на смену состояний. Но что является причиной смены состояний? Очевидно, выполнение каких-то действий. Можно обратить свое внимание на выполнение действий. Но что является результатом выполнения действий? Очевидно, смена состояний. Чтобы иметь саму возможность делать какие-то наблюдения или проводить рассуждения относительно процесса, нужно иметь описание процесса, или его модель. Термин «модель» широко используется в различных областях человеческой деятельности, и имеет много значений. В данном случае подразумевается следующее значение.
Модель - любой образ или аналог (мысленный или условный: изображение, описание, схема, чертеж и т.п.) какого-либо объекта, процесса или явления («оригинала» модели), используемый в качестве его «представителя».8
В разных областях человеческой деятельности используют совершенно различные средства для построения моделей. Физические процессы описывают математическими моделями, например, системами дифференциальных уравнений. Социальные процессы описывают длинными и невнятными пассажами на естественном языке.
Процесс разработки программ также пытались описывать самыми разными способами, но постепенно к настоящему времени сложилась традиция использовать для описания процесса программирования примерно те же средства, которые используются для самого программирования. Программы же, как всем известно, записывают как алгоритмы, выраженные на том или ином языке программирования.
7 Фактическая
стабилизация и унификация терминологии
стала наблюдаться сравнительно недавно,
с начала этого века. Но поскольку
переводчики зарубежных книг по технологии
программирования редко заглядывают в
утвержденные терминологические
ГОСТы, в отечественной литературе пока
еще наблюдается некоторый разнобой в
терминологии. 8 Большой
энциклопедический словарь дает еще
шесть толкований этого термина.
Замечание. Следует иметь в виду, что в современных технологиях программирования процесс разработки программного обеспечения рассматривается не как один последовательный процесс, а как несколько параллельных процессов, взаимодействующих друг с другом. Это накладывает дополнительные сложности алгоритмического и терминологического характера.