Визуальное моделирование при анализе и проектировании. Основы Unified Modeling Language (UML)
2.1.3. Принципы объектного подхода
Рассмотрим наиболее важные принципы объектного подхода.
Абстрагирование применяется при решении многих задач. Любая построенная нами модель позволяет абстрагироваться от реального объекта, подменяя его изучение исследованием формальной модели. Абстрагирование в ООП позволяет выделить основные элементы предметной области, обладающие одинаковой структурой и поведением. Такое разбиение на классы позволяет существенно облегчить анализ и проектирование системы.
Инкапсуляция - важнейший элемент объектного подхода. Суть его заключается в скрытии деталей внутренней реализации. Инкапсуляция оказывает положительное влияние на защиту данных и существенно повышает шансы безболезненной замены одной из частей системы ее новой версией при условии сохранения интерфейса.
Иерархия помогает разбить задачу на уровни и постепенно ее решать, постепенно увеличивая детализацию рассмотрения. Иерархия упорядочивает абстракции. К счастью, разные иерархии можно обнаружить практически в любой системе. Агрегация и наследование - примеры таких иерархий. Они подчеркивают тот факт, что новые абстракции могут быть созданы на основе уже имеющихся.
Полиморфизм позволяет иметь естественные имена и выполнять действия, релевантные ситуации, разбираясь на этапе работы программы, какой из методов необходимо вызвать. Полиморфизм неразрывно связан с наследованием и поздним связыванием.
Пример: ООП и структуры хранения. Стек
Постановка задачи:
Необходимо разработать структуру хранения Стек.
Примечания:
- Не учитывать необходимость перераспределения памяти.
- Считать, что элементы целого типа.
Анализ и проектирование.
Данные:
- MemSize - максимальное количество элементов.
- DataCount - количество элементов в стеке.
- pMem - указатель на память для хранения значений.
Операции:
- IsFull - проверка на полноту.
- IsEmpty - проверка на пустоту.
- Get - взять элемент с вершины.
- Put - положить элемент в стек.
Рассмотрим финальный результат нашего проектирования (используется нотация UML):
2.2. Повторное использование
2.2.1. Идея повторного использования. Важность повторного использования
Повторное использование - применение уже существующих наработок в разрабатываемом ПО.
Повторное использование - важный элемент проектирования. Необходимо проектировать новые элементы системы с тем, чтобы их в последствии можно было применять при разработке других систем. Кроме того, при проектировании системы необходимо рассматривать возможность использования того, что уже есть и работает.
Девиз: не надо изобретать велосипед, если он уже изобретен.
2.2.2. Достоинства повторного использования. Виды повторного использования
Достоинства повторного использования (по Соммервилю, [3.1]):
- Повышение надежности.
- Уменьшение проектных рисков.
- Эффективное использование специалистов.
- Соблюдение стандартов (пример: пользовательский интерфейс).
- Ускорение разработки.
Повторное использование достигается за счет следующих приемов (видов использования):
- Компонентная разработка. Часть компонентов уже разработаны ранее, имеют четко описанный интерфейс. Они используются в качестве "кирпичиков" в новой системе.
- Использование паттернов (шаблонов) проектирования. Применяются известные подходы к решению некоторых встречавшихся ранее проблем.
- Использование стандартных прикладных (MKL, MFC…) и системных (API) библиотек.
3. Визуальное моделирование. История языка UML
3.1.1. Вместо введения
При изучении материалов по визуальному моделированию и языку UML в качестве основного источника рекомендуется классическая книга [3.3]:
Г. Буч, Дж. Рамбо, А. Джекобсон. UML. Руководство пользователя. - ДМК-Пресс, Питер, 2004.
Дополнительно рекомендуется следующая книга: G. Booch, J. Rumbaugh, I. Jacobson. The Unified Modeling Language Reference Manual - Second Edition, Addison-Wesley, 2004.
Большое количество материалов может быть найдено на сайте http://www.uml.org.
3.1.2. Идея визуального моделирования
Вспомним, в чем состоит основная проблема в разработке ПО? Проекты не укладываются в сроки, бюджет, не удовлетворяют требованиям.
Как решать эту проблему? На помощь приходит моделирование. Под моделью обычно понимают упрощенное представление объектов и явлений реального мира.
Ответим на вопрос, зачем строят модели? Модели строят для того, чтобы лучше понять исследуемую систему.
Классики проклассифицировали задачи и принципы моделирования. Приведем здесь эту, несомненно, важную, классификацию.
Задачи моделирования [3.3]:
- Визуализация системы в ее некотором состоянии.
- Определение структуры и поведения системы.
- Получение шаблона для создания системы.
- Документирование принятых решений.
Принципы моделирования [3.3]:
- Выбор модели оказывает определяющее влияние на подход к решению проблемы и на то, как будет выглядеть это решение.
- Каждая модель может быть воплощена с разной степенью абстракции.
- Лучшие модели - те, что ближе к реальности.
- Наилучший подход при разработке сложной системы - использовать несколько почти независимых моделей.
Как уже упоминалось ранее, одним из наиболее популярных подходов к моделированию является объектный подход. В соответствии с этим подходом в результате OOA и OOD мы получаем "хороший" проект программной системы, прозрачный, удовлетворяющий требованиям, удобный для тестирования и отладки, коллективной разработки, развиваемый, допускающий повторное использование компонентов.
К сожалению, даже использование таких мощных средств, как объектный подход, не гарантирует нам успех. К сожалению, в больших проектах сложность моделируемого объекта (и, соответственно, сложность проекта) такова, что проект слишком велик для адекватного восприятия одним человеком, по крайней мере, в уме.
Это и означает необходимость визуального моделирования.
Идея визуального моделирования состоит в графическом отображении обсуждаемых и принимаемых проектных решений. При этом достигаются следующие цели:
- Визуализация упрощает понимание проекта в целом.
- Визуализация помогает согласовать терминологию и убедиться, что все одинаково понимают термины.
- Визуализация делает обсуждение конструктивным и понятным.
Для визуального моделирования нужна специальная нотация или язык.
UML (unified modeling language) - это язык для визуализации, специфицирования, конструирования, документирования элементов программных систем [3.3]. UML - язык общего назначения, предназначенный для объектного моделирования.