- Артикул:00-01006708
- Автор: Орлов С.А.
- ISBN: 978-5-496-01917-0
- Обложка: Твердый переплет
- Издательство: Питер (все книги издательства)
- Город: СПб
- Страниц: 640
- Формат: 70х100/16
- Год: 2016
- Вес: 1747 г
- Серия: Учебное пособие для ВУЗов (все книги серии)
Учебник посвящен систематическому изложению принципов, моделей, методов и метрик, используемых в инженерном цикле создания сложных программных систем. Изложены основы как классических, так и гибких методов разработки, вопросы менеджмента классических и гибких программных проектов. Показаны последние научные и практические достижения, характеризующие динамику развития этой области. Например, значительное внимание уделяется самым «звонким» темам: сервисно-ориентированной архитектуре и облачным технологиям, предметно-ориентированному подходу и новейшей методологии DevOps, разработке через поведение. Описан комплексный подход к решению наиболее важных вопросов, возникающих в программных проектах.
Допущено Министерством образования и науки Российской Федерации в качестве учебника для студентов высших учебных заведений, обучающихся по специальности «Программное обеспечение вычислительной техники и автоматизированных систем» направлений подготовки дипломированных специалистов «Информатика и вычислительная техника».
Оглавление
Предисловие к пятому изданию
Введение
Благодарности
От издательства
Глава 1. Организация процесса разработки
Основные понятия программной инженерии
Официальная классификация процессов программной инженерии
Процессы соглашения
Процессы организационного обеспечения проекта
Процессы проекта
Технические процессы
Базис процессов разработки ПО
Модель «классический жизненный цикл»
Макетирование
Стратегии разработки ПО.
Инкрементная модель
Спиральная модель
Компонентно-ориентированная модель
Тяжеловесные и облегченные процессы
Манифест гибкой разработки программного обеспечения
ХР-процесс
Бережливая разработка программного обеспечения
Принцип 1. Ликвидация потерь
Принцип 2. Встраивание качества
Принцип 3. Формирование новых знаний
Принцип 4. Откладывание необратимых решений
Принцип 5. Быстрая доставка заказчику
Принцип 6. Уважение к людям
Принцип 7. Оптимизация целого
Модели качества процессов разработки
Контрольные вопросы и упражнения
Глава 2. Руководство программным проектом
Основные понятия руководства проектом
Начало проекта
Измерения, меры и метрики
Процесс оценки
Анализ риска
Планирование
Трассировка и контроль
Планирование программного проекта
Структура плана управления программным проектом
Иерархическая структура работ
Структура графика работ программного проекта
Контроль хода программного проекта — метод освоенного объема
Управление риском
Идентификация риска
Анализ риска
Ранжирование риска
Планирование управления риском
Разрешение и наблюдение риска
Управление персоналом
Подбор членов команды
Взаимодействия в команде
Состав группы
Управление документацией
Стандарты и полнота документации
Согласованность документации
Управление конфигурацией
Идентификация объектов в конфигурации ПО
Контроль версий
Контроль изменений
План управления конфигурацией
Scrum-процесс менеджмента гибкой разработки ПО
Scrum-команда
Владелец продукта
Scrum-мастер
Команда разработчиков
Спринт
Планирование спринта
Формат журнала спринта
Обзор спринта
Ретроспектива спринта
Канбан-процесс бережливого менеджмента
Контрольные вопросы и упражнения
Глава 3. Оценка при планировании программного проекта
Размерно-ориентированные метрики
Функционально-ориентированные метрики
Выполнение оценки в ходе планирования проекта
Выполнение оценки проекта на основе LOC- и FP-метрик
Конструктивная модель стоимости
Модель композиции приложения
Модель раннего этапа проектирования
Модель этапа пост-архитектуры
Предварительная оценка программного проекта
Анализ чувствительности программного проекта
Сценарий понижения зарплаты
Сценарий наращивания памяти
Сценарий использования нового микропроцессора
Сценарий уменьшения средств на завершение проекта
Контрольные вопросы и упражнения
Глава 4. Формирование ш анализ требований
Виды требований к программному обеспечению
Формирование требований
Анализ требований
Желаемые характеристики детального требования
Спецификация требований
Управление требованиями
Контрольные вопросы и упражнения
Глава 5. Классические методы анализа
Структурный анализ
Диаграммы потоков данных
Описание потоков данных и процессов
Расширения для систем реального времени
Расширение возможностей управления
Модель системы регулирования давления космического корабля
Методы анализа, ориентированные на структуры данных
Метод анализа Джексона
Методика Джексона
Шаг объект-действие
Шаг объект-структура
Шаг начального моделирования
Контрольные вопросы и упражнения
Глава 6. Основы проектирования программных систем
Особенности процесса синтеза программных систем
Особенности архитектурного этапа проектирования
Структурирование системы
Архитектура с хранилищем данных
Клиент-серверная архитектура
Многоуровневая архитектура
Архитектура канала и фильтра
Моделирование управления
Паттерны централизованного управления
Паттерны событийного управления
Декомпозиция подсистем на модули
Разделение понятий
Модульность
Информационная закрытость
Связность модуля
Функциональная связность
Информационная связность
Коммуникативная связность
Глава 9. Объектно-ориентарованная разработка требований
Формирование требований с помощью диаграммы Use Case
Актеры и элементы Use Case
Отношения в диаграммах Use Case
Работа с элементами Use Case
Спецификация элементов Use Case
Банкомат — пример диаграммы Use Case
Аспекты банкомата
Построение модели требований
Оценка программного проекта на основе диаграммы Use Case
Формирование требований с помощью диаграммы деятельности
Анализ требований с помощью диаграмм взаимодействия
Объекты и роли
Диаграммы взаимодействия
Диаграммы коммуникации
Диаграммы последовательности
Моделирование поведения с помощью диаграмм конечных автоматов
Диаграмма конечного автомата
Действия в состояниях
Условные переходы
Композитные состояния
Псевдосостояния управления
Применение диаграмм конечных автоматов
Контрольные вопросы и упражнения
Глава 10. Объектно-ориентированное проектирование и реализация
Архитектурное проектирование
Диаграммы пакетов
Диаграммы компонентов
Детальное проектирование
Диаграммы классов
Основные принципы детального проектирования
Принципы упаковки классов в архитектурные подсистемы
Документирование процесса проектирования
Принципы построения паттернов
Кооперации и паттерны
Паттерн Наблюдатель
Паттерн Компоновщик
Паттерн Команда
Мышление в терминах паттернов
Шаги паттерн-ориентированного проектирования
Проектирование пользовательского интерфейса
Сущностная эффективность
Согласованность задач
Наблюдаемость задач
Единообразие компоновки
Визуальная связность
Аспектно-ориентированное проектирование и программирование
Процедурная связность
Временная связность
Логическая связность
Связность по совпадению
Определение связности модуля
Сцепление модулей
Сложность программной системы
Характеристики иерархической структуры программной системы
Пошаговая детализация
Аспекты
Рефакторинг
Контрольные вопросы и упражнения
Глава 7. Классические методы проектирования
Метод структурного проектирования
Типы информационных потоков
Проектирование для потока данных типа «преобразование»
Проектирование для потока данных типа «запрос»
Метод проектирования Джексона
Доопределение функций
Учет системного времени
Контрольные вопросы и упражнения
Глава 8. Основы объектно-ориентированного представления программных систем
Принципы объектно-ориентированного представления программных систем
Абстрагирование
Инкапсуляция
Модульность
Иерархическая организация
Объекты
Общая характеристика объектов
Виды отношений между объектами
Связи
Видимость объектов
Агрегация
Классы
Общая характеристика классов
Виды отношений между классами
Ассоциации классов
Наследование
Агрегация
Зависимость
Конкретизация
Базис языка визуального моделирования
Унифицированный язык моделирования
Механизмы расширения в UML
Контрольные вопросы и упражнения
Разделение понятий
Основные термины аспектов
Основы компонентной объектной модели
Организация интерфейса СОМ
IUnknown — базовый интерфейс СОМ
Серверы СОМ-объектов
Преимущества СОМ
Работа с СОМ-объектами
Маршалинг
IDL-описание и библиотека типа
Развертывание программной системы на аппаратных средствах
Артефакты
Узлы
Диаграммы развертывания
Разработка на основе предметно-ориентированного проектирования
DevOps — методология интеграции шагов жизненного цикла ПО
Контрольные вопросы и упражнения
Глава 11. Особенности разработки баз данных
Основные понятия баз данных: модели данных
Организация реляционной базы данных
Отношение «один-к-одному»
Отношение «один-ко-многим»
Отношение «многие-ко-многим»
Нормализация реляционных баз данных
Расширение иМ1 для моделирования баз данных
Типы моделей данных
Таблицы, сущности, представления и отношения
Ключи, ограничения, триггеры и хранимые процедуры
Особенности отображения атрибутов объектов и классов
в реляционную базу данных
Теневая (скрытая) информация
Метаданные отображения
Отображение атрибутов уровня класса
Отображение деревьев наследования в реляционную базу данных
Отображение дерева наследования в единственную таблицу
Отображение каждого конкретного класса в отдельную таблицу
Отображение каждого класса в отдельную таблицу
Отображение классов в универсальную табличную структуру
Отображение множественного наследования
Объекты и базы данных: классификация и реализация отношений
Реализация отношений между объектами
Реализация отношений в реляционных базах данных
Отображение отношений объектов в реляционную базу данных
Отображение отношений «один-к-одному»
Отображение отношений «один-ко-многим»
Отображение отношений «многие-ко-многим»
Отображение отношений композиции
Отображение рекурсивных отношений
Настройка быстродействия базы данных
Контрольные вопросы и упражнения
Глава 12. Метрики объектно-ориентированных программных систем
Метрические особенности объектно-ориентированных программных систем
Локализация
Инкапсуляция
Информационная закрытость
Наследование
Абстракция
Эволюция мер связи для объектно-ориентированных программных систем
Связность объектов
Сцепление объектов
Набор метрик Чидамбера и Кемерера
Использование метрик Чидамбера—Кемерера
Метрики Лоренца и Кидда .
Метрики, ориентированные на классы
Операционно-ориентированные метрики
Метрики для ОО-проектов
Набор метрик Фернандо Абреу
Аспектно-ориентированные метрики
Метрики для объектно-ориентированного тестирования
Метрики инкапсуляции
Метрики наследования
Метрики полиморфизма
Контрольные вопросы и упражнения
Глава 13. Примеры объектно-ориентированных процессов разработки
Основные понятия унифицированного процесса разработки
Этапы и итерации
Рабочие потоки процесса
Модели
Технические артефакты
Этапы унифицированного процесса разработки
Этап начало (Inception)
Этап развитие (Elaboration)
Этап конструирование (Construction)
Этап переход (Transition)
Оценка качества проектирования
Разработка простого интерфейса пользователя для встроенной системы
Этап начало
Этап развитие
Этап конструирование
Разработка системы управления торговым автоматом
Этап начало
Этап развитие
Этап конструирование
Разработка в стиле экстремального программирования
ХР-реализация
ХР-итерация
Элемент ХР-разработки
Коллективное владение кодом
Взаимодействие с заказчиком
Стоимость изменения и проектирование
Планирование в ХР-разработке системы обслуживания банковских карт
Спецификация заказчика
Формирование пользовательских историй
Планирование реализации
Планирование итерации
Контрольные вопросы и упражнения
Глава 14. Структурное тестирование программного обеспечения
Основные понятия и принципы тестирования ПО
Тестирование «черного ящика»
Тестирование «белого ящика»
Особенности тестирования «белого ящика»
Способ тестирования базового пути
Потоковый граф
Цикломатическая сложность
Шаги способа тестирования базового пути
Способы тестирования условий
Тестирование ветвей и операций отношений
Способ тестирования потоков данных
Тестирование циклов
Простые циклы
Вложенные циклы
Объединенные циклы
Неструктурированные циклы
Контрольные вопросы и упражнения
Глава 15. Функциональное тестирование
программного обеспечения
Особенности тестирования «черного ящика»
Способ разбиения по эквивалентности
Способ анализа граничных значений
Способ диаграмм причин-следствий
Контрольные вопросы и упражнения
Глава 16. Организация процесса тестирования программного обеспечения
Методика тестирования программных систем
Тестирование элементов
Тестирование интеграции
Нисходящее тестирование интеграции
Восходящее тестирование интеграции
Сравнение нисходящего и восходящего тестирования интеграции
Тестирование правильности
Системное тестирование
Тестирование восстановления
Тестирование безопасности
Стрессовое тестирование
Тестирование производительности
Искусство отладки
Контрольные вопросы.
Глава 17. Объектно-ориентированное тестирование
Расширение области применения объектно-ориентированного тестирования
Изменение методики при объектно-ориентированном тестировании
Особенности тестирования объектно-ориентированных «модулей»
Тестирование объектно-ориентированной интеграции
Объектно-ориентированное тестирование правильности
Проектирование объектно-ориентированных тестовых вариантов
Тестирование, основанное на ошибках
Тестирование, основанное на сценариях
Тестирование поверхностной и глубинной структуры
Способы тестирования содержания класса
Стохастическое тестирование класса
Тестирование разбиений на уровне классов
Способы тестирования взаимодействия классов
Стохастическое тестирование
Тестирование разбиений
Тестирование на основе состояний
Разработка через тестирование
Среда тестирования JUnit
Разработка через поведение
Контрольные вопросы и упражнения
Глава 18. Сервисно-ориентированная архитектура
Основные понятия сервисно-ориентированной архитектуры
XML-стандарты для веб-служб
Определение интерфейса веб-службы
Веб-службы и REST-подход
Разработка служб
Композиция служб
Контрольные вопросы и упражнения
Глава 19. Облачные технологии
Предпосылки облачных технологий
Основные понятия облачных технологий
Модели предоставления облачных технологий
Архитектура облачного SaaS-приложения
Сервер приложения для облачного SaaS-сайта
Контрольные вопросы и упражнения
Глава 20. Обеспечение качества программных систем
Определение качества программного обеспечения
Определение и цели обеспечения качества ПО
Факторы качества ПО
Деятельность по обеспечению качества ПО
Технические проверки и аудиты
Инспектирование
Верификация и валидация
План обеспечения качества ПО
Контрольные вопросы и упражнения
Глава 21. Автоматизация разработки визуальной модели программной системы
Общая характеристика системы IBM Rational Software Architect
Создание диаграммы Use Case
Создание диаграммы последовательности
Создание диаграммы классов
Генерация программного кода
Трансформация программного кода в модель UML
Заключение
Приложение А. Факторы затрат пост-архитектурной модели СОСОМ© II
Приложение Б. Внутренние и внешние метрики качества
Приложение В. Терминология языка UML и унифицированного процесса
Словарь терминов
Список литературы
Алфавитный указатель