- •«Технологии разработки программного обеспечения»
- •Оглавление
- •Введение
- •Анализ проблемы. Постановка задачи
- •Введение
- •Описание примера
- •Составление списка заинтересованных лиц
- •Анкетирование и проведение интервью
- •Список потребностей заинтересованных лиц
- •Задания
- •Контрольные вопросы
- •Моделирование объекта автоматизации
- •Введение
- •Введение в методологиюAris
- •Описание инструментаAris. Начало работы
- •Построение организационной модели
- •Построение диаграммы цепочек добавленного качества
- •ПостроениеeEpCмодели
- •Описание объектов автоматизации
- •Задания
- •Контрольные вопросы
- •Разработка модели вариантов использования и их спецификаций
- •Введение
- •Разработка модели вариантов использования
- •Модель вариантов использования
- •Построение модели вариантов использования
- •Спецификация вариантов использования
- •Основной поток
- •Альтернативные потоки
- •Специальные требования
- •Пример спецификации варианта использования
- •Алгоритм расчёта рейтингов
- •Задания
- •Пример написания раздела
- •Назначение документа
- •Наименование системы
- •Сведения о заказчике и исполнителе
- •Основания для выполнения работ, сроки и финансирование
- •Основные понятия, определения и сокращения
- •Актуальность разработки системы
- •Назначение и цели создания (развития) системы
- •Требования к содержимому раздела
- •Пример написания раздела
- •Характеристики объекта автоматизации
- •Требования к содержимому раздела
- •Пример написания раздела
- •Организация и планирование научно-исследовательской и инновационной деятельности
- •Исполнители научно-исследовательских работ
- •Учет и отчетность по научно-исследовательским работам
- •Требования к системе
- •Требования к содержимому раздела
- •Пример написания раздела
- •Требования к системе в целом
- •Требования к структуре и функционированию системы
- •Требования к численности и квалификации персонала
- •Требования к функциям (задачам)
- •Описание вариантов использования
- •Состав и содержание работ по созданию системы
- •Требования к содержимому раздела
- •Пример написания раздела
- •Порядок контроля и приемки системы
- •Требования к содержимому раздела
- •Пример написания раздела
- •Требования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие
- •Требования к содержимому раздела
- •Пример написания раздела
- •Создание служб необходимых для функционирования системы
- •Функциональные этапы внедрения системы
- •Требования к документированию
- •Требования к содержимому раздела
- •Пример написания раздела
- •Паспорт системы
- •Общее описание системы
- •Руководство администратора
- •Руководство пользователя
- •Регламент эксплуатации
- •Источники разработки
- •Правила оформления
- •Задание
- •Бизнес-логика
- •Объектно-реляционное отображение
- •Структура бд
- •Создание проекта вBorlandDeveloperStudio
- •Добавление нового модуля в проект
- •Создание классов с помощью диаграммыUml
- •Добавление полей
- •Добавление свойств
- •Добавление процедуры
- •Добавление функции
- •Создание отношений между классами
- •Ассоциация
- •Агрегация
- •Наследование
- •Пример создания классов
- •Создание классов и отношений между ними слоя объектно-реляционного отображения
- •Создание классов слоя бизнес-логики
- •Невизуальные компоненты интерфейса используемые в примере
- •TimageList
- •TActionManager
- •Визуальные компоненты используемые в примере
- •TBitBtn
- •TdbGrid
- •TcomboBox
- •TPageControl
- •Пример разработки интерфейса
- •Главная форма
- •Форма редактирования параметров студента
- •Форма редактирования книг
- •Форма отображения списка книг
- •Подключение классов
- •Сохранение проекта
- •Задание
- •Шаблоны проектирования
- •Шаблон InformationExpert(информационный эксперт)
- •Преимущества
- •Шаблон Creator(создатель)
- •Преимущества
- •Шаблон LowCoupling(слабое связывание)
- •Преимущества
- •Шаблон HighCohesion(высокое зацепление)
- •Преимущества
- •Шаблон Controller(контроллер)
- •Преимущества
- •Применение шаблонаInformationExpert
- •Применение шаблонаCreator
- •Использование шаблонаHighCohesion
- •Применение шаблонаController
- •Задание
- •Технология eco
- •Язык объектных ограничений ocl
- •Mdi-контейнеры
- •Создание простого mda-приложения
- •Основные этапы разработки приложения
- •Обзор возможностей Borland Developer Studio 2006 для разработки mda-приложения
- •Создание моделиUml
- •Создание бд и настройкаEcOкомпонент
- •Создание интерфейса
- •Связывание интерфейса с моделью
- •Создание логики наOcl
- •Задания
- •Контрольные вопросы
- •РазработкаMda-приложения с использованием машин состояний
- •Введение
- •Автоматы
- •Состояния
- •Подавтоматы
- •Диаграммы состояний
- •Создание mda-приложений с использованием машин состояний
- •Модификация модели uml
- •Создание машины состояний
- •Обновление базы данных
- •Модификация пользовательского интерфейса
- •Связывание интерфейса с моделью
- •Применение автоформ
- •Расширение пользовательского интерфейса
- •Задания
- •Контрольные вопросы
- •Расширенные возможности разработкиMda-приложений
- •СозданиеMda-приложения с расширенными возможностями
- •Модификация моделиUml
- •Программное добавление объекта
- •Программное удаление объекта
- •Программное редактирование объекта
- •Работа со справочником
- •Поиск объектов
- •Задания
- •Контрольные вопросы
- •Заключение
- •Библиографический список
Обновление базы данных
Чтобы сгенерировать исходный кодECOв соответствие с построенной моделью выберем операциюRegenerate ECO source code из консольного меню окна Model View. Также такая операция производится нажатием кнопки над данным окном. Генерация производится автоматически.
Так как мы создали новый класс и добавили новые поля в уже существующий, необходимо обновить подключенную базу данных. Для этого перейдем на закладку настройки объектного пространстваprojDeanOfficeEcoSpace. Нажмем кнопкуGenerateSchemaв нижней части окна. В текущей базе данных автоматически сформируются таблицы, содержащие поля для хранения модели проекта. При этом все имеющиеся данные в базе удаляются. ОперацияEvolveSchemaпозволяет сохранить существующие данные и дополнить базу созданными элементами, в соответствие с построенной моделью.
Модификация пользовательского интерфейса
Добавим на форму элементы интерфейса пользователя.
Создадим вторую дочернюю форму wfSubject(классTSubject). Заголовок формы назовем Дисциплины.
Перейдем к вкладке Code. В окне появится код формы. Перед командойimplementationобъявим переменную, ответственную за создание дочернего окна Дисциплины:
var
callSubj: TSubject;
Перейдем к Главной форме. Чтобы в Главной форме создать дочернюю, подключим к ней форму wfSubjectкомандойFile>UseUnit. В появившемся окнеUseUnitвыберем формуwfSubject.
В главном меню Главной формы добавим подпункт Дисциплины в пункте Подсистемы. На событие выбора пункта меню Дисциплины пропишем следующие операции:
callSubj := TSubject.Create(EcoSpace);
callSubj.MdiParent := self;
callSubj.Show;
Вернемся к форме Дисциплины. Разместим на ней две таблицы: dgLecturerиdgSubject(экземпляры классаDataGrid) для представления экземпляров классов Преподаватель и Дисциплина. Заполним в таблицах свойствоCaptionText(название заголовка).
Добавим две кнопки для работы с таблицей Дисциплины (добавление, удаление объектов) и третью кнопку для обновления базы данных (см. Рисунок 9 .67).
Рисунок 9.67 – Настройка пользовательского интерфейса
Связывание интерфейса с моделью
Сформируем три дескриптора ЕСО: ehLecturer,ehSubject(экземпляры классаExpressionHandle) для организации доступа к объектам модели и пространства ЕСО во время работы программы иcmhLecturer(экземпляр классаCurrensyManagerHandle), который будет служить для указания на текущий объект таблицы Преподаватели.
Настроим таблицу Дисциплины так, чтобы она отражала список дисциплин, принадлежащих выбранному преподавателю в первой таблице. Свяжем дескриптор cmhLecturerс таблицейdgLecturerчерез свойствоBindingContext. Теперь он отслеживает выделенную строку этой таблицы.
Настроим дескриптор cmhLecturerна связь с родительским объектом. Зададим ссылку на объектehLecturerв свойствеRootHandle, определяющем корневой идентификатор ЕСО.
В свойстве RootHandleдескриптораehSubjectвыберем значениеcmhLecturer. Так задают место данного идентификатора в цепочке доступа к объектному пространству ЕСО.
В качестве выражения OCLвведем в свойствоExpressionобъектаehSubjectстроку self.roleSubjects. Здесь roleSubjects – это имя роли классаSubjectв его ассоциативной связи с классом Преподаватель. Это выражение определяет список дисциплин, предложенных и назначенных преподавателю, который выбран в таблице Преподаватели.
Свяжем таблицу Преподаватели с дескриптором ehLecturerчерез ее свойствоDataSource, а таблицу Дисциплины – с дескрипторомehSubject. Теперь таблицы отображают поля классов Преподаватель и Дисциплина. Кроме этого, в таблице Дисциплины появилось полеSubjectState, которое будет автоматически отображать текущее состояние дисциплин.
Настроим стили таблиц. Воспользуемся свойством таблицы TableStyles. Присвоим полям таблиц русскоязычные названия.
Настроим функционирование кнопок. Выделим в окне Проектировщика кнопку Button1. В свойствеEcoListActionвыберем значениеAdd. В свойствеRootHandleвыберем подходящий поставщик объектов ЕСО – идентификаторehSubject. Свяжем результат действия кнопки (созданный экземпляр класса Дисциплина) с визуальным элементом, отображающим этот экземпляр, в нашем случае — с таблицейdgSubject. Для этого в свойствеBindingContextвыберем имяdgSubject. Аналогично настроим кнопкуButton2 на операцию удаления. Выберем компонентEcoListActions, в его свойствеCaptionAddвведем слово Добавить, а в свойствеCaptionDelete– Удалить. Кнопки автоматически получила название Добавить и Удалить. В свойствеTextкнопкиButton3 введем значение Сохранить (см. Рисунок 9 .68).
Запустим приложение. Добавим несколько объектов в таблицу Дисциплины для выбранного преподавателя. В поле Состояние таблицы Дисциплины все объекты имеют одинаковое значение ChosenLecturer. На данный момент это состояние неизменяемо. Чтобы иметь возможность изменять состояния, произведем следующую модификацию пользовательского интерфейса.