порядка
выпуска последовательных версии и планирование их содержания, проведение консультаций для групп проектировщиков, разработчиков, сборщиков и тестеров, а также помощь в определении будущей маркетинговой стратегии»[9].
Программная архитектура многомерна — она состоит из нескольких одновременно развивающихся представлений[10] (см. рис. 11.1).
Во всех последующих разделах этой главы рассказывается об элементах каждого представления и нотации языка UML для описания архитектурных решений.
Большинство нотаций языка UML содержится в самом логическом представлении архитектуры (классы, ассоциации, агрегации, обобщение, пакеты и др.). Оно вводится на фазе проработки при создании классов и пакетов, представляющих основные абстракции предметной области. Постепенно все больше классов и пакетов добавляется в модель для отражения решений, касающихся ключевых механизмов системы. Ключевой механизм — это решение относительно общих стандартов, правил и норм. Выбор ключевых механизмов системы часто называют
На сегодняшний день существует много шаблонов, которые могут использоваться для реализации ключевых решений системы. Я настоятельно рекомендую изучить шаблоны, прежде чем предпринимать самостоятельные шаги.
Кроме того, концепции
Поскольку многие разработчики владеют именно С++, а в дальнейшем систему планируется расширять для автоматизации других потребностей университета, то в качестве основного языка был выбран С++. Разработчики архитектуры выяснили, что для создания графического интерфейса пользователя (ГИП) потребуется определенный набор графических элементов управления, и в модель был добавлен пакет Элементы управления ГИП (GUI Controls). Стратегия хранения данных предполагает использование отдельного класса доступа к базе данных (теневого класса) для каждого информационного класса в системе. Существуют и другие стратегии, например с применением механизмов наследования. Но именно эта стратегия выбрана потому, что уже накоплен достаточный опыт в реализации такого метода хранения и он считается наименее рискованным. На текущем этапе в модель добавляется пакет для доступа к базе данных, содержащий необходимые теневые классы. Для обработки исключений решено использовать механизмы языка С++ catch и throw. Вместо обработчиков исключений в модель добавлен общий пакет Обработка ошибок (Error Handling). И наконец, в систему добавлен набор классов для реализации основных коммерческих операций Базовые средства (Foundation). Пакеты, представляющие ключевые решения для системы регистрации курсов, показаны на рис. 11.2.
Так как Обработка ошибок и Базовые средства используются всеми остальными пакетами системы, они являются глобальными пакетами (global packages).
Выбор глобальных пакетов в программе Rational Rose состоит из следующих шагов:
1. Щелкните правой кнопкой мыши по пакету на диаграмме классов.
2. В появившемся контекстно-зависимом меню выберите команду Open Specification (Параметры), чтобы вызвать диалоговое окно настройки параметров пакета.
3. Выберите вкладку Detail (Детально).
4. Установите флажок Global (Глобальный).
5. Щелкните по кнопке ОК, чтобы закрыть диалоговое окно настройки параметров.
Элементами моделирования в
Пакет в данном представлении архитектуры — это физический раздел системы. Пакеты организованы в виде иерархии уровней или слоев, где каждый уровень имеет четко определенный интерфейс. На рис. 11.3 изображена типичная схема уровней системы.
Нотация языка UML для изображения пакетов в представлении компонентов напоминает изображение пакетов в логическом представлении — см. рис. 11.4. Для создания пакетов в представлении компонентов в программе Rational Rose:
1. Щелкните правой кнопкой мыши по разделу Component View (Представление компонентов) в окне браузера.
2. В появившемся контекстно-зависимом меню выберите команду New => Package (Создать => Пакет). В список объектов браузера будет добавлен новый пакет New Package.
3. Введите нужное имя пакета.
Главная диаграмма компонентов обычно представляет определенные для системы пакеты.
Чтобы получить главную диаграмму компонентов в программе Rational Rose:
1. Дважды щелкните по диаграмме Main Diagram (Главная диаграмма) в разделе Component View (Представление компонентов) в окне браузера, чтобы открыть диаграмму.
2. В списке браузера щелкните по пакету и перетащите его на диаграмму.
3. Повторите второй шаг для других пакетов, которые нужно поместить на диаграмму.
4. Чтобы добавить отношения зависимости, щелкните по кнопке Dependency (Отношение зависимости) на панели инструментов, затем по пакету-клиенту и проведите линию связи к пакету-поставщику.
Главная диаграмма компонентов для задачи регистрации учебных курсов показана на рис. 11.5.