TOOLS Europe ‘99 Tutorial Unleashing the Power of Distributed Enterprise Information Systems Trygve Reenskaug, Lasse Bjerde Numerica Taskon Oslo Legal Notice This presentation is copyright ©1998 Trygve Reenskaug, Lasse Bjerde Oslo, Norway. All rights reserved. Unauthorized reproduction prohibited. TOOLS '99 ©1999 Trygve Reenskaug, Lasse The Connected Enterprise Content and Communication Digital Map Census Data Police Records Police Dispatcher TOOLS '99 ©1999 Trygve Reenskaug, Lasse House Drawings Aerial Photos Advantages Communication-Centered paradigm • Unlimited Scaling • Distributed Information Ownership • Support people’s Tasks • Flexible Consistency Requirements TOOLS '99 ©1999 Trygve Reenskaug, Lasse The Real Challenges The Connected Organization Effective, Enjoyable and Instructive Tools TOOLS '99 ©1999 Trygve Reenskaug, Lasse Effective Partitioning of Information Services Exercise Assuming that a great variety of information services are available: List users who will benefit from using this new technology in performing their tasks. TOOLS '99 ©1999 Trygve Reenskaug, Lasse The Short-Term Problems GUI Java Beans Business Logic Enterprise Java Beans Database Multithreading/Transactions/Security/… Enterprise Java Beans Middleware (distribution) Java Remote Method Invocation TOOLS '99 ©1999 Trygve Reenskaug, Lasse Tutorial plan • Introduction: The connected enterprise • The powerful communication paradigm • Divide and conquer. Separation of concern with role models, responsibilities, and interfaces • The Lego idea. Constructing software with components • Summary. How do we get from here to there? TOOLS '99 ©1999 Trygve Reenskaug, Lasse Tutorial plan • Introduction: The connected enterprise • The powerful communication paradigm ¤ The new paradigm ¤ An Applet built with Java Beans ¤ Remote Method Invocation (RMI) • Divide and conquer. Separation of concern with role models, responsibilities, and interfaces • The Lego idea. Constructing software with components • Summary. How do we get from here to there? TOOLS '99 ©1999 Trygve Reenskaug, Lasse CPU-Centered paradigm Output Input Central Processing Unit FORTRAN Algol 60 Tape Hardware TOOLS '99 Software ©1999 Trygve Reenskaug, Lasse Storage-Centered paradigm Input App.1 Output Shared database Central Processing Unit Memory App.3 Tape App.4 DB Schema language e.g. Entity-Relation e.g. NIAM Disk Hardware TOOLS '99 App.2 ©1999 Trygve Reenskaug, Lasse Software Communication-Centered Output Tape Central Processing Unit Disk Object 3 Object 2 Object 4 Memory Hardware TOOLS '99 Object 1 Information Bus Input Communication Bus paradigm Composition tools. Languages ???? ©1999 Trygve Reenskaug, Lasse Software The communication age is based on objects Object-B IN IN OUT-B OUT-C OUT-C Methods Variables Object-C Methods Variables IN Object-A Message (operation) triggers method causes response TOOLS '99 ©1999 Trygve Reenskaug, Lasse Methods Variables Tutorial plan • Introduction: The connected enterprise • The powerful communication paradigm ¤ The new paradigm ¤ An Applet built with Java Beans ¤ Remote Method Invocation (RMI) • Divide and conquer. Separation of concern with role models, responsibilities, and interfaces • The Lego idea. Constructing software with components • Summary. How do we get from here to there? TOOLS '99 ©1999 Trygve Reenskaug, Lasse App. for booking meeting rooms A demo of our illustrative example TOOLS '99 ©1999 Trygve Reenskaug, Lasse The Objects and Interfaces of the simple Applet solution WEB Browser Applet e.g., init(); paint(Graphics); AppletContext e.g., getImage(URL) RoomBooker e.g., getRooms(); reserve(...); BookingApplet (end user tool) Booking (business logic) JComboBox e.g., addItem(...); getSelectedItem(); Room Chooser ActionListener e.g., actionPerformed(ActionEvent) Java Beans TOOLS '99 ©1999 Trygve Reenskaug, Lasse RoomBooker interface package EJBWorkshop.Booking; import javax.ejb.*; import java.util.*; public interface RoomBroker { public void reserve (String room, String username, Date date ( , short startIntervalNo, short length); ); public void release (String room, String username, Date date ( , short startIntervalNo, short length); ); public Vector getReservations ( (Date theDate, String room); ); } public Vector getRooms(); TOOLS '99 ©1999 Trygve Reenskaug, Lasse The Communication Paradigm with objects WEB Browser Code is invisible! The object + has responsibility + knows its collaborators + is robust Nobody knows everything! BookingApplet (end user tool) Room Chooser Booking (business logic) Objects References Interfaces are visible! Java Beans TOOLS '99 ©1999 Trygve Reenskaug, Lasse Tutorial plan • Introduction: The connected enterprise • The powerful communication paradigm ¤ The new paradigm ¤ An Applet built with Java Beans ¤ Remote Method Invocation (RMI) • Divide and conquer. Separation of concern with role models, responsibilities, and interfaces • The Lego idea. Constructing software with components • Summary. How do we get from here to there? TOOLS '99 ©1999 Trygve Reenskaug, Lasse Java RMI Remote Method Invocation BookingApplet (end user tool) Room Chooser Client Information Bus WEB Browser • Move from centralized to distributed control • Move from closed to open systems • Catch new exceptions Booking (business logic) Server Java Beans TOOLS '99 ©1999 Trygve Reenskaug, Lasse RoomBooker interface package EJBWorkshop.Booking; import javax.ejb.*; import java.rmi.*; import java.util.*; public interface RoomBooker extends Remote { public void reserve (String room, String username, Date date ( , short startIntervalNo, short length) ) throws RemoteException; public void release (String room, String username, Date date ( , short startIntervalNo, short length) ) throws RemoteException; public Vector getReservations ( (Date theDate, String room ) throws RemoteException; } public Vector getRooms( throws RemoteException; TOOLS '99 ©1999 Trygve Reenskaug, Lasse Critical Code Fragments Server Side public class BookingServer extends UnicastRemoteObject implements RoomBooker{ public static void main (String args[]) throws RemoteException { System.setSecurityManager(new RMISecurityManager()); try { Booking serv = new BookingServer(); Naming.rebind(”BookingServer", serv); } catch (Exception e) { System.out.println("Server error: " + e.getMessage()); e.printStackTrace(); } System.out.println("Server started."); } TOOLS '99 ©1999 Trygve Reenskaug, Lasse Critical Code Fragments Client Side public class BookingApplet extends JApplet { private RoomBooker serv; … private RoomBooker server() { if (serv == null) { try { serv = (RoomBooker) Naming.lookup ( "//” + this.getCodeBase().getHost() + "/BookingServer” ); } catch (Exception e) { System.out.println(”Get_Server_err: " + e.getMessage()); e.printStackTrace(); return; } } return serv; } TOOLS '99 ©1999 Trygve Reenskaug, Lasse RMI middleware (1 second can grow to 3 hours!!) Booking Stub (a proxy) The Booking object Information Bus The BookingApplet object Booking Skeleton (a proxy) Java RMI Services (or CORBA or COM) TCP/IP - Guaranteed end-to-end data stream Physical communication (ISDN/Ethernet/….) Client TOOLS '99 ©1999 Trygve Reenskaug, Lasse Server What we have learned • Shared server containing business logic and information • Middleware takes care of communication details • User interface adapted to task Many-to-many relationship between clients and servers TOOLS '99 ©1999 Trygve Reenskaug, Lasse Tutorial plan • Introduction • The powerful communication paradigm • Separation of concern with role models, responsibilities, and interfaces • Constructing software with components • Conclusion. How do we get from here to there? TOOLS '99 ©1999 Trygve Reenskaug, Lasse Tutorial plan • Introduction • The powerful communication paradigm • Separation of concern with role models, responsibilities, and interfaces – Role-modeling – Synthesis • Constructing software with components • Conclusion. How do we get from here to there? TOOLS '99 ©1999 Trygve Reenskaug, Lasse OOram Method overview Processes Deliverables Concepts/ Notationand / techniques Technology Reuse Organizing People Concepts/ Notation / techniques Reuse Valuechain Object-oriented system A system that consists of several objects who knows other objects, and “talks” to each other through message passing. Such a system could be the Internet, organisations, and programs. The Object Model Abstraction Mental model System aRealWorldPhenomena Manifest Model • • • • A model is created for a purpose A model is never complete We think in multiple models The world is rarely hierarchical TOOLS '99 ©1999 Trygve Reenskaug, Lasse Objects “To my taste the main characteristic of intelligent thinking is that one is willing and able to study in depth an aspect of one's subject matter in isolation, for the sake of its own consistency, all the time knowing that one is occupying oneself with only one of the aspects. ... - Dijkstra, A discipline of programming, 1976 last chapter, In retrospect TOOLS '99 ©1999 Trygve Reenskaug, Lasse … Such separation, even if not perfectly possible, is yet the only available technique for effective ordering of one's thoughts that I know of. ... - Dijkstra, A discipline of programming, 1976 last chapter, In retrospect TOOLS '99 ©1999 Trygve Reenskaug, Lasse … I usually refer to it as ‘separation of concerns’, because one tries to deal with the difficulties, the obligations, the desires, and the constraints one by one. ... - Dijkstra, A discipline of programming, 1976 last chapter, In retrospect TOOLS '99 ©1999 Trygve Reenskaug, Lasse Roles - Objects • Role is what an object does in a context of other objects • Instead of trying to describe everything an object can do, we start with the roles an object can play • At a later stage we merge these roles together into full-fledged objects TOOLS '99 ©1999 Trygve Reenskaug, Lasse Divide and conquer Synthesis Separation of concern Goal Implementation model Use Cases Collaborations (Role models) TOOLS '99 ©1999 Trygve Reenskaug, Lasse Role models aRealWorldGoal anObjectModel RoleModels anImplementedSystem • Models a structure of collaborating objects with static and dynamic properties. • Covers a particular area of concern for the structure of objects. • Each role has a responsibility (attributes and actions) in the structure of objects. TOOLS '99 ©1999 Trygve Reenskaug, Lasse OOram Analysis steps • Determine the area of concern TOOLS '99 ©1999 Trygve Reenskaug, Lasse Determine the area of concern Write a free form (prose) description of the issue under consideration The area of concern is the communication between the Person in need of a meeting room and the RoomBooker in our organization. We focus on the actual bookings, and do not model details about other aspects, such as meeting agenda, transactions, updating etc. TOOLS '99 ©1999 Trygve Reenskaug, Lasse OOram Analysis steps • Determine the area of concern • Understand the problem and identify the nature of the objects TOOLS '99 ©1999 Trygve Reenskaug, Lasse Understand the problem and identify the nature of the objects Identify the user community and understand their requirements. Identify the nature of the active participants. Ruth (President) Adam (Chief Accountant) Eve (Software manager) Beth (Technical author) Joyce (Secretary) Ruth (Programmer) TOOLS '99 ©1999 Trygve Reenskaug, Lasse Pete (Marketing manager) Joyce (Sales) Ann (Secretary) OOram Analysis steps • Determine the area of concern • Understand the problem and identify the nature of the objects • Determine environment roles and stimulus / response TOOLS '99 ©1999 Trygve Reenskaug, Lasse Determine environment roles and stimulus/response Describe the messages that are sent from the environment. Also describe the response; The overall effect of the system. Stimuli System Response Stimulus message Response message Comments Project Review Meeting room reserved The Project Manager is having a meeting and the Booker reserves the room TOOLS '99 ©1999 Trygve Reenskaug, Lasse OOram Analysis steps • Determine the area of concern • Understand the problem and identify the nature of the objects • Determine environment roles and stimulus / response • Identify and understand the roles TOOLS '99 ©1999 Trygve Reenskaug, Lasse Identify and understand the roles Separate and idealize the tasks and responsibility of the actors. Ruth (President) Adam (Chief Accountant) 1 Eve (Software manager) Beth (Technical author) 2 Joyce (Secretary) Pete (Marketing manager) Joyce (Sales) Ruth (Programmer) 3 Role Explanation Project Reviewer Project Manager Booker The person who is supervising a project The person who is setting up a meeting The person who books a meeting room TOOLS '99 ©1999 Trygve Reenskaug, Lasse Ann (Secretary) OOram Analysis steps • Determine the area of concern • Understand the problem and identify the nature of the objects • Determine environment roles and stimulus / response • Identify and understand the roles • Determine the message sequences TOOLS '99 ©1999 Trygve Reenskaug, Lasse Determine the message sequences For the stimuli and responses create a model showing the message sequences and/or tasks performed , and the corresponding work process. Project reviewer Project Manager Booker Tool setUpMeeting Room Date checkaAvailability checkaAvailability TOOLS '99 ©1999 Trygve Reenskaug, Lasse Determine the message sequences Project reviewer Project Manager Project review Booker For the stimuli and responses create a model showing the message sequences and/or tasks performed , and the corresponding work process. Tool Project meeting setUpMeeting <Determine OK> Room Request checkaAvailability Room Date reserveRoom TOOLS '99 ©1999 Trygve Reenskaug, Lasse OOram Analysis steps • Determine the area of concern • Understand the problem and identify the nature of the objects • Determine environment roles and stimulus / response • Identify and understand the roles • Determine the message sequences • Determine the collaboration structure TOOLS '99 ©1999 Trygve Reenskaug, Lasse Determine the collaboration structure Show the roles in a structure of collaborating objects. Project reviewer Project Manager Booker Tool TOOLS '99 ©1999 Trygve Reenskaug, Lasse OOram Analysis steps • Determine the area of concern • Understand the problem and identify the nature of the objects • Determine environment roles and stimulus / response • Identify and understand the roles • Determine the message sequences • Determine the collaboration structure • Determine the interfaces TOOLS '99 ©1999 Trygve Reenskaug, Lasse Determine the interfaces Determine the messages that each role may send to each of its collaborators. Project reviewer > Project Manager setUpMeeting Project reviewer Project Manager Booker > Tool checkaAvailability Project Manager > Booker checkaAvailability Booker Tool TOOLS '99 ©1999 Trygve Reenskaug, Lasse DEMO TOOLS '99 ©1999 Trygve Reenskaug, Lasse Tutorial plan • Introduction • The powerful communication paradigm • Separation of concern with role models, responsibilities, and interfaces – Role-modeling – Synthesis • Constructing software with components • Conclusion. How do we get from here to there? TOOLS '99 ©1999 Trygve Reenskaug, Lasse Synthesis • Describe other phenomena the objects is to be found, and then merge them together into complete descriptions • One or more of the earlier discovered objects will also be found in other relevant phenomena TOOLS '99 ©1999 Trygve Reenskaug, Lasse Objects play several roles ProjectManager ProjectManager ProjectParticipant ProjectParticipant Lasse TOOLS '99 ©1999 Trygve Reenskaug, Lasse Synthesis of roles message m1 a1 message m3 method M3 method M1 message m2 message m4 a1 a2 message m1 message m3 method M1 message m2 message m4 TOOLS '99 a2 ©1999 Trygve Reenskaug, Lasse Synthesis of UserBooking and DistributedBooking EnterpriseBooking Project reviewer Project Manager Booker Tool ComputerBooking BookingTool RoomBooker CompositeBooking Project reviewer TOOLS '99 Project Manager Booker ©1999 Trygve Reenskaug, Lasse BookingTool RoomBooker DEMO TOOLS '99 ©1999 Trygve Reenskaug, Lasse Tutorial plan • Introduction: The connected enterprise • The powerful communication paradigm • Divide and conquer. Separation of concern with role models, responsibilities, and interfaces • The Lego idea. Constructing software with components • Summary: How do we get from here to there? TOOLS '99 ©1999 Trygve Reenskaug, Lasse Tutorial plan • Introduction • The powerful communication paradigm • Separation of concern with role models, responsibilities, and interfaces • The Lego idea. Constructing software with components ¤ The component - a powerful application of objects ¤ Java Beans ¤ Enterprise Java Beans (EJBs) ¤ Organizing development with components • Summary. How do we get from here to there? TOOLS '99 ©1999 Trygve Reenskaug, Lasse What is a Component? • A Component is a (reusable) object • A Component is an object playing standardized roles within a container • A component does not know its clients • A component is reused by cloning • Tools are used to compose systems TOOLS '99 ©1999 Trygve Reenskaug, Lasse Why use components Use components to • Avoid coding to save time • Avoid coding to increase quality • Use tools to increase your productivity • Get remote communication, transactions, security, etc. for free TOOLS '99 ©1999 Trygve Reenskaug, Lasse The competing technologies CORBA™ Object Management Group (OMG) Public standards Java™ SUN Microsystems Build once, run anywhere COM™ Microsoft Dominating on desktops TOOLS '99 ©1999 Trygve Reenskaug, Lasse Java Bean • User Interface • Properties • Events • Composition Information Bus Component standardization examples Enterprise Java Bean • Naming • Persistence • Transactions • Security • Load sharing Client TOOLS '99 ©1999 Trygve Reenskaug, Lasse Server Tutorial plan • Introduction • The powerful communication paradigm • Separation of concern with role models, responsibilities, and interfaces • The Lego idea. Constructing software with components ¤ The component - a powerful application of objects ¤ Java Beans ¤ Enterprise Java Beans (EJBs) ¤ Organizing development with components • Summary. How do we get from here to there? TOOLS '99 ©1999 Trygve Reenskaug, Lasse Java Beans characteristics Introspection a Java Bean Events Messages Properties TOOLS '99 ©1999 Trygve Reenskaug, Lasse GUI by composition Java Beans and SUN BeanBox ® TOOLS '99 ©1999 Trygve Reenskaug, Lasse Compose GUI with Java Beans and Symantech Visual Café ® TOOLS '99 ©1999 Trygve Reenskaug, Lasse Compose GUI with Java Beans and IBM VisualAge® TOOLS '99 ©1999 Trygve Reenskaug, Lasse Bean object plays several roles Composer Use Case Run-time display Use Case BeanBox Booking Applet Bean Object TOOLS '99 ©1999 Trygve Reenskaug, Lasse Two stages in the Bean Life Cycle Property Editor Bean Canvas Assembler Tool Assembler Collaboration (Sketch) Release Button TOOLS '99 Master Bean Runtime Collaboration Calendar Reserve Button Bean Palette Booking Applet Room Chooser ©1999 Trygve Reenskaug, Lasse Booking Tutorial plan • Introduction • The powerful communication paradigm • Separation of concern with role models, responsibilities, and interfaces • The Lego idea. Constructing software with components ¤ The component - a powerful application of objects ¤ Java Beans ¤Enterprise Java Beans (EJBs) ¤ Organizing development with components • Summary. How do we get from here to there? TOOLS '99 ©1999 Trygve Reenskaug, Lasse Enterprise Java Bean (EJB) Overview Client Container: Multithreading Transactions Security Persistence TOOLS '99 EJB EJB: Simple Single user Container ©1999 Trygve Reenskaug, Lasse EJB Server The Bean and Enterprise Java Bean objects WEB Browser Information Bus Applet (End user tool) Name Server Booking Home Booking Object 4: getRooms(); Room Chooser Booking Bean 5: getRooms(); Java Beans TOOLS '99 Factory object ©1999 Trygve Reenskaug, Lasse The Bean and Enterprise Java Bean objects WEB Browser Room Chooser Java Beans TOOLS '99 Information Bus Applet (End user tool) Name Server Booking Home Factory object Could be Entity Bean Booking Object Booking Bean Session Bean Powerful tools Clear abstractions ©1999 Trygve Reenskaug, Lasse DataStore RoomBooker (business) interface package EJBWorkshop.Booking; import javax.ejb.*; import java.rmi.*; import java.util.*; public interface Booking extends EJBObject { public void reserve (String room, String username, Date date , short startIntervalNo, short length) throws RemoteException; public void release (String room, String username, Date date , short startIntervalNo, short length) throws RemoteException; public Vector getReservations (Date theDate, String room ) throws RemoteException; } public Vector getRooms( throws RemoteException; TOOLS '99 ©1999 Trygve Reenskaug, Lasse RoomBookerHome (factory) interface package EJBWorkshop.Booking; import javax.ejb.*; import java.rmi.*; public interface BookingHome extends EJBHome { Booking create() throws CreateException, RemoteException; } } TOOLS '99 ©1999 Trygve Reenskaug, Lasse RoomBookerBean class public class RoomBookerBean implements SessionBean { protected SessionContext ctx; // Container managed beans public void setSessionContext(SessionContext ctx) throws RemoteException { this.ctx = ctx; } public void ejbCreate() throws CreateException, RemoteException { } public void ejbRemove() throws RemoteException { } // RoomBooker interface operations public void reserve {… } etc. } TOOLS '99 ©1999 Trygve Reenskaug, Lasse Exercise Assuming that it is straight forward to program, install and assemble business components: Identify useful and interesting business components and discuss their mutual dependencies TOOLS '99 ©1999 Trygve Reenskaug, Lasse Tutorial plan • Introduction • The powerful communication paradigm • Separation of concern with role models, responsibilities, and interfaces • The Lego idea. Constructing software with components ¤ The component - a powerful application of objects ¤ Java Beans ¤ Enterprise Java Beans (EJBs) ¤Organizing development with components • Conclusion. How do we get from here to there? TOOLS '99 ©1999 Trygve Reenskaug, Lasse OOram Method overview Organizing Processes and Deliverables Organizing People Technology Value chain Concepts/ Notation / techniques Organizing People Reuse Value chain TOOLS '99 ©1999 Trygve Reenskaug, Lasse Component Value Chain Distinguishing Responsibility Application Assembler Empower user Component Deployer Limit choice & make available Component Provider Create capability Component Container Provider Provide tools and service environment TOOLS '99 ©1999 Trygve Reenskaug, Lasse Component Value Chain Distinguishing Competence Application Assembler User expert Component Deployer Production Engineer Component Provider Domain expert Component Container Provider Systems programmer TOOLS '99 ©1999 Trygve Reenskaug, Lasse Component Value Chain Distinguishing Tools Application Assembler Visual programming & Java Component Deployer Component installation tool Component Provider UML Collaboration & Java & DB Design Component Container Provider Full UML & Java & C++ TOOLS '99 ©1999 Trygve Reenskaug, Lasse OOram Method overview Processes and Deliverables Processes and Deliverables Processes and Deliverables Technology Concepts/ Notation / techniques Organizing People Reuse Value chain TOOLS '99 ©1999 Trygve Reenskaug, Lasse How to provide new functionality Consider Use Cases Consider business Components Architecture (OOram analysis) Cost/Benefit analysis Study Develop GUI Components Construct TOOLS '99 Repeat Studies. Choose best solution Develop Business Components Assemble ©1999 Trygve Reenskaug, Lasse Tutorial plan • Introduction: The connected enterprise • The powerful communication paradigm • Divide and conquer. Separation of concern with role models, responsibilities, and interfaces • The Lego idea. Constructing software with components • Summary. How do we get from here to there? TOOLS '99 ©1999 Trygve Reenskaug, Lasse Distributed Systems What you get •Unlimited scaling •Distributed ownership •Information partitioning •Specific task support TOOLS '99 ©1999 Trygve Reenskaug, Lasse Distributed Systems How you do it • Think in terms of objects, their responsibilities and collaboration. • Think in terms of open systems, no main program. TOOLS '99 ©1999 Trygve Reenskaug, Lasse Component-based development What you get • Build by composing library objects, avoid coding. • Leverage infrastructure mechanisms (transactions, security, persistence,…) TOOLS '99 ©1999 Trygve Reenskaug, Lasse Component-based development How you do it • Think in terms of objects, their responsibilities and collaboration. • Penetrate vendor fog - find essentials (Objects and interfaces) • Adapt to new layers in value chain TOOLS '99 ©1999 Trygve Reenskaug, Lasse The main problems We spend too much time and effort on low-level mechanics. Current offerings are NOT: • Easy and intuitive to use • Smooth development platforms • Reliable • Secure • Extensible TOOLS '99 ©1999 Trygve Reenskaug, Lasse How do we get from here to there? • Focus on objects Classes are implementation details • Learn technology Java + CORBA + Web + ... • Do small, but significant project Illustrating visions • Plan large scale introduction What are the information services? What are the Areas of Concern? TOOLS '99 ©1999 Trygve Reenskaug, Lasse Distributed systems Go home and do it! http://www.ifi.uio.no/~trygve TOOLS '99 ©1999 Trygve Reenskaug, Lasse