Introduction
An introduction to UML and SOA
This chapter outlines the philosophy of a development process
geared to service oriented architecture, and provides a
brief history of UML.
- Why component technology?
- the problems of a traditional approach
- some solutions
- Component Based Development
- components for agility
- components for reuse
- Service Oriented Architecture
- services for agility
- changing the way business is done
- What is a software development process?
- business modelling: concepts and tasks
- system requirements models
- The background to UML
- a model-based approach to developing enterprise
components
- history and background to UML and Catalysis
- Resources and references
Analysis
The basics of modelling
The purpose of this chapter is to
- introduce the concept of a model;
- show how UML and BPMN can be used to capture a model;
- show how the model of the real world and the real world are "syncronised"; and
- illustrate and discuss some of the issues of abstraction.
This chapter will introduce the concept of a model, how abstraction is used, and how a model is captured using UML and BPMN. The emphasis is on understanding the modelling process with the goal of identifying the business services.
- The basic ideas
- UML as a modelling tool
- the model and the real world
- using abstraction
- the model and the software
- why Object Oriented models
- keeping them accurate
- individuals and relationships
- Modelling
- things of interest in the world and in our model
- designations — specifying what we are modelling
- abstraction — modelling the things of interest
- different points of view
- The fundamental modelling tools
- modelling things that are: entities
- modelling things that happen: business processes
- the model and the real world
- remembering the past (histories) and planning the future (futures)
At the end of the session, the attendee should be able to
- understand the concept of a services model;
- understand how UML and BPMN can be used as a modelling tool; and
- construct a simple model using UML and BPMN diagrams;
BPMN: the basics
The purpose of this chapter is to
- introduce the basic ideas of BPMN;
- show how BPMN can be used to model business processes; and
- discuss some of the issues of process modelling.
- business activities
- things of interest in the world and in our model
- specifying what we are modelling — business activities
- business sub-processes
- abstraction — modelling at the right level of detail
- the concept of the real user
- the goals of the real user
- getting down to atomic activities (and no further)
- different points of view
- events
- activities and events
- histories and futures
- remembering the history and causing the future
- process modelling and data
- what is in a message
- linking the activities and information
At the end of the session, the attendee should be able to
- construct a simple model using BPMN;
- illustrate a simple scenario of a business process with a series of snapshots; and
- relate a snapshot to the corresponding type and business process models.
UML: the basics
In this chapter, the UML notations that are used for modelling are introduced. It is here
that the basic vocabulary of UML is introduced.
- Using UML Types
- objects, types, attributes
- static models
- snapshots (instance diagrams)
- Use cases and business services
- the context
- identifying services
- specifying goals
- snapshots & filmstrips
- processes
- More diagrams and meanings
- subtypes
- aggregates
- stereotypes
- Documenting what happens to things
- statecharts: the notation
- connecting the dynamic and static views
- use cases and states
- objects and roles
- Documenting when things happen
- activity diagrams: the notation
- concurrent activities
- different people do different things
- The importance of readable documents
- diagrams and dictionaries
- documentation style
- UML notation review
At the end of the session the attendee should know the basic UML notation for:
- class (type) diagrams
- object diagrams
- activity diagrams
- use case diagrams
- state machine diagrams
Techniques — how to constructing a model
This chapter is looks at various ways to construct a model and how to check it
for consistency and completeness. Here we are looking at requirements capture and modelling.
- Roles, actions, and objects: who’s involved, what are their goals?
- understanding the business
- who does what
- finding business processes
- Identifying services — stories: how do they achieve their goals?
- Snapshots and filmstrips: seeing the changes that are affected by a business process
- understanding the business process
- who and what are involved
- have we understood the process
- Specifying the use cases
- searching for services
- capturing the business processes
- snapshots revisited
- Refining the use cases: zooming in and out
- getting the right level for services
- too little vs too much
- the life history of processes and objects
- avoiding the £0.0 invoice problem
- does it all fit together
- have we modelled everything
- Composing models: from different viewpoints
At the end of the session, the attendee should know how to start the construction of a simple
model using UML by identifying and telling suitable "stories" about the business, illustrate
those stories with snapshots and from them derive a basic type model and process model.
Packaging the model
This chapter considers the problem of how to break a model into
UML packages, each of which covers part of the business. The packages
will help to identify services, and components for implementation. Each
package is a model of part of the business, a possible service,
and is decoupled as much as possible from the other the other packages that make
up the system.
- Packaging
- packaging the model
- presentation vs implementation
- Application architecture
- the big picture
- processes, concepts, and entities
- Finding components
- business entities
- business processes and services
- Identifying packages
- Packaging the business entities
- Packaging the business processes
- Decoupling packages
- What’s in a package
- Roles and reuse
At the end of the session, the attendee should know how to package a domain model in a way
suitable for a clear understanding of the models. They should also understand how the
packaging is a jumping off point for identifying components.
Business rules
This chapter looks at the need for, and the capture of, business rules.
Ignoring business rules is a major source of errors in a system;
these are the errors are usually found during system use and are the
most expensive to fix.
- The need for business rules
- the world is not perfect
- this is the way our business works
- Identifying business rules
- capturing the rules of the game
- static rules
- dynamic rules
- business rules and services
At the end of the session, the attendee should know why there is a need for business rules,
how they may be identified and captured. The attendee will also understand the possibility of
using OCL to capture those business rules.
System specification
This chapter looks at how to interpret the services model as a system
model and illustrates how the system can be specified as a set of
interfaces that describe the services to be provided by the system. The
main emphasis is on interfaces and specification of those interfaces by
contract. The interfaces are about the business, not about the system
implementation. The interfaces are aimed at a service based architectural style.
- Application architecture
- separating the business core from the GUI, persistence, and other layers
- Scoping and elaborating
- system context
- system context models
- building a system specification
- iterative development?
- Interfaces
- defining interfaces
- the syntax and semantics of an interface
- Specifying the system — using the domain model
- adding parameters
- specifying system behaviour
- high-level operation specs
At the end of the session, the attendee should know how to convert a domain model into
a specification model. They should understand the concept of scoping, understanding
the idea of a system model and how it should be synchronized with the real world.
Specifying the interface tier
This short chapter looks at the specification and design of the “client”
side of a system — what the user sees.
- Users of the system (actors) as concepts
- user interfaces as objects
- interfaces revisited
- Specifying information
- describing input and output using UML
At the end of the session, the attendee should know techniques for specifying the interface
layer. They should also understand that a service based system is independent of the users.
The model building process
The chapter is concerned with discussing the management and
organizational aspects of building models from a lightweight,
iterative development point of view.
- Modelling: concepts and tasks
- The need for a services model
- what is a services model
- services are about the business, not about the system
- a context for software requirements
- deliverables — what’s in the services model
- Process — what to do and when
- Strategies — who constructs the model
- building a services model
- uses of the services model
At the end of the session, the attendee should know the advantages and disadvantages of using
a light-weight, agile, development process. They will also know how to develop models using a
co-operative approach.
Architecture and Design
Service Oriented Architecture
This section looks at the ideas behind service
architecture and looks at the issues involved in producing service
kits for constructing software.
- Services
- Service architectures?
- the ideas behind services
- what we need
- Communication
- exchanging information
- towards a common language
- The infrastructure
- “platforms and pipes”
- services and infrastructure
- Architectural issues
- pulling the ideas together
- example technical architectures
- Architectures
An interlude, some UML for design
- Designing collaborations — a time-line approach
- sequence diagrams — the notation
- using sequence diagrams for discovering collaborations
- almost a pseudo code?
- advantages and disadvantages of this approach
- Designing collaborations — collaborating objects
- communication diagrams — the notation
- objects and their links
- objects and their collaborations
- advantages and disadvantages of this approach
Service collaboration — a coordinated approach
The section looks at a technology-free coordinator approach to
service collaboration. It covers the main aspects of
serice specification and design. The architectural style is shows how a stateless coordinator can be built and is
particularly suited to an ESB technology.
- Coordinating services
- Coordinators as an OO concept
- where do the business rules go?
- layers and dependencies
- Using coordinators
- service collaborations
- services and interfaces
- collaborations and business rules
- completing interfaces
- service specifications
- Specifying the interfaces
- using the system model
- changing operations
At the end of the session, the attendee should know how to bundle
interfaces (packages) together to form services that reflect the needs of
the business; and know how to
discover the collaborations that are necessary to support the services
defined by the specification model.
Self-contained services
There are many architectural choices that can be made when
building a system from services. This section looks at the various styles of
collaborations between services and discusses the
various styles of architecture and trade-offs that can be made. This
section looks in detail at business service
that manage their own business rules.
- Alternative service architectures
- Decoupling roles and services
- sharing information between services
- synchronising information
- where do the actions and rules go?
- Sharing across services
- sharing information: a variety of styles
- synchronising invariants
- connecting services together
- decoupling the services
- Transformations for sharing
- using roles
- Designing the services
- mixing approaches
- tradeoffs
Agile services
This
section looks in detail at business service
that do not manage their own business rules allowing for more agility when changing business processes.
- Alternative service architectures
- Decoupling rules, roles and services
- synchronising information
- where do the actions and rules go?
- Sharing across services
- sharing information: a variety of styles
- synchronising invariants
- connecting services together
- decoupling the services
- Transformations for sharing
- Using roles
- Designing the services
- mixing approaches
- tradeoffs
Enterprise Integration Patterns — the basics
- Integrating services
- Messaging
- messages
- channels
- endpoints
- Patterns
- the philosophy &mdash loose coupling
- message construction
- routing
- message transformation
Designing the presentation tier
- Specifying the information
- storyboards
- designing dialogues: what vs how
- using UML as a design tool
- the user and the system views
- Forms
- what vs how
- leaving the design to last
Implementation
Component design — building the system with a coordinator
From specification to code — this section
looks at how code can be derived from a specification and
looks at the choices that are available. It provides an overview of the
tasks that need to be done and provides a framework for implementing
components using a coordinator approach — an approach suitable for
J2EE, .Net and Orchestration in an SOA environment.
- technical architecture
- layering
- distributed systems
- stateless vs statefull
- a typical application
- some architectural issues
- fine vs course granularity
- types vs entities
- From design to code (overview)
- the specification
- snapshots
- deriving the code
- Implementing the different architectures
- finding the interfaces
- sharing objects
At the end of the session, the attendee should understand the various options
available to a programmer and have some understanding on how working code
can be derived from a component specification.
Implementing the presentation tier
This chapter looks at the specification and high level design of the
“client” side of a system — what the user sees.
- Components in the presentation layers
- GUI: MVC
- the linkage of the 'core(s)' to the presentation layers
- reification of use-cases in UI objects
- Interface layer
- from the user to the system
- translating and checking
At the end of the session, the attendee know how UML can be used to express
a high-level design for a user interface that could be implemented by one
of the standard technologies.
Review
A review of the technical process
The following chapter is a review of the technical material
covered in the course. It is tailored to the course it is used
in. The chapter reviews component based development in the
Catalysis style.
- Business (conceptual) modelling
- building a business model
- System (requirements) modelling
- Application (architectural) modelling
- finding the components and connectors
- Design modelling
- working out how things work
- Implementation
- Architecture & patterns
- The whole picture
The end
At the end of the session, the attendee should be able to construct a simple model using UML
type diagrams and state machine diagrams.
- A quick review of the ideas and concepts