Архивы: по дате | по разделам | по авторам

Крэг Ларман. Применение UML и шаблонов проектирования.

Архив
автор : Сергей Козлов   25.09.2001

Введение в объектно-ориентированный анализ и проектированиеили Как создаются программные системы

Помните, фильм «Гладиатор» начинается битвой римлян с варварами? Варвары шумят, гремят щитами, размахивают боевыми молотками. А римская армия без суеты, методично и обстоятельно, работает как единый слаженный организм. И побеждает. Эта книга чем-то напоминает такую армию.

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

Собственно, бульшая часть книги посвящена описанию грамотного анализа и проектирования. На протяжении всей книги рассматривается одна конкретная система - торговый терминал (интеллектуальный кассовый аппарат), на которой методично и обстоятельно отрабатывается подход к разработке. В качестве же основного инструмента выбран язык UML (unified modeling language - унифицированный язык моделирования).

Интересна мысль, что следование стандартам процесса разработки приложений не играет основной роли в создании системы. Разработчику гораздо важнее обладать навыками создания хороших проектов. А для этого необходимо освоить ряд принципов и эвристик, связанных с идентификацией и выделением основных абстрактных объектов, а также с распределением обязанностей между ними.

Все начинается с формулировки требований и целей. Далее следует планирование, в котором важное место занимает описание прецедентов (use cases) - последовательностей событий, связанных с использующими создаваемую систему исполнителями. Кратко построение системы можно описать как последовательную реализацию прецедентов. Потом проводится анализ прецедентов и построение концептуальной модели (выделение понятий, ассоциаций между ними и их атрибутов), потом описание поведения системы (диаграммы последовательностей и описание системных операций). За анализом следует проектирование, основная задача которого - построение диаграмм взаимодействий объектов (при этом происходит распределение обязанностей). Именно этот этап требует максимума усилий и занимает бульшую часть времени выполнения проекта. И тут в работу вступают шаблоны (patterns) - структурированные рекомендации и принципы, которые суть систематизированный концентрированный опыт удачных решений. Автор предлагает набор базовых шаблонов (GRASP) - простых, но полезных. Как результат их применения очень естественно появляется разбиение системы на уровни (многоуровневая архитектура). Остается построить диаграммы классов. Что интересно - все это время разработка не привязана ни к языку программирования, ни к платформе. Преобразованию же результатов проектирования в программный код уделено меньше 15 страниц (из 500), из них 5 страниц - это собственно код на Java.

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

Из подхода органично вытекают и принципы организации разработки. Разработку отдельных уровней можно поручить специализированным группам разработчиков (по принципу уровней и подсистем); при этом поддерживается высокий уровень специализации профессионалов и возможность параллельной разработки всех уровней приложения.

Уместно добавить, что прекрасным дополнением к этой книге будет наконец-то вышедшая в издательстве «Питер» книга Гаммы, Хелма, Джонсона и Влиссидеса «Приемы объектно-ориентированного проектирования. Паттерны проектирования» (GoF).

Критик, сидящий во мне, откровенно позевывал. Дела ему не нашлось.

[i41357]

© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.