0% found this document useful (0 votes)
435 views14 pages

Midterm Exam

This document is a midterm test for a course on engineering large software systems. It contains 4 questions worth a total of 70 marks. Question 1 involves modeling concepts like reasons for building models, UML diagram types, and identifying elements in a UML class diagram. Question 2 involves design patterns, specifically drawing a sequence diagram for the Iterator pattern based on the given class diagram. The test is 50 minutes long and counts for 15% of the student's final grade.

Uploaded by

Ajay Dayma
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
435 views14 pages

Midterm Exam

This document is a midterm test for a course on engineering large software systems. It contains 4 questions worth a total of 70 marks. Question 1 involves modeling concepts like reasons for building models, UML diagram types, and identifying elements in a UML class diagram. Question 2 involves design patterns, specifically drawing a sequence diagram for the Iterator pattern based on the given class diagram. The test is 50 minutes long and counts for 15% of the student's final grade.

Uploaded by

Ajay Dayma
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 14

CSC302

  Engineering  Large  Software  Systems   page  1/14  

 
 
 
Faculty  of  Arts  and  Science  
University  of  Toronto  
 
Midterm  Test  
Department:   Computer  Science  
Instructor:   Matt  Medland  
Date  &  Time:   10:10  am  -­‐  Tuesday,  Feb  26,  2013  
 

 
       Conditions:      Closed  Book  
       Duration:      50  minutes  
 
       This  test  counts  for  15%  of  your  final  grade  

 
 
 
 
Name:  ___________________________________________________________  
(Please  underline  last  name)  
 
 
Student  Number:  _________________________________________________  
 
 
 
 
 
 
Question  Marks  
 
1  ________________  /25  
2  ________________  /25  
3  ________________  /10  
4  ________________  /10  
 
 
Total  ____________  /70   =  ____________  %  
 
 
 
CSC302   Engineering  Large  Software  Systems   page  2/14  

1.          [Modeling  Questions,  25  marks  Total]  


(a)  [Why  Build  Models?  –  5  marks]  As  software  developers,  we  
often  build  models  during  design  and/or  we  reverse-­‐engineer  them  
from  an  existing  system.  List  five  (5)  reasons  for  building  these  
models.  
 
One  mark  for  each,  up  to  five  (5).  Some  examples:  
• Abstraction:  ignore  some  details  to  get  the  big  picture  
• Decomposition:  break  a  problem  into  manageable  chunks  
• Modularization:  break  into  packages/modules  of  related  
functionality  
• Communication:  discuss  design  alternatives  with  others  
• Discovery:  help  to  figure  out  what  questions  to  ask  
• Problem  identification:  find  problems  earlier  
• Other  reasonable  answers  acceptable  too...  
 
 
 
 
 
(b)  [UML  Diagram  Types  –  5  marks]  Briefly  describe  what  each  of  
the  following  types  of  UML  diagrams  are  typically  used  for:  
 
• Use  case  diagram  
 
Show  interactions  between  roles/actors  and  the  system.  
 
• Class  diagram  
 
Depicts  a  system’s  classes,  attributes,  operations  and  
relationships  
 
• Sequence  diagram  
 
An  interaction  diagram  showing  how  classes  operate  with  each  
other  and  in  what  order.  
 
• Package  Diagram  
 
Depicts  dependences  between  packages/modules  in  a  given  model.  
 
• Robustness  diagram  (not  really  UML)  
 
Helps  to  bridge  the  gap  between  requirements  &  design.  Generally  
between  use  case  &  sequence  diagram.  Throw  them  away  when  done.  
CSC302   Engineering  Large  Software  Systems   page  3/14  

(c)  [UML  Class  Diagram  Elements  –  10  marks]  Identify  as  many  of  
the  items  from  the  list  in  the  UML  class  diagram.  Marks  will  be  
awarded  for  correct  identification,  and  subtracted  for  incorrect  
answers.  Not  all  elements  in  the  list  appear  in  the  diagram.  
 
 
Class  Diagram  Elements  
• generalization   • composition   • public  attribute  
• object  return  type   • aggregation   • public  operation  
• private  attribute   • exception   • multiplicity  
• private  operation   • class  name   • visibility  modifier  
• realization   • stereotype   • primitive  attribute  
• protected  operation   • dependency    
 
 
 
 
 
 
 
 
  :automobile  
 
     -­‐make:String  
 
     -­‐model:String  
 
     -­‐year:int   :headlight  
 
     -­‐colour:Colour   0..1      2  
   
 
     #startEngine():bool   ...  
 
       #turnOff():void  
       +getYear():int  
       +getColour:Colour  
 
 
 
 
 
  :sedan  
 
     numDoors  
 
 
     getNumDoors()  
 
 
 
 
CSC302   Engineering  Large  Software  Systems   page  4/14  

(d)  [Multiplicity  –  5  marks]  Relationships  in  UML  diagrams  often  


have  multiplicities  associated  with  them.  Briefly  describe,  in  
English,  what  each  of  the  multiplicities  below  mean.  Marks  are  
awarded  for  correct  answers  and  subtracted  for  incorrect  answers.  
Maximum  of  five  (5)  marks.    
 
• 0..1  
 
Zero  or  one  
 
• 1  
 
Exactly  one  
 
• n  (Natural  number)  
 
Exactly  n  
 
• 0..n  
 
Between  zero  and  n,  inclusive  
 
• 1..n  
 
Between  one  and  n,  inclusive  
 
• *  
 
Zero  or  more  
 
• 0..*  
 
Zero  or  more  
 
• 1..*  
 
One  or  more  
 
 
 
 
 
CSC302   Engineering  Large  Software  Systems   page  5/14  

2.          [UML  Diagrams,  25  marks  Total]  


(a)  [Design  Patterns  &  Sequence  Diagrams  –  15  marks]  Recall  from  
the  lectures  that  we  created  a  UML  sequence  diagram  from  the  
Observer  pattern.  See  Figures  1  &  2  below  for  a  refresher.  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figure  1:  Observer  Pattern  Class  Diagram  

Figure  2:  Observer  Pattern  Sequence  Diagram  


CSC302   Engineering  Large  Software  Systems   page  6/14  

For  this  question,  you  are  to  draw  a  sequence  diagram  for  the  
Iterator  pattern.  The  class  diagram  for  Iterator  is  shown  in  
Figure  3  below.  Use  page  7  (and  the  scratch  paper  at  the  back  of  
this  package,  if  necessary)  to  draw  a  UML  Sequence  diagram  
representing  the  Iterator  pattern.  
 
Hints:  
• you  do  not  need  abstract  classes  or  interfaces  in  your  diagram  
• you  will  need  at  least  one  interaction  frame  
• there  is  one  message  to  which  you  can  apply  a  stereotype  
 

Figure  3:  Class  Diagram  for  Iterator  Pattern  


 
 
Marks  for:  (1)  Exactly  three  objects  in  diagram  (2)  Client’s  call  
to  ConcreteAggregate.createIterator()  as  solid  arrow,  and  lower  
than  other  objects  because  it  didn’t  exist  at  beginning  (3)  Call  
to  ConcreteIterator’s  constructor  with  solid  arrow,  labeled  as  
“new”  (or  similar),  and  <<create>>  stereotype  (4)  return  dashed  
line  with  type  Iterator  (5)  loop  interaction  frame  (6)  loop  shows  
end  condition  (7)  calls  inside  loop  show  asking  for  and  returning  
Objects.  May  also  call  other  Iterator  methods,  and  use  other  
interaction  frames  as  long  as  it  makes  sense.  
 
CSC302   Engineering  Large  Software  Systems   page  7/14  

[answer  question  2(a)  here]  


 
CSC302   Engineering  Large  Software  Systems   page  8/14  

(b)  [Use  Case  Diagrams  –  10  marks]  Draw  a  UML  Use  Case  diagram  
for  the  detailed  use  case  discussed  in  lecture  below.  Use  page  9  
(and  the  scratch  paper  at  the  back  of  this  package,  if  necessary)  
to  draw  the  Use  Case  Diagram.  
 
 
 
 
 
 
Use  Case  –  Buy  a  Product  
 
 
 
1. Customer  browses  catalog  &  selects  items  to  buy  
 
2. Customer  goes  to  check  out  
 
3. Customer  fills  in  shipping  information  (address,  
 
next-­‐day  or  3-­‐day  delivery)  
 
4. System  presents  full  pricing  information  
 
5. Customer  fills  in  credit  card  information  
 
6. System  authorizes  purchase  
 
7. System  confirms  sale  immediately  
 
8. System  sends  confirming  email  to  customer  
 
 
 
 
 
 
 
CSC302   Engineering  Large  Software  Systems   page  9/14  

[answer  question  2(b)  here]  


 
One  possible  solution  below.  There  are  many  others.  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Marks  for:  (1)  completeness:  all  use  cases  listed  (2)  show  all  
the  <<includes>>  for  checkout  (3)  acknowledge  the  external  
<<actor>>  representing  the  credit  card  company  (or  equivalent),  
and  (4)  optionally  show  some  <<extends>>  relationships,  and  
generally  (5)  it  makes  some  sense.  
 
CSC302   Engineering  Large  Software  Systems   page  10/14  

3.          [Software  Process,  10  marks  Total]  


List,  and  discuss  in  a  few  sentences,  at  least  three  (3)  factors  
to  consider  when  selecting  an  appropriate  software  development  
process  (ex.  XP,  waterfall,  etc.)  for  a  particular  software  
development  project.  
 
 
Listed  below  are  a  few  sample  answers.  Many  others  are  also  
accatpable...  
 
Is  the  development  mainly  experimental,  or  will  it  become  a  
commercial/open-­‐source  product  with  users  other  than  the  
developers  themselves?  If  the  project  is  experimental,  or  a  
“spike,”  then  no  formal  process  is  needed  at  all.  If  not,  then  
more  thought  is  required.  
 
Risk  factors.  Could  someone  get  hurt  or  die  if  the  software  
doesn’t  work  correctly?  If  so,  then  agile  methods  may  not  be  as  
appropriate  as  a  more  regimented  waterfall-­‐like  process.  This  is  
not  to  say  that  agile  methods  cannot  be  used  at  all,  but  more  
care  would  need  to  be  taken  if,  for  example,  Scrum  was  the  chosen  
process.  
 
Deployment  method.  One  extreme  being  Software-­‐as-­‐a-­‐Service  (SaaS)  
and  the  other  is  a  scenario  where  a  skilled  install  technician  
brings  the  software  (and  possibly  the  hardware)  to  the  install  
site,  and  performs  the  installation  there.  Commercial  off-­‐the-­‐
shelf  (COTS)  is  somewhere  between  these  extremes.  Agile  methods  
like  XP  and  Scrum  are  often  the  best  choice  for  SaaS  because  they  
tend  to  allow  the  development  team  to  do  more  frequent  releases.  
 
Do  the  developers  and  the  stakeholders  understand  the  problem,  
and  potential  solution,  well?  If  not,  then  a  process  that  lets  
the  stakeholders  participate  in  early  UAT  might  be  best.  Strict  
Waterfall  (or  Spiral  for  first  release)  may  be  a  bad  choice  in  
this  case  because  UAT  only  happens  at  the  end,  when  correcting  
design  mistakes  is  much  more  expensive.  
CSC302   Engineering  Large  Software  Systems   page  11/14  

4.          [Verification  and  Validation  (V&V),  10  marks  Total]  


As  discussed  in  class,  Verification  and  Validation,  or  V&V,  is  
often  referred  to  as  IV&V,  where  the  I  stands  for  Independent.  
This  means  that  those  responsible  for  V&V  are  independent  from  
those  who  are  responsible  for  producing  the  product.  Independence  
is  typically  broken  down  into  three  categories:  
• Managerial  Independence  
• Financial  Independence  
• Technical  Independence  
In  the  space  below,  describe  each  type  of  independence  and  why  it  
is  important  to  get  unbiased  V&V.  Also,  for  each  type  of  
independence,  give  an  example  of  something  that  can  go  wrong  if  
you  don’t  have  it.  
 
 
Managerial:  The  V&V  team  and  the  R&D  team  do  not  share  any  
reporting  structure.  This  is  important  so  that  you  don’t  have  a  
manager  in  charge  of  both  that  will  bias  one  over  the  other.  
Without  this  independence,  the  R&D  manager  may  cut  effort  from  
V&V  in  favor  of  adding  more  features,  and  quality  will  suffer.  
 
Financial:  R&D  and  V&V  funding  comes  from  totally  independent  
budgets.  If  they  came  from  the  same  budget,  funds  from  one  could  
be  diverted  to  the  other.  If  funds  are  diverted  from  V&V  quality  
will  again  suffer.  
 
Technical:  The  staff  performing  V&V  activities  are  not  the  same  
people  as  those  performing  R&D  tasks.  Further,  the  V&V  staff  do  
not  take  technical  advice  or  direction  from  R&D.  If  there  was  no  
technical  independence,  the  R&D  team  may  influence  the  V&V  team’s  
technical  decisions,  tools  they  employ,  and  bug  finding  
strategies.  This  could  increase  the  probability  that  bugs  hidden  
to  developers  would  also  remain  hidden  to  V&V  staff.  
CSC302   Engineering  Large  Software  Systems   page  12/14  

[scratch  paper]  
CSC302   Engineering  Large  Software  Systems   page  13/14  

[scratch  paper]  
CSC302   Engineering  Large  Software  Systems   page  14/14  

[scratch  paper]  
 
 
 

You might also like