В наличии

Характеристики

ISBN/ISSN 978-5-7782-3455-0
Год издания 2017
Автор Романов Е.Л.
Кафедра ВТ
Типография НГТУ
Факультет АВТФ
700 руб.
В корзину В корзине

Программный код – основная «материальная ценность» любого проекта, а программисты – его непосредственные производители. Поэтому взаимопонимание между ними и остальными участниками процесса производства программного продукта, а также качество кода являются определяющими факторами успеха проекта в целом.
В предлагаемом издании основы программной инженерии, структура жизненного цикла проекта, технологические дисциплины и их артефакты рассматриваются с точки зрения взаимосвязи с создаваемым кодом. Излагается содержание методологий гибкого проектирования и унифицированного процесса, идеи разработки проекта «от кода», базис грамотного программирования: эффективность алгоритмов, ООП, шаблоны проектирования, метрика кода, тестирование.
Программная архитектура рассматривается начиная от конкретики клиент-серверных приложений и прикладных протоколов и заканчивая общими вопросами проектирования и преодоления «архитектурной пропасти» между функционалом и реализацией.
Учебник рекомендуется студентам, обучающимся по направлениям, связанным с информационными технологиями, как изложение основ программной инженерии; будущим программистам – для понимания роли и места профессии в процессе разработки и представления о смежных видах деятельности, которыми при необходимости придется заниматься по совместительству; всем остальным – для понимания специфики разработки качественного кода, особенностей процесса программирования, его организации и контроля.

Программный код – основная «материальная ценность» любого проекта, а программисты – его непосредственные производители. Поэтому взаимопонимание между ними и остальными участниками процесса производства программного продукта, а также качество кода являются определяющими факторами успеха проекта в целом.
В предлагаемом издании основы программной инженерии, структура жизненного цикла проекта, технологические дисциплины и их артефакты рассматриваются с точки зрения взаимосвязи с создаваемым кодом. Излагается содержание методологий гибкого проектирования и унифицированного процесса, идеи разработки проекта «от кода», базис грамотного программирования: эффективность алгоритмов, ООП, шаблоны проектирования, метрика кода, тестирование.
Программная архитектура рассматривается начиная от конкретики клиент-серверных приложений и прикладных протоколов и заканчивая общими вопросами проектирования и преодоления «архитектурной пропасти» между функционалом и реализацией.
Учебник рекомендуется студентам, обучающимся по направлениям, связанным с информационными технологиями, как изложение основ программной инженерии; будущим программистам – для понимания роли и места профессии в процессе разработки и представления о смежных видах деятельности, которыми  при необходимости придется заниматься по совместительству; всем остальным – для понимания специфики разработки качественного кода, особенностей процесса программирования, его организации и контроля.



ОГЛАВЛЕНИЕ

Введение    11
Программная инженерия. Кому и почему важен «взгляд от кода»?    11
Программист: творец или рабочая лошадка?    12
Последовательность освоения    14
Приемы изложения    15
Программная инженерия и проблемы образования: действительные и мнимые    16
Глава 1. ГОМЕОПАТИЧЕСКАЯ ДОЗА ПРОГРАММНОЙ ИНЖЕНЕРИИ    19
1.1. О самоценности программного кода    19
Проектирование «от кода»    20
Жизненный цикл разработки «от кода»    21
О необходимости использования общих решений и абстракций    23
Документирование: производственная необходимость и чувство меры    25
Проектная документация: чертеж или эскиз?    26
Качество кода и его развитие    27
1.2. Программная инженерия – эссе на заданную тему    28
Технология и ремесло    28
Программная инженерия и информатика    29
Программная инженерия как проектная деятельность    31
Жизненный цикл программной системы и его модели    32
Методологии программной инженерии    35
Исторический экскурс: структурные модели проектирования ПО    38
Под сводом знаний SWEBOK    42
Глава 2. ИНСТРУМЕНТЫ И ДОКУМЕНТЫ. UML    43
2.1. UML – как же он моделирует?    43
Что понимать под моделированием?    44
Фанатизм от UML и чувство меры    46
2.2. UML – прожиточный минимум для программиста    46
Компоненты UML    47
Диаграммы    55
Глава 3. ГРАМОТНОЕ КОНСТРУИРОВАНИЕ И КОДИРОВАНИЕ    71
3.1. Алгоритмы и структуры данных. О пользе общего образования    71
Трудоемкость алгоритмов    71
Алгоритм и данные – время и пространство программного кода    74
Жадность против тупости    75
Иерархия, группировка, выбор системы координат    76
3.2. В ООП-среде как рыба в воде    76
Рефлексия    77
Полиморфизм внешний и внутренний. Абстрактные классы и интерфейсы    78
Вложенные и анонимные классы    80
Лямбда-выражения. Анонимные функции    82
Внутренний параллелизм. Потоки    82
Синхронизация    85
Символьные, двоичные и сериализуемые потоки ввода / вывода    88
Исключения и их обработка    97
3.3. Шаблоны проектирования и конструирования    99
Базовые шаблоны    100
Порождающие шаблоны    105
Структурные шаблоны    107
Поведенческие шаблоны    113
Шаблоны параллелизма    117
Системные шаблоны    122
3.4. Метрика и качество кода    123
Стилистические метрики    125
Количественные метрики    127
Сложность потоков управления и данных    129
Метрики связей модульного кода    130
Объектно-ориентированные метрики    132
Запутывающие преобразования    135
Средства контроля качества кода    137
Глава 4. ПОПУЛЯРНО ОБ АРХИТЕКТУРЕ. КЛИЕНТ-СЕРВЕРНЫЕ ПРИЛОЖЕНИЯ И ПРИКЛАДНЫЕ ПРОТОКОЛЫ    143
4.1. «Слоеный пирог» клиент-серверной архитектуры    143
Многослойная структура приложения    143
Бизнес-логика, бизнес-объекты, бизнес-слой    145
Многослойная организация приложения как основа клиент-серверной
архитектуры    147
Пример клиент-серверной архитектуры. Система учета рейтинга успеваемости    150
4.2. Любовный треугольник MVC    153
Классический архитектурный паттерн и паттерн проектирования    153
Архитектурный MVC: контроллер – управление долгосрочным поведением представления    155
4.3. Распределенные системы. Компоненты и взаимодействия    157
Распределенные системы    158
Клиент–сервер: роли и программы, взаимодействия    159
Интерфейсы и протоколы    161
Постоянные соединения и транзакции    162
Стратегии взаимодействия «клиент–сервер»    163
4.4. Что такое протокол? Распространенные решения. Терминология    165
Протокол и интерфейс. Сходства и различия    165
Иерархия протоколов в сетях    167
Житейский пример. Разговор по телефону    170
Составные части описания протокола    171
Протокол и надежность распределенной системы    172
Терминология. Синхронный и асинхронный    172
Терминология. Формат    173
Терминология. Текстовые, двоичные и сериализуемые потоки данных    173
Распространенные решения из протоколов низших уровней    174
Автоматные модели протоколов. Диаграмма состояний / переходов    181
Глава 5. СУРОВАЯ ПРОГРАММНАЯ ИНЖЕНЕРИЯ. МЕТОДОЛОГИИ, МОДЕЛИ, ФРЕЙМВОРКИ, СТАНДАРТЫ    183
5.1. Унифицированный процесс: рабочий инструмент или недостижимый идеал    183
Структура UP    184
Фаза исследования проекта    186
Фаза развития    187
Фаза построения    188
Фаза развертывания    189
Технологический процесс моделирования производства    189
Технологический процесс управления требованиями    190
Технологический процесс анализа и проектирования    191
Технологический процесс конструирования    191
Технологический процесс тестирования    192
Технологический процесс развертывания    194
Технологический процесс управления конфигурациями    194
Технологический процесс управления проектом    195
5.2. Гибкое и экстремальное программирование. Scrum    196
Гибкие методологии разработки    196
Экстремальное программирование    197
Scrum    198
Глава 6. ПРОЦЕССЫ, ДЕЯТЕЛЬНОСТИ И АРТЕФАКТЫ ЖИЗНЕННОГО ЦИКЛА    205
6.1. Системная инженерия    205
Общность программной и системной инженерии    208
6.2. Бизнес-архитектура и бизнес-аналитика    215
Бизнес-архитектура проекта    216
Артефакты фазы исследования    219
Видение проекта    221
Диаграмма классов в модели предметной области    224
Бизнес-анализ процессов предметной области    226
Формальные модели описания бизнес-процессов    230
6.3. Системная аналитика: прецеденты, сценарии, модели    232
Диаграмма прецедентов    232
Модель анализа. Диаграмма классов анализа    235
Сценарии    236
Архитектура или функционал?    238
6.4. Управление требованиями    240
Бизнес-правила    243
Атрибуты качества    243
Классификация и оценка требований    244
Разработка и управление требованиями    246
Управление жизненным циклом требований    247
Документирование требований    248
Несколько замечаний по системной аналитике    253
6.5. За рамками интуитивно понятного интерфейса    253
Производительность    254
Человеческие ошибки    256
Обучение и самообучение    257
Запоминание, распределение пространства экрана, поиск, визуализация,
навигация    261
Субъективное восприятие    265
Влияние GUI на процесс разработки. Проектирование от GUI    268
Заключение. «Приятные мелочи» интерфейса пользователя    273
6.6. Управление конфигурациями и сопровождение    275
Управление конфигурациями    275
Сопровождение    277
6.7. Управление программным проектом    278
Своды знаний и стандарты    278
Специфика управления программным проектом    280
Методология и организационная структура компании    281
Фаза исследования. Скорость принятия решения    283
Риск – не благородное дело, а фактор разработки    284
Планирование проекта    287
Стоимость и сроки    290
Формирование команды    296
Глава 7. АРХИТЕКТУРА И ПРОЕКТИРОВАНИЕ    299
7.1. Параллельные прямые функционала и реализации    299
Что говорят классики    300
Принципы: разумная достаточность, существенность, множественность
представления    300
Требования к архитекторам ПО    302
Архитектурные аспекты проектирования    304
7.2. Проектирование, плавно переходящее в конструирование    305
Уровень доступа к данным. Классы DAO    306
Классы бизнес-объектов    308
Источники данных для бизнес-модели    310
Реализация толстого клиента    311
Протокол и коммуникации в тонком клиенте с WebAPI    312
Архитектурный MVC    317
Параллелизм. Синхронизация    323
Структура кода и объемные показатели    324
7.3. Архитектурное проектирование и прикладные протоколы    324
Преамбула. Существуют ли нерешенные проблемы?    324
Аспекты описания протокола и его реализации    325
Прикладной протокол как элемент взаимодействия слоев клиент-серверной архитектуры    326
Параллелизм, синхронизация    326
Буферизация, очереди    327
Диспетчеризация, планирование    328
Диаграмма состояний протокола    328
Установление, восстановление и закрытие соединения, сессия,
авторизация    329
Канальная и прикладная компоненты протокольного процесса    330
Процедурная и объектно-ориентированная реализация протокола    330
Итоговый вопросник    331
Глава 8. ТЕСТИРОВАНИЕ    333
8.1. Тестирование, валидация, верификация    333
Тестирование как соответствие требованиям    333
Тестирование на различных этапах жизненного цикла программы    334
Тестирование, валидация, верификация    335
8.2. Программные ошибки    340
Что такое программная ошибка?    340
Философия ошибок    342
Защита от ошибок и устойчивость программы    344
Тестирование и отладка    345
Специфика процесса отладки    345
Особенности анализа программ, содержащих ошибки    347
Характеристики ошибок    347
Условия проявления ошибки    348
Момент проявления    348
Характер последствий, уровень ущерба    349
Воздействие на программу    349
Виды ошибок по отношению к структуре алгоритма    350
Затраты на исправление    351
Классификация дефектов кода    352
Глава 9. МЕТОДИЧЕСКИЕ МАТЕРИАЛЫ ПО ДИСЦИПЛИНАМ    363
9.1. Инжиниринг ПО. Индивидуальные задания    363
9.2. Управление программными проектами. Коллективный проект    367
Пример проекта    369
9.3. Программная инженерия    372
Глоссарий    379
Библиографический список    388

Данные подготавливаются.

Вернуться к списку