- •Пояснительная записка
- •1. Краткая характеристика предметной области
- •1.1 Общая характеристика
- •1.2 Актуальность разрабатываемой подсистемы
- •1.3 Формулировка задач проектирования
- •2. Создание диаграммы прецедентов
- •3. Создание диаграммы последовательности
- •4. Создание диаграммы сотрудничества
- •5. Создание диаграммы классов
- •6. Добавление деталей к описаниям операций и определение атрибутов классов
- •7. Создание диаграммы состояний для классов и диаграммы компонентов
- •Из диаграммы компонентов видно, что разрабатываемая подсистема будет работать по технологии «клиент-сервер».
- •8. Создание диаграммы размещения
-
Согласно созданной диаграмме InputInformation объекты класса могут находиться в одном из четырех состояний: инициализации, приостановки, отмены и завершения. Также разработана диаграмма компонентов, разделяющая систему на 2 компонента: клиент и сервер.
-
Из диаграммы компонентов видно, что разрабатываемая подсистема будет работать по технологии «клиент-сервер».
8. Создание диаграммы размещения
Этот вид диаграмм предназначен для анализа аппаратной части системы, то есть «железа», а не программ. В прямом переводе с английского Deployment означает «развертывание», но термин «топология» точнее отражает сущность этого типа диаграмм. Иногда диаграммы топологии называют диаграммами размещения.
Рисунок 8.1 – Диаграмма размещения
Добавление узлов к диаграмме размещения:
-
Дважды щелкнув мышью на представлении размещения в браузере, открыть диаграмму размещения.
-
Нажать кнопку Processor (Процессор) панели инструментов.
-
Щелкнув мышью на диаграмме, поместить туда процессор.
-
Ввести имя процессора «Сервер базы данных».
-
Повторив шаги 2—4, добавить следующие процессоры: «сервер приложения», «клиентская рабочая станция №1», «клиентская рабочая станция №2».
-
На панели инструментов нажать кнопку Device (Устройство).
-
Щелкнув мышью на диаграмме, поместить туда устройство.
-
Назвать его «Принтер».
Добавление связей:
-
Нажать кнопку Connection (Связь) панели инструментов.
-
Щелкнуть мышью на процессоре «Сервер базы данных».
-
Провести линию связи к процессору «Сервер приложения».
-
Повторив шаги 1 − 3, добавить следующие связи:
-
от процессора «Сервер приложения» к процессору «Клиентская рабочая станция №1»;
-
от процессора «Сервер приложения» к процессору «Клиентская рабочая станция №2»;
-
от процессора «Сервер приложения» к устройству «Принтер».
Добавление процессов:
-
Щелкнуть правой кнопкой мыши на процессоре «Сервер приложения» в браузере.
-
В открывшемся меню выберать пункт New → Process (Создать → Процесс).
-
Ввести имя процесса − InformationServerExe.
-
Повторить шаги 1 − 3, добить процессы:
-
процесс InformationClientExe на процессоре «Клиентская рабочая станция №1»;
-
процесс ATMClientExe на процессоре «Клиентская рабочая станция №2».
Показ процессов на диаграмме:
-
Щелкнуть правой кнопкой мыши на процессоре «Сервер приложения».
-
В открывшемся меню выбрать пункт Show Processes (Показать процессы).
Выводы
-
Из диаграммы видно, что информационная подсистема деканат экзаменационная сессия построена на технологии «клиент-сервер». Это позволяет организовать одновременный доступ нескольких операторов ПК к базе данных.
-
Клиентские программы будут работать в нескольких местах. Через локальную вычислительную сеть университета будет осуществляться сообщение этой части программы с главным сервером системы, с работающим программным обеспечением. В свою очередь, главный сервер посредством локальной сети будет сообщаться с сервером базы данных. С главным сервером соединен принтер. Главный сервер может находится в главном корпусе университета.
9. ГЕНЕРАЦИЯ ПРОГРАММНОГО КОДА C++
При генерации с помощью Rational Rose 2000 программного кода Visual C++ применяется программа-мастер. Для запуска этого мастера необходимо выбрать пункт меню Tools → Visual C++ → Update Code, после чего стартует инструментальное средство обновления программного кода Visual C++ Update Code и появляется экран приглашения. Для продолжения работы необходимо щелкнуть мышью на Next. Rose выведет на экран окно выбора Select Components and Classes (рисунок 9.1). Перед генерацией класса в Visual C++ ему необходимо назначить компонент. Если компонент еще не назначен, выбрать режим Create a VC++ Component and Assign New Classes to It (Ctrl+R) в окне мастера. В этом режиме можно создать нужное число компонентов перед генерацией программы. Затем выбрать компоненты и/или классы модели для генерации программного кода.
Чтобы изменить свойства генерации программного кода для компонентов и классов Visual C++, необходимо щелкнуть правой клавишей мыши на папке VC++ на этом экране. После этого можно установить любые свойства генерации, например контейнерный класс, свойства поддержки множественности связей, возможность автоматической генерации конструктора и деструктора, а также возможность автоматической генерации операций Get и Set или других функций-членов (member functions).
После того как всем классам назначены компоненты, выбраны классы и/или компоненты для генерации и установлены все свойства генерации программного кода, необходимо щелкнуть мышью на Next. Появится итоговая страница со сведениями о том, какие классы и компоненты сгенерированы и какие ошибки выявлены в процессе генерации.
Рисунок 9.1 – Окно выбора компонентов и классов программы-мастера Update Code
Для генерации программного кода Rational Rose 2000 использует самую различную информацию, содержащуюся в модели. Анализируются множественность, имена ролей, включение и другие характеристики каждой связи. Просматриваются атрибуты, операции, видимость и другие детали каждого класса. Rational Rose 2000 выбирает нужные для генерации кода сведения из всех данных, вводимых в окнах спецификации различных элементов модели.
Выводы
-
На основании созданных моделей компонентов, представленных в проекте была произведена генерация программного кода на языке Visual C++.
-
Листинги сгенерированного кода для учета студентов университета на языке С++ приведены в Приложении А. Общий размер сгенерированных файлов составляет 7,38 КБ.
ЗАКЛЮЧЕНИЕ
В процессе выполнения курсового проекта разработана объектно-ориентированная модель информационной подсистемы для учета студентов университета. Данный проект написан с помощью языка UML, и использованием программного продукта Rational Rose 2000.
Были разработаны следующие диаграммы:
-
диаграмма прецедентов;
-
диаграмма последовательности;
-
диаграмма сотрудничества;
-
диаграмма классов;
-
диаграмма состояния для классов;
-
диаграмма компонентов;
-
диаграмма размещения.
Основным действующим лицом является секретарь деканата. Он выполняет четыре действия: «просмотреть данные сессии», «добавить студента в БД», «составить ведомость», «внести результаты сессии».
Очень важной и сложно реализуемой задачей информационной подсистемы является ввод и обработка информации о студентах, так как от правильности выполнения этой задачи зависит успешность оперативного учета в целом. Для решения этой проблемы были созданы пять классов: два «управляющих», два «граничных»(Boundaries) и один «сущность».
Информационная подсистема учета студентов университета построена на технологии «клиент-сервер». Это дает возможность одновременного доступа нескольких операторов ПК к базе данных.
Клиентские программы будут работать в нескольких местах. Через локальную вычислительную сеть университета, будет осуществляться взаимосвязь этой части программы с главным сервером системы, с работающим программным обеспечением. В свою очередь, главный сервер при помощи локальной сети будет сообщаться с сервером базы данных. С главным сервером соединен принтер. Центральный сервер может находиться в главном корпусе университета.
Были сгенерированы 12 файлов кода на языке С++ общим размером 7,38 КБ.
Разработанная в данном курсовом проекте модель позволяет производить добавление информации о студенте в базу данных по окончании экзаменационной сессии, в соответствии с учебным планом университета, удаление ненужной информации при отчислении из университета, ежедневное занесение оперативной информации о студентах и поиск необходимой информации.
Спецификация UML не определяет конкретный процесс разработки, поэтому перспективным направлением разработки темы курсового проекта является наполнение сгенерированной модели функциональным кодом.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
-
Буч Г., Рамбо Д., Джекобсон А. Язык UML для пользователя: Пер. с англ. – М.: ДМК, 2000.- 432 с., ил. (Серия «для программистов»).
-
Боггс У., Боггс М.. UML и Rational Rose: Пер. с англ. – М.: Издательство «Лори», 2000.- 581 с., ил.
-
Буч Г., Рамбо Д., Джекобсон А. UML: специальный справочник. – СПб.: Питер, 2002.- 432 с., ил.
-
Ларман К. применение UML и шаблонов проектирования: Пер. с англ. – М.: Издательский дом «Вильямс», 2001. – 496 с., ил.
-
ГОСТ 2.105-95 ЕСКД. Общие требования к текстовым документам
-
ГОСТ 2.004-88 ЕСКД. Общие требования к выполнению конструкторских и технологических документов на печатающих и графических устройствах ввода ЭВМ
-
ГОСТ 2.104-68 ЕСКД. Основные надписи
-
ГОСТ 2.106-68 ЕСКД. Текстовые документы
-
ГОСТ 2.109-73 ЕСКД. Основные требования к чертежам
-
ГОСТ 2.301-68 ЕСКД. Форматы
ПРИЛОЖЕНИЕ А
Листинги кода приложения для учета студентов, сгенерированные Rational Rose на языке С++
A.1 Листинг файла DBMeneger.h
// Copyright (C) 1991 - 1999 Rational Software Corporation
#if defined (_MSC_VER) && (_MSC_VER >= 1000)
#pragma once
#endif
#ifndef _INC_DBMANAGER_453CF383009F_INCLUDED
#define _INC_DBMANAGER_453CF383009F_INCLUDED
class TransactionManager;
class InputInformation;
//Система управления базой данных
//##ModelId=453CF383009F
class DBManager
{
public:
//##ModelId=454DF91303DA
TransactionManager* theTransactionManager;
//##ModelId=454DF99B01F5
InputInformation* theInputInformation;
//##ModelId=453CF4550169
Boolean SaveInfo(Integer ZakazID);
};
#endif /* _INC_DBMANAGER_453CF383009F_INCLUDED */
}
A.2 Листинг файла DBMeneger.cpp
// Copyright (C) 1991 - 1999 Rational Software Corporation
#include "stdafx.h"
#include "TransactionManager.h"
#include "InputInformation.h"
#include "DBManager.h"
//##ModelId=453CF4550169
Boolean DBManager::SaveInfo(Integer ZakazID)
{
// TODO: Add your specialized code here.
// NOTE: Requires a correct return value to compile.
}
A.3 Листинг файла FormExems.cpp
// Copyright (C) 1991 - 1999 Rational Software Corporation
#include "stdafx.h"
#include "FormStudent.h"
#include "FormExems.h"
//##ModelId=453CE6830108
Boolean FormExems::Create()
{
// TODO: Add your specialized code here.
// NOTE: Requires a correct return value to compile.
}
A.4 Листинг файла FormExems.h
// Copyright (C) 1991 - 1999 Rational Software Corporation
#if defined (_MSC_VER) && (_MSC_VER >= 1000)
#pragma once
#endif
#ifndef _INC_FORMEXEMS_453CE5400276_INCLUDED
#define _INC_FORMEXEMS_453CE5400276_INCLUDED
class FormStudent;
//Форма экзаменационной ведомости
//##ModelId=453CE5400276
class FormExems
{
public:
//##ModelId=454DF8FD00AD
FormStudent* theInputForm;
//##ModelId=453CE6830108
Boolean Create();
};
#endif /* _INC_FORMEXEMS_453CE5400276_INCLUDED */
A.5 Листинг файла FormStudent.cpp
// Copyright (C) 1991 - 1999 Rational Software Corporation
#include "stdafx.h"
#include "DBManager.h"
#include "FormStudent.h"
//##ModelId=453CF349025E
Boolean FormStudent::Form()
{
// TODO: Add your specialized code here.
// NOTE: Requires a correct return value to compile.
}
//##ModelId=453CF3C70346
Boolean FormStudent::InsertData()
{
// TODO: Add your specialized code here.
// NOTE: Requires a correct return value to compile.
}
//##ModelId=453CF4440006
Boolean FormStudent::SaveInfo()
{
// TODO: Add your specialized code here.
// NOTE: Requires a correct return value to compile.
}
A.6 Листинг файла FormStudent.h
// Copyright (C) 1991 - 1999 Rational Software Corporation
#if defined (_MSC_VER) && (_MSC_VER >= 1000)
#pragma once
#endif
#ifndef _INC_FORMSTUDENT_453CF313010C_INCLUDED
#define _INC_FORMSTUDENT_453CF313010C_INCLUDED
class DBManager;
//Форма ввода информации о студенте
//##ModelId=453CF313010C
class FormStudent
{
public:
//##ModelId=454DF90C03DA
DBManager* theDBManager;
//##ModelId=453CF349025E
Boolean Form();
//##ModelId=453CF3C70346
Boolean InsertData();
//##ModelId=453CF4440006
Boolean SaveInfo();
};
#endif /* _INC_FORMSTUDENT_453CF313010C_INCLUDED */
A.7 Листинг файла InformationItem.cpp
// Copyright (C) 1991 - 1999 Rational Software Corporation
#include "stdafx.h"
#include "InformationItem.h"
//##ModelId=454DF234029A
Boolean InformationItem::Create()
{
// TODO: Add your specialized code here.
// NOTE: Requires a correct return value to compile.
}
//##ModelId=454DF24203BD
Boolean InformationItem::SetInfo(Integer ID)
{
// TODO: Add your specialized code here.
// NOTE: Requires a correct return value to compile.
}
//##ModelId=454DF25101C0
String InformationItem::GetInfo()
{
// TODO: Add your specialized code here.
// NOTE: Requires a correct return value to compile.
}
A.8 Листинг файла InputInformation.cpp
// Copyright (C) 1991 - 1999 Rational Software Corporation
#if defined (_MSC_VER) && (_MSC_VER >= 1000)
#pragma once
#endif
#ifndef _INC_INFORMATIONITEM_454DF0B10348_INCLUDED
#define _INC_INFORMATIONITEM_454DF0B10348_INCLUDED
//##ModelId=454DF0B10348
class InformationItem
{
public:
//##ModelId=454DF234029A
Boolean Create();
//##ModelId=454DF24203BD
Boolean SetInfo(Integer ID = 0);
//##ModelId=454DF25101C0
String GetInfo();
private:
//##ModelId=4DD93BE9033C
Integer InformationID;
};
#endif /* _INC_INFORMATIONITEM_454DF0B10348_INCLUDED */
A.9 Листинг файла InputInformation.h
// Copyright (C) 1991 - 1999 Rational Software Corporation
#if defined (_MSC_VER) && (_MSC_VER >= 1000)
#pragma once
#endif
#ifndef _INC_INPUTINFORMATION_453CF3E40275_INCLUDED
#define _INC_INPUTINFORMATION_453CF3E40275_INCLUDED
class InformationItem;
//Добавление данных о студенте
//##ModelId=453CF3E40275
class InputInformation
{
public:
//##ModelId=454DF92B028A
InformationItem* theZapisItem;
//##ModelId=453CF4630336
Boolean CreateEmptyRecord();
//##ModelId=453CF47D010D
Boolean StudentInfo();
//##ModelId=453CF48801B3
EnterInformation(Integer zapis_namber, String Student_Name, String Student_Sername, String Student_Lastname, Integer Group, String Fakultet, int Kurs, int marks, String subject, Data Data);
private:
//номер записи
//##ModelId=454DF14702F4
Integer zapis_namber;
//Фамилия студента
//##ModelId=454DF15F017C
String Student_Name;
//Отчество студента
//##ModelId=454DF19B01AA
String Student_Sername;
//Группа
//##ModelId=454DF1DB021A
String Student_Lastname;
//##ModelId=4DEB4A400242
Integer Group;
//Факультет
//##ModelId=454DF1F40252
String Fakultet;
//Курс
//##ModelId=454DF20A0236
int Kurs;
//##ModelId=4DD93AA2032C
int marks;
//##ModelId=4DE2566E0177
String subject;
//##ModelId=4DE25A000261
Data Data;
};
#endif /* _INC_INPUTINFORMATION_453CF3E40275_INCLUDED */
A.11 Листинг файла TransactionManager.cpp
// Copyright (C) 1991 - 1999 Rational Software Corporation
#include "stdafx.h"
#include "InputInformation.h"
#include "InformationItem.h"
#include "TransactionManager.h"
//##ModelId=453CF47300C2
Integer TransactionManager::SaveChange()
{
// TODO: Add your specialized code here.
// NOTE: Requires a correct return value to compile.
}
//##ModelId=453CF4990348
Boolean TransactionManager::SaveIntoDB(Integer Zapis_ID)
{
// TODO: Add your specialized code here.
// NOTE: Requires a correct return value to compile.
}
A.12 Листинг файла TransactionManager.h
// Copyright (C) 1991 - 1999 Rational Software Corporation
#if defined (_MSC_VER) && (_MSC_VER >= 1000)
#pragma once
#endif
#ifndef _INC_TRANSACTIONMANAGER_453CF3F901E9_INCLUDED
#define _INC_TRANSACTIONMANAGER_453CF3F901E9_INCLUDED
class InputInformation;
class InformationItem;
//Система управления транзакциями
//##ModelId=453CF3F901E9
class TransactionManager
{
public:
//##ModelId=454DF91B0219
InputInformation* theZapis;
//##ModelId=454DF923036F
InformationItem* theInformationItem;
//##ModelId=453CF47300C2
Integer SaveChange();
//##ModelId=453CF4990348
Boolean SaveIntoDB(Integer Zapis_ID);
};
#endif /* _INC_TRANSACTIONMANAGER_453CF3F901E9_INCLUDED */
Размещено на Allbest.ru