Dr. Kivanc DincerCS319 Week 6 - Oct.17,20051 Chapter 14 Onto Object Design Objectives Understand dynamic and static object design modeling. Try agile modeling, or a UML CASE tool for drawing. “I do not like this word ‘bomb’. It is not a bomb. It is a device that is exploiding.” - Ambassador Jackues le Blanc on nuclear weapons
Dr. Kivanc DincerCS319 Week 6 - Oct.17,20052 Agile Modeling and Lightweight UML Drawing Two of the aims of Agile modeling: –Reduce drawing overhead –Model to understand and communicate This is a change from a view of modeling as documentation. In a era of rapid change, documentation tends to have minimal value. More Agile Principles –Modeling with others –Create several models in parallel –Use temporary models such as diagrams on white boards –Digital photographs of white boards can be shared on a wiki. (See
Dr. Kivanc DincerCS319 Week 6 - Oct.17,20053 UML Case Tools You can also do agile modeling with UML case tools like Rational Rose, Together, or one that comes with a popular IDE such as Eclipse or Visual Studio. Choose a tool that can read your code and reverse engineer it to create diagrams from your code. Switch back and forth from diagramming to reverse engineering.
Dr. Kivanc DincerCS319 Week 6 - Oct.17,20054 How much time spent during UML before coding? Limit time spent drawing A few hours or at most one day of diagramming should do most of the work for a three week iteration. Occasional short sessions of modeling during the iteration can clarify any concepts that still need to be understood.
Dr. Kivanc DincerCS319 Week 6 - Oct.17,20055 Designing Objects: Static and Dynamic Modeling Dynamic models such as interaction diagrams (sequence or communication diagrams) help design logic, code behavior, and method bodies. Static Models such as class diagrams help define packages, class names, attributes, and method signatures. Switch back and forth during modeling sessions.
Dr. Kivanc DincerCS319 Week 6 - Oct.17,20056 Dynamic Models Most of the challenging, interesting, and useful design work comes during dynamic modeling. –The interaction diagrams are typically where we apply design patterns such as the GRASP patterns. If the most important skill in object design is assigning behavior to objects, this is when it usually takes place. Dynamic UML models include –sequence, –communication, –state machine –and deployment diagrams.
Dr. Kivanc DincerCS319 Week 6 - Oct.17,20057 Static Models If behavior is designed during dynamic modeling, it is the static models, such as the class diagrams, which give the overall structure to our software, and allow us to divide the work into manageable and maintainable chunks. Static UML models include –class, –package, –and deployment diagrams.
Dr. Kivanc DincerCS319 Week 6 - Oct.17,20058 The Importance of Object Design Skill over UML Notation Skill UML is only an ancillary tool to object design. The real skill is the design, not the diagramming. Seeking a software design job because you are good at making UML diagrams is like seeking a career as a novelist because you have good penmanship.
Dr. Kivanc DincerCS319 Week 6 - Oct.17,20059 Other Object Design Techniques: CRC Cards An alternative to UML Object Design is the Class, Responsibility, Collaboration Cards popularized by Kent Beck in eXtreme Programming. –There are some brief examples in the text, but you should get a book on eXtreme Programming or go to a Web site if you are interested.
Dr. Kivanc DincerCS319 Week 6 - Oct.17, CRC Cards
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Chapter 15 UML Interaction Diagrams Objectives Provide a reference for frequently used UML interaction diagram notation – sequence and communication diagrams “Cats are smarter than dogs. You can’t get eight cats to pull a sled through snow.” - Jeff Waldez
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Introduction Why do objects exist? –To perform an activity to help fulfill a system’s purpose UML interaction diagrams are used to illustrate how objects interact via messages. –They are used for dynamic object modeling. Interaction Diagrams provide a thoughtful, cohesive, common starting point for inspiration during programming
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Interaction Diagrams There are two common types: –Sequence diagrams –Communication diagrams Both diagram types are semantically equivalent, however, they may not show the same information –Communication Diagrams emphasize the structural organization of objects, while Sequence Diagrams emphasize the time ordering of messages –Communication Diagrams explicitly show object linkages, while links are implied in Sequence Diagrams
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Sequence diagram Fig Communication diagram
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Communication diagram Fig Sequence diagram
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Comparison of Diagrams TypeStrengthsWeaknesses Sequence Diagram -clearly shows sequence or time ordering of messages. - large set of detailed notation options. - forced to extend to the right when adding new objects; consumes horizontal space Communication Diagram Space economical – flexibility to add new objects in two dimensions. -more difficult to see sequence of messages. -fewer notation options.
Basic Sequence Diagram Notation
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Lifeline boxes to Show participants in interactions
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Singletons in interaction diagrams
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Messages and focus of control with execution specification bar (activation bar)
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Two ways to show a return result from a message.
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Messages to `this`
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Instance creation and object lifelines
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Object destruction
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Example UML frame (regions or fragments of the diagrams) Frame OperatorMeaning altAlternative fragment for mutual exclusion loopLoop fragment while guard is true optOptional fragment that executes if guard is true parParallel fragments that execute in parallel regionCritical region within which only one thread can run
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig A conditional message / Optional fragment that executes if guard is true
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig A conditional message in UML 1.x notation – a simple style.
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Mutually exclusive conditional messages. /Alternative fragment for mutual exclusion
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Iteration over a collection using relatively explicit notation Fig Iteration over a collection using more implicit notation
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Nesting of frames
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Example interaction occurrence, sd and ref frames.
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Invoking class or static methods.
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Modeling polymorphic cases.
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Asynchronous calls and active objects
Basic Communication Diagram Notation
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Link lines Fig Messages
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Messages to `this`
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Instance creation
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Sequence numbering
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Complex sequence numbering
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Conditional message
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Mutually exclusive messages
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Iteration
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Iteration over a collection
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Messages to a class object (static message invocation)
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig An approach to modeling polymorphic cases.
Dr. Kivanc DincerCS319 Week 6 - Oct.17, Fig Asynchronous call