Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

Similar presentations


Presentation on theme: "Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 1 Advanced Topics in Object Technology Bertrand Meyer."— Presentation transcript:

1 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 1 Advanced Topics in Object Technology Bertrand Meyer

2 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 2 Lecture 25: Concurrent O-O principles

3 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 3 The goal  Provide a practical and general foundation for concurrent and distributed programming, ensuring reliability, reusability availability and extendibility.

4 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 4 The issue  Everyone wants to benefit from concurrency and distribution  Physical (networks, multiprocessors)  Logical (processors, threads)  but applications remain extremely difficult to build, especially to build right.  SCOOP provides:  Generality  Ease of programming  Robustness (including liveness,...)  Availability  Extendibility, reusability

5 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 5 Generality  Provide a simple, general, easy to use concurrency and distribution mechanism for programming concurrent applications:  Internet and Web programming.  Web services, peer-to-peer...  Client-server applications.  Distributed processing.  Multi-threading.  Multiple processes (Unix, Windows 95, Windows NT).

6 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 6 An example: Multithreading  Increasingly popular  Notoriously hard to get right; major mistakes remain in released applications; theoretical pitfalls  Impedance mismatch with O-O programming concepts  Synchronization often achieved by low-level mechanisms “Almaviva”name landlord loved_one O1 “Figaro” O2 “Susanna” O3

7 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 7 Concurrency and objects “I can’t understand why objects [of O-O languages] are not concurrent in the first place”. Robin Milner, 1991

8 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 8 Formulating the question  What is the simplest extension of object technology that will support all forms of concurrent computation — in an elegant, general and efficient way?

9 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 9 Basic O-O mechanism  Feature call (message passing): x.f (a)

10 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 10 Concurrent O-O should be easy! (But: it’s not!)  Analogies between objects/classes and processes/process-types:  General decentralized structure, independent modules.  Encapsulated behavior (a single cycle for a process; any number of routines for a class).  Local variables (attributes of a class, variables of a process or process type).  Persistent data, keeping its value between successive activations.

11 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 11 But the analogy breaks down quickly… ... and leaves room to apparent incompatibilities:  Classes are repositories of services; it is fundamental that they should be able to support more than one.  How will processes serve each other’s requests?  The "inheritance anomaly"

12 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 12 Capturing common behaviors deferred class PROCESS feature live is -- General structure with variants. do from setup until over loop step end finalize end feature {NONE} setup is deferred end over: BOOLEAN is deferred end step is deferred end finalize is deferred end end Why limit ourselves to just one behavior when we can have as many as we want?

13 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 13 A printer mechanism class PRINTER inherit PROCESS rename over as off_line, finalize as stop end feature stop is -- Go off-line. do off_line := True end step is -- Execute individual actions of an iteration step. do start_job process_job finish_job end

14 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 14 A printer mechanism (cont’d) feature {NONE} setup is do … end start_job is do … end process_job is do … end finish_job is do … end

15 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 15 Other possible features print_diagnostics prepare_for_maintenance restart_job

16 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 16 The basic triangle of computation  Computing consists of applying operations to objects; to do so requires the appropriate mechanisms – processors. ActionObject Processor

17 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 17 Separate entities  A call of the form x.f (a) has different semantics when handled by the same or different processors.  Need to declare whether client processor is the same as supplier processor or another. x: separate A  Contrast with the usual x: A  which guarantees handling by same processor.

18 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 18 Consistency rule  In assignment x := y  If the source y is separate, the target x must be separate too.  Same rule for argument passing.

19 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 19 Separate entities and classes b: separate BOUNDED_QUEUE [SOME_TYPE] or: separate class BOUNDED_BUFFER [G] inherit BOUNDED_QUEUE [G] end x: BOUNDED_BUFFER [SOME_TYPE]

20 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 20 Creation  If x is separate, then the creation instruction create x  grabs a new processor, physical or virtual, and assigns it to handle the object.  Also: it is possible to obtain a separate object as the result of a function. So processors can be allocated outside of Eiffel text proper.

21 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 21 Generality  “Separate” declaration does not specify the processor.  Semantic difference between sequential and concurrent computation narrowed down to difference for separate calls:  Precondition semantics  Argument passing semantics  Creation semantics.

22 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 22 Two-level architecture  General-purpose top layer (SCOOP).  Several architecture-specific variants at the bottom layer (SCOOP handles).  Initial handles:.NET remoting; POSIX threads; SCOOP HANDLE nHANDLE 1HANDLE 2

23 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 23 Two-level architecture SCOOP ….NETTHREADS

24 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 24 Predefined constructs and libraries  Define specific details (how many processors...) and scheduling policies through libraries.

25 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 25 Processor assignment  The assignment of actual physical resources to (virtual) processors) is entirely dynamic and external to the software text.  Simple notation: Concurrency Control File (CCF) creation proc1: sales.microsoft.com (2), coffees.whitehouse.gov (5),... proc2: 89.9.200.151 (1),...  Physical resources may be Internet nodes, threads, Unix or Windows processes, etc.

26 Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 26 End of lecture 25


Download ppt "Chair of Software Engineering ATOT - Lecture 25, 30 June 2003 1 Advanced Topics in Object Technology Bertrand Meyer."

Similar presentations


Ads by Google