- •Лекция 1. Основные модели разработки по Определение технологии конструирования программного обеспечения
- •Классический жизненный цикл
- •Макетирование
- •Стратегии конструирования по
- •Инкрементная модель
- •Быстрая разработка приложений
- •Спиральная модель
- •Компонентно-ориентированная модель
- •Лекция 2. Анализ программных систем Структурный анализ
- •Диаграммы потоков данных
- •Описание потоков данных и процессов
- •Расширения для систем реального времени
- •Расширение возможностей управления
- •Методы анализа, ориентированные на структуры данных
- •Метод анализа Джексона. Методика Джексона.
- •Методика Джексона
- •Шаг объект-действие
- •Шаг объект-структура
- •Шаг начального моделирования
- •Лекция 3. Синтез программных систем Особенности процесса синтеза программных систем
- •Особенности этапа проектирования
- •Структурирование системы
- •Моделирование управления
- •Декомпозиция подсистем на модули
- •Модульность
- •Информационная закрытость
- •Связность модуля
- •Сцепление модулей
- •Сложность программной системы
- •Лекция 4. Классические методы проектирования
- •Метод структурного проектирования
- •Типы информационных потоков
- •Проектирование для потока данных типа «преобразование»
- •Диаграмма потоков данных пдд
- •Проектирование для потока данных типа «запрос»
- •Диаграмма потоков данных
- •Метод проектирования Джексона
- •Доопределение функций
- •Учет системного времени
- •Принципы объектно-ориентированного представления программных систем
- •Абстрагирование
- •Инкапсуляция
- •Модульность
- •Иерархическая организация
- •Лекция 5. Объекты. Классы. Отношения Объекты
- •Общая характеристика объектов
- •Виды отношений между объектами
- •Видимость объектов
- •Агрегация
- •Общая характеристика классов
- •Виды отношений между классами
- •Ассоциации классов
- •Наследование
- •Полиморфизм
- •Агрегация
- •Зависимость
- •Конкретизация
- •Лекция 6. Базис языка визуального моделирования
- •Унифицированный язык моделирования
- •Предметы в uml
- •Отношения в uml
- •Диаграммы в uml
- •Механизмы расширения в uml
- •Лекция 7. Статические модели объектно-ориентированных программных систем
- •Вершины в диаграммах классов
- •Свойства
- •Операции
- •Организация свойств и операций
- •Множественность
- •Отношения в диаграммах классов
- •Деревья наследования
- •Лекция 8. Динамические модели объектно-ориентированных программных систем
- •Моделирование поведения программной системы
- •Диаграммы схем состояний
- •Действия в состояниях
- •Условные переходы
- •Вложенные состояния
- •Диаграммы деятельности
- •Диаграммы взаимодействия
- •Диаграммы сотрудничества
- •Диаграммы последовательности
- •Лекция 9. Диаграммы use casEe
- •Актеры и элементы Use Case
- •Отношения в диаграммах Use Case
- •Работа с элементами Use Case
- •Пример диаграммы Use Case
- •Построение модели требований
- •Лекция 10. Кооперации и паттерны
- •Паттерн Наблюдатель
- •Паттерн Компоновщик
- •Бизнес-модели
- •Глава 11. Модели реализации объектно-ориентированных программных систем
- •Компонентные диаграммы
- •Компоненты
- •Интерфейсы
- •Компоновка системы
- •Разновидности компонентов
- •Использование компонентных диаграмм
- •Моделирование программного текста системы
- •Моделирование реализации системы
- •Лекция 12. Основы компонентной объектной модели
- •Организация интерфейса сом
- •Идентификация интерфейса
- •Описание интерфейса
- •Реализация интерфейса
- •Unknown — базовый интерфейс com
- •Серверы сом-объектов
- •Преимущества com
- •Работа с сом-объектами
- •Создание сом-объектов
- •IClassFactory :: Createlnstance (iid a); 2 — фабрика класса создает сом-объект и получает
- •Повторное использование сом-объектов
- •Маршалинг
- •Лекция 13. Современные визуальнЫе среды и case - средства
- •Общая характеристика case-системы Rational Rose
- •Создание диаграммы Use Case
- •Создание диаграммы последовательности
- •Создание диаграммы классов
- •Создание компонентной диаграммы
- •Генерация программного кода
- •Лекция 14. Особенности информационных банковских систем и технологий
- •Модульный принцип
- •Ядро системы - базовый модуль
- •Лекция 15. Принцип единства информационного пространства
- •Принцип безопасности
- •Принцип эффективности
- •Принцип взаимодействия
- •Лекция 16. Общие вопросы обеспечения технологии и систем
- •Рынок информационных банковских систем
- •Виды информационных банковских технологий
- •Операционные технологии
- •Документарные информационные технологии
- •Объектные информационные технологии
Создание компонентной диаграммы
Допустим, что наступил момент, когда нужно генерировать коды для классов модели. Для определения компонентов исходного кода используют компонентное представление (Component View) (рис. 17.30). Среда Rational Rose автоматически создает главную компонентную диаграмму.
1. В окне браузера щелкнем по значку + слева от пакета Component View.
2. Для открытия главной компонентной диаграммы выполним двойной щелчок по значку Main.
В общем случае каждому классу должны соответствовать два компонента — компонент спецификации и компонент реализации. В будущем каждому компоненту будет соответствовать свой файл. Например, в языке C++ классу соответствуют два файла-компонента: h-файл (файл спецификации) и срр-файл (файл реализации).
В нашей модели мы создадим один компонент для представления файла спецификации по классу CourseOffering и один компонент для представления файла реализации по классу CourseOffering (рис. 17.31).
Эти файлы будут иметь расширения .ads и .adb соответственно. Файл .ads имеет стереотип Package Specification. Файл .adb имеет стереотип Package Body.
На панели инструментов щелкните по значку спецификации пакета Package Specification.
Для добавления компонента в диаграмму щелкните в нужном месте диаграммы.
Пока новый компонент остается выделенным, введите его имя — CourseOffering.
Повторите предыдущие шаги с использованием значка тела пакета Package Body.
На панели инструментов щелкните по значку отношения зависимости.
Щелкните по компоненту, представляющему .adb-файл (тело пакета), и перетащите стрелку на компонент, представляющий .ads-файл (спецификация пакета).
Рис. 17.30. Компонентное представление — Component View
Рис. 17.31. Компонентное представление
После создания компонентов им должны быть назначены классы модели (рис. 17.32).
Выполним двукратный щелчок по значку компонента CourseOffering, представляющего .ads-файл (спецификацию пакета), в окне браузера или компонентной диаграмме. В результате станет видимым окно спецификации компонента.
Выберите страницу (вкладку) Realizes. Вы увидете список классов модели.
Щелкните правой кнопкой по классу CourseOffering. В результате станет видимым контекстное меню.
Выберите команду Assign.
Закройте окно спецификации, нажав кнопку ОК.
Выполните аналогичные действия для тела пакета, представляющего .adb-файл.
Рис. 17.32. Назначение классов компоненту
Генерация программного кода
Команды для генерации кода на языке Ada 95 содержит пункт Toots главного меню (рис. 17.33).
1. На компонентной диаграмме выделите оба компонента CourseOffering.
2. Выберите команду Tools:Ada95: Code Generation из главного меню.
Итоги генерации кода отображаются в окне Code Generation Status (рис. 17.34).
Все ошибки заносятся в log-окно.
3. Для завершения процесса генерации кода нажмите кнопку Close.
Рис. 17.33. Меню Tools: генерация кода на языке Ada 95
Рис. 17.34. Статус генерации кода
В процессе генерации Rational Rose отображает логическое описание класса в каркас программного кода — в коде появляются языковые описания имени класса, свойств класса и заголовки методов. Кроме того, для описания тела каждого метода формируется программная заготовка. Появляются и программные связи классов. Подразумевается, что программист будет дополнять этот код, работая в конкретной среде программирования, имеющей мост связи с системой Rational Rose. После каждого существенного дополнения программист с помощью возвратного проектирования, основанного на использовании моста связи, будет модифицировать диаграммы классов, вводя в них изменения, соответствующие результатам программирования.
Просмотрим код, сгенерированный средой Rational Rose.
Фрагмент содержания .ads-файла, отражающего спецификацию класса CourseOffering, представлен на рис. 17.35. Отметим, что в программный текст добавлено то описание, которое было внесено в модель через окно документации. Более того, система Rational Rose подготавливает код к многократной итеративной модификации, защите выполняемых изменений. Стандартный раздел программного кода имеет вид
--##begin module.privateDeclarations preserve=yes
--##end module.privateDeclarations
Рис. 17.35. Код спецификации класса, сгенерированный средой Rational Rose
Запись module.privateDeclarations обозначает имя раздела. Элемент preserve=(yes/no) говорит системе, можно ли при повторной генерации кода этот раздел изменять или нельзя. После генерации кода программный текст добавляется между операторами ##begin и ##end.
Соответственно, фрагмент содержания .adb-файла, отображающего тело класса CourseOffering, представлен на рис. 17.36.
Рис. 17.36. Код тела класса, сгенерированный Rational Rose
