Object-Oriented Software Engineering Anton Eliëns Vrije Universiteit, Amsterdam

advertisement
Object-Oriented Software Engineering
Anton Eliëns
Vrije Universiteit, Amsterdam
http://www.cs.vu.nl/~eliens/online/courses/oo
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Topics:
•
•
•
•
•
•
Basic OO technology
Application Framework(s)
Universal Modeling Language
Design Patterns
Project Management
Current developments and trends
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Introduction
If
OO
is the Answer,
What is
the Question?
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Keywords and phrases
•
•
•
•
•
•
the OO lifecycle -- modelling
encapsulation, inheritance, delegation, polymorphism
specification and implementation inheritance
design by contract
interfaces, components and frameworks
idioms, patterns, software architecture
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Themes and Variations
•
•
•
•
•
abstraction -- the object metaphor
modeling -- understanding structure and behavior
software architecture -- mastering complexity
frameworks -- patterns for problem solving
components -- scalable software
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Object Terminology
•
•
•
•
•
•
•
•
•
objects -- packet containing data and procedures
methods -- deliver service
message -- request to execute a method
class -- template for creating objects
instance -- an object that belongs to a class
encapsulation -- information hiding by objects
inheritance -- allowing the reuse of class spec.s class
hierarchy -- tree structure inheritance relations
polymorphism -- to hide different implementations
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Features of OOP
•
•
•
•
information hiding: state, autonomous behavior
data abstraction: emphasis on what rather than how
dynamic binding: binding at runtime,
polymorphism , virtual
inheritance: incremental changes (specialization), reusability
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
functions
Benefits of OOP
• OO = encapsulation + inheritance
• modularity -- autonomous entities, cooperation through exchanges of
messages
• deferred commitment -- the internal workings of an object can be redefined
without changing other parts of the system
• reusability -- refining classes through inheritance
• naturalness -- object-oriented analysis/design, modeling
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
The San Francisco Framework
How useful is an OO framework?
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
•Example - San Francisco Framework
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
A framework is ...
•
•
•
•
a collection of components
a generic solution for a class of problems
a frame of mind for solving problems
a set of architectural constraints
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
The San Francisco Framework
•
•
•
•
•
•
is meant to develop business applications
is based on Java technology
may solve 70% of your problem
leaves 30% (minimum) to solve for you
may set a standard
or may fail to do so ...
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
San Francisco - motivation
• The project was started when several software vendors asked IBM to help
modernizing their application products
• However, there were several barriers preventing them from being able to
update their applications
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Barriers to modernizing
• (1) The problem of how to retrain their development staff to effectively use OO
technology.
• (2) The risk involved in moving to a new technology.
• (3) moving -> the cost of the change
• The software developers realized they needed some basic infrastructure.
• Many companies could not develop this infrastructure themselves.
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
San Francisco - the press
• The San Francisco project helps to solve these problems by offering
developers Business Process Components,
• designed as frameworks that provides an object oriented infrastructure,
• a consistent application programming model, and
• some default business logic
• The frameworks make it easier to move to OO technology because developers
use well-tested services instead of building their own.
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
San Francisco Framework - layers
• Core Business Process Layer - the highest
• Common Business Objects Layer - middle
• Foundation Layer - lowest
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Core Business Processes
• The objective for this layer is to create a sound architecture and highly
extensible OO implementation for the basic structure and behavior which any
application provider delivering a solution in the application doamin would
require:
• Accounts Receivable/Payable Ledger
• General Ledger Framework
• Sales Order Management Framework
• Purchase Order Management
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Common Business Objects
•
•
•
•
•
•
•
Business Objects common to multiple domains
Common Application level Services
CBO:
Business Partner
Address
Number - decimal structure
Currency - how many euros in a dollar?
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Foundation Layer
• Foundation Object Model Classes
• Utilities
• in other words: it provides the infrastructure
• comment: reinventing the wheel is not a big problem, because the wheel is a
terrific invention
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Foundation Object Model Classes
•
•
•
•
•
Command
Entity
Dependent
Collection/Iterator
Factory
• you need to study Design Patterns to appreciate these ...
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Using the San Francisco Framework
• … The San Francisco Frameworks are designed to make many types of
extensions easy for application developers:
• overriding the default business logic in supplied methods
• adding additional attributes to existing classes
• adding additional methods to existing classes
• from the report: Complete documentation will be provided …
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Example
•
•
•
•
•
•
•
Two classes: Receipt and Purchase order Line
default attributes, methods
default business logic: inspect Quality on receipt
Extension: enhance this logic
subclass Receipt
override inspection method
change logic to include checks against supplier tables, and hazardous or high
value products
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
San Francisco - issues
•
•
•
•
Standards: OMG/CORBA Business Issues
Technology Integration:
Compound Documents: Lotus Notes, JavaBeans, Active X
Business process Modeling and Control: workflow engines may be used as
glue …
• Internet/Intranet and Java: applications may be designed ….
• Conclusions: … a bit premature ...
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Beyond Object-Orientation?
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Trends -- modeling
patterns -- examples of design
UML -- Unified Modeling Language
Technologies -- components
Web -- global infrastructure
CORBA/DCOM - the software bus
Java -- the platform?
Challenges
Applications -> Frameworks <- Patterns
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Challenges in O-O
•
•
•
•
•
•
vertical framework development -- finance, medical care, insurance
separation of 'logic' from 'control' -- business rules
distributed object technology -- heterogeneous systems
visualisation -- structure and processes
knowledge intensive applications -- declarative
heterogeneous systems - fragmented applications
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Universal Modeling Language
•
•
•
•
•
•
… why you need models?
Models are necessary to communicate,
to stabilize abstractions
as a reference for the implementation
and maintenance
and you need an agreement on the notation and formalisms in which you
express your models
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Unified Modeling Language
Introduction
Class diagrams
Use cases
Interaction diagrams
Package and deployment diagrams
State and activity diagrams
Discussion
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
The Unified Modeling Language
(UML) resulted from a joint effort of
leading experts in object-oriented
analysis and design, Grady Booch,
Jim Rumbaugh and Ivar Jacobson,
also known as the three amigos, all
currently employees of Rational.
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Unified Modeling Language
UML
•
•
•
•
•
class diagrams -- conceptual structure
use cases -- functional requirements
interaction diagrams -- operational characteristics
package and deployment diagrams -- implementation
state and activity diagrams -- dynamic behavior
See http://www.rational.com/uml and UML Distilled, [Fowler97].
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Class diagrams
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Use cases
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Interaction diagrams
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Package and component diagrams
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
State and activity diagrams
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Event annotations
event(arguments)[conditions]/action
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Discussion
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
The UML toolbox is very rich. It
allows you to model every
conceivable aspect of the system.
Nevertheless, to my mind, graphical
models are not always appropriate.
But, on the other hand, most people
like them and they often make a
good impression, suggesting clarity
...
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Examples
- interactive drawing tool
- the reactor pattern (events)
- business process modeling
- the observer pattern
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Interactive drawing tool
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Reactor (event-handling) pattern
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Reactor - Interaction diagram (events)
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Business process modeling
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
(simulation) event state transition diagram
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Observer Pattern
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Basic OO Technology
Technology determines the effectiveness of the approach
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Concepts
•
•
•
•
Encapsulation
Data hiding
Inheritance
Polymorphism
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Encapsulation
•
•
•
•
An object contains data and methods
It provides a boundary:
to the world outside
to its ‘children’
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Information hiding
•
•
•
•
Reduces complexity
Allows you to defer implementations
Remember: Ignorance is bliss
Helps in decoupling components
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Inheritance
•
•
•
•
A mechanism for code-sharing
Supports incremental development
Organize by classification
Allows for abstract interfaces
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Polymorphism
•
•
•
•
•
An object may have multiple types
An abstract type: when it is used
A concrete type: when it is created
An object’s type is determined by its behavior
An object’s type is determined by the messages it allows
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Design by Contract
• formal basis -- pre and post conditions
• refinement -- by inheritance or polymorphism
• runtime checks -- division of responsibility
see Ch. 3, Contracts
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Design by Contract
Abstract Data Types
ADT = state + behavior
Object-Oriented Modeling
data oriented
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Responsibilities
what rather than how
to specify behavior
Client
client/server model
makes request to perform a service
Server
provides service upon request
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
object = information + responsibilities
Contracts
a set of services
Behavioral refinement
improving contracts
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Conformance --
behavioral refinement
if B refines A then B may be
used wherever A is allowed
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Attributes
more information
refine
Services
better services
Contracts
more and better services
A better service
fewer restrictions for the client
more obligations for the server
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Object-Oriented Modeling
prototyping, specification, refinement, interactions
OOP = Contracts + Refinements
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Idioms and Patterns
•
•
•
•
polymorphism -- inheritance and delegation
idioms -- realizing concrete types
patterns -- a catalogue of design patterns
events -- the reactor pattern
Additional keywords and phrases:
generic types, assertions, canonical
classes, event-driven computation
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
A catalogue of design patterns
Subsections:
Creational Patterns
Structural Patterns
Behavioral Patterns
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
A Catalogue of Design Patterns
•
•
•
•
a common design vocabulary
documentation and learning aid
an adjunct to existing methods
a target for redesign
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
The Pattern Schema
Name - handle
increases design vocabulary
Problem - when to apply
explains the problem and the conflict
Solution - general arrangement
design, responsibilities, collaborations
Consequences - tradeoffs
to understand the costs and benefits
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
design for change
Causes for Redesign
• creating an object by specifying a class explicitly -- Abstract Factory,
Factory Method, Prototype
• dependence on specific operations -- Chain of Responsibilty, Command
• dependence on hardware & software platforms -- Abstract Factory, Bridge
• dependence on object implementation or representation --Abstract Factory,
Bridge, Memento, Proxy
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
• algorithm dependence -- Iterator, Strategy, Template Method, Visitor
• extending functionality by subclassing -- Bridge, Composite, Decorator,
Observer
• tight coupling -- Abstract Factory, Bridge, Chain of Responsibilities,
Command, Facade, Mediator, Observer
• inability to alter classes conveniently -- Adaptor, Decorator,
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Creational Patterns
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Creational Patterns
•
•
•
•
Factory -- hide concrete classes
Factory Method -- virtual constructors
Prototype -- dynamic creation by cloning
Singleton -- one instance only
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Structural Patterns
object and class composition
Pattern
Composite
Flyweight
Adaptor
Bridge
Decorator
Facade
Proxy
Postacademische Cursus Informatie Technologie
Alias
Remarks
part/whole
collections of components
part/whole*
extrinsic state, many objects
wrapper
resolves inconsistencies
handle/body abstraction to implementation
wrapper
to introduce functionality
wrapper*
provides unified interface
surrogate
to defer ... remote, virtual,
protection
vrije Universiteit
amsterdam
Behavioral Patterns
cooperation
algorithms and the assignment of responsibilities between objects
class
Template Method -- the skeleton of an algorithm
Interpreter -- to evaluate expressions
object
composition
Mediator -- provides indirection
Chain of Responsibility -- connect objects to interact
Observer -- to handle dependencies
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Encapsulating behavior
•
•
•
•
•
objectify!
Command -- action + undo
Strategy -- choice of algorithms
Visitor -- decouple traversal and operations
Iterator -- access and traversal
State -- object state -> behavioral change
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
The Observer Pattern
Observer
one-to-many dependencies and
notification
Consequences
abstract coupling between subject
and observer
constraint propagation
deals with unexpected updates
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Component Technology
•
•
•
•
•
objects versus components -- definitions
interoperability
requirements for distribution
a simple workgroup application
extending hush with CORBA
Additional keywords and phrases:
(D)COM, Java, CORBA, OLE, persistent objects, ODMG,
workgroup
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Objects versus components
Subsections:
Definitions
The technology matrix
Component myths
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Definitions
Component
substitutability
unit of independent deployment
unit of third party composition
no persistent state
Object
identity
unit of instantiation
(persistent) state
encapsulation of state and behavior
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
A software component is a unit of
composition with contractually
specified interfaces and explicit
context dependencies only. A
software component can be
deployed independently and is
subject to composition by third
parties.
Szyperski
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
The technology matrix
distribution mobility language platform reflection
COM
*
+/DCOM
+
*
+/+/CORBA
+
*
*
+/Java/Beans
classes
Java
*
+
Java/RMI
+
classes
Java
*
+
Voyager
+
objects
Java
*
+
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Components:
Myths
and
Reality
component-ware allows for combining components
if semantical issues can be resolved
component-ware simplifies software distribution and maintenance
development becomes more complex
component-ware support mega applications
it affects performance significantly
component-ware is a revolution
wrong, it is an evolution from OO and C/S
Postacademische Cursus Informatie Technologie
unknown source
vrije Universiteit
amsterdam
Component Questions
• How to describe the interaction between components?
• How to manage variety and flexibility?
• How to guarantee critical system-wide properties?
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Software architecture
•
•
•
•
•
•
architecture -- components and boundaries
case study -- a framework for multimedia feature detection
native objects -- the language boundary
embedded logic -- the paradigm boundary
architectural styles -- distributed object technology
cross-platform development -- Unix versus Windows
Additional keywords and phrases:
components, information architecture, multimedia information retrieval, feature detection, portability
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Elements of Architecture
[Wolf]
• processing elements -- transformation on data
• data elements -- contain information
• connections -- glue that holds elements together
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Models and Views
[Kruchten95]
•
•
•
•
•
logical -- functional requirements
process -- performance, availability, distribution
physical -- scalability, configuration
development -- organization of software modules
scenarios -- instances of use cases
Definitions
http://www.sei.cmu.edu/architecture/definitions.html
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
The software architecture of a
program or computing system is the
structure of the system, which
comprises software components, the
externally visible properties of those
components, and their
interrelationships.
Bass et al.
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Technological infrastructure
[CS2001]
•
•
•
•
•
•
•
client-platform -- hardware, OS
presentation services -- windows, multimedia
application software -- code, business logic
network -- communication support
middleware -- distribution, (object) brokers
server platform -- hardware, OS
database -- data management system
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Distributed Object Patterns
[CorbaPatterns]
Framework
(class hierarchies)
Applications
(wrappers)
System
Enterprise
(horizontal, vertical, metadata)
(reference models, infrastructure, policies)
Intra/Internet
Postacademische Cursus Informatie Technologie
(standards)
vrije Universiteit
amsterdam
Conclusions
• OO offers
–
–
–
–
a valid metaphor for SE
powerful technology
maturing design methods and notations
a rich set of patterns
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Yet beware of
•
•
•
•
the learning curve
simplified hype
cutting edge technology
(over) ambitious projects
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Assignments:
• Write a paper about one of the following topics. The paper may discuss
concepts or focus on a case study.
– The Unified Modelling Language -- UML
– Frameworks -- for example San Francisco
• Write a comparative study of object-oriented analysis and design methods,
focussing on aspects of project management.
• Describe a case study concerning the deployment of design patterns.
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Course material
• Chapter 1
• Additional material
– Ch 3: Design by Contract
– Ch 11: Methods and Tools
– Object Tutorials
• Resources
– http://www.rational.com -- Rational Rose, UML
– http://www.ibm.com/java/sanfrancisco -- IBM Java San Francisco Framework
• Papers and Reports
– http://www.rational.com/uml/html/summary -- UML Summary
– http://www.ibm.com/Java/Sanfrancisco/prd_summary.html -- San Francisco Technical Summary
Postacademische Cursus Informatie Technologie
vrije Universiteit
amsterdam
Download