Cityzines Shanghai

Object-Oriented Analysis & Design Using UML

Description
Introduction
The short course Object-Oriented Analysis & Design Using UML will expose students to the basics of object-oriented analysis and design using UML (Unified Modeling Language). Laboratory sessions will equip participants with practical experience in object-oriented analysis and design.

UML is the standard language for object-oriented analysis and design. UML is used throughout the software project lifecycle to capture and communicate analysis and design decisions.

This course is intended to provide an introduction to OOAD using UML. At the end of the course, participants will understand the basic steps of OOAD, gain practical knowledge in the UML diagrams and notations, and build an object-oriented model for their project using UML.

Topics covered include: Introduction to OOAD, Use Case Diagrams, Identifying Classes, Operations, and Attributes, Class Relationship Diagrams, Sequence Diagrams, Collaboration Diagrams, State Transition Diagrams, Object Design, System Design, Using Eclipse to Create UML Models. It will be helpful if participants come with details of a real project that they wish to model.

Upon completion of this course, the participants will be able to:

* Understand basic object-oriented concepts;
* Apply an iterative, use case-driven process to the development of a robust design model;
* Use the UML to represent the design model;
* Apply the OO concepts abstraction, encapsulation, inheritance, hierarchy, modularity, and polymorphism to the development of a robust design model;
* Design a software system using object-oriented software engineering paradigm.

DAY 1:


Software Engineering Overview


* What is Software?


* What is software engineering?


* What makes good software?


* What makes a good software engineer?


Object-Oriented Concepts


* class, object, attribute operation


* Examples of Classes,Objects/Instances, Attributes, Operations


* Unique Characteristics of OO Systems


* Examples of Abstraction, Encapsulation, Inheritance, Polymorphism, Modularity


* Key Points


Introduction to Object-Oriented Analysis and Design with UML


* Analysis Versus Design


* What is Architecture?


* OOAD Steps


* What is UML?


* UML Diagrams


* What constitutes a good model?


* Class Diagrams


- UML Notation for Class


- Hierarchical Inheritance


- Notations for Inheritance


- An Example Inheritance Hierarchy


- The Is-a Rule


- Exercise: Inheritance


Hands-On Workshop with EclipseUML


* Getting Started with Eclipse UML


* Creating UML Classes


Essentials of UML Class Diagrams


* Associations


* Multiplicity (Cardinality)


* Labelling associations


* Analyzing and validating associations


* A more complex example


* Association classes


* Reflexive associations


* Directionality in associations


* Generalization


* Avoiding having instances change class


* Aggregation


* When to use an aggregation


* Composition


* Aggregation hierarchy


* Inheritance or Aggregation?


* The Process of Developing Class Diagrams


* System domain model vs System model


* Suggested sequence of activities


* Identifying classes


* A simple technique for discovering domain classes


* Identifying associations and attributes


* Tips about identifying and specifying valid associations


* Actions versus associations


* Identifying attributes


* Tips about identifying and specifying valid attributes


* An example (attributes and associations)


* Identifying generalizations and interfaces


* An example (generalization)


* Allocating responsibilities to classes


* Categories of responsibilities


* An example (responsibilities)


* Identifying operations


Hands-on Exercise: UML Class Diagrams



DAY 2:


User Centered Design


* Characteristics of Users


* Developing Use-Case Models of Systems


* Use cases


* Scenarios


Introduction to Object-Oriented Analysis and Design with UML


Use-Case Diagrams


* How do you identify Actors?


* How do you identify Use Cases?


* How to describe a single use case


* Extensions


* Generalizations


* Inclusions


* Example of generalization, extension and inclusion


Hands-On Exercise: Creating Use Case Diagrams


* Example description of a use case


* The modeling processes: Choosing use cases on which to focus


* The benefits of basing software development on use cases


Interaction Diagrams


* Interactions and messages


* Elements found in interaction diagrams


* Creating interaction diagrams


* UML Notation for Object in Sequence Diagram


* UML Notation for Sequence Diagram


* Sequence diagrams - an example


* Sequence diagrams - an example with replicated messages


* Sequence diagrams - an example with object deletion


Hands-On Exercise: Creating Sequence Diagrams


* Collaboration Diagram


* UML Notation for Collaboration Diagram


* Collaboration diagrams - an example


* Communication links


* How to choose between using a sequence or collaboration diagram


Hands-On Exercise: Creating Collaboration Diagrams


State Diagrams


* State Diagram Description


* UML Notation for State Diagrams


* State diagrams - an example


* States


* Transitions


* State diagrams - an example of transitions with time-outs and conditions


* State diagrams - an example with conditional transitions


* Activities in state diagrams


* State diagram - an example with activity


* Actions in state diagrams


* State diagram - an example with actions


* Nested substates and guard conditions


* State diagram - an example with substates


Hands-On Exercise: Creating State Diagrams


Activity Diagrams


* Activity diagrams - an example


* Representing concurrency


* Swimlanes


* Activity diagrams - an example with swimlanes


Hands-On Exercise: Creating Activity Diagrams


Difficulties and Risks in modeling Interactions and behavior


Component and Deployment Diagrams


Design Patterns


* Introduction to Patterns


* Pattern description


* The Abstraction-Occurrence Pattern


Hands-On Exercise: Design Patterns


Difficulties and Risks When Creating Class Diagrams

Course Provider's Profile
Dr. Tsai is a lecturer at Singapore University of Technology and Design (SUTD) and an associate lecturer at Singapore Institute of Management (UniSIM). She has over ten years of teaching experience for undergraduate software engineering subjects. She was a graduate of MIT, Columbia University, and NTU. Dr. Tsai has many years of industrial experience in software research and development in USA and Singapore. She teaches Object-Oriented Software Engineering Design, Object-Oriented Programming, and Software Engineering at the undergraduate level. She has previously conducted numerous professional short courses for the industry, including Object-Oriented Software Engineering Using UML, Java, and Eclipse, Object-Oriented Analysis & Design Using UML, Software Engineering Essentials, Object-Oriented Programming Using C++, Object-Oriented Programming Using Java, and Mobile Application Development with Java. She has edited three textbooks related to the subjects: Object-Oriented Software Engineering, Cyber Security, and E-Business Management. She was also involved in chairing the Eclipse Technology Summit, held at NTU in May 2006. Her recent awards include the 2005 IBM Faculty Award, 2007 Real-Time Innovation Award, 2010 Smarter Planet Innovation Award, and 2012 Smarter Communications Innovation Award. She was also the recipient of the 2005 Eclipse Innovation Grant for her project entitled Object-Oriented Design and Development of an Electronic Patient Record System. She is currently a senior member of both IEEE and ACM.