ВВедение в ИМЛ. Для чего был написан этот курс
Скачать 3.44 Mb.
|
Введение в UML Для чего был написан этот курс В настоящее время унифицированный язык моделирования - UML, простите, the UML, - является, пожалуй, самой модной технологией в области программной инженерии. Почему это так? Дело в том, что UML позволяет системным архитекторам представлять свое видение системы в виде набора стандартных диаграмм, которые, к тому же, служат отличным средством коммуникации в команде разработчиков и прекрасным помощником в общении с заказчиком. И при всем этом, UML - достаточно логичная и простая для изучения нотация, навыками использования которой, без сомнения, должен овладеть любой специалист, собирающийся работать в области программной инженерии. Знание UML нужно разработчикам, системным архитекторам, менеджерам… С другой стороны, зачастую у нас просто нет времени на чтение руководств и подробное изучение документации, нет времени на вопросы, а нужно быстро получить ответы на них. Нужно быстро составить представление о технологии, познакомиться с ней на концептуальном, понятийном уровне. И на это у нас не 24 часа, за которые обещает научить нас UML’ю автор одной из чудесных книг, посвященных этой технологии, а всего полдня. Этот курс - именно такое первоначальное руководство, которое позволит читателю составить представление о UML, убедиться в его простоте и полезности, поверить в свои способности к моделированию, наметить направления дальнейшего совершенствования навыков и знаний. Курс не сделает из читателя профессионала, но поможет понять основополагающие концепции рассматриваемой технологии, на которые читатель в дальнейшем сможет "нарастить" более конкретные знания. Этот курс для первого знакомства с UML, которое должно побудить к изучению более фундаментальных изданий. Еще одно назначение этого курса: помочь читателю сделать первый шаг на пути к профессиональной сертификации по UML - подготовиться к сдаче сертификационного экзамена UM0-100, сдать его и получить статус OMG Certified UML Professional (OCUP) Fundamental. Поверьте человеку, прошедшему этот путь до конца, - это совсем не сложно. Нужно лишь немного усердия и веры в свои возможности. Именно для того, чтобы помочь другим сделать то, что сделал сам, автор и написал этот курс. Подробную информацию о программе OCUP, самом экзамене UM0-100, процедуре тестирования и т. п. вы можете найти в приложении. Пособие, которое вы держите в руках, базируется на двух очень простых принципах: • Каждая лекция имеет четкую структуру - сначала мы говорим, о чем пойдет речь, затем приводим список вопросов, которые будем обсуждать, а в конце каждой из них вас ожидают краткие итоги, список использованных источников, а также контрольные вопросы и упражнения. • Еще одно отличие этого курса - его модульность. Каждая лекция полностью самодостаточна, и ее можно читать отдельно, в отрыве от предыдущих и последующих лекций. Таким образом, вы получаете возможность изучать материал в любой последовательности, а можете вообще пропустить те лекции (причем абсолютно "безболезненно"), содержание которых вам уже известно. О чем этот курс Мы уже упоминали о том, что курс может быть использован как пособие для подготовки к сдаче сертификационного теста UM0-100. Именно этим фактом и определяется содержимое курса. Речь в нем идет только о тех элементах UML, знать которые абсолютно необходимо. По структуре лекций курс соответствует карте покрытия тем стандарта UML экзаменом UM0-100, которую всегда можно найти на сайте OMG: http://www.omg.org/uml-certification/UML_2-ToC- Fundamental.pdf В "первой лекции" мы познакомимся с краткой историей UML, его назначением, способами использования языка, структурой его определения, терминологией и нотацией. Во "второй лекции" мы узнаем о том, какие виды диаграмм существуют в UML, какие из них наиболее часто используются и для чего предназначена каждая из них. Также здесь будут даны некоторые рекомендации относительно последовательности построения диаграмм. Последующие четыре лекции посвящены более подробному рассмотрению диаграмм, каждому из наиболее часто используемых видов. Ведь экзамен UM0-100 призван оценить знания, навыки и умения, связанные с чтением и построением именно этих видов диаграмм. Итак, "третья лекция" расскажет о технологиях реализации основных принципов объектно- ориентированного подхода в языках программирования, подробнее расскажет о диаграмме классов - конечном результате проектирования и отправной точке процесса разработки. В "четвертой лекции" речь пойдет о диаграммах активностей, которая напомнит многим блок- схемы алгоритмов, знакомые со студенческой скамьи. Но будьте осторожны - это не совсем, а вернее, совсем не блок-схемы! "Пятая лекция" познакомит нас поближе с диаграммами взаимодействия, позволяющими описать поведенческие аспекты системы. Здесь мы научимся читать и строить диаграммы последовательностей и кооперации. В "шестой лекции" мы поговорим о концептуальном проектировании, о том, как описать систему с точки зрения пользователя, - о диаграммах прецедентов. Хотя для выполнения упражнений курса вам потребуется лишь лист бумаги и карандаш, вы должны знать, что существует огромное количество программного обеспечения, так называемых CASE-систем для построения диаграмм UML. О наиболее популярных из них будет рассказано в седьмой лекции. Причем мы постараемся рассмотреть и признанных лидеров рынка, и его "аутсайдеров", и коммерческих "монстров", и "легкие" программы с открытым исходным кодом. В "заключении" подводятся некоторые итоги, указываются направления для дальнейшего совершенствования своих знаний в области ООАП и UML и даются напутствия читателям. Пособие снабжено "приложениями" , где подробно описаны программа OCUP и тест UM0-100, даны рекомендации по подготовке к нему, приведены образцы вопросов и описана процедура тестирования. А еще там можно найти информацию о тестах по UML от других вендоров. Также даны списки ссылок на шпаргалки и глоссарии по ООАП и UML в Интернете. Общий список книг и сетевых источников, использованных в работе над курсом, было решено не делать, так как каждая лекция имеет свой собственный список источников. Как был написан этот курс Учебно-методические материалы, на основе которых было создано это учебное пособие, были разработаны автором и его коллегами в рамках проекта "Виртуоз". Проект выполнялся в Нижегородском государственном университете им. Н.И. Лобачевского по инициативе компании Intel и при поддержке Microsoft, IBM, Borland, Лаборатории Касперского и др. Цель проекта "Виртуоз" - подготовка преподавателей к внедрению в вузах России и других стран СНГ новой специальности - "Информационные технологии". Основная задача проекта - совершенствование методологии преподавания программной инженерии. Реализация этой программы направлена на создание надежной образовательной основы для дальнейшего развития отечественной ИТ-индустрии. В рамках проекта (август-декабрь 2004 г.): обучение современным методикам программной инженерии, передовым информационным технологиям, получение опыта работы по созданию учебных курсов, соответствующих международным образовательным стандартам IEEE/ACM Computing Curricula 2001: Computer Science и Software Engineering, а также получение реального индустриального опыта - прохождение стажировки в корпорации Intel, работа над реальными проектами. Сейчас, когда пишутся эти строки, осуществляется новый проект "Виртуоз005", в рамках которого новые преподаватели-счастливчики прослушивают уникальные учебные курсы, работают в компании - ведущем производителе аппаратного и программного обеспечения, разрабатывают новые учебно-методические материалы... Первоначально работать над курсом автор планировал совместно со своим коллегой, но сроки все время переносились, график менялся, и в конце концов мы оба отложили работу над пособием "до лучших времен", сознавая в глубине души, что эти "лучшие времена" не наступят никогда. Тем не менее, "свой" кусок работы автор выполнил летом 2006 года, а спустя некоторое время дописал и все остальное - в период с сентября 2007 г. по январь 2008 г. При этом значительная часть материала, написанного ранее, была переработана. Хотелось бы отметить, что пособие, которое вы держите в руках, - первое для автора, изданное и распространяемое "в большом мире", вне стен родного университета - своего рода дебют. Поэтому, пожалуйста, не судите слишком строго: это всего лишь попытка передать свой опыт другим людям. Если же вы нашли ошибки, неточности, заблуждения, субъективные суждения и другие подобные вещи, автор будет очень благодарен за письмо с описанием ошибки, отправленное на адрес alexander.v.babich@acm.org. И пусть вас не смущает манера автора писать от третьего лица и упоминать себя во множественном числе. Ведь вытравить из себя стиль научной статьи ох как непросто. Автору нравится результат его работы. Надеемся, понравится и читателям. Благодарности В заключение хотелось бы поблагодарить всех тех, благодаря кому это пособие было написано и увидело свет. Корпорацию Intel - за возможность участия в проекте "Виртуоз" и за переворот в мировоззрении. Всех сотрудников Нижегородской лаборатории Intel - за доброжелательность, поддержку и ценные советы. Владимира Павлова - за то, что он заразил нас своей энергией и научил жить в "своей реальности". "Интернет-университет информационных технологий" и Анатолия Шкреда лично - за готовность сотрудничать в издании этого пособия. Анатолия Волохова и Telelogic - за любезно предоставленный пакет TAU G2, с помощью которого были построены большинство диаграмм в этой книге. И, наконец, мою жену - за поддержку и то самоотверженное терпение, которое она демонстрировала каждый день в течение всего времени, пока писалась эта книга... Лекция 2: Что такое The UML Аннотация: Как уже говорилось выше, предметом этого курса является The UML - унифицированный язык моделирования. Но прежде чем обсуждать особенности языка, его конструкции и примеры применения, нужно поговорить о том, что же такое UML, о его истории, назначении, способах использования языка, структуре его определения, терминологии и нотации. В этой лекции мы рассмотрим такие вопросы: назначение UML; историческая справка; способы использования языка; структура определения языка; терминология и нотация Назначение языка UML - унифицированный язык моделирования. Из этих трех слов главным является слово " язык ". Что же такое язык? Не будем изобретать велосипед, а лучше заглянем в глоссарий, благо в Интернете их величайшее множество. Сделав это, мы скорее всего обнаружим определение, подобное приведенному ниже. Язык - система знаков, служащая: • средством человеческого общения и мыслительной деятельности; • способом выражения самосознания личности; • средством хранения и передачи информации. Язык включает в себя набор знаков (словарь) и правила их употребления и интерпретации (грамматику). К этому достаточно исчерпывающему определению нужно добавить, что языки бывают естественные и искусственные, формальные и неформальные. UML - язык формальный и искусственный, хотя, как мы увидим далее, этот ярлык к нему не совсем подходит. Искусственный он потому, что у него имеются авторы, о которых мы еще не раз упомянем в дальнейшем (в то же время, развитие UML непрерывно продолжается, что ставит его в один ряд с естественными языками). Формальным его можно назвать, поскольку имеются правила его употребления (правда, описание UML содержит и явно неформальные элементы, как мы, опять-таки, позже увидим). Еще один нюанс: UML - язык графический, что также немного путает ситуацию! При описании формального искусственного языка, что мы уже видели на примерах описания языков программирования, как правило, описываются такие его элементы, как: 1. синтаксис, то есть определение правил построения конструкций языка; 2. семантика, то есть определение правил, в соответствии с которыми конструкции языка приобретают смысловое значение; 3. прагматика, то есть определение правил использования конструкций языка для достижения нужных нам целей. Естественно, UML включает все эти элементы, хотя, как мы опять-таки увидим далее, в их описании тоже наблюдаются отличия от правил, принятых в языках программирования. Второе слово в фразе, которой расшифровывается аббревиатура UML - слово " моделирование ". Да, UML - это язык моделирования. Причем объектно-ориентированного моделирования. Более подробно о смысле понятия "моделирование" мы поговорим чуть позже, а пока отметим, что слово это весьма многозначно. В английском языке есть целых два слова - modeling и simulation, которые оба переводятся как "моделирование", хотя означают разные понятия. Modeling подразумевает создание модели, лишь описывающей объект, а simulation предполагает получение с помощью созданной модели некоторой дополнительной информации об объекте. UML в первую очередь - язык моделирования именно в первом смысле, то есть средство построения описательных моделей. Как средство симулирования его тоже можно использовать, хотя для этой роли он подходит не так хорошо. Третье слово в названии UML - слово " унифицированный ". Его можно понимать тоже неоднозначно. В литературе можно встретить описание эры "до UML" как "войны методов" моделирования, ни один из которых "не дотягивал" до уровня индустриального стандарта. UML как раз и стал таким единым универсальным стандартом для объектно- ориентированного моделирования, которое во времена его создания как раз "вошло в моду". "Единым" языком моделирования UML можно назвать еще и потому, что в его создании, как мы увидим далее, объединились усилия авторов трех наиболее популярных методов моделирования (и не только их). Подводя итоги, кратко можно сказать, что UML - искусственный язык, который имеет некоторые черты естественного языка, и формальный язык, который имеет черты неформального. Это звучит не очень понятно, но это действительно так! Историческая справка Откуда взялся The UML? Если говорить коротко, то UML вобрал в себя черты нотаций Грейди Буча (Grady Booch), Джима Румбаха (Jim Rumbaugh), Айвара Якобсона (Ivar Jacobson) и многих других. В не такие уж и далекие 80-е годы было множество различных методологий моделирования. Каждая из них имела свои достоинства и недостатки, а также свою нотацию. То смутное время получило название "войны методов". Проблема в том, что разные люди использовали разные нотации, и для того чтобы понять, что описывает та или иная диаграмма, зачастую требовался "переводчик". Один и тот же символ мог означать в разных нотациях абсолютно разные вещи! На рисунке ниже можно увидеть лишь малую часть многообразия методов, которые существовали в то время и в какой-то мере повлияли на UML. Рис. 1.1. К тому же примерно в это же время (начало 80-х) стартовала "объектно-ориентированная эра". Все началось с появлением семейства языков программирования SmallTalk, которые применяли некоторые понятия языка Simula-67, использовавшегося в 60-х годах. Появление объектно- ориентированного подхода в первую очередь было обусловлено увеличением сложности задач. Объектно-ориентированный подход внес достаточно радикальные изменения в сами принципы создания и функционирования программ, но, в то же время, позволил существенно повысить производительность труда программистов, по-иному взглянуть на проблемы и методы их решения, сделать программы более компактными и легко расширяемыми. Как результат, языки, первоначально ориентированные на традиционный подход к программированию, получили ряд объектноориентированных расширений. Одной из первых, в середине 80-х, была фирма Apple со своим проектом Object Pascal. Кроме этого, объектно-ориентированный подход породил мощную волну и абсолютно новых программных технологий, вершинами которой стали такие общепризнанные сегодня платформы, как Microsoft .NET Framework и Sun Java. Но самое главное, что появление ООП требовало удобного инструмента для моделирования, единой нотации для описания сложных программных систем. И вот "три амиго", три крупнейших специалиста, три автора наиболее популярных методов решили объединить свои разработки. В 1991-м каждый из "трех амиго" начал с написания книги, в которой изложил свой метод ООАП. Каждая методология была по-своему хороша, но каждая имела и недостатки. Так, метод Буча был хорош в проектировании, но слабоват в анализе. OMT Румбаха был, наоборот, отличным средством анализа, но плох в проектировании. И наконец, Objectory Якобсона был действительно хорош с точки зрения user experience, на который ни метод Буча, ни OMT не обращали особого внимания. Основной идеей Objectory было то, что анализ должен начинаться с прецедентов, а не с диаграммы классов, которые должны быть производными от них. К 1994-му существовало 72 метода, или частные методики. Многие из них "перекрывались", т. е. использовали похожие идеи, нотации и т. д. Как уже говорилось выше, чувствовалась острая потребность, "социальный заказ" - закончить "войну методов" и объединить в одном унифицированном средстве все лучшее, что было создано в области моделирования. А что сейчас? The UML живет и развивается. Сейчас мы имеем UML 2.0 и десятки CASE-средств, поддерживающих UML, о многих из которых будет рассказано в "Обзор CASE-средств для построения диаграмм UML" . Вопреки популярному мнению, в наши дни Rational не владеет UML, но продолжает работать над ним. UML же принадлежит OMG, а сама Rational ныне является одним из подразделений IBM и фигурирует во всех документах как IBM Rational. UML же получил множество пакетов расширений, называемых профайлами и позволяющих использовать его для моделирования систем из специфических предметных областей. Вот такая история! Лекция 2: Что такое The UML |