Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

GrandM-Patterns_in_Java

.pdf
Скачиваний:
95
Добавлен:
14.03.2016
Размер:
8.88 Mб
Скачать

Глава 3. Жизненный цикл программного обеспечения - 45

Используемая система учета времени предоставляет данные по количеству от­ работанных часов только в виде распечатанного отчета. В настоящее время эту

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

и$ просматривает введенную информацию. Этот работник «стоит» компании

24 000 в год. Если компания$ продолжит использование этой системы, она должна будет платить 24 000 в год еще одному человеку, который будет вво­

дить данные рабочего времени служащих.

Стоимость найма человека, частично занятого в должности регистратора в каж­

дом магазине, составляет $ 9000 на 1 работника в год. Текущая стои ость со­

держания штата регистраторов

$ 63 000 в год.

Полная текущая стоимость затрат-

на поддержание системы учета времени со­

ставляет $ 87 000 в год. Через два года, после расширения компании, стоимость

этой работы возрастет до $ 237 000.

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

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

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

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

присутствовать в спецификации требований, но не упоминаются в этой книге.

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

будет объединена.

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

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

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

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

46 Глава 3. Жизненный цикл программного обеспечения

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

правлении и установить связь с определенными требованиями. Обычно требо­

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

Rl. Система должна документировать время, когда служащие начинают ра­

боту, идут на перерыв, возвращаются с перерыва и уходят с работы.

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

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

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

R2. Контролеры должны иметь возможность просматривать рабочее время подчиненных на терминале, не распечатывая эти данные.

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

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

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

R2.2. Пользовательский интерфейс терминала для работников, не яв­ ляющихся контролерами, не должен содержать меню, связанные

с функциями контролеров.

R2.3. Контролеры могут изменять записи учета рабочего времени толь­

ко своих подчиненных.

Ю. По завершении каждого платежного периода система учета рабочего времени должна автоматически передавать данные о рабочих часах с()­

трудника системе платежных ведомостей.

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

новых полезных функций.

 

 

 

 

 

 

 

BhIcoKoro уровня

вых с

и

 

ций и

сп

ользов

ан

ия

Раз

раб

о

ключ

ту

 

тка

 

е

 

а

 

 

 

При разработке ситуаций использования сначала, как правило, Основное внима­ ние уделяется наиболее распространенным случаям, а затем разрабатываются менее используемые ситуации. Широко распространенные ситуации использо-

Глава 3.

Жизненный цикл программного обеспечения

_47

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

ситуации называются второстепенными ситуациями использования. Опишем си­

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

Ситуация использования: Сотрудник использует терминал учета времени.

Участник:

Сотрудник.

Uель:

Ввод информации об уходе и приходе сотрудника

 

в систему учета рабочего времени.

Синопсис:

Тип:

Перекрестные ссылки:

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

Основной и ключевой.

Требования RI , Rl. l, Rl .2, Rl.3 и R2.2.

Ход событий

Сотрудник

 

Система

 

 

1 . Сотрудник проводит своей идентифи-

2. Терминал учета времени считывает

кационной карточкой через считываю-

 

идентификационный номер сотрудни-

щее устройство терминала

 

ка с карточки и проверяет правиль­

 

 

ность этого номера. Затем терминал

 

 

учета «напоминаеТ» сотруднику, что он

 

 

должен указать: или начало работы, или

з. Сотрудник указывает на терминале, что

4.

уход на перерыв, или возвращение с пе­

рерыва, или конец рабочей смены

Терминал учета рабочего времени делает

он либо начинает работу, либо уходит

 

долгосрочную запись данных сотруд­

на перерыв, либо приходит с перерыва,

 

ника. Затем подтверждается правиль­

либо заканчивает рабочую смену

 

ность данных и отображается текущее

 

 

время. Это свидетельствует о готовно­

сти приема данных от следующего со­ трудника

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

Ситуация использования:

Участник:

Цель:

Сотрудник использует несколько терминалов учета времени для отслеживания рабочих часов.

Сотрудник.

Ввод в систему учета информации об уходе и при­ ходе сотрудника в течение всей рабочей смены.

48

Глава 3.

г

мм

ного обеспечения

Жизненный цикл пра ра

 

Синопсис:

Тип:

Перекрестные ссылки:

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

Основной и ключевой. Требования RI и RI .2.

Ход событий

1.

Сотрудник

 

Система

 

Сотрудник испо

2.

Система записывает время начал

а рабо-

 

льзует терминал учета

 

 

 

рабочеro времени, чтобы проинфор-

4.

чей смены служащеro

 

 

мировать систему о начале работы

 

 

3.

Сотрудник использует терминал для

Система записывает время ухода служа-

 

информирования системы о том, что

 

щего на перерыв

 

 

он идет на перерыв

 

 

 

5.

Сотрудник использует терминал для

6.

Система записывает время возвращения

 

ИНфОРМИРОlJания системы о том , что

 

служащего с псрсрыва

 

7.

он возвращается с перерыва

 

 

 

Сотрудник использует терминал для

8.

Система записывает время окончания

 

информирования системы об окон­

 

сотрудником рабочей смены

 

 

чании работы

 

 

 

 

 

 

 

 

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

Им захочется начинать свою рабочую смену с терминала, показывающего более

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

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

компании, необходимо добавить еще одно требование:

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

Как только будут разработаны ключевые случаи ситуации использования, будут

найдены новые уточнения требований.

Объектн о - о р и ентированный анализ

Объектно-ориентированный анализ занимается построением модели пробле­

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

Глава 3. Жизненный цикл программного обеспечения - 49

ОСНОВНЫМ результатом объектно-ориентированного анализа является концеп-

1Уальная модель проблемы, описывающая предлагаемую систему и объекты реаль­ ного мира, с которыми система будет взаимодействовать. Кроме того, концеп­

туальная модель рассматривает отношения и взаимодействия между объектами

проблемной области, а также между объектами и системой.

Как правило, концептуальные модели создаются в два этапа:

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

2.Создание концептуальной модели для идентификации отношений между

объектами.

Для описания объектов и отношений концептуальной модели UML использует

ту же символику, которую он применяет при описании классов и ассоциаций в модели классов. На рис. 3.2 изображена диаграмма, содержащая (в произ­

вольном порядке) только те объекты, присутствие которых оБУСЛОRЛено требо­ ваниями и ситуациями использования. Изображенная на рис. 3.3 диаграмма со­ держит наиболее очевидные отношения.

PayPeriod

[

[

[

[

 

 

Тimekeeper

Employee

 

Break

 

 

 

 

Timekeeping

 

 

 

 

 

 

 

 

 

 

Supervisor

 

Shift

 

 

Event

 

 

 

 

 

 

 

 

EmployeeBadge

 

 

 

 

 

Timekeepinglog

TimekeepingSystem

 

 

 

 

 

 

 

 

 

 

EmployeelD

 

 

 

 

 

 

TimekeepingReport

 

PayrolLSystem

 

 

 

 

 

 

 

 

Рис. 3.2. концептуальная модель, содержащая только объекты

При внимательном рассмотрении рис. 3.3 можно обнаружить два объекта, ко­

торые не участвуют ни в одном из указанных отношений, это объекты

TimekeepingSystem и EmployeeID.

50

Глава 3. Жизненный цикл программного обеспечения

Владеет

11

1

EmpLoyeeBadge 1

I

 

I

 

собственность

 

I ТimеkеерiпgSуstеm I

 

 

EmpLoyeeID

 

 

 

I

1 владелец

создающий создаваемый

 

 

1

«- Это часть• • •»

 

 

 

 

1 1 (оздает

 

 

 

 

 

2

 

. •

 

1

0

 

часть

 

0• •-

 

часть

 

 

 

 

 

EmpLoyee

 

1

Timekeeping Event

 

0

 

1

1

 

Break

 

 

 

 

 

 

 

часть

целое

 

 

• • *

 

 

 

 

0• • -

 

0• •-

 

 

 

 

 

 

 

 

 

 

 

 

 

«Это•••»1

«Это• • •» ...

1Supervisor

использующий

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Timekeeper

1

 

 

1

.....

 

 

Изменяет

11 Измен

яет

 

11 1

 

 

 

 

1

(

.

т1·

одерж

теkеер1П

1

 

ит'" gLog

исполЬзует.....

используемый

I TimekeepingReport I

Принадлежит

1 1 PayPerfod

 

«- Это часть•••» 1 1

1

 

целое

 

Shift

 

 

 

 

 

 

 

 

 

 

*

 

 

 

целое

 

 

 

1

и

••

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

спользуе

мыи

 

 

 

 

 

LO

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

Использует'"

 

 

 

 

использующий

 

 

 

I

 

 

 

 

I

PayroLLSystem

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 3.3. Концептуальная модель, представленная вместе с ассоциациями

1

1

Данная диаграмма считается конuептуальной моделью искомой проблемы. Как

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

Объект EmployeeID очень тесно связан с объектом Employee. В таком случае его лучше представлять в виде атрибута. На рис. 3.4 представлена конuептуаль­ ная модель, в которую добавлены атрибуты.

Эта диаграмма отражает всю глубину проведенного нами анализа данной про­

блемы.

Объектн о - ор ие нтированное п р о е ктирование

Объектно-ориентированное проектирование занимается разработкой внутрен­

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

системы учета рабочего времени. Проект не учитывает ни то, как пользователь-

Владеет

Глава 3. Жизненный цикл программного обеспечения

предм

 

1

L

Е

mp

LоуееВаd

ge

 

ет обл

 

 

 

 

 

 

51

1

владеющий

 

 

Emp[oyee

создающий

Emp[oyeeID

1

(оздает

 

 

"' «- Это.. .»

I TimekeeperJ

"' «- Это. . .» Изменяет

Supervisor !

Изменяет

 

использующий

Использует

используемый

ТimekeepingReport

 

 

О

. • *

I

создаваемый

.; 0..1

I

 

 

 

I

 

 

 

 

 

 

2 «- Это часТl,. .

 

 

 

ТimekeepingEvent

часть

целое

 

Break

when:time

 

 

 

 

 

 

 

I

0..*

 

0..*

 

часть

 

0.. *

«- Это часть. . .;

1

 

 

1

 

 

 

 

 

 

 

 

 

r-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

целое II

Shift

I

1

 

Принадлежит ему

 

 

 

 

 

 

0..*

 

 

 

 

 

 

 

 

 

 

 

!TimekeepingLog:

 

 

 

 

 

 

 

 

 

 

 

используемыи

 

 

 

 

 

 

 

 

J

 

 

 

1

 

 

 

_

 

 

 

 

 

 

 

 

 

 

 

 

 

1

Принадлежит ему

 

 

 

"'Использует

 

 

 

 

 

 

 

 

использующий

1

 

 

 

 

 

 

 

PayPeriod

 

 

I

 

 

 

 

 

 

 

 

 

 

 

 

 

PayroLLSystem

 

 

 

 

start:time

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

end:time

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 3.4. Концептуальная модель с атрибутами

данных. Конечной целью объектно-ориентированного проектирования является

создание детального проекта классов, обеспечивающих эту внугреннюю логику.

Существуют различные стратегии использования результатов анализа при соз­

дании проекта. Стратегия, используемая в данной книге, заключается в созда­

нии диаграммы классов, моделирующей структуру отношений в концептуальной

МОдели. Затем разрабатываются диаграммы взаимодействия с целью моделирова­

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

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

лью. В течение всего процесса используются шаблоны проектирования, спо­

СОбствующие достижению цели.

Создадим первую диаграмму классов, предполагая, что существует класс для

Представления каждого объекта концептуальной модели (рис. 3.5). Даннаяа диа­

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

54

Глава 3.

о обеспечения

Жизненный цикл программног

з.

 

 

 

 

 

 

Сотрудник

 

 

 

 

4

.

 

 

 

 

 

С стема

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и

 

 

 

 

 

 

 

 

 

С

 

Н

 

 

ука ывает на терминале,

Т

 

 

нал

 

б

 

 

 

 

 

производит

 

ОТРУД

 

ИК

 

з

 

 

 

 

 

 

 

 

 

и

 

уч

 

 

 

ы

бо

 

 

 

 

При

 

 

 

 

 

 

б

 

 

 

 

б

 

 

 

 

 

а

 

ись отражающу

в

СОТРУДНИка.

 

что он ли

о начинает ра

очую сме­

 

 

з

п

 

,

 

ю

 

 

 

 

ну,

либо уходит на перерыв, либо

 

 

этом подтвеРЖ!lается завершение операции уче­

 

 

о

вращается с

 

ерерыва

 

ибо

 

 

 

та

 

б

 

времени,

 

о

чем

сви

етельствует

 

в

п

, л

за­

 

 

ра

очего

 

 

з

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

д

 

 

 

 

 

 

 

 

 

 

 

б

оту

 

 

 

 

 

 

отображение текуще о

 

в

ремени и

ото

в

ность

 

канчивает ра

 

 

 

 

 

 

 

 

 

 

 

г

 

 

 

 

г

 

 

кработе со следующим служащим

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

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

проект класс пользовательского интерфейса.

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

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

Вводимый в проект класс-фасад называется TimekeepingController. Он от­ вечает за управление последовательностью событий во время взаимодействия терминала учета времени с пользователем.

На основании предыдущих ситуаций использования можно создать диаграмму взаимодействия (рис. 3.7).

Опишем взаимодействия, показанные на данной диаграмме.

1.Объект UserInterface начинает взаимодействие с передачи иден­

тификационного номера служащего методу doTransaction объекта

TimekeepingController.

1.1.Объект TimekeepingController получает информацию о со­ труднике, имеющем данный идентификатор, передавая иденти­

фикационный номер служащего методу LookupEmployee объекта Database. Метод LookupEmployee возвращает объект Employee,

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]