Objektorientiertes Denken und das Finden von Objektmodellen

Werbung
Georg Heeg - Objektorientierte Systeme
Georg Heeg
Objektorientierte Systeme
Baroper Str. 337
D-44227 Dortmund
Germany
Tel: +49-231-97599-0
Fax: +49-231-97599-20
Email: [email protected]
http://www.heeg.de
Georg Heeg
Objektorientierte Systeme
Mühlenstr. 19
D-06366 Köthen
Germany
Tel: +49-3496-214 328
Fax: +49-3496-214 712
Georg Heeg AG
Objektorientierte Systeme
Riedtlistr. 8
CH-8006 Zürich
Switzerland
Tel: +41-1-356 3311
Fax: +41-1-356 3312
Java or Smalltalk?
Users Care More About
Getting the Right Functions
From Their IDE!
Georg Heeg - Object-Oriented Systems
Georg Heeg
May 22, 2000
Georg Heeg - Objektorientierte Systeme
Contents
•
•
•
•
•
•
Georg Heeg - The Company
Today’s Trend: Low Tech
Phenomenon: Java
Why Use Smalltalk?
Phenomenon: Smalltalk
Cincom Smalltalk and the Java
Phenomenon
• Object Modeling with Smalltalk and Java
• Evolving Software
Georg Heeg - Objektorientierte Systeme
About us...
• Founded 1987, headquarter in Dortmund,
since 1996 in Zurich, since 1999 in Köthen/Anhalt
• Consulting- and training company
in Smalltalk (and Java)
• Hotline support, maintenance, bug-fixes for VisualWorks
and Visual Smalltalk
• VM-Laboratory for VisualWorks
• Porting service of old VisualWorks Applications to 5i.1
• Technology-Partner of
Corporate Mission: Make Sophisticated Projects
a Success for the Customer!
Georg Heeg - Objektorientierte Systeme
VM-Laboratory for VisualWorks
• Since 1987 VM source code licensee of
Xerox PARC, ParcPlace Systems, ParcPlaceDigitalk, ObjectShare, Cincom
–
–
–
–
–
–
–
–
–
–
PCS-Cadmus (MUNIX)
Atari Mega ST
OS/2
Sinix Z
SNI RM 200 - 600 Reliant Unix
MIPS-ABI
SGI Irix
RS/6000 AIX Power2 and Power PC
Power-Mac
Compaq Tru64 Unix
Georg Heeg - Objektorientierte Systeme
Introduction
• We are looking at “Standard IT-Projects“
• The environment has a tremendous influence on
the project
–
–
–
–
–
Legacy systems
Installed data base systems
Network infrastructure
General IT-Culture of the enterprise
Integration into the work process
Georg Heeg - Objektorientierte Systeme
Trend
Low-Tech Project Requirements
• Steam Radio
– Which tube?
• Transistor Radio
– How many transistors?
• High Fidelity Radio
– Tuner technology (PLL), equipment
• Today
– Design, price, usability, (Digital-Radio)
Georg Heeg - Objektorientierte Systeme
Project
• The view from the outside counts!
• External view:
– Functionality from the user’s point of view
– Integration, interoperability
– Distribution, maintenance
• Internal view:
– Programming language
– Used Standards
– Tools
Georg Heeg - Objektorientierte Systeme
Phenomenon Java
Java is not perceived as technology
“Technology does not play any role any more,
today. It is only important that it is Java”
Georg Heeg - Objektorientierte Systeme
Phenomenon Java
Java has large influence on projects:
Requirements, Decisions, Expectations
The possibilities of Java determine the
requirements of projects
Georg Heeg - Objektorientierte Systeme
Java Technology
JTS, JDK 1.1.8, Java Servlet, JMS, JRE 1.2.2,
Java Media Framework, JDBC, Java IDL, JTA,
JDK 1.2.2, BDK, Java 2D, RMI-IIOP, JMAPI,
Java Mail, JRE 1.1.8, JDNI, Java Server Pages,
EJB, Java Help, COMM, Java Beans, Swing,
RMI, JDK 1.0.2, Hot Spot, JMX, JCE, Info Bus,
JSSE, JFC, Java 3D, JAF, JAAS
Today’s Java technologies including Standard Extension and Enterprise
Georg Heeg - Objektorientierte Systeme
Java Technology
• Which parts of the Java technology are
important for the external view of a project?
• All technologies, which influence following
external properties of a project:
– Integration, interoperability
– Distribution, maintenance
Georg Heeg - Objektorientierte Systeme
Java Technology
• Project Requirements determined by Java:
1. Web-Server Applications (Servlets)
2. Easy distribution (JAR)
3. Runs inside the Web-Browser
4. Write once, run everywhere
5. Interoperability
6. Database access (JDBC)
7. Distributed architectures (RMI, RMI-IIOP, Corba)
8. Application Server (EJB)
If it is true, that Java is so
dominant,
why use Smalltalk?
Georg Heeg - Objektorientierte Systeme
Reasons for Smalltalk
• Flexibility
–
–
–
–
Projects with open or unclear concepts
Need for prototyping
Incomplete specification and modeling
„Moving Targets“
• Cincom i-Business-Strategy
– Flexibility and speed distinguish between
success and failure
Georg Heeg - Objektorientierte Systeme
Fast Development
• Cincom Smalltalk provides the
most efficient system
for Object Oriented Modeling
• Experiences show
up to 20 times faster
development and
adaptation as
Java or C++
Georg Heeg - Objektorientierte Systeme
The Smalltalk Phenomenon
• End-users say:
– This software is exactly what I’ve always wanted
• Example (many others exist)
– Projection of German elections by Infratest Dimap
– Every election is a new project
– Preparation time sometimes 10 days, only
• (Computerwoche 40/99, pp. 71-72)
Georg Heeg - Objektorientierte Systeme
VisualWorks 5i.1
Georg Heeg - Objektorientierte Systeme
1. Web-Applications
•
•
•
•
•
•
VisualWave
Mature Web Application server
Load distribution
Automatic HTML generation
Session management
Server monitoring
All possibilities of a VisualWorks Application
Georg Heeg - Objektorientierte Systeme
2. Easy Distribution (JAR)
• Parcels provide the same services
–
–
–
–
transport of classes, methods, static variables
dependencies between Parcels
automatic load of missing Parcels
versioning
• Parcels provide more than JAR
– pre- and post-actions during load
– dynamic load and unload any time
– with/without Source
Georg Heeg - Objektorientierte Systeme
3. Runs inside the Web-Browser
VisualWorks PlugIn
sends
shows
•Plugin
–VM
–Plugin-Image
loads
•Web-Server
–HTML page
–Parcel
Georg Heeg - Objektorientierte Systeme
3. Runs inside the Web-Browser
<EMBED
NAME="VisualWorks Calculator"
SRC="Calculator.pcl"
WIDTH="233" HEIGHT="245"
ALIGN="BOTTOM"
TYPE="application/x-visualworks-parcel"
VWOPEN="CalculatorExample"
PLUGINSPAGE="vwplugin-install.html">
Georg Heeg - Objektorientierte Systeme
4. Write once, run everywhere
• Binary compatibility since 1982 (ST80)
• Abstraction from platform specifics
– file system
– operating system calls
– user interface
• selectable Look&Feel since VisualWorks 1.0 (1991)
Georg Heeg - Objektorientierte Systeme
4. Write once, run everywhere
• VisualWorks 5i.1 VMs are available for
–
–
–
–
–
–
–
–
Win 95/98/NT/2000
Apple Macintosh
Solaris
HP-UX
AIX
Tru64 UNIX
SGI
Linux 86
Georg Heeg - Objektorientierte Systeme
5. Interoperability/Integration
• DLL&C-Connect for all platforms
– Prerequisite for COMConnect
– Used in DatabaseConnect
• COMConnect for Windows platforms
– COM Client
– COM Server
– e.g. SAP-Connect, RoseLink
• XML support
– Help system, source code
Georg Heeg - Objektorientierte Systeme
6. Database access (JDBC)
• Connections to
–
–
–
–
Oracle
Sybase
SQL Server
ODBC
• Low-level interfaces like JDBC
• High-level object relational mapper
– Gemstone/S
Georg Heeg - Objektorientierte Systeme
7. Distributed Architectures
DST (Distributed Smalltalk)
• First Corba ORB (Developed by HP)
Georg Heeg - Objektorientierte Systeme
8. Application Server (EJB)
• Opentalk
– currently in beta
– Frameworks for protocols
• Gemstone/S  EJB with persistence
Georg Heeg - Objektorientierte Systeme
VisualWorks 5i
New in VisualWorks 5i
–
–
–
–
–
Name-Spaces
StORE
XML
Microsoft SQL-Server
Extended Parcels
Georg Heeg - Objektorientierte Systeme
Smalltalk and the "Software-Crisis"
Object Oriented Programming
4th, 5th Generation Lanuages
4GL, 5GL
CASE
Structured Programming
Normed Programming
Subroutines
Procedures
Georg Heeg - Objektorientierte Systeme
Change and the "Software-Crisis"
Cost(change) = changeFactor * size(change)
+ projectFactor * size(project)
In most software life cycles the projectFactor >> 0 and thus
the cost of a change is dominated by the project size,
not the size of the change.
Users don‘t understand this.
$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€
Georg Heeg - Objektorientierte Systeme
1. Imperative Software World
• Computer Oriented:
Von Neumann Computer:
CPU
+ Memory
=> Procedure
+ Data Structure
• Most programming languages have:
Statements
+ Declarations
• Analysis methods describe:
Information
+ Functions
Georg Heeg - Objektorientierte Systeme
2. Functional and Logical Software World
• Mathematics Oriented
• Declarative programming languages:
– Functional programming: Lisp, Miranda
– Logic programming: Prolog
– Set programming: SETL
• No Representation of Time
Dynamics are represented by tricks
Georg Heeg - Objektorientierte Systeme
3. Object Oriented Software World
• Who is Responsible?
• Oriented to Concepts of the Application
Domain
• Concepts are mapped directly into Software
• "Modeling instead of Programming"
Georg Heeg - Objektorientierte Systeme
Modeling in the Good Old Days
Patient
Form
1:1
Dentist
Phenoma
model
File
Person
Georg Heeg - Objektorientierte Systeme
Traditional Computer Modeling
States
Data structures
Processes
Procedures
“link“
Phenoma
Person
model
running
program
Georg Heeg - Objektorientierte Systeme
Object Oriented Modeling
Concept
Class
1:1
Viewpoint of
the Domain
Recognize,
Define
Phenomon
“The World“
Instance
model
Object
Georg Heeg - Objektorientierte Systeme
Object Oriented Modeling
• The viewpoint determines the modeling
• “The correct model” does not exist!
• For an Application there are only
– adequate models and
– not adequate models
Georg Heeg - Objektorientierte Systeme
What is this?
• Wooden body in the form of a cylinder with
approx. 20 cm (8 inch) height and 6 mm
(1/4 inch) in diameter.
• In the center of the cylinder are a drilling of
1 mm and this are filled with pressed
graphite.
• At end end the cylinder is conically tapered.
• The graphite can be transferred to other
bodies by rubbing.
Georg Heeg - Objektorientierte Systeme
What is this?
• Plastic tube in the form of a cylinder with
approx. 20 cm (8 inch) height and 6 mm (1/4
inch) in diameter.
• Inside is another plastic tube with 2 mm
(1/12 inch) in diameter and at the top there is
a metal ball.
• The inner tube is filled with a viscous liquid.
• The liquid can be transferred to other media
with the help of the ball.
Georg Heeg - Objektorientierte Systeme
What Does Little John Care About?
Georg Heeg - Objektorientierte Systeme
What Does Little John Care About?
DRAW
Georg Heeg - Objektorientierte Systeme
About Pencils and Ball Pens
• The object oriented (and Jonny’s) viewpoint:
– Pencil = something, you can write and draw with
– ball pen = something, you can write and draw with
Georg Heeg - Objektorientierte Systeme
Class Hierachy
Pen
draw
Pencil
BallPen
draw
draw
Georg Heeg - Objektorientierte Systeme
Jonny (Smalltalk)
Boy
hand
Somewhere in class Boy you can write:
hand := Mommy givePen.
...
hand draw
(Instance Variable)
Georg Heeg - Objektorientierte Systeme
Jonny (Java)
Boy
private pen hand;
Somewhere in class Boy you can write:
hand = Mommy.givePen();
...
hand.draw()
(Instance Variable)
Lets evolve the application,
what else does Jonny care about?
Georg Heeg - Objektorientierte Systeme
What Does Little John Care About?
Georg Heeg - Objektorientierte Systeme
What Does Little John Care About?
PULL
Georg Heeg - Objektorientierte Systeme
About Wagons
• The object oriented (and Jonny’s) viewpoint:
– Wagon = something, you can pull (and sit in)
Georg Heeg - Objektorientierte Systeme
Class Hierachy
Vehicle
sitIn
Wagon
Car
pull
makeNoise
Trabi
Van
makeNoise
stink
lookOut
Georg Heeg - Objektorientierte Systeme
Jonny (Smalltalk)
Boy
hand
Somewhere in class Boy you can write:
hand := Daddy getWagon.
...
hand pull
(Instance Variable)
Georg Heeg - Objektorientierte Systeme
Jonny (Java)
Boy
?
private object hand;
(Instance Variable)
Somewhere in class Boy you want to write:
hand = Daddy.giveWagon();
...
((Wagon)hand).pull()
?
Then you have to change the pen example (check all occurences of
hand):
?
((Pen)hand).draw()
Georg Heeg - Objektorientierte Systeme
Change and Java
Cost(change) = changeFactor * size(change)
+ projectFactor * size(project)
In Java the projectFactor >> 0 and thus
the cost of a change is dominated by the project size,
not the size of the change.
Users don‘t understand this.
$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€
Georg Heeg - Objektorientierte Systeme
Change and Smalltalk
Cost(change) = changeFactor * size(change)
+ projectFactor * size(project)
In Smalltalk the projectFactor = 0 and thus
the cost of a change is defined by the change size.
Users DO understand this.
$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€
Georg Heeg - Objektorientierte Systeme
What is Software?
• In Java
– Software is a program which is started
• In Smalltalk
– Software is a system which is modified
Georg Heeg - Objektorientierte Systeme
Evolving Software
Smalltalk
Java
Add the new feature
Add the new feature
-
Add new types
-
Check entire source code to
use the new types
Stop the application server
Load the parcel
-
Load the JAR file
Start the server
Georg Heeg - Objektorientierte Systeme
Proven Technology
• Cincom Smalltalk is used
–
–
–
–
–
–
–
–
–
24 hours 7 days a week 52 weeks a year
in banks
in the automitive industry
in insurance
in university administration
in internet services
in intranet applications
in more than 1,000 companies world wide
since more than 10 years
Georg Heeg - Objektorientierte Systeme
Conclusion
• Cincom Smalltalk
–
–
–
–
–
–
is faster in development than Java
is faster in adaptation than Java
fulfills the Java-Requirements
maps easily onto Customers’ thinking
enables evolving servers
is proven technology
Smalltalk is the superior
alternative to Java
Georg Heeg - Objektorientierte Systeme
You can reach me
Georg Heeg: [email protected]
http://www.heeg.de/~georg
Georg Heeg - Objektorientierte Systeme
Discussion
Georg Heeg - Objektorientierte Systeme
Georg Heeg
Objektorientierte Systeme
Baroper Str. 337
D-44227 Dortmund
Germany
Tel: +49-231-97599-0
Fax: +49-231-97599-20
Email: [email protected]
http://www.heeg.de
Georg Heeg
Objektorientierte Systeme
Mühlenstr. 19
D-06366 Köthen
Germany
Tel: +49-3496-214 328
Fax: +49-3496-214 712
Georg Heeg AG
Objektorientierte Systeme
Riedtlistr. 8
CH-8006 Zürich
Switzerland
Tel: +41-1-356 3311
Fax: +41-1-356 3312
Herunterladen