!"#$%&'()(
*&+,-.,.-(%"&((/0123&+(
!"#$%&'(&)*++,+$&
-.#//+&0(&123++&
42"&56%7./&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.2
!0.%&.%+(
8(9&&&:+;%,/&0+2".6.3.,<&8(=&&&:+;%,/&)$%/>%?3+;&
8(@&&&AA&:+;%,/&
8(4&&&B+?$+;+/7/,&AA&:+;%,/;&%/&2"+&C0'&
8(D&&&AA&:+;%,/&)#E+$/;&
8(8&&&A2"+$&:+;%,/&F./;%6+$#7./;&
8(G&&&AA&0+#;H$+I+/2&8(J&&&:+;%,/&:.>HI+/2#7./&
8(K&&&L/M.$I#7./&!<;2+I&5N#I?3+&
8(9O&B+#3PQ%I+&5N#I?3+&
8(99&R"#2&2"%;&F"#?2+$&0+#/;&M.$&S.H&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.3
!"#$%&'()(456&789&+(
• :+;%,/&?$%/>%?3+;&• ATU+>2P.$%+/2+6&6+;%,/&"+H$%;7>;&• :+;%,/&?#E+$/;&• 5N>+?7./;&#/6&+N>+?7./&"#/63%/,&• :.>HI+/7/,&6+;%,/;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.4
):;(*&+,-.(/&%"01030-<(
• R+&"#V+&#/&#T;2$#>2&6+;>$%?7./&.M&#&;.3H7./&2.&.H$&>H;2.I+$W;&?$.T3+IX&#&;.YZ#$+&#$>"%2+>2H$#3&6+;%,/X&#&?3#/&M.$&6+>.I?.;%/,&2"+&6+;%,/&%/2.&;.YZ#$+&H/%2;&#/6!.>#7/,&2"+&;<;2+IW;&MH/>7./#3&$+[H%$+I+/2;&2.&2"+I&
• \.&6%;7/>2&T.H/6#$<&T+2Z++/&2"+&+/6&.M&2"+&#$>"%2+>2H$+P6+;%,/&?"#;+&#/6&2"+&;2#$2&.M&2"+&I.6H3+P6+;%,/&?"#;+&
• \.&>.I?#$#T3+&6+;%,/&$+>%?+;&M.$&?$.,$+;;%/,&M$.I&#&;.YZ#$+&H/%2W;&;?+>%]>#7./&2.&%2;&I.6H3#$&6+;%,/&
• Q"+&?$.>+;;&2#^+/&2.Z#$6;&#&]/#3&;.3H7./&%;&/.2&#;&%I?.$2#/2&#;&2"+&6.>HI+/2#7./&?$.6H>+6&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.5
):;(*&+,-.(/&%"01030-<(=&>#7%0',.-(
• :+;%,/&6+>%;%./;&#$+&?+$%.6%>#33<&$+V%;%2+6&#/6&$+V%;+6&• B+M#>2.$%/,&• ATU+>7V+_&2.&;%I?3%M<&>.I?3%>#2+6&;.3H7./;&.$&2.&.?7I%`+&2"+&6+;%,/&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.6
):?(*&+,-.(@',.7,$3&+(
• *&+,-.($',.7,$3&+(#$+&,H%6+3%/+;&M.$&6+>.I?.;%/,&#&;<;2+IW;&$+[H%$+6&MH/>7./#3%2<&#/6&T+"#V%.$&%/2.&I.6H3+;&
• Q"+&?$%/>%?3+;&%6+/7M<&2"+&>$%2+$%#&– M.$&6+>.I?.;%/,&#&;<;2+I&&
– 6+>%6%/,&Z"#2&%/M.$I#7./&2.&?$.V%6+&a#/6&Z"#2&2.&>./>+#3b&%/&2"+&$+;H37/,&I.6H3+;&
• !%N&6.I%/#/2&?$%/>%?3+;_&– 0.6H3#$%2<&
– L/2+$M#>+;&– L/M.$I#7./&"%6%/,&
– L/>$+I+/2#3&6+V+3.?I+/2&
– 1T;2$#>7./&– c+/+$#3%2<&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.7
):;(*&+,-.(/&%"01030-<((A,1&5#'():;(BC#D,.-E(#(=#80.#3&(*&+,-.(@'07&++(
• L/&2"+&%6+#3&6+;%,/&?$.>+;;X&2"+&6+;%,/&.M&#&;.YZ#$+&;<;2+I&Z.H36&?$.,$+;;&M$.I&"%,"P3+V+3&;?+>%]>#7./&2.&;.3H7./X&H;%/,&#&;+[H+/>+&.M&2.?P6.Z/X&+$$.$PM$++&6+;%,/&6+>%;%./;&$+;H37/,&%/&#&"%+$#$>"%>#3&>.33+>7./&.M&I.6H3+;&
• d.$&;+V+$#3&$+#;./;&a+(,(X&?..$3<&H/6+$;2..6&.$&>"#/,%/,&$+[H%$+I+/2;X&$+M#>2.$%/,X&"HI#/&+$$.$bX&6+;%,/&Z.$^&$#$+3<&?$.>++6;&6%$+>23<&.$&;I..2"3<&M$.I&$+[H%$+I+/2;&2.&I.6H3+;&
• R+&;".H36&;%IH3#2+&%6+#3&T+"#V%.$&T<&Z$%7/,&.H$&6.>HI+/2#7./&#;&%M&Z+&"#6&M.33.Z+6&2"+&%6+#3&?$.>+;;&
– 6+>.I?.;%/,&2"+&;.YZ#$+&H/%2&%/2.&I.6H3+;&
– 6+]/%/,&2"+&I.6H3+&%/2+$M#>+;&
– 6+;>$%T%/,&2"+&%/2+$6+?+/6+/>%+;&#I./,&I.6H3+;&
– 6.>HI+/7/,&2"+&%/2+$/#3&6+;%,/;&.M&I.6H3+;&
• L/;+$2&?3#>+".36+$;&./&#$+#;&Z+&?H2&.eXB%/,&/+Z&%/M.$I#7./&./>+&2"+&6+2#%3;&T+>.I+&^/.Z/&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.8
):?(*&+,-.(@',.7,$3&+(/0123#',%<(
• /0123#',%<(%;&2"+&?$%/>%?3+&.M&^++?%/,&;+?#$#2+&2"+&V#$%.H;&H/$+3#2+6&#;?+>2;&.M&#&;<;2+IX&;.&2"#2&+#>"&#;?+>2&>#/&T+&;2H6%+6&%/&%;.3#7./&a#3;.&>#33+6&;+?#$#7./&.M&>./>+$/;b&
• LM&2"+&?$%/>%?3+&%;&#??3%+6&Z+33X&+#>"&$+;H37/,&I.6H3+&Z%33&"#V+&#&;%/,3+&?H$?.;+&#/6&Z%33&T+&$+3#7V+3<&%/6+?+/6+/2&.M&2"+&.2"+$;&
– +#>"&I.6H3+&Z%33&T+&+#;<&2.&H/6+$;2#/6&#/6&6+V+3.?&
– +#;%+$&2.&3.>#2+&M#H32;&aT+>#H;+&2"+$+&#$+&M+Z+$&;H;?+>2&I.6H3+;&?+$&M#H32b&&
– 5#;%+$&2.&>"#/,+&2"+&;<;2+I&aT+>#H;+&#&>"#/,+&2.&./+&I.6H3+&#e+>2;&$+3#7V+3<&M+Z&.2"+$&I.6H3+;&
• Q.&6+2+$I%/+&".Z&Z+33&#&6+;%,/&;+?#$#2+;&>./>+$/;X&Z+&H;+&2Z.&>./>+?2;&2"#2&I+#;H$+&I.6H3+&%/6+?+/6+/>+_&>.H?3%/,&#/6&>."+;%./&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.9
):?(*&+,-.(@',.7,$3&+(!02$3,.-(
• QZ.&I.6H3+;&#$+&8-"%3<(702$3&1(Z"+/&2"+<&6+?+/6&#&,$+#2&6+#3&./&+#>"&.2"+$&
• F00+&3<(702$3&1(I.6H3+;&"#V+&;.I+&6+?+/6+/>+X&TH2&2"+%$&%/2+$>.//+>7./;&#$+&Z+#^&
• G.702$3&1&I.6H3+;&"#V+&/.&%/2+$>.//+>7./;!f&2"+<&#$+&>.I?3+2+3<&H/$+3#2+6&
– Tightly coupled - – many dependencies
– Loosely coupled - – some dependencies
– Uncoupled - – no dependencies
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.10
):?(*&+,-.(@',.7,$3&+(!02$3,.-(H70.8.2&1I(
• Q"+$+&#$+&I#/<&Z#<;&2"#2&I.6H3+;&>#/&T+&6+?+/6+/2&./&+#>"&.2"+$_&– Q"+&$+M+$+/>+;&I#6+&M$.I&./+&I.6H3+&2.&#/.2"+$&
– Q"+&#I.H/2&.M&6#2#&?#;;+6&M$.I&./+&I.6H3+&2.&#/.2"+$&
– Q"+&#I.H/2&.M&>./2$.3&2"#2&./+&I.6H3+&"#;&.V+$&2"+&.2"+$&
• F.H?3%/,&>#/&T+&I+#;H$+6./,&#&;?+>2$HI&.M&6+?+/6+/>+&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.11
):?(*&+,-.(@',.7,$3&+((!02$3,.-J(K<$&+(0>(!02$3,.-(
• F./2+/2&>.H?3%/,&• F.II./&>.H?3%/,&
• F./2$.3&>.H?3%/,&• !2#I?&>.H?3%/,&
• :#2#&>.H?3%/,&– TIGHT COUPLING!
– LOOSE COUPLING!
– LOW COUPLING!
– Content coupling
– Common coupling
– Control coupling
– Stamp coupling
– Data coupling
– Uncoupled
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.12
):?(*&+,-.(@',.7,$3&+((!0.%&.%(!02$3,.-(
• A>>H$;&Z"+/&./+&>.I?./+/2&I.6%]+;&#/&%/2+$/#3&6#2#&%2+I&%/&#/.2"+$&>.I?./+/2X&.$&Z"+/&./+&>.I?./+/2&T$#/>"+;&%/2.&2"+&I%663+&.M&#/.2"+$&>.I?./+/2&
Module B _________________ _________________ _________________ _________________ – Generate D Call D _________________ _________________ _________________ _________________ _________________ _________________ _________________ _________________
Module D _________________ _________________ _________________ _________________ _________________ _________________ _________________ _________________ _________________ _________________
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.13
):?(*&+,-.(@',.7,$3&+((!0LL0.(!02$3,.-(
• 0#^%/,&#&>"#/,+&2.&2"+&>.II./&6#2#&I+#/;&2$#>%/,&T#>^&2.!&>.I?./+/2;&2"#2&#>>+;;&2".;+&6#2#&2.&+V#3H#2+&2"+&+e+>2&.M&2"+&>"#/,+&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.14
):?(*&+,-.(@',.7,$3&+((!0.%'03(!02$3,.-(
• R"+/&./+&I.6H3+&?#;;+;&?#$#I+2+$;&.$&#&$+2H$/&>.6+&2.&>./2$.3&2"+&T+"#V%.$&.M&#/.2"+$&I.6H3+&
• L2&%;&%I?.;;%T3+&M.$&2"+&>./2$.33+6&I.6H3+&2.&MH/>7./&Z%2".H2&;.I+&6%$+>7./&M$.I&2"+&>./2$.33%/,&I.6H3+&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.15
):?(*&+,-.(@',.7,$3&+((A%#L$(#.1(*#%#(!02$3,.-(
• A%#L$(702$3,.-(.>>H$;&Z"+/&>.I?3+N&6#2#&;2$H>2H$+;&#$+&?#;;+6&T+2Z++/&I.6H3+;&– !2#I?&>.H?3%/,&$+?$+;+/2;&#&I.$+&>.I?3+N&%/2+$M#>+&T+2Z++/&I.6H3+;X&
T+>#H;+&2"+&I.6H3+;&"#V+&2.&#,$++&./&2"+&6#2#W;&M.$I#2&#/6&.$,#/%`#7./&
• LM&./3<&6#2#&V#3H+;X&#/6&/.2&;2$H>2H$+6&6#2#X&#$+&?#;;+6X&2"+/&2"+&I.6H3+;&#$+&>.//+>2+6&T<&1#%#(702$3,.-(– :#2#&>.H?3%/,&%;&;%I?3+$&#/6&3+;;&3%^+3<&2.&T+&#e+>2+6&T<&>"#/,+;&%/&6#2#&
$+?$+;+/2#7./&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.16
):?(*&+,-.(@',.7,$3&+((!0"&+,0.(
• !0"&+,0.&$+M+$;&2.&2"+&6+?+/6+/>+&Z%2"%/&#/6&#I./,&#&I.6H3+W;&%/2+$/#3&+3+I+/2;&a+(,(X&6#2#X&MH/>7./;X&%/2+$/#3&I.6H3+;b&
– LOW COHESION!
– HIGH COHESION!
– Coincidental
– Logical
– Temporal
– Procedural
– Communicational
– Functional
– Informational
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.17
):?(*&+,-.(@',.7,$3&+((!0"&+,0.(H70.8.2&1I(
• F.%/>%6+/2#3&&aZ.$;2&6+,$++b&– )#$2;&#$+&H/$+3#2+6&2.&./+&#/.2"+$&
• '.,%>#3&– )#$2;&#$+&$+3#2+6&./3<&T<&2"+&3.,%>&;2$H>2H$+&.M&>.6+&
• Q+I?.$#3&– 0.6H3+W;&6#2#&#/6&MH/>7./;&$+3#2+6&T+>#H;+&2"+<&#$+&H;+6&2"+&;#I+&
7I+&%/&#/&+N+>H7./&
• )$.>+6H$#3&– !%I%3#$&2.&2+I?.$#3X&#/6&MH/>7./;&?+$2#%/&2.&;.I+&$+3#2+6&#>7./&.$&
?H$?.;+&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.18
):?(*&+,-.(@',.7,$3&+((!0"&+,0.(H70.8.2&1I(
• F.IIH/%>#7./&&– A?+$#2+;&./&2"+&;#I+&6#2#&;+2&
• dH/>7./#3&a%6+#3&6+,$++b&– 133&+3+I+/2;&+;;+/7#3&2.&#&;%/,3+&MH/>7./&#$+&>./2#%/+6&%/&./+&I.6H3+X&#/6!&
.M&2"+&+3+I+/2;&#$+&+;;+/7#3&2.&2"+&?+$M.$I#/>+&.M&2"+&MH/>7./&
• L/M.$I#7./#3&– 16#?7./&.M&MH/>7./#3&>."+;%./&2.&6#2#&#T;2$#>7./&#/6&.TU+>2PT#;+6&
6+;%,/&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.19
):?(*&+,-.(@',.7,$3&+((M.%&'>#7&+(
• 1/&,.%&'>#7&(6+]/+;&Z"#2&;+$V%>+;&2"+&;.YZ#$+&H/%2&?$.V%6+;&2.&2"+&$+;2&.M&2"+&;<;2+IX&#/6&".Z&.2"+$&H/%2;&>#/&#>>+;;&2".;+&;+$V%>+;&– d.$&+N#I?3+X&2"+&%/2+$M#>+&2.&#/&.TU+>2&%;&2"+&>.33+>7./&.M&2"+&.TU+>2W;&?HT3%>&
.?+$#7./;&#/6&2"+&.?+$#7./;W&+,-.#%2'&+X&Z"%>"&;?+>%M<&+#>"&.?+$#7./W;&/#I+X&?#$#I+2+$;X&#/6&?.;;%T3+&$+2H$/&V#3H+;&
• 1/&%/2+$M#>+&IH;2.&6+]/+&Z"#2&2"+&H/%2&$+[H%$+;X&%/&2+$I;&.M&;+$V%>+;&.$&#;;HI?7./;X&M.$&%2&2.&Z.$^&>.$$+>23<&
• 1&;.YZ#$+&H/%2W;&%/2+$M#>+&6+;>$%T+;&Z"#2&2"+&H/%2&$+[H%$+;&.M&%2;&+/V%$./I+/2X&#;&Z+33&#;&Z"#2&%2&?$.V%6+;&2.&%2;&+/V%$./I+/2&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.20
):?(*&+,-.(@',.7,$3&+((M.%&'>#7&+(H70.8.2&1I(
• 1&;.YZ#$+&H/%2&I#<&"#V+&;+V+$#3&%/2+$M#>+;&2"#2&I#^+&6%e+$+/2&6+I#/6;&./&%2;&+/V%$./I+/2&.$&2"#2&.e+$&6%e+$+/2&3+V+3;&.M&;+$V%>+&
– Data ________________ _________________ _________________
– Operation 1 _________________ _________________ _________________ _________________
– Operation 2 _________________ _________________ _________________ _________________
– Module – Interface A
– Operation 1 () – Operation 2 () – Operation 4 ()
– Interface B
– Operation 2 ()
– Operation 3 ()
– Operation 3 _________________ _________________ _________________ _________________
– Operation 4 _________________ _________________ _________________ _________________
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.21
):?(*&+,-.(@',.7,$3&+((M.%&'>#7&+(H70.8.2&1I(
• Q"+&+$&7,N7#80.(.M&#&;.YZ#$+&H/%2W;&%/2+$M#>+&6+;>$%T+;&2"+&+N2+$/#33<&V%;%T3+&?$.?+$7+;&.M&2"+&;.YZ#$+&H/%2&
• 1/&%/2+$M#>+&;?+>%]>#7./&;".H36&>.IIH/%>#2+&2.&.2"+$&;<;2+I&6+V+3.?+$;&+V+$<2"%/,&2"#2&2"+<&/++6&2.&^/.Z&2.&H;+&.H$&;.YZ#$+&H/%2&>.$$+>23<&– )H$?.;+&– )$+>./6%7./;&a#;;HI?7./;b&
– )$.2.>.3;&– ).;2>./6%7./;&aV%;%T3+&+e+>2;b&– gH#3%2<&#E$%TH2+;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.22
):?(*&+,-.(@',.7,$3&+((M.>0'L#80.(O,1,.-(
• M.>0'L#80.(",1,.-((%;&6%;7/,H%;"+6&T<&%2;&,H%6#/>+&M.$&6+>.I?.;%/,&#&;<;2+I_&&– 5#>"&;.YZ#$+&H/%2&+/>#?;H3#2+;&#&;+?#$#2+&6+;%,/&6+>%;%./&2"#2&>.H36&T+&
>"#/,+6&%/&2"+&MH2H$+&&&
– Q"+/&2"+&%/2+$M#>+;&#/6&%/2+$M#>+&;?+>%]>#7./;&#$+&H;+6&2.&6+;>$%T+&+#>"&;.YZ#$+&H/%2&%/&2+$I;&.M&%2;&+N2+$/#33<&V%;%T3+&?$.?+$7+;&
• C;%/,&2"%;&?$%/>%?3+X&I.6H3+;&I#<&+N"%T%2&6%e+$+/2&^%/6;&.M&>."+;%./&– 1&I.6H3+&2"#2&"%6+;&#&6#2#&$+?$+;+/2#7./&I#<&T+&%/M.$I#7./#33<&>."+;%V+&
– 1&I.6H3+&2"#2&"%6+;&#/,.$%2"I&I#<&T+&MH/>7./#33<&>."+;%V+&
• 1&T%,V#/2#,+&.M&%/M.$I#7./&"%6%/,&%;&2"#2&2"+&$+;H37/,&;.YZ#$+&H/%2;&#$+&3..;+3<&>.H?3+6&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.23
):?(*&+,-.(@',.7,$3&+((A,1&5#'():?((M.>0'L#80.(O,1,.-(,.(44(*&+,-.+(
• L/&AA&6+;%,/X&Z+&6+>.I?.;+&#&;<;2+I&%/2.&.TU+>2;&#/6&2"+%$&#T;2$#>2&2<?+;&&&– L/&2"%;&;+/;+X&+#>"&.TU+>2&"%6+;&%2;&6#2#&$+?$+;+/2#7./&M$.I&.2"+$&.TU+>2;&
– Q"+&./3<&#>>+;;&2"#2&.2"+$&.TU+>2;&"#V+&2.&#&,%V+/&.TU+>2W;&6#2#&%;&V%#&#&;+2&.M&#>>+;;&MH/>7./;&2"#2&2"+&.TU+>2V+$7;+;&%/&%2;&%/2+$M#>+&
– Q"%;&%/M.$I#7./&"%6%/,&I#^+;&%2&+#;<&2.&>"#/,+&#/&.TU+>2W;&6#2#&$+?$+;+/2#7./&Z%2".H2&?+$2H$T%/,&2"+&$+;2&.M&2"+&;<;2+I&
• h.Z+V+$X&6#2#&$+?$+;+/2#7./&%;&/.2&2"+&./3<&2<?+&.M&6+;%,/&6+>%;%./&Z+&I#<&Z#/2&2.&"%6+&
– 0#<&/++6&2.&+N?#/6&.H$&/.7./&.M&Z"#2&#/&.TU+>2&%;X&2.&%/>3H6+&2<?+;&.M&%/M.$I#7./&T+;%6+;&6#2#&2<?+;&
• ATU+>2;&>#//.2&T+&>.I?3+2+3<&H/>.H?3+6&M$.I&./+&#/.2"+$X&T+>#H;+&#/&.TU+>2&/++6;&2.&^/.Z&2"+&%6+/72<&.M&2"+&.2"+$&.TU+>2;&;.&2"#2&2"+<&>#/&%/2+$#>2(&&
– 0%,"2&I+#/&2"#2&>"#/,%/,&2"+&/#I+&.M&#/&.TU+>2X&.$&2"+&/HIT+$&.M&.TU+>2&%/;2#/>+;X&M.$>+;&H;.&2.&>"#/,+!&H/%2;&2"#2&%/V.^+&2"+&.TU+>2&
– !H>"&6+?+/6+/>+&>#//.2&T+&"+3?+6&Z"+/&#>>+;;%/,&#/&.TU+>2&2"#2&"#;&#&6%;7/>2&%6+/72<&TH2&%2&I#<&T+&#V.%6+6&Z"+/&#>>+;;%/,&#/&#$T%2$#$<&.TU+>2&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.24
):?(*&+,-.(@',.7,$3&+((M.7'&L&.%#3(*&9&30$L&.%(
• c%V+/&#&6+;%,/&>./;%;7/,&.M&;.YZ#$+&H/%2;&#/6&2"+%$&%/2+$M#>+;X&Z+&>#/&H;+&2"+&%/M.$I#7./&#T.H2&2"+&H/%2;W&6+?+/6+/>%+;&2.&6+V%;+&#/&%/>$+I+/2#3&;>"+6H3+&.M&6+V+3.?I+/2&
• !2#$2&T<&I#??%/,&.H2&2"+&H/%2;W&2+&+('&3#80.&– $+3#2+;&+#>"&;.YZ#$+&H/%2&2.&2"+&.2"+$&;.YZ#$+&H/%2;&./&Z"%>"&%2&6+?+/6;&
• G+&+(-'#$"+(>#/&"+3?&2.&%6+/7M<&?$.,$+;;%V+3<&3#$,+$&;HT;+2;&.M&.H$&;<;2+I&2"#2&Z+&>#/&%I?3+I+/2&#/6&2+;2&%/>$+I+/2#33<&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.25
):?(*&+,-.(@',.7,$3&+((M.7'&L&.%#3(*&9&30$L&.%(H70.8.2&1I(
• C;+;&,$#?";&M.$&2Z.&6+;%,/;&– C#.P,.&$+M+$;&2.&2"+&/HIT+$&.M&H/%2;&2"#2&H;+&#&?#$7>H3#$&;.YZ#$+&H/%2&
– C#.P02%&$+M+$;&2.&2"+&/HIT+$&.M&H/2;&H;+6&T<&?#$7>H3#$&;.YZ#$+&H/%2&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.26
):?(*&+,-.(@',.7,$3&+((M.7'&L&.%#3(*&9&30$L&.%(H70.8.2&1I(
• R+&>#/&2$<&2.&T$+#^&#&><>3+&%/&2"+&H;+;&,$#?"&H;%/,&#&2+>"/%[H+&>#33+6&+#.1Q,7",.-(– A/+&.M&2"+&><>3+W;&H/%2;&%;&6+>.I?.;+6&%/2.&2Z.&H/%2;X&;H>"&2"#2&./+&.M&2"+&/+Z&H/%2;&"#;&/.&6+?+/6+/>%+;&
– !#/6Z%>"%/,&>#/&T+&#??3%+6&I.$+&2"#/&./>+X&2.&T$+#^&+%2"+$&IH2H#3&6+?+/6+/>%+;&%/&7,"23<&>.H?3+6&H/%2;&.$&3./,&6+?+/6+/><&>"#%/;&
– (")! – (#)! – ($)!
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.27
):?(*&+,-.(@',.7,$3&+((R5+%'#780.(
• 1/+%'#780.(%;&#&I.6+3&.$&$+?$+;+/2#7./&2"#2&.I%2;&;.I+&6+2#%3;&;.&2"#2&%2&>#/&M.>H;&./&.2"+$&6+2#%3;&&
• Q"+&6+]/%7./&%;&V#,H+&#T.H2&Z"%>"&6+2#%3;&#$+&3+Y&.H2&.M&#&I.6+3X&T+>#H;+&6%e+$+/2&#T;2$#>7./;X&TH%32&M.$&6%e+$+/2&?H$?.;+;X&.I%2&6%e+$+/2&^%/6;&.M&6+2#%3;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.28
):?(*&+,-.(@',.7,$3&+((A,1&5#'():S((G+,.-(R5+%'#780.(
• !H??.;+&2"#2&./+&.M&2"+&;<;2+I&MH/>7./;&%;&2.&;.$2&2"+&+3+I+/2;&.M&#&3%;2&'(&Q"+&%/%7#3&6+;>$%?7./&.M&2"+&6+;%,/&%;_&
&!.$2&'&%/&/./6+>$+#;%/,&.$6+$&
&Q"+&/+N2&3+V+3&.M&#T;2$#>7./&I#<&T+&#&?#$7>H3#$,.$%2"I_&
&DO WHILE I is between 1 and (length of L)–1: Set LOW to index of smallest value in L(I),..., L(length of L)
Interchange L(I) and L(LOW)
ENDDO
• Q"+,.$%2"I&?$.V%6+;&#&,$+#2&6+#3&.MB%7./#3&%/M.$I#7./X&".Z+V+$X&%2&>#/&T+&I#6+&+V+/&I.$+&6+2#%3+6&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.29
):?(*&+,-.(@',.7,$3&+((A,1&5#'():S((G+,.-(R5+%'#780.(H70.8.2&1I(
• Q"+&2"%$6&#/6&]/#3,.$%2"I&6+;>$%T+;&+N#>23<&".Z&2"+&;.$7/,&.?+$#7./&Z%33&Z.$^_&
DO WHILE I is between 1 and (length of L)-1 Set LOW to current value of I
DO WHILE J is between I+1 and (length of L)
IF L(LOW) is greater than L(J)
THEN set LOW to current value of J
ENDIF
ENDDO
Set TEMP to L(LOW)
Set L(LOW) to L(I)
Set L(I) to TEMP
ENDDO
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.30
):?(*&+,-.(@',.7,$3&+((T&.&'#3,%<(
• T&.&'#3,%<(%;&2"+&6+;%,/&?$%/>%?3+&2"#2&I#^+;&#&;.YZ#$+&H/%2&#;&H/%V+$;#33<&#??3%>#T3+&#;&?.;;%T3+X&2.&%/>$+#;+&2"+&>"#/>+&2"#2&%2&Z%33&T+&H;+MH3&%/&;.I+&MH2H$+&;<;2+I&
• R+&I#^+&#&H/%2&I.$+&,+/+$#3&T<&%/>$+#;%/,&2"+&/HIT+$&.M&>./2+N2;&%/&Z"%>"&>#/&%2&T+&H;+6(&Q"+$+&#$+&;+V+$#3&Z#<;&.M&6.%/,&2"%;_&– )#$#I+2+$%`%/,&>./2+N2P;?+>%]>&%/M.$I#7./&
– B+I.V%/,&?$+>./6%7./;&
– !%I?3%M<%/,&?.;2>./6%7./;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.31
):?(*&+,-.(@',.7,$3&+((T&.&'#3,%<(H70.8.2&1I(
• Q"+&M.33.Z%/,&M.H$&?$.>+6H$+&%/2+$M#>+;&#$+&3%;2+6&%/&.$6+$&.M&%/>$+#;%/,&,+/+$#3%2<_&PROCEDURE SUM: INTEGER;
POSTCONDITION: returns sum of 3 global variables
PROCEDURE SUM (a, b, c: INTEGER): INTEGER;
POSTCONDITION: returns sum of parameters
PROCEDURE SUM (a[]: INTEGER; len: INTEGER): INTEGER
PRECONDITION: 0 <= len <= size of array a
POSTCONDITION: returns sum of elements 1..len in array a
PROCEDURE SUM (a[]: INTEGER): INTEGER
POSTCONDITION: returns sum of elements in array a
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.32
):S(44(*&+,-.(
• ATU+>2&.$%+/2+6&I+2".6.3.,%+;&#$+&2"+&I.;2&?.?H3#$&#/6&;.?"%;7>#2+6&6+;%,/&I+2".6.3.,%+;&
• 1&6+;%,/&%;&056&7%(0',&.%&1(%M&%2&6+>.I?.;+;&#&;<;2+I&%/2.&#&>.33+>7./&.M&$H/7I+&>.I?./+/2;&>#33+6&.TU+>2;&2"#2&+/>#?;H3#2+&6#2#&#/6&MH/>7./#3%2<&– ATU+>2;&#$+&H/%[H+3<&,1&.8N#53&($H/7I+&+/77+;&2"#2&>#/&T+&6+;%,/#2+6&#;&2"+&2#$,+2&.M&#&
I+;;#,+&.$&$+[H+;2&
– ATU+>2;&>#/&T+&70L$0+&1X&%/&2"#2&#/&.TU+>2W;&6#2#&V#$%#T3+;&I#<&2"+I;+3V+;&T+&.TU+>2;X&2"+$+T<&+/>#?;H3#7/,&2"+&%I?3+I+/2#7./;&.M&2"+&.TU+>2W;&%/2+$/#3&V#$%#T3+;&
– Q"+&%I?3+I+/2#7./&.M&#/&.TU+>2&>#/&T+&$+H;+6&#/6&+N2+/6+6&V%#&,."&',%#.7&X&&2.&6+]/+&2"+&%I?3+I+/2#7./&.M&.2"+$&.TU+>2;&
– AA&>.6+&>#/&T+&$03<L0'$",7J(Z$%E+/&%/&,+/+$%>&>.6+&2"#2&Z.$^;&Z%2"&.TU+>2;&.M&6%e+$+/2&TH2&$+3#2+6&2<?+;
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.33
):S(44(*&+,-.(K&'L,.030-<(
• 1&73#++&%;&#&;.YZ#$+&I.6H3+&2"#2&?#$7#33<&.$&2.2#33<&%I?3+I+/2;&#/&#T;2$#>2&6#2#&2<?+&
• LM&#&>3#;;&%;&I%;;%/,&%I?3+I+/2#7./;&M.$&;.I+&.M&%2;&I+2".6;X&Z+&;#<&2"#2&%2&%;&#/+%'#7%(73#++&
• Q"+&>3#;;&6+]/%7./&%/>3H6+;&70.+%'27%0'(I+2".6;&2"#2&;?#Z/&/+Z&.TU+>2&%/;2#/>+;&
• M.+%#.7&(9#',#53&+(#$+&?$.,$#I&V#$%#T3+;&Z".;+&V#3H+;&#$+&$+M+$+/>+;&2.&.TU+>2;
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.34
):S(44(*&+,-.(K&'L,.030-<(H70.8.2&1I(
• Q"+&$H/7I+&;2$H>2H$+&.M&#/&AA&;<;2+I&%;&#&;+2&.M&056&7%+X&+#>"&.M&Z"%>"&%;&#&>."+;%V+&>.33+>7./&.M&6#2#&?3H;!&.?+$#7./;&M.$&>$+#7/,X&$+#6%/,X +$%/,X&#/6&6+;2$.<%/,&2".;+&6#2#&
• 1/&.TU+>2W;&6#2#&#$+&>#33+6&#U',52%&+X&#/6&%2;&.?+$#7./;&#$+&>#33+6&L&%"01+(
• 1/&.TU+>2&I#<&"#V+&IH37?3+&%/2+$M#>+;X&+#>"&.e+$%/,&#&6%e+$+/2&3+V+3&.M&#>>+;;&2.&2"+&.TU+>2W;&6#2#&#/6&I+2".6;&– !H>"&%/2+$M#>+;&#$+&"%+$#$>"%>#33<&$+3#2+6&T<&2<?+_&%M&./+&%/2+$M#>+&.e+$;&#&;2$%>2&;HT;+2&.M&
2"+&;+$V%>+;&2"#2&#/.2"+$&%/2+$M#>+&.e+$;X&Z+&;#<&2"#2&2"+&]$;2&%/2+$M#>+&%;&#&+25%<$&(.M&2"+&;+>./6&%/2+$M#>+&a2"+&+2$&'%<$&b&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.35
):S(44(*&+,-.(K&'L,.030-<(H70.8.2&1I(
– addItem(Item) – removeItem(product No.) – computeSubtotal()
– computeTax() – computeTotal() – voidSale()
Sale
– subtotal : Money – tax : Money – total : Money
Date
– day: 1..31 – month : 1..12
– year : integer
Item
– product No. – name
– description – price : Money
sale date
1!*!
*!
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.36
):S(44(*&+,-.(K&'L,.030-<(H70.8.2&1I(
• i#$%#T3+;&>#/&$+M+$&2.&.TU+>2;&.M&6%e+$+/2&>3#;;+;&.V+$&2"+&>.H$;+&.M&#&?$.,$#IW;&+N+>H7./X&^/.Z/&#;&1<.#L,7(5,.1,.-(
• Q"+&6%$+>2+6&#$$.Z;&%/&2"+&],H$+&T+3.Z&6+?%>2&2"+&$+3#7./;"%?;&T+2Z++/&>./;2$H>2;X&#/6&2"+.$/I+/2;&2"+&+/6;&.M&+#>"&#$$.Z&%/6%>#2+&2"+&L238$3,7,%<((a".Z&I#/<&.M&#/&%2+I&I#<&+N%;2b
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.37
):S(44(*&+,-.(K&'L,.030-<(H70.8.2&1I(
• d.H$&AA&>./;2$H>2;_&!"#$$%$&'()*%!+$&',-+%./#!%$X&#/6&,-$+#-!%'0#.,#)"%$'
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.38
):S(44(*&+,-.(K&'L,.030-<(H70.8.2&1I(
• jH%36%/,&/+Z&>3#;;+;&T<&>.IT%/%/,&>.I?./+/2&>3#;;+;X&IH>"&#;&>"%36$+/&TH%36&;2$H>2H$+;&M$.I&TH%36%/,&T3.>^;&%;&6./+&T<&056&7%(70L$0+,80.(
• 132+$/#7V+3<X&Z+&>#/&TH%36&/+Z&>3#;;+;&T<&+N2+/6%/,&.$&I.6%M<%/,&6+]/%7./;&.M&+N%;7/,&>3#;;+;&– Q"%;&^%/6&.M&>./;2$H>7./X&>#33+6&,."&',%#.7&X&6+]/+;&#&/+Z&>3#;;&T<&6%$+>23<&$+H;%/,&a#/6B%/,&2.b&2"+&6+]/%7./;&.M&#/&+N%;7/,&>3#;;
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.39
):S(44(*&+,-.(K&'L,.030-<(H70.8.2&1I(
• 5N#I?3+&.M&%/"+$%2#/>+
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.40
):S(44(*&+,-.(K&'L,.030-<(H70.8.2&1I(
• @03<L0'$",+L(.>>H$;&Z"+/&>.6+&%;&Z$%E+/&%/&2+$I;&.M&%/2+$#>7./;&Z%2"&#/&%/2+$M#>+X&TH2&>.6+&T+"#V%.$&6+?+/6;&./&2"+&.TU+>2&#;;.>%#2+6&Z%2"&2"+&%/2+$M#>+&$H/7I+&#/6&./&2"+&%I?3+I+/2#7./;&.M&2"#2&.TU+>2W;&I+2".6&
• L/"+$%2#/>+X&.TU+>2&>.I?.;%7./X&#/6&?.3<I.$?"%;I&#$+&%I?.$2#/2&M+#2H$+;&.M&#/&AA&6+;%,/&2"#2&I#^+&2"+&$+;H37/,&;<;2+I&I.$+&H;+MH3&%/&I#/<&Z#<;&&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.41
):S(44(*&+,-.(M."&',%#.7&(9+:(456&7%(!0L$0+,80.(
• 1&^+<&6+;%,/&6+>%;%./&%;&6+2+$I%/%/,&".Z&T+;2&2.&;2$H>2H$+&#/6&$+3#2+&>.I?3+N&.TU+>2;&&&
• L/&#/&AA&;<;2+IX&2"+$+&#$+&2Z.&I#%/&2+>"/%[H+;&M.$&>./;2$H>7/,&3#$,+&.TU+>2;&– L/"+$%2#/>+&– >.I?.;%7./&
• 1&/+Z&>3#;;&>#/&T+&>$+#2+6&T<&+N2+/6%/,&#/6&.V+$$%6%/,&2"+&T+"#V%.$&.M&#/&+N%;7/,&>3#;;X&.$&%2&>#/&T+&>$+#2+6&T<&>.IT%/%/,&;%I?3+$&>3#;;+;&2.&M.$I&#&>.I?.;%2+&>3#;;(
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.42
):S(44(*&+,-.(M."&',%#.7&(9+:(456&7%(!0L$0+,80.(H70.8.2&1I(
• 5#>"&>./;2$H>7./&?#$#6%,I&"#;V#/2#,+;&#/6&6%;#6V#/2#,+;&
• F.I?.;%7./&%;&T+E+$&2"#/&%/"+$%2#/>+&?$+;+$V%/,&2"+&+/>#?;H3#7./&.M&2"+&$+H;+6&>.6+X&T+>#H;+&#&>.I?.;%2+&.TU+>2&#>>+;;+;&2"+&>.I?./+/2&./3<&2"$.H,"&%2;V+$7;+6&%/2+$M#>+&
• j<&>./2$#;2X&H;%/,&2"+&%/"+$%2#/>+&#??$.#>"X&2"+&;HT>3#;;W;&%I?3+I+/2#7./&%;&6+2+$I%/+6&6+;%,/&7I+&#/6&%;&;2#7>&
• Q"+&$+;H37/,&.TU+>2;&#$+&3+;;&*+N%T3+&2"#/&.TU+>2;&%/;2#/7#2+6&M$.I&>.I?.;%2+&>3#;;+;&T+>#H;+&2"+&I+2".6;&2"+<&%/"+$%2&M$.I&2"+%$&?#$+/2&>3#;;&>#//.2&T+&>"#/,+6&$H/7I+&
• Q"+&,$+#2+;2V#/2#,+&.M&%/"+$%2#/>+&%;&2"+&#T%3%2<&2.&>"#/,+&#/6&;?+>%#3%`+&2"+&T+"#V%.$;&.M&%/"+$%2+6&I+2".6;X&T<&;+3+>7V+3<&.V+$$%6%/,&%/"+$%2+6&6+]/%7./;
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.43
):S(44(*&+,-.(M."&',%#.7&(9+:(456&7%(!0L$0+,80.(H70.8.2&1I(
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.44
):S(44(*&+,-.(A25+8%2%#5,3,%<(
• L6+#33<X&#&;HT>3#;;&IH;2&?$+;+$V+&2"+&T+"#V%.$&.M&%2;&?#$+/2&>3#;;X&;.&2"#2&>3%+/2&>.6+&>#/&2$+#2&%/;2#/>+;&.M&%2&#;&%/;2#/>+;&.M&2"+&?#$+/2&>3#;;&
• '%;^.V&!HT;72H2#T%3%2<&)$%/>%?3+&– Q"+&;HT>3#;;&;H??.$2;!&.M&2"+&I+2".6;&.M&2"+&?#$+/2&>3#;;X&#/6&2"+%$&;%,/#2H$+;&#$+&
>.I?#7T3+&
– Q"+&;HT>3#;;W;&I+2".6;&IH;2&;#7;M<&2"+&;?+>%]>#7./;&.M&2"+&?#$+/2&>3#;;W;&I+2".6;&
• )$+>./6%7./&$H3+ &&?$+k?#$+/2&&&⇒&&?$+k;HT&&&&
• ).;2>./6%7./&$H3+ &&?$+k?#$+/2&&&⇒&&a?.;2k;HT&&⇒&&?.;2k?#$+/2&b&
– Q"+&;HT>3#;;&IH;2&?$+;+$V+!&6+>3#$+6&?$.?+$7+;&.M&2"+&?#$+/2&>3#;;&
• 1;&Z%2"&I.;2&.2"+$&6+;%,/&?$%/>%?3+;X&;HT;72H2#T%3%2<&%;&/.2&#&$%,%6&6+;%,/&$H3+(&B#2"+$X&2"+&?$%/>%?3+&;+$V+;&#;&#&,H%6+3%/+&M.$&6+2+$I%/%/,&Z"+/&%2&%;&;#M+&/.2&2.&$++N#I%/+&2"+&>3%+/2&I.6H3+;&.M&#/&+N2+/6+6&>3#;;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.45
):S(44(*&+,-.(F#Q(0>(*&L&%&'(
• F#Q(0>(*&L&%&'J(133.Z;&$+6H>%/,&6+?+/6+/>%+;&T<&%/>3H6%/,&%/&+#>"&>.I?.;%2+&>3#;;&I+2".6;&M.$&.?+$#7/,&./&2"+&>3#;;W;&>.I?./+/2;&
• j+/+]2_&&>3%+/2&>.6+&2"#2&H;+;&#&>.I?.;%2+&>3#;;&/++6;&2.&^/.Z&./3<&#T.H2&2"+&>.I?.;%2+&%2;+3M&#/6&/.2&#T.H2&2"+&>.I?.;%2+;W&>.I?./+/2;&
• :+;%,/;&2"#2&.T+<&2"+&'#Z&.M&:+I+2+$&"#V+&M+Z+$&>3#;;&6+?+/6+/>%+;X&#/6&>3#;;+;&Z%2"&M+Z+$&6+?+/6+/>%+;&2+/6&2.&"#V+&M+Z+$&;.YZ#$+&M#H32;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.46
):S(44(*&+,-.(F#Q(0>(*&L&%&'(H70.8.2&1I(
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.47
):S(44(*&+,-.(*&$&.1&.7<(M.9&'+,0.(
• :+?+/6+/><&%/V+$;%./&%;&2"+&3#;2&]/#3&AA&6+;%,/&"+H$%;7>&– H;+6&2.&$+V+$;+&2"+&6%$+>7./&.M&#&6+?+/6+/><&3%/^&T+2Z++/&2Z.&>3#;;+;&
• :+?+/6+/><&%/V+$;%./&Z.$^;&T<&%/2$.6H>%/,&%/2+$M#>+;&• Q"+&6+?+/6+/><&%/V+$;%./&?$%/>%?3+&%;&H;+6&%/&2"+&6+]/%7./;&.M&
;+V+$#3&6+;%,/&?#E+$/;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.48
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(
• Q"+&C0'&%;&#&;H%2+&.M&6+;%,/&/.2#7./;&2"#2&%;&?.?H3#$&M.$&6+;>$%T%/,&AA&;.3H7./;&
• Q"+&C0'&>#/&T+&H;+6&2.&V%;H#3%`+X&;?+>%M<X&.$&6.>HI+/2&#&;.YZ#$+&6+;%,/&
• C0'&+;?+>%#33<&H;+MH3&M.$&6+;>$%T%/,&6%e+$+/2&6+;%,/ +$/#7V+;X&#/6&+V+/2H#33<&M.$&6.>HI+/7/,&6+;%,/&#$7M#>2;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.49
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(G/F(,.(%"&(@'07&++(
• C;+&>#;+&6%#,$#I;&
• C0'&#>7V%2<&6%#,$#I;&
• :.I#%/&I.6+3&
• F.I?./+/2&6%#,$#I;&
• :+?3.<I+/2&6%#,$#I;&
• F3#;;&6%#,$#I;&
• L/2+$#>7./&6%#,$#I;&
• !+[H+/>+&6%#,$#I;&
• F.IIH/%>#7./&6%#,$#I;&
• 1>7V%2<&6%#,$#I;&
• !2#2+&6%#,$#I;&
• )#>^#,+&6%#,$#I;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.50
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(G/F(,.(%"&(@'07&++(H70.8.2&1I(
• h.Z&C0'&%;&H;+6&%/&2"+&6+V+3.?I+/2&?$.>+;;&
– Requirements – Design – Architecture
– UML use case
diagrams – Scenarios
– UML activity diagram
s
– UML state
diagrams
– UML class
diagrams
– UML object
diagrams
– UML sequenc
e diagram
s
– UML communic
ation diagrams
– UML package diagrams
– UML compone
nt diagrams
– UML deployme
nt diagrams
– Domain models
– UML activity diagram
s
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.51
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F((A,1&5#'():V((=0<#3(A&'9,7&(A%#80.(=&W2,'&L&.%+(
• B.<#3&!+$V%>+&;2#7./&?$.V%6+;&2"$++&2<?+;&.M&;+$V%>+;&• Q"+&;<;2+I&IH;2&2$#>^&T%33;X&2"+&?$.6H>2&#/6&;+$V%>+;&
• !<;2+I&2.&>./2$.3&%/V+/2.$<&• Q"+&;<;2+I&2.&2$#>^&>$+6%2&"%;2.$<X&#/6&?#<I+/2;&.V+$6H+&• Q"+&;<;2+I&#??3%+;&./3<&2.&$+,H3#$&$+?+#2&>H;2.I+$&
• Q"+&;<;2+I&IH;2&"#/63+&2"+&6#2#&$+[H%$+I+/2;&M.$&%/2+$M#>%/,&Z%2"&.2"+$&;<;2+I&• Q"+&;<;2+I&IH;2&$+>.$6&2#N&#/6&$+3#2+6&%/M.$I#7./&
• Q"+&;2#7./&IH;2&T+&#T3+&2.&$+V%+Z&2#N&$+>.$6&H?./&6+I#/6&• Q"+&;<;2+I&Z%33&;+/6&?+$%.6%>&I+;;#,+&2.&>H;2.I+$;&• FH;2.I+$&>#/&$+/2&?#$^%/,&;?#>+&%/&2"+&;2#7./&?#$^%/,&3.2&&
• Q"+&;<;2+I&I#%/2#%/&#&$+?.;%2.$<&.M&#>>.H/2&%/M.$I#7./&• Q"+&;2#7./&I#/#,+$&IH;2&T+&#T3+&2.&$+V%+Z&#>>.H/7/,&%/M.$I#7./&H?./&6+I#/6&• Q"+&;<;2+I&>#/&$+?.$2&#/&#/#3<;%;&.M&?$%>+;&#/6&6%;>.H/2;&
• Q"+&;<;2+I&Z%33&#H2.I#7>#33<&/.7M<&2"+&.Z/+$;&.M&6.$I#/2&#>>.H/2;&• Q"+&;<;2+I&>#/&/.2&T+&H/#V#%3#T3+&M.$&I.$+&2"#/&=4&".H$;&• Q"+&;<;2+I&IH;2&?$.2+>2&>H;2.I+$&%/M.$I#7./&M$.I&H/#H2".$%`+6&#>>+;;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.52
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(G/F(!3#++(*,#-'#L(
• C0'&>3#;;&6%#,$#I;&6+;>$%T+&2"+&.TU+>2&2<?+;&#/6&2"+%$&;2#7>&$+3#7./;"%?;&– :+?%>2&#;;.>%#7./;&#I./,&.TU+>2;&#/6&$+3#7./;"%?;&T+2Z++/&2<?+;&#/6&
;HT2<?+;&
– :%#,$#I;&;".H36&%33H;2$#2+&2"+&#E$%TH2+;&.M&+#>"&.TU+>2X&2"+%$&%/6%V%6H#3&T+"#V%.$;X&#/6&2"+&$+;2$%>7./;&./&+#>"&>3#;;&.$&.TU+>2&
• '..^&M.$&#/6&;++^&– 1>2.$;X&?"<;%>#3&.TU+>2;X&?3#>+;X&.$,#/%`#7./;X&$+>.$6;X&2$#/;#>7./;X&
>.33+>7./;&.M&2"%/,;X&.?+$#7./;&?$.>+6H$+;X&2"%/,;&I#/%?H3#2+6&T<&2"+&;<;2+I&2.&T+&TH%32&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.53
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(G/F(!3#++(*,#-'#L(H70.8.2&1I(
• B.<#3&!+$V%>+&!2#7./&H;+&>#;+&6%#,$#I&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.54
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(G/F(!3#++(*,#-'#L(H70.8.2&1I(
• R"#2&/++6;&2.&T+&l?$.>+;;+6m&%/&;.I+&Z#<n&
• R"#2&%2+I;&"#V+&IH37?3+&#E$%TH2+;n&
• R"+/&6.&<.H&"#V+&I.$+&2"#/&./+&.TU+>2&%/&#&>3#;;n&
• R"#2&%;&T#;+6&./&2"+&$+[H%$+I+/2;&2"+I;+3V+;X&/.2&6+$%V+6&M$.I&<.H$&H/6+$;2#/6%/,&.M&2"+&$+[H%$+I+/2;n&
• R"#2&#E$%TH2+;&#/6&.?+$#7./;&#$+Z#<;&#??3%>#T3+&2.&#&>3#;;&.$&.TU+>2n&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.55
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(M.,8#3(T'02$,.-(0>(RU',52%&+(#.1(!3#++&+J(A%&$(;(
Attributes Classes Personal check Customer Tax Maintenance Price Services Cash Fuel Credit card Bill Discounts Purchase
Station manager
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.56
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(M.,8#3(T'02$,.-(0>(RU',52%&+(#.1(!3#++&+J(A%&$(?(
Attributes Classes Personal check Customer Tax Maintenance Price Services Cash Parking Credit card Fuel Discounts Bill Name Purchase Address Maintenance reminder Birthdate Station manager
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.57
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(T2,1&3,.&+(>0'(M1&.8><,.-(X&"#9,0'+(
• LI?+$#7V+&V+$T;&
• )#;;%V+&V+$T;&• 1>7./;&• 0+IT+$;"%?&%/&
• 0#/#,+I+/2&.$&.Z/+$;"%?&
• B+;?./;%T3+&M.$&• !+$V%>+;&?$.V%6+6&T<&#/&.$,#/%`#7./&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.58
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(M.,8#3(T'02$,.-(0>(RU',52%&+(#.1(!3#++&+J(A%&$(S(
Attributes Classes
Personal check Tax Price Cash Credit card Discounts Name Address Birthdate
Customer Maintenance Services Parking Fuel Bill Purchase Maintenance reminder Station manager Overdue bill letter Dormant account warning Parts Accounts Inventory Credit card system Part ordering system Fuel ordering system
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.59
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(C,'+%(!2%(#%(=0<#3(A&'9,7&(A%#80.(*&+,-.(
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.60
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(K<$&+(0>(!3#++(=&3#80.+",$+(
– #;;.>%#7./&
– >.I?.;%7./&
– #,,$+,#7./&
– 6+?+/6+/><&
– /#V%,#7./&
– ,+/+$#3%`#7./&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.61
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(4%"&'(G/F(*,#-'#L+(
• F3#;;&6+;>$%?7./&2+I?3#2+&
• )#>^#,+&6%#,$#I;&
• L/2+$#>7./&6%#,$#I;&
• !+[H+/>+&6%#,$#I;&
• F.IIH/%>#7./&6%#,$#I;&
• !2#2+&6%#,$#I;&
• 1>7V%2<&6%#,$#I;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.62
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(4%"&'(G/F(*,#-'#L+(Y(!3#++(*&+7',$80.(K&L$3#%&(
Class name: Refuel Category: service External documents: Export control: Public Cardinality: n Hierarchy: Superclasses: Service Associations: <no rolename>: fuel in association updates
Operation name: price Public member of: Refuel Documentation: // Calculates fuel final price Preconditions: gallons > 0 Object diagram: (unspecified)
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.63
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(4%"&'(G/F(*,#-'#L+(Y(!3#++(*&+7',$80.(K&L$3#%&(H70.%I(
Semantics: price = gallons * fuel.price_per_gallon tax = price * purchase.tax_rate Object diagram: (unspecified) Concurrency: sequential
Public interface: Operations: price
Private interface: Attributes: gallons
Implementation: Attributes: gallons
State machine: no Concurrency: sequential Persistence: transient
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.64
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(A&70.1(!2%(#%(=0<#3(A&'9,7&(A%#80.(*&+,-.(
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.65
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(C,.#3(!2%(#%(=0<#3(A&'9,7&(A%#80.(*&+,-.(
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.66
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(4%"&'(G/F(*,#-'#L+(Y(@#7D#-&(*,#-'#L(
• C0'&?#>^#,+&6%#,$#I;!.Z&V%+Z%/,&#&;<;2+I&#;&#&;I#33&>.33+>7./&.M&?#>^#,+;&+#>"&.M&Z"%>"&I#<&T+&+N?#/6+6&2.&#&3#$,+$&;+2&.M&>3#;;+;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.67
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(4%"&'(G/F(*,#-'#L+(Y(A&W2&.7&*,#-'#L(
• L/2+$#>7./&6%#,$#I;&6+;>$%T+&".Z&.?+$#7./;&#/6&T+"#V%.$;&#$+&$+#3%`+6&T<&2"+&.TU+>2;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.68
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(4%"&'(G/F(*,#-'#L+(Y(!0LL2.,7#80.(*,#-'#L(
• 1&>.IIH/%>#7./&6%#,$#I&6+?%>2;&#&;+[H+/>+&.M&I+;;#,+;&T+2Z++/&.TU+>2;&TH2&%2&%;&;H?+$%I?.;+6&./&#/&.TU+>2&#/6&H;+;&2"+&3%/^;&T+2Z++/&.TU+>2&#;&%I?3%>%2&>.IIH/%>#7./&>"#//+3;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.69
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(4%"&'(G/F(*,#-'#L+(Y(A%#%&*,#-'#L(
• 1&;2#2+&6%#,$#I&;".Z;&2"+&?.;;%T3+&;2#2+;&#/&.TU+>2&>#/&2#^+X&2"+&+V+/2;&2"#2&2$%,,+$&2"+&2$#/;%7./&T+2Z++/&./+&;2#2+&2.&2"+&/+N2X&#/6&2"+&#>7./;&2"#2&$+;H32&M$.I&+#>"&;2#2+&>"#/,+&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.70
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(4%"&'(G/F(*,#-'#L+(Y(A%#%&(*,#-'#L(H70.8.2&1I(
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.71
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(4%"&'(G/F(*,#-'#L+(Y(R789,%<(*,#-'#L(
• 1>7V%2<&6%#,$#I;&#$+&H;+6&2.&I.6+3&2"+&*.Z&.M&?$.>+6H$+;&.$&#>7V%7+;&%/&#&>3#;;&
• 1&6+>%;%./&/.6+&%;&H;+6&2.&$+?$+;+/2&#&>".%>+&.M&Z"%>"&#>7V%2<&2.&%/V.^+&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.72
):V(=&$'&+&.8.-(44(*&+,-.+(,.(%"&(G/F(4%"&'(G/F(*,#-'#L+(Y(R789,%<(*,#-'#L(H70.8.2&1I(
• 1>7V%2<&6%#,$#I;&#$+&H;+6&2.&I.6+3&2"+&*.Z&.M&?$.>+6H$+;&.$&#>7V%7+;&%/&#&>3#;;&
• An activity diagram for the inventory class
• It may have two decisions – to verify that there are
enough fuel – to verify that a part is in
stock
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.73
):Z(44(*&+,-.(@#U&'.+(
• 1&6+;%,/&?#E+$/&>.6%]+;&6+;%,/&6+>%;%./;&#/6&T+;2&?$#>7>+;&M.$&;.3V%/,&#&?#$7>H3#$&6+;%,/&?$.T3+I&#>>.$6%/,&2.&6+;%,/&?$%/>%?3+;&
• :+;%,/&?#E+$/;&#$+&/.2&2"+&;#I+&#;&;.YZ#$+&3%T$#$%+;f&2"+<&#$+&/.2&?#>^#,+6&;.3H7./;&2"#2&>#/&T+&H;+6&#;&%;(&B#2"+$X&2"+<&#$+&2+I?3#2+;&M.$&#&;.3H7./&2"#2&IH;2&T+&I.6%]+6&#/6#?2+6&M.$&+#>"&?#$7>H3#$&H;+&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.74
):Z(44(*&+,-.(@#U&'.+(K&L$3#%&(/&%"01(@#U&'.(
• Q"+&Q+I?3#2+&0+2".6&?#E+$/&#%I;&2.&$+6H>+&2"+&#I.H/2&.M&6H?3%>#2+&>.6+&#I./,&;HT>3#;;+;&.M&2"+&;#I+&?#$+/2&>3#;;&– L2&%;&?#$7>H3#$3<&H;+MH3&Z"+/&IH37?3+&;HT>3#;;+;&"#V+&;%I%3#$&TH2&/.2&%6+/7>#3&
%I?3+I+/2#7./;&.M&2"+&;#I+&I+2".6&
– Q"%;&?#E+$/B$+;;+;&2"%;&?$.T3+I&T<&3.>#3%`%/,&2"+&6H?3%>#2+&>.6+&;2$H>2H$+&%/&#/&#T;2$#>2&>3#;;&M$.I&Z"%>"&2"+&;HT>3#;;+;&%/"+$%2&
• Q"+&#T;2$#>2&>3#;;&6+]/+;&#&2+I?3#2+&I+2".6&2"#2&%I?3+I+/2;&2"+&>.II./&;2+?;&.M&#/&.?+$#7./X&#/6&6+>3#$+;&#T;2$#>2&?$%I%7V+&.?+$#7./;&2"#2&$+?$+;+/2&2"+&V#$%#7./&?.%/2;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.75
):Z(44(*&+,-.(@#U&'.+(K&L$3#%&(/&%"01(@#U&'.(H70.8.2&1I(
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.76
):Z(44(*&+,-.(@#U&'.+(C#7%0'<(/&%"01(@#U&'.(
• Q"+&d#>2.$<&0+2".6&?#E+$/&%;&H;+6&2.&+/>#?;H3#2+&2"+&>.6+&2"#2&>$+#2+;&.TU+>2;&
• Q"+&M#>2.$<&0+2".6&?#E+$/&%;&;%I%3#$&2.&2"+&Q+I?3#2+&I+2".6&?#E+$/&
• Q"+&;%I%3#$&TH2&/.2&%6+/7>#3&I+2".6;&#$+&2"+&>./;2$H>2.$&I+2".6;&2"#2&%/;2#/7#2+&.TU+>2;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.77
):Z(44(*&+,-.(@#U&'.+(A%'#%&-<(@#U&'.(
• Q"+&!2$#2+,<&?#E+$/!.Z;,.$%2"I;&2.&T+&;+3+>2+6&$H/7I+&
• L2&%;&H;+MH3&Z"+/&V#$%.H;,.$%2"I;&#$+&#V#%3#T3+&2.&#/&#??3%>#7./&TH2&2"+&>".;+&.M&T+;2,.$%2"I&%;&/.2&^/.Z/&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.78
):Z(44(*&+,-.(@#U&'.+(*&70'#%0'(@#U&'.(
• Q"+&:+>.$#2.$&?#E+$/&%;&H;+6&2.&+N2+/6&#/&.TU+>2W;&MH/>7./#3%2<&$H/7I+&
• :+>.$#2.$&?#E+$/&%;&#&*+N%T3+ +$/#7V+&2.&H;%/,&%/"+$%2#/>+&6+;%,/&7I+&2.&>$+#2+&;HT>3#;;+;&2"#2&;H??.$2&/+Z&M+#2H$+;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.79
):Z(44(*&+,-.(@#U&'.+(45+&'9&'(@#U&'.(
• Q"+&AT;+$V+$&?#E+$/&%;&#/&#??3%>#7./&.M&2"+&?HT3%;"o;HT;>$%T+&#$>"%2+>2H$+&;2<3+&
• C;+MH3&Z"+/&;.YZ#$+&/++6;&2.&/.7M<&IH37?3+&.TU+>2;&.M&^+<&+V+/2;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.80
):Z(44(*&+,-.(@#U&'.+(!0L$0+,%&(@#U&'.(
• 1&>.I?.;%2+&.TU+>2&%;&#&"+2+$.,+/+.H;X&?.;;%T3<&$+>H$;%V+X&>.33+>7./&.M&.TU+>2;&2"#2&$+?$+;+/2;&;.I+&>.I?.;%2+&+/72<&
• Q"+&>.I?.;%2+&?#E+$/&?$.I.2+;&2"+&H;+;&.M&#&;%/,3+&H/%M.$I&%/2+$M#>+&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.81
):Z(44(*&+,-.(@#U&'.+([,+,%0'(@#U&'.(
• Q"+&i%;%2.$&?#E+$/&>.33+>2;&#/6&+/>#?;H3#2+;&.?+$#7./&M$#,I+/2;&%/2.&2"+%$&.Z/&>3#;;+;&
• 5#>"&.?+$#7./&%;&%I?3+I+/2+6&#;&#&;+?#$#2+&;HT>3#;;&.M&#/&#T;2$#>2&Visitor&>3#;;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.82
):Z(44(*&+,-.(@#U&'.+(R$$3,7#80.(0>(!0L$0+,%&(@#U&'.(%0(=&$'&+&.%(/#%"(\]$'&++,0.+(
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.83
):)(4%"&'(*&+,-.(!0.+,1&'#80.+(*#%#(/#.#-&L&.%(
• :#2#&I#/#,+I+/2&2#^+;&%/2.&#>>.H/2&2"+&;<;2+I&$+[H%$+I+/2;&>./>+$/%/,&?+$M.$I#/>+&#/6&;?#>+&
• d$.I&#/&H/6+$;2#/6%/,&.M&2"+&6#2#&$+[H%$+I+/2;&#/6&>./;2$#%/2;X&./+&3#<;&.H2&#&6+;%,/&M.$&2"+&.TU+>2;&#/6&2"+%$&.?+$#7./;&
• d.H$&;2+?;_&– L6+/7M<&2"+&6#2#X&6#2#&;2$H>2H$+;X&#/6&$+3#7./;"%?;&#I./,&2"+I&
– :+;%,/&;+$V%>+;&2.&I#/#,+&2"+&6#2#&;2$H>2H$+;&#/6&$+3#7./;"%?;&
– d%/6&2..3;X&;H>"&#;&6#2#T#;+&I#/#,+I+/2&;<;2+I;X&2.&%I?3+I+/2&;.I+&.M&2"+&6#2#&I#/#,+I+/2&2#;^;&
– :+;%,/&>3#;;+;&#/6&>3#;;&"%+$#$>"%+;&2.&.V+$;++&2"+&6#2#&I#/#,+I+/2&MH/>7./;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.84
):)(4%"&'(*&+,-.(!0.+,1&'#80.+(*#%#(/#.#-&L&.%(>0'(%"&(=0<#3(A&'9,7&(A%#80.((
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.85
):)(4%"&'(*&+,-.(!0.+,1&'#80.+(\]7&$80.(O#.13,.-(
• 133.Z;&I#^%/,&?$.,$#I;&T+>.I+&I.$+&$.TH;2&
• h+3?;&;+?#$#2+&+$$.$&>"+>^%/,&#/6&$+>.V+$&M$.I&#&?$.,$#IW;&I#%/&MH/>7./#3%2<&
• F"#?2+$&D&.e+$;&I.$+&6+2#%3;&&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.86
):)(4%"&'(*&+,-.(!0.+,1&'#80.+(\]7&$80.(O#.13,.-(H70.8.2&1I(
attempt_transmission (message: STRING) raises TRANSMISSIONEXCEPTION // Attempt to transmit message over a communication line using // the low-level procedure unsafe_transmit, which may fail, //triggering an exception. // After 100 unsuccessful attempts, give up and raise an exception
local failures: INTEGER
try unsafe_transmit (message)
rescue failures := failures + 1; if failures < 100 then retry else raise TRANSMISSIONEXCEPTION end
end
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.87
):)(4%"&'(*&+,-.(!0.+,1&'#80.+(*&+,-.,.-(G+&'(M.%&'>#7&+(
• 0H;2&>./;%6+$&;+V+$#3&%;;H+;_&– %6+/7M<%/,&2"+&"HI#/;&Z".&Z%33&%/2+$#>2&Z%2"&2"+&;<;2+I&
– 6+]/%/,&;>+/#$%.;&M.$&+#>"&Z#<&2"#2&2"+&;<;2+I&>#/&?+$M.$I&#&2#;^&
– 6+;%,/%/,&#&"%+$#$>"<&.M&H;+$&>.II#/6;&
– $+]/%/,&2"+&;+[H+/>+&.M&H;+$&%/2+$#>7./;&Z%2"&2"+&;<;2+I&
– 6+;%,/%/,&$+3+V#/2&>3#;;+;&%/&2"+&"%+$#$>"<&2.&%I?3+I+/2&2"+&H;+$P%/2+$M#>+&6+;%,/&
– 6+>%;%./;&– %/2+,$#7/,&2"+&H;+$P%/2+$M#>+&>3#;;+;&%/2.&2"+&.V+$#33&;<;2+I&>3#;;&"%+$#$>"<&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.88
):)(4%"&'(*&+,-.(!0.+,1&'#80.+(*&+,-.,.-(G+&'(M.%&'>#7&+(H70.8.2&1I(
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.89
):)(4%"&'(*&+,-.(!0.+,1&'#80.+(*&+,-.,.-(G+&'(M.%&'>#7&+(H70.8.2&1I(
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.90
):)(4%"&'(*&+,-.(!0.+,1&'#80.+(C'#L&Q0'D+(
• 1&M$#I+Z.$^&%;&#&3#$,+&$+H;#T3+&6+;%,/&M.$&#&;?+>%]>&#??3%>#7./&6.I#%/&
• cCL&+6%2.$;X&Z+T&#??3%>#7./;X&#>>.H/7/,&;<;2+I;&
• :%e+$+/2&M$.I&;.YZ#$+&?$.6H>2&3%/+;&
• )$.6H>2&3%/+;&#$+&6+V+3.?+6&T<&#&>.I?#/<&M.$&%2;&.Z/&H;+&
• d$#I+Z.$^;&2+/6&2.&T+&?HT3%>#33<&#V#%3#T3+&$+;.H$>+;&3%^+&2..3^%2;&
• h%,"P3+V+3&#$>"%2+>2H$+;&Z".;+&3.ZP3+V+3&6+2#%3;&/++6&2.&T+&]33+6P%/&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.91
):^(44(/&#+2'&L&.%(44(A,_&(/&#+2'&+(
• ATU+>2;&#/6&I+2".6;&#;&#&T#;%>&;%`+&I+#;H$+&&• '.$+/`&#/6&p%66W;&/%/+&#;?+>2;&.M&;%`+&
– \HIT+$&.M&;>+/#$%.&;>$%?2&a\!!b&– \HIT+$&.M&^+<&>3#;;+;&– \HIT+$&.M&;H??.$2&>3#;;+;&– Q"+&#V+$#,+&/HIT+$&.M&;H??.$2&>3#;;+;&?+$&^+<&>3#;;+;&– \HIT+$&.M&;HT;<;2+I;&– F3#;;&;%`+&– \HIT+$&.M&.?+$#7./;&.V+$$%66+/&T<&#&;HT>3#;;&a\AAb&– \HIT+$&.M&.?+$#7./B+6&T<&#&;HT>3#;;&– !?+>%#3%`#7./&%/6+N&
• !L&q&a\AA&r&6+T2"b&s&a2.2#3&>3#;;&I+2".6;b&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.92
):^(44(/&#+2'&L&.%((F0'&._(#.1(`,11(/&%',7+(!033&780.(,.(*,a&'&.%(@"#+&+(0>(*&9&30$L&.%(
Metric Requirements Description
System Design
Program Design Coding Testing
Number of scenario script X
Number of key classes X X
Number of support classes X
Average number of support classes per key class X
Number of subsystem X X
Class size X X X
Number of operations overridden by a subclass X X X X
Number of operations added by a subclass X X X
Specialization index X X X X
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.93
):^(44(/&#+2'&L&.%(G+&(!#+&(*,#-'#L(0>(%"&(=0<#3(A&'9,7&(A%#80.(
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.94
):^(44(/&#+2'&L&.%(!3#++(O,&'#'7"<(>0'(%"&(=0<#3(A&'9,7&(A%#80.(
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.95
):^(44(/&#+2'&L&.%(44(*&+,-.(b2#3,%<(/&#+2'&+(
• F"%6#IT+$&#/6&p+I+$+$&"#V+.&6+V%;+6&#&;H%2+&.M&I+2$%>;&M.$&.TU+>2P.$%+/2+6&6+V+3.?I+/2&
• d.>H;+6&./&6+;%,/&[H#3%2<&a/.2&;%`+b& & &&
– R+%,"2+6&I+2".6;&?+$&>3#;;&q&&%/ %q9&&!, & & & & &&
– :+?2"&.M&%/"+$%2#/>+&– \HIT+$&.M&>"%36$+/&
– F.H?3%/,&T+2Z++/&.TU+>2;&– B+;?./;+&M.$&#&>3#;;&– '#>^&.M&>."+;%./&.M&I+2".6;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.96
):^(44(/&#+2'&L&.%(!",1#L5&'P`&L&'&'(/&%',7+(#$$3,&1(%0(%"&(=0<#3(A&'9,7&(A%#80.c+(A<+%&L(*&+,-.(
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.97
):^(44(/&#+2'&L&.%(!#3723#8.-(%"&(*&-'&&(0>(!0"&+,0.(
• Given class C with n methods, M1 through Mn
• Suppose {Ij} is the set of instance variables used by the method M
• We can define P to be collection of pairs (Ir , Is) where Ir and Is, share no common members – P = {(Ir , Is) | Ir ! Is = Ø}
• Q is the collection of pairs (Ir , Is) where Ir and Is, share at least one common member – Q = {(Ir , Is) | Ir ! Is ! Ø}
• Lack of cohesion in methods for C to be – |P|-|Q| if |P| > |Q| – Zero if otherwise
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.98
):^(44(/&#+2'&L&.%(!",1#L5&'P`&L&'&'(/&%',7+(#$$3,&1(%0(%"&(=0<#3(A&'9,7&(A%#80.c+(A<+%&L(*&+,-.(
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.99
):^(44(/&#+2'&L&.%(4%"&'(/&%',7+(
• '%&#/6&h+/$<&a9KK@b_&I+2$%>;&2.&?$+6%>2&2"+&;%`+&.M&>"#/,+;&%/&>3#;;+;&6H$%/,&I#%/2+/#/>+&– 0+;;#,+P?#;;%/,&>.H?3%/,_&the number of methods invocations in
a class’s implementation&– :#2#&#T;2$#>7./&>.H?3%/,_&the number of abstract data types used
in the measured class and defined in another class of the system&
• Q$#V#;;.;&a9KKKb&– Q"+&#V+$#,+&.?+$#7./&;%`+&– Q"+&#V+$#,+&/HIT+$&.M&?#$#I+2+$;&?+$&.?+$#7./&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.100
):^(44(/&#+2'&L&.%(/&#+2',.-(C'0L(#(A&W2&.7&(*,#-'#L(
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.101
):^(44(/&#+2'&L&.%(d"&'&(%0(*0(44(/&#+2'&L&.%(
• 0+#;H$+I+/2&%;&./3<&V#3H#T3+&Z"+/&%2&%/>$+#;+;&.H$&H/6+$;2#/6%/,X&?$+6%>7./X&.$&>./2$.3&
• 0+2$%>;&#$+&#V#%3#T3+&M.$&I#/<&2<?+;&.M&6.>HI+/2;&%/>3H6%/,&• C;+&>#;+;&• F3#;;&6%#,$#I;&
• L/2+$#>7./&6%#,$#I;&
• F3#;;&6+;>$%?7./;&• !2#2+&6%#,$#I;&
• )#>^#,+&6%#,$#I;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.102
):^(44(/&#+2'&L&.%(d"&'&(%0(*0(44(/&#+2'&L&.%(H70.8.2&1I(
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.103
):e(*&+,-.(*072L&.%#80.(
• Q"+&6+2#%3;&.M&2"+&;<;2+I&#$>"%2+>2H$+&%;&6.>HI+/2+6&%/&1(23#.%'4.!5,+%!+6.%'7(!68%-+&a!1:b&
• !1:&;+$V+;&#;&#&T$%6,+&T+2Z++/&2"+&$+[H%$+I+/2;&#/6&2"+&6+;%,/&
• 0#/<&Z#<;&2.&6.>HI+/2&2"+&6+;%,/&
• *&+,-.(5<(70.%'#7%_&#&?#$7>H3#$&#??$.#>"&2"#2&H;+;&2"+&6.>HI+/2#7./&./3<&2.&>#?2H$+&2"+&6+;%,/&TH2.&2.&+/>.H$#,+&%/2+$#>7./&#I./,&6+V+3.?+$;&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.104
):e(*&+,-.(*072L&.%#80.(*&+,-.(5<(!0.%'#7%(
• L/&6+;%,/&T<&>./2$#>2X&+#>"&I.6H3+&"#;&#/&%/2+$M#>+&;?+>%]>#7./&2"#2&?$+>%;+3<&6+;>$%T+;&Z"#2&2"+&I.6H3+&%;&;H??.;+6&2.&6.&– 0+<+$&a9KKGb&;H,,+;2;&2"#2&6+;%,/&T<&>./2$#>2&"+3?;&+/;H$+&2"#2&I.6H3+;&
%/2+$.?+$#2+&>.$$+>23<&
– Q"%;&;?+>%]>#7./X&>#33+6&#&70.%'#7%X&,.V+$/;&".Z&2"+&I.6H3+&%;&2.&%/2+$#>2&Z%2"&.2"+$&I.6H3+;&#/6&;<;2+I;&
– !H>"&;?+>%]>#7./&>#//.2&,H#$#/2++&#&I.6H3+W;&>.$$+>2/+;;X&TH2&%2&M.$I;&#&>3+#$&#/6&>./;%;2+/2&T#;%;&M.$&2+;7/,&#/6&V+$%]>#7./&
– Q"+&>./2$#>2&>.V+$;&IH2H#3&.T3%,#7./;&a2"+&$+>./6%7./;bX&T+/+]2;&a2"+&?.;2>./6%7./;bX&#/6&>./;%;2+/><&>./;2$#%/2;&a>#33+6&,.9#',#.%+b&&
– Q.,+2"+$X&2"+;+&>./2$#>2&?$.?+$7+;&#$+&>#33+6&#++&'80.+&&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.105
):e(*&+,-.(*072L&.%#80.(*&+,-.(5<(!0.%'#7%(H70.8.2&1I(
• :+;%,/&>./2$#>2&T+2Z++/&;.YZ#$+&?$.V%6+$&#/6&H;+$&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.106
):f(M.>0'L#80.(A<+%&L(\]#L$3&(*#%#(/01&3(0>(Opposition Programs X'0#17#+%(5<(@,77#1,33<c+(!0L$&880.(
• :.I#%/&+3+I+/2;&#/6&$+3#7./;"%?;&2"#2&2"+&)%>>#6%33<&6#2#T#;+&Z%33&I#%/2#%/&
• 1&>3.;+$&+N#I%/#7./&Z%33&$+V+#3&2"#2&2"+$+&#$+&>./;%6+$#T3+&>.II./#3%2<&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.107
):;g(=PK,L&(\]#L$3&(*&+,-.(5<(!0.%'#7%(
• h#6&1$%#/+PD&T++/&%I?3+I+/2+6&H;%/,&#/&.TU+>2P.$%+/2+6&#??$.#>"X&2"+&$+H;+&Z.H36&"#V+&T++/&+%2"+$&%/&2+$I;&.M&>.I?.;%7./&.$&%/"+$%2#/>+&
• L/&>.I?.;%7./&#??$.#>"_&2"+&!BL&%;&V%+Z+6&#;&#&T3#>^&T.N&#/6&>#33+6&M$.I&2"+&I#%/&;<;2+I&
• L/&%/"+$%2#/>+&#??$.#>"_&2"+&!BL&;2$H>2H$+&#/6&T+"#V%.$&#$+&.?+/&2.&V%+ZX&%/"+$%7/,&#;&IH>"&;2$H>2H$+&#/6&T+"#V%.$&M$.I&?#$+/2&>3#;;+;&#;&?.;;%T3+&
Pfleeger and Atlee, Software Engineering: Theory and Practice
Chapter 6.108
):;;(d"#%(K",+(!"#$%&'(/&#.+(C0'(h02((
• Q"+&6+;%,/&?$.>+;;&6+;>$%T+;&2"+&;<;2+I&>.I?./+/2;&H;%/,&#&>.II./&3#/,H#,+&Z%2"&Z"%>"&2.&>.IIH/%>#2+&
• ATU+>2&.$%+/2#7./&%;&#&?#$7>H3#$3<&#??+#3%/,&T#;%;&M.$&;H>"&6+;%,/X&T+>#H;+&%2!.Z;&H;&2.&6+;>$%T+&#/6&$+#;./&#T.H2&2"+&;<;2+I&M$.I&%2;&T%$2"&2.&%2;&6+3%V+$<&%/&2"+&;#I+&2+$I;_&>3#;;+;X&.TU+>2;X&#/6&I+2".6;&
• F./;%;2+/2&/.2#7./&I#^+;&%2&+#;%+$&M.$&<.H$&2+#I&2.&H/6+$;2#/6&2"+&%I?3%>#7./;&.M&H;%/,&#&?#$7>H3#$&.TU+>2&.$&>3#;;&– F./;%;2+/><&#;;%;2;&2"+&I#%/2#%/+$;&#/6&2+;2+$;X&+/#T3%/,&2"+I&2.&TH%36&2+;2&
>#;+;&#/6&I./%2.$&>"#/,+;&I.$+&+#;%3<&– j+>#H;+&2"+&$+[H%$+I+/2;X&6+;%,/X&#/6&>.6+&#$+&+N?$+;;+6&%/&2"+&;#I+&Z#<X&%2&%;&
+#;%+$&M.$&<.H&2.&+V#3H#2+&2"+&+e+>2;&.M&?$.?.;+6&>"#/,+;&2.&2"+&$+[H%$+I+/2;&.$&6+;%,/;&