Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
риспсиит.doc
Скачиваний:
7
Добавлен:
17.08.2019
Размер:
381.95 Кб
Скачать

Лекция 7. Введение в унифицированный процесс моделирования Предварительные замечания

Унифицированный язык моделирования (UML - Unified Modeling Language) является стандартным инструментом для создания документированных каркасов ("чертежей") программного обеспечения. С помощью UML можно визуализировать, специфицировать, конструировать и документировать процесс разработки программных систем. UML разработан таким образом, чтобы удовлетворять потребности при моделировании любых систем: от информационных систем масштаба предприятия до распределенных Web-приложений и даже встроенных систем реального времени. Это выразительный язык, позволяющий рассмотреть систему со всех точек зрения, имеющих отношение к ее разработке и последующему развертыванию. Несмотря на обилие выразительных возможностей, этот язык прост для понимания и использования. Изучение UML мы начнем с его концептуальной модели, которая содержит три основные элемента языка: базовые конструкции, правила, определяющие, каким образом эти конструкции могут сочетаться между собой, и некоторые общие механизмы языка.

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

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

Как и любой язык, UML состоит из словаря и правил, позволяющих комбинировать входящие в него слова и получать осмысленные конструкции. В языке моделирования словарь и правила ориентированны на концептуальное и физическое представление системы. Язык моделирования, подобный UML, является стандартным средством для составления "чертежей" программного обеспечения.

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

Словарь и правила такого языка, как UML, объясняют, как создавать и читать хорошо определенные модели, но ничего не сообщают, какие модели и в каких случаях нужно создавать. Эта задача всего процесса разработки программного обеспечения. Организация такого процесса дело сугубо индивидуальное в рамках различных программистских компаний, фирм и отдельных групп разработчиков программного обеспечения. Но хорошо организованный процесс должен показать вам, какие требуются артефакты, какие ресурсы необходимы для их создания, как можно использовать эти артефакты для того, чтобы оценить выполненную работу и управлять проектом в целом.

UML - это язык визуализации

Характерной особенностью мышления большинства программистов является то, что размышления о том, как реализовать проект, для нас практически эквивалентны написанию кода для этого проекта. Если мы думаем о проекте - значит, мы его кодируем. Конечно, некоторые вещи лучше всего выражаются непосредственно в коде на каком-нибудь языке программирования, ведь листинг программы - это самый простой и короткий путь для записи алгоритмов и вычислений.

А ведь даже в этих случаях программист занимается моделированием, хотя и неформально. И такой подход чреват рядом неприятностей. Во-первых, обмениваться мнениями по поводу построенной модели можно только тогда, когда все участники говорят на одном языке. А это означает, что ваша компания не сможет принять великолепного программиста на C, если она использует Delphi! Или вашему новичку будет совсем непросто догадаться, о чем идет речь. Во-вторых, нельзя получить представление об некоторых аспектах программных систем без модели, границы которой выходят за рамки текстового языка программирования. Например, назначение иерархии классов можно, конечно, понять, если внимательно изучить код каждого класса, а вот воспринять всю структуру сразу целиком ни за что не получится. Аналогично изучение кода системы не позволит составить полное представление о физическом распределении и возможных миграциях объектов в Web-приложении. В третьих, если ваш системный аналитик никогда не воплощал в явной форме разработанные модели, эта информация будет навсегда утрачена, если его вдруг переманят в конкурирующую фирму. В лучшем случае результаты его анализа можно будет только частично воссоздать исходя из реализации.

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

UML - это язык специфицирования

В данном контексте это означает построение точных, недвусмысленных и полных моделей. UML позволяет специфицировать все существенные решения, которые касаются анализа, проектирования и реализации, принимающиеся в процессе разработки и развертывания системы программного обеспечения.

UML - это язык конструирования

Хотя он и не является языком визуального программирования. Но модели, которые создаются с его помощью, могут быть непосредственно переведены на любой объектно-ориентированный язык программирования. Те понятия, которые удобнее представлять графически, так и подставляются в UML, те же, которые лучше описывать в текстовом виде, выражаются с помощью языка программирования.

Такое отображение модели на язык программирования позволяет выполнить прямое проектирование, т. е. генерацию кода по модели UML в какой-то конкретный язык. Можно решить и обратную задачу: реконструировать модель по существующей реализации. Такое обратное проектирование не представляет собой ничего необычного. Если вы не закодировали информацию в реализации, то она теряется при прямом переходе от моделей к коду. А поэтому для обратного проектирования необходимы как инструментальные средства, так и непосредственное участие программиста или системного аналитика. Сочетание прямой генерации кода и обратного проектирования позволяет работать как в графическом, так и в текстовом представлении, если инструментальные программы обеспечивают согласованность между этими двумя представлениями проекта.

Кроме того, помимо прямого отображения в языки программирования UML в силу своей выразительности и однозначности позволяет непосредственно выполнять модели, имитировать поведение системы и контролировать действующие системы.

UML - это язык документирования

Организация, серьезно работающая на рынке программных средств, кроме непосредственного написания программного кода производит и некоторые другие артефакты, в том числе следующие:

  • требования к системе;

  • архитектуру;

  • проект;

  • исходный код;

  • проектные планы и сметы;

  • тесты;

  • прототипы;

  • версии и другие.

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

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

Язык UML предназначен, прежде всего, для разработки программных систем. Его использование особенно эффективно в следующих областях:

  • информационные системы масштаба предприятия;

  • банковские и финансовые услуги;

  • телекоммуникации;

  • транспорт;

  • оборонная промышленность, авиация, космонавтика;

  • торговые системы;

  • медицинская электроника;

  • наука;

  • распределенные Web-системы.

Сфера применения UML не ограничивается моделированием программного обеспечения. Его выразительность позволяет моделировать, например, документооборот в юридических системах, структуру и функционирование системы обслуживания пациентов в больницах, осуществлять проектирование аппаратных средств.

Для понимания UML необходимо усвоить основные принципы, положенные в структуру этого языка. Этих принципов всего три, а сам язык как бы состоит из трех частей: основные конструкции языка, правила их взаимодействия и некоторые общие для всего языка механизмы. Освоив эти идеи, вы сумеете читать модели на UML и самостоятельно их разрабатывать, естественно, вначале не очень сложные. По мере приобретения навыков работы с языком вы научитесь использовать и более развитыми его возможностями.

Словарь UML включает три вида основных конструкций:

  • сущности - абстракции, являющиеся основными элементами модели;

  • отношения - связи между сущностями;

  • диаграммы, группирующие представляющие интерес множества сущностей и отношений.

Теперь обо всем более подробно.