Введение
Когда я только задумывал написать книгу об унифицированном языке моделирования UML (Unified Modeling Language), на узле Amazon.com нашел 62 ссылки на издания, в название которых входила аббревиатура "UML". Насколько я понял, 61 книга была рассчитана на программистов и технически образованных читателей. В оставшейся одной половина книги посвящалась описанию системы, выбранной в качестве примера, в другой же части читателю предлагались иллюстрации, настолько насыщенные разнообразной информацией, что начинающий пользователь не смог бы в них полностью разобраться. Мне стало понятно, что не хватает книги, которая рассматривала бы UML с учетом того, что нужно знать рядовому пользователю компьютера для выполнения своих обязанностей, например, для определения требований к системе.
Я написал эту книгу "для нас" - людей, которые смотрят на UML снаружи. В книге Фовлера (Fowler) и Скотта (Scott) UML Distilled (Addison-Wesley, 1997), например, авторы заранее предполагали, что читатель хорошо знаком с терминологией и принципами объектно-ориентированной разработки и уже использовал созданный "тремя товарищами" (создателями UML: Гради Бучем (Grady Booch), Джеймсом Румбахом (Jim Rumbaugh) и Айваром Якобсоном (Ivar Jacobson)) подход к проектированию. В каждой группе разработчиков, знакомых с замечательной книгой Мартина Фовлера (Martin Fowler), находилось несколько человек, желающих разобраться в этом языке, но не знающих, с чего начать. Если вы относитесь к этим нескольким, то мой труд, возможно, посвящен именно вам.
Для чтения этой книги не нужно знания объектно-ориентированной парадигмы (ООП). (Стоит заметить, что хотя UML и подходит для необъектно-ориентированных применений, в том числе для моделирования данных, он задумывался специально для применения в ООП.) Если вам встретится определение понятия, с которым вы уже знакомы, можно спокойно пропустить этот абзац (или раздел). Большое внимание уделено вопросам, которые важны для людей, не находящихся в центре процесса разработки, но желающих знать, что есть что. UML - это достаточно масштабный язык. Я предлагаю желающим глубже изучить UML, посетить мой словарь UML (UML Dictionary) (http://usecasedriven.com/UML.htm) и Центр ресурсов UML (UML Resource Center) (http://www.rational.com/UML).
В заключение добавлю, что в течение 16 лет я зарабатывал на жизнь в качестве автора технической литературы, переводя сложные материалы в удобную форму документации и руководств. Сейчас я живу за счет преподавания UML и подходов к проектированию приложений, описанных в книге Розенберга и Скотта Use case Driven Modeling with UML. Хочется думать, что данная книга отразит мой многолетний опыт в этой области.
Организация книги
Глава 1 описывает важность изучения такого языка, как UML. В этой главе рассказывается о незаменимости визуального моделирования, о развитии UML, а также предлагается обзор ключевых принципов языка.
Глава 2 поможет читателю понять, что UML является языком технически не зависящим от процесса разработки, несмотря на то, что он явно проектировался для использования в контексте итеративного инкрементального процесса. В данной главе речь идет об унифицированном процессе проектирования, рассказывается, почему фразы "основанный на прецедентах", "ориентированный на архитектуру" и "итеративный и инкрементальный" будут появляться в том или ином виде на протяжении всей книги.
В главе 3 описано, как команда разработчиков может использовать UML для выделения предметов и понятий из реального мира, которые относятся к проблеме, которую пытаются решить с помощью новой системы. В этой главе представлен книжный Internet-магазин, рассматриваемый в качестве примера в остальной части книги.
В главе 4 речь идет об использовании так называемых "прецедентов", которые представляют собой список действий пользователя и реакций системы, предназначенный для исследования, обсуждения и уточнения функциональных требований. В этой главе также акцентируется внимание на том, какую роль играют прототипы в разработке и уточнении прецедентов.
В главе 5 показано, как команда разработчиков исследует взаимодействие объектов друг с другом для обеспечения поведения системы (как описанного так и не описанного прецедентами). Здесь также речь идет о расширениях UML, разработанных специально для унифицированного процесса проектирования.
Глава 6 описывает задачи, связанные с уточнением и расширением модели предметной области, включающей предметы и понятия реального мира (впервые упомянутые в главе 3), и их связь с вопросами моделирования взаимодействий (обсуждаемыми в главе 5).
Глава 7 поможет понять, как использовать UML в описании бизнес-процессов. Здесь же обсуждается вероятность выявления поведения системы, которая одновременно вовлекается в несколько видов деятельности.
Глава 8 рассказывает о том, как UML отражает жизнь объектов, обеспечивающих работу системы. Дополнительно обсуждается вопрос существования определенных видов объектов, которые могут находиться в нескольких состояниях одновременно.
В главе 9 речь идет о том, как использовать различные конструкции и диаграммы UML для демонстрации на концептуальном уровне взаимодействия групп сущностей в системе. Выводятся такие важные в мире разработчиков программного обеспечения термины UML, как "шаблон" и "контур".
Глава 10 иллюстрирует способы описания архитектуры готового продукта в терминах пакетов программного обеспечения, называемых "компонентами". Затрагивается вопрос распределения этих пакетов в новой системе.
Также в книге имеется словарь терминов, включающий в себя определения всех основных понятий, упомянутых в тексте, и полный предметный указатель.
История создания книги
Эта книга находилась в процессе разработки достаточно долгое время.
Рассказ можно начать с весны 1996 года. Я жил в Далласе и начинал уставать от своей работы (я тогда занимался написанием технической литературы и создавал документацию для программистов, которых даже никогда не встречал). В результате решил обратиться в компанию Rational насчет получения какой-нибудь работы, которая позволила бы мне быть ближе к потребителю.
Общение не привело ни к чему, что касалось бы новой работы, но позволило мне получить экземпляр набора документации по так называемому унифицированному методу (версия 0.8), созданному Гради Бучем (о котором я слышал) и Джеймсом Румбахом (о котором я не слышал). Бегло просмотрев плотно упакованные абзацы и устрашающие диаграммы (на одной из них было 15 прямоугольников и 19 линий), я отложил эту кипу бумаг до лучших времен.
Но очень скоро любопытство заставило меня опять взяться за эту книгу. Я потратил несколько часов, пытаясь понять, что в ней написано. В конце концов, осознал, что прочел нечто очень важное, и его необходимо переписать. Я как раз начал следить за событиями в группе новостей Internet comp.object, поэтому решил опубликовать там вопрос: "Что бы вы сказали, если бы профессиональный писатель переписал этот материал?"
Гради Буч ответил: "Вперед. Удачи!"
Это меня несколько смутило. С одной стороны, меня поддержали положительным ответом, а с другой, мне пришла такая мысль: "Просто отлично. Первое, что у меня получилось - я вызвал раздражение Гради Буча". Когда я спросил его, что он имел в виду, тот ответил, что он, Джеймс и Айвар Якобсон (чье имя появится на обложке следующей версии документации унифицированного метода), скорее всего, будут писать книги объемом 600 страниц, и очень вероятно, что эти книги будут готовы нескоро. После этого он заверил, что если я собираюсь написать краткое руководство по унифицированному методу - например, страниц на 150 - то пользователи его обязательно купят.
Я написал заявку на книгу и отправил ее в издательство Addison-Wesley. Были большие сомнения по поводу того, что заявку одобрят, ведь я мало что понимал в объектно-ориентированной парадигме. Однако я решил, что терять мне нечего.
В течение следующих шести месяцев заявка не была удовлетворена, но и не была отвергнута. Я решил переехать в Сан-Франциско в конце 1996 года, и вскоре после этого стали происходить интересные вещи.
В начале 1997 года на конференции пользователей продуктов компании Rational я встретился с редактором, которому отправлял заявку, - Картером Шанклином (Carter Shanklin). Он сказал, что книга, которую я предложил, не будет популярна, но он собирается заняться другим - тем, что сейчас называется унифицированным языком моделирования UML, и будет очень рад, если я приму участие в ее создании.
Примерно в это же время я встретил Джима и Айвара. (Гради в это время работал в Oracle, и, к сожалению, у меня не было возможности поблагодарить его за помощь, которую он мне оказывал.) В воздухе витало множество идей о том, как должна быть написана эта книга, но в итоге оказалось, что Буч, Якобсон и Румбах не были напрямую вовлечены в ее создание. Вместо них, Картер пригласил Мартина Фовлера, чья книга Analysis Patterns ("Шаблоны анализа"), опубликованная незадолго до этого, получила высокую оценку практически во всех обзорах. Перед нами была поставлена задача выпустить книгу в течение четырех месяцев.
Я не знал, сможем ли мы уложиться в сроки, но решили попробовать. У Мартина на этот момент уже была готова примерно половина книги, и это нам очень помогло. Первое, чем я занялся, это взял кусок, размером 75 страниц текста и диаграмм, и превратил его в обозримую часть материала, разбив содержимое на разделы и абзацы. Все это заняло три дня, включая один полный рабочий день в Oracle. Я думаю, что с учетом обстоятельств, книга UML Distilled получилась достаточно неплохой.
После того, как книга вышла в свет, я решил опубликовать что-то от своего имени, поэтому стал писать первую версию словаря UML. Он был основан на официальной документации, которую весной 1997 года компания Rational предоставила группе OMG в попытке утвердить UML в качестве стандарта. Текст был достаточно формальный, но это дало мне возможность хорошо понять материал.
Словарь позволил выпустить еще одну книгу Use Case Driven Object Modeling совместно с Дагом Розенбергом (Doug Rosenberg). И вот теперь я представляю собственную книгу.
Благодарности
Я хотел бы поблагодарить Академию...
Так. Давайте начнем с начала.
Я хотел бы поблагодарить несколько тысяч человек, сыгравших важную роль в моем становлении как автора. В алфавитном порядке это...
Наверное, все-таки не стоит.
Я очень благодарен: Гаю и Нэнси Скотт (Gay e Nancy Scott), которые смогли направить меня на путь истинный и после этого (в основном) не путаться под ногами; Джонатану Личу (Jonathan Leach), суперинтеллектуалу; Лайзе Силипигни (Lisa Silipigni), которая помогала вспомнить каждый хороший день для продолжения борьбы; Гради Бучу (Grady Booch), без которого я бы не написал эту книгу; Мартину Фовлеру (Martin Fowler), который позволил мне создать лучшую в мире книгу о UML; Картеру Шанклину (Carter Shanklin), Полу Беккеру (Paul Becker) и Россу Венаблесу (Ross Venables), бывшим и настоящим представителям издательства Addison-Wesley; Дагу Розенбергу (Doug Rosenberg), зажегшему во мне искру вдохновения, научившему меня проводить анализ робастности и предоставившему мне возможность жить за счет преподавания UML; Лоре Данов (Lora Danoff) за попытку прочитать другие мои книги; Роберту Пирсигу (Robert Pirsig), который задавал вопросы, позволяющие мне продолжать движение вперед; и Хантеру Файресу (Hunter Faires) - самому лучшему учителю.
Кендалл Скотт
Харрисон, Теннеси
Февраль 2001
[email protected]
http://usecasedriven.com