Учебник посвящен систематическому изложению принципов, моделей, методов и метрик, используемых в инженерном цикле создания сложных программных систем. Изложены основы как классических, так и гибких методов разработки, вопросы менеджмента классических и гибких программных проектов. Показаны последние научные и практические достижения, характеризующие динамику развития этой области. Например, значительное внимание уделяется самым «звонким» темам: сервисноориентированной архитектуре и облачным технологиям, предметно-ориентированному подходу и методологии DevOps, разработке через поведение. Описан комплексный подход к решению наиболее важных вопросов, возникающих в программных проектах.
Вопросы, освещенные в данном учебнике:
— программные продукты (изделия);
— жизненный цикл ПО;
— метрология и качество ПО;
— критерии качества: сложность, корректность, надежность, трудоемкость;
— измерения и оценка качества ПО;
— процесс производства ПО: методы, технология и инструментальные средства;
— тестирование и отладка;
— документирование;
— проектирование программного обеспечения;
— технологический цикл разработки программных систем;
— коллективная работа по созданию программ;
— организация процесса разработки и инструментальные средства поддержки;
— автоматизация проектирования программных продуктов;
— принципы построения, структура и технология использования САПР ПО.
Что нового в этом издании?
Во-первых, текст обновлен для отражения наиболее впечатляющих научных и инженерных новаций последних лет. Существенно расширено изложение вопросов менеджмента как классических, так и гибких программных проектов. В частности, изложены такие классические вопросы, как построение иерархической структуры работ, создание расписания по методу критического пути, контроль хода проекта по методу освоенного объема. Введено пояснение принципов гибкой и бережливой программной разработки. Ощутимо выросла глубина изложения материала по менеджменту гибких Scrum-проектов. Достаточно последовательно и подробно рассмотрена специфика Канбан-менеджмента бережливой разработки. Во-вторых, добавлены новые главы по сервисно-ориентированной архитектуре и облачным технологиям — самым «звонким» темам современной программной инженерии. В-третьих, приведено объяснение сути предметно-ориентированного подхода (Domain-Driven Design) и новейшей методологии DevOps (Development и Operations), горячими темами для обсуждения на всех научных и практических конференциях программной индустрии. В-четвертых, изложение вопросов качества программных продуктов теперь построено на основе новой серии международных стандартов ISO/IEC 25000, а для количественной оценки характеристик качества предлагаются 89 метрик.
Содержание данного учебника отвечает рекомендациям международного стандарта по компьютерному образованию Computing Curricula 2005 и международному стандарту по программной инженерии IEEE Computer Society Guide to the Software Engineering Body of Knowledge SWEBOK 2004. Учебник состоит из 21 главы и трех приложений.
Первая глава посвящена базовым понятиям программной инженерии. Здесь приведена официальная классификация процессов программной инженерии, подробно рассматриваются основные идеи, содержание и оценка качества классических, современных и перспективных процессов разработки ПО. Спектр категорий обсуждаемых процессов достаточно широк: от дисциплинирующих «тяжеловесных» процессов (линейных и циклических) до облегченных гибких процессов.
Вторая глава знакомит с вопросами руководства программными проектами — основными понятиями и спецификой процесса руководства, планированием проекта, управлением рисками, персоналом, документацией и конфигурацией программного обеспечения. Здесь разъясняются вопросы менеджмента как классических, так и гибких программных проектов.
Третья глава рассматривает комплексную оценку при планировании программного проекта. Вводятся размерно-ориентированные и функционально-ориентированные метрики затрат, обсуждается методика их применения, описывается наиболее популярная модель для оценки затрат — СОСОМО II. Приводятся примеры предварительной оценки программного проекта и анализа чувствительности проекта к изменению условий разработки.
Предметом внимания четвертой главы являются формирование и анализ требований заказчика. Описываются разновидности требований, предъявляемых к программным системам, обсуждаются их характеристики и поясняются основные процессы для работы с требованиями: формирование требований, анализ требований, управление изменениями требований.
Пятая глава поясняет классические методы анализа требований, ориентированные на процедурную реализацию программных систем. Здесь излагаются наиболее популярные, прошедшие проверку временем методы. Изложение носит исторический характер.
Шестая глава отведена основам и месту проектирования в жизненном цикле разработки программных систем. Подробно разъясняется архитектурное проектирование с применением паттернов. Определяются принципы, средства и характеристики проектирования: разделение понятий, модульность, информационная закрытость, пошаговая детализация, аспекты, рефакторинг, сложность, связность, сцепление и метрики для их оценки.
Седьмая глава — это обзор классических, процедурных методов проектирования ПО. Они рассматриваются как исторические корни современных методов проектирования.
Восьмая глава раскрывает принципы объектно-ориентированного представления программных систем — особенности их абстрагирования, инкапсуляции, модульности, иерархической организации. Здесь изучаются характеристики основных строительных элементов объектно-ориентированного ПО — объектов и классов, а также отношения между ними. Далее дается сжатое изложение базовых понятий языка визуального моделирования — UML, описывается его современная версия 2.3 и комментируются механизмы расширения языка.
Девятая глава содержит материал по современным методам и средствам формирования исходных требований заказчика и анализа детальных требований в объектно-ориентированной среде. В качестве средств для формирования требований обсуждаются диаграмма Use Case и диаграмма деятельности, а в качестве средств для анализа требований — диаграмма коммуникации и диаграмма последовательности. Детально поясняется методика оценки затрат на программный проект, ориентированная на обработку диаграмм Use Case. Дополнительно описываются диаграммы конечных автоматов — мощный инструмент для моделирования объектов, управляемых событиями.
Десятая глава освещает широкий круг вопросов проектирования в объектно-ориентированном стиле: принципы детального проектирования, средства языка UML для архитектурного и детального проектирования; паттерн-ориентированное проектирование. Иллюстрируются модель промышленного подхода к компонентной упаковке программного кода, базовые идеи аспектно-ориентированного подхода. Определяются принципы проектирования пользовательского интерфейса и метрики практичности интерфейса, излагаются вопросы развертывания ПО на аппаратных средствах компьютерных систем, поясняются идеи предметно-ориентированного подхода к разработке (DDD) и новейшего подхода, получившего название DevOps.
Одиннадцатая глава представляет особенности разработки баз данных в рамках объектно-ориентированной программной системы.
В двенадцатой главе разъясняется метрический аппарат для оценки качества объектно-ориентированных проектных решений: метрики оценки объектно-ориентированной связности, сцепления; аспектно-ориентированные метрики; широко известные наборы метрик Чидамбера и Кемерера, Фернандо Абреу, Лоренца и Кидда; описывается методика их применения.
Тринадцатая глава решает задачу презентации унифицированного процесса разработки объектно-ориентированных программных систем, на конкретных примерах обучает методике применения этого процесса. Кроме того, здесь рассматривается XP-процесс экстремальной разработки. Применение XP-процесса также иллюстрируется примером.
Четырнадцатая глава определяет базовые понятия структурного тестирования программного обеспечения (по принципу «белого ящика») и знакомит с наиболее популярными методиками данного вида тестирования: тестирования базового пути, тестирования ветвей и операторов отношений, тестирования потоков данных, тестирования циклов.
Пятнадцатая глава вводит в круг понятий функционального тестирования ПО и описывает конкретные способы тестирования — путем разбиения по эквивалентности, анализа граничных значений, построения диаграмм причин–следствий.
Шестнадцатая глава ориентирована на комплексное изложение содержания процесса тестирования: тестирование модулей, тестирование интеграции модулей в программную систему; тестирование правильности, при котором проверяется соответствие системы требованиям заказчика; системное тестирование, при котором проверяется корректность встраивания ПО в цельную компьютерную систему. Здесь же рассматривается организация отладки ПО (с целью устранения выявленных при тестировании ошибок).
Семнадцатая глава обучает особенностям объектно-ориентированного тестирования, проведению такого тестирования на уровне визуальных моделей, уровне методов, уровне классов и уровне взаимодействия классов. Здесь же описывается методика разработки через тестирование (TDD), применяемая в гибких процессах, а также ее развитие — методика разработки через поведение (BDD). Кроме того, обсуждается организация популярной среды тестирования JUnit.
В восемнадцатой главе обсуждаются идеология и основные характеристики сервисноориентированной архитектуры, поясняются используемые в этой области стандарты, такие принципы взаимодействия со службами, как SOAP и REST. Значительное внимание уделяется шагам процесса разработки новых служб, специфике и проблемам формирования крупных сервисов путем комбинирования существующих служб меньшего масштаба.
Девятнадцатая глава нацелена на широкий спектр вопросов, покрывающих облачные технологии: предпосылки их возникновения, основные понятия (виртуализация, консолидация, определения облака, базовые характеристики, достоинства облачного подхода, категории облаков, модели предоставления облачных услуг). Значительное внимание уделяется рассмотрению как функциональной, так и структурной организации облачных приложений.
Двадцатая глава отражает проблематику оценки качества программных систем. Здесь речь идет о понятии «качество ПО» и всех аспектах его обеспечения: целях, факторах, количественном подходе к определению уровня качества, приводится вся панорама деятельности по обеспечению качества. Отдельно обсуждаются технические проверки и аудиты, инспектирование, верификация и валидация, а также оформление плана по обеспечению качества ПО.
Двадцать первая глава демонстрирует возможности применения CASE-системы IBM Rational Software Architect к решению задач автоматизации формирования требований, анализа, проектирования и программирования программного продукта. В приложениях описываются расчетные таблицы для модели затрат COCOMO II, приводятся 89 метрик для оценки качества программных продуктов в соответствии со стандартом ISO/IEC 25023, перечисляются термины языка UML и унифицированного процесса разработки.
» Более подробно с книгой можно ознакомиться на сайте издательства
» Оглавление
» Отрывок
Для Хаброжителей скидка 15% по купону — Программная инженерия
Электронная версия на Google Play
Комментарии (7)
White_Scorpion
10.02.2017 12:36+2Автор (был у него студентом) настоящий мамонт программной инженерии и его книга скорее применима для менеджеров курирующих IT (знаком с одним из предыдущих изданий). Не секрет, что менеджеры — любят всё мерить. Потому что на основании каких-то абстрактных замеров можно нарисовать красивые графики и потом с умным видом — втирать на совещаниях и митингах о том, как «космические корабли бороздят просторы большого театра». Но для профессионалов не секрет, что разработку ПО очень сложно померить. Нет, скорее не так: померить то легко, но вот оценить эффективность померянного — сильно сложнее если не невозможно. Типичный пример — появление «индусского кода»… Когда товарищам солнечной страны платили за LOC (Line Of Codes), при этом ребята эффективно занимались трэшем, угаром и содомией в коде, дабы увеличить количество текста. Который после этого кому-то надо было разгребать.
Не секрет также, что принципы цикломатической сложности и меньшей связности часто нарушаются в тех же паттернах, но зато разумное применение паттернов — улучшает дальнейшую поддержку. Поэтому книгу надо читать «с оглядкой на обстоятельства».
Имею личное мнение, что в целом, для сторонников стандартной водопадной модели, книга окажется полезной, но вот для фанатов Agile — скорее вредна. Для идеи быстрых релизов — время затраченное на проверку и анализ требований, разработки объектно ориентированной модели, а потом всемерным подсчётам и т.д. — чересчур велико. Эдак проект и закончиться может быстрее, чем хотя бы первый этап закончится.
Поэтому после прочтения было чувство, что попытались впихнуть невпихуемое и если поделить книгу как бы на части: «вот это для манагеров — пусть считают и показывают, но при этом не трогают специалистов по разработке» и «вот это для разработчиков, но делайте это быстро и не принимайте внимание, что там насчитали» — это было бы прекрасно…
И есть одна ключевая проблема: я никогда не видел менеджеров, которые бы попытались все эти подсчёты вести. Сама мысль о том, чтобы «считать код» — таких менеджеров в моей профессиональной деятельности не возникало. К сожалению или нет — не знаю, но это факт.
Tarvitz
12.02.2017 23:40Жаль в pdf нет, надеюсь бумажные быстро не раскупят (:
SkyR9999
13.02.2017 08:50Это действительно печально, так как через Яндекс я без проблем нашел где скачать книгу в pdf, пиратскую, конечно.
Просто издатели не хотят понимать, что мало кому нужна "макулатура", когда есть "читалки" и планшеты.
Но покупать книгу за 1200 + вес (более 600 страниц + обложка) с доставкой выходит слишком много. Плюс почитать пару раз и будет пыль собирать.
Вот если бы была книга с таблицами и иллюстрациями в FB2 было бы интереснее. Тем более на сайте есть пятая глава в PDF.
Tarvitz
13.02.2017 22:28Да не, у piter много книг в pdf есть, в том числе и довольно толстые. Просто это всякие права, договоры и прочее.
ishua
А где обзор? Я не вчитывался, но нашел только краткое содержание…
Обычно ну там в конце обзора принято делать выводы, читать не читать, плюсы минусы…
ph_piter
Принято, готовим статью про алгоритмы и дискретную математику.