Как отметил Буч, значительные успехи в ИТ за период, прошедший с предыдущего издания книги, заставили его обратиться к читателям с целью помочь им понять основные концепции объектной модели в программировании, освоить систему обозначений и овладеть методами объектно-ориентированного анализа и проектирования, а также научить читателей применению на практике таких методов в различных предметных областях.
Разработчики прикладных систем и программного обеспечения могут ее использовать для шлифования навыков применения объектно-ориентированных технологий. Аналитики или архитекторы систем найдут методы объектно-ориентированного анализа и проектирования, привязанные к процессам от постановки задачи до реализации. Менеджеры проекта разработки ПО обнаружат в книге рекомендации по распределению ресурсов команды для повышения качества программ и снижения рисков. Студенты получат не только знания, но и помощь в овладении практическими навыками.
В отличие от предыдущих изданий, в книге большое внимание уделено языку UML 2.0 (Unified Modeling Language) и его использованию в рамках парадигмы объектно-ориентированного анализа и проектирования в различных аспектах моделирования программных решений применительно к жизненному циклу проекта. Расширено также рассмотрение абстракций, начиная от систем с высокоуровневой архитектурой и заканчивая системами на базе Web-технологий. Большинство фрагментов программ приведено на C++ в связи с распространенностью этого языка программирования. В третьем издании книги представлены вспомогательные материалы с дополнительными сведениями по отдельным важным темам, а также объемные приложения, содержащие сведения по важнейшим свойствам объектно-ориентированных языков (Smalltalk, C++ и Java), глоссарии основных терминов и обширную библиографию.
Объем книги позволяет на ее основе организовывать чтение лекций, проводить семинары и самостоятельно изучать предмет. Структурная триада книги включает в себя представление концепции, связанной с анализом сложности программного обеспечения и причин, которые к ней приводят; описание метода построения сложных систем, опирающегося на объектную модель; типичные примеры сложных задач разработки ПО из разных предметных областей.
Концепция описывается через сложность программной системы, объектную модель, понимание объектов и классов, а также через призму классификации как возможности выявить сходство между объектами. С системной точки зрения первая часть книги описывает программу как совокупность образующих ее элементов со своей структурой и взаимоотношениями, а также возможных состояний.
Во второй части книги обсуждаются вопросы перехода из состояния в состояние программных систем на стадии анализа и проектирования. В качестве средства описания системы и ее эволюции
в пространстве состояний используется язык UML 2.0, который не только описывает переходы, но и позволяет организовывать их моделирование. Завершается эта часть главой, в которой обсуждаются практические вопросы планирования разработки и управления проектом создания программной системы, а также оценки ее качества и рисков.
В завершающей части книги рассматриваются примеры приложения объектно-ориентированной методологии: создание системной архитектуры спутниковой навигации, разработка транспортной системы, построение подсистемы для решения задач криптоанализа и сбора метеорологических данных, а также Web-приложения по планированию отпусков на предприятии.
К несомненным достоинствам книги следует отнести системный взгляд на объектно-ориентированное программирование и обстоятельность подачи материала, делающие ее настолько популярной. Кроме того, востребованность предыдущих изданий книги позволила установить обратную связь с читателями и внести в нее содержательные улучшения. Вместе с тем надо отметить, что пристальное внимание Буч и его соавторы в своей книге уделяют лишь программным моделям для исходных (реальных) систем. Популярные программные модели в значительной мере относятся к транзакционным способам обработки информации, тогда как для построения реальных систем управления при принятии эффективных решений следует выполнять количественные оценки или заниматься вычислениями. Для этого следует приспособить жизненный цикл программ к вычислительному процессу, что, в частности, меняет построение процесса работы программ, например требует включения в него выполнения алгоритмов различных математических методов или организации в реальном времени процесса решения в зависимости от поступающих данных и требований к сроку получения результата.
Гради Буч, Роберт Максимчук, Майкл Энгл, Бобби Янг, Джим Коннален, Келли Хьюстон. Объектно-ориентированный анализ и проектирование с примерами приложений. – М.: Издательский дом «Вильямс», 2008. – 720 с.: ил.