• Keine Ergebnisse gefunden

So#ware  Engineering   Just  Enough  UML

N/A
N/A
Protected

Academic year: 2022

Aktie "So#ware  Engineering   Just  Enough  UML"

Copied!
30
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

So#ware  Engineering   Just  Enough  UML  

Klaus  Ostermann  

So#ware  Engineering   1  

(2)

Just  Enough  UML…  

}  The  UML  is  the  Unified  Modeling  Language  

}  Successor  to  a  wave  of  OO  analysis  &  design  methods  that  appeared   in  the  1980s  and  1990s  

}  It  is  a  modeling  language  to  express  high-­‐level  design  

}  Defines  several  diagram  types  

}  Implicitly  associated  with  the  UML  is  also  a  method  or  process  

}  Method:  advice  on  what  steps  to  take  in  doing  a  design  

}  There  are  different  ways  to  use  UML.  We  will  mainly  use  it  as  a   notaQon  to  communicate  high-­‐level  OO  design  ideas.  

But  keep  in  mind:  No  user  is  going  to  thank  you  for  preTy  

(3)

Class  Diagrams  

So#ware  Engineering   3  

}  A  class  diagram  describes  the  types  of  objects  in  a  system   and  the  various  kinds  of  staQc  relaQonships  between  

them  

}  AssociaQons  

}  Subtypes  

}  Class  diagrams  also  show  the  aTributes,  names/types  of   operaQons,  and  constraints  that  restrict  how  objects  are   connected  

(4)

Class  Diagrams  

Example  

(5)

Three  ways  to  use  class  diagrams  

So#ware  Engineering   5  

}  Conceptual:  Draw  a  diagram  that  represents  the  concepts   in  the  domain  under  study  

}  LiTle  or  no  regard  for  the  so#ware  that  might  implement  it  

}  Specifica.on:  Describing  the  interfaces  of  the  so#ware,   not  the  implementaQon  

}  O#en  confused  in  OO  since  classes  combine  both  interfaces   and  implementaQon  

}  Implementa.on:  Diagram  describes  actual   implementaQon  classes  

}  Understanding  the  intended  perspecQve  is  crucial  to   drawing  and  reading  class  diagrams  

}  Even  though  the  lines  between  them  are  not  sharp  

(6)

AssociaQons  

}  AssociaQons  represent  relaQonships  between  instances   of  classes  

}  Conceptual  perspecQve:  AssociaQons  represent   conceptual  relaQonships    

}  SpecificaQon  perspecQve:  AssociaQons  represent   responsibiliQes  

}  ImplementaQon  perspecQve:  AssociaQons  represent   pointers/fields  between  related  classes  

(7)

AssociaQons  

So#ware  Engineering   7  

}  Each  associaQon  has  two  ends  

}  Each  end  can  be  named  with  a  label  called  role  name  

}  An  end  also  has  a  mulQplicity:  How  many  objects  parQcipate  in   the  given  relaQonship  

}  General  case:  give  upper  and  lower  bound  in  lower..upper  notaQon  

}  AbbreviaQons:  *  =  0..infinity,  1  =  1..1  

}  Most  common  mulQpliciQes:  1,  *,  0..1  

}  In  the  specificaQon  perspecQve,  one  can  infer  existence   and  names  (if  naming  convenQons  exist)  of  methods  to   navigate  the  associaQons,  for  example:  

Class Order {

public Customer getCustomer();

public Set<OrderLine> getOrderLines();

}

(8)

AssociaQons  

}  In  the  implementaQon  perspecQve  we  can  conclude  

existence  of  pointers  in  both  direcQons  between  related   classes  

class Order {

private Customer _ customer;

private Set<OrderLine> _orderLines;

}

class Customer {

private Set<Order> orders;

(9)

AssociaQons  

UnidirecQonal  vs  bidirecQonal  

So#ware  Engineering   9  

}  Arrows  in  associaQon  lines  indicate  navigability  

}  Only  one  arrow:  unidirecQonal  associaQon  

}  No  or  two  arrows:  bidirecQonal  associaQon  

}  SpecificaQon  perspecQve:  Indicates  navigaQon  operaQons   in  interfaces  

}  ImplementaQon  perspecQve:  Indicates  which  objects   contain  the  pointers  to  the  other  objects  

}  Arrows  serve  no  useful  purpose  in  conceptual  perspecQve  

}  For  bidirecQonal  associaQons,  the  two  navigaQons  must   be  inverses  of  each  other  

(10)

UnidirecQonal  

AssociaQons  

(11)

Class  Diagrams:  ATributes  

So#ware  Engineering   11  

}  ATributes  are  very  similar  to  associaQons  

}  Conceptual  level:  A  customer’s  name  aTribute  indicates  that   customers  have  names  

}  SpecificaQon  level:  ATribute  indicates  that  a  customer  object   can  tell  you  its  name  

}  ImplementaQon  level:  customer  has  a  field  (aka  instance   variable)  for  its  name  

}  UML  syntax  for  aTributes:  

visibility  name  :  type  =  defaultValue  

}  Details  may  be  omiTed  

(12)

Class  Diagrams:  ATributes  vs  AssociaQons  

}  ATributes  can  describe  non-­‐object-­‐oriented  data  

}  Integers,  strings,  booleans,  …  

}  From  conceptual  perspecQve  this  is  the  only  difference  

}  SpecificaQon  and  implementaQon  perspecQve:  

}  ATributes  imply  navigability  from  type  to  aTribute  only  

}  Implied  that  type  contains  solely  its  own  copy  of  the  aTribute   objects  

(13)

Class  Diagrams:  OperaQons  

So#ware  Engineering   13  

}  OperaQons  are  the  processes  that  a  class  knows  to  carry   out  

}  Most  obviously  correspond  to  methods  on  a  class  

}  Full  syntax:  

visibility  name(parameter-­‐list)  :  return-­‐type  

}  visibility  is  +  (public),  #  (protected),  or  -­‐  (private)  

}  name  is  a  string  

}  parameter-­‐list  contains  comma-­‐separated  parameters  whose   syntax  is  similar  to  that  for  aTributes  

}  Can  also  specificy  direcQon:  input  (in),  output(out),  or  both  (inout)  

}  Default:  in  

}  return-­‐type  is  comma-­‐separated  list  of  return  types  (usually   only  one)  

(14)

Class  Diagrams:  Constraint  Rules  

}  Arbitrary  constraints  can  be  added  by  pulng  them  inside   braces({})  

}  Mostly  formulated  in  informal  natural  language  

}  UML  also  provides  a  formal  Object  Constraint  Language   (OCL)  

}  Constraints  should  be  implemented  as  asserQons  in  your   programming  language  

(15)

So#ware  Engineering   15  

Object  Diagrams  

(Class  diagram  that     belongs  to  the  object   diagram)  

(16)

AggregaQon  vs  ComposiQon  

}  AggregaQon  expresses  “part-­‐of”  relaQonships,  but  rather   vague  semanQcs  

(17)

Abstract  classes  and  methods  

So#ware  Engineering   17  

}  UML  convenQon  for  abstract  classes/methods:  Italicize  name   of  abstract  item  or  use  {abstract}  constraint  

(18)

Interfaces  and  Lollipop  notaQon  

(19)

CRC  cards  

So#ware  Engineering   19  

}  CRC  =  Class-­‐Responsibility-­‐CollaboraQon  

}  Invented  by  Ward  Cunningham  and  Kent  Beck  in  the  

1980s    to  ease  the  development  of  a  class  model  from  the   requirements  

}  Not  part  of  UML,  but  have  proven  to  be  quite  useful  

}  More  informaQon:  

hTp://c2.com/doc/oopsla89/paper.html  

(20)

Sample  CRC  card  

(21)

CRC  Cards  

So#ware  Engineering   21  

}  Idea:  Describe  responsibiliQes  and  collaboraQon  of  each   class  on  an  index  card  (“Karteikarte”)  

}  MoQvaQon:  Capture  purpose  of  class  in  a  few  sentences   without  thinking  about  data,  processes,  and  other  

implementaQon  details  

}  Chief  benefit  of  CRC  cards:  They  encourage  discussion   among  developers  

}  Common  mistake:  Long  lists  of  low-­‐level  responsibiliQes  

}  ResponsibiliQes  should  fit  conveniently  on  an  index  card  

}  Otherwise  consider  to  split  the  class  or  summarize  low-­‐level   responsibiliQes  in  higher-­‐level  responsibiliQes  

(22)

InteracQon  Diagrams  

}  InteracQon  diagrams  describe  how  groups  of  objects   collaborate  in  some  behavior  

}  Two  kinds  of  interacQon  diagrams:  sequence  diagrams   and  collabora.on  diagrams  

(23)

Sequence  Diagram  Example  

So#ware  Engineering   23  

(24)

Sequence  Diagrams  

}  VerQcal  line  is  called  lifeline  

}  Each  message  represented  by  an  arrow  between  lifelines  

}  Labeled  at  minimum  with  message  name  

}  Can  also  include  arguments  and  control  informaQon  

}  Can  show  self-­‐call  by  sending  the  message  arrow  back  to  the   same  lifeline  

}  Can  add  condiQon  which  indicates  when  message  is  sent,   such  as  [needsReorder]  

}  Can  add  iteraQon  marker  which  shows  that  a  message  is  

(25)

CollaboraQon  Diagram  Example  

So#ware  Engineering   25  

(26)

CollaboraQon  Diagram  Example  

Decimal  Numbering  System  

(27)

Sequence  vs  CollaboraQon  Diagrams  

So#ware  Engineering   27  

}  Sequence  diagrams  are  beTer  to  visualize  the  order  in   which  things  occur  

}  CollaboraQon  diagrams  also  illustrate  how  objects  are   staQcally  connected  

}  You  should  generally  use  interacQon  diagrams  when  you   want  to  look  at  the  behavior  of  several  objects  within  a   single  use  case.  

(28)

The  UML  universe  

}  There  is  a  lot  more  to  the  UML  than  what  we  have  shown   here  

}  More  diagram  types  

}  State  diagrams,  acQvity  diagrams,  use  cases,  deployment  diagrams,  …  

}  More  notaQonal  features  in  all  diagram  types  

}  Stereotypes,  parameterized  classes,  …  

}  We  will  touch  some  UML  features  not  shown  here  during   the  course  and  will  explain  them  as  needed  

(29)

UML  MisconcepQons  and  LimitaQons  

So#ware  Engineering   29  

}  UML  is  not  language-­‐independent.  It  is  a  language,  as  the  L  in   UML  suggests.  

}  This  language  is  something  like  a  high-­‐level  “best-­‐of”  of   common  OO  programming  language  features  

}  It  contains  notaQon  for  features  that  are  only  available  in  some  (or   even  no)  programming  language  (such  as:  dynamic  classificaQon)  

}  Every  OO  language  has  features  that  have  no  corresponding  notaQon   in  the  UML  (e.g.  wildcards  in  Java)  

}  The  same  UML  notaQon  may  have  a  different  meaning  in  different   OO  languages  (e.g.  visibility)  

}  The  UML  has  no  clearly  defined  semanQcs.  This  is  both  a   limitaQon  and  a  feature  

}  Good  for  informal  diagrams,  bad  for  formal  specificaQons  

}  No  consensus  in  the  community  about  the  scenarios  where   UML  is  useful  

(30)

Literature  

}  MarQn  Fowler.  UML  Dis<lled.  Addison-­‐Wesley.  

}  Beck,  Cunningham:  A  Laboratory  For  Teaching     Object-­‐Oriented  Thinking.  OOPSLA’  89  

available  online  at  c2.com/doc/oopsla89/paper.html  

Referenzen

ÄHNLICHE DOKUMENTE

[r]

[r]

[r]

(Replace data value with object, extract class, introduce parameter object)... Replace conditional with polymorphism, replace type code with subclasses

[r]

Sofern Business Use-Cases durch IT-Systeme unterstützt werden sollen, führt diese auf der IT Seite zu sogenannten System Use Cases!. Wie der Zusammenhang dabei ist, schauen wir

It is well established that soluble nuclear transport receptors (NTRs) such as Karyopherinβ1 (Kapβ1), regulate the traffic of specific cargoes by their multivalent

The attribute recommend in Figure 2.8 is, as explained in the section on attributes, in any snapshot interpreted as a function of its class, in this case Report, to its target class,