Japan Advanced Institute of Science and Technology
JAIST Repository
https://dspace.jaist.ac.jp/
Title クラス間の通信形態に注目した設計レベルの再構成手
法の研究
Author(s) 大尾, 健介
Citation
Issue Date 2007‑03
Type Thesis or Dissertation Text version author
URL http://hdl.handle.net/10119/3585 Rights
Description Supervisor:鈴木 正人, 情報科学研究科, 修士
!"
#!
$%&'"
クラス間の相互 作用を調査・分析
抽出・作成 ルールの 対象システム
のUML図
分析結果
再構成 ルール
再構成ルール データベース
再構成後の適 用システム システムの
再構成後 機能追加
比 較 再構成 ルール 適用システム
のUML図
評価・修正 ルールの
比較結果 修正した再構成 ルール
比較対象
要求を基に ルールの検索
条 件 再構成
ルール
システムの 再構成を行う 再構成ルール
機能拡張・追加 を行う
再構成後のシステム 利用システム システム
機能追加要求
作成・登録 フェーズ
評価・修正
フェーズ
利用 フェーズ
()* ()*
()*
クラス間の相互 作用を調査・分析
再構成ルールの 抽出・作成 対象システム
のUML図
分析結果
再構成 ルール 再構成ルール
・Obj1とObj2間の メッセージ数:10回
・メッセージの内容:
・Obj1が持つ役割: 客室予約 予約作成を行う
再構成 ルール データベース
再構成後の 適用システム システムの
再構成後 機能追加
比 較
再構成 ルール 適用システム
のUML図
比較結果 比較対象
再構成ルール データベース 再構成 ルール
要求を基に
ルールの検索 システムの
再構成を行う 再構成ルール
条 件
機能拡張・追加 を行う 再構成後の システム
システム
システムと 機能追加要求
+,
+,
+,
+,
+,
HttpSession
ChangeRoomBean
ChangeRoomStatusServlet RetrieveRoomStatusServlet
RetrieveRecordServlet
RoomStatusData RoomVacancyData
CreateRecordServlet
ResvRecordDB
DataCheck ResvRecordBean
RoomControl
CancelRecordServlet create
create
全体構成: キャンセル機能追加
!
-)."-
" #
$%
+,
!%
$"
$"%
'($$
loop loop 1, [firstday < lastday]
1, [i < singleRoom]
loop loop 1, [firstday < lastday]
1, [i < twinRoom]
1 : request()
2 : new ResvRecordBean()
10 : getInstance()
11 : RoomVacancyData=return(_):roomVacancyData 12 : getInstance()
13 : RoomStatusData=return(_):roomStatusData 14 : searchStatus(firstday, lastday, single, twin, status) 15 : String=message(_):true
16 : reduceRoom(fd, ld, single, twin)
17 : changeStatus(fd, ld, single, twin, status, resvrecordbean)
23 : createID() 24 : getInstance() 25 : return(_) 26 : writeDatabase(recordID) 27 : setInstance(resvRecordDB) 28 : setAttribute("resvrecordbean", resvRecordBean)
29 : setAttribute("oldresvrecordbean", resvRecordBean)
3 : setAllData(firstday, lastday, single, twin, user)
20 : setInstance(roomVacancyData) 21 : setInstance(roomStatusData)
18 : setSingleStatus(day, roomNo, status)
19 : setTwinStatus(day, romNo, status)
30 : forward(_)
4 : checkAvailability(resvRecordBean) 5 : checkInputDay() 6 : message(_) 7 : checkInputRooms() 8 : message(_)
9 : consumeRooms(resvRecordBean)
22 : String=message(_):true ユーザ
CreateRecordServlet DateCheck RoomVacancyData RoomStatusData
ResvRecordBean ResvRecordDB RoomControl
HttpSession
loop loop 1, [firstday < lastday]
1, [i < singleRoom]
loop loop 1, [firstday < lastday]
1, [i < twinRoom]
1.宿泊の予約を行なう sd
!" " !# !
!"
" !# ! $
%&'! !!"
(
)*
+ (
)&',- "!" "
. / / 0
*&',- (!# !
.12)0
+( (
%$
%&!" " !# !
(
44
$ ( !# !
(3"
*&# !# !
(
44
,
,
,
,
$! ,
, ,
,
,
"/(/5"
5"
"
(
6 6 6
6
(# (#7 6 6
6 6 6% 6%
6 6%
6% 6 6 6
6% 6
%8
前提条件 (1).OBJ2と OBJ3に同じ操作 のメッセージが並 行して送られてい る
(2).OBJ2と OBJ3が持つデー タが類似している
/
8
8
8
!
%)
2
/
1 : new ResvRecordBean()
3 : createID()
4 : getInstance() 5 : return(_)
6 : writeDatabase(recordID) 7 : setInstance(resvRecordDB) 2 : setAllData(firstday, lastday, single, twin, user) CreateRecordServlet
ResvRecordBean
ResvRecordDB
1.宿泊の予約を行う (ルール1 ) sd
89
!(- 9<88:;
!(- 9<88&-8:;
- ! < =->
=-! !;
888
- ! ! =- =- - -
& 7<-! ,67<-! >
888
/.0/'%1 %.0/'%1 23 /.0/'%14
%.0/'%1.!,!%.!"5 .!"5 .5 !35 '%!%4
888
%.0/'%1'%!+,4
/.0/'%,1 %.0/'%,1 2/.0/'%,1!+.!'4
%.0/'%,13%!,!).%.0/'%1!/.%0+,5 %.0/'%14
/.0/'%,1.!+.!'%.0/'%,14
888
?
?
89
%8% 6 6
6
6 6
6 6
%8) 6 %8) 6
6 66 %8)
前提条件
(1).OBJ2とOBJ3に 同じ操作のメッセージ が並行して送られてい る
(2).OBJ2とOBJ3が 持つデータが類似して いる
/
%8) 6
6 6 6 66
8
8
%8$
(
&'! !!"
(
( (
( ( (3" (
%8$
(3" (
(3" (
%8* %8@
3 : getInstance()
4 : RoomVacancyData=return(_):roomVacancyData 5 : getInstance()
6 : RoomStatusData=return(_):roomStatusData 7 : searchStatus(firstday, lastday, single, twin, status) 8 : String=message(_):true
9 : reduceRoom(fd, ld, single, twin)
10 : changeStatus(fd, ld, single, twin, status, resvrecordbean)
11 : setInstance(roomVacancyData) 12 : setInstance(roomStatusData) 1 : checkAvailability(resvRecordBean)
2 : consumeRooms(resvRecordBean)
13 : String=message(_):true
CreateRecordServlet RoomControl RoomVacancyData RoomStatusData
1.宿泊の予約を行う (ルール2 ) sd
loop
1, 30, [firstday < lastday]
1 : changeRoomStatus(firstday, lastday, roomNum, status)
2 : getInstance()
3 : RoomStatusData=return(_):roomStatus 4 : getInstance()
5 : RoomVacancyData=return(_):roomVacancy
8 : setStatusOf(d, roomNo, status) 9 : reduce1/pluse1(d, roomNum) 10 : setInstance(roomStatusData)
11 : setInstance(roomVacancyData) 6 : getStatusOf()
7 : String=return(_):status
12 : String=return(_):true
ChangeRoomStatusServlet RoomControl RoomStatusData RoomVacancyData
loop
1, 30, [firstday < lastday]
4.部屋の状態管理を行う(ルール2) sd
1 : releaseRoom(resvRecordBean)
6 : increaseRoom(firstday, lastday, single, twin)
7 : releaseStatus(firstday, lastday, single, twin, resvRecordBean) 2 : getInstance()
3 : RoomStatusData=return(_):roomStatusData 4 : getInstance()
5 : RoomVacancyData=return(_):roomVacancyData
8 : setInstance(roomStatusData) 9 : setInstance(roomVacancyData)
CancelRecordServlet RoomControl RoomVacancyData RoomStatusData
5.予約のキャンセルを行う sd
(89
( (&# ( ( %
!(- 98!8:;
- ! ( !(-( !!A >
6)' !%'.#/#./.0/'%1 %%)
/# !!.,! %# !!.,! 2/# !!.,!!+.!'4
/#7''",! %#7''",! 2/#7''",!!+.!'4
#.. 2%# !!.,!.%' !!.%.!5 .!5 .5!35 .!!.4
888
%#7''",!%'/#%.!5 .!5 .5 !34
%# !!.,!' !!.%.!5.!5 .5!35 .!!.5%%)4
888
/# !!.,!.!+.!'%# !!.,!4
/#7''",!.!+.!'%#7''",!4
%!% -!%-4
?
(89 ( (
!(- 98!8:;
- ! ( !(-( !!A >
6)' !%'/# !!. !%8"5 !% "5
!% %#9#5 !% .!!.
/# !!.,! %# !!. 2 /# !!.,!!+.!'4
/#7''",!%#7''"2 /#7''",!!+.!'4
888
! B !; CB ; DD>
8%# !!.! !!.(85 %#9&.-%.0-
B ;
';
?
?
! B !; CB ; DD>
%# !!..! !!.(85 %#95 .!!.4
!E84 " 4
%#7''"%' 5 %#94
?
/# !!.,!.!+.!'%# !!.4
/#7''",!.!+.!'%#7''"4
44;
?
(89 &# (
!(- 98!8:;
- ! ( !(-( !!A >
6)'0%./#./.0/'%1 %%)
888
/# !!.,! %# !!. 2 /# !!.,!!+.!'4
/#7''",!%#7''"2 /#7''",!!+.!'4
%#7''"'%./#%.!5.!5 .5 !34
%# !!.%. !!.%.!5 .!5 .5 !35 .!!.5 %%)4
/# !!.,!.!+.!'%# !!.4
/#7''",!.!+.!'%#7''"4
?
(89 (
%8+
(#
6 6 6
6 (#
(#
(#
% (#
(#
%8 %8
6 (#
6 6
(#
%81 (#
(#
(# (#
%8 %8%
5
5
(1: 5
(1: 5
(1: 5
前提条件 (1).messageA に与えられたデータが messageB, C, D で利用されて
いる場合 (2).messageB, C, D で一部のデータだけ利用
)
) 5
) 5
) 5
(1: 5 )
(1: 5 )
(1: 55 )
8
8
%8
%8
*
(
&'! !!" &'! !!"
&'
&',- "
&',- ( (
( (
( (
( (3" (
& (
( &'! !!"
!# $ "F!
!#
( &'
&',- " &',- (
!#
( ( (
( (3"
( ,# %
( (
& ( (
!# )
( (
&# ( (
,# % !#
7 : getInstance()
8 : RoomVacancyData=return(_):roomVacancyData 9 : getInstance()
10 : RoomStatusData=return(_):roomStatusData 11 : searchStatus(firstday, lastday, single, twin, status) 12 : String=message(_):true
13 : reduceRoom(fd, ld, single, twin)
14 : changeStatus(fd, ld, single, twin, status, resvrecordbean)
15 : setInstance(roomVacancyData) 16 : setInstance(roomStatusData) 1 : checkAvailability(resvRecordBean)
2 : checkInputDay(firstday, lastday) 3 : String=message(_):true 4 : checkInputRooms(single, twin) 5 : String=message(_):true
6 : consumeRooms(resvRecordBean)
17 : String=message(_):true
CreateRecordServlet DateCheck RoomControl RoomVacancyData RoomStatusData
1.宿泊の予約を行う (ルール3 ) sd
)
&'! !!" !#$ "F!
&',- " !" " !#
&',- ( !# ! !#
( ( !#$ "F!
( !# ! ,#%
& !" " !# !#)
!
&# !# ! ,#% !#*
"F!
( !# !
&' !" " !# ! !" "
!# !
(3" !# ! !# !
( !# ! !# !
(89
&'!!!" &',- " &',- ( ( (
)
!(- 98!8:;
- ! ( !(-( !!A >
6)' !% '';00!"/.0/'%1 %.0/'%1
&' &' B &';
#.. 2!'';'';+6!,"%. 0/' %1!$%.!"5
%.0/'%1!.!"4
888
#.. 2!'';'';+6!/#.%.0/'%1 ! 5
%.0/'%1!34
888
#.. 2'.#/#.%.0/'%14
888
(#;
?
(89 &'! !!"
!(- 98!8:;
- ! ( !(-( !!A >
6)' !%'.#/#./.0/'%1%.0/'%1
! %.! 2 %.!"<%'!"4
! .! 2 .!"<%'!"4
! %. 2+!%6%.+!%%)! 4
! %!3 2+!%6%.+!%%)!34
!# B 44;
( ( B ( 8#, ;
(3" (3" B (3" 8#, ;
#..2 %# !!.,!.%' !!.%.!5 .!5 %.5 %!35 .!!.4
888
%#7''",!%'/#%.!5.!5 %.5 %!34
%# !!.,!' !!.%.!5 .!5 %.5%!35 .!!.5%.0/'%14
888
( 8, ( ;
(3" 8, (3 " ;
44;
?
(89 ( (
%8 %8
D
D DD
D
D DD
D
D DD
D
D DD
再構成前
機能追加後
+f1, +f2
SB SB+f1+f2
SA1 SA2 SA3 SB+R1
SB+R2
SB+R3
SA1+f1+f2 +f1, +f2
SA2+f1+f2 SA3+f1+f2 +f1, +f2
+f1, +f2 再構成後
機能追加前
%8
8
%8% %8)
1 : request()
2 : getSttribute(resvrecordbean) 3 : return(_)
4 : new CancelQueueBean()
8 : writeRecord(cancelbean) 10 : setAttribute("cancelqueuebean", cancelbean)
11 : forward(_)
6 : getInstance()
7 : CancelDB=return(_):cancelDB
9 : setInstance(cancelDB)
5 : setAllData(firstday, lastday, single, twin, user, recordID) ユーザ
CancelQueueServlet
CancelBean
CancelDB HttpSession
6.キャンセル待ちに登録する sd
D
%8% %8)
/
D %8* DD %8@ %8*
D
loop 0, [frequency < DBSize] loop loop 1, [firstday < lastday]1, [i < singleRoom] loop loop 1, [firstday < lastday]1, [i < twinRoom]
13 : new ResvRecordBean(firstday, lastday, single, twin, user) 16 : getInstance() 17 : RoomVacancyData=return(_):roomVacancyData 18 : getInstance() 19 : RoomStatusData=return(_):roomStatusData 20 : searchStatus(firstday, lastday, single, twin, status) 21 : String=message(_):true 23 : changeStatus(firstday, lastday, single, twin)
22 : reduceRoom(firstday, lastday, single, twin) 27 : setInstance(roomStatus)
26 : setInstance(roomVacancy) 29 : createID(ResvRecordBean) 30 : writeRecord(recordID, resvRecordBean) 31 : setInstance(resvRecordDB)
15 : consumeRooms(ResvRecordBean) 28 : String=return(_):message 33 : message()
32 : setAttribute("resvrecordbean", resvrecordbean)
14 : setAllData(firstday, lastday, single, twin, user) 24 : setSingleStatus(day, index, status) 25 : setTwinStatus(day, index, status)
1 : getInstance() 2 : CancelDB=return(_):cancelDB 3 : getAllSize() 4 : Integer=return(_):size 5 : readRecord() 6 : CancelBean=return(_):cancelBean 7 : getInstance() 8 : RoomStatusData=return(_):roomStatusData 9 : searchStatus() 10 : String=message(_):true 11 : removeDatabase(cancelBean, cancelDB) 12 : setInstance(cancelDB)
CancelRecordServlet RoomControl CancelDB RoomStatusData RoomVacancyData ResvRecordBean
ResvRecordDB ユー ザ HttpSession
loop 0, [frequency < DBSize] loop loop 1, [firstday < lastday]1, [i < singleRoom] loop loop 1, [firstday < lastday]1, [i < twinRoom]7.キャンセル待ち記録を予約記録へ変更し、データベースに登録する(改訂版)sd DD
G
G
G
%8@ %8)
(
%
%
% (
( &
D
DD
D DD
D %8$ DD %8*
D D D
D
DD
%8$
G
G
G
G
1 : request()
2 : getSttribute(resvrecordbean) 3 : return(_)
4 : new CancelQueueBean()
10 : addDatabase(cancelbean, cancelDB) 11 : setAttribute("cancelqueuebean", cancelbean)
12 : forward(_)
5 : setAllData(firstday, lastday, single, twin, user, recordID)
6 : getCancelDB() 7 : getInstance()
8 : CancelDB=return(_):cancelDB 9 : CancelDB=return(_):cancelDB
ユーザ
CancelQueueServlet
CancelBean
CancelDB
HttpSession CancelQueueControl
6.キャンセル待ちに登録する(ルール1: クラスの役割の委譲) sd
D
%8$
%8+
D
D
)
D
D
%8* DD DD 2
&
break
loop
loop 1, [firstday < lastday]
1, [i < singleRoom]
loop
loop 1, [firstday < lastday]
1, [i < twinRoom]
6 : searchCancelQueue(resvRecordBean, cancleDB)
14 : CancelQueueBean=return(_):cancelQueueBean
16 : new ResvRecordBean(firstday, lastday, single, twin, user) 2 : getInstance()
3 : CancelDB=return(_):cancelDB
5 : getAllSize() 7 : Integer=return(_):size 8 : readRecord(index) 9 : CancelBean=return(_):cancelBean
20 : getInstance() 21 : return(_)
22 : getInstance() 23 : return(_)
24 : searchStatus(firstday, lastday, single, twin, status) 25 : return(_)
27 : changeStatus(firstday, lastday, single, twin) 26 : reduceRoom(firstday, lastday, single, twin)
31 : setInstance(roomStatus) 30 : setInstance(roomVacancy) 10 : getInstance()
11 : RoomStatusData=return(_):roomStatusData 12 : searchStatus(firstday, lastday, single, twin, status) 13 : String=return(_):message
19 : consumeRooms(ResvRecordBean)
32 : String=return(_):message
39 : message()
38 : setAttribute("resvrecordbean", resvrecordbean)
18 : setAllData(firstday, lastday, single, twin, user)
28 : setSingleStatus(day, index, status)
29 : setTwinStatus(day, index, status)
33 : getResvRecordDB()
34 : getInstance() 36 : ResvRecordDB=message(_):resvRecordDB
17 : createID()
35 : ResvRecordDB=return(_):resvRecordDB 37 : addDatabase(resvRecordBean, resvRecordDB)
15 : removeDatabase(cancelBean, cancelDB) 1 : getCancelDB()
4 : CancelDB=return(_):cancelDB
CancelRecordServlet CancelControl CancelDB RoomControl RoomVacancyData RoomStatusData
ResvRecordBean
ResvRecordDB ユーザ
HttpSession ResvRecordControl
break
loop
loop 1, [firstday < lastday]
1, [i < singleRoom]
loop
loop 1, [firstday < lastday]
1, [i < twinRoom]
7.予約記録へ変換したことを通知する(ルール1 : クラスの役割の委譲) sd
DD
%81 DD DD
DD
DD DD
DD DD
D
DD
D
DD %8@ DD DD
DD DD
%8@ DD DD
( (2
(3"
(3" (
( (3"2
(
(
(
(3"
loop
loop 1, [firstday < lastday]
1, [i < singleRoom]
loop
loop 1, [firstday < lastday]
1, [i < twinRoom]
loop 0, [index < size]
13 : new ResvRecordBean(firstday, lastday, single, twin, user)
31 : createID(ResvRecordBean) 32 : writeDatabase(recordID, resvRecordBean) 33 : setInstance(resvRecordDB) 15 : consumeRooms(ResvRecordBean)
30 : String=return(_):message
35 : message()
34 : setAttribute("resvrecordbean", resvrecordbean)
14 : setAllData(firstday, lastday, single, twin, user)
25 : setSingleStatus(day, index, status)
26 : setTwinStatus(day, index, status) 16 : consumeRoomsJob(resvRecordBean)
17 : getInstance()
18 : RoomVacancyData=return(_):roomVacancyData 19 : getInstance() 20 : RoomVacancyData=return(_):roomVacancyData 21 : searchStatus()
22 : String=message(_):true 23 : reduceRoom(fd, ld, single, twin)
24 : changeStatus(fd, ld, single, twin, status, resvRecordBean)
27 : setInstance(roomStatusData) 28 : setInstance(roomVacancyData) 29 : String=message(_):true
1 : getInstance() 2 : CancelDB=return(_):cancelDB 3 : getAllSize() 4 : Integer=return(_):size
5 : getInstance() 6 : RoomStatusData=return(_):roomStatusData 7 : readRecord(index)
8 : CancelBean=return(_):cancelBean
9 : searchStatus(firstday, lastday, single, twin, status) 10 : String=message(_):true 11 : removeDatabase(cancelBean, cancelDB)
12 : setInstance(cancelDB)
CancelRecordServlet CancelDB RoomControl RoomStatusData
ResvRecordBean ResvRecordDB ユーザ
HttpSession RoomVacancyData
loop
loop 1, [firstday < lastday]
1, [i < singleRoom]
loop
loop 1, [firstday < lastday]
1, [i < twinRoom]
loop 0, [index < size]
7.予約記録へ変換したこと通知する( ルール2 : 従属関係) sd
DD
%8 DD
DD
DD
DD DD
DD DD
D D DD
DD
%8+ DD DD
DD
%8+ DD
DD DD
(
( ( DD
DD
,# %
!#
loop
loop 1, [firstday < lastday]
1, [i < singleRoom]
loop
loop 1, [firstday < lastday]
1, [i < twinRoom]
loop 0, [index < size]
13 : new ResvRecordBean(firstday, lastday, single, twin, user)
16 : getInstance()
17 : RoomVacancyData=return(_):roomVacancyData 18 : getInstance()
19 : RoomStatusData=return(_):roomStatusData 20 : searchStatus(dataB) 21 : return(_)
23 : changeStatus(dataC) 22 : reduceRoom(dataA)
27 : setInstance(roomStatus) 26 : setInstance(roomVacancy)
29 : createID(ResvRecordBean) 30 : writeRecord(recordID, resvRecordBean) 31 : setInstance(resvRecordDB) 15 : consumeRooms(dataA, dataB, dataC)
28 : String=return(_):message
33 : message()
32 : setAttribute("resvrecordbean", resvrecordbean)
14 : setAllData(firstday, lastday, single, twin, user)
24 : setSingleStatus(day, index, status)
25 : setTwinStatus(day, index, status) 1 : getInstance()
2 : CancelDB=return(_):cancelDB 3 : getAllSize() 4 : Integer=return(_):size
5 : getInstance()
6 : RoomStatusData=return(_):roomStatusData 7 : readRecord(index)
8 : CancelBean=return(_):cancelBean
9 : searchStatus(firstday, lastday, single, twin, status) 10 : String=message(_):true
11 : removeDatabase(index) 12 : setInstance(CancelDB)
CancelRecordServlet CancelDB RoomControl RoomVacancyData RoomStatusData
ResvRecordBean ResvRecordDB ユーザ
HttpSession
dataA = Integer:4 dataB = dataA + String:1 dataC = dataB + resvrecordbean:1
loop
loop 1, [firstday < lastday]
1, [i < singleRoom]
loop
loop 1, [firstday < lastday]
1, [i < twinRoom]
loop 0, [index < size]
7.予約記録へ変換したことを通知する(ルール3 : データの不整合) sd
DD
%8 %8 DD DD
%8
( ( (
DD
DD DD
DD DD
DD DD
( (
DD DD
B B ,#%
!#$ "F! B D !#
B D
DD
D
DD
D D
DD DD DD
%
DD DD DD
DD DD DD
D D
/
DD DD
/
DD DD
DD DD
5"
"
(
"
8
8 DD
8
8%
8)
8$
8*
8@
8+
81
8
8
8
8%
8)
8$
8*
8@
HttpSession ChangeRoomBean
ChangeRoomStatusServlet
RetrieveRoomStatusServlet
RetrieveRecordServlet RoomStatusData RoomVacancyData
CreateRecordServlet ResvRecordDB DataCheck
ResvRecordBean RoomControl CancelRecordServlet
create create
全体 構成 : キ ャ ン セ ル 機能 追加
CreateRecordServlet CancelRecordServlet
HttpSession
ResvRecordDB
ResvRecordBean ChangeRoomBean
ChangeRoomStatusServlet
RetrieveRoomStatusServlet
RetrieveRecordServlet RoomStatusData
RoomVacancyData DataCheck RoomControl CancelQueueDB
CancelQueueControl CancelQueueBean CancelQueueServlet
create create createcreate
全体構成:キャンセル待ち機能追加 DD
loop loop 1, [firstday < lastday]
1, [i < singleRoom] loop loop 1, [firstday < lastday]
1, [i < twinRoom]
1 : request() 2 : new ResvRecordBean() 10 : getInstance() 11 : RoomVacancyData=return(_):roomVacancyData 12 : getInstance() 13 : RoomStatusData=return(_):roomStatusData 14 : searchStatus(firstday, lastday, single, twin, status) 15 : String=message(_):true 16 : reduceRoom(fd, ld, single, twin) 17 : changeStatus(fd, ld, single, twin, status, resvrecordbean) 23 : createID() 24 : getInstance() 25 : return(_) 26 : writeDatabase(recordID) 27 : setInstance(resvRecordDB) 28 : setAttribute("resvrecordbean", resvRecordBean) 29 : setAttribute("oldresvrecordbean", resvRecordBean)
3 : setAllData(firstday, lastday, single, twin, user) 20 : setInstance(roomVacancyData) 21 : setInstance(roomStatusData)
18 : setSingleStatus(day, roomNo, status) 19 : setTwinStatus(day, romNo, status) 30 : forward(_)
4 : checkAvailability(resvRecordBean)
5 : checkInputDay() 6 : message(_) 7 : checkInputRooms() 8 : message(_) 9 : consumeRooms(resvRecordBean) 22 : String=message(_):true
ユーザ
CreateRecordServletDateCheckRoomStatusDataRoomVacancyData ResvRecordBean
ResvRecordDBRoomControlHttpSession loop loop 1, [firstday < lastday]
1, [i < singleRoom] loop loop 1, [firstday < lastday]
1, [i < twinRoom]
1.宿泊の予約を行なうsd
1 : request() 7 : forward(_) 2 : getinstance() 3 : ResvRecordDB=return(_):resvRecordDB 4 : readRecord(reserveID) 6 : setAttribute("resvrecordbean", resvrecordbean)
5 : ResvRecordBean=return(_):resvRecordBean
ユー ザ
RetrieveRecordServlet ResvRecordDB HttpSession
2.予約 の照 会を 行な う sd
1 : request() 2 : checkInputDay(firstday, lastday) 3 : String=message(_):true 6 : mekeRoomList(firstday, lastday, roomNum) 8 : forward(_) 7 : setStatusResult(lines) 4 : checkInputRoomNum(roomNum) 5 : String=message(_):true
ユー ザ
RetrieveRoomStatusServlet DateCheck RoomControl
3.空室 状況 を見 る sd
loop 1, 30, [firstday < lastday]
1 : request() 4 : changeRoomStatus(firstday, lastday, roomNum, status) 5 : checkInputDay(firstday, lastday) 6 : String=message(_):true 9 : getInstance()
7 : checkInputRoomNum(roomNum) 8 : String=return(_):true 10 : RoomStatusData=return(_):roomStatus 11 : getInstance() 12 : RoomVacancyData=return(_):roomVacancy 15 : setStatusOf(d, roomNo, status) 16 : reduce1/pluse1(d, roomNum) 17 : setInstance(roomStatusData) 18 : setInstance(roomVacancyData)
2 : new ChangeRoomStatusBean() 20 : setAttribute("changeroomstatusbean", changeRoomStatusBean)
3 : setAllData(firstday, lastday, roomNum, status) 13 : getStatusOf() 14 : String=return(_):status 19 : String=return(_):true 21 : forward(_)
ユー ザ
ChangeRoomStatusServlet RoomControl DataCheck RoomStatusData RoomVacancyData ChangeRoomStatusBean
HttpSession loop 1, 30, [firstday < lastday]
4.部屋の状態管理を行なうsd
1 : request() 10 : releaseRoom(resvRecordBean) 11 : increaseRoom(firstday, lastday, single, twin) 12 : releaseStatus(firstday, lastday, single, twin, resvRecordBean) 14 : response(_) 4 : checkInputRecordID(reserveID, user) 5 : return(_)
2 : getInstance() 3 : ResvRecordDB=return(_):resvRecordDB 6 : readRecord(reserveID) 7 : return(_) 8 : removeDatabase(reserveID) 13 : setAttribute("reserverecordbean", resvrecordbean)
9 : setInstance(resvRecordDB)
ユーザ CancelRecordServlet RoomControl ResvRecordDB RoomVacancyData RoomStatusData HttpSession DataCheck
5.予約 のキ ャン セル を行 なう sd
1 : request() 2 : getSttribute(resvrecordbean) 3 : return(_) 4 : new CancelQueueBean() 8 : writeRecord(cancelbean) 10 : setAttribute("cancelqueuebean", cancelbean) 11 : forward(_) 6 : getInstance() 7 : CancelDB=return(_):cancelDB 9 : setInstance(cancelDB)
5 : setAllData(firstday, lastday, single, twin, user, recordID)
ユーザ
CancelQueueServlet CancelBean
CancelDB HttpSession
6.キ ャ ンセ ル 待ちに 登 録 す る sd
loop 0, [frequency < DBSize] break loop loop 1, [firstday < lastday]
1, [i < singleRoom] loop loop 1, [firstday < lastday]
1, [i < twinRoom]
1 : searchCancelQueue(ResvRecordBean, roomcontrol) 14 : CancelQueueBean=return(_):cancelQueueBean 15 : new ResvRecordBean(firstday, lastday, single, twin, user) 2 : getInstance() 3 : CancelDB=return(_):cancelDB 4 : getAllSize() 5 : Integer=return(_):size 6 : readRecord(index) 7 : ResvRecordBean=return(_):resvRecordBean
18 : getInstance() 19 : RoomVacancyData=return(_):roomVacancyData 20 : getInstance() 21 : RoomStatusData=return(_):roomStatusData 22 : searchStatus(firstday, lastday, single, twin, status) 23 : String=message(_):true 25 : changeStatus(firstday, lastday, single, twin)
24 : reduceRoom(firstday, lastday, single, twin) 29 : setInstance(roomStatus)
28 : setInstance(roomVacancy) 31 : createID(ResvRecordBean) 32 : writeRecord(recordID, resvRecordBean) 33 : setInstance(resvRecordDB)
8 : getInstance() 9 : RoomStatusData=return(_):roomStatusData 10 : searchStatus(firstday, lastday, single, twin, status) 11 : String=return(_):message 17 : consumeRooms(ResvRecordBean) 30 : String=return(_):message 35 : message()
12 : removeRecord(index) 13 : setInstance(cancelQueueDB) 34 : setAttribute("resvrecordbean", resvrecordbean)
16 : setAllData(firstday, lastday, single, twin, user) 26 : setSingleStatus(day, index, status) 27 : setTwinStatus(day, index, status)
CancelRecordServlet CancelQueueControl RoomControl CancelDB RoomStatusData RoomVacancyData ResvRecordBean
ResvRecordDB ユー ザ
HttpSession
loop 0, [frequency < DBSize] break loop loop 1, [firstday < lastday]1, [i < singleRoom] loop loop 1, [firstday < lastday]
1, [i < twinRoom]
7.キャンセル待ち記録を予約記録へ変更し、データベースに登録するsd
loop loop 1, [firstday < lastday]
1, [i < singleRoom] loop loop 1, [firstday < lastday]
1, [i < twinRoom]
1 : request() 2 : new ResvRecordBean() 26 : return(_)
13 : getInstance() 14 : RoomVacancyData=return(_):roomVacancyData 15 : getInstance() 16 : RoomStatusData=return(_):roomStatusData 17 : searchStatus(firstday, lastday, single, twin, status) 18 : String=message(_):true 19 : reduceRoom(fd, ld, single, twin) 20 : changeStatus(fd, ld, single, twin, status, resvrecordbean) 32 : setAttribute("resvrecordbean", resvRecordBean) 33 : setAttribute("oldresvrecordbean", resvRecordBean)
4 : setAllData(firstday, lastday, single, twin, user) 5 : getAttribute(oldresvrecordbean) 6 : ResvRecordBean=return(_):resvRecordBean 23 : setInstance(roomVacancyData) 24 : setInstance(roomStatusData)
21 : setSingleStatus(day, roomNo, status) 22 : setTwinStatus(day, romNo, status) 34 : forward(_)
27 : getResvRecordDB()28 : getInstance() 30 : ResvRecordDB=message(_):resvRecordDB
3 : createID() 29 : ResvRecordDB=return(_):resvRecordDB 31 : addDatabase(resvRecordBean, resvRecordDB)
25 : return(_)
7 : checkAvailability(resvRecordBean) 8 : checkInoutDay(firstday, lastday) 9 : String=message(_):true 10 : checkInputRooms(single, twin) 11 : String=message(_):true 12 : consumeRoms(resvRecordBean)
ユーザ
CreateRecordServletDateCheckRoomStatusDataRoomVacancyData ResvRecordBean
ResvRecordDBRoomControlHttpSessionResvRecordControl loop loop 1, [firstday < lastday]
1, [i < singleRoom] loop loop 1, [firstday < lastday]
1, [i < twinRoom]
1.宿泊の予約を行なう(ルール1:クラスの役割の委譲)sd
1 : request() 2 : getSttribute(resvrecordbean) 3 : return(_) 4 : new CancelQueueBean() 10 : addDatabase(cancelbean, cancelDB) 11 : setAttribute("cancelqueuebean", cancelbean) 12 : forward(_) 5 : setAllData(firstday, lastday, single, twin, user, recordID) 6 : getCancelDB() 7 : getInstance() 8 : CancelDB=return(_):cancelDB 9 : CancelDB=return(_):cancelDB
ユーザ
CancelQueueServlet CancelBean
CancelDB HttpSession CancelQueueControl
6.キ ャン セル 待ち に登 録す る( ルー ル1 :ク ラス の役割 の委 譲) sd
break loop loop 1, [firstday < lastday]
1, [i < singleRoom] loop loop 1, [firstday < lastday]
1, [i < twinRoom]
6 : searchCancelQueue(resvRecordBean, cancleDB) 14 : CancelQueueBean=return(_):cancelQueueBean 16 : new ResvRecordBean(firstday, lastday, single, twin, user)
2 : getInstance() 3 : CancelDB=return(_):cancelDB 5 : getAllSize() 7 : Integer=return(_):size 8 : readRecord(index) 9 : CancelBean=return(_):cancelBean 20 : getInstance() 21 : return(_) 22 : getInstance() 23 : return(_) 24 : searchStatus(firstday, lastday, single, twin, status) 25 : return(_) 27 : changeStatus(firstday, lastday, single, twin)
26 : reduceRoom(firstday, lastday, single, twin) 31 : setInstance(roomStatus)
30 : setInstance(roomVacancy)
10 : getInstance() 11 : RoomStatusData=return(_):roomStatusData 12 : searchStatus(firstday, lastday, single, twin, status) 13 : String=return(_):message 19 : consumeRooms(ResvRecordBean) 32 : String=return(_):message 39 : message()
38 : setAttribute("resvrecordbean", resvrecordbean)
18 : setAllData(firstday, lastday, single, twin, user) 28 : setSingleStatus(day, index, status) 29 : setTwinStatus(day, index, status) 33 : getResvRecordDB() 34 : getInstance() 36 : ResvRecordDB=message(_):resvRecordDB
17 : createID() 35 : ResvRecordDB=return(_):resvRecordDB 37 : addDatabase(resvRecordBean, resvRecordDB)
15 : removeDatabase(cancelBean, cancelDB)
1 : getCancelDB() 4 : CancelDB=return(_):cancelDB
CancelRecordServletCancelControlRoomControlCancelDBRoomStatusDataRoomVacancyData ResvRecordBean
ResvRecordDB ユーザ
HttpSessionResvRecordControl break loop loop 1, [firstday < lastday]
1, [i < singleRoom] loop loop 1, [firstday < lastday]
1, [i < twinRoom]
7.予約記録へ変換したことを通知する(ルール1:クラスの役割の委譲)sd
loop loop 1, [firstday < lastday]
1, [i < singleRoom] loop loop 1, [firstday < lastday]
1, [i < twinRoom]
1 : request()2 : new ResvRecordBean() 28 : createID() 29 : getInstance() 30 : ResvRecordDB=return(_):resvRecordDB 31 : writeDatabase(recordID) 32 : setInstance(resvRecordDB) 33 : setAttribute() 34 : setAttribute()
3 : setAllData(firstday, lastday, single, twin, user)4 : getAttribute(oldresvrecordbean) 5 : ResvRecordBean=return(_):resvRecordBean 21 : setSingleStatus(day, roomNo, status) 22 : setTwinStatus(day, romNo, status) 35 : forward(_)
25 : String=message(_):true
12 : consumeRoomsJob(resvRecordBean) 13 : getInstance() 14 : RoomStatusData=return(_):roomStatusData 15 : getInstance() 16 : RoomVacancyData=return(_):roomVacancyData 17 : searchStatus() 18 : String=return(_):true 19 : reduceRoom(fd, ld, single, twin) 20 : changeStatus(fd, ld, single, twin, status, resvRecordBean) 24 : setInstance(roomVacancyData)23 : setInstance(roomStatusData)
6 : checkAvailability(resvRecordBean) 7 : checkInputDay(firstday, lastday) 8 : String=message(_):true 9 : checkInputRooms(single, twin) 10 : String=message(_):true 11 : consumeRooms(resvRecordBean) 26 : String=return(_):true27 : String=message(_):true
ユーザ
CreateRecordServletDateCheckRoomStatusDataRoomVacancyData ResvRecordBean
ResvRecordDBRoomControlHttpSession loop loop 1, [firstday < lastday]
1, [i < singleRoom] loop loop 1, [firstday < lastday]
1, [i < twinRoom]
1.宿泊の予約を行なう(ルール2:従属関係)sd
loop 1, 30, [firstday < lastday]
1 : request() 4 : changeRoomStatus(firstday, lastday, roomNum, status) 5 : checkInputDay(firstday, lastday) 6 : String=message(_):true 7 : checkInputRoomNum(roomNum) 8 : String=return(_):true
2 : new ChangeRoomStatusBean() 22 : setAttribute("changeroomstatusbean", changeRoomStatusBean)
3 : setAllData(firstday, lastday, roomNum, status) 21 : String=return(_):true 23 : forward(_)
9 : changeRoomStatusJob(fd, ld, roomNo, status) 10 : getInstance() 11 : String=message(_):true 12 : getInstance() 13 : String=message(_):true 14 : getStatusOf() 15 : String=return(_):status 16 : setStatusOf(day, romNo, status) 17 : reduce1/plus1(day, roomNo) 18 : setInstance() 19 : setInstance() 20 : String=message(_):true
ユー ザ
ChangeRoomStatusServlet RoomControl DataCheck RoomStatusData RoomVacancyData ChangeRoomStatusBean
HttpSession loop 1, 30, [firstday < lastday]
4.部屋の状態管理を行なう(ルール2:従属関係)sd
1 : request() 10 : releaseRoom(resvRecordBean) 23 : response(_)
4 : checkInputRecordID(reserveID, user) 5 : return(_)
2 : getInstance() 3 : ResvRecordDB=return(_):resvRecordDB 6 : readRecord(reserveID) 7 : return(_) 8 : removeDatabase(reserveID) 22 : setAttribute("reserverecordbean", resvrecordbean)
9 : setInstance(resvRecordDB) 11 : releaseRoomJob() 12 : getInstance() 13 : RoomStatusData=return(_):roomStatusData 14 : getInstance() 15 : RoomVacancyData=return(_):roomVacancyData 16 : releaseStatus(resvRecordBean) 17 : increaseRoom(fd, ld, single, twin, resvRecordBean) 18 : setInstance(roomStatusData) 19 : setInstance(roomVacancyData) 20 : message(_):trueString 21 : String=message(_):true
ユーザ CancelRecordServlet RoomControl ResvRecordDB RoomStatusData HttpSession DataCheck RoomVacancyData
5.予約のキャンセルを行なう(ルール2:従属関係)sd