На главную Написать письмо Карта сайта

Издательство

Сектор реализации

Типография

Портал НГТУ


заказ книг

Программная инженерия



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


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

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

Программная архитектура рассматривается начиная от конкретики клиент-серверных приложений и прикладных протоколов и заканчивая общими вопросами проектирования и преодоления «архитектурной пропасти» между функционалом и реализацией.

Учебник рекомендуется студентам, обучающимся по направлениям, связанным с информационными технологиями, как изложение основ программной инженерии; будущим программистам – для понимания роли и места профессии в процессе разработки и представления о смежных видах деятельности, которыми при необходимости придется заниматься по совместительству; всем остальным – для понимания специфики разработки качественного кода, особенностей процесса программирования, его организации и контроля.








ОГЛАВЛЕНИЕ



Введение 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

Назад в раздел

Новинки

Князева И.В., Чирихин С.Н.
Актуальные вопросы проведения анализа состояния конкуренции на товарных рынках (методологический комментарий)
Год издания: 2018
Число страниц: 290
ISBN: 978-5-7782-3542-7
Филиппова Т.А., Сидоркин Ю.М., Русина А.Г.
Оптимизация режимов электростанций и энергосистем
Год издания: 2018
Число страниц: 355
ISBN: 978-5-7782-3498-7
Заякина Р.А.
Синтетическая топология социальных сетей
Год издания: 2018
Число страниц: 250
ISBN: 978-5-7782-3530-4

Новости

6 Окт 2021
На сайте обновлен прайс-лист на издания НГТУ НЭТИ.
Подробнее

3 Сен 2021

Подведены итоги Всероссийского конкурса на лучшую научную книгу 2020 года, который ежегодно организуется Фондом развития отечественного образования.


Подробнее

© 1994-2013, Издательство НГТУ
630092, г. Новосибирск, пр. К. Маркса, 20, тел./факс: +7 (383) 346-31-87, эл. почта: office@publish.nstu.ru