МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФГБОУ ВПО САРАТОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ МЕЖДУНАРОДНЫЙ ФАКУЛЬТЕТ ПРИКЛАДНЫХ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ Лабораторная работа №1 по курсу «Современные технологии объектно-ориентированного программирования» «Анализ предметной области, построение UML-диаграмм» Выполнили: Проверил: Вертаков И. И., 0804266 Сотенко А.А., 0804348 группа ИСТ-41 ассистент каф. ПИТ Верескун Д. М. Подпись: Дата: _________ Саратов, 2011 Цель работы: начальное проектирование информационной системы управления проектами, в частности - анализ предметной области и построение модели разрабатываемой системы с использованием языка UML. Анализ предметной области Анализ вариантов использования Система управления проектами - набор инструментов, методов, методологий, ресурсов и процедур, используемых для управления проектом. Она может быть как формальной, так и неформальной и помогает менеджеру проекта эффективно завершить проект. Система управления проектами - это ряд процессов и связанных с ними функций контроля, объединенных в единую целенаправленную структуру. В общем случае, применение системы управления проектами позволяет: 1. Создавать, внедрять и корректировать план работы по проекту 2. Эффективно распределять материальные и человеческие ресурсы, необходимые для реализации проекта 3. Контролировать основные показатели темпов и качества выполнения проекта 4. Добиваться повышения эффективности производства 5. Устанавливать наличие взаимосвязей в работе различных проектов 6. Учитывать достоинства и недостатки выполненной работы при планировании нового проекта Разрабатываемая система хранит информацию о персонале компании, о выполняемых ею проектах, производит учет задач внутри компании, осуществляет поддержку в планировании работ. Данная система предназначена как только для компаний, выполняющих работу на заказ, так и для сопровождения деятельности внутри организации. В ходе анализа предметной области были выделены следующие действующие лица: ● Администратор (Administrator), осуществляющий управление объектами Заказчиков и Проектов, включает в себя все варианты использования Работника (Employee); ● Начальник (сотрудник) отдела кадров (HR Manager), который следит за изменением количества людских ресурсов; ● Менеджер проекта (Project Manager), который осуществляет контроль за выполнением вверенного ему проекта. ● Работник (Employee), выполняющий закрепленные за ним задания и поручения; ● Заказчик (Customer), представляющий собой лицо, которое сделало заказ на выполнение того или иного проекта. Были выделены следующие варианты использования: ● Управление проектами (Control Projects): создание нового, редактирование проекта, включая смену его менеджера, и удаление (Администратор (Administrator)); ● Управление заказчиками (Control Customers): добавление, просмотр и редактирование информации о заказчике проекта (Администратор (Administrator)); 2 ● Управление работниками (Control Employees):добавление нового сотрудника, редактирование информации о нем, а также его удаление (Начальник (сотрудник) отдела кадров (HR Manager)); ● Редактирование информации о себе (сотруднике) (Работник (Employee)); ● Просмотр и “выполнение” (смена статуса задания на “выполнено”и “начато”) своих заданий (Работник (Employee)); ● Управление заданиями на проект: создание нового задания, его редактирование, включая установку deadline (крайнего срока выполнения) и смену статуса, назначение задания работнику, просмотр списка заданий на проект и отображение статистики по ним(Менеджер проекта (Project Manager)); ● Просмотр информации о заказанном/выполняемом проекте (Заказчик (Customer)/Менеджер проекта (Project Manager)); ● Редактирование информации о себе (заказчике), включая изменения своего списка контактов (Заказчик (Customer)). 3 Диаграмма вариантов использования uc Short Use Cases Edit Ow n Customer Info (from Primary Use Cases) Customer View Specified Proj ect Info (from Actors) (from Primary Use Cases) Control Specified Proj ect Tasks Proj ect Manager (from Actors) (from Primary Use Cases) Edit Ow n Employee Info (from Primary Use Cases) Employee (from Actors) View Ow n Employee Tasks (from Primary Use Cases) Complete Ow n Employee Tasks (from Primary Use Cases) Control Employees HR Manager (from Actors) (from Primary Use Cases) Control Customers (from Primary Use Cases) Administrator (from Actors) Control Proj ects (from Primary Use Cases) 4 Анализ сущностей системы Для проектирования информационной системы были выделен класс Человек (Person): содержит ФИО, E-mail и номер телефона. У каждого человека, зарегистированного в системе, есть свои реквизиты входа. Поэтому был выделен класс Реквизиты входа (Credentials), содержащий имя пользователя и пароль, и он связан с предыдущим классом композицией. Класс Работник (Employee) расширяет класс Человек (Person) полями Дата приема на работу, Дата увольнения (если уволен), Модификатор зарплаты и Дата рождения (абстракция). Работник занимает определенную должность. Для обозначения должности введена сущность Должность (Appointment), на которую ссылается Работник (Employee). В системе существует класс Заказчик (Customer), которой отождествляет собой клиентов компании-заказчика. Эта сущность включает в себя следующие поля: Название клиента, Описание и Адрес. Каждый заказчик имеет как минимум одно Контактное Лицо (CustomerContacts), которое в свою очередь наследуется от Человека (Person), расширяя его полем Описание типа контакта (абстракция). Проекты, отслеживаемые в системе, представлены сущностью Проект (Project). Она содержит в себе информацию об Имени проекта, Описании, Дате начала, Запланированной дате конца и Фактической дате окончания (если проект завершился). Также в ней содержится ссылка на Работника (Employee), который является менеджером этого проекта. Сущность Проект (Project) связана с соответствующей сущностью Заказчика (Customer) (агрегация). Проект (Project) содержит список Заданий (Task) (агрегация). Этот класс включает поля Описание, Дата создания, Дата закрытия, Статус («Открыто», «В процессе выполнения», «Решено», «Закрыто», «Открыто» вновь», «Отменено»), Приоритет (Критический, Высокий, Средний, Низкий), Оценка затрат на выполнение (часы), а также списки Начала и Завершения работ над ним. Класс Задание (Task) связан агрегацией с классом Работника (Employee), ответственным за его выполнение. Для иллюстрации сущностей в системе приведена диаграмма классов. В проектируемой системе существует много связанных друг с другом классов, поэтому необходимо описать кратность этих связей. Работник (Employee) может выполнять несколько Заданий (Task), но у Задания (Task) может быть только один исполнитель. Похожая ситуация и у Проекта (Project) и Заказчика (Customer): у Заказчика (Customer) может быть несколько Проектов, но Проект имеет только одного Заказчика. Возможная ситуация в системе приведена в примере диаграммы объектов. 5 Диаграмма классов сущностей class Class Model «enumeration» TaskStatus Proj ect +Tasks +Status Customer DeadLine: DateTime Description: string EndDate: DateTime Name: string StartDate: DateTime - Opened InProgress Resolved Closed Reopened Canceled 1 +Manager has Address: string Description: string Name: string CustomerContacts +Contacts 1 1..* - Type: string 0..1 Credentials +Project 0..* - Task - 1 1..* - CloseDate: DateTime CreateDate: DateTime Description: string LOE: int Name: string ResolveDates: List<DateTime> +Assignee StartDates: List<DateTime> 0..* Password: string Username: string is manager 1 +Credentials Person 1 +Priority +Tasks Employee 1 - - Email: string FirstName: string LastName: string MiddleName: string PhoneNumber: string AcceptDate: DateTime DateOfBirth: DateTime RejectDate: DateTime SalaryModifier: float is 1 1 «enumeratio... TaskPriority Critical Major Normal Minor Appointment - BaseSalary: float Description: string Name: string 6 Диаграмма объектов obj ect Obj ect diagram EAG :Customer JMPC-CS :Proj ect Address = some address Description = Big serious company Name = EAG DeadLine = 25.12.2011 Description = customer support system EndDate = null ExpectedLOE = 100 Name = JMPC-CS StartDate = 01.07.2011 Lila :CustomerContacts Email = [email protected] FirstName = Lila LastName = Mila MiddleName = Z PhoneNumber = +1234567 Type = Manager pm Max :Employee AcceptDate = 12.03.2010 DateOfBirth = 10.10.1985 Email = [email protected] FirstName = Max LastName = Pax MiddleName = X PhoneNumber = +12312131 RejectDate = null SalaryModifier = 2 credentials : Credentials Username = max Password = pass3 task1 :Task JMPA-A :Proj ect DeadLine = 25.12.2012 Description = service inventory EndDate = null ExpectedLOE = 200 Name = JMPC-SI StartDate = 10.10.2011 pm John :CustomerContacts Email = [email protected] FirstName = John LastName = Dorn MiddleName = Y PhoneNumber = +7654321 Type = CTO credentials :Credentials Password = pass2 Username = john BaseSalary = 80000 Description = Manager Name = Project Manager task3 :Task Description = find water LOE = 10 Name = Water Priority = Major Status = Resolved CreateDate = 05.07.2011 ResolveDates = [20.07.2011] CloseDate = null StartDates = [08.07.2011] Description = implement module LOE = 20 Name = Impl Priority = Normal Status = Opened CreateDate = 19.07.2011 ResolveDates = null CloseDate = null StartDates = null Mark :Employee AcceptDate = 10.08.2010 DateOfBirth = 21.05.1989 Email = [email protected] FirstName = Mark LastName = Shark MiddleName = S PhoneNumber = +000000000 RejectDate = null SalaryModifier = 1.1 Password = pass1 Username = lila Proj ect Manager :Appointment task2 :Task Description = get triforce LOE = 2 Name = Get Triforce! Priority = Critical Status = Closed CreateDate = 01.07.2011 ResolveDates = [03.07.2011, 06.07.2011] CloseDate = 08.07.2011 StartDates = [02.07.2011, 05.07.2011] credentials :Credentials task4 :Task Description = write test LOE = 30 Name = Text Priority = Major Status = InProgress CreateDate = 03.07.2011 StartDates = [04.07.2011] ResolveDates = null CloseDate = null Kate :Employee Softw are Engineer :Appointment BaseSalary = 30000 Description = Coder Name = Software Engineer AcceptDate = 14.10.2010 DateOfBirth = 01.01.1988 Email = [email protected] FirstName = Kate LastName = Mate MiddleName = M PhoneNumber = +111121212 RejectDate = null SalaryModifier = 1.1 credentials :Credentials credentials :Credentials Password = pass4 Username = mark Password = pass5 Username = kate 7 Анализ состояний Подробно стоит рассмотреть возможные состояния у Задания (Task). Как говорилось выше, оно может находиться в шести состояниях. При создании оно находится в состоянии «Открыто». В этот момент оно имеет только дату создания, а списки дат старта и завершения пусты, и дата закрытия отсуствует. Далее, если сотрудник начал выполнение данного задания, статус переводится в состояние «В процессе выполнения», или же, в случае, если менеджер решил отменить данное задание, в состояние «Отменено». В случае перевода задания в статус «В процессе выполнения», в список дат Начала работ добавляется дата. Из этого состояние задание может быть либо «Отменено», либо перейти в состояние «Решено». При переводе в состояние «Решено» в список Дат завершения работ добавляется текущая дата. Если менеджера устроит решение данной задачи, то он может перевести задачу в состояние «Закрыто». В этом случае у задачи проставляется дата закрытия. В противном случае менеджер может переоткрыть задачу, переведя в состояния ««Открыто» вновь». Из состояния ««Открыто» вновь» задача может перейти в состояние «Закрыто», или же в состояние «В процессе выполнения». Диаграмма состояний stm Task State Model Initial [created] Opened [cancel] Canceled [cancel] [cancel] [start] InProgress Reopened [start] [resolve] [reopen] Resolv ed [close] Closed 8 Вывод: в результате проведения анализа предметной области по разработке информационной системы управления проектами были выделены основные сущности, варианты использования и варианты состояния системы, изучены основные правила построения UMLдиаграмм и произведено построение модели разрабатываемой информационной системы на языке UML, а именно построены диаграммы классов, объектов, вариантов использования и состояний. 9