OO Analysis and Design with UML

OO Analysis and Design with UML

Audience

This course is intended primarily for systems analysts, designers, programmers and project managers. The analysis section (first three days) would also be of value to problem domain experts involved in the specification stage.

Prerequisites

Familiarity with structured techniques such as functional decomposition is helpful.

Duration

5 days. Lecture and workshop based.

Course Objectives

The first part of this course teaches proven, effective analysis techniques related to event, process, information and interface modelling. The aim is to define a technology and jargon free Essential Logical Model. Once defined the essential model can be mapped during the define phase into a design model that can be Object Oriented, object based, hybrid or classical depending on the chosen development technology.

The second part of the course studies the principal and practical skills for creating good design using Object Oriented Technology. Delegates will learn how to map the Essential Model into a Design (Physical) Model. The modeling notation is UML (the approved OMG standard) and the course is language independent. Delegates will learn to use Object-Oriented techniques to analyse real-world requirements and to design solutions that are ready to code. They will understand how to identify and design objects, classes, and their relationships to each other, which includes links, associations, and inheritance. A strong emphasis is placed on diagram notation for use cases, class and object representation, links and associations, and object messages. This course utilises UML 2.x notation.

Course Content

Introduction to Analysis and Design
Why is Programming Hard?
The Tasks of Software Development.
Modules.
Models.
Modeling.
Perspective.
Objects.
Change.
New Paradigms.

Objects
Encapsulation.
Abstraction.
Objects.
Classes.
Responsibilities.
Attributes.
Composite Classes.
Operations and Methods.
Visibility.
Inheritance.
Protected and Package Visibility.
Scope.
Class Scope.

Advanced Objects
Constructors & Destructors.
Instance Creation.
Abstract Classes.
Polymorphism.
Multiple Inheritance.
Solving Multiple Inheritance Problems.

Interfaces
Interfaces with Ball and Socket Notation.
Templates.

Classes and Their Relationships
Class Models.
Associations.
Multiplicity.
Qualified Associations.
Roles.
Association Classes.
Composition and Aggregation.
Dependencies.
Using Class Models.

Sequence Diagrams
Interaction Frames.
Decisions.
Loops.
Creating and Destroying Objects.
Activation.
Synchronous & Asynchronous.
The Objects Drive the Interactions.
Evaluating Sequence Diagrams.
Using Sequence Diagrams.

Communication Diagrams
Communication and Class Diagrams.
Evaluating Communication Diagrams.
Using Communication Diagrams.

State Machine Diagrams
What is State?
State Notation.
Transitions and Guards.
Registers and Actions.
More Actions.
Internal Transitions.
Superstates and Substates.
Concurrent States.
Using State Machines.
Implementation.

Activity Diagrams
Activity Notation.
Decisions and Merges.
Forks and Joins.
Drilling Down.
Iteration.
Partitions.
Signals.
Parameters and Pins.
Expansion Regions.
Using Activity Diagrams.

Package, Component, and Deployment Diagrams
Modeling Groups of Elements – Package Diagrams.
Visibility and Importing.
Structural Diagrams.
Components and Interfaces.
Deployment Diagram.
Composite Structure Diagrams.
Timing Diagrams.
Interaction Overview Diagrams.

Use Cases
Use Case Diagram Components. 
Actor Generalization.
Include.
Extend.
Specialize.
Other Systems.
Narrative.
Template for Use Case Narrative.
Using Use Cases.

Process
Risk Management.
Test Reviews.
Refactoring.
History.
The Unified Process.
Agile Processes.

The Project
Inception.
Elaboration.
Construction Iterations.

Domain Analysis
Top View – The Domain Perspective.
Data Dictionary.
Finding the Objects.
Responsibilities, Collaborators, and Attributes.
CRC Cards.
Class Models.
Use Case Models.
Other Models.
Judging the Domain Model.

Requirements and Specification
The Goals.
Understand the Problem.
Specify a Solution.
Prototyping.
The Complex User.
Other Models.
Judging the Requirements Model.

Design of Objects
Design.
Factoring.
Design of Software Objects.
Features.
Methods.
Cohesion of Objects.
Coupling between Objects.
Coupling and Visibility.
Inheritance.

System Design
Design.
A Few Rules.
Object Creation.
Class Models.
Interaction Diagrams.
Printing the Catalog.
Object Links.
Associations.

Refactoring
Clues and Cues.
How to Refactor.
A Few Refactoring Patterns.

UML Syntax

Design by Contract
Contracts.
Enforcing Contracts.
Inheritance and Contracts.

Implementations
C++.
Java.

Virtual Courses

ALL of our courses can be delivered virtually! Our Bath public schedule courses are available as live virtual sessions, using the popular Zoom Virtual Classroom and remote labs. Delegates can test their access at: www.zoom.us/test

Public Courses

On-Site Courses

Can't attend one of our public classes? Booking for multiple people?

All our courses are available on your site! Delivered for your staff, at your premises.

Contact us to find out more...