, . , , . . UML (sequence diagram). , .
(system sequence diagram) , , , , . " ". , . , . - , "" , .
: , - . " " . . () UML , .
(system event) , . . (system operation) , . (contract) , , , , . (system operation contract) .
23. . : .
(collaboration diagrams) . , . , , .
, , UML . , , UML , . UML, "" , . - , .
|
|
, . , " " , . , . , .
. UML . ; . , . , .
24. :
.
. , , , , , . , - , , .
, , , .
;
;
, , .
- .
25. : .
, , - , , , .
. , . , - , .
, , - , .
;
.
|
|
26. : , .
UML . . 2 :
1. ;
2. .
:
- ;
- ;
- .
:
- (, );
- ;
- ;
.
- , .
, .
. 2 : () ().
(, , ). . . . .
:
,
, , ,
, , , . , .
.
27. : Creator.
- , .
: .
: , , :
- ;
- ;
- ;
- ;
- , ;
, .
, . , . , . . , , .
: , , .
28. : Expert
- , .
: .
: , , .
|
|
, . , . , .
: , .
: , ; , , , .
29. : Observer ().
--, .
: . .
:
-
-
- ,
: . . , . , , .
. . .
:
30. : Controller.
: ?
: , :
1. ( )
2. ( )
3. , ( )
4. ( )
, , , .
, .
. .
, , , . , . , , .
|
|
Controller .
:
1.
2.
, , , .
:
1. , , . .
2. , .
3. , , , .
:
1. .
2. , .
:
1. .
2. Command.
Command, execute. , , . execute, .
31. : Command.
:
: , . :
1. ( )
2. ( )
3. ( )
4. ( )
-.
: , ,
32. - .
- .
- . LOC (lines of code) . .
, .-. | , . $ | KLOC, . LOC | , . | |||
001 | 12,1 | |||||
bb02 | 27,2 | |||||
1.
2.
3.
4.
: .
:
1. ;
2. , ;
3. .
33. .
5 :
1. ;
2. ;
3. , ;
4. ;
5. , .
34. :
. . . . , . (data tokens), . .
|
|
. . , .
(Class Slice Abstraction) CSA(C) . .
, .
, .
(StrongData Cohesion) , , . , , :
,
SG (CSA(C)) , () .
, .
(Weak Data Cohesion) , , . , . :
,
G (CSA(C)) . . (Data Adhesiveness). , , . :
.
35. :
. . , . ( ), , , . , .
. Stack. , . .
Stack
, top Stack, Push, Pop, Vtop IsEmpty. , . , Size Pop : Size Push, , , Pop. Stack , . , . , , . , . .
.
() , .
, . , , . , , DU(M).
, : 1) ', ( ) ; 2) , ', , .
, , IU().
:
AM () = DU () IU ().
() , . :
() = [[AM (M) | M V () ]],
V(C) .
, - , . ( ).
LAC(C) , , . :
LAC (C) =[[AM (M)|M LV (C) ]],
LV (C) , .
, . 14.2, :
AC (Stack) = [[{top}, {size}, {array, top}, {array, top, size}, {pop}]].
Stack , :
AC (Stack) = LAC (Stack)
NP (C) AC (C). NP . N , NP (C) = N*(N- l)/2. :
ü NDC (C) AC(Q;
ü NIC (C) ().
:
ü (Tight Class Cohesion ()) :
() = NDC () / NP ();
ü (Loose Class Cohesion (LCC)) :
LCC () = (NDC () + NIC ()) / NP ().
, :
LCC (C) >=TCC (C).
Stack :
TCC(Stack)=7/10=0,7
LCC(Stack)=10/10=l
, 70% Stack , LCC , Stack .
LCC . , . , , . , . , .
36. : -
. . , [77].
- , . - . , . . .
- . , , . , , .
, - . , . , , . . , , . . (, , , ). : - .
- , . .
CDBC (Change Dependency Between Classes) , - SC (server class) . , - (client class) , CDBC , SC.
CDBC :
ü - - ( CS );
ü CS ( ).
. 14.3, , , .
SC SC SC /- SC SC /- SC | n j n j n |
, , - SC, - , . : SC , , , . , SC . -, (0 < k < 1). (1 - k).
CDBC :
;
CDBC(CC, SC) = min(n, A).
CDBC:
1) -;
2) - ( public, protected, private).
LD (Locality of Data) , , . , . , .
LD , .
C++. Mi(1 i n) . / . :
,
:
ü Li(1 i n) , Mi ( /). : ; ; , Mi;
ü Ti(1 i n) , Mi, , Mi.
, Mi , .
, , ( , Li), . , , CDBC.
37. :
1: (Weighted Methods Per Class)
C n c1, c2, c3, , cn
WMC = ∑ ci
ci=1, WMC .
2: DIT (Depth of Inheritance Tree)
.
3: NOC (Number of children)
.
7 .
4: CBO (Coupling between object classes)
, .
5: RFC (Response For a Class)
+ , .
6: LCOM (Lack of Cohesion in Methods)
, .
;
.
Ij , Mj
, =card{Iij|IiIj=0}
= card{Iij|IiIj<>0}
LCOM= -, ( >) 0,
, .. . , , .
38. :
,
4
1. CS (Class Size)
: 1. , ; 2. , .
, , .. . CS<=20 .
2. , , NOO (Number of Operations Overridden by a Subclass)
NOO<=3 .
3. , , NOA (Number of Operations Added by a Subclass)
. SC = 20 DIT=6 NOA<4 .
4. SI (Specialization Index)
SI = (NOO*)/M
M .
SI<=0,15
-
5. OSAVG (Average Operation Size)
OSAVG<=9
6. OC (Operation Complexity)
(. ).
OC<=65
7. NPAVG
=0,7