- •«Технологии разработки программного обеспечения»
- •Оглавление
- •Введение
- •Анализ проблемы. Постановка задачи
- •Введение
- •Описание примера
- •Составление списка заинтересованных лиц
- •Анкетирование и проведение интервью
- •Задания
- •Контрольные вопросы
- •Моделирование объекта автоматизации
- •Введение
- •Введение в методологию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. На данный момент это состояние неизменяемо. Чтобы иметь возможность изменять состояния, произведем следующую модификацию пользовательского интерфейса.
