Page 144 - Software and Systems Requirements Engineering in Practice
P. 144

C h a p t e r   4 :
                                                        R e q u i r e m e n t s   M o d e l i n g
                                           C  h  a  p  t  e  r     4  :     R  e  q  u  i  r  e  m  e  n  t  s     M  o  d  e  l  i  n  g     111 111
                      A Concrete Class Must Be Instantiated
                      If a concrete class is not instantiated, it means that the class is not
                      used in any processes; e.g., it does not appear on a sequence, activity
                      or collaboration diagram. The question then arises, if it is not used,
                      why is it in the model?

                      A Boundary or Interface Class Is Properly Defined If and Only If It
                      Has Public Methods, and Each of These Methods Is Shown on a
                      Sequence or Collaboration Diagram
                      This heuristic is self-explanatory. Missing public methods (services)
                      in a boundary or interface are typically an oversight.
                      Every Business Object Service (i.e., Class Method)
                      Should Be Defined
                      Class methods are typically defined using a state or activity diagram.
                      A  state  diagram  is  used  when  the  logic  is  “event  driven,”  and  an
                      activity diagram is often used when the logic is procedural.

                      Every Actor in the Model Should Communicate
                      with Use Cases Through Boundaries
                      At  the  context  level  we  identify  all  the  actors  associated  with  the
                      domain  being  modeled.  However,  in  order  to  adequately  explain
                      the nature of the communication, at some point every actor–use case
                      interaction must take place through a boundary.




                   Using Boundaries as Proxies for External Objects
                   During a project to create a medical billing system for a hospital, we
                   observed that the scheduling function was out of scope, yet scheduling
                   services were needed. A “scheduling system” boundary was created as
                   a catchall, and in any scenario where scheduling was needed, a message
                   would  be  sent  to  the  scheduling  system  requesting  a  service,  along
                   with the supplied and returned information. As the modeling effort
                   neared  completion,  the  project  manager  for  the  scheduling  system
                   development  effort  approached  our  team  and  inquired  about  what
                   scheduling services the billing system would need. She was shocked
                   when within five minutes we were able to generate a complete report
                   showing  all  scheduling  services  needed  by  medical  billing,  which
                   billing  system  actors  used  the  service,  and  what  scenarios  (context)
                   they were used in. Even though the model had over eight hundred use
                   cases  and  several  thousand  diagrams,  such  complex  queries  were
                   a relatively simple matter as the model had been designed with scale
                   in mind.
   139   140   141   142   143   144   145   146   147   148   149