• 検索結果がありません。

Title クラス間の通信形態に注目した設計レベルの再構成手

N/A
N/A
Protected

Academic year: 2021

シェア "Title クラス間の通信形態に注目した設計レベルの再構成手"

Copied!
92
0
0

読み込み中.... (全文を見る)

全文

(1)

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:鈴木 正人, 情報科学研究科, 修士

(2)
(3)

­

(4)

(5)

(6)

(7)

(8)

(9)

!"

#!

$%&'"

(10)

(11)

(12)

クラス間の相互 作用を調査・分析

抽出・作成 ルールの 対象システム

のUML図

分析結果

再構成 ルール

再構成ルール データベース

再構成後の適 用システム システムの

再構成後 機能追加

比 較 再構成 ルール 適用システム

のUML図

評価・修正 ルールの

比較結果 修正した再構成 ルール

比較対象

要求を基に ルールの検索

条 件 再構成

ルール

システムの 再構成を行う 再構成ルール

機能拡張・追加 を行う

再構成後のシステム 利用システム システム

機能追加要求

作成・登録 フェーズ

評価・修正

フェーズ

利用 フェーズ

(13)

()* ()*

()*

(14)

クラス間の相互 作用を調査・分析

再構成ルールの 抽出・作成 対象システム

のUML図

分析結果

再構成 ルール 再構成ルール

・Obj1とObj2間の メッセージ数:10回

・メッセージの内容:

・Obj1が持つ役割: 客室予約 予約作成を行う

(15)

再構成 ルール データベース

再構成後の 適用システム システムの

再構成後 機能追加

比 較

再構成 ルール 適用システム

のUML図

比較結果 比較対象

(16)

再構成ルール データベース 再構成 ルール

要求を基に

ルールの検索 システムの

再構成を行う 再構成ルール

条 件

機能拡張・追加 を行う 再構成後の システム

システム

システムと 機能追加要求

(17)

(18)

+,

+,

+,

(19)

+,

+,

(20)

HttpSession

ChangeRoomBean

ChangeRoomStatusServlet RetrieveRoomStatusServlet

RetrieveRecordServlet

RoomStatusData RoomVacancyData

CreateRecordServlet

ResvRecordDB

DataCheck ResvRecordBean

RoomControl

CancelRecordServlet create

create

全体構成: キャンセル機能追加

(21)

!

-)."-

" #

$%

+,

!%

(22)

$"

$"%

'($$

(23)

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

(24)

!" " !# !

!"

" !# ! $

%&'! !!"

(

)*

+ (

)&',- "!" "

. / / 0

*&',- (!# !

.12)0

+( (

(25)

%$

%&!" " !# !

(

44

$ ( !# !

(3"

*&# !# !

(

44

,

,

,

,

$! ,

, ,

,

,

(26)

"/(/5"

5"

"

(

(27)

6 6 6

6

(# (#7 6 6

6 6 6% 6%

6 6%

6% 6 6 6

6% 6

%8

(28)

前提条件 (1).OBJ2と OBJ3に同じ操作 のメッセージが並 行して送られてい る

(2).OBJ2と OBJ3が持つデー タが類似している

/

(29)

8

8

8

!

%)

2

/

(30)

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

(31)

!(- 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

(32)

%8% 6 6

6

6 6

6 6

%8) 6 %8) 6

6 66 %8)

(33)

前提条件

(1).OBJ2とOBJ3に 同じ操作のメッセージ が並行して送られてい る

(2).OBJ2とOBJ3が 持つデータが類似して いる

/

%8) 6

6 6 6 66

8

8

(34)

%8$

(

&'! !!"

(

( (

( ( (3" (

%8$

(3" (

(3" (

%8* %8@

(35)

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

(36)

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

(37)

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

( (&# ( ( %

(38)

!(- 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 ( (

(39)

!(- 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 &# (

(40)

!(- 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 (

(41)

%8+

(#

6 6 6

6 (#

(#

(#

% (#

(#

%8 %8

6 (#

6 6

(#

%81 (#

(#

(# (#

%8 %8%

(42)
(43)

5

5

(1: 5

(1: 5

(1: 5

(44)

前提条件 (1).messageA に与えられたデータが messageB, C, D で利用されて

いる場合 (2).messageB, C, D で一部のデータだけ利用

)

(45)

) 5

) 5

) 5

(1: 5 )

(1: 5 )

(1: 55 )

8

8

%8

%8

*

(

&'! !!" &'! !!"

&'

&',- "

&',- ( (

( (

( (

( (3" (

& (&#2

(46)

( &'! !!"

!# $ "F!

!#

( &'

&',- " &',- (

!#

( ( (

( (3"

( ,# %

( (

& ( (

!# )

( (

&# ( (

,# % !#

(47)

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!

(48)

( !# !

&' !" " !# ! !" "

!# !

(3" !# ! !# !

( !# ! !# !

(89

&'!!!" &',- " &',- ( ( (

)

(49)

!(- 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 &'! !!"

(50)

!(- 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 ( (

(51)

%8 %8

D

D DD

D

D DD

D

D DD

D

D DD

(52)

再構成前

機能追加後

+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 再構成後

機能追加前

(53)

%8

8

(54)

%8% %8)

(55)

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

(56)

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

(57)

G

G

G

%8@ %8)

(

%

%

% (

( &

D

DD

(58)

D DD

D %8$ DD %8*

D D D

D

DD

%8$

G

G

G

G

(59)

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

(60)

%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

(61)

%81 DD DD

DD

DD DD

DD DD

D

DD

(62)

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

(63)

%8 DD

DD

DD

DD DD

DD DD

D D DD

DD

(64)

%8+ DD DD

DD

%8+ DD

DD DD

(

( ( DD

DD

,# %

!#

(65)

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

(66)

%8 %8 DD DD

%8

( ( (

DD

DD DD

DD DD

DD DD

( (

DD DD

B B ,#%

!#$ "F! B D !#

B D

(67)

DD

D

DD

(68)

D D

DD DD DD

%

DD DD DD

DD DD DD

D D

/

DD DD

/

DD DD

DD DD

(69)

(70)

5"

"

(

(71)

"

(72)
(73)

8

8 DD

8

8%

8)

8$

8*

8@

8+

81

8

8

8

8%

8)

8$

8*

8@

(74)

HttpSession ChangeRoomBean

ChangeRoomStatusServlet

RetrieveRoomStatusServlet

RetrieveRecordServlet RoomStatusData RoomVacancyData

CreateRecordServlet ResvRecordDB DataCheck

ResvRecordBean RoomControl CancelRecordServlet

create create

全体 構成 : キ ャ ン セ ル 機能 追加

(75)

CreateRecordServlet CancelRecordServlet

HttpSession

ResvRecordDB

ResvRecordBean ChangeRoomBean

ChangeRoomStatusServlet

RetrieveRoomStatusServlet

RetrieveRecordServlet RoomStatusData

RoomVacancyData DataCheck RoomControl CancelQueueDB

CancelQueueControl CancelQueueBean CancelQueueServlet

create create createcreate

全体構成:キャンセル待ち機能追加 DD

(76)

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

(77)

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

(78)

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

(79)

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

(80)

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

(81)

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

(82)

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

(83)

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.宿泊の予約を行な(ルー)sd

(84)

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

(85)

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.予約記録へ変換し通知(ル)sd

(86)

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

(87)

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

(88)

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

参照

関連したドキュメント

光再構成型ゲートアレイ 光再構成型ゲートアレイの基本構成を図 1 に示す.光再構成型ゲートアレイはレー

構は Android 4.2 に実装されているため,ランタイムパー の要求元のアプリのパッケージにある

概要:情報技術のグローバル化に伴い,ユーザの要求が多様化してきている.様々なユーザの要求を獲得するために

QoS制御有 QoS制御無 ビデオストリームの状況 無線回線 の帯域 紛失 時刻 クライアント 基地局 サーバ コアネットワーク パケット パケット損失

再現するなら中途半端な行列は出来ない。再現する

しか しなが ら,系全休が構成要素の協調 と秩序 によって構成 されているか らには ,障害の性質 によっては単一構成要素の故障で も系全体 に影響 を及

4複数マッチング再構成とパートナー交換フロー

光再構成型ゲートアレイ 光再構成型ゲートアレイの基本構成を図 1 に示す.光再構成型ゲートアレイはレー