Методические указания к лабораторным работам по дисциплине “Системы автоматизации проектирования программного обеспечения”

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

к лабораторным работам

  по дисциплине

“Системы автоматизации проектирования программного обеспечения”


Содержание



	Введение	3

	1 Использование CASE-технологии в разработоке программного обеспечения	4

	1.1 Унифицированный Язык Моделирования	4

	1.2 CASE-средство Rational Rose 2003	6

	Лабораторная работа № 1	8

	Тема: «Исследование структуры и характеристик типовой автоматизированной системы»	8

	Лабораторная работа № 2	24

	Тема: «Построение концептуальной модели предметной области. Разработка диаграммы вариантов использования в среде Rational Rose»	24

	Лабораторная работа № 3	41

	Тема: «Построение моделей поведения проектируемого ПО. Построение диаграммы состояний в среде Rational Rose»	41

	Лабораторная работа № 4	51

	Тема: «Построение диаграммы классов этапа проектирования в среде Rational Rose»	51

	Лабораторная работа № 5	67

	Тема: «Генерация кода проектируемого программного обеспечения»	67

	Лабораторная работа № 6	82

	Тема: «Отладка и тестирование проектируемого программного обеспечения»	82

	Лабораторная работа № 7	90

	Тема: «Исследование характеристик разработанной автоматизированной системы»	90

	Список использованных источников	91

	Приложение А. Техническое задание	92

	Приложение Б. Варианты заданий	93






Введение



В современных информационных технологиях важное место отводится инструментальным средствам и средам разработки автоматизированных информационных систем и, в частности, системам разработки и сопровождения их программного обеспечения. Эти технологии и среды образуют системы, называемые CASE-системами.

Изначально разрабатываемые как инструмент для создания программного обеспечения, в настоящее время CASE-технологии являются целым направлением по системному анализу и проектированию. CASE-технологии представляют собой инструментарий для аналитиков и разработчиков, позволяющими минимизировать затраты на создание моделей будущей (или существующей) системы и на основе этой модели заранее найти возможные ошибки.

Объемы информации, высокие требования к точности и достоверности, необходимость эффективного анализа - вот основные причины, предопределяющие использование новых информационных технологий, что становится принципиальным условием для достижения успешного результата.

В предлагаемом материале рассмотрен пример разработки типовой автоматизированной информационной системы на основе CASE-средства Rational Rose 2003.

	
1 Использование CASE-технологии в разработоке программного обеспечения



В индустрии разработок программного обеспечения существует понятие CASE-технологии (Computer-Aided Software/System Engineering). CASE-технология представляет собой методологию проектирования ИС, а также набор инструментальных средств, позволяющих в наглядной форме моделировать предметную область, анализировать эту модель на всех этапах разработки и сопровождения ИС и разрабатывать приложения в соответствии с информационными потребностями пользователей. Большинство существующих CASE-средств основано на методологиях структурного (в основном) или объектно-ориентированного анализа и проектирования, использующих спецификации в виде диаграмм или текстов для описания внешних требований, связей между моделями системы, динамики поведения системы и архитектуры программных средств. Первоначальное значение термина CASE, ограниченное вопросами автоматизации разработки только лишь программного обеспечения (ПО), в настоящее время приобрело новый смысл, охватывающий процесс разработки сложных ИС в целом. Теперь под термином CASE-средства понимаются программные средства, поддерживающие процессы создания и сопровождения ИС, включая анализ и формулировку требований, проектирование прикладного ПО (приложений) и баз данных, генерацию кода, тестирование, документирование, обеспечение качества, конфигурационное управление и управление проектом, а также другие процессы. CASE-средства вместе с системным ПО и техническими средствами образуют полную среду разработки ИС. 

Главными преимуществами CASE-технологии по сравнению с другими способами моделирования являются:

	-	создание модели системы в приемлемые сроки;

	-	сокращение затрат связанных с процессом проектирования;

	-	возможность анализа полученных данных до начала процесса непосредственного создания системы (тем самым появляется возможность «предотвращения» глобальных ошибок);

	-	возможность применения «готовых» разработок в соответствии со своими требованиями (стандартные программные продукты и инструменты, относящиеся к группе CASE-средств).



1.1 Унифицированный Язык Моделирования

UML – это язык визуализации, специфицирования, проектирования (конструирования) и документирования.

UML – это стандартная нотация визуального моделирования программных систем, принятая консорциумом Object Managing Group (OMG) осенью 1997г., и на сегодняшний день она поддерживается многими объектно-ориентированным CASE продуктами, включая Rational Rose.

Для понимания UML необходимо усвоить основные принципы, положенные в структуру этого языка. Этих принципов всего три, а сам язык как бы состоит из трех частей: основные конструкции языка, правила их взаимодействия и некоторые общие для всего языка механизмы. Освоив эти идеи, вы сумеете читать модели на UML и самостоятельно их разрабатывать, естественно, вначале не очень сложные. По мере приобретения навыков работы с языком вы научитесь использовать и более развитыми его возможностями.

Язык UML предназначен, прежде всего, для разработки программных систем. Его использование особенно эффективно в следующих областях:

- информационные системы масштаба предприятия;

- банковские и финансовые услуги;

- телекоммуникации;

- транспорт;

- оборонная промышленность, авиация, космонавтика;

- торговые системы;

- медицинская электроника;

- наука;

- распределенные Web-системы.

Сфера применения UML не ограничивается моделированием программного обеспечения. Его выразительность позволяет моделировать, например, документооборот в юридических системах, структуру и функционирование системы обслуживания пациентов в больницах, осуществлять проектирование аппаратных средств.

Существует несколько CASE-средств, поддерживающих язык UML. Наиболее известным являются PLATINUM Paradigm Plus фирмы PLATINUM technology и выпущенный фирмой Rational Software программный пакет Rational Rose. Эти инструменты позволяют генерировать код приложения, в полной мере отвечающий бизнес-правилам, и с наименьшим риском.

Снижение риска в объектной технологии достигается за счет реализации технологии итерационной разработки (так называемая спиральная модель жизненного цикла разработки). Разработка состоит из ряда итераций, которые в дальнейшем приводят к созданию ИС. Каждая итерация может приводить к созданию фрагмента или новой версии и включает этапы выработки требований, анализа, проектирования, реализации и тестирования. Поскольку тестирование проводится на каждой итерации, риск снижается уже на начальных этапах жизненного цикла разработки.

Модель представляет собой совокупность диаграмм, описывающих различные аспекты структуры и поведения ИС. В дальнейшем в качестве примера будет описана объектная модель, построенная в Rational Rose 2003.


1.2 CASE-средство Rational Rose 2003



Весь лабораторный практикум по данной дисциплине построен на изучении Case-средства Rational Rose 2003. 

Rational Rose — Case-средство предназначенное для анализа и проектирования объектно-ориентированных программных систем.

Выбор Case-средства визуального объектно-ориентированного проектирования информационных систем Rational Rose 200x Enterprise Edition , определялся рядом возможностей данного Case-средства: 



	имеет удобный для пользователя графический интерфейс;

	многоплатформенность;

	проектирование систем любой сложности;

	предоставления развернутого представления о проекте в сочетании со средствами документирования (SoDA);

	проводить обратное проектирование имеющихся систем;

	интеграция с MS Visual Studio 6, что включает в себя поддержку на уровне прямой и обратной генерации кодов и диаграмм VB 6, Visual C++ 6, Visual J++ 6 (ATL-Microsoft Active Template Library, Web-Classes, DHTML, Data Connections);

	непосредственная работа (инжиниринг и реинжиниринг) с исполняемыми модулями и библиотеками форматов EXE, DLL, TLB, OCX;

	поддержка технологий MTS (Microsoft Transaction Server) и ADO (ActiveX Data Objects) на уровне шаблонов и исходного кода, а также элементов стратегической технологии Microsoft — СОМ+ (DCOM);

	полная поддержка CORBA 2.2, включая реализацию технологии компонентной разработки приложений CBD (Component-Based Development), языка определения интерфейса IDL (Interface Definition Language) и языка определения данных DDL (Data Definition Language);

	полная поддержка среды разработки Java-приложений JDK 1.2, включая прямую и обратную генерацию классов Java формата JAR, а также работу с файлами форматов CAB и ZIP;

	поддержка языка UML.

	

В распоряжение проектировщика системы Rational Rose предоставляет следующие типы диаграмм, последовательное создание которых позволяет получить полное представление обо всей проектируемой системе и об отдельных ее компонентах:



- диаграммы вариантов использования;

- диаграммы классов;

- диаграммы поведения системы;

- диаграммы взаимодействия;

- диаграммы последовательности;

- кооперативные диаграммы;

- диаграммы состояний;

- диаграммы деятельностей;

- диаграммы реализацией;

- диаграммы компонентов;

- диаграммы размещения.

	

Rational Rose допускает как высокоуровневое (абстрактное) представление (например, схема автоматизации предприятия), так и низкоуровневое проектирование (интерфейс программы, схема базы данных, частичное описание классов). Весь этап проектирования и создания программного продукта основан на построении соответствующих диаграмм, которые в зависимости от ситуации способны описывать различные действия. 


Лабораторная работа № 1

Тема: «Исследование структуры и характеристик типовой автоматизированной системы»



Цель работы:



1) ознакомиться с программным средством, предназначенным для решения комбинаторно-оптимизационных задач на графах;

2) исследовать структуру и характеристики программного средства.



	1 Задание на самоподготовку



	-	вспомнить изученный материал по дисциплине «Технология разработки программного обеспечения»;

	-	знать методику построения функциональной схемы, укрупненной схемы алгоритма работы программного средства.


Техническое задание



1 Введение



При проектировании сложных систем, таких как микропроцессорная автоматизированная системы или её узлы, возникает ряд комбинаторно-оптимизационных задач структурного синтеза, на всех этапах, начиная с эскизного проектирования и заканчивая разработкой конструкторской документации. К таким задачам относятся, например, схемная компоновка, размещение компонентов в монтажном пространстве, коммутации соединений и т. д. Автоматизация указанных процессов является актуальной проблемой. Поэтому целью настоящего курсового проекта является автоматизация решения комбинаторно-оптимизационных задач.

Для достижения указанных задач необходимо решить ряд инженерных задач, а именно:



	-	анализ области применения комбинаторно-оптимизационных задач;

	-	математические методы выбранных задач;

	-	разработка архитектуры ПС;

	-	выбор метода проектирования, программных средств реализации ПС;

	-	разработка структуры данных для хранения информации;

	-	разработка алгоритмов решения задач;

	-	тестирование ПС;

	-	разработка руководства программиста;

	-	зработка руководства пользователя;

	-	енка экономической эффективности внедрения ПС;

	-	зопасность труда пользователя.



Решение данных задач возможно на основании методов дискретной математики, программирования на языках высокого уровня, теории баз данных, статистических методов и моделей.



2 Основание для разработки



Система разрабатывается на основании учебного плана подготовки специалистов 230105.65 - ПОВТАС и рабочей программе по дисциплине специализации «Системы автоматизации проектирования программного обеспечения» 



3 Назначение



Целью данной разработки является создание программного средства, позволяющего автоматизировать работу по решению комбинаторно-оптимизационных задач коммутации.

Первая версия системы предназначена для решения небольшого круга комбинаторно-оптимизационных задач на графах (поиск кратчайшего пути, минимального покрывающего дерева и покрывающего цикла минимальной длины). В следующих версиях предполагается увеличение количества решаемых задач.

Пользователями могут выступать научные работники и инженеры, занимающиеся проектированием компьютерной техники, и студенты соответствующих специальностей. Пользователями могут также быть и специалисты других предметных областей, которым приходится решать подобные задачи.



4 Требования к программе или программному изделию



4.1Требования к функциональным характеристикам



Система должна представлять совокупность методических и программных средств решения следующих задач:

- задачи построения минимального покрывающего дерева;

- поиск покрывающего цикла минимальной длины (задача коммивояжера);

- задачи поиска кратчайшего пути.

Для этих задач должны быть реализованы:

- алгоритмы, обеспечивающие получение точного решения;

- в том случае, если точное решение получается алгоритмом, имеющим неполиномиальную вычислительную сложность, то необходимо дополнительно разработать алгоритм, обеспечивающий получение приближенных решений с полиномиальной вычислительной сложностью. 

Методическое обеспечение должно быть реализовано в пользовательском интерфейсе системы, который должен предполагать выбор задачи, метода и алгоритме ее решения; ввод данных; решение проектной задачи и сохранение исходных данных, промежуточных и окончательных результатов во встроенной базе данных для последующего анализа.



4.2 Требования к надежности



Предусмотреть контроль вводимой информации и блокировку некорректных действий пользователя при работе с системой.

Обеспечить корректное завершение вычислений с соответствующей диагностикой при превышении имеющихся вычислительных ресурсов.

Обеспечить целостность информации, хранящейся в базе данных.



4.3 Требования к составу и параметрам технических средств



Система должна работать на IBM совместимых персональных компьютерах.

Минимальная конфигурация:

	Тип процессора…………………………………………Pentium-100;

	Объем оперативного запоминающего устройства ………16 Мб;

	Тип монитора…………………………………..…………SVGA (15').



4.4 Требования к информационной и программной совместимости



Система должна работать под управлением операционной системы Windows'95 и выше.



5 Требования к программной документации



Разрабатываемая система должна включать справочную информацию о работе системы и подсказки пользователю.

В состав сопровождающей документации должны входить:

- пояснительная записка;

- руководство пользователя.


6 Этапы разработки



№

Название этапа

Сроки

Точность

1

Разработка ядра системы

01.12.2006-31.12.2006

Описание внутренних форматов, интерфейса и форматов данных базы. Реализация системы на уровне интерфейса

2

Разработка методов и алгоритмов и их реализация для задачи коммивояжера

01.01.2007-11.01.2007

Описание методов и алгоритмов. Программные модули, реализующие методы

3



Разработка методов и алгоритмов и их реализация для задачи построения минимального связывающего дерева и задачи поиска кратчайшего пути в графе



12.01.2007-31.01.2007



Описание методов и алгоритмов. Программные модули, реализующие методы.



4

Тестирование программного продукта и составление программной документации

01.02.2007-23.02.2007

Тесты. Документация. Программный продукт




2 Выбор метода проектирования, программных средств реализации ПС



Программное средство разработано для локальной работы на одном компьютере.

Для создания базы данных была использована СУБД PARADOX, достаточную для ведения простой БД, состоящей из шести таблиц. 

Для разработки приложения была выбрана система разработки приложений Delphi 6, предназначенная для быстрой разработки приложений самого разного характера и назначения. В данной версии системы, как и в более ранних ее версиях используется язык программирования высокого уровня Object Pascal. Одним из ключевых функций системы Delphi 6 является возможность разработки приложений для работы с базами данных как локальными, так и удаленными. Поэтому данная среда широко используется для программирования пользовательских приложений. Связующим звеном между приложением и базой данных является компонент TDataSet, причем данный компонент может работать с базой данных практически любого типа. Приложения баз данных строятся на основе компонентов доступа к базам данных и так называемых компонентов управления базами данных. При этом поддерживаются форматы dBase, Paradox, ASCII, FoxPro, Access. Посредством окружения Delphi, предназначенного для работы с базами данных можно создавать, индексировать, читать базы данных (DataBase Desktop). Кроме того, Delphi представляет широкие возможности по графическому представлению данных, что существенно облегчает работу пользователей по анализу полученных результатов.


3 Архитектура программного средства



Программное средство решения комбинаторно-оптимизационных задач предусматривает выполнение следующих функций рассматриваемой предметной области:

Просмотр и загрузка данных из БД. 

Ввод новых данных и сохранение записей в таблицах БД.

Построение минимального покрывающего дерева.

Поиск цикла минимальной длины (задача коммивояжера).

Поиск кратчайшего пути.

Формирование отчета. 



Функциональную схему разработать самостоятельно и представить на рисунке преподавателю.



Программное средство “ПС_РКОЗ” включает в себя следующие программные модули, организующие работу по автоматизации решения комбинаторно-опитимизационных задач:

1. Glav.pas – выводит главное меню программы. В случае работы пользователя со справкой передает управление модулю sprav.pas; если пользователь выбрал пункт открытие БД, то управление передается модулю open_bd.pas, представляющим собой модуль загрузки и редактирования данных. 

После загрузки данных графа (или его изображение с помощью примитивов) становятся доступны пункты меню: если активизирован пункт минимальный путь, то управление передается модулю minimum_way.pas, являющимся модулем задания начальной и конечной вершин и вычисления кратчайшего пути; если активизирован пункт цикл минимальной длины, то управление передается модулю minimum_cycle.pas, являющимся модулем вычисления цикла минимальной длины; если активизирован пункт кратчайшее остовное дерево, то управление передается модулю minimum_frame.pas, являющимся модулем нахождения кратчайшего остовного дерева. В случае выбора пункта сохранить, управление передается модулю save_in_bd.pas, реализующим соответственно функции сохранения данных о графе в базе данных. Если необходимо получить сведения о программе или помощь, управление передается модулям sprav.pas и spravka.pas. 

2. sprav.pas – справочная информация по программе.

3. spravka.pas – о программе (версия, разработчик).

4. open_bd.pas – модуль открытия и/или загрузки и редактирования имеющихся записей в БД.

5. save_in_bd.pas – модуль сохранения и редактирования имеющихся записей в БД.

6. Ves_way.pas – модуль ввода веса ребра во время рисования графа.

7. minimum_way.pas – модуль задания начальной и конечной вершин графа и выбора алгоритма для вычисления кратчайшего пути.

8. minimum_frame.pas – модуль выбора алгоритма и вычисления кратчайшего остовного дерева.

9. minimum_cycle.pas – модуль выбора алгоритма и вычисления цикла минимальной длины.

10. print.pas – модуль формирования отчета и вывода его на печать. 



Диаграмма модулей ПС представлена на рисунке Приложения А.



На основании функциональной схему и диаграммы модулей разработать укрупненную схему алгоритма ПС. 



4 Разработка структуры данных для хранения информации



Для проектирования базы данных необходимо построить модель «объект-отношение», то есть для данных в создаваемой базе данных необходимо построить связи, характеризующие их отношения. Данная модель не зависит от использования СУБД. В создаваемой базе данных имеются таблицы: «glav_tabl», «x_wer», «y_wer», «line_begin», «line_end», «line_ves». 

В виду простых требований к данной БД таблицы «x_wer», «y_wer», «line_begin», «line_end», «line_ves» связаны с таблицей «glav_tabl»

 отношением 1:1.



4 Даталогическая модель базы данных



Для дальнейшего проектирования базы данных необходимо построить даталогическую модель базы. Основной задачей даталогического моделирования является получение структуры данных, описанной на языке математической модели, ориентированной на выбранную СУБД.  

Дататалогическая модель представляет собой схему проектируемой базы данных, в которой представлены все связи между объектами базы данных, описанные в модели «объект-отношение». Объекты представлены в виде таблиц, имеющих названия, значимые поля свойств, характеризующие хранимые в таблицах данные и уникальные первичные и внешние ключи, на основе взаимосвязи между которыми осуществляется реализация связей между таблицами базы данных и целостность базы данных.

Даталогическая модель формируется на основе ER-диаграммы и представляет собой заключительный этап создания структуры базы данных перед переходом от процесса проектирования к созданию физической модели с детальным описанием всех таблиц, непосредственно составляющих базу данных. 

Схема логической модели представлена на рисунке 1.




LINE_END



 ID (ПК)

 E_1

 E_2

.

.

.



 E_100





X_WER



   ID (ПК)

   X1

.

.

.



   X30



Y_WER



   ID (ПК)

   Y1

.

.

.



   Y30



GLAV_TABL



   ID (ПК)

   Name

   N_wer

   N_arc





   

LINE_BEGIN



   ID (ПК)

   B_1

B_2

.

.

.



B_100





LINE_VES



 ID (ПК)

 1

 2

.

.

.



 100







Рисунок 1 – Логическая схема базы данных


Приложение А









Glav

spravka

sprav

Open_bd

Minimum_way

Minimum_frame

Minimum_cycle

Ves_way

save_in_bd

print







Рисунок 2 – Иерархия модулей ПС














Приложение Б

Руководство пользователя





После запуска программы на выполнение на экране монитора отображается главное окно программы, на которой пользователь имеет возможность выбора одного из четырех пунктов: «Открыть», «Рисовать», «Помощь» и «Выход» (рисунок 5).

Рисунок 5 – Главное окно ПС

При выборе пункта «Открыть» появляется возможность выбора или удаления данных, хранящихся в базе данных (рисунок 6). 



Рисунок 6 – Выбор/удаление задачи



При активации кнопки «Рисовать» появляется возможность нарисовать с помощью графических примитивов: окружности (вершина)  и линии (дуга с весом) граф (рисунок 7).



Рисунок 7 – Рисование графа с помощью примитивов



После выбора задачи из БД или рисования графа открывается доступ к остальному меню:  «Min_way»(поиск кратчайшего пути рисунок 8) , «Min_cycle» (цикл минимальной длины рисунок 9), «Min_frame» (кратчайшее остовное дерево рисунок 10), «Save» (сохранение графа в БД рисунок 3.7).





Рисунок 8 – Поиск кратчайшего пути





Рисунок 9 – Поиск цикла минимальной длины





Рисунок 10 – Поиск кратчайшего остовного дерева





Рисунок 11 – Сохранение/удаление графа в БД

На вкладе «матричное представление» можно просмотреть табличное представление связей в графе (рисунок 12).







Рисунок 12 – Матричное представление графа



На рисунке 13 представлены результаты применение выбранных алгоритмов, просмотр которых возможен после выбора закладки «Результаты».





Рисунок 13 – Результаты оптимизации



В пункте меню «Справка» имеется возможность обращения к справочной информации, на рисунке 14 показана форма вывода справочной информации.







Рисунок 14 – Справочная информация ПС



При выборе пункта «Выход» главного окна, ПС завершает свою работу.

	




Лабораторная работа № 2

Тема: «Построение концептуальной модели предметной области. Разработка диаграммы вариантов использования в среде Rational Rose»



Цель работы:



Освоить методику построения диаграмм вариантов использования;

Познакомиться с Case-средством Rational Rose и получить навыки работы в данной среде;

Разработать диаграмму вариантов использования согласно заданию.



	1 Задание на самоподготовку



- изучить лекционный материал по данной теме;

- знать методику построения диаграмм вариантов использования.



	2 Краткие теоретические сведения



Концептуальную модель предметной области можно представить в виде ER-диаграммы, т.е. отношения “сущность-связь”.Для этого необходимо разработать модель данных.

Моделирование данных является важнейшим процессом при проектировании программного обеспечения (ПО). По этой причине, разработчики CASE-средств в своих продуктах вынуждены уделять моделированию данных повышенное внимание. Являясь признанным лидером в области объектных методологий, фирма Rational Software Corporation, тем не менее, до недавнего времени такого средства не имела. Основной причиной этого, по-видимому, является ориентация на язык Unified Modeling Language (UML), как универсальный инструмент моделирования. UML полностью покрывает потребности моделирования данных. Сложившаяся на протяжении десятилетий технология моделирования данных, традиции, система понятий и колоссальный опыт разработчиков не могли далее игнорироваться. Немаловажную роль здесь сыграла и необходимость формального контроля моделей данных, что является абсолютно необходимым при проектировании мало-мальски больших схем баз данных и что UML не обеспечивает в достаточной степени. И, наконец, последней причиной, побудившей специалистов Rational Software Corporation к созданию собственного средства моделирования данных, является требование построения эффективных физических моделей, прежде всего для конкретных СУБД - лидеров рынка.

В начале 2000 года фирма Rational Software Corpоration анонсировала появление собственного средства моделирования данных – Data Modeler, и в настоящее время оно доступно специалистам, например, использующим в своей работе Rational Rose 2000.

Целью данной лабораторной работы является знакомство с основными возможностями этого нового средства.

Авторы Data Modeler, прежде всего, ориентировались на создание инструмента проектирования физической модели данных. При этом не произошло отказа от UML как от средства моделирования данных, а некоторым образом были смещены акценты: теперь UML предполагается использовать для построения логической модели. По сути, логическая модель - это та же объектная модель, состоящая из объектов - сущностей. Переход от логической модели к физической и, наоборот, в части моделирования данных обеспечивается Rational Rose автоматически. Для этого введено соответствие элементов моделей (табл. 1).



Таблица 1. Соответствие элементов логической и физической модели

Логическая модель

Физическая модель

Class (Класс)

Table (Таблица)

Operation (Операция)

Constraint (Ограничение)

Attribute (Атрибут)

Column (Колонка)

Package (Пакет)

Scheme (Схема)

Component (Компонент)

Database (База данных)

Association (Ассоциация)

Relationship (Связь)

Нет

Trigger (Тригер)

Нет

Index (Индекс)



2.1 Rose Data Modeler



 После установки Rational Rose в специальной редакции (Rational Rose Professional Data Modeler Edition) в разделе главного меню Tools появляется новый раздел Data Modeler (рис. 1).

В разделе Data Modeler имеются два пункта: “Add Schema” и “Reverse Engeneer…”. Пункт “Add Schema” используется для создания новых схем БД, а пункт “Reverse Engeneer” - для построения модели на основе существующей схемы БД.





Рисунок 2.1- Отображение компоненты Data Modeler в меню Rational Rose



2.1.1 Создание диаграммы модели данных



После создания схемы (рис.2.1) в ней можно сформировать диаграмму модели данных. Эта диаграмма позволит добавить, изменить или просмотреть таблицы и другие элементы модели данных, поскольку играет ту же роль, что и диаграмма классов в объектной модели. Хотя можно добавлять элементы моделирования данных непосредственно в браузере, диаграмма модели данных позволяет показать в графическом виде, как сами элементы, так и отношения между ними. Для любой схемы можно создать любое необходимое число Создание диаграммы модели данных осуществляется следующим образом:

1. В браузере щелкните правой кнопкой мыши на схеме.

2. Выберите Data Modeler > New > Data Model Diagram.

3. Введите имя новой диаграммы.

4. Дважды щелкните на диаграмме для ее открытия.

Как и другие диаграммы в среде Rose, диаграмма модели данных имеет специализированную панель инструментов для добавления таблиц, отношений и других элементов моделирования. Кнопки этой панели перечислены в таблице 2.2.

















Таблица 2.2 – Значки панели инструментов для диаграммы модели данных

Значки

Назначение



Курсор принимает форму стрелки для выделения элемента



Добавляет в диаграмму текстовое поле



Добавляет к элементу диаграммы примечание



Соединяет примечание с элементом диаграммы



Добавляет в диаграмму таблицу



Рисует неидентифицируемое отношение между двумя таблицами



Рисует идентифицируемое отношение между двумя таблицами



Добавляет в диаграмму представление



Рисует зависимость между двумя таблицами



Диаграмма Data Model предоставляет следующие возможности:



	-	создание и редактирование таблиц и их элементов (колонок, ограничений, индексов, триггеров и т. п.);

	-	создание и редактирование идентифицирующих связей между таблицами; 

	-	создание и редактирование неидентифицирующих связей.

	

Основные возможности по работе с таблицей доступны, если войти в контекстном меню в пункт “Open Specification”. Появляющееся на экране окно включает следующую информацию (рис. 2.2).





Рисунок 2.2 - Окно спецификации таблицы



При редактировании спецификации таблицы обеспечиваются следующие возможности (табл. 2.3).



Таблица 2.3 - Спецификация таблицы БД

Закладка

Описание

General

Вводится общая информация о таблице.

Columns

Задается описание колонок. Здесь можно добавить или отредактировать свойства колонок, задать тип, длину, обязательность (NULL, NOT NULL), а также пометить, что колонка входит в состав первичного ключа. Типы колонок соответствуют типам конкретной выбранной СУБД.

Key Constraints

Задаются ограничения на колонки таблицы. Здесь можно задать ограничение на уникальность первичного ключа, ограничение на уникальность альтернативных ключей, а также просто определить индекс.

Check Constraints

Задаются выражения – инварианты, которые должны выполнятся для всех строк таблицы.

Triggers

Содержит список триггеров, который можно отредактировать, в том числе добавив новый триггер.

Relationships

При наличии связей между таблицами, закладка содержит полный список связей.



2.1.1.1 Добавление отношений



Отношения в модели данных подобны отношениям в объектной модели. В объектной модели отношение связывает два класса, а в модели данных — две таблицы. В Rose поддерживаются два основных типа отношений: идентифицируемые отношения (identifying relationship) и неидентифицируемые отношения (non-identifying relationship).

В обоих случаях для поддержки отношений в дочернюю таблицу добавляется внешний ключ. При идентифицируемом отношении внешний ключ становится частью первичного ключа в дочерней таблице. В этом случае дочерняя таблица не может содержать запись, не связанную с записью в родительской таблице. Идентифицируемые отношения моделируются составными агрегациями. 

Неидентифицируемые отношения тоже создают внешний ключ в дочерней таблице, но он не становится частью первичного ключа в дочерней таблице. При неидентифицируемом отношении мощность (множественность) определяет то, будет ли запись в дочерней таблице существовать без связи с записью в родительской таблице. Если мощность равна 1, должна присутствовать родительская запись. Если мощность равна 0..1, присутствие родительской записи необязательно. Неидентифицируемые отношения моделируются ассоциациями.

Для редактирования свойств связи требуется войти в пункт контекстного меню “Open specification”.





Рисунок 2.3 - Окно спецификации связи



При редактировании спецификации связи обеспечиваются следующие возможности (табл. 2.4).









Таблица 2.4 - Спецификация связи

Закладка

Описание

General

Основные свойства связи. Здесь задаются:

имя связи; 

тип связи; 

наименования ролей (Parent, Child); 

кардинальность для каждой роли;

Migrated Key

Содержит список внешних ключей, образующихся в результате создания связи.

RI

Задание условий ссылочной целостности. Ссылочная целостность обеспечивается двумя способами:

на основе триггеров; 

на основе декларативной ссылочной целостности (с использованием ограничений внешних ключей). 

Оба способа реализуют наиболее популярные алгоритмы, задаваемые для каждой роли (только для операций update и delete, для insert мы не нашли): 



Restrict; 

Cascade; 

Set Null; 

Set Default.



2.2 Пример концептуальной модели предметной области



На рисунке 2.4 приведен фрагмент модели данных заданной предметной области. Данная модель разработана в среде Rational Rose 2003 с использованием утилиты Rose Data Modeler.



Описание предметной области.

Организация предоставляет услуги по трудоустройству. Организацией ведется банк данных о существующих вакансиях. По каждой вакансии поддерживается следующая информация:

- предприятие, предоставляющее соответствующую вакансию;

- название вакансии (должность);

- требования к соискателю: пол, возраст, образование, знание определенных видов деятельности (выбор из перечня - знание электронного документооборота, определенных прикладных программ и т.п.), коммуникабельность;

- обязанности (выбор из перечня – заключение договоров, распространение агитационного материала, работа с клиентами и т.п.);

- предполагаемая оплата, единицы измерения оплаты - рубли;

- оформление трудовой книжки (да, нет);

- наличие социального пакета (да, нет);

- срок начала открытия вакансии;

- срок закрытия вакансии (вакансия занята).













Рисунок 2.4 – Модель данных предметной области



2.3 Разработка диаграммы вариантов использования



Диаграмма вариантов использования отображает взаимодействие между вариантами использования, представляющими функции системы, и действующими лицами, представляющими людей или системы, получающие или передающие информацию в данную систему.

Данный тип диаграмм предназначен для создания списка операций, которые выполняет система, поэтому его иногда называют диаграммой функций. Любая система обладает своим множеством вариантов использования и множеством действующих лиц. Каждый вариант использования описывает элемент представляемой системой функциональности. Множество вариантов использования описывает всю функциональность системы на некотором уровне абстракции. Абстракция (abstraction) – сосредоточение на важнейших аспектах приложения и игнорирование всех остальных. Использование абстракции позволяет сохранить свободу принятия решений как можно дольше благодаря тому, что детали не фиксируются раньше времени. Каждое действующее лицо представляет собой один вид объектов, для которых система может выполнять некоторое поведение.

Язык UML предусматривает систему графических обозначений для вариантов использования (рис. 2.5).





Рисунок 2.5 – Графические обозначения диаграммы вариантов использования



Действующее лицо (actor) – это непосредственный внешний пользователь системы. Это объект или множество объектов, непосредственно взаимодействующих с системой. Каждое действующее лицо является обобщением группы объектов, ведущих себя определенным образом по отношению к системе. Действующими лицами могут быть люди, устройства и другие системы – все, что взаимодействует с интересующей нас системой непосредственно.

Действующее лицо должно иметь одну четко определенную цель. Моделирование действующих лиц помогает определить границы системы, то есть идентифицировать объекты, находящиеся внутри системы, и объекты, лежащие на ее границе.

Различные взаимодействия действующих лиц с системой группируются в варианты использования. Вариант использования (use case) – это связный элемент функциональности, представляемый системой при взаимодействии с действующими лицами (рис. 2.6) .



Рисунок 2.6 – Вариант использования



В каждом варианте использования участвуют одно или несколько действующих лиц и система.

Вариант использования объединяет все поведение, имеющее отношение к элементу функциональности системы: нормальное поведение, вариации нормального поведения,  исключительные ситуации, сбойные ситуации и отмены запросов.

Любой вариант использования должен иметь краткое описание, объясняющее действия в этом варианте. Описание должно быть кратким, но в него необходимо включить сведения о разных типах пользователей, выполняющих данный вариант использования, и ожидаемый результат. Во время работы (особенно если проект сложный) эти описания будут напоминать членам команды, почему тот или иной вариант использования был включен в проект и что он должен делать. Четко документируя, таким образом, цели каждого варианта использования, можно уменьшить неразбериху, возникающую среди разработчиков.

На рисунке 2.7 приведен пример документирования варианта использования.





Рисунок 2.7 – Окно документирования варианта использования



Между компонентами диаграммы вариантов использования могут существовать различные отношения, которые описывают взаимодействие экземпляров одних актеров и вариантов использования с экземплярами других актеров и вариантов. Один актер может взаимодействовать с несколькими вариантами использования. В этом случае этот актер обращается к нескольким сервисам данной системы. В свою очередь один вариант использования может взаимодействовать с несколькими актерами, предоставляя для всех них свой сервис. Следует заметить, что два варианта использования, определенные для одной и той же сущности, не могут взаимодействовать друг с другом, поскольку каждый из них самостоятельно описывает законченный вариант использования этой сущности. Более того, варианты использования всегда предусматривают некоторые сигналы или сообщения, когда взаимодействуют с актерами за пределами системы. В то же время могут быть определены другие способы для взаимодействия с элементами внутри системы. 

В языке UML имеется несколько стандартных видов отношений между действующими лицами и вариантами использования: 



- отношение ассоциации; 

- отношение зависимости; 

- отношение обобщения.



Ассоциация – структурное отношение, описывающее совокупность связей, представленных соединениями между объектами модели. Выделяют разновидность ассоциации, агрегирование, предусмотренное для выражения отношений между целым и его частями.





Рисунок 2.8 – Пример реализации отношения ассоциации



Применительно к диаграммам вариантов использования оно служит для обозначения специфической роли актера в отдельном варианте использования. Другими словами, ассоциация специфицирует семантические особенности взаимодействия актеров и вариантов использования в графической модели системы. Таким образом, это отношение устанавливает, какую конкретную роль играет актер при взаимодействии с экземпляром варианта использования. На диаграмме вариантов использования, так же как и на других диаграммах, отношение ассоциации обозначается сплошной линией между актером и вариантом использования. Эта линия может иметь дополнительные условные обозначения, такие, например, как имя и кратность

Кратность (multiplicity) ассоциации указывается рядом с обозначением компонента диаграммы, который является участником данной ассоциации. Кратность характеризует общее количество конкретных экземпляров данного компонента, которые могут выступать в качестве элементов данной ассоциации. Применительно к диаграммам вариантов использования кратность имеет специальное обозначение в форме одной или нескольких цифр и, возможно, специального символа "*" (звездочка).

Зависимость – семантическое отношение между двумя сущностями, при которой изменение одной из сущностей, независимой, может повлиять на семантику второй сущности, зависимой.

Отношение зависимости определяет взаимосвязь экземпляров отдельного варианта использования с более общим вариантом, свойства которого определяются на основе способа совместного объединения данных экземпляров. В метамодели отношение зависимости является направленным и указывает, что применительно к отдельным примерам некоторого варианта использования должны быть выполнены конкретные условия, определенные для расширения данного варианта использования. 

Отношение зависимости между вариантами использования обозначается пунктирной линией со стрелкой, направленной от того варианта использования, который является расширением для исходного варианта использования.





Рисунок 2.8 - Пример графического изображения отношения зависимости (расширения) между вариантами использования



Обобщение – отношение, при котором объект специализированного  элемента может быть подставлен и использован вместо объекта обобщенного элемента. Следует подчеркнуть, что потомок наследует все свойства и поведение своего родителя, а также может быть дополнен новыми свойствами и особенностями поведения. Графически данное отношение обозначается сплошной линией со стрелкой в форме незакрашенного треугольника, которая указывает на родительский вариант использования (рис. 2.9).





Рисунок 2.9 - Пример графического изображения отношения обобщения между действующими лицами



2.4 Особенности разработки диаграмм вариантов использования в среде IBM Rational Rose 2003



Запустите Rational Rose, и создайте новую пустую модель. Для этого в окне Create New Model мастера создания моделей, открывающегося после первого запуска системы, включите флажок Don’t show this dialog in the future и нажмите кнопку Cancel. Эта команда закроет окно мастера, и не будет выводить его при следующих открытиях Rational Rose. В рабочем поле Rational Rose будет выведена пустое окно диаграммы классов. Это будет наша рабочая модель, в которой и должны быть отражены все нюансы будущей системы. Затем для того чтобы  открыть окно диаграммы Use Case необходимо сделать двойной щелчок по значку Main в папке User Case View в окне Browser. Если открыто окно хотя бы одной диаграммы, то в главном меню активизируется пункт Browse и диаграмму Use Case можно открыть командой Browse,Use Case Diagram. Отметим, что в панели инструментов Standard нет кнопки просмотра Browse Use Case Diagram.Создание новых элементов в диаграмме Use Case

Rational Rose предоставляет несколько способов создания новых элементов в окне диаграмм Use Case:

1. Командой New,Use Case контекстного меню папки Use Case View в окне Browser .

2. Командой Tools,Create,Use Case главного меню.

3. Командами строки инструментов окна Use Case Diagram.

В первом случае элемент создается непосредственно в дереве модели (в папке Use Case View окна Browser), но его значок не включается ни в одну диаграмму. После создания элемента, таким способом, можно поместить его на выбранную диаграмму, например путём перетаскивания мышкой значка элемента из дерева модели окна Browser в окно диаграммы. Во втором и третьем случае вместе с созданием элемента его значок помещается на текущую диаграмму автоматически.

При создании элементов посредством меню Tools программа предоставляет возможность создавать все элементы, которые можно включить в текущую диаграмму, тогда как при создании средствами строки инструментов пользователь ограничен созданием элементов согласно включенным в данную строку значкам. По причине большей простоты и наглядности рекомендуем пользоваться третьим вариантом. Для этого необходимо ознакомиться с содержанием строки инструментов, установленной по умолчанию для данной диаграммы. Для моделирования бизнес-процессов Rational Rose предоставляет дополнительные элементы Use Case, которые можно активизировать при помощи режима настройки инструментов (командой Use Case Diagram… на вкладке Toolbars окна Optins, открываемого командой Tools,Options главного меню). Но для создания системы учета товародвижения на складе достаточно значков, установленных в панелях инструментов по умолчанию.

Рассмотрим панель инструментов рабочего окна диаграммы Use Case.



Таблица 2.5 - Пиктограммы панели инструментов диаграммы Use Case

Пиктограмма

Кнопка

Описание



Selects or deselects an item (Выделение или отмена выделения объекта)

Превращает курсор в стрелку указателя, так что вы можете выделить объект



Text Box (Текст)

Добавляет к диаграмме текст



Note (Примечание)

Добавляет к диаграмме примечание



Anchor Note to Item (Прикрепление примечания к объекту)

Связывает примечание с вариантом использования или объектом на диаграмме



Package (Пакет)

Помещает на диаграмму новый пакет



Use Case (Вариант использования)

Помещает на диаграмму новый вариант использования



Actor (Действующее лицо

Помещает на диаграмму новое действующее лицо



Unidirectional Association (Однонаправленная ассоциация)

Рисует связь между действующим лицом и вариантом использования



Dependency or Instantiates (Зависимость или наполнение)

Рисует зависимость между элементами диаграммы



Generalization (Обобщение)

Рисует связь использования или расширения между вариантами использования либо рисует связь наследования между действующими лицами



По умолчанию строка инструментов Use Case-диаграммы состоит из десяти значков. При необходимости можно настроить панель инструментов.



Как настроить панель инструментов для диаграмм в среде IBM Rational Rose 2003



Необходимо открыть диалоговое окно настройки специальных панелей инструментов для диаграмм в среде IBM Rational Rose 2003 можно с помощью операции главного меню: ToolsOptions (ИнструментыПараметры), раскрыв вкладку Toolbars (Панели инструментов) и нажав соответствующую кнопку (например, Use Case diagram) в группе опций Customize Toolbars (Настройка панелей инструментов). Это окно настройки также можно открыть с помощью операции контекстного меню Customize (Настройка) при позиционировании курсора на специальной панели инструментов (рис. 2.6).




Рисунок 2.10 -  Диалоговое окно настройки специальной панели инструментов для диаграммы вариантов использования



Для добавления необходимых кнопок на панель следует выделить их в левом окне со списком пиктограмм графических элементов, после чего нажать кнопку «Добавить» в центре диалогового окна. Для удаления ненужных кнопок с панели инструментов следует выделить их в правом окне со списком пиктограмм графических элементов, после чего нажать кнопку «Удалить» в центре диалогового окна. Для восстановления набора пиктограмм по умолчанию можно нажать кнопку «Сброс». После настройки специальной панели инструментов соответствующее окно следует закрыть нажатием на кнопку «Закрыть».



Способы именования элементов и связей



Структурным элементам Actor, Use Case и Package, вводимым в диаграмму, система Rational Rose автоматически присваивает умалчиваемые имена (NewClassN, NewUseCaseN и NewPackageN). Изменит эти имена можно двумя способами:

			редактирования подписи под значком после двойного щелчка на ней левой клавишей мыши (эта команда переводит окно с надписью в режим редактирования текста);

			контекстной командой Rename на соответствующем значке в дереве модели окна Browser;

		активизируя панель спецификаций элемента (двойным левым щелчком мыши на самом значке элемента в окне диаграммы) и редактируя умалчиваемое имя в поле Name: этой панели.

Связям умалчиваемые имена не присваиваются. При необходимости их именования можно использовать только третий способ – вводом нужного имени в поле Name: окна спецификаций связей. Для открытия этого окна переведите указатель мыши точно на стрелку связи в окне диаграммы и выполните двойной левый щелчок. Должно открыться диалоговое окно Assotiasin Specification for… с полем Name:, в которое и вводится  имя связи.



2.4.1 Пример разработанной  диаграммы вариантов использования 



На рисунке 2.7 приведена диаграмма вариантов использования для приложения АИС «Трудоустройство».

Описание предметной области. Организация  предоставляет услуги по трудоустройству. Организацией ведется банк данных о существующих вакансиях. По каждой вакансии поддерживается определенная информация. Помимо проектирования реляционной базы данных АИС, необходимо еще и разработать приложение к ней.

Цель приложения: автоматизация информационного процесса определения подходящей вакансии по данным резюме (анкеты) соискателя.

Метод: дискриминантный анализ.

Пользователь: менеджер по работе с кадрами. 



Рисунок 2.11 – Пример диаграммы вариантов использования



3 Задание на лабораторное занятие



Согласно своему варианту (Приложение А, Таблица 1 – Варианты заданий на лабораторные работы) разработать диаграмму вариантов использования, используя выше описанную методику ее построения.



4 Содержание отчета



- титульный лист;

- постановка задачи;

- диаграмма вариантов использования.



5 Контрольные вопросы для защиты лабораторной работы



Что представляет собой программа Rational Rose?

Что такое язык UML?

Какие преимущества дает применение Rational Rose при разработке программных систем?

Какие UML диаграммы доступны в Rational Rose?

Для чего используется диаграмма Use Case?

Как создать новую диаграмму?

	Какие значки находятся в строке инструментов диаграммы Use Case и каково их назначение? Как настроить панель инструментов для диаграмм в RR?

	Какие типы связи существуют между элементами диаграммы вариантов использования?

Какие значки специфичны только для диаграммы Use Case?

Как при помощи диаграммы создать сценарий поведения?


Лабораторная работа № 3

Тема: «Построение моделей поведения проектируемого ПО. Построение диаграммы состояний в среде Rational Rose»



Цель работы:



Освоить методику построения диаграмм состояний;

Согласно заданию на лабораторное занятие построить  диаграмму состояний.



	1 Задание на самоподготовку



- изучить лекционный материал по данной теме;

- знать методику построения диаграмм состояний.

	

	2 Краткие теоретические сведения



Чтобы представить поведение системы более детально на логическом уровне используют диаграммы: состояний, деятельности, последовательности и кооперации. В отличие от диаграмм деятельности, последовательности и кооперации, диаграмма состояний описывает процесс изменения состояний только одного класса, а точнее - одного экземпляра определенного класса, т. е. моделирует все возможные изменения в состоянии конкретного объекта. 

Модель состояний состоит из нескольких диаграмм состояний, по одной на каждый класс, поведение которого во времени важно для приложения. 

Диаграмма Statechart (диаграмма состояний) предназначена для описания состояний объекта и условий перехода между ними. Описание состояний позволяет точно описать модель поведения объекта при получении различных сообщений и взаимодействии с другими объектами. 

Перед тем как рассмотреть особенности построения диаграмм состояний выделим ряд определений: 

Автомат (State machine) -это описание последовательности состояний, через которые проходит объект на протяжении своего жизненного цикла, реагируя на события, - в том числе описание реакций на эти события. 

	Состояние (State) - это ситуация в жизни объекта, на протяжении которой он удовлетворяет некоторому условию, осуществляет определенную деятельность или ожидает какого-то события.

	Событие (Event) - это спецификация существенного факта, который происходит во времени и пространстве. В контексте автоматов событие - это стимул, способный вызвать срабатывание перехода. 

	Переход (Transition) - это отношение между Двумя состояниями, показывающее, что объект, находящийся в первом состоянии, должен выполнить некоторые действия и перейти во второе состояние, как только произойдет определенное событие и будут выполнены заданные условия. 

	Деятельность (Activity) -это продолжающееся неатомарное вычисление внутри автомата. 

	Действие (Action) - это атомарное вычисление, которое приводит к смене состояния или возврату значения.

Графически состояние отображается в виде прямоугольника с закругленными вершинами. 



а) б)

Рисунок 3.1 – Графическое изображение состояний на диаграмме состояний

а) состояние без указания в нем действий или переходов

  б) состояние с указанием действий или переходов



Список внутренних действий состояния содержит перечень внутренних действий или деятельностей, которые выполняются в процессе нахождения моделируемого элемента в данном состоянии. Каждое из действий записывается в виде отдельной строки и имеет следующий формат: 

<метка действия / выражение действия> 

Метка действия указывает на обстоятельства или условия, при которых будет выполняться деятельность, определенная выражением действия. 

Существует ряд значений, которые может принимать метка действия:

		 entry - эта метка указывает на действие, специфицированное следующим за ней выражением действия, которое выполняется в момент входа в данное состояние (входное действие);

		 do – действия, производимые в течение состояния до выхода. Если таких действий набирается несколько, то почти наверняка их можно выделить в отдельную диаграмму состояния;

		 exit – метка показывающая, что действие должно быть выполнено перед самым выходом из указанного состояния;

		include - эта метка используется для обращения к подавтомату, при этом следующее за ней выражение действия содержит имя этого подавтомата.

Выражение действия – действие, которое должно быть выполнено в зависимости от метки действия. 

Составное состояние (composite state) - такое сложное состояние, которое состоит из других вложенных в него состояний. Вложенные состояния можно отобразить или скрыть по необходимости.



Рисунок 3.2 – Пример составного состояния



История состояния позволяет показать, что в следующий раз, когда система попадает в указанное состояние, она должна не начинать с начала состояний, а сразу перейти на последнее состояние, из которого вышла, то есть при первом входе в некоторое состояние производятся единичные действия, которые при следующем входе проделывать уже не нужно. Например, при первом входе в режим протоколирования сообщений нужно создать файл протокола, который при последующих обращениях к этому режиму пересоздавать не нужно. 





Рисунок 3.3 – Графическое представление истории состояния

 в среде Rational Rose



Когда действие или деятельность в некотором состоянии завершается, поток управления сразу переходит в следующее состояние действия или деятельности. Для описания этого потока используются переходы показывающие путь из одного состояния действия или деятельности в другое.

Простой переход (simple transition) представляет собой отношение между двумя последовательными состояниями, которое указывает на факт смены одного состояния другим.

Срабатывание перехода зависит от наступления некоторого события, и от выполнения определенного условия, называемого сторожевым условием. Объект перейдет из одного состояния в другое в том случае, если произошло указанное событие и сторожевое условие приняло значение "истина". 

Переход может быть направлен не только в другое состояние, но и в то же состояние, из которого он выходит. В этом случае его называют переходом в себя. При переходе в себя объект покидает исходное состояние, а затем снова входит в него. При этом всякий раз выполняются внутренние действия, специфицированные метками entry и exit.


2.1 Особенности разработки диаграммы состояний в среде IBM Rational Rose 2003



Для того чтобы построить диаграмму состояний, ее вначале необходимо создать и активизировать.

Начать построение диаграммы состояний для выбранного элемента модели или моделируемой системы в целом можно одним из следующих способов:

- щелкнуть на кнопке с изображением диаграммы состояний на стандартной панели инструментов, после чего следует выбрать представление и тип разрабатываемой диаграммы - новая диаграмма состояний. 

- выделить логическое представление (Logical View) или представление вариантов использования (Use Case View) в браузере проекта и выполнить операцию контекстного меню: NewStatechart Diagram (НоваяДиаграмма состояний). 

- раскрыть логическое представление (Logical View) в браузере проекта и выделить рассматриваемый класс, операцию класса, пакет, или раскрыть представление вариантов использования (Use Case View) и выбрать вариант использования, после чего выполнить операцию контекстного меню: NewStatechart Diagram (НоваяДиаграмма состояний). 

- выполнить операцию главного меню: BrowseState Machine Diagram (ОбзорДиаграмма состояний), после чего следует выбрать представление и тип разрабатываемой диаграммы.

В результате выполнения этих действий появляется новое окно с чистым рабочим листом диаграммы состояний и специальная панель инструментов, содержащая кнопки с изображением графических элементов модели, необходимых для разработки диаграммы состояний (табл. 1). Назначение отдельных кнопок панели можно узнать из всплывающих подсказок.



Таблица 3.1 - Назначение кнопок специальной панели инструментов диаграммы состояний

Графическое изображение

Всплывающая подсказка

Назначение кнопки



Selection Tool

Превращает изображение курсора в форму стрелки для последующего выделения элементов на диаграмме



Text Box

Добавляет на диаграмму текстовую область



Note

Добавляет на диаграмму примечание



Anchor Note to Item

Добавляет на диаграмму связь примечания с соответствующим графическим элементом диаграммы



State

Добавляет на диаграмму состояние



Start State

Добавляет на диаграмму начальное состояние



End State

Добавляет на диаграмму конечное состояние



State Transition

Добавляет на диаграмму переход



Transition to Self

Добавляет на диаграмму рефлексивный переход



Horizontal Synchronization

Добавляет на диаграмму горизонтально расположенный символ синхронизации (по умолчанию отсутствует)



Vertical Synchronization

Добавляет на диаграмму вертикально расположенный символ синхронизации (по умолчанию отсутствует)



Decision

Добавляет на диаграмму символ принятия решения для альтернативных переходов (по умолчанию отсутствует) 



По умолчанию на специальной панели инструментов могут отсутствовать кнопки с тремя последними графическими элементами из таблицы 1. При необходимости их можно добавить на специальную панель диаграммы состояний аналогично способу, рассмотренному ранее в лабораторной работе №2.



2.1.1 Добавление состояния на диаграмму состояний и редактирование его свойств



Для добавления состояния на диаграмму состояний необходимо с помощью левой кнопки мыши нажать кнопку с изображением пиктограммы состояния на специальной панели инструментов, отпустить левую кнопку мыши и щелкнуть левой кнопкой мыши на свободном месте рабочего листа диаграммы. На диаграмме появится изображение состояния с маркерами изменения его геометрических размеров и предложенным средой именем по умолчанию, которое разработчику следует изменить (рис. 3.4).

Для добавленного состояния можно открыть диалоговое окно его свойств - двойным щелчком левой кнопкой мыши на изображении этого элемента на диаграмме. В этом случае активизируется диалоговое окно со специальными вкладками, в поля которых можно занести всю информацию по данному состоянию.



Рисунок 3.4 – Разработка диаграммы состояния. Добавление состояния





Рисунок 3.5 - Диалоговое окно спецификации свойств состояния



При необходимости в диалоговом окне спецификации свойств выбранного состояния можно задать вложенное историческое состояние. Для этого следует выставить отметку у свойства State/activity history (Историческое состояние/деятельность) и нажать кнопку Apply. В результате внутри исходного состояния появится вложенное историческое состояние (рис. 3.6 а).



а)б)

Рисунок 3.6 - Добавление вложенного исторического состояния (а) и состояния глубокой истории (б) для состояния «Ожидание системы»



Чтобы обычное историческое состояние превратить в состояние глубокой истории, следует дополнительно выставить отметку у свойства Sub state/activity history (Историческое подсостояние/деятельность), которое становится доступным для редактирования после выбора первого свойства, и нажать кнопку Apply. В результате внутри исходного состояния появится вложенное состояние глубокой истории (рис. 3.6 б).

Чтобы обычное состояние превратить в композит, следует при добавлении нового состояния поместить его внутри границы того состояния, которое необходимо сделать композитным. В результате внутри исходного состояния появится новое вложенное состояние с именем NewState, которое при перемещении композита в области диаграммы состояний всегда будет находиться внутри своего композита (рис. 3.7).



Рисунок 3.7 – Композитное (составное) состояние



Рассмотренные выше действия приведены только с целью иллюстрации особенностей спецификации исторических и вложенных подсостояний.

Дополнительно можно определить следующие свойства состояний: задать текстовый стереотип состояния, определить внутренние действия на входе и выходе, а также внутреннюю деятельность. Эти свойства доступны для редактирования на вкладке General (Общие) и Actions (Действия). На вкладке Transitions (Переходы) можно определять и редактировать переходы, которые входят и выходят из рассматриваемого состояния. Последняя вкладка Swimlanes (Дорожки) служит для спецификации дорожек, которые, в контексте языка UML, определяются для диаграммы деятельности.



2.1.2 Добавление перехода и редактирование его свойств



Для добавления перехода между двумя состояниями нужно с помощью левой кнопки мыши нажать кнопку с изображением перехода на специальной панели инструментов, отпустить левую кнопку мыши, щелкнуть левой кнопкой мыши на изображении исходного состояния на диаграмме и отпустить ее на изображении целевого состояния. В результате этих действий на диаграмме появится изображение перехода, соединяющего два выбранных состояния (см.   рис. 3.8). 



Рисунок 3.8 - Диаграмма состояний после добавления на нее перехода из начального состояния в состояние «Ожидание системы»



После добавления перехода на диаграмму состояний можно открыть диалоговое окно его свойств и специфицировать дополнительные свойства, доступные на соответствующих вкладках (рис. 3.9). Следует обратить внимание на две первые строки вкладки Detail (Подробно), которые представляются наиболее важными из свойств перехода. Первое поле ввода Guard Condition служит для задания сторожевого условия, которое определяет правило срабатывания соответствующего перехода. Во втором поле ввода Action можно специфицировать действие, которое происходит при срабатывании перехода до того, как моделируемая система попадет в целевое состояние.





Рисунок 3.9 - Диалоговое окно спецификации свойств перехода, открытое на вкладке Detail (Подробно)



При необходимости можно определить сообщение о событии, происходящем при срабатывании перехода, а также визуализировать вложенность состояний и подключить историю отдельных состояний.


3 Пример построения диаграммы состояний



На рисунке 3.10 представлен пример диаграммы состояний для объекта класса “Diskr_analiz” (дискриминантного анализа).



Рисунок 3.10 - Диаграмма состояний объекта класса “Diskr_analiz”



4 Задание на лабораторное занятие



Согласно своему варианту разработать диаграмму состояний для алгоритма вашего метода многомерного статистического анализа.



5 Содержание отчета



- титульный лист;

- постановка задачи;

- диаграмма состояний





6 Контрольные вопросы для защиты лабораторной работы



	Для чего предназначена диаграмма состояний (Statechart)?

	Как создать новую диаграмму состояний в среде IBM R Rose 2003?

	Какие бывают переходы между состояниями?

	Какие спецификации можно задать для переходов между состояниями?

	Что такое история состояний? 

	Что такое композитное состояние и как его создать?

	Какие значки специфичны только для диаграммы состояний, расскажите о назначении каждого из них?

	Что такое сценарий поведения системы? Для чего его создают?

	Что такое сторожевое условие?

	  Как настроить панель инструментов, если на ней нет нужных значков?


Лабораторная работа № 4

Тема: «Построение диаграммы классов этапа проектирования в среде Rational Rose»



Цель работы:



	Освоить методику построения диаграмм классов;

	Согласно заданию на лабораторное занятие разработать  диаграмму классов.



	1 Задание на самоподготовку



- изучить лекционный материал по данной теме;

- знать методику построения диаграмм классов.

	

	2 Краткие теоретические сведения

	

Class diagram (диаграмма классов) — основная диаграмма для создания кода приложения. При помощи диаграммы классов создается внутренняя структура системы, описывается наследование и взаимное положение классов друг относительно друга. Здесь описывается логическое представление системы. Именно логическое, так как классы — это лишь заготовки, на основе которых затем будут определены физические объекты.

Таким образом, диаграмма классов описывает общее представление системы и является противоположной Collaboration diagram, в которой представлены объекты системы. Однако такое разделение не является строгим правилом, и возможно смешанное представление классов и объектов.

Диаграмма классов используется не только для создания логического представления системы, Rational Rose позволяет на основе диаграммы классов создавать исходный код приложения. А так как описание классов создается на языке UML, то по диаграммам, созданным в едином стиле, возможна генерация исходного кода на любом языке программирования, который поддерживается генератором кода Rational Rose.

Обычно диаграмма классов создается для всех классов системы, в отличие от диаграммы объектов, которую проектировщики создают для отдельных объектов со сложным поведением и взаимодействием.

Диаграмма классов содержит значки, представляющие классы, интерфейсы и их связи. Классы могут представлять любые C++ классы: простые, параметризированные или метаклассы. Интерфейсы — это некоторый набор действий или операций, который обслуживает взаимодействие реализаций классов.

Возможно создание одной или нескольких диаграмм классов, которые описывают классы верхнего уровня в текущей модели. Также возможно создание одной или более диаграмм классов, которые описывают классы, содержащиеся в пакетах. Так, диаграмма классов сама по себе является пакетом для классов модели, но можно выделить дополнительные пакеты для логической группировки классов.

Посредством диаграммы классов возможно изменение в любой момент свойств любого класса или его связей, и при этом диаграммы или спецификации, связанные с изменяемым классом, будут автоматически обновлены.



2.1 Особенности разработки диаграмм классов в среде IBM Rational Rose 2003



Диаграмма классов является основным логическим представлением модели и содержит детальную информацию о внутреннем устройстве объектно-ориентированной программной системы или, используя современную терминологию, об архитектуре программной системы. Активизировать рабочее окно диаграммы классов можно несколькими способами:

- окно диаграммы классов появляется по умолчанию в рабочем окне диаграммы после создания нового проекта;

- щелкнуть на кнопке с изображением диаграммы классов на стандартной панели инструментов; 

- раскрыть логическое представление (Logical View) в браузере проекта и дважды щелкнуть на пиктограмме Main (Главная); 

- выполнить операцию главного меню: BrowseClass Diagram (ОбзорДиаграмма классов).

При этом появляется новое окно с чистым рабочим листом диаграммы классов и специальная панель инструментов, содержащая кнопки с изображением графических примитивов, необходимых для разработки диаграммы классов (табл. 1). Назначение отдельных кнопок панели можно узнать также из всплывающих подсказок.

Таблица 4.1 - Назначение кнопок специальной панели инструментов для диаграммы классов

Графическое изображение

Всплывающая подсказка

Назначение кнопки



Selection Tool

Превращает изображение курсора в форму стрелки для последующего выделения элементов на диаграмме



Text Box

Добавляет на диаграмму текстовую область



Note

Добавляет на диаграмму примечание



Anchor Note to Item

Добавляет на диаграмму связь примечания с соответствующим графическим элементом диаграммы



Class

Добавляет на диаграмму класс



Interfase

Добавляет на диаграмму интерфейс



Unidirectional Association

Добавляет на диаграмму направленную ассоциацию



Association Class

Добавляет на диаграмму ассоциацию класс 



Package

Добавляет на диаграмму пакет



Dependency or Instantiates

Добавляет на диаграмму отношение зависимости



Generalization

Добавляет на диаграмму отношение обобщения



Realize

Добавляет на диаграмму отношение реализации





2.1.1 Добавление класса на диаграмму классов и редактирование его свойств



Для добавления класса на диаграмму классов нужно с помощью левой кнопки мыши нажать кнопку с изображением пиктограммы класса на специальной панели инструментов, отпустить левую кнопку мыши и щелкнуть левой кнопкой мыши на свободном месте рабочего листа диаграммы. На диаграмме появится изображение класса с маркерами изменения его геометрических размеров и предложенным средой именем по умолчанию NewClass.

Продолжая разработку модели приложения для АИС «Трудоустройство», в качестве сквозного примера проекта, построим для этой модели следующую диаграмму классов. С этой целью следует изменить предложенное по умолчанию имя диаграммы Main на - Диаграмма классов «Трудоустройство», а имя добавленного на диаграмму класса - на «Matrix» (см. рис. 4.1).





Рисунок 4.1 - Диаграмма классов после добавления на нее класса «Matrix»



Для класса «Matrix» можно уточнить его назначение в модели с помощью указания стереотипа и пояснительного текста в форме документации. С этой целью двойным щелчком левой кнопкой мыши на изображении этого класса на диаграмме или в браузере проекта следует открыть диалоговое окно спецификации свойств этого класса (рис. 4.2) и на вкладке General (Общие) выбрать из вложенного списка Stereotype стереотип.





Рисунок 4.2 - Диалоговое окно спецификации свойств класса 



Для отдельного класса можно уточнить также и другие его свойства, доступные для редактирования на вкладке Detail (Подробно) окна спецификации свойств этого класса. Например, на этой вкладке с помощью вложенного списка Multiplicity (Кратность) можно задать количество объектов или экземпляров данного класса, для чего следует выбрать строку с буквой n. Данное значение означает, что у класса может быть любое конечное число экземпляров (рис. 4.3). Поле ввода с именем Space (Пространство) служит для указания объема абсолютной или относительной памяти, которая требуется, по оценке разработчика, для реализации каждого объекта данного класса. Применительно к рассматриваемой модели это поле можно оставить пустым.





Рисунок 4.3 - Диалоговое окно спецификации свойств класса



Далее можно задать устойчивость классов в группе выбора Persistence. При этом выбор свойства Persistent (Устойчивый) означает, что информация об объектах данного класса должна быть сохранена в системе. Выбор свойства Transient (Временный) означает, что нет необходимости сохранять информацию об объектах данного класса в системе после завершения работы программного приложения. Применительно к рассматриваемой модели следует выбрать свойство Persistent.

В группе выбора Concurrency (Параллельность) можно специфицировать условия на возможность реализации объектов данного класса в параллельных потоках управления. Для выбора могут быть использованы следующие свойства:

Sequential (Последовательный) - свойство по умолчанию, которое означает, что объекты класса будут вести себя нормально только при наличии одного потока управления, т. е. соответствующие операции объектов должны выполняться последовательно. В то же время при наличии нескольких потоков управления стабильное поведение объектов класса не гарантируется.

Guarded (Безопасный) - означает, что при наличии нескольких потоков управления объекты класса будут вести себя ожидаемым от них образом. Для этого объекты в различных потоках должны взаимодействовать друг с другом для того, чтобы гарантировать отсутствие конфликта между ними. 

Active (Активный) - означает, что класс должен иметь свой собственный поток управления.

Synchronous (Синхронный) - означает, что объекты класса будут вести себя ожидаемым от них образом при наличии нескольких потоков управления. При этом нет необходимости во взаимодействии объектов в различных потоках управления, поскольку объекты данного класса могут самостоятельно разрешать возможные конфликты.

Для того, чтобы специфицировать класс как абстрактный, т.е. не имеющий экземпляров, следует на этой же вкладке выставить отметку в свойстве Abstract (Абстрактный).



2.1.2 Добавление и редактирование атрибутов классов



Из всех графических элементов среды IBM Rational Rose 2003 класс обладает максимальным набором свойств, главными из которых являются его атрибуты и операции.

Добавить атрибут к созданному ранее классу можно одним из следующих способов:

- с помощью операции контекстного меню New Attribute (Новый атрибут) для класса, выделенного на диаграмме классов. В этом случае активизируется курсор ввода текста в области графического изображения класса на диаграмме. 

- с помощью операции контекстного меню: NewAttribute (НовыйАтрибут) для класса, выделенного в браузере проекта. В этом случае активизируется курсор ввода текста в области иерархического представления класса в браузере проекта под именем соответствующего класса. 

- с помощью операции контекстного меню Insert (Вставить), вызванного при позиционировании курсора в области открытой вкладки атрибутов в диалоговом окне свойств Class Specification соответствующего класса. 

После добавления атрибута к классу по умолчанию ему присваивается имя name и некоторый квантор видимости (рис. 4.4).





Рисунок 4.4 - Диалоговое окно спецификации свойств

класса после добавления нового атрибута



Напомним, что имена атрибутов и операций классов должны начинаться со строчной буквы. Видимость атрибутов на диаграмме классов изображается в форме специальных пиктограмм. Используемые пиктограммы видимости изображаются перед именем соответствующего атрибута и имеют следующий смысл (табл. 4.2).



Таблица 4.2 - Пиктограммы видимости атрибутов классов

Графическое изображение

Текстовый аналог

Назначение пиктограммы



Public

Общедоступный или открытый. В нотации языка UML такому атрибуту соответствует знак «+» 



Protected

Защищенный. В нотации языка UML такому атрибуту соответствует знак «#»



Private

Закрытый. В нотации языка UML такому атрибуту соответствует знак «-»



Implementation

Реализация. В нотации языка UML такому атрибуту соответствует знак «∼»



Для редактирования свойств атрибутов предназначено специальное диалоговое окно спецификации атрибута Class Attribute Specification, которое открывается двойным щелчком мыши на строке выбранного атрибута в окне спецификации свойств класса. В окне свойств отдельного атрибута класса можно задать тип данных атрибута и его начальное значение, а также назначить атрибуту стереотип из раскрывающегося списка или изменить его квантор видимости.





Рисунок 4.5 - Диалоговое окно спецификации свойств атрибута



2.1.4 Добавление и редактирование операций классов



Функционирование любой системы основано на выполнении отдельными его элементами тех или иных действий. В  нашей модели все действия представляются с помощью операций классов. Таким образом, следующий этап разработки диаграммы классов связан со спецификацией операций классов.

Добавить операцию к созданному ранее классу можно одним из следующих способов:

- с помощью операции контекстного меню New Operation (Новая операция) для класса, выделенного на диаграмме классов. В этом случае активизируется курсор ввода в области графического изображения класса на диаграмме. 

- с помощью операции контекстного меню: NewOperation (НоваяОперация) для класса, выделенного в браузере проекта. В этом случае активизируется курсор ввода в области иерархического представления класса в браузере под именем соответствующего класса. 

- с помощью операции контекстного меню Insert (Вставить), вызванного при позиционировании курсора в области открытой вкладки операций в диалоговом окне свойств Class Specification соответствующего класса.

После добавления операции к классу по умолчанию ей присваивается имя opname и некоторый квантор видимости. Видимость операций на диаграмме классов также изображается в форме специальных пиктограмм. Используемые пиктограммы видимости изображаются перед именем соответствующей операции и имеют следующий смысл (табл. 4.3).







Таблица 4.3 - Пиктограммы видимости операций классов

Графическое изображение

Текстовый аналог

Назначение пиктограммы



Public

Общедоступный или открытый. В нотации языка UML такому атрибуту соответствует знак «+»



Protected

Защищенный. В нотации языка UML такому атрибуту соответствует знак «#»



Private

Закрытый. В нотации языка UML такому атрибуту соответствует знак «-»



Implementation

Реализация. В нотации языка UML такому атрибуту соответствует знак «∼»



Каждая из операций классов имеет собственное диалоговое окно спецификации свойств Operation Specification, которое может быть открыто по двойному щелчку на имени операции на соответствующей вкладке спецификации класса или на имени этой операции в браузере проекта (рис. 4.9).





Рисунок 4.6 - Диалоговое окно спецификации свойств операции



Для операций классов кроме квантора видимости можно также задать: аргументы и их тип, тип возвращаемого результата, стереотип операции, а также определить протокол и размер, задать исключительные ситуации, специфицировать предусловия и постусловия и целый ряд других свойств. Для отдельной операции эти дополнительные свойства доступны для редактирования на вкладке Detail (Подробно) диалогового окна спецификации свойств выбранной операции (рис. 4.7).





Рисунок 4.7 -   Диалоговое окно спецификации свойств операции, открытое на вкладке Detail (Подробно)



На вкладке Detail в многостраничном поле Arguments (Аргументы) можно определить аргументы редактируемой операции. Для этого следует выполнить операцию контекстного меню Insert (Вставить). После этого в этом поле появится аргумент данной операции с именем по умолчанию argname. Для редактирования свойств аргумента предназначено специальное окно свойств аргумента.

На вкладке Detail в поле Protocol (Протокол) можно специфицировать порядок выполнения операций класса, например, указать, что одна операция не может быть вызвана раньше другой. Соответствующий текст в данное поле вводится с клавиатуры и попадает в генерируемый код в форме комментария. В поле Qualification (Квалификация) можно уточнить детали реализации операции, связанные с конкретным языком программирования. Соответствующий текст также вводится в данное поле с клавиатуры и попадает в генерируемый код в форме комментария.

Далее на этой же вкладке в полях Size (Размер) и Time (Время) можно специфицировать предполагаемый объем памяти и время, необходимое для выполнения операции. Соответствующая информация попадает в генерируемый код в форме комментария.

В группе выбора Concurrency (Параллельность) можно специфицировать условия на возможность параллельного выполнения данной операции. Для выбора могут быть использованы следующие свойства:

Sequential (Последовательная) - свойство по умолчанию, которое означает, что данная операция класса может быть выполнена только при наличии одного потока управления, т. е. соответствующая операция класса должна выполняться последовательно. При наличии нескольких потоков управления выполнение данной операции класса не гарантируется. 

Guarded (Безопасная) - означает, что при наличии нескольких потоков управления выполнение данной операции класса гарантируется только в том случае, когда обеспечено взаимодействие объектов друг с другом в различных потоках. 

Synchronous (Синхронная) - означает, что выполнение данной операции класса гарантируется при наличии нескольких потоков управления. При этом нет необходимости во взаимодействии объектов в различных потоках управления, поскольку данная операция класса будет выполняться в отдельном потоке управления вплоть до своего завершения.



2.1.5 Добавление ассоциации на диаграмму классов и редактирование ее свойств



Добавление на диаграмму ассоциации между двумя классами выполняется следующим образом. На специальной панели инструментов необходимо нажать кнопку с изображением пиктограммы направленной ассоциации и отпустить левую кнопку мыши. Если ассоциация - направленная, то на диаграмме классов надо выделить первый элемент ассоциации или источник, от которого исходит стрелка, и, не отпуская нажатую левую кнопку мыши, переместить ее указатель ко второму элементу отношения или приемнику, к которому направлена стрелка. После перемещения ко второму элементу кнопку мыши следует отпустить, в результате чего на диаграмму классов будет добавлена направленная ассоциация с именем Untitled между двумя выбранными классами (рис. 4.11).




Рисунок 4.11 -  Фрагмент диаграммы классов после добавления на неё направленной ассоциации



Изменим имя для данной ассоциации, предложенное средой по умолчанию. Это можно выполнить с помощью окна спецификации свойств ассоциации. Доступ к диалоговому окну спецификации свойств ассоциации Association Specification можно получить после выделения линии ассоциации на диаграмме классов или в браузере проекта и двойного щелчка на ней левой кнопки мыши (рис. 4.12).




Рисунок 4.12 - Диалоговое окно спецификации свойств ассоциации



Для задания имени ассоциации следует на вкладке General (Общие) в поле ввода Name (Имя) ввести текст ее имени: Соответствует и нажать кнопку Apply или OK, чтобы сохранить результаты редактирования имени ассоциации. Для ассоциации можно задать также кратность каждого из концов ассоциации, стереотип, использовать ограничения и роли, а также некоторые другие свойства.

Если ассоциация является ненаправленной, то порядок выбора классов может быть произвольный, а после добавления ассоциации на диаграмму классов следует изменить значение соответствующего свойства данной ассоциации. С этой целью необходимо перейти на вкладку Role A Detail в окне спецификации свойств ассоциации и убрать отметку у свойства Navigable (Навигация).



2.1.6 Добавление отношений агрегации и композиции на диаграмму классов и редактирование их свойств



Агрегация – это частный случай ассоциации, описывающий объекты, состоящие из частей. Например, газонокосилка состоит из ножа, двигателя, нескольких колес и корпуса. Здесь газонокосилка является агрегатом (незакрашенный ромбик), а остальные детали – составляющими частями (стрелка).

Композиция – это частный случай агрегации. Композиция подразумевает, что части принадлежат целому. Например, компания, состоящая из отделений, которые в свою очередь, состоят из отделов.

- добавить на диаграмму отношение агрегации между двумя классами можно следующими способами:

- щелкнуть на кнопке с изображением отношение агрегации на специальной панели инструментов и провести линию агрегации от одного класса к другому. 

Провести линию ассоциации между выбранными классами и изменить ее свойства таким образом, чтобы превратить данную ассоциацию в агрегацию.

В первом случае может оказаться, что по умолчанию на специальной панели инструментов диаграммы классов отсутствует кнопка с пиктограммой агрегации. В этом случае необходимо предварительно добавить ее на панель инструментов одним из описанных ранее способов. Во втором случае следует открыть окно спецификации свойств ассоциации Association Specification и на вкладке деталей соответствующего конца ассоциации выставить отметку в строке выбора Aggregate (Агрегация).

В качестве примера изменим тип созданной ранее ассоциации и сделаем ее агрегацией. С этой целью на вкладке Role В Detail деталей конца ассоциации одного класса следует выставить отметку в строке выбора Aggregate(рис. 4.13).




Рисунок 4.13 - Диалоговое окно спецификации свойств ассоциации



Соответствующий фрагмент диаграммы классов после изменения ассоциации между классами на отношение агрегации будет иметь следующий вид (рис. 4.14).


Рисунок 4.14 -  Фрагмент диаграммы классов модели после добавления на нее отношения агрегации



Для изображения отношения композиции можно также вначале изобразить обычную ассоциацию, после чего, открыв окно ее свойств на вкладке деталей соответствующего конца ассоциации, выставить отметку в строке выбора Aggregate (Агрегация) и в секции Containment (Локализация) выбрать опцию By Value (По значению). По умолчанию эта опция не специфицирована, т.е. выставлена отметка опции Unspecified (рис. 4.15).



 

Рисунок 4.15 -  Фрагмент диаграммы классов модели после добавления на нее отношения композиции





2.1.7 Добавление отношения обобщения на диаграмму классов и редактирование ее свойств



Добавление на диаграмму отношения обобщения между двумя классами выполняется следующим образом. На специальной панели инструментов необходимо нажать кнопку с изображением пиктограммы обобщения и отпустить левую кнопку мыши. Далее на диаграмме классов надо выделить первый элемент обобщения или потомок, от которого исходит стрелка, и, не отпуская нажатую левую кнопку мыши, переместить ее указатель ко второму элементу отношения или предок, к которому направлена стрелка. После перемещения ко второму элементу кнопку мыши следует отпустить, в результате чего на диаграмму классов будет добавлена линия обобщения с именем Untitled между двумя выбранными классами. Пример приведен на рисунке 4.16.

 
Рисунок 4.16 – Пример диаграммы классов после добавления на неё

 отношения обобщения



Изменим имя отношения обобщения, предложенное средой по умолчанию. Это можно выполнить с помощью окна спецификации свойств обобщения. Доступ к диалоговому окну спецификации свойств отношения обобщения Generalize Specification можно получить после выделения линии обобщения на диаграмме классов или в браузере проекта и двойного щелчка на ней левой кнопки мыши (рис. 4.17).





Рисунок 4.17 - Диалоговое окно спецификации свойств отношения обобщения



Для задания имени обобщения следует на единственной вкладке General (Общие) в поле ввода Name (Имя) ввести текст ее имени: следует и нажать кнопку Apply или OK, чтобы сохранить результаты редактирования имени ассоциации.



3 Пример построения диаграммы классов





Рисунок 4.18 – Диаграмма классов для алгоритма дискриминантного анализа



4 Задание на лабораторное занятие



Разработайте диаграмму классов для реализации метода многомерного статистического анализа, применяемого в приложении.



5 Контрольные вопросы для защиты лабораторной работы



1. Каково назначение диаграммы классов?

2. Какими способами можно создать диаграмму?

3. Какие инструменты доступны для диаграммы?

4. Какие команды предоставляет контекстное меню класса?

5. Как настроить свойства атрибутов класса?

6. Как настроить свойства методов класса?

7. Какие типы отношений классов вы знаете?


Лабораторная работа № 5

Тема: «Генерация кода проектируемого программного обеспечения»



Цель работы:



1) Подготовка модели к генерации программного кода;

2) Генерация программного кода на язык С++.



	1 Задание на самоподготовку

	

- разработать диаграмму классов (предыдущая лабораторная работа);

- знать основы объектно-ориентированного программирования.



	2 Краткие теоретические сведения



Одно из самых мощных свойств Rational Rose – возможность генерации программного кода, представляющего модель. Варианты генерации программ меняются в зависимости от установленной версии Rose. В настоящее время применяются следующие три различные версии:

- Rose Modeler – позволяет создавать модель системы, но не поддерживает генерацию программного кода и обратное проектирование.

- Rose Professional – позволяет генерировать программный код на одном языке.

- Rose Enterprise – позволяет генерировать программный код на Ada 83, Ada 95, ANSI C++, CORBA, Java, COM, Visual Basic, Visual C++, C++ и XML. Кроме того, поддерживается генерация кода и обратное проектирование баз данных.

Весь лабораторный практикум по данной дисциплине построен на изучении Case-средства Rational Rose версии  - Enterprise Edition.





2.1 Подготовка к генерации программного кода



Процесс генерации программного кода состоит из пяти  основных этапов:



Проверка модели.

Создание компонентов.

Отображение классов на компоненты.

Установка свойств генерации программного кода.

Генерация программного кода.



В разных языках не все этапы обязательны. Так, программы, разработанные на языке С++, генерируются и без предварительного создания компонентов. Генерировать код программ на любом языке можно, не выполняя проверки модели, хотя во время генерации это порой приводит к различным ошибкам.

Хотя не все этапы обязательны, первые пять из них рекомендуется выполнять до начала процесса генерации. Проверка модели поможет выявить ее неточности и недостатки, нежелательные с точки зрения последующей генерации программ. Этапы, на которых рассматриваются компоненты, - это способ отобразить логическую схему системы на ее физическую реализацию, причем на этих этапах собирается большой объем полезной информации. Если пропустить эти этапы, то для создания компонентов Rose воспользуется пакетной структурой логического представления.



2.1.1 Проверка модели



В Rose существует не зависящее от языка средство проверки моделей, применяемое для обеспечения корректности модели перед генерацией программного кода. Такая проверка помогает выявить в модели неточности и ошибки, не позволяющие генерировать программы надлежащим образом.

В общем случае проверка модели может выполняться на любом этапе работы над проектом. Однако после завершения разработки графических диаграмм она является обязательной, поскольку позволяет выявить целый ряд ошибок разработчика. К числу таких ошибок и предупреждений относятся, например, не используемые ассоциации и классы, оставшиеся после удаления отдельных графических элементов с диаграмм, а также операции, не являющиеся именами сообщений на диаграммах взаимодействия.

Для проверки модели следует выполнить операцию главного меню: ToolsCheck Model (ИнструментыПроверить модель). Результаты проверки разработанной модели на наличие ошибок отображаются в окне журнала. Прежде чем приступить к генерации текста программного кода разработчику следует добиться устранения всех ошибок и предупреждений, о чем должно свидетельствовать чистое окно журнала (рис. 5.1).




Рисунок 5.1- Вид журнала при отсутствии ошибок по результатам проверки модели



К наиболее распространенным ошибкам относятся, например, сообщения на диаграмме Последовательности или Кооперативной диаграмме, не отображенные на операцию, либо объекты этих диаграмм, не отображенные на класс. 



2.1.2 Создание компонентов



Второй этап процесса генерации программного кода - создание компонентов для классов. Существуют компоненты самых разных типов: файлы исходного программного кода, исполняемые файлы, библиотеки исполнения в реальном времени, компоненты ActiveX, апплеты и т.д. Перед генерацией программ можно отобразить каждый из классов на соответствующий компонент исходного программного кода.

После создания компонентов можно добавить зависимости между ними на диаграмме Компонентов. Зависимости между компонентами - это зависимости во время компиляции системы.

При генерации программ на C++, Java или Visual Basic выполнять подобный шаг не обязательно. В Java и Visual Basic Rose создаст автоматически соответствующий компонент для каждого из классов.

Для создания компонента:

1. Откройте диаграмму Компонентов (Component).

2. С помощью значка Component панели инструментов Diagram введите новый компонент в диаграмму.



2.1.3 Отображение классов на компоненты



Каждый компонент исходного кода - это файл с исходным программным кодом для одного или нескольких классов. В C++ каждый класс отображается на два компонента с исходным кодом: файл заголовка и основной файл (тело). В PowerBuilder на один компонент отображается несколько классов. Компонентом с исходным программным кодом в PowerBuilder является файл библиотеки PowerBuilder (.pbl). В Java каждый компонент - это один файл .java. Компоненты также создаются для элементов управления ActiveX, апплетов, файлов DDL, исполняемых файлов, а также других исходных и скомпилированных файлов.

Третий этап процесса генерации программного кода - отображение каждого из классов на соответствующие компоненты. В PowerBuilder необходимо отобразить каждый класс на компонент перед генерацией программы, в то время как в C++, Java и Visual Basic этот шаг не является обязательным. Rose может генерировать программный код самостоятельно. При генерации в Rose программ Java и Visual Basic производится еще и генерация нужных компонентов и отображение классов. Однако для C++ компоненты не создаются автоматически, а кроме того, ни для одного из языков не генерируются зависимости. Поэтому рекомендуется выполнять этот шаг независимо от применяемого языка программирования. Для отображения класса на компонент:



1. Щелкните правой кнопкой мыши на компоненте, на диаграмме Компонентов или в браузере.

2. Выберите Open Specification в контекстном меню.

3. Выберите вкладку Realizes (Реализует).

4. Во вкладке Realizes щелкните правой кнопкой мыши на нужном классе (классах) и выберите Assign (Присвоить) в контекстном меню.

В браузере имя компонента будет показано в круглых скобках вслед за именем класса в Логическом представлении (Logical view).

ИЛИ

1. Найдите класс в окне Logical view браузера.

2. Перетащите класс на нужный компонент в окне Component view.

3. В окне Logical view имя компонента будет показано в круглых скобках за именем класса.



2.1.4 Установка свойств генерации программного кода



Для каждого языка в Rose предусмотрен ряд определенных свойств генерации программного кода. Можно установить несколько параметров генерации программного кода для классов, атрибутов, компонентов и других элементов модели. Этими свойствами определяется способ генерации программ. В Rose предлагаются общепринятые параметры по умолчанию.



2.1.4.1 Настройка свойств C++



Для того чтобы пользоваться возможностями C++, необходимо описать назначение этих свойств, список которых доступен во вкладке C++ спецификаций класса. (см. рис. 5.2)





Рисунок 5.2 – Окно свойств генерации кода на С++



Перед генерацией программного кода рекомендуется анализировать эти свойства и вносить необходимые изменения.



Назначение свойств:



		CodeName - устанавливает имя класса в создаваемом коде. Данное свойство необходимо устанавливать только в том случае, если имя класса должно быть отлично от имени заданного в модели Rational Rose. Данное свойство необходимо использовать для создания работоспособного кода C++, если для классов в модели используются русские имена.

		ImplementationType - позволяет использовать простые типы вместо определения класса, устанавливаемого Rational Rose по умолчанию. При задании этого параметра создается директива typedef.

		ClassKey - используется для задания типа класса, такого как class, struct, или union. Если тип не указан, то создается класс.

		GenerateEmptyRegion - свойство указывает, как будет создаваться пустой раздел protected: None - пустой раздел не будут создан; Preserved - пустой раздел будет создан, если будет установлено свойство «preserve=yes»; Unpreserved — пустой раздел будет создан, если будет установлено свойство «preserve=no»; All — всегда будет создаваться.

		PutBodiesInSpec - если установлено как true, то в заголовочный файл попадет и описание тела класса. Используется для компиляторов, которым необходимо определение шаблона класса в каждом компилируемом файле.

		GenerateDefaultConstructor - позволяет установить, необходимо ли создавать конструктор для класса по умолчанию. Может принимать следующие значения: DeclareAndDefine - создается определение для конструктора и скелет конструктора в теле класса; Declare Only - создается только определение; DoNotDeclare - не создается ни определения, ни скелета конструктора.

		DefaultConstructorVisibility - устанавливает раздел, в котором будет определен конструктор по умолчанию: public, protected, private, implementation.

		InlineDefaultConstructor - устанавливает, будет ли конструктор по умолчанию создаваться как inline подстановка. Если конструктора по умолчанию нет, то данное свойство не оказывает на код никакого эффекта.

		ExplicitDefaultConstructor - устанавливает конструктор по умолчанию как explicit (явно заданный).

			InlineRelationalOperations - определяет, будут ли функции операторов сравнения создаваться как inline подстановка.

			GenerateStorageMgmtOperations - определяет, будут ли переопределяться операторы new и delete в классе.

			StorageMgmtVisibility - определяет раздел, в который будут помещены операторы new и delete.

			InlineStorageMgmtOperations - определяет, будут ли операторы new и delete определены как inline подстановка.

			GenerateSubscriptOperation - определяет, будет ли переопределен оператор [].

			Subscript Visibility определяет - раздел, в который будет помещен оператор [].

			SubscriptKind - определяет вид функций оператора []: Common - обычная, Virtual - виртуальная, Abstract - абстрактная.

			SubscriptResultType - определяет тип возвращаемого выражения для 

	оператора [].

			InlineSubscriptOperation - определяет, будет ли оператор [] определен как inline подстановка.

			GenerateDereferenceOperation - определяет, будет ли переопределен оператор *.

			Dereference Visibility - определяет раздел, в который будет помещен оператор *.

			DereferenceKind - определяет вид функций оператора *: Common - обычная, Virtual - виртуальная, Abstract - абстрактная.

			DereferenceResultType - определяет тип возвращаемого выражения для оператора *.

			InlineDereferenceOperation - определяет, будет ли оператор * определен, как inline подстановка.

			GeneratelndirectionOperation - определяет, будет ли переопределен оператор ->.

			IndirectionVisibility - определяет раздел, в который будет помещен оператор ->.

			IndirectionKind - определяет вид функций оператора ->: Common - обычная, Virtual - виртуальная, Abstract - абстрактная.

			IndirectionResultType - определяет тип возвращаемого выражения для оператора ->.

			InlinelndirectionOperation - определяет, будет ли оператор -> определен как inline подстановка.

			GenerateStreamOperations - определяет, будут ли переопределены операторы потоков (« и »).

	



2.1.5 Выбор класса, компонента или пакета



При генерации программного кода за один раз можно создать класс, компонент или целый пакет. Программный код генерируется с помощью диаграммы или браузера. При генерации кода из пакета можно выбрать либо пакет Логического представления на диаграмме Классов, либо пакет представления Компонентов на диаграмме Компонентов. При выборе пакета Логического представления генерируются все его классы. При выборе пакета представления Компонентов генерируются все его компоненты.

Программный код можно генерировать одновременно для нескольких классов, компонентов или пакетов. На диаграмме с помощью клавиши Ctrl выберите классы, компоненты или пакеты, для которых нужно сгенерировать программный код, а затем - соответствующую команду генерации в меню.



2.1.6 Генерация программного кода



Если у вас установлены Rose Professional или Rose Enterprise, то в меню Tools предлагается несколько вариантов, специфичных для конкретного языка программирования (см. рис. 5.3).





Рисунок 5.3 - Пункты меню генерации кода



Чтобы показать или скрыть эти пункты меню, выберите пункт Add-Ins → Add-Ins (Надстройки → Менеджер надстроек). В диалоговом окне Add-In Manager (см. рис. 5.4) с помощью флажков покажите или скройте нужные варианты для различных языков.





Рисунок 5.4 - Менеджер надстроек Add-Ins



Генерация программного кода в среде IBM Rational Rose 2003 возможна для отдельного класса или компонента. Для этого нужный элемент модели предварительно следует выделить в браузере проекта и выполнить операцию контекстного меню: Tools→C++→Code Generation - (Язык C++→Генерировать код). В результате этого будет открыто диалоговое окно с предложением выбора классов для генерации программного кода на выбранном языке программирования (рис. 5.5). После выбора соответствующих классов и нажатия кнопки OK программа IBM Rational Rose 2003 выполняет кодогенерацию.





Рисунок 5.5 - Окно выбора классов для генерации программного кода



Затем происходит компиляция и выдается окно статуса (Code Generation Status). Здесь можно увидеть информацию о том, какой класс был закодирован и количество ошибок и предупреждений (рис. 5.6). Если у вас произошла, какая-либо ошибка или же предупреждение, то их можно увидеть на рабочем поле в Rational Rose, для этого и существует самое нижнее окно, в нем передаются все ваши действия и ошибки, произошедшие в ходе кодогенерации.





Рисунок 5.6 – Окно статуса компиляции



2.1.7 Результаты генерации



В результате кодогенерации Rational Rose создает два файла с расширением “.h” и “.cpp”, названия у них те же, что и название класса. Итак, выполнив эти действия, нажимаем правой клавишей на класс, появляется окошко, в нем ищем “С++”, и видим два пункта Browse Header и Browse Body, и в зависимости от того какой из файлов нам нужен “.h” (заголовочный) или “.cpp” (непосредственно реализация), выбираем их. Эти файлы открываются с помощью блокнота и теперь легко можно увидеть скелет класса, с различными комментариями, которые писали вы на диаграммах, и комментарии которые вставляет сама Rose. Теперь можно открыть один из файлов в С++ и доработать класс, описать работу функций, добавить различные нововведения.

Следует заметить, что при установленной на компьютер разработчика интегрированной среды сгенерированные файлы с текстом программного кода автоматически открываются в этой среде после двойного щелчка на пиктограмме этих файлов. Тем не менее, лучше копировать содержимое этих файлов в предварительно созданные программные проекты для полного контроля в этих средах процесса программирования и отладки приложений.

Сгенерированные программой IBM Rational Rose 2003 файлы с текстом программного кода содержат минимум информации. Для включения дополнительных элементов в программный код следует изменить свойства генерации программного кода, установленные по умолчанию.

В заключение следует отметить, что эффект от использования средства IBM Rational Rose 2003 проявляется при разработке масштабных проектов в составе команды или проектной группы. Однако ситуация покажется не столь тривиальной, когда станет необходимо выполнить проект с несколькими десятками вариантов использования и сотней классов. Именно для подобных проектов явно выявляется преимущество использования средства IBM Rational Rose 2003 и нотации языка UML для документирования и реализации соответствующих моделей.



3 Пример сгенерированного кода на язык программирования С++



{Class Diskr_analiz}



//## begin module%1.5%.codegen_version preserve=yes

//   Read the documentation to learn more about C++ code generator

//   versioning.

//## end module%1.5%.codegen_version



//## begin module%470F79570399.cm preserve=no

//	  %X% %Q% %Z% %W%

//## end module%470F79570399.cm



//## begin module%470F79570399.cp preserve=no

//## end module%470F79570399.cp



//## Module: Diskr_analiz%470F79570399; Pseudo Package body

//## Source file: C:\Program Files\Rational\Rose\C++\source\Diskr_analiz.cpp



//## begin module%470F79570399.additionalIncludes preserve=no

//## end module%470F79570399.additionalIncludes



//## begin module%470F79570399.includes preserve=yes

//## end module%470F79570399.includes



// Diskr_analiz

#include "Diskr_analiz.h"

//## begin module%470F79570399.additionalDeclarations preserve=yes

//## end module%470F79570399.additionalDeclarations





// Class Diskr_analiz 



Diskr_analiz::Diskr_analiz()

  //## begin Diskr_analiz::Diskr_analiz%470F79570399_const.hasinit preserve=no

  //## end Diskr_analiz::Diskr_analiz%470F79570399_const.hasinit

  //## begin Diskr_analiz::Diskr_analiz%470F79570399_const.initialization preserve=yes

  //## end Diskr_analiz::Diskr_analiz%470F79570399_const.initialization

{

  //## begin Diskr_analiz::Diskr_analiz%470F79570399_const.body preserve=yes

  //## end Diskr_analiz::Diskr_analiz%470F79570399_const.body

}



Diskr_analiz::Diskr_analiz(const Diskr_analiz &right)

  //## begin Diskr_analiz::Diskr_analiz%470F79570399_copy.hasinit preserve=no

  //## end Diskr_analiz::Diskr_analiz%470F79570399_copy.hasinit

  //## begin Diskr_analiz::Diskr_analiz%470F79570399_copy.initialization preserve=yes

  //## end Diskr_analiz::Diskr_analiz%470F79570399_copy.initialization

{

  //## begin Diskr_analiz::Diskr_analiz%470F79570399_copy.body preserve=yes

  //## end Diskr_analiz::Diskr_analiz%470F79570399_copy.body

}





Diskr_analiz::~Diskr_analiz()

{

  //## begin Diskr_analiz::~Diskr_analiz%470F79570399_dest.body preserve=yes

  //## end Diskr_analiz::~Diskr_analiz%470F79570399_dest.body

}





Diskr_analiz & Diskr_analiz::operator=(const Diskr_analiz &right)

{

  //## begin Diskr_analiz::operator=%470F79570399_assign.body preserve=yes

  //## end Diskr_analiz::operator=%470F79570399_assign.body

}





int Diskr_analiz::operator==(const Diskr_analiz &right) const

{

  //## begin Diskr_analiz::operator==%470F79570399_eq.body preserve=yes

  //## end Diskr_analiz::operator==%470F79570399_eq.body

}



int Diskr_analiz::operator!=(const Diskr_analiz &right) const

{

  //## begin Diskr_analiz::operator!=%470F79570399_neq.body preserve=yes

  //## end Diskr_analiz::operator!=%470F79570399_neq.body

}







//## Other Operations (implementation)

void Diskr_analiz::Vector_DF ()

{

  //## begin Diskr_analiz::Vector_DF%470F7D1003D8.body preserve=yes

  //## end Diskr_analiz::Vector_DF%470F7D1003D8.body

}



void Diskr_analiz::Vector_zn_DF ()

{

  //## begin Diskr_analiz::Vector_zn_DF%470F7FB703A9.body preserve=yes

  //## end Diskr_analiz::Vector_zn_DF%470F7FB703A9.body

}



void Diskr_analiz::Const_diskr ()

{

  //## begin Diskr_analiz::Const_diskr%470F800F037A.body preserve=yes

  //## end Diskr_analiz::Const_diskr%470F800F037A.body

}



void Diskr_analiz::Rasch_zn_DF ()

{

  //## begin Diskr_analiz::Rasch_zn_DF%470F802C005D.body preserve=yes

  //## end Diskr_analiz::Rasch_zn_DF%470F802C005D.body

}



// Additional Declarations

  //## begin Diskr_analiz%470F79570399.declarations preserve=yes

  //## end Diskr_analiz%470F79570399.declarations



//## begin module%470F79570399.epilog preserve=yes

//## end module%470F79570399.epilog







{Class Kovar_matrix}



//## begin module%1.5%.codegen_version preserve=yes

//   Read the documentation to learn more about C++ code generator

//   versioning.

//## end module%1.5%.codegen_version



//## begin module%470F792B01A5.cm preserve=no

//	  %X% %Q% %Z% %W%

//## end module%470F792B01A5.cm



//## begin module%470F792B01A5.cp preserve=no

//## end module%470F792B01A5.cp



//## Module: Kovar_matrix%470F792B01A5; Pseudo Package body

//## Source file: C:\Program Files\Rational\Rose\C++\source\Kovar_matrix.cpp



//## begin module%470F792B01A5.additionalIncludes preserve=no

//## end module%470F792B01A5.additionalIncludes



//## begin module%470F792B01A5.includes preserve=yes

//## end module%470F792B01A5.includes



// Kovar_matrix

#include "Kovar_matrix.h"

//## begin module%470F792B01A5.additionalDeclarations preserve=yes

//## end module%470F792B01A5.additionalDeclarations





// Class Kovar_matrix 



Kovar_matrix::Kovar_matrix()

  //## begin Kovar_matrix::Kovar_matrix%470F792B01A5_const.hasinit preserve=no

  //## end Kovar_matrix::Kovar_matrix%470F792B01A5_const.hasinit

  //## begin Kovar_matrix::Kovar_matrix%470F792B01A5_const.initialization preserve=yes

  //## end Kovar_matrix::Kovar_matrix%470F792B01A5_const.initialization

{

  //## begin Kovar_matrix::Kovar_matrix%470F792B01A5_const.body preserve=yes

  //## end Kovar_matrix::Kovar_matrix%470F792B01A5_const.body

}



Kovar_matrix::Kovar_matrix(const Kovar_matrix &right)

  //## begin Kovar_matrix::Kovar_matrix%470F792B01A5_copy.hasinit preserve=no

  //## end Kovar_matrix::Kovar_matrix%470F792B01A5_copy.hasinit

  //## begin Kovar_matrix::Kovar_matrix%470F792B01A5_copy.initialization preserve=yes

  //## end Kovar_matrix::Kovar_matrix%470F792B01A5_copy.initialization

{

  //## begin Kovar_matrix::Kovar_matrix%470F792B01A5_copy.body preserve=yes

  //## end Kovar_matrix::Kovar_matrix%470F792B01A5_copy.body

}



Kovar_matrix::Kovar_matrix ()

  //## begin Kovar_matrix::Kovar_matrix%470F7A3501C5.hasinit preserve=no

  //## end Kovar_matrix::Kovar_matrix%470F7A3501C5.hasinit

  //## begin Kovar_matrix::Kovar_matrix%470F7A3501C5.initialization preserve=yes

  //## end Kovar_matrix::Kovar_matrix%470F7A3501C5.initialization

{

  //## begin Kovar_matrix::Kovar_matrix%470F7A3501C5.body preserve=yes

  //## end Kovar_matrix::Kovar_matrix%470F7A3501C5.body

}





Kovar_matrix::~Kovar_matrix()

{

  //## begin Kovar_matrix::~Kovar_matrix%470F792B01A5_dest.body preserve=yes

  //## end Kovar_matrix::~Kovar_matrix%470F792B01A5_dest.body

}





Kovar_matrix & Kovar_matrix::operator=(const Kovar_matrix &right)

{

  //## begin Kovar_matrix::operator=%470F792B01A5_assign.body preserve=yes

  //## end Kovar_matrix::operator=%470F792B01A5_assign.body

}





int Kovar_matrix::operator==(const Kovar_matrix &right) const

{

  //## begin Kovar_matrix::operator==%470F792B01A5_eq.body preserve=yes

  //## end Kovar_matrix::operator==%470F792B01A5_eq.body

}



int Kovar_matrix::operator!=(const Kovar_matrix &right) const

{

  //## begin Kovar_matrix::operator!=%470F792B01A5_neq.body preserve=yes

  //## end Kovar_matrix::operator!=%470F792B01A5_neq.body

}







//## Other Operations (implementation)

void Kovar_matrix::Sovm_kov_matrix ()

{

  //## begin Kovar_matrix::Sovm_kov_matrix%470F7A5E02EE.body preserve=yes

  //## end Kovar_matrix::Sovm_kov_matrix%470F7A5E02EE.body

}



// Additional Declarations

  //## begin Kovar_matrix%470F792B01A5.declarations preserve=yes

  //## end Kovar_matrix%470F792B01A5.declarations



//## begin module%470F792B01A5.epilog preserve=yes

//## end module%470F792B01A5.epilog



{Class_Matrix}



//## begin module%1.5%.codegen_version preserve=yes

//   Read the documentation to learn more about C++ code generator

//   versioning.

//## end module%1.5%.codegen_version



//## begin module%470F762F032C.cm preserve=no

//	  %X% %Q% %Z% %W%

//## end module%470F762F032C.cm



//## begin module%470F762F032C.cp preserve=no

//## end module%470F762F032C.cp



//## Module: Matrix%470F762F032C; Pseudo Package body

//## Source file: C:\Program Files\Rational\Rose\C++\source\Matrix.cpp



//## begin module%470F762F032C.additionalIncludes preserve=no

//## end module%470F762F032C.additionalIncludes



//## begin module%470F762F032C.includes preserve=yes

//## end module%470F762F032C.includes



// Matrix

#include "Matrix.h"

//## begin module%470F762F032C.additionalDeclarations preserve=yes

//## end module%470F762F032C.additionalDeclarations





// Class Matrix 



Matrix::Matrix()

  //## begin Matrix::Matrix%470F762F032C_const.hasinit preserve=no

  //## end Matrix::Matrix%470F762F032C_const.hasinit

  //## begin Matrix::Matrix%470F762F032C_const.initialization preserve=yes

  //## end Matrix::Matrix%470F762F032C_const.initialization

{

  //## begin Matrix::Matrix%470F762F032C_const.body preserve=yes

  //## end Matrix::Matrix%470F762F032C_const.body

}



Matrix::Matrix(const Matrix &right)

  //## begin Matrix::Matrix%470F762F032C_copy.hasinit preserve=no

  //## end Matrix::Matrix%470F762F032C_copy.hasinit

  //## begin Matrix::Matrix%470F762F032C_copy.initialization preserve=yes

  //## end Matrix::Matrix%470F762F032C_copy.initialization

{

  //## begin Matrix::Matrix%470F762F032C_copy.body preserve=yes

  //## end Matrix::Matrix%470F762F032C_copy.body

}



Matrix::~Matrix()

{

  //## begin Matrix::~Matrix%470F762F032C_dest.body preserve=yes

  //## end Matrix::~Matrix%470F762F032C_dest.body

}





Matrix & Matrix::operator=(const Matrix &right)

{

  //## begin Matrix::operator=%470F762F032C_assign.body preserve=yes

  //## end Matrix::operator=%470F762F032C_assign.body

}





int Matrix::operator==(const Matrix &right) const

{

  //## begin Matrix::operator==%470F762F032C_eq.body preserve=yes

  //## end Matrix::operator==%470F762F032C_eq.body

}



int Matrix::operator!=(const Matrix &right) const

{

  //## begin Matrix::operator!=%470F762F032C_neq.body preserve=yes

  //## end Matrix::operator!=%470F762F032C_neq.body

}

//## Other Operations (implementation)

void Matrix::Proizv ()

{

  //## begin Matrix::Proizv%470F7891009C.body preserve=yes

  //## end Matrix::Proizv%470F7891009C.body

}



void Matrix::Standart ()

{

  //## begin Matrix::Standart%470F78AC0242.body preserve=yes

  //## end Matrix::Standart%470F78AC0242.body

}



void Matrix::Obratn ()

{

  //## begin Matrix::Obratn%470F78C3006D.body preserve=yes

  //## end Matrix::Obratn%470F78C3006D.body

}



void Matrix::Transp ()

{

  //## begin Matrix::Transp%470F78D00177.body preserve=yes

  //## end Matrix::Transp%470F78D00177.body

}



// Additional Declarations

  //## begin Matrix%470F762F032C.declarations preserve=yes

  //## end Matrix%470F762F032C.declarations



//## begin module%470F762F032C.epilog preserve=yes

//## end module%470F762F032C.epilog









4 Задание на лабораторное занятие

	

	1. Сгенерировать программный код на С++ для диаграммы классов, разработанной вами в предыдущей лабораторной работе.

	

	5 Содержание отчета

	

	- титульный лист;

	- постановка задачи;

	- листинг сгенерированного кода;

	- вывод.

	

	6 Контрольные вопросы

	

	1. Какие диаграммы необходимо предварительно разработать, чтобы выполнить кодогенерацию?

	2. Как посмотреть исходный код?

	3. Какие установки свойств доступны на вкладке C++?

	4. Какова структура создаваемого кода?

	5. Что необходимо добавить в шаблоны классов для получения работоспособного приложения?

	6. Какие шаги нужно предпринять для обновления модели по исходному коду?

	7. Какие основные этапы кодогенерации вы знаете? Расскажите кратко о каждом из них?




Лабораторная работа № 6

Тема: «Отладка и тестирование проектируемого программного обеспечения»



Цель работы:



1) отладка разработанного программного средства;

2) тестирование разработанного программного средства.



	1 Задание на самоподготовку

	

- уметь отлаживать программные средства;

- знать методику тестирования ПС.



	2 Краткие теоретические сведения



Отладка ПС  это деятельность, направленная на обнаружение и исправление ошибок в ПС с использованием процессов выполнения его программ. Тестирование ПС  это процесс выполнения его программ на некотором наборе данных, для которого заранее известен результат применения или известны правила поведения этих  программ. Указанный набор данных называется тестовым или просто тестом. Таким образом, отладку можно представить в виде многократного повторения трех процессов: тестирования, в результате которого может быть констатировано наличие в ПС ошибки, поиска места ошибки в программах и документации ПС и редактирования программ и документации с целью устранения обнаруженной  ошибки.

Отладка программного средства невозможна без представления физической структуры. На этом этапе проектирования необходимо разработать диаграмму компонентов.

Диаграммой компонентов (Component diagram) называется диаграмма UML, на которой показаны компоненты системы и зависимости между ними.

Компонентом называется физический модуль кода. Компонентами бывают как библиотеки исходного кода, так и исполняемые файлы. Например, .h и .cpp и .exe - будут отдельными компонентами.



2.1 Особенности разработки диаграмм компонентов в среде IBM Rational Rose 2003



Диаграмма компонентов служит частью физического представления модели, играет важную роль в процессе ООАП и является необходимой для генерации программного кода. Для разработки диаграмм компонентов в браузере проекта предназначено отдельное представление компонентов (Component View), в котором уже содержится диаграмма компонентов с пустым содержанием и именем по умолчанию Main (Главная).

Активизация диаграммы компонентов может быть выполнена одним из следующих способов:

Щелкнуть на кнопке с изображением диаграммы компонентов на стандартной панели инструментов. 

Раскрыть представление компонентов в браузере (Component View) и дважды щелкнуть на пиктограмме Main (Главная). 

Через пункт меню BrowseComponent Diagram (БраузерДиаграмма компонентов). 

В результате выполнения этих действий появляется новое окно с чистым рабочим листом диаграммы компонентов и специальная панель инструментов, содержащая кнопки с изображением графических примитивов, необходимых для разработки диаграммы компонентов (табл. 6.1).



Таблица 6.1 - Назначение кнопок специальной панели инструментов диаграммы компонентов

Графическое изображение

Всплывающая подсказка

Назначение кнопки



Selection Tool

Превращает изображение курсора в форму стрелки для последующего выделения элементов на диаграмме





Text Box

Добавляет на диаграмму текстовую область



Note

Добавляет на диаграмму примечание



Anchor Note to Item

Добавляет на диаграмму связь примечания с соответствующим графическим элементом диаграммы



Component

Добавляет на диаграмму компонент



Package

Добавляет на диаграмму пакет



Dependency

Добавляет на диаграмму отношение зависимости



Subprogram Specification

Добавляет на диаграмму спецификацию подпрограммы



Subprogram Body

Добавляет на диаграмму тело подпрограммы



Main Program

Добавляет на диаграмму главную программу



Package Specification

Добавляет на диаграмму спецификацию пакета



Package Body

Добавляет на диаграмму тело пакета



Task Specification

Добавляет на диаграмму спецификацию задачи



Task Body

Добавляет на диаграмму тело задачи



Generic Subprogram

Добавляет на диаграмму типовую подпрограммы(по умолчанию отсутствует)



Generic Package 

Добавляет на диаграмму типовой пакет (по умолчанию отсутствует)



Database

Добавляет на диаграмму базу данных (по умолчанию отсутствует)



Программа IBM Rational Rose 2003 не поддерживает следующие графические стереотипы. Графическое изображение этих стереотипов и их краткая характеристика приводятся в следующей таблице (табл. 6.2). При этом каждому из компонентов, как правило, соответствует отдельный файл исходной сборки программного приложения.

Использование стереотипов существенно увеличивают наглядность графического представления диаграммы компонентов и позволяют архитектору уточнить характер реализации модели программистом на выбранном языке программирования.


Таблица 6.2. Графическое изображение стереотипов компонентов и их характеристика

Графическое изображение и имя по умолчанию

Название стереотипа

Характеристика стереотипа компонента



Subprogram Specification

Спецификация подпрограммы. Содержит описание переменных, процедур и функций и не содержит определений классов



Subprogram Body

Тело подпрограммы. Содержит реализацию процедур и функций, не относящихся к каким-то классам, при этом не содержит определений классов или реализаций операций других классов



Main Program

Главная программа. Реализует базовую логику работы программного приложения и содержит ссылки на другие компоненты модели



Package Specification

Спецификация пакета. Содержит определение класса, его атрибутов и операций. В языке программирования С++ спецификации пакета соответствует отдельный файл с расширением «h» 



Package Body

Тело пакета. Содержит код реализации операций класса. В языке программирования С++ спецификации пакета соответствует отдельный файл с расширением «cpp»



Task Specification

Спецификация задачи. Может содержать определение класса, его атрибутов и операций, которые предполагается использовать в независимом потоке управления



Task Body

Тело задачи. Может содержать реализацию операций класса, которые имеют независимый поток управления.



Generic Subprogram

Типовая подпрограмма. Содержит описание переменных, процедур и функций, которые могут быть использованы в нескольких программных приложениях. При этом типовая подпрограмма не содержит определений классов



Generic Package

Типовой пакет. Содержит определение класса, его атрибутов и операций, которое может быть использовано в нескольких программных приложениях



Database

База данных. Содержит определение одного или нескольких классов, их атрибутов и, возможно, операций. При этом соответствующие классы могут быть реализованы в форме одной или нескольких таблиц базы данных


2.1.1 Добавление компонента на диаграмму компонентов и редактирование его свойств



Для добавления компонента на диаграмму компонентов нужно с помощью левой кнопки мыши нажать кнопку с изображением пиктограммы компонента на специальной панели инструментов, отпустить левую кнопку мыши и щелкнуть левой кнопкой мыши на свободном месте рабочего листа диаграммы. Добавить компонент на диаграмму можно также с помощью операции главного меню: ToolsCreateComponent или с помощью операции контекстного меню: NewComponent, предварительно выделив представление компонентов в браузере проекта.

В результате этих действий на диаграмме появится изображение компонента с маркерами изменения его геометрических размеров и предложенным средой именем по умолчанию, которое разработчику следует изменить (рис. 6.1).





Рисунок 6.1 - Диаграмма компонентов после добавления компонента Main.exe



Для каждого компонента можно определить различные свойства, такие как стереотип, язык программирования, декларации, реализуемые классы. Редактирование этих свойств для произвольного компонента осуществляется с помощью диалогового окна спецификации свойств (рис. 6.2).





Рисунок 6.2 - Диалоговое окно спецификации свойств компонента Main.exe



В частности, для компонента Main.exe можно выбрать стереотип <<EXE>> из предлагаемого вложенного списка, поскольку применительно к разрабатываемой модели предполагается реализация этого компонента в форме исполнимого файла. При этом на вкладке Realizes (Реализует) содержатся все классы, включая и актеров, которые на данный момент присутствуют в модели.

По умолчанию в среде IBM Rational Rose 2003 для всех добавляемых на диаграмму компонентов в качестве языка реализации используется язык анализа, который в последствии следует изменить на тот язык программирования, который предполагается использовать для написания программного кода. В дальнейшем при генерации программного кода необходимо будет дополнительно выбрать те классы, которые реализует тот или иной компонент модели.



2.1.2 Добавление отношения зависимости и редактирование его свойств



Добавление отношения зависимости на диаграмму компонентов аналогично добавлению соответствующего отношения на диаграмму вариантов использования. Для добавления зависимости между двумя компонентами нужно с помощью левой кнопки мыши нажать кнопку с изображением зависимости на специальной панели инструментов, отпустить левую кнопку мыши, щелкнуть левой кнопкой мыши на изображении исходного компонента на диаграмме и отпустить ее на изображении целевого компонента. В результате этих действий на диаграмме появится изображение отношения зависимости в форме пунктирной линии со стрелкой, соединяющей два выбранных компонента.


2.1.3 Пример построения диаграммы компонентов



Ниже представлена диаграмма компонентов для программного средства, реализующего алгоритм дискриминантного анализа (рис. 6.3).





Рисунок 6.3 – Диаграмма компонентов рассматриваемого ПС



2.2 Тестирование программного средства



Тестирование – процесс многократного повторения программы с целью обнаружения ошибок. Существуют следующие методы тестирования ПС:

- статическое тестирование (ручная проверка программы за столом);

- детерминированное тестирование (при различных комбинациях исходных данных);

- стохастическое (исходные данные выбираются произвольно, на выходе определяется качественное совпадение результатов или примерная оценка).

При тестировании разработанного ПС необходимо использовать подходящий по функциональности пакет прикладного математического программного обеспечения.

В выбранной среде необходимо произвести расчеты всех параметров, реализованных в ПС, затем следует сравнить результаты и сделать вывод о качестве данного программного продукта.


Лабораторная работа № 7

Тема: «Исследование характеристик разработанной автоматизированной системы»



Цель работы:



1) исследовать структуру и характеристики программного средства.



	1 Задание на самоподготовку



	-	вспомнить изученный материал по дисциплине «Технология разработки программного обеспечения»;

	-	знать методику построения функциональной схемы, укрупненной схемы алгоритма работы программного средства.



2 Задание на лабораторное занятие



По аналогии с первой лабораторной лаботой исследовать структуру и характеристики разработанного программного средства: разработать функциональную схему и укрупненную схему алгоритма (см. лаб. раб. №1).




Список использованных источников





Уэнди Боггс, Майкл Боггс. UML и Rational Rose 2002. Издательство “Лори”, 2004. -  509 с.

Дж. Рамбо, М. Блаха. UML 2.0. Объектно-ориентированное проектирование и разработка. 2-у изд. – СПб. Питер, 2007. – 554 с.: ил.

www.intuit.ru


Приложение А

Техническое задание


Приложение Б

Варианты заданий



/Старые/



1 Автоматизированная информационная система «Ремонт оборудования».



Предприятие – высшее учебное заведение. В структуре есть вычислительный центр, в составе которого, в свою очередь, есть ремонтная мастерская.

Словесное описание предметной области: Предприятие, в состав которого входит ряд подразделений, имеет ремонтную мастерскую, в которой производится различного вида ремонт средств вычислительной и оргтехники. Необходимо вести учет, сданной в ремонт техники. Для каждой единицы техники необходимо хранить её инвентарный номер, название устройства, его модель, год выпуска, какому подразделению устройство принадлежит на текущую дату, т.е. необходимо хранить историю перемещения техники между подразделениями организации. Перемещение единицы техники осуществляется на основе документа, в котором указано с какой даты данная единица перемещается в указанное подразделение. Эта дата одновременно является датой окончания нахождения единицы техники в предыдущем подразделении. Необходимо также хранить дату сдачи единицы техники в ремонт, вид ремонта, срок ремонта, ФИО, номер сотрудника, сдавшего технику в ремонт, ФИО, номер сотрудника, который принял технику в ремонт, ФИО, номер, должность сотрудника, выполняющего ремонт, перечень необходимых для ремонта запасных частей, их стоимость на текущую дату. Стоимость запасных частей определяется из документа – накладной, по которой они получены, в ней и указана дата получения, стоимость. О каждом сотруднике необходимо хранить информацию о всех перемещениях за время работы на данном предприятии: дата начала работы, дата окончания, подразделение, должность.

Необходимо реализовать следующую обработку данных:

Построить диаграмму: количество техники определенного наименования в заданном подразделении по годам (за три года).

Список сотрудников (ФИО, год рождения) по подразделениям, мужчин, достигших пенсионного возраста в текущем году (60 лет).

Название подразделения, у которого была наибольшее количество техники, переданной в ремонт.



2 Автоматизированная информационная система «Баскетбол. Женская суперлига»



Предприятие – областной спорткомитет. В структуре комитета есть отдел, ведущий информацию о командах высшей лиги.

Словесное описание предметной области: Команда клуба "Надежда" города принимает участие в соревнованиях женской баскетбольной суперлиги России. В этих соревнованиях участвуют порядка 12 команд из разных клубов и городов России. Участие в соревновании определяется документов, в котором указано: год проведения (2002 – 2003), клубы, участвующие в розыгрыше. Необходимо хранить информацию об клубах и участниках соревнований. Каждый клуб характеризуется следующей информацией: название, дата создания, город, спонсоры (ФИО, название организации, если это не частное лицо), главный тренер, который тренирует команду клуба в настоящее время (необходимо хранить историю о всех тренерах) – ФИО, возраст, звание. Также необходимо знать информацию о наличии залов клуба (название зала, адрес, вместимость, телефон, категория (низкая, средняя и т.п.), информацию о видах транспорта, предоставляемого клубом для перемещения участников соревнований (вид, вместимость). Необходимо также хранить информацию о всех участниках соревнований, которые в разное время играли за клуб – ФИО, дату рождения, звания, антропологические данные (дата, рост, вес), игровой номер, выполняемое амплуа. Эта информация может меняться с течением времени (игрок сменил амплуа, вырос), поэтому необходимо хранить историю.

Необходимо реализовать следующую обработку данных:

Список игроков (имя, год рождения) заданного клуба на текущий год, имеющих максимальный рост;

Построить диаграмму: перечень клубов, участвующих в соревнованиях в текущем году – город, количество залов.

Список тренеров заданного клуба (ФИО, год рождения) за всю историю существования клуба.





3 Автоматизированная информационная система «Технический осмотр автомобилей» 



Предприятие – учреждение ГИБДД

Словесное описание предметной области: При проведении технического осмотра автомобиля необходимо фиксировать следующие данные: госномер автомобиля, проходящего технический осмотр, номер двигателя, цвет, марка, номер технического паспорта, номер водительского удостоверения, ФИО владельца, адрес прописки, год рождения, пол. Данные фиксируются на дату прохождения текущего осмотра, необходимо хранить историю осмотров – дата прохождения, результат. Необходимо также фиксировать ФИО, должность, звание сотрудника ГАИ, проводившего осмотр, заключение осмотра. Каждый день технический осмотр могут проходить много автомобилей, проводить осмотр могут разные сотрудники, но каждый сотрудник проводит за день не более 10 осмотров. 

Необходимо реализовать следующую обработку данных:

Построить диаграмму: количество автомобилей, прошедших техосмотр за заданный месяц с разбивкой по дням.

Список сотрудников ГАИ, проводивших осмотр на заданную дату: ФИО, звание сотрудника,  госномера автомобилей, которые он осматривал.

История прохождения осмотров заданным автомобилем (номер двигателя) – дата прохождения, результат.



4 Автоматизированная информационная система «Оплата за междугородние разговоры»



Предприятие связи, предоставляющие услуги междугородней связи.

Словесное описание предметной области: Технолог междугородней телефонной станции (МТС) вносит в БД информацию о новых клиентах, пользующихся услугами, это: номер телефона клиента, ФИО, адрес, дата регистрации. Также технолог изменяет цены за пользование услугами, эти данные хранятся в следующем виде: дата, название населенного пункта, с которым осуществляется связь, стоимость одной минуты разговора, льготная стоимость (с 20.00 до 6.00). Оператор МТС фиксирует дату разговора, город, с которым произошел разговор, номер абонента, длительность разговора. После этого оператор отсылает абоненту квитанцию об оплате. Он также принимает извещение об оплате и фиксирует, что те или иные разговоры оплачены.

Необходимо получить реализовать следующую обработку данных:

Построить диаграмму: количество абонентов, соединившихся с заданным городом за заданный месяц с разбивкой по дням.

Список абонентов, имеющих задолженности по оплате (срок оплаты – 20 дней) – дата, название организации, предоставляющей услуги связи, телефон, ФИО, адрес абонента.

Стоимость оплаты одной минуты разговора для разных населенных пунктов на заданную дату: название организации, предоставляющей услуги связи, .дата, название населенного пункта, стоимость одной минуты, льготная стоимость одной минуты.



5 Автоматизированная информационная система «Оплата услуг центра доступа в Интернет)



Предприятие – провайдер, предоставляющий услуги доступа в Интернет в своем зале.

Словесное описание предметной области: В БД заносится следующая информация о клиенте, пользующегося услугами Интернет: номер компьютера клиента, IP-адрес, дата, время начала соединения, окончания соединения, которые фиксируются автоматически при соединенияя. Цены за пользование услугами могут изменяться, эти данные хранятся в следующем виде: дата, стоимость одной минуты соединения, льготная стоимость с 20.00 до 2.00, льготная стоимость с 02.00 до 06.00. Для каждого абонента формируется квитанция об оплате, в которой содержится: название, адрес, телефон организации, выдавшей квитанцию, дата, время начала, окончания сеанса, количество минут, стоимость одной минуты, итоговая сумма, номер, ФИО оператора, выдавшего квитанцию, номер смены. В одной квитанции м.б. представлена информация о нескольких сеансах связи.

Необходимо реализовать следующую обработку данных:

Построить диаграмму: количество клиентов за заданный месяц с разбивкой по дням.

Время заданных суток, на которое пришлось максимально количество клиентов.

Список сотрудников заданной смены: ФИО, должность, домашний адрес, домашний, мобильный телефоны.



6  Автоматизированная информационная система «Комплектующие к станкам»



Предприятие, имеющее в своей структуре производственные участки и склады.

Словесное описание предметной области: необходимо облегчить работу по учету комплектующих деталей, необходимых для ремонта и нормального функционирования станков предприятия. Каждый станок имеет номер, название (модель) и относится к определенному типу (токарные, фрезерные и т.п.). Необходимо фиксировать дату начала работы станка, эксплутационный срок и дату его списания. Каждому станку могут соответствовать разные комплектующие детали, каждая также имеет номер, название. Деталь получают со склада по накладной, в которой указано – с какого склада деталь получена, дата получения, цена детали на дату получения. На накладной расписывается ремонтник, производящий наладку и ремонт станка. Складов на предприятии м.б. несколько, каждый имеет номер, адрес (улица, номер дома), количество метров занимаемой площади.

Необходимо реализовать следующую обработку данных:

Построить диаграмму: количество деталей заданного наименования, отпускаемых с заданного склада за заданный месяц с разбивкой по дням.

Список станков заданного наименования, находящихся на балансе предприятия на текущую дату – название организации, дата, номер станка, дата ввода его в эксплуатацию.

Список складов – название организации, дата, номер склада, адрес.



7 Автоматизированная информационная система «Кадры предприятия»



Государственное предприятие.

Словесное описание предметной области: На предприятии существует ряд подразделений. Каждое подразделение имеет штатное расписание, в котором имеется перечень должностей. Каждая должность имеет название, краткое название, шифр, нижнюю и верхнюю границы разрядов единой тарифной сетки (от 1 до 18). Также известно, сколько единиц каждой должности выделено подразделению. О сотрудниках, работающих на предприятии, необходимо знать всю историю их перемещения – где, в каком подразделении работал сотрудник, на какой должности, какой имел разряд, дату начала и дату окончания работы. Также о сотруднике необходимо хранить личные данные: ФИО, возраст, пол, семейное положение.

Необходимо реализовать следующие запросы:

Штатное расписание заданного подразделения –должность, разряд – нижняя, верхняя граница, количество ставок.

Список сотрудников на заданную дату (ФИО, дата рождения), женского пола, достигших пенсионного возраста (55 лет) в текущем году по подразделениям.

Построить диаграмму: Список сотрудников моложе 20, работающих на заданной должности на предприятии.



8 Автоматизированная информационная система «Банк данных товаров, производимых различными предприятиями» (реклама).



Рекламное предприятие.

Словесное описание предметной области: Необходимо хранить информацию о товаре, который производится предприятиями области – каждый товар имеет название, номер, относится к какой-либо группе товаров (канцелярские принадлежности, бумага, скобяные товары и т.п.). Цена товара меняется во времени и определяется позицией прайс-листа, выпускаемого периодически на предприятии, производящем товар. Предприятие характеризуется названием, имеет статистический код, адрес, телефон. Каждое предприятие может производит много товаров, и в тоже время один и тот же товар могут производить несколько предприятий. Также необходимо знать ФИО и должность руководителя предприятия, телефон отдела маркетинга предприятия,  руководителя отдела маркетинга, ФИО контактного лица.

Необходимо реализовать следующие запросы:

Список товаров, выпускаемых заданным предприятием (название предприятия, дата, название товара, последняя цена, данные сгруппировать по группе товара).

Список предприятий, выпускающих заданный товар – название товара, дата, название предприятия, название населенного пункта.

Список всех предприятий – дата, название предприятия, телефон, ФИО контактного лица.



9 Автоматизированная информационная система «Учет договоров страхования»



Предприятие – страховая организация.

Словесное описание предметной области: Страховая организация заключает договора с физическими лицами и юридическими организациями. Для организации оформляется коллективный договор, в котором перечислены страхуемые сотрудники: ФИО, возраст, категория риска (первая, вторая, высшая и т.п.). О предприятии хранится следующая информация: код, полное наименование, краткое наименование, адрес, банковские реквизиты (номер банка), специализация предприятия (медицинское учреждение, автотранспортное предприятие, учебное заведение и т.п.). В заключаемом коллективном договоре указывается дата заключения, срок договора (конец действия договора), сумма выплат по каждой категории сотрудников, выплаты по страховым случаям. Выплаты зависят от категории сотрудника. Необходимо также хранит информацию о страховом агенте, заключившем договор (ФИО, паспортные данные). Каждый агент может заключить много договоров, в каждом договоре м.б. оформлено несколько сотрудников. А каждый конкретный договор м.б. заключен только одним агентом.

Необходимо реализовать следующие запросы:

Список действующих договоров, заключенных заданным предприятием на текущую дату – название предприятия, адрес, дата, список договоров – номер, дата начала, дата окончания.

Список страховых агентов, работающих с заданным предприятием на текущую дату (ведущим действующие договора) – дата, название страховой фирмы, ФИО страхового агента, контактный телефон;

Список страховых выплат для каждой категории работников на текущую дату – дата, категория работника, страховая выплата.



10 Автоматизированная информационная система «Учёт спроса и предложения» 



Производственное предприятие, имеющее в структуре отдел маркетинга.

Словесное описание предметной области: Отдел маркетинга предприятия занимается спросом выпускаемого товара. Каждый товар характеризуется кодом, названием, категорией (промышленные, бытовые, торговое оборудование и т.п.). Продажа товара на предприятии осуществляется по накладным, в которых указано кому отправлен товар (юридическое или физическое лицо, название, имя, адрес, номер, серия документа, банковские реквизиты (номер и название банка). В накладной также указывается отпускная цена на текущую дату, количество отпущенного товара. Необходимо отслеживать название населенных пунктов, название региона России и страны ближнего или дальнего зарубежья куда отправлен товар. Каждая накладная соответствует одному пункту назначения и одному покупателю.

Необходимо реализовать следующие запросы:

Список покупателей, сделавших покупку на максимальную сумму на текущую дату – дата, название покупателя, адрес, сумма покупки.

Изменение стоимости заданного товара за весь учитываемый период времени (название предприятия, производящего товар, наименование товара, дата, стоимость);

Список существующих категорий товаров.



11 Автоматизированная информационная система «Учет приказов и распоряжений»



Предприятие, имеющее в своей структуре ряд иерархически подчиняющихся подразделений. 

Словесное описание предметной области: Необходимо хранить информацию о внутренних приказах, распоряжениях или других подобных документах, сроках их выполнения и исполнителях. Например: название документа - "Указание о введении в действие плана по совершенствованию охраны труда", мероприятие, описываемое в документе – "Установить порядок выпуска приказов по случаю нарушения охраны труда", - исходящий корреспондент (человек, готовивший приказ) – гл. инженер.

Информация о исходящем корреспонденте: название подразделения, должность корреспондента, ФИО. Приказ, распоряжение характеризуются номером, датой, содержанием, мероприятием, ответственным за выполнение (название подразделения, должность, ФИО), датой выполнения мероприятия, пометкой о выполнении мероприятия. В одном документе может быть перечислено несколько мероприятий. Фиксируется дата выхода документа. Распоряжение подписывает сотрудник ранга руководителя предприятия, необходимо фиксировать должность и ФИО.

Необходимо реализовать следующие запросы:

Список исходящих корреспондентов, мероприятия по которым на заданную дату не были выполнены – текущая дата, дата выхода документа, название мероприятия, дата выполнения, ФИО, должность, название подразделения ответственного.

Список мероприятий за заданный период – дата начала периода, дата окончания периода, название мероприятия, выполнено или нет;

Список всех зафиксированных документов заданного типа (например, приказов) на текущую дату, отсортированных по дате документа – название предприятия, текущая дата, название вида документа, список документов – номер, дата документа, пометка о выполнении.



12 Автоматизированная информационная система «Расчет заработной платы»



Государственное предприятие, имеющее в своей структуре ряд иерархически подчиняющихся подразделений.

Словесное описание предметной области: расчет заработной платы производится для сотрудников предприятия, работающих на бюджетной основе. Для сотрудника определена должность и разряд. В соответствии с единой тарифной сеткой каждый разряд имеет свой коэффициент. Оклад рассчитывается как произведение минимального размера оплаты труда (он может меняться со временем) на коэффициент, соответствующий разряду. Также сотрудник имеет доплату – так называемый уральский коэффициент в размере 15 процентов от оклада. Удержания – 13 процентов подоходный налог, 1 процент – пенсионный фонд, 1 процент – профсоюзный взнос, если сотрудник член профсоюза. Необходимо вести расчет заработной платы и накапливать информацию по сотруднику на протяжении всего периода его работы. Необходимо за каждый месяц рассчитывать и хранить сколько всего начислено, удержано и к выплате. Расчет больничных и отпускных дней не вести.

Необходимо реализовать следующие запросы:

Список коэффициентов, соответствующих разрядам на текущую дату – дата, список коэффициентов – разряд, коэффициент (разрядов 18).

Список сотрудников, имеющих минимальную ЗП за текущий месяц – дата, список сотрудников - ФИО, должность сотрудника, сумма к выдаче.

Список всех начислений, удержаний, выплат для заданного сотрудника на текущий месяц – дата, ФИО, должность сотрудника, все начисления, удержания, выплата.



13 Автоматизированная информационная система «Учет средств вычислительной и оргтехники»



Предприятие, имеющее в своей структуре ряд иерархически подчиняющихся подразделений.

Словесное описание предметной области: Необходимо вести учет средств ВТ и оргтехники на предприятии. Каждое средство имеет инвентарный номер, название, модель, дату приобретения, стоимость. На предприятии средства могут передаваться из подразделения в подразделение, при этом необходимо знать дату передачи и новое материально ответственное лицо (ФИО, должность). Материально ответственный должен работать в том подразделении куда передается техника. Также необходимо знать номер комнаты где находится техника на текущий момент. О каждом подразделении фиксируется номер, полное и краткое название. Также необходимо фиксировать кто по должности в подразделении является руководителем. а кто материально ответственным лицом.

Необходимо реализовать следующие запросы:

Список средств ВТ и оргтехники, закрепленной за данным подразделением в настоящий момент времени – название предприятия, название подразделения, дата, список средств ВТ и оргтехники – инвентарный номер, название, модель.

Список всех помещений подразделения на текущий момент времени, их площадь – название предприятия, название подразделения, дата, список помещений – номер, количество кв.м.

Наименование техники, закрепленной за заданным материально ответственным лицом на текущий момент времени – дата, ФИО, должность материально ответственного лица, список техники – инвентарный номер, название, модель.



14 Автоматизированная информационная система «Учет инвентаря на складах предприятия»



Предприятие, имеющее в своей структуре ряд иерархически подчиняющихся подразделений. 

Словесное описание предметной области: Предприятие имеет несколько складов, в которых находится рабочий инвентарь (тип инвентаря - спецодежда, инструменты, подсобные средства и т.п.). Каждый склад имеет номер, название, телефон. Инвентарь завозят на склад в соответствии с приходной накладной, которая имеет дату, перечень (наименование) инвентаря, количество единиц каждого инвентаря. Также указывается ФИО и должность сотрудника склада, принявшего инвентарь. Расход инвентаря со склада осуществляется по расходной накладной, которая имеет ту же структуру, что и приходная, только учитывает расход инвентаря со склада. Поступление инвентаря на склад отражается в карточке складского учета, заводимой для каждого наименования инвентаря. В карточке учитываются все приходы и расходы.

Необходимо реализовать следующие запросы:

Список инвентаря заданного типа на заданном складе и его количество на текущую дату.

Список всех приходов и расходов инвентаря заданного наименования на всех складах – дата, название инвентаря, список - дата прихода, количество, дата расхода, количество.

Список всех складов, отсортированных по названию на текущую дату.



15 Автоматизированная информационная система «Учет пациентов клинической больницы».



Клиническая больница.

Словесное описание предметной области: На каждого вновь поступившего больного заводится карточка медицинской статистики: ФИО больного, пол, возраст, предварительный диагноз, как поступил больной (направление поликлиники, доставлен скорой помощью и т.п.), дата поступления, прочее описание: примерный рост, цвет волос, особые приметы, примерный возраст, номер палаты, в которую положен больной. Информация о больном м.б. неполной, если он не может ответить на вопросы. За время лечения в больнице больной м.б. переведен в разные палаты, необходимо знать дату перевода, номер и телефон палаты. После окончания лечения фиксируется дата выписки и причина выписки либо другой исход (полное излечение, направлен в санаторий и т.п.)

Необходимо реализовать следующие запросы:

Телефон и номер палаты заданного больного (больной м.б. определен по ФИО, если однофамильцев несколько, указать всех, при этом выводить возраст больного).

Список всех больных на заданное число – дата, номер палаты, ФИО больного, возраст, дата поступления.

Список больных, достигших заданного возраста женского пола на текущую дату– дата, ФИО больного, возраст.

16 Автоматизированная информационная система «Места проведения досуга граждан» (информационная служба города)



Организация, занимающиеся организацией досуга населения.

Словесное описание предметной области: необходимо вести учет всех объектов города, где могут проходит развлекательные мероприятия, отдых граждан. Объект характеризуется названием, типом (танцзал, спортзал, бильярдный клуб и.т.), адресом, количеством мест, адресом, информацией о владельце – частное, юридическое лицо, название, имя, ФИО руководителя, контактный телефон, дата открытия. Объект может закрыться, а потом снова начать работу (сезонные объекты), это необходимо учитывать. Необходимо собирать информацию о популярности среди населения данного объекта (дата, количество посетивших объект). Также необходимо иметь информацию о мероприятиях, заявленных на проведение. В заявке должны учитываться: название объекта, дата проведения, название мероприятия, вид мероприятия (концерт, клубное первенство, просмотр фильма и т.п.).

Необходимо реализовать следующие запросы:

Список объектов города на текущую дату –дата, название действующих объектов – тип, название, адрес.

Список мероприятий, которые будут проводится в ближайшие 2 недели – дата проведения, название мероприятия, название объекта, адрес.

Список объектов заданного типа на текущую дату.



17 Автоматизированная информационная система «Досуг молодежи»



Предприятие – Дом творчества молодежи.

Словесное описание предметной области: в доме культуры ведется учет сведений о детях, посещающих кружки детского творчества, также необходимо иметь информацию о сотрудниках дома культуры или других гражданах, которые ведут занятия в кружках. О преподавателях, ведущих занятия необходимо знать паспортные данные, ФИО, дату рождения, пол, семейное положение, образование, адрес, домашний телефон, специализацию (бальные танцы, хореография, фотодело и т.п.). Каждый преподаватель может вести занятия в нескольких группах, но только по своей специализации, при чем каждый может владеть несколькими специализациями. Каждый кружок или студия имеет несколько детских групп, как правило, сформированных по возрасту. О ребенке необходимо знать ФИО, возраст, если он учится – номер школы, класс, данные свидетельства о рождении (номер дата выдачи), адрес, домашний телефон, сведения о родителях. Каждая студия или кружок имеет номер название, каждая группа также имеет номер и название. Дети, как правило не переходят из группы в группу, но если переходят, это надо учитывать – дату перехода, откуда и куда перешел, для этого надо хранить дату начала посещения кружка и дату окончания.

Необходимо реализовать следующие запросы:

Список детей заданной группы на текущую дату – название дома культуры, название кружка, название группы, дата, список детей – ФИО, возраст.

Списки всех кружков и студий с именами руководителей на текущую дату.

Данные о заданном ребенке – личные данные и какой кружок и группу посещает.



18 Автоматизированная информационная система  «Выставочные залы города»



Предприятие – областной союз художников.

Словесное описание предметной области: необходимо иметь информацию о выставочных залах города, выставках, проводимых в них, участниках выставок. Каждый выставочный зал характеризуется название, площадью, адресом, телефоном. Зал может принадлежать какому-либо владельцу – это м.б. городская организация. областная, общественная, частное лицо. Необходимо иметь сведения о владельцах (название или имя, адрес, телефон). Также необходимо хранить информацию о видах выставок, проводимых в выставочных залах – это могут быть выставки изобразительного искусства, прикладного, скульптура и т.п., датах проведения выставок О художниках, которые принимают участие в выставках, необходимо хранить: имя, место и дату рождения, краткую биографическую справку, сведения об образовании. Каждый художник на выставке может представлять несколько работ, необходимо хранить название работы, её исполнение (краски, акварель, скульптура и т.п.), дату создания, размеры: высота, ширина, если это скульптура – объем.

Необходимо реализовать следующие запросы:

Список участников и их работы заданной выставки – название выставки, дата проведения, список работ – название. исполнение, ФИО автора, возраст автора, дата создания.

Список всех выставочных залов города – дата, название, адрес, занимаемая площадь, владелец.

Перечень выставок, проходящих в городе с адресами залов на текущий момент – дата, список – название выставки, адрес зала.







19 Автоматизированная информационная система «Учет отказа оборудования»



Предприятие, имеющее в своей структуре ряд иерархически подчиняющихся подразделений. 

Словесное описание предметной области: необходимо вести учет отказа оборудования на каком-либо участке предприятия. Производственные участки на предприятии имеют номер, название (гальванический участок, участок переработки сырья и т.п.). На каждом участке может работать разное оборудование: газовое, сварочное, электрическое. Оборудование имеет номер и название (манометр, газосварочный аппарат и т.п.). Любое оборудование проходит технический осмотр, за год их м.б. несколько. Фиксируется дата осмотра и результат – годен к работе, передать в ремонт, списать и т.п., а также причину нерабочего состояния оборудования (механическая поломка, электропроводка и т.п. – причины отказа). Каждый осмотр проводит какой-либо сотрудник технического отдела, необходимо хранить о нем следующие данные: табельный номер, ФИО, занимаемую на время осмотра должность. Оборудование может отказать в работе и между техническими осмотрами, в таком случае также фиксируется дата, причина, ФИО сотрудника, проведшего соответствующий осмотр на момент отказа.

Необходимо реализовать следующие запросы:

Список отказавшего оборудования на участках предприятия – дата, список - название оборудования, тип оборудования, название участка, причина отказа, дата отказа.

История технических осмотров оборудования с заданным инвентарным номером  на предприятии – дата формирования отчета, инвентарный номер, название, тип оборудования результат осмотра.

Фамилии и должности сотрудников технического отдела на заданную дату – дата, список – ФИО, должность.



20 Автоматизированная информационная система «Каталог изданий периодической печати».



Отдел комплектации литературы библиотеки.

Словесное описание предметной области: на предприятии ежегодно выписываются издания, издающиеся на территории России. Необходимо вести сведения о выписанных и полученных номерах различных журналов и газет. Подписка м.б. оформлена на год и на половину года, необходимо хранить сроки подписки периодического издания (это м.б. газета или журнал) дата начала подписки, дата окончания, стоимость подписки, периодичность выхода, способ доставки (приносит почтальон, получение бандероли на почте, предполагаемую дату доставки – число, месяц). Надо знать подписной индекс издания, название. При получении издания необходимо фиксировать, что оно получено, какого числа и месяца, номер издания, а также фиксировать ФИО и должность сотрудника, получившего издание.

Необходимо реализовать следующие запросы:

Список всех изданий, выписанных на заданный год – сначала журналы, затем газеты, стоимость каждого издания на период подписки, период подписки.

Список изданий, которые не были получены в течение предыдущих двух месяцев – дата формирования отчета, список изданий – название, дата подписки, периодичность, количество неполученных номеров.

ФИО сотрудника подразделения, оформившего получение заданного издания на заданный месяц.



21 Автоматизированная информационная система «Банк данных туристических путевок сети турбюро»



Предприятие – туристическое бюро.

Словесное описание предметной области: Офисы сети туристических бюро предлагают информацию о имеющихся турах, наличии путевок, их стоимости. Каждый тур характеризуется типом (отдых на море, шор-тур, горные лыжи и т.п.), продолжительностью. Каждому конкретному туру может соответствовать один или более различных населенных пунктов, принадлежащих разным странам. В информации о туре приводятся сведения о наличии гостиниц в населенных пунктах, название, количество звездочек. Цена на конкретный тур и на конкретную дату определяется прайс-листами, периодически выпускаемыми сетью турбюро. Для каждого тура также указывается вид транспорта, пункт отправления группы:

Необходимо реализовать следующие запросы:

Полная информация о заданном туре;

Список всех пятизвездочных отелей, через которые проходят туры;

Прайс-лист на заданную дату, в котором д.б. указаны название организации владельца сети турбюро, её юридический адрес, телефон, ФИО контактного лица и перечень всех имеющихся туров.



22 Автоматизированная информационная система «Учет животных, птиц, рептилий в зоопарке» 



Предприятие – крупный зоопарк.

Словесное описание предметной области: каждому новому питомцу зоопарка присваивается уникальный номер, имя. Необходимо также хранить дату рождения, пол. О птицах дополнительно необходимо хранить сведения о месте зимовки (если такое существует – код, название страны, дата улета, дата прилета), для рептилий необходимо хранить сведения о его нормальной температуре, сроки зимней спячки. Каждому питомцу назначается рацион кормления, который характеризуется номером, названием, типом (детский, диетический, усиленный и т.п. Каждый тип рациона может содержать несколько названий рационов. Рацион может со временем меняться. Необходимо также учитывать зону обитания животного (название, характеристика). Каждое животное относится к одной зоне обитания. Также необходимо хранить информацию о том, к какому смотрителю на текущий момент прикреплен питомец. За каждым животным закреплен обязательно один смотритель, а каждый смотритель одновременно может обслуживать нескольких. Также в зоопарке есть ветеринары, которые тоже закреплены за животными. Каждый сотрудник имеет свой личный номер, имя, дату рождения, также необходимо знать номер телефона и семейное положение сотрудника. Если кто-то из одной семьи работает вместе (супруги), необходимо об этом знать.

Необходимо реализовать следующие запросы:

Полная информация по типу и имени питомца зоопарка;

Список сотрудников, работающих семейными парами – ФИО, дата рождения, телефон;

Перечень всех животных на текущую дату и номера их рационов.



23 Автоматизированная информационная система «Банк данных насаждений парков»



Предприятие по благоустройству парков.

Словесное описание предметной области: предприятие оказывает такие виды услуг, как: формирование ландшафтов, насаждение парков, озеленение улиц и скверов. Фирма имеет название, юридический адрес. Каждый обслуживаемый парк делится на зоны. Каждому высаживаемому растению присваивается уникальный номер в пределах зоны. Необходимо хранить дату высадки растения и возраст растения. Растение м.б. высажено в парке в многолетнем возрасте. Каждое растение относится к какому-либо одному виду. Режим полив каждого растения зависит от возраста растения и его вида. Каждый полив характеризуется днем (каждый, один раз в неделю и т.п.) временем полива, нормой воды в литрах. Насаждения поливаются максимум один раз в день. Также необходимо иметь информацию о служителях парка, которых ухаживают за насаждениями (ФИО, телефон, адрес). Каждый служитель закрепляется за насаждением графиком (дата). на каждую дату закреплен за насаждением только один служитель. Также есть декораторы парка, о них необходимо хранить информацию о ФИО, телефоне, адресе, образовании, названием законченного учебного заведения, категорией (высшая, средняя и т.п.)

Необходимо реализовать следующие запросы:

Полная информация по о насаждениях заданного вида;

Список сотрудников, работающих на заданную дату – ФИО, дата рождения, телефон;

Перечень всех растений заданного вида на текущую дату и режимы их полива.



24 Автоматизированная информационная система «Банк данных технологий создания различных продуктов». 



Предприятие, выпускающие продукты питания.

Описание предметной области:

Каждый продукт имеет название и для его производства требуется один или более ингредиентов, также каждый продукт можно создать по нескольким рецептам. Каждый рецепт имеет номер, название, описание и автора (код, фамилия, имя, страна, год). В каждом рецепте указана раскладка ингредиентов: название, количество грамм на кг продукта, способ подготовки ингредиента - код, название (размягчение, нагревание, просеивание и т.п.). Необходимо также знать число калорий на 1 грамм ингредиента. Цена ингредиента определяется из накладной на дату получения. Необходимо систематизировать продукты по группам (код, название группы). Также надо вести сведения о поставщиках ингредиентов: код, название, адрес, телефон. 

Необходимо реализовать следующие запросы:

Прайс-лист заданного поставщика на заданную дату – дата, реквизиты поставщика, название ингредиента, его стоимость за единицу;

Список блюд, имеющих минимальную калорийность;

Список блюд и названия рецептов для каждого блюда.



25 Автоматизированная информационная система «Музейные фонды»



Описание предметной области:

Музейные предметы хранятся в музейных фондах. Существуют различные фонды: живопись, графика, икона, скульптура, декоративно-прикладное искусство (ДПИ), нумизматика, археология, рукописи и редкая книга и т.п. Для удобства работы в ряде фондов предусмотрены вспомогательные картотеки комплектов - сервизов и гарнитуров в ДПИ, альбомов в графике, иконостасов в древнерусском искусстве и т.п. Необходимо реализовать ведение карточек музейных предметов - инвентарный номер, название, дата создания, точно определена дата создания или приблизительно, авторах работы (только первый автор – ФИО, дата рождения, страна), выставки, в которых участвовал музейный предмет. Необходимо вести учет движения (прием на хранение, передача на выставку, возвращение с выставки, списание и т.п.) музейных предметов вне (знать информацию об организации, которой на время передается предмет – название, адрес, телефон, ФИО контактного лица, адрес где проводится выставка, название выставки, дата начала работы, дата окончания работы) и внутри музея (из фонда в фонд), осуществлять оформление актов движения. Акты подписывает руководитель музея и хранитель фонда, отвечающий за предметы в музейном фонде. Предметы могут передаваться как в составе целого комплектом, так и по отдельности.

Необходимо реализовать следующую обработку данных:

	Местонахождение заданных музейных предметов на заданную дату, отдельно и по комплектам.

	Описание заданного комплекта – название комплекта, название предмета, дата создания предмета, автор, аннотация к предмету (небольшое текстовое описание).

	Карточка учета заданного предмета – инвентарный номер, название, дата создания, название комплекта (если предмет входит в комплект), название фонда, ФИО хранителя, отвечающего за предмет.



26 Автоматизированная информационная система «Расчет предельно-допустимых сбросов (ПДС) сточных вод предприятия»



Описание предметной области

Предприятие, для которого производится расчет ПДС может иметь несколько выпусков (сбросов) сточных вод. Каждый выпуск характеризуется своими техническими параметрами, которые учитываются в расчетах. Каждый выпуск имеет свой набор загрязняющих веществ (код, название). Для каждого выпуска существует свой контрольный створ (точка в водоеме, отстоящая от места выпуска на 50-500 м, в которой производится замер концентраций загрязняющих веществ – номер, название, расстояние от места выпуска). Несколько выпусков могут иметь один и тот же контрольный створ, но не наоборот. Расчет производится для каждого выпуска в отдельности в два этапа. Первый - это расчет для каждого загрязняющего вещества индивидуального ПДС (без учета других веществ) по специальной методике. Для этого расчета требуются следующие данные: фоновая концентрация вещества в контрольном створе, концентрация вещества в сточных водах выпуска, диаметр выпускного отверстия, минимальная скорость течения воды в месте выпуска, расход сточных вод, угол истечения стоков относительно поверхности водоема, расстояние от выпуска до поверхности водоема, до берега и до ближайшей границы водопользования (т. е. до контрольного створа), коэффициент неконсервативности (КНК) вещества, предельно допустимая концентрация (ПДК) вещества в контрольном створе.

Второй этап - расчет ПДС для каждого вещества (код, название, группа, класс опасности) на основе индивидуального ПДС с учетом других веществ, находящихся в одной группе с одинаковым лимитирующим фактором вредности (ЛФВ) или в одной группе с одинаковым классом опасности. Распределение веществ по группам ЛФВ и классам опасности происходит в зависимости от типа водопользования предприятия, для которого считается ПДС.

Проектируемая БД должна содержать информацию по всем предприятиям (код, наименование), для которых производится расчет ПДС. Значения фоновых концентраций, концентраций в стоках и ПДК веществ должны быть закреплены за датой.

Необходимо знать наименование и характеристики всех выпусков (код, наименование, дата), необходимых для проведения расчетов ПДС.

Необходимо реализовать следующую обработку данных:

список всех контролируемых веществ для каждого выпуска с концентрациями этих веществ в сточных водах;

ПДК, фоновая концентрация и КНК веществ по всем контрольным створам для каждого выпуска;

перечень всех выбросов для заданного предприятия в заданный момент времени.



27 Автоматизированная информационная система «Делопроизводство»



Описание предметной области:

Система предназначена для сотрудников общего отдела предприятия и должна обеспечивать исполнение следующих функций:

регистрацию деловой документации (входящей, исходящей и внутренней);

внесение изменений в ходе исполнения поручений (перенос сроков исполнения, назначение новых исполнителей);

Корреспонденты могут быть внутренними (отдел, должностное лицо, формирующее документ) и внешними (код, название организации). Необходимо хранить информацию об исполнителях (сотрудники предприятия) с указанием полностью их фамилий, должностей, телефонов, электронных адресов. Необходимо также хранить информацию об авторах резолюций с указанием фамилий, должностей, телефонов, электронных адресов (сотрудники предприятия) и перечень контролеров исполнения документов с указанием фамилий, должностей, телефонов, электронных адресов. Фиксируется номер и дата создания документа, дата его регистрации. В документе перечислены задачи (код, название) и исполнители задач. Каждый исполнитель может отвечать за несколько задач. За каждой задачей, указанной в конкретном документе закрепляется один исполнитель.

 Необходимо реализовать следующую обработку данных:

на заданную дату список документов (номер, название, тип – распоряжение, приказ и т.п.) у которых истекли сроки выполнения задач;

выдачу уведомлений на заданную дату приближающихся сроках исполнения задач (тех, у которых дата исполнения более заданной на определенное количество дней) – указать номер, название документа, название задачи, ФИО, должность исполнителя.



28 Автоматизированная информационная система «Учет цен на мясо и молоко» 



Описание предметной области:

Необходимо обеспечить хранение и обработку информации о закупочных и отпускных ценах на мясные и молочные продукты. Информация об изменениях закупочных и отпускных цен на молочные и мясные продукты поступает еженедельно. Каждый продукт имеет код, название, сорт, относится к той или иной группе продуктов (колбасные изделия, мясные полуфабрикаты, сыры, молоко, творожные изделия и т.п.). Информация поступает от молочных и мясных комбинатов (код, название, адрес телефон, ФИО и должность лица, предоставившего информацию), известна дата предоставления информации. Предприятие может находиться в данном регионе (город, область), либо принадлежать другому региону.

 Необходимо реализовать следующую обработку данных:

динамика закупочных и отпускных цен на заданное наименование товара (говядину, свинину и т.п.) за заданный промежуток времени;

закупочные и отпускные цены предприятий на заданную дату;

средняя закупочная и отпускная цена заданных видов продукции на заданную дату по регионам.



29 Автоматизированная информационная система «Обучение на курсах»



Описание предметной области:

Организация (код, название, адрес, телефон, электронный адрес) проводит курсы. Каждый курс имеет код, название, тип (информационные технологии, менеджмент и т.п.), количество дней обучения, количество обучаемых, цену, цену с учетом 20% НДС. Цена со временем может меняться. Цена устанавливается соответствующим документом (номер, дата, цена). Занятия проводят преподаватели (номер, ФИО, дата рождения, пол, образование, категория – высшая, первая, вторая). Закрепление преподавателей за курсами осуществляется с помощью документа, в котором указано какой курс будет проводить данный преподаватель, дата начала обучения, дата окончания. В выходные дни – суббота, воскресение – занятия не проводятся. Организация принимает заявки на обучение (обучение проводится только по заявкам и только для организаций), в которой д.б. указаны: название организации, отправляющей сотрудников на обучение, адрес, телефон, электронная почта: количество человек, о каждом сообщается ФИО, должность; на какие курсы и в какой срок необходимо обучение.

Необходимо реализовать следующую обработку данных:

прайс-лист организации на заданную дату – перечень курсов, количество дней, цена, цена с учетом НДС;

расписание заданного преподавателя за заданный период – название курса, дата начала, дата окончания;

заданный курс, за заданный период наполнение групп – полностью ли?



30 Автоматизированная информационная система «Учет горюче-смазочных материалов на автобазе»



Описание предметной области:

На автобазе (код, название) ведется учет горюче-смазочных средств (ГСМ), заправляемых в автомобили, выполняющих рейсы по соответствующим путевым листам. При заправке автомобилей в гараже формируется раздаточная ведомость, в которой указаны: номер ведомости, число. В одной ведомости м.б. оформлены данные на нескольких водителей. В каждой позиции ведомости записывается: марка автомобиля, гос.номер автомобиля, номер путевого листа, фамилия, инициалы водителя, количество заправленного ГСМ, в литрах и килограммах. ГСМ – это бензин, дизтопливо, дизмасло, автол, солидол, нигрол и т.п. Для каждого автомобиля на одну поездку м.б. выделено несколько видов ГСМ. Ведомость подписывает сотрудник, имеющий должность заправщика. Указываются его ФИО. В заголовке ведомости указывается автобаза, которой принадлежит автомобиль и гараж. У каждой автобазы м.б. несколько гаражей. Ведомости формируется отдельно для каждого гаража заправщиком гаража.

Необходимо реализовать следующую обработку данных:

количество заданного вида ГСМ, заправленных в заданном гараже за заданный период времени;

виды и количества ГСМ, полученных заданным водителем за заданный период;

перечень всех ГСМ, выданных за заданный период, их количество.


/Новые/



2_1. Автоматизированная информационная система «Индивидуальный план преподавателя»



Описание предметной области. 

Для каждого преподавателя (ФИО, Год рождения, Домашний адрес, Контактные телефоны) высшего учебного заведения (Код, Название, Краткое название) на каждый учебный год (Год начала учебного года, Год окончания учебного года) формируется индивидуальный план. В индивидуальном плане отражается общий объем работ преподавателя, который он должен выполнить в течение учебного года. Учет работ ведется по следующей форме:

№



Наименование работы

План

Факт





Осенний семестр

Весенний семестр

Осенний семестр

Весенний семестр















В течение учебного года преподаватель выполняет следующие виды работ (Код, Название Краткое название): «Учебная работа», «Учебно-методическая работа», «Научно-методическая работа», «Научно-исследовательская работа», «Организационно-методическая работа», «Внеучебная работа со студентами», «Прочие виды работ». Необходимо вести учет в часах (целых и долях часов) объем запланированных и фактически выполненных объемов работ для каждого преподавателя по семестрам. Для каждого преподавателя также необходимо фиксировать место работы – факультет (Код, Название, Краткое название), кафедра (Код, Название, Краткое название), занимаемую должность (Код, Название, Краткое название), время работы в этой должности (Дата начала, Дата окончания, Ставка, Дата избрания на должность), кем является преподаватель – штатным сотрудником или совместителем. Также для преподавателя фиксируются: 

- ученая степень (Код, Название, Краткое название) – доктор, кандидат; каких наук (Код, Название, Краткое название) – технических, экономических и т.п.; год присуждения;

- ученое звание (Код, Название, Краткое название) – профессор, доцент, с.н.с. и т.п.; год присуждения звания.

Необходимо осуществлять следующую обработку данных:

- формирование для каждого преподавателя итоговой суммы (в часах) запланированных и выполненных объемов работ по семестрам;

- список преподавателей, у которых фактическое значение выполненных работ превышает плановое (факультет, кафедра, ФИО, уч.степень, уч.звание, должность, семестр, кол-во перевыполненных объемов работ);

- список преподавателей заданной кафедры, имеющих заданную ученую степень на заданную дату.



2_2. Автоматизированная информационная система «Обслуживание заказов клиентов»



Описание предметной области. 

Предприятие (Код, Название, Краткое название) осуществляет доставку разных товаров (Код, Название, Краткое название) населению. Прием заказов от населения осуществляет специальная служба (Код, Название, Краткое название) предприятия. 

Для того чтобы стать потребителем услуг предприятия каждый абонент должен зарегистрироваться, при этом фиксируются его ФИО, адрес, телефон и паспортные данные (Серия, Номер, Дата выдачи, Кем выдан). Каждый абонент в течение дня может сделать несколько заказов (Дата, Время), заказу присваивается номер. 

В каждом заказе может содержаться несколько товаров, для каждого указывается количество товара, единица измерения (Код, Название, Краткое Название), цена за единицу товара, общая стоимость товара. Заказ также имеет итоговую сумму. При формировании бланка заказа, который будет подписан абонентом при получении товара фиксируется, оплачен заказ, или абонент получает товар в кредит. Также на бланке заказа указывается: реквизиты предприятия (название, адрес, контактные телефоны); ФИО и должность оператора, приявшего заказ; ФИО, должность сотрудника, доставившего заказ.

Необходимо осуществлять следующую обработку данных:

- список товаров (код, наименование), пользующихся наибольшим спросом (максимальное количество позиций заказов) у населения за заданный период;

- динамика изменения стоимости заданного товара за заданный период по месяцам;

- список наименований улиц, на которых проживают абоненты предприятия по убыванию числа абонентов.



2_3. Автоматизированная информационная система «Прохождение преддипломной практики студентами вуза» 



Описание предметной области.

Студенты высшего учебного заведения (Код, Название, Краткое название) в период подготовки дипломной работы (проекта) проходят преддипломную практику. Для каждого студента (Номер зачетной книжки, ФИО), обучающегося на определенной специальности (Код, Название, Краткое название), факультете (Код, Название, Краткое название), форме обучения (Код, Название, Краткое название) фиксируется место прохождения преддипломной практики – предприятие (Код, Название, Краткое название), адрес предприятия, ФИО, должность руководителя от вуза, ФИО, должность руководителя от предприятия, срок прохождения практики (Дата начала, Дата окончания). В базе данных также необходимо вести данные о сроках защиты практики для каждой группы, оценке, полученной студентом за практику. При вводе данных о месте прохождения практики для каждого студента необходимо помечать – планирует ли студент в дальнейшем работать на данном предприятии, варианты ответов - да, нет, не знаю.

Необходимо осуществлять следующую обработку данных:

- количество студентов, проходивших практику на заданном предприятии в заданный период;

- перечень предприятий (название, адрес) по алфавиту, на которых проходили преддипломную практику студенты заданной специальности за заданный период;

- на заданную дату список студентов заданной специальности и потока (год обучения), не имеющих оценку за практику.



2_4 Автоматизированная информационная система «Лицензионное программное обеспечение организации»



Описание предметной области.

Необходимо вести учет и анализ информации о лицензионном программном обеспечении (ПО), установленном на компьютерах организации (Код, Название, Краткое название). Для каждого компьютера фиксируется инвентарный номер, тип (рабочая станция или сервер), местоположение – в каком подразделении (Код, Название, Краткое название) организации компьютер установлен. Компьютеры могут передаваться из подразделения в подразделение, при этом необходимо знать сроки (Дата начала, Дата окончания) нахождения компьютера в подразделении и на основании какого документа он перемещается (Номер документа, Дата документа), тип этого документа (приказ, распоряжение и т.п.). При установке лицензионного ПО фиксируется, куда установлено ПО – на какой компьютер, название продукта, его тип (среда разработки прикладных программ, среда администрирования БД, операционная система, антивирусная программа и т.п.), фирма производитель, срок действия лицензии (Дата начала, Дата окончания), дата установки, цена за единицу ПО. При этом также необходимо фиксировать информацию об организации, продавшей программное обеспечение – название, адрес, контактные телефоны, адрес сайта.

Необходимо осуществлять следующую обработку данных:

- на заданную дату список подразделений, на компьютерах которых установлено не лицензионное ПО;

- список лицензионного ПО, количество лицензий на это ПО (по убыванию) на заданную дату;

- список подразделений, количество компьютеров у подразделения (по убыванию) на заданную дату.



2_5 Автоматизированная информационная система «Арендная плата за нежилые помещения»



Описание предметной области.

Организация (Код, Название, Краткое название, Адрес, Контактные телефоны, электронный адрес) сдает в аренду помещения. Каждое помещение характеризуется следующими показателями:

- адрес;

- площадь – кв.м.;

- площадь подвала – кв.м. (при наличии);

- коэффициент подвала – значение от 0 до 1;

- коэффициент технического обустройства помещения (КТ) – значение от 1 до 2.

Арендная плата зависит от базовой ставки за 1 кв.м. (в рублях), которая утверждается документом (Номер, Дата) агентства Госкомимущества России. 

Формула расчета месячной арендной платы (МАП):

МАП = (базовая ставка/12 * площадь помещения + базовая ставка/12 * площадь подвала * коэффициент подвала) * КТ.

При изменении базовой ставки МАП изменяется со следующего месяца после даты изменения ставки. Оплата производится ежемесячно.

Договор об аренде может заключаться как с организациями (Юридическими лицами), так и с физическими лицами. В договоре об аренде помещения, имеющего номер, дату фиксируется дата начала аренды, дата заключения аренды. Для юридического лица в БД заносятся название, адрес, ИНН, номер и дата лицензии о деятельности. Для физического лица – ФИО, паспортные данные (Серия, Номер, Дата выдачи, Кем выдан), ИНН и адрес. 

Необходимо осуществлять следующую обработку данных:

- итоговая сумма оплат за текущий месяц (на заданную дату);

- список арендаторов (тип, название, адрес и другие характеристики арендуемого помещения) на текущую дату;

- список помещений, не сданных в аренду на текущую дату.


2_6 Автоматизированная информационная система «Списание основных средств»



Описание предметной области. 

Основные средства - это имущество организации, предприятия со сроком полезного использования. На предприятии (Код, Название, Краткое название) имеется перечень основных средств разного типа (мебель, вычислительная техника, оборудование, инструменты и т.п.), закрепленных за подразделениями предприятия. Закрепление осуществляется на основании определенного документа, имеющего номер, дату, в нем указан срок закрепления средства за подразделением. При списании имущества предприятия создается комиссия, в которую входят руководитель предприятия, главный бухгалтер, главный инженер, главный энергетик, главный механик, руководитель подразделения, где находится средство, материально ответственный в подразделении. При списании средства формируется документ, имеющий номер, название, дату и подписи членов комиссии. В каждом документе может быть указано сразу несколько списываемых средств, для каждого указывается:

- инвентарный номер;

- название;

- принадлежностью к типу;

- дата постановки на учет в подразделении;

- плановый срок эксплуатации (год, месяц);

- балансовая стоимость (в рублях), определяемая при постановке средства на учет. 

Для каждого средства также указывается дефект, ставший причиной списания (Код, Название) – износ, поломка, не имеющая восстановления, утрата и др.

Необходимо осуществлять следующую обработку данных:

- на заданную дату список (наименование) средств, закрепленных за каждым подразделением, балансовая стоимость средства;

- динамика списания средств заданного наименования (количество) за заданный период по месяцам;

- на заданную дату список комиссии по списанию.



2_7. Автоматизированная информационная система «Аттестация сотрудников предприятия»



Описание предметной области. 

Предприятие (Код, Название, Краткое название) периодически проводит аттестацию сотрудников на соответствие ими занимаемой должности. Каждый сотрудник за время работы может проходить несколько аттестаций.

Для проведения аттестации (Дата) необходима следующая информация: ФИО сотрудника, дата рождения, место работы (Код, Название, Краткое название) подразделения, занимаемая должность (Код, Название, Краткое название), ставка, дата начала работы, дата окончания работы контракта), название, номер и дата приказа о назначении на должность. Необходимы также следующие сведения:

- сведения об образовании – какое заведение окончил, документ об образовании, квалификация по образованию (инженер, учитель, экономист);

- дата начала трудового стажа;

- дата начала стажа по специальности;

- сведения о повышении квалификации – в каком заведении проходил, дата начала, дата окончания прохождения.

У каждого сотрудника может быть несколько документов об образовании и повышении квалификации.

Каждому аттестуемому могут задать несколько вопросов, необходимо хранить количество заданных вопросов и количество правильных ответов. Также необходимо хранить оценку деятельности работника – соответствует или не соответствует занимаемой должности.

Каждую аттестацию проводит комиссия, необходимо фиксировать ФИО, место работы и должность члена комиссии. Максимальное число – 5 человек.

Необходимо осуществлять следующую обработку данных:

- на заданную дату список сотрудников (ФИО, место работы), не прошедших аттестацию – не соответствующих занимаемой должности;

- на заданную дату количество сотрудников, работающих на предприятии в заданной должности;

- список учебных заведений, предприятий, их адреса, на которых сотрудники предприятия повышали свою квалификацию.



2_8. Автоматизированная информационная система «Трудоустройство»



Описание предметной области. 

Организация (Код, Название, Краткое название Адрес, Контактные телефоны, электронный адрес) предоставляет услуги по трудоустройству. Организацией ведется банк данных о существующих вакансиях. По каждой вакансии поддерживается следующая информация:

- предприятие (Код, Название, Краткое название Адрес, Контактные телефоны, электронный адрес);

- название вакансии (должность);

- требования к соискателю: пол, возраст (Верхняя граница, Нижняя граница), образование (высшее, среднее, не имеет значение и т.п.), знание определенных видов деятельности (выбор из перечня - знание электронного документооборота, определенных прикладных программ и т.п.), коммуникабельность (да, нет);

- обязанности (выбор из перечня – заключение договоров, распространение агитационного материала, работа с клиентами и т.п.);

- предполагаемая оплата (Нижняя граница, Верхняя граница), единицы измерения оплаты - рубли;

- оформление трудовой книжки (да, нет);

- наличие социального пакета (да, нет);

- срок начала открытия вакансии;

- срок закрытия вакансии (вакансия занята).

Необходимо осуществлять следующую обработку данных:

- на заданную дату список предприятий, имеющих вакансии по заданной должности;

- название должности, на которую за заданный период было предложено максимальное количество вакансий;

- на заданную дату список предприятий, предлагающих вакансии, не требующих образования.



2_9. Автоматизированная информационная система «Спортивные сооружения области»



Описание предметной области.

Областная организация (Код, Название, Краткое название Адрес, Контактные телефоны, электронный адрес) ведет и предоставляет на сайте информацию о спортивных сооружениях области. По каждому сооружению ведется информация:

- место – населенный пункт, городского или сельского типа, адрес;

- номер, название, краткое название;

- тип сооружения (игровые виды спорта, легкоатлетический манеж, каток, ипподром и др.);

- площадь спортивной арены, кв.м.;

- вместимость зрителей, чел., тыс. чел.;

- организация (Код, Название, Краткое название Адрес, Контактные телефоны, электронный адрес), принявшая сооружение на баланс;

- дата принятия на баланс.

Каждое сооружение за время функционирования может находиться на балансе у разных организаций в разные периоды времени.

Необходимо также фиксировать мероприятия, проводимые в спортивных сооружениях:

- тип мероприятия – тренировочный процесс, соревнования, сдача в аренду, концерт и т.п.;

- название мероприятия;

- дата начала, дата окончания мероприятия;

- количество человек, посетивших мероприятие.

Необходимо осуществлять следующую обработку данных:

- на заданную дату список спортивных сооружений заданного типа;

- за заданный период динамика занятости спортивного сооружения в мероприятиях заданного типа по месяцам;

- на заданную дату список организаций, на балансе у которых находятся спортивные сооружения, их количество.



2_10 Автоматизированная информационная система «Справочник предприятия»



Описание предметной области.

Для формирования контактов организации, имеющей большой контингент клиентов, и представления их на сайте, необходимо хранить следующую информацию:

- код, название краткое название предприятия, каждого его подразделения, взаимодействующего с клиентами;

- вид деятельности предприятия, подразделения – работа с абонентами, изготовление продукции; изучение рынка спроса; IT-подразделение и др.;

- местоположение предприятия, подразделения – адрес, вплоть до номера комнаты. Местоположение может меняться, необходимо отслеживать все данные, для этого фиксируется дата начала закрепления адреса за предприятием, подразделением;

- контактные телефоны – их может быть несколько, и они могут меняться, необходимо хранить историю закрепления телефонов;

- электронный адрес предприятия. Подразделения;

- ФИО, должность руководителя. Руководители также могут меняться, необходимо отслеживать историю их изменения и поддерживать исторические данные.

Необходимо осуществлять следующую обработку данных:

- на заданную дату список контактных телефонов подразделений предприятия;

- на заданную дату количество подразделений, не имеющих электронные адреса;

- название подразделения, у которого за заданный период сменилось наибольшее число руководителей.



2_11 Автоматизированная информационная система «Паспорт здоровья сотрудника»



Описание предметной области.

Организация придает большое значение здоровью сотрудников и имеет в своей структуре подразделение, занимающееся профилактикой здоровья сотрудников. Для учета состояния здоровья для каждого сотрудника ведется «Паспорт здоровья», в котором сохраняется следующая информация:

- ФИО сотрудника, пол, дата рождения;

- образование (высшее, среднее, без образования). Если человек за время работы на предприятии повышал своё образование – необходимо фиксировать все соответствующие данные, привязывая их к дате получения соответствующего документа;

- история всех перемещений сотрудника на предприятии – подразделение, должность, категория должности (инженерно-технический работник, рабочий, управленческий персонал, IT-специалист и др.), должность, ставка, дата начала работы, дата окончания;

- история семейного положения – состояние (холост, в браке, разведен и др.), дата начала семейной жизни, дата окончания;

- история антропологических измерений – на дату – рост, вес;

- история прививок – дата, название прививки;

- история заболеваний – название, дата постановки на учет, дата снятия с учета.

Необходимо осуществлять следующую обработку данных:

- на заданную дату название заболевания, зафиксированного у сотрудников за все время наблюдения максимальное число раз;

- на заданный период список сотрудников, не сделавших прививку заданного вида;

- за заданный период динамика количества заболеваний в организации – по месяцам, количество заболевших с высшим, средним образованием и без образования.



2_12 Автоматизированная информационная система «Справочник абитуриента»



Описание предметной области.

Высшее учебное заведения для предоставления на сайте информации абитуриентам ведет банк данных со следующей информацией:

- список специальностей (Код, Название, Краткое название), на которых осуществляется обучение в вузе. Специальности привязаны к учебным подразделениям – факультетам, кафедрам (Код, Название, Краткое название), и распределены по формам обучения (очная, очно-заочная, заочная);

- адрес учебных подразделений;

- телефоны учебных подразделений;

- если есть – адрес сайта учебного подразделения;

- ФИО, ученая степень, ученое звание руководителя учебного заведения (декан факультета, заведующий кафедрой). При этом необходимо вести историю всех руководителей – дата начала работы, дата окончания;

- по каждой форме обучения:

- план приема на специальность на каждый год;

- перечень предметов, по которым необходимо сдавать вступительные экзамены (ЕГЭ);

- проходной балл на специальность по годам с разбивкой по предметам.

Необходимо осуществлять следующую обработку данных:

- на заданный год – список специальностей заданной формы обучения и планы приема;

- на заданный год наименование специальности, на которую был максимальный проходной балл по математике;

- на заданный год список руководителей учебных подразделений, имеющих ученую степень «доктор наук» и ученое звание «профессор».



2_13 Автоматизированная информационная система «Платные образовательные услуги населению»



Описание предметной области.

Организация (Код, Название, Краткое название) оказывает платные образовательные услуги населению. Услуги оказываются в виде проведения курсов обучения, по которым необходимо хранить следующую информацию:

- тип проведения – групповые, индивидуальные;

- вид проведения – очные, заочные;

- дата начала, дата окончания курсов;

- срок обучения (дни, месяцы, годы);

- количество часов обучения;

- на базе какого образования (среднее, высшее);

- темы, входящие в курс, для каждой темы:

	название;

	количество часов;

- время проведения занятий – дни недели, часы;

- вид выпускного контроля (квалификационная работа, экзамен, собеседование и прочее);

- вид выдаваемого документа (документ государственного образца, документ установленного образца);

- стоимость обучения

Для предоставления информации на сайте необходимо хранить адрес организации, контактные телефоны, электронный адрес, адрес сайта, серия, номер и вид документа о предоставлении образовательных услуг.

Необходимо осуществлять следующую обработку данных:

- список курсов, на которых можно прослушать заданную темы, например, «1С Бухгалтерия»;

- список курсов, на которых можно пройти заочное обучение и имеющих минимальную стоимость;

- список самых длительных курсов.



2_14 Автоматизированная информационная система «Новостная лента организации»



Описание предметной области.

Для предоставления новостных событий организации на её сайте необходимо вести следующие данные:

- название, краткое название организации, контактные телефоны, адрес, электронный адрес, адрес сайта;

- название и координаты подразделений организации, информация о которых будет предоставляться на сайте;

- список работающих сотрудников подразделений организации. Которым предоставляется возможность размещать информацию на сайте – ФИО, подразделение, должность, логин, пароль. При изменении статуса сотрудника – увольнение, перевод – информация должна соответствующим образом изменяться, например, сотрудник переводится в статус неработающего, логин и пароль д.б. заблокированы;

- описание новостной информации, размещаемой на сайте:

	тип (новость, объявление, сообщение и др.);

	название информации;

	дата создания;

	текст;

	дата размещения;

	дата перевода информации в архив;

	размер информации в Кб;

	наличие прикрепляемых к информации файлов – для каждого название, размер, тип, краткое описание;

	ответственный за информацию – сотрудник подразделения, имеющий соответствующий доступ.

Необходимо осуществлять следующую обработку данных:

- на заданную дату список ответственных за информацию на сайте от подразделений, не имеющих логин и пароль;

- на заданную дату название информации, размещенной на сайте (не в архиве) и имеющей самый большой размер.

- динамика предоставления информации для сайта заданным подразделением за заданный период – количество по месяцам.



2_15 Автоматизированная информационная система «Анализ продаж»



Описание предметной области.

Магазин (Код, Название, Краткое название) ведет учет продаж товаров и анализ работы с постоянными клиентами. Каждая единица товара учитывается при поступлении в магазин из накладной (Номер, Дата накладной), которая может иметь несколько позиций. В каждой позиции есть её номер, наименование товара, количество единиц поступившего товара, единица измерения, цена за единицу. Товары учитываются по виду - одежда, кожгалантерея, чулочно-носочные изделия, обувь и т.п. Каждый товар также имеет определенный артикул.

Ведет учет и продаж товаров – фиксируется дата продажи конкретного товара, количество проданных единиц.

Магазин ведет учет постоянных клиентов – фиксируется ФИО клиента, его паспортные данные (Серия, Номер, Дата выдачи, Кем выдан), дата рождения, контактный телефон. Покупателю, сделавшему покупку на сумму свыше 3000 тыс. рублей выдается дисконтная карта, имеющая 5-ти значный номер. Карта дает покупателю скидку 3%. При накоплении сумм покупок покупателем более чем на 10000 тыс. рублей, процент скидки увеличивается до 5%, более 20000 – максимальный процент скидки достигает размера 10%.

Необходимо осуществлять следующую обработку данных:

- на заданную дату количество и список покупателей (ФИО, контактный телефон), имеющих 10% скидку;

- за заданный период - динамика продажи заданного товара – количество по месяцам – поступление/ продажа;

- на заданную дату список покупателей (ФИО, контактный телефон), у которых в ближайшие 10 дней будет день рождения. 



2_16 Автоматизированная информационная система «Электронный реестр помещений»



Описание предметной области.

Предприятие (Код, Название, Краткое название) имеет иерархическую организационную структуру, отражающая подчиненность большого количества подразделений. Для каждого подразделения необходимо хранить:

- код, полное название, краткое название;

- родительные и дательные падежи названий для автоматизированного формирования ряда документов и отчетов. 

Каждое подразделение может занимать несколько помещений. Каждое помещение имеет номер, в который входит номер корпуса (предприятие может иметь много зданий – 1 или 2 цифры) и номер этажа – 1 или 2 цифры. В пределах одного этажа каждое помещение имеет свой номер 1 или 3 цифры. Помещение относится к определенному типу, о котором также необходимо иметь сведения, например, кабинет руководителя, приемная руководителя, лаборатория, цех, столовая и т.п. Необходимо также хранить данные о площади каждого помещения (кв. м).

Закрепление помещений за подразделениями может изменяться. Это осуществляется на основе определенного документа, имеющего название (приказ, распоряжение) и дату. В каждом документе м.б. несколько позиций, отображающих следующую информацию: номер позиции документа; действие, осуществляемое с помещением (передать, закрепить) дата действия; название подразделения; перечень помещений, возможное наименование другого подразделения. Например – «передать с 20.06.2007 г. отделу № 3 лабораторные помещения 14105 и 14106, закрепленные за лабораторией № 5»; «закрепить за медпунктом с 15.09.2007 г. складской помещение 3109» .

Необходимо осуществлять следующую обработку данных:

- на заданную дату список подразделений предприятия (наименование) и перечень занимаемых им помещений – номер, тип;

- список, отображающий иерархию (дерево) подчинения подразделений предприятия;

- динамика изменения количества площадей помещений у заданного подразделения за заданный период – количество по годам.



2_17 Автоматизированная информационная система «Скорая помощь»



Описание предметной области.

Лечебное учреждение (Код, Название, Краткое название, Адрес, Контактные телефоны) оказывает скорую медицинскую помощь населению. В учреждении имеется штат сотрудников, о которых необходимо хранит следующие сведения:

- табельный номер;

- ФИО; дата рождения, пол;

- должность, дата начала работы в данной должности, дата окончания, ставка.

Работа в учреждении круглосуточная – сотрудники работают по 24 часа с последующими выходными днями. Необходимо знать, в какой смене и бригаде работает тот или иной сотрудник. Закрепление в бригаду осуществляется на основании внутреннего приказа, имеющего номер и дату. В каждой позиции приказа указывается, что конкретный сотрудник с даты 1 по дату 2 работает в бригаде с заданным номером. 

Необходимо вести учет сведений о выездах бригад на вызовы. Каждый вызов определяется датой, временем выезда и адресом. Пациент, которому оказывается помощь, может быть описан следующими данными ФИО, возраст (примерный), первоначальный диагноз. Необходимо также знать ФИО и должности сотрудников выехавшей на вызов бригады (включая водителя и диспетчера). Необходимо также хранить небольшое текстовое описание принятых бригадой мер. Если больной был госпитализирован, либо получил направление на госпитализацию, также необходимо знать в какое учреждение он был направлен (название, адрес). При возвращении бригады фиксируется время прибытия.

Необходимо осуществлять следующую обработку данных:

- на заданную дату список выездов всех бригад учреждения (номер выезда, время, номер бригады, принятые меры);

- на заданную дату описание самого длительного выезда;

- на заданную дату список заданной бригады (табельный номер, ФИО, должность).









2_18 Автоматизированная информационная система «Ресторанное меню»



Описание предметной области.

На предприятии, занимающемся ресторанной деятельностью необходимо вести учет рецептуры блюд, выпускаемым предприятием, формирование ежедневного меню. Для каждого блюда (рецепта) фиксируются:

- номер, название, краткое название;

- дата создания блюда, ФИО, дата рождения автора. Если авторов несколько – фиксируется главный.

Для каждого ингредиента, входящего в блюда фиксируется:

- номер, название, краткое название;

- количество в заданных единицах измерения (шт., гр., кг), необходимое для приготовления блюда;

- количество калорий, белков, углеводов на 100 грамм ингредиента.

На каждый день на предприятии формируется меню, включающие следующие данные:

- название предприятия;

- дата;

- список блюд по категориям – закуски, супы, блюда из мяса, рыбы и т.п.

Ежедневно также фиксируется количество заказанных из предложенного меню блюд.

Необходимо осуществлять следующую обработку данных:

- на заданную дату список блюд заданной категории;

- на заданную дату необходимое количество заданного ингредиента в соответствии с меню;

- за заданный период список блюд, пользующихся наибольшей популярностью.



2_19 Автоматизированная информационная система «Изучение спроса на заданный товар»



Описание предметной области.

О каждом предприятии или организации, информация о которой фиксируется в БД, необходимо хранить следующее: название предприятия (организации), юридический адрес, контактные телефоны, электронный адрес, адрес сайта предприятия, ФИО контактного лица. Всё это указывается в рекламном листе (прайс-листе), выпускаемом предприятием товара. В прайс-листе указывается дата выпуска листа, реквизиты предприятия, выпускающего товар и список выпускаемых товаров. Каждый товар характеризуется артикулом, названием, ценой за единицу (на дату, указанную в листе), представляемым количеством. В каждом прайс-листе, как правило, содержится много позиций с описанием разных товаров.

В БД также необходимо хранить информацию о потенциальных клиентах заказчиках товара. Для каждого клиента фиксируются:

- для юридических лиц – код, название, краткое название, ИНН, адрес, контактные телефоны, электронный адрес, ФИО контактных лиц;

- для физического лица – ФИО, адрес, паспортные данные (серия, номер, дата выдачи, кем выдан), ИНН.

Также необходимо хранить информацию о заказах клиентов:

- номер, дата заказа;

- позиции заказа, в каждой из которых указывается: номер, название товара, количество требуемого товара.

Необходимо осуществлять следующую обработку данных:

- на заданную дату список клиентов, заказавших товар заданного наименования, требуемое количество товара;

- на заданную дату список товаров заданной категории с указанием цены;

- на заданный период динамика изменения стоимости заданного товара – стоимость по декадам.





27