Спонсор: Microsoft
Санкт-Петербургский государственный университет
Опубликован: 12.03.2009 | Доступ: свободный | Студентов: 4400 / 1063 | Оценка: 4.44 / 4.12 | Длительность: 11:24:00
Специальности: Системный архитектор
Лекция 4:

Архитектура ПО

< Лекция 3 || Лекция 4: 12 || Лекция 5 >

Язык UML

Часто понятие архитектуры сильно сужают, понимая под ним лишь описание основных, важных аспектов ПО, создаваемых, например, архитектором при разработке дизайна системы. Для этих целей используется язык моделирования UML (Unified Modeling Language).

Этот язык является итогом развития средств схематического описания программных систем, которые развивались с блок-схем, предложенных еще фон Нейманом в конце 40-х годов. Он предполагал, что эти схемы станут высокоуровневым языком ввода алгоритмов в вычислительные машины, но эволюция языков программирования пошла по пути текстовых языков. Тем не менее блок-схемы получили распространение при спецификации и документировании ПО, были стандартизованы, однако широкого практического применения не получили. В конце 60-х годов, в связи с поиском новых средств разработки ПО, рождением программной инженерии и общими следованиями в области проектирования и разработки искусственных систем появился термин структурный анализ (structured analysis) систем. Термин был введен ученым из MIT, Дугласом Россом, который также предложил диаграммный метод анализа и проектирования больших искусственных систем. Метод назывался SADT (Structured Analisys and Design Technique), стал основой серии военных стандартов США серии IDEF и широко распространился в индустрии. Однако диаграммный язык в SADT был очень скромным – набор блоков и связей между ними, с поддержкой декомпозиции блоков. В 70-х годах, в связи с массовым выходом ПО на свободный рынок (то есть программные системы стали создаваться не только в военной области, для крупного бизнеса, но также для среднего и малого бизнеса) структурный анализ стал бурно эволюционизировать – набор диаграмм обогатился диаграммами состояний и переходов, сущность-связь, потоков данных и т.д. С развитием объектно-ориентированных средств разработки (конец 80-х – середина 90-х) структурный анализ превратился в объектно-ориентированный анализ и проектирование. Появилось большое количество методологий, и постепенно сложился единый язык моделирования, который и был закреплен в стандарте UML. Произошло это в 1997 году.

С тех пор вышло несколько версий стандарта UML. Текущая версия UML 2.1.

Виды диаграмм

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

  • Структурные диаграммы:
    • диаграммы классов (class diagrams) предназначены для моделирования структуры объектно-ориентированных приложений классов, их атрибутов и заголовков методов, наследования, а также связей классов друг с другом;
    • диаграммы компонент (component diagrams) используются при моделировании компонентной структуры распределенных приложений; внутри каждая компонента может быть реализована с помощью множества классов;
    • диаграммы объектов (object diagrams) применяются для моделирования фрагментов работающей системы, отображая реально существующие в runtime экземпляры классов и значения их атрибутов;
    • диаграммы композитных структур (composite structure diagrams) используются для моделирования составных структурных элементов моделей – коопераций, композитных компонент и т.д.;
    • диаграммы развертывания (deployment diagrams) предназначены для моделирования аппаратной части системы, с которой ПО непосредственно связано (размещено или взаимодействует);
    • диаграммы пакетов (package diagrams) служат для разбиения объемных моделей на составные части, а также (традиционно) для группировки классов моделируемого ПО, когда их слишком много.
  • Поведенческие диаграммы:
    • диаграммы активностей (activity diagrams) используются для спецификации бизнес-процессов, которые должно автоматизировать разрабатываемое ПО, а также для задания сложных алгоритмов;
    • диаграммы случаев использования (use case diagrams) предназначены для "вытягивания" требований из пользователей, заказчика и экспертов предметной области;
    • диаграммы конечных автоматов (state machine diagram) применяются для задания поведения реактивных систем;
    • диаграммы взаимодействий (interaction diagram):
      • диаграммы последовательностей (sequence diagram) используются для моделирования временных аспектов внутренних и внешних протоколов ПО;
      • диаграммы схем взаимодействия (interaction overview diagram) служат для организации иерархии диаграмм последовательностей;
      • диаграммы коммуникаций (communication diagrams) являются аналогом диаграмм последовательностей, но по-другому изображаются (в привычной, графовой манере);
    • временные диаграммы (timing diagrams) являются разновидностью диаграмм последовательностей и позволяют в наглядной форме показывать внутреннюю динамику взаимодействия некоторого набора компонент системы.

Примеры. Центральным видом диаграмм являются диаграммы классов. Пример представлен на рис. 4.3.

Пример диаграмм классов

увеличить изображение
Рис. 4.3. Пример диаграмм классов

Еще один вид структурных диаграммдиаграммы развертывания, пример представлен ниже.

Пример диаграмм размещений

Рис. 4.4. Пример диаграмм размещений

Отметим также еще один важный вид диаграмм UMLдиаграммы компонент (пример представлен на рис. 4.5).

Пример диаграмм компонент

Рис. 4.5. Пример диаграмм компонент

Интересен также вариант диаграмм композитных структур – сложные компоненты для систем реального времени и телекоммуникаций. Пример представлен ниже.

Пример диаграмм композитных структур

Рис. 4.6. Пример диаграмм композитных структур

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

Пример диаграмм конечных автоматов

Рис. 4.7. Пример диаграмм конечных автоматов

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

Пример диаграмм последовательностей

увеличить изображение
Рис. 4.8. Пример диаграмм последовательностей
< Лекция 3 || Лекция 4: 12 || Лекция 5 >
Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Лариса Парфенова
Лариса Парфенова

1) Можно ли экстерном получить второе высшее образование "Программная инженерия" ?

2) Трудоустраиваете ли Вы выпускников?

3) Можно ли с Вашим дипломом поступить в аспирантуру?

 

Александр Качанов
Александр Качанов
Япония, Токио
Александр Санчиров
Александр Санчиров
Россия, Москва