Предисловие
Эдворд Тафт в своей известной работе «Визуальное представление количественной информации» заметил, что «графика открывает данные». Утверждая это, он имел в виду следующее: графическое представление любого сложного набора данных содержит больше информации, чем просто данные в исходном виде. Это справедливо и для программного обеспечения: при постоянном развитии и совершенствовании информационных систем сложность их возрастает, поэтому возможность эффективно управлять такими системами зависит от нашей способности представить их визуально, отделив от уровня исходного кода. Действительно, успешное распространение таких языков, как Visual Basic (применяется чаще других языков, даже Кобола), и средств визуального проектирования для С++ и Java показывает, что визуализация является важным средством для разработки сложных систем. А с появлением распределенных и параллельных систем различных типов, особенно Web-технологий, визуальное представление программных комплексов просто необходимо.
Терри Кватрани (Terry Quatrani) в своей книге утверждает, что «процесс, нотация и инструмент моделирования — это три концепции, необходимые для графического представления программной системы». Как я отмечал в предисловии к первому изданию ее книги, очевидно, что эти ключевые компоненты разработки программ продолжают развиваться. На сегодняшний день программисты владеют более мощным набором инструментов для проектирования и создания систем, чем два года назад. Кроме того, утвердившиеся стандарты в методах, языках и инструментах позволяют сосредоточить усилия непосредственно на разработке и поставке сложных программных комплексов и не тратить время, как раньше, на обсуждение различных подходов (хотя вокруг языков дебаты продолжаются). Мне довелось участвовать не только при разработке универсального языка моделирования (UML), но и при определении стандартов для самого процесса разработки, утвержденных компанией Rational Software. Я рад, что язык UML получил широкое распространение и признание, а также тому, что растет популярность таких продуктов, как Rational Rose, Rational Suites, а также методики Rational Unified Process.
Использование общих инструментов, методов и индустриальных стандартов позволит достичь реального взаимодействия и эффективной работы при построении широкомасштабных распределенных промышленных систем.
Терри работала с программой Rational Rose и языком UML практически с момента их зарождения. Ее знания в этой области очень обширны. Она была одним из лучших наставников, обучающих клиентов Rational пользоваться языком UML.
Эта книга отражает глубокое понимание предмета и является результатом работы над многочисленными сложными программными системами. Специалисты, интересующиеся вопросами визуального представления систем, узнают из книги Терри о том, как правильно описывать, отображать, документировать и создавать программные комплексы с использованием стандартной нотации и передовых инструментов. Я высоко ценю профессиональные знания и опыт Терри. Уверен, что читатель тоже их оценит.
Грейди Буч
От автора
Цель книги
Два года назад, когда я приступала к написанию первого издания книги, я думала о том, что это простая задача, ведь я занимаюсь своей проблемой всю жизнь. Как я заблуждалась! Грамотно изложить материал было очень сложно (конечно, родить ребенка — более тяжелое испытание, но не намного). Долгими ночами и в выходные дни я упорно работала над книгой и хочу отметить, что, когда я впервые увидела ее на прилавке магазина, сильно волновалась. Я также поняла, что надо быть мужественной, чтобы читать книжное обозрение. Моя книга может понравиться людям (пять звезд) либо не произвести никакого впечатления (одна звезда). По ряду причин рейтинг моей книги оказался средним.
В процессе работы над вторым изданием я собиралась адресовать его двум группам критиков. Прежде всего тем, кому она понравилась, — спасибо вам. Приятно слышать, когда кто-то скажет: «Отличная работа, с этой книгой я многому научился». Однажды на семинаре в Нью-Йорке один человек подошел ко мне и сказал: «Спасибо, с этой книгой я сэкономил много времени». Такие люди действительно поняли цель моей книги — упростить введение в визуальное моделирование.
Что касается людей, на которых первое издание не произвело никакого впечатления, — им, вероятно, не понравится и это издание. Я говорю так, потому что цель книги осталась прежней. Это не полное руководство по языку UML (подобные книги уже написаны Грейди и Джимом, я даже не собираюсь состязаться с этими признанными экспертами). Это также не руководство по методологии Rational Unified Process (такая книга недавно написана Филиппом и Айваром). Это даже не книга по языку С++. Как я уже отмечала, моя книга — попытка в простой и доступной форме объяснить, как использовать процесс, язык и инструмент для создания схемы информационной системы.
Задача книгиОсновная задача книги — помочь в овладении техникой визуального моделирования и освоении основ языка UML. Здесь используются единый практический пример для демонстрации методов анализа и проектирования приложения. Приложение — это система регистрации учебных курсов для университета. Такая проблемная область была выбрана по причине ее понятности и отсутствия в ней компьютерной специфики. Поэтому вы можете сконцентрироваться на процессе моделирования и не тратить время на изучение самой предметной области.
Проблемная область рассматривается достаточно глубоко, чтобы была возможность практически опробовать методы визуального моделирования и поупражняться в решении реальной задачи, не обращая при этом особого внимания на несущественные детали. Ряд сопутствующих вопросов, условий и ограничений опущены с целью получения простого и понятного примера, соответствующего задачам книги.
Для получения подробной информации о методах визуального моделирования, языке UML и способах их использования для приложений вы можете обратиться на учебные курсы компании Rational Software Corporation. Ее адрес: 2800 San Tomas Expressway, Santa Clara, CA 95051; телефон: 8-10-1-800-767-3237; электронный адрес: [email protected]; сайт: www.rational.com.
Краткое содержание главПорядок и нумерация глав в настоящем издании не изменились, но содержание многих глав обновилось. Рисунки и сообщения программы приведены для версии Rational Rose 2000. Серьезные изменения коснулись глав 5 и 11. В главе 5 «Способы взаимодействия объектов» диаграммы последовательности действий и диаграммы взаимодействий сохранены в логическом представлении системы. Это сделано для соответствия Rational Unified Process. В главе 11 «Проектирование системной архитектуры» изменения внесены для того, чтобы показать значки компонентов вместе с нотацией для интерфейсных классов.
Я также добавила приложения, в которых рассматриваются способы использования программы Rational Rose с языками Visual Basic и Visual С++.
В главе 1 «Что такое визуальное моделирование» обсуждаются преимущества визуального моделирования, история языка UML и этапы разработки программы.
Глава 2 «Начало проекта» содержит описание системы регистрации учебных курсов, которая используется в качестве основного примера книги.
Глава 3 «Создание прецедентов» описывает методы исследования поведения системы на основе прецедентов.
Глава 4 «Поиск классов» знакомит с основными подходами и нотацией для выделения объектов и классов системы. Здесь также рассматриваются понятия стереотипов и пакетов в языке UML.
В главе 5 «Изучение взаимодействия объектов» рассматривается добавление в систему сценариев, описывающих, как прецеденты реализуются путем взаимодействия между наборами объектов. Здесь приводятся примеры использования диаграмм последовательности действий и диаграмм взаимодействий для получения сценариев.
Глава 6 «Определение отношений» иллюстрирует возможности установки отношений между классами системы. Отдельно обсуждаются понятия ассоциации и агрегации.
Глава 7 «Добавление поведения и структуры» содержит информацию о способах добавления структуры и поведения классов к модели системы.
Глава 8 «Изучение наследования» знакомит с принципами наследования и отношения типа подкласс-суперкласс.
В главе 9 «Анализ поведения объекта» рассказывается об использовании диаграмм переходов и состояний для анализа классов с выраженным динамическим поведением.
В главе 10 «Проверка модели» обсуждаются методы проверки целостности моделей, применяемые при параллельной работе над проектом нескольких рабочих групп.
Глава 11 «Проектирование системной архитектуры» знакомит с понятиями и нотацией для описания и документирования системной архитектуры. Данная глава не является полным руководством по разработке архитектуры, она лишь описывает нотацию и процессы, необходимые для ее определения, представления и документирования. Эти сведения специально размещены именно здесь, потому что архитектурные решения используются в последующих главах.