Pub Date : 1996-12-01DOI: 10.1002/(SICI)1096-9942(1996)2:3<161::AID-TAPO3>3.0.CO;2-Z
Randall B. Smith, D. Ungar
Abstract Most object-oriented languages are objective: an object always responds to the same message in the same way. Subjective objects more closely match naturally occurring systems, and they provide consistent solutions to a wide range of problems, problems that otherwise must be solved by varied and specialized mechanisms. Applying a perspective-receiver symmetry principle in designing the subjectivity semantics of an object-oriented language results in a semantically uncluttered language with a surprisingly wide range of utility. We employ this approach in creating the language Us, a subjective version of Self.
{"title":"A Simple and Unifying Approach to Subjective Objects","authors":"Randall B. Smith, D. Ungar","doi":"10.1002/(SICI)1096-9942(1996)2:3<161::AID-TAPO3>3.0.CO;2-Z","DOIUrl":"https://doi.org/10.1002/(SICI)1096-9942(1996)2:3<161::AID-TAPO3>3.0.CO;2-Z","url":null,"abstract":"Abstract Most object-oriented languages are objective: an object always responds to the same message in the same way. Subjective objects more closely match naturally occurring systems, and they provide consistent solutions to a wide range of problems, problems that otherwise must be solved by varied and specialized mechanisms. Applying a perspective-receiver symmetry principle in designing the subjectivity semantics of an object-oriented language results in a semantically uncluttered language with a surprisingly wide range of utility. We employ this approach in creating the language Us, a subjective version of Self.","PeriodicalId":293061,"journal":{"name":"Theory Pract. Object Syst.","volume":"18 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1996-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116673604","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1996-12-01DOI: 10.1002/(SICI)1096-9942(1996)2:3<143::AID-TAPO2>3.3.CO;2-S
B. B. Kristensen, K. Østerbye
{"title":"Roles: Conceptual Abstraction Theory and Practical Language Issues","authors":"B. B. Kristensen, K. Østerbye","doi":"10.1002/(SICI)1096-9942(1996)2:3<143::AID-TAPO2>3.3.CO;2-S","DOIUrl":"https://doi.org/10.1002/(SICI)1096-9942(1996)2:3<143::AID-TAPO2>3.3.CO;2-S","url":null,"abstract":"","PeriodicalId":293061,"journal":{"name":"Theory Pract. Object Syst.","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1996-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131405288","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1996-11-01DOI: 10.1002/(SICI)1096-9942(1996)2:1<3::AID-TAPO1>3.0.CO;2-#
D. Riehle, H. Züllighoven
Patterns have shown to be an effective means of capturing and communicating software design experience. However, there is more to patterns than software design patterns: We believe that patterns work for software development on several levels. In this paper we explore what we have come to understand as crucial aspects of the pattern concept, relate patterns to the different models built during software design, discuss pattern forms and how we think that patterns can form larger wholes like pattern handbooks.
{"title":"Understanding and Using Patterns in Software Development","authors":"D. Riehle, H. Züllighoven","doi":"10.1002/(SICI)1096-9942(1996)2:1<3::AID-TAPO1>3.0.CO;2-#","DOIUrl":"https://doi.org/10.1002/(SICI)1096-9942(1996)2:1<3::AID-TAPO1>3.0.CO;2-#","url":null,"abstract":"Patterns have shown to be an effective means of capturing and communicating software design experience. However, there is more to patterns than software design patterns: We believe that patterns work for software development on several levels. In this paper we explore what we have come to understand as crucial aspects of the pattern concept, relate patterns to the different models built during software design, discuss pattern forms and how we think that patterns can form larger wholes like pattern handbooks.","PeriodicalId":293061,"journal":{"name":"Theory Pract. Object Syst.","volume":"15 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1996-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124399361","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1996-11-01DOI: 10.1002/(SICI)1096-9942(1996)2:1<53::AID-TAPO5>3.3.CO;2-1
Wolfgang Strunk, Frank Fröse
{"title":"Using Design Patterns to Restructure the User Interface Part of an Application Framework","authors":"Wolfgang Strunk, Frank Fröse","doi":"10.1002/(SICI)1096-9942(1996)2:1<53::AID-TAPO5>3.3.CO;2-1","DOIUrl":"https://doi.org/10.1002/(SICI)1096-9942(1996)2:1<53::AID-TAPO5>3.3.CO;2-1","url":null,"abstract":"","PeriodicalId":293061,"journal":{"name":"Theory Pract. Object Syst.","volume":"30 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1996-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126711505","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1996-11-01DOI: 10.1002/(SICI)1096-9942(1996)2:1<31::AID-TAPO3>3.3.CO;2-F
J. Helfman
This paper describes the dotplot data visualization technique and its potential for contributingto the identificationof design patterns. Pattern languages have been used in architectural design and urban planning to codify related rules-of-thumb for constructing vernacular buildings and towns. When applied to software design, pattern languages promote reuse while allowing novice designers to learn from the insights of experts. Dotplots have been used in biology to study similarity in genetic sequences. When applied to software, dotplots identify patterns that range in abstraction from the syntax of programming languages to the organizational uniformity of large, multi-component systems. Dotplots are useful for design by successive abstraction—replacing duplicated code with macros, subroutines, or classes. Dotplots reveal a pervasive design pattern for simplifying algorithms by increasing the complexity of initializations. Dotplots also reveal patterns of wordiness in languages—one example inspired a design pattern for a new programming language. In addition, dotplots of data associated with programs identify dynamic usage patterns—one example identifies a design pattern used in the construction of a UNIX(tm) file system.
{"title":"Dotplot Patterns: A Literal Look at Pattern Languages","authors":"J. Helfman","doi":"10.1002/(SICI)1096-9942(1996)2:1<31::AID-TAPO3>3.3.CO;2-F","DOIUrl":"https://doi.org/10.1002/(SICI)1096-9942(1996)2:1<31::AID-TAPO3>3.3.CO;2-F","url":null,"abstract":"This paper describes the dotplot data visualization technique and its potential for contributingto the identificationof design patterns. Pattern languages have been used in architectural design and urban planning to codify related rules-of-thumb for constructing vernacular buildings and towns. When applied to software design, pattern languages promote reuse while allowing novice designers to learn from the insights of experts. Dotplots have been used in biology to study similarity in genetic sequences. When applied to software, dotplots identify patterns that range in abstraction from the syntax of programming languages to the organizational uniformity of large, multi-component systems. Dotplots are useful for design by successive abstraction—replacing duplicated code with macros, subroutines, or classes. Dotplots reveal a pervasive design pattern for simplifying algorithms by increasing the complexity of initializations. Dotplots also reveal patterns of wordiness in languages—one example inspired a design pattern for a new programming language. In addition, dotplots of data associated with programs identify dynamic usage patterns—one example identifies a design pattern used in the construction of a UNIX(tm) file system.","PeriodicalId":293061,"journal":{"name":"Theory Pract. Object Syst.","volume":"25 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1996-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125785982","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1996-11-01DOI: 10.1002/(SICI)1096-9942(1996)2:2<77::AID-TAPO1>3.3.CO;2-0
J. Andreoli, Steve Freeman, R. Pareschi
The development of communication infrastructures and the rapid growth of networking facilities in information technologies increase information mobility and the decentralisation of work processes in industry and services. This evolution leads to increasing demands on the coordination of information systems. However, information technologies available today are capable of supporting only interoperability of information systems from the point of view of communication infrastructures. This makes possible an easy exchange of information but provides no support for coordination. To fill this gap, we propose the Coordination Language Facility (CLF) as a coordination layer on top of distributed systems infrastructures such as CORBA-compliant Object Request Brokers. The CLF provides support for the coordination of heterogeneous, possibly distributed, active objects within larger units implementing (work) processes. On one hand, coordinator objects are declaratively implemented as rules. On the other hand, the objects participating in a coordination (participants) must instantiate a minimal interface which specifies the negotiation dialogue invoked, at run-time, by coordinators. The coordination activity is split between the implementation of the interface on the participants’side and the execution of the rules on the coordinators’ side, thus offering a clear separation of concerns between local and global activities. The interface is specified using the CORBA standard for distributed objects, removing issues of heterogeneity and allowing each component to be implemented in the most appropriate language and environment.
{"title":"The Coordination Language Facility: Coordination of Distributed Objects","authors":"J. Andreoli, Steve Freeman, R. Pareschi","doi":"10.1002/(SICI)1096-9942(1996)2:2<77::AID-TAPO1>3.3.CO;2-0","DOIUrl":"https://doi.org/10.1002/(SICI)1096-9942(1996)2:2<77::AID-TAPO1>3.3.CO;2-0","url":null,"abstract":"The development of communication infrastructures and the rapid growth of networking facilities in information technologies increase information mobility and the decentralisation of work processes in industry and services. This evolution leads to increasing demands on the coordination of information systems. However, information technologies available today are capable of supporting only interoperability of information systems from the point of view of communication infrastructures. This makes possible an easy exchange of information but provides no support for coordination. To fill this gap, we propose the Coordination Language Facility (CLF) as a coordination layer on top of distributed systems infrastructures such as CORBA-compliant Object Request Brokers. The CLF provides support for the coordination of heterogeneous, possibly distributed, active objects within larger units implementing (work) processes. On one hand, coordinator objects are declaratively implemented as rules. On the other hand, the objects participating in a coordination (participants) must instantiate a minimal interface which specifies the negotiation dialogue invoked, at run-time, by coordinators. The coordination activity is split between the implementation of the interface on the participants’side and the execution of the rules on the coordinators’ side, thus offering a clear separation of concerns between local and global activities. The interface is specified using the CORBA standard for distributed objects, removing issues of heterogeneity and allowing each component to be implemented in the most appropriate language and environment.","PeriodicalId":293061,"journal":{"name":"Theory Pract. Object Syst.","volume":"2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1996-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129472312","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1996-11-01DOI: 10.1002/(SICI)1096-9942(1996)2:1<43::AID-TAPO4>3.0.CO;2-8
D. Riehle
Managing inter-object dependencies in object-oriented systems is a complex task. Changes of one object often require dependent objects to change accordingly. Making every object explicitly inform every dependent object about its state changes intertwines object interfaces and implementations, thereby hampering system evolution and maintenance. These problems can be overcome by introducing the notion of Implicit Invocation to object-oriented systems as a decoupling mechanism between objects. This paper presents the Event Notification pattern, a pattern to smoothly integrate implicit invocation mechanisms with object-oriented designs. State changes of objects, dependencies of other objects on them and the maintenance links between these objects are made explicit as first class objects. The resulting structure is highly flexible and can be used to manage inter-object dependencies in object-oriented systems efficiently.
{"title":"The Event Notification Pattern - Integrating Implicit Invocation with Object-Orientation","authors":"D. Riehle","doi":"10.1002/(SICI)1096-9942(1996)2:1<43::AID-TAPO4>3.0.CO;2-8","DOIUrl":"https://doi.org/10.1002/(SICI)1096-9942(1996)2:1<43::AID-TAPO4>3.0.CO;2-8","url":null,"abstract":"Managing inter-object dependencies in object-oriented systems is a complex task. Changes of one object often require dependent objects to change accordingly. Making every object explicitly inform every dependent object about its state changes intertwines object interfaces and implementations, thereby hampering system evolution and maintenance. These problems can be overcome by introducing the notion of Implicit Invocation to object-oriented systems as a decoupling mechanism between objects. This paper presents the Event Notification pattern, a pattern to smoothly integrate implicit invocation mechanisms with object-oriented designs. State changes of objects, dependencies of other objects on them and the maintenance links between these objects are made explicit as first class objects. The resulting structure is highly flexible and can be used to manage inter-object dependencies in object-oriented systems efficiently.","PeriodicalId":293061,"journal":{"name":"Theory Pract. Object Syst.","volume":"320 ","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1996-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131589208","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1996-11-01DOI: 10.1002/(SICI)1096-9942(1996)2:1<15::AID-TAPO2>3.3.CO;2-K
D. Schmidt
Developers of communication software must confront recurring design challenges involving robustness, efficiency, and extensibility. Many of these challenges are independent of the application-specific requirements. Successful developers resolve these challenges by applying appropriate design patterns. However, these patterns have traditionallybeen locked in the minds of expert developers or buried within complex system source code. The primary contribution of this paper is to describe a family of design patterns that underly many object-oriented communication software systems. In addition to describing each pattern separately, the paper illustrates how knowledge of the relationships and trade-offs among patterns helps guide the construction of reusable communication software frameworks.
{"title":"A Family of Design Patterns for Applications-Level Gateways","authors":"D. Schmidt","doi":"10.1002/(SICI)1096-9942(1996)2:1<15::AID-TAPO2>3.3.CO;2-K","DOIUrl":"https://doi.org/10.1002/(SICI)1096-9942(1996)2:1<15::AID-TAPO2>3.3.CO;2-K","url":null,"abstract":"Developers of communication software must confront recurring design challenges involving robustness, efficiency, and extensibility. Many of these challenges are independent of the application-specific requirements. Successful developers resolve these challenges by applying appropriate design patterns. However, these patterns have traditionallybeen locked in the minds of expert developers or buried within complex system source code. The primary contribution of this paper is to describe a family of design patterns that underly many object-oriented communication software systems. In addition to describing each pattern separately, the paper illustrates how knowledge of the relationships and trade-offs among patterns helps guide the construction of reusable communication software frameworks.","PeriodicalId":293061,"journal":{"name":"Theory Pract. Object Syst.","volume":"8 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1996-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116774543","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1996-11-01DOI: 10.1002/(SICI)1096-9942(1996)2:1<61::AID-TAPO6>3.3.CO;2-Y
Jung J. Kim, Kevin Benner
{"title":"An Experience Using Design Patterns: Lessons Learned and Tool Support","authors":"Jung J. Kim, Kevin Benner","doi":"10.1002/(SICI)1096-9942(1996)2:1<61::AID-TAPO6>3.3.CO;2-Y","DOIUrl":"https://doi.org/10.1002/(SICI)1096-9942(1996)2:1<61::AID-TAPO6>3.3.CO;2-Y","url":null,"abstract":"","PeriodicalId":293061,"journal":{"name":"Theory Pract. Object Syst.","volume":"15 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1996-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128489511","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}