William R Cook | The University of Texas at Austin (original) (raw)
Papers by William R Cook
Service Oriented Computing and Applications, Mar 25, 2011
Due to the shift from software-as-a-product (SaaP) to software-as-a-service (SaaS), software comp... more Due to the shift from software-as-a-product (SaaP) to software-as-a-service (SaaS), software components that were developed to run in a single address space must increasingly be accessed remotely across the network. Distribution middleware is frequently used to facilitate this transition. Yet a range of middleware platforms exist, and there are few existing guidelines to help the programmer choose an appropriate middleware platform to achieve desired goals for performance, conciseness, intuitiveness, and reliability. To address this limitation, in this article, we describe a case study of transitioning an Open Service Gateway Initiative (OSGi) service from local to remote access. In our case study, we evaluate five remote versions of this service, constructed using different distribution middleware platforms. These platforms are implemented by widely-used commercial technologies or have been proposed as improvements on the state of the art. In particular, we implemented a service-oriented version of our own Remote Batch Invocation abstraction. We compare and contrast these implementations in terms of their respective performance, conciseness, complexity, and reliability. Our results can help remote service
Proceedings 27th International Conference on Software Engineering 2005 Icse 2005, 2005
Developers of data-intensive applications are increasingly using persistence frameworks such as E... more Developers of data-intensive applications are increasingly using persistence frameworks such as EJB, Hibernate and JDO to access relational data. These frameworks support both transparent persistence for individual objects and explicit queries to efficiently search large collections of objects. While transparent persistence is statically typed, explicit queries do not support static checking of types or syntax because queries are manipulated as strings and interpreted at runtime. This paper presents Safe Query Objects, a technique for representing queries as statically typed objects while still supporting remote execution by a database server. Safe query objects use object-relational mapping and reflective metaprogramming to translate query classes into traditional database queries. The model supports complex queries with joins, parameters, existentials, and dynamic criteria. A prototype implementation for JDO provides a type-safe interface to the full query functionality in the JDO 1.0 standard.
Revision control systems are a major means to manage versions and variants of today's software sy... more Revision control systems are a major means to manage versions and variants of today's software systems. An ongoing problem in these systems is how to resolve conflicts when merging independently developed revisions. Unstructured revision control systems are purely text-based and solve conflicts based on textual similarity. Structured revision control systems are tailored to specific languages and use language-specific knowledge for conflict resolution. We propose semistructured revision control systems to inherit the strengths of both classes of systems: generality and expressiveness. The idea is to provide structural information of the underlying software artifacts in the form of annotated grammars, which is motivated by recent work on software product lines. This way, a wide variety of languages can be supported and the information provided can assist the resolution of conflicts. We have implemented a preliminary tool and report on our experience with merging Java artifacts. We believe that drawing a connection between revision control systems and product lines has benefits for both fields.
Abstract The Open Scripting Architecture combines aspects of object-oriented programming, distrib... more Abstract The Open Scripting Architecture combines aspects of object-oriented programming, distributed computation, database queries, and dynamic languages into a powerful and practical system for automation, integration, and customization of applications and system services. Applications are integrated together with distributed messaging. The messages operate upon user-level application objects, like windows and spreadsheet cells that are identified by queries over properties and document containment structure. A general- ...
Orc is a new language for task orchestration, a form of concurrent programming with applications ... more Orc is a new language for task orchestration, a form of concurrent programming with applications in workflow, business process management, and web service orchestration. Orc provides constructs to orchestrate the concurrent invocation of services-while managing time-outs, priorities, and failure of services or communication. In this paper, we show a trace-based semantic model for Orc, which induces a congruence on Orc programs and facilitates reasoning about them. Despite the simplicity of the language and its semantic model, Orc is able to express a variety of useful orchestration tasks.
ACM SIGPLAN Notices, 1990
The diverse inheritance mechanisms provided by Smalltalk, Beta, and CLOS are interpreted as diffe... more The diverse inheritance mechanisms provided by Smalltalk, Beta, and CLOS are interpreted as different uses of a single underlying construct. Smalltalk and Beta differ primarily in the direction of class hierarchy growth. These inheritance mechanisms are subsumed in a new inheritance model based on composition of mixins, or abstract subclasses. This form of inheritance can also encode a CLOS multiple-inheritance hierarchy, although changes to the encoded hierarchy that would violate encapsulation are difficult. Practical application of mixin-based inheritance is illustrated in a sketch of an extension to Modula-3.
ACM SIGPLAN Notices, 1988
Conference on Object-Oriented Programming Systems, Languages, and Applications, 2010
Model-driven software development is a promising new application area for partial evaluation. In ... more Model-driven software development is a promising new application area for partial evaluation. In this papers, we develop an approach to generic programming using models instead of types. The work is done in the context of Pummel, a first-order subset of Scheme with objects and monoid comprehensions. We define generic operations for validation, reading, and equality of values described by models. These generic operations are specialized to particular models by an online partial evaluator. The specializer can choose ...
AppleScript is a scripting language and environment for the Mac OS. Originally conceived in 1989,... more AppleScript is a scripting language and environment for the Mac OS. Originally conceived in 1989, AppleScript allows end users to automate complex tasks and customize Mac OS applications. To automate tasks, AppleScript provides standard programming language features (control flow, variables, data structures) and sends Apple Events to invoke application behavior. Apple Events are a variation on standard remote procedure calls in which messages can identify their arguments by queries that are interpreted by the ...
ACM SIGPLAN Notices, 2011
Mechanized proof assistants are powerful verification tools, but proof development can be difficu... more Mechanized proof assistants are powerful verification tools, but proof development can be difficult and time-consuming. When verifying a family of related programs, the effort can be reduced by proof reuse. In this paper, we show how to engineer product lines with theorems and proofs built from feature modules. Each module contains proof fragments which are composed together to build a complete proof of correctness for each product. We consider a product line of programming languages, where each variant includes metatheory proofs verifying the correctness of its semantic definitions. This approach has been realized in the Coq proof assistant, with the proofs of each feature independently certifiable by Coq. These proofs are composed for each language variant, with Coq mechanically verifying that the composite proofs are correct. As validation, we formalize a core calculus for Java in Coq which can be extended with any combination of casts, interfaces, or generics. FJ Expression Syntax FGJ Expression Syntax e ::= x | e.f | e.m (e) | new C(e) | (C) e ⇒ e ::= x | e.f | e.m T β (e) ⇒ Lemma 2.2. If ∆ δ S <:T and fields( bound ∆ (T) η ) = T f, then fields( bound ∆ (S) η ) = S g, S i = T i and g i = f i for all i ≤ #(f).
Workshop on Advances in Model based Software Engineering (WAMBSE), 2010
Abstract. In model-driven development, the use of both model translators and model interpreters i... more Abstract. In model-driven development, the use of both model translators and model interpreters is widespread. It is also well-known that partial evaluation can turn an interpreter into a translator. In this paper we show that a simple online partial evaluator is effective at specializing a model interpreter with respect to a model to create a compiled model interpretation. Data models pose a particular problem, because it is not clear what a data model interpreter would do, given that data is generally considered to be passive. We ...
Proceedings of the 3rd India software engineering conference on India software engineering conference - ISEC '10, 2010
Proceeding of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications - OOPSLA '09, 2009
Domain Specific Languages are raising the level of abstraction of software specifications and of ... more Domain Specific Languages are raising the level of abstraction of software specifications and of knowledge representation in general. When DSLs are used to formalize the results of domain analysis, the result is a clean separation of concerns in the problem space. This is a major advance over aspect oriented programming, where separation of concerns is only achieved in the solution space. However, the level of interoperability between current DSL tools is comparable to the level of interoperability between CASE tools in the 90s. To increase the popularity of DSL based approaches, this needs to change. Software development has become highly decentralized, and an assumption that all parties in a global software supply chain will use identical tooling is simply not realistic. As a result today's software supply chains are much less automated than supply chains in other, more mature industries. The KISS series of workshops is used to incrementally establish a consensus on the fundamental principles that underpin the use of DSLs, and to improve DSL tool interoperability.
Science of Computer Programming, 2014
An Object Grammar is a variation on traditional BNF grammars, where the notation is extended to s... more An Object Grammar is a variation on traditional BNF grammars, where the notation is extended to support declarative bidirectional mappings between text and object graphs. The two directions for interpreting Object Grammars are parsing and formatting. Parsing transforms text into an object graph by recognizing syntactic features and creating the corresponding object structure. In the reverse direction, formatting recognizes object graph features and generates an appropriate textual presentation. The key to Object Grammars is the expressive power of the mapping, which decouples the syntactic structure from the graph structure. To handle graphs, Object Grammars support declarative annotations for resolving textual names that refer to arbitrary objects in the graph structure. Predicates on the semantic structure provide additional control over the mapping. Furthermore, Object Grammars are compositional so that languages may be defined in a modular fashion. We have implemented our approach to Object Grammars as one of the foundations of the Ensō system and illustrate the utility of our approach by showing how it enables definition and composition of domain-specific languages (DSLs).
Lecture Notes in Computer Science, 2013
Language workbenches are tools that provide high-level mechanisms for the implementation of (doma... more Language workbenches are tools that provide high-level mechanisms for the implementation of (domain-specific) languages. Language workbenches are an active area of research that also receives many contributions from industry. To compare and discuss existing language workbenches, the annual Language Workbench Challenge was launched in 2011. Each year, participants are challenged to realize a given domain-specific language with their workbenches as a basis for discussion and comparison. In this paper, we describe the state of the art of language workbenches as observed in the previous editions of the Language Workbench Challenge. In particular, we capture the design space of language workbenches in a feature model and show where in this design space the participants of the 2013 Language Workbench Challenge reside. We compare these workbenches based on a DSL for questionnaires that was realized in all workbenches.
cs.utexas.edu
Abstract. Cascading Style Sheets (CSS) are used in the HyperText Markup Language (HTML) to descri... more Abstract. Cascading Style Sheets (CSS) are used in the HyperText Markup Language (HTML) to describe the style, size, color, and position of elements in a document. While simple styles are easy to specify, a style sheet for a complex site can become many thousands of ...
Service Oriented Computing and Applications, Mar 25, 2011
Due to the shift from software-as-a-product (SaaP) to software-as-a-service (SaaS), software comp... more Due to the shift from software-as-a-product (SaaP) to software-as-a-service (SaaS), software components that were developed to run in a single address space must increasingly be accessed remotely across the network. Distribution middleware is frequently used to facilitate this transition. Yet a range of middleware platforms exist, and there are few existing guidelines to help the programmer choose an appropriate middleware platform to achieve desired goals for performance, conciseness, intuitiveness, and reliability. To address this limitation, in this article, we describe a case study of transitioning an Open Service Gateway Initiative (OSGi) service from local to remote access. In our case study, we evaluate five remote versions of this service, constructed using different distribution middleware platforms. These platforms are implemented by widely-used commercial technologies or have been proposed as improvements on the state of the art. In particular, we implemented a service-oriented version of our own Remote Batch Invocation abstraction. We compare and contrast these implementations in terms of their respective performance, conciseness, complexity, and reliability. Our results can help remote service
Proceedings 27th International Conference on Software Engineering 2005 Icse 2005, 2005
Developers of data-intensive applications are increasingly using persistence frameworks such as E... more Developers of data-intensive applications are increasingly using persistence frameworks such as EJB, Hibernate and JDO to access relational data. These frameworks support both transparent persistence for individual objects and explicit queries to efficiently search large collections of objects. While transparent persistence is statically typed, explicit queries do not support static checking of types or syntax because queries are manipulated as strings and interpreted at runtime. This paper presents Safe Query Objects, a technique for representing queries as statically typed objects while still supporting remote execution by a database server. Safe query objects use object-relational mapping and reflective metaprogramming to translate query classes into traditional database queries. The model supports complex queries with joins, parameters, existentials, and dynamic criteria. A prototype implementation for JDO provides a type-safe interface to the full query functionality in the JDO 1.0 standard.
Revision control systems are a major means to manage versions and variants of today's software sy... more Revision control systems are a major means to manage versions and variants of today's software systems. An ongoing problem in these systems is how to resolve conflicts when merging independently developed revisions. Unstructured revision control systems are purely text-based and solve conflicts based on textual similarity. Structured revision control systems are tailored to specific languages and use language-specific knowledge for conflict resolution. We propose semistructured revision control systems to inherit the strengths of both classes of systems: generality and expressiveness. The idea is to provide structural information of the underlying software artifacts in the form of annotated grammars, which is motivated by recent work on software product lines. This way, a wide variety of languages can be supported and the information provided can assist the resolution of conflicts. We have implemented a preliminary tool and report on our experience with merging Java artifacts. We believe that drawing a connection between revision control systems and product lines has benefits for both fields.
Abstract The Open Scripting Architecture combines aspects of object-oriented programming, distrib... more Abstract The Open Scripting Architecture combines aspects of object-oriented programming, distributed computation, database queries, and dynamic languages into a powerful and practical system for automation, integration, and customization of applications and system services. Applications are integrated together with distributed messaging. The messages operate upon user-level application objects, like windows and spreadsheet cells that are identified by queries over properties and document containment structure. A general- ...
Orc is a new language for task orchestration, a form of concurrent programming with applications ... more Orc is a new language for task orchestration, a form of concurrent programming with applications in workflow, business process management, and web service orchestration. Orc provides constructs to orchestrate the concurrent invocation of services-while managing time-outs, priorities, and failure of services or communication. In this paper, we show a trace-based semantic model for Orc, which induces a congruence on Orc programs and facilitates reasoning about them. Despite the simplicity of the language and its semantic model, Orc is able to express a variety of useful orchestration tasks.
ACM SIGPLAN Notices, 1990
The diverse inheritance mechanisms provided by Smalltalk, Beta, and CLOS are interpreted as diffe... more The diverse inheritance mechanisms provided by Smalltalk, Beta, and CLOS are interpreted as different uses of a single underlying construct. Smalltalk and Beta differ primarily in the direction of class hierarchy growth. These inheritance mechanisms are subsumed in a new inheritance model based on composition of mixins, or abstract subclasses. This form of inheritance can also encode a CLOS multiple-inheritance hierarchy, although changes to the encoded hierarchy that would violate encapsulation are difficult. Practical application of mixin-based inheritance is illustrated in a sketch of an extension to Modula-3.
ACM SIGPLAN Notices, 1988
Conference on Object-Oriented Programming Systems, Languages, and Applications, 2010
Model-driven software development is a promising new application area for partial evaluation. In ... more Model-driven software development is a promising new application area for partial evaluation. In this papers, we develop an approach to generic programming using models instead of types. The work is done in the context of Pummel, a first-order subset of Scheme with objects and monoid comprehensions. We define generic operations for validation, reading, and equality of values described by models. These generic operations are specialized to particular models by an online partial evaluator. The specializer can choose ...
AppleScript is a scripting language and environment for the Mac OS. Originally conceived in 1989,... more AppleScript is a scripting language and environment for the Mac OS. Originally conceived in 1989, AppleScript allows end users to automate complex tasks and customize Mac OS applications. To automate tasks, AppleScript provides standard programming language features (control flow, variables, data structures) and sends Apple Events to invoke application behavior. Apple Events are a variation on standard remote procedure calls in which messages can identify their arguments by queries that are interpreted by the ...
ACM SIGPLAN Notices, 2011
Mechanized proof assistants are powerful verification tools, but proof development can be difficu... more Mechanized proof assistants are powerful verification tools, but proof development can be difficult and time-consuming. When verifying a family of related programs, the effort can be reduced by proof reuse. In this paper, we show how to engineer product lines with theorems and proofs built from feature modules. Each module contains proof fragments which are composed together to build a complete proof of correctness for each product. We consider a product line of programming languages, where each variant includes metatheory proofs verifying the correctness of its semantic definitions. This approach has been realized in the Coq proof assistant, with the proofs of each feature independently certifiable by Coq. These proofs are composed for each language variant, with Coq mechanically verifying that the composite proofs are correct. As validation, we formalize a core calculus for Java in Coq which can be extended with any combination of casts, interfaces, or generics. FJ Expression Syntax FGJ Expression Syntax e ::= x | e.f | e.m (e) | new C(e) | (C) e ⇒ e ::= x | e.f | e.m T β (e) ⇒ Lemma 2.2. If ∆ δ S <:T and fields( bound ∆ (T) η ) = T f, then fields( bound ∆ (S) η ) = S g, S i = T i and g i = f i for all i ≤ #(f).
Workshop on Advances in Model based Software Engineering (WAMBSE), 2010
Abstract. In model-driven development, the use of both model translators and model interpreters i... more Abstract. In model-driven development, the use of both model translators and model interpreters is widespread. It is also well-known that partial evaluation can turn an interpreter into a translator. In this paper we show that a simple online partial evaluator is effective at specializing a model interpreter with respect to a model to create a compiled model interpretation. Data models pose a particular problem, because it is not clear what a data model interpreter would do, given that data is generally considered to be passive. We ...
Proceedings of the 3rd India software engineering conference on India software engineering conference - ISEC '10, 2010
Proceeding of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications - OOPSLA '09, 2009
Domain Specific Languages are raising the level of abstraction of software specifications and of ... more Domain Specific Languages are raising the level of abstraction of software specifications and of knowledge representation in general. When DSLs are used to formalize the results of domain analysis, the result is a clean separation of concerns in the problem space. This is a major advance over aspect oriented programming, where separation of concerns is only achieved in the solution space. However, the level of interoperability between current DSL tools is comparable to the level of interoperability between CASE tools in the 90s. To increase the popularity of DSL based approaches, this needs to change. Software development has become highly decentralized, and an assumption that all parties in a global software supply chain will use identical tooling is simply not realistic. As a result today's software supply chains are much less automated than supply chains in other, more mature industries. The KISS series of workshops is used to incrementally establish a consensus on the fundamental principles that underpin the use of DSLs, and to improve DSL tool interoperability.
Science of Computer Programming, 2014
An Object Grammar is a variation on traditional BNF grammars, where the notation is extended to s... more An Object Grammar is a variation on traditional BNF grammars, where the notation is extended to support declarative bidirectional mappings between text and object graphs. The two directions for interpreting Object Grammars are parsing and formatting. Parsing transforms text into an object graph by recognizing syntactic features and creating the corresponding object structure. In the reverse direction, formatting recognizes object graph features and generates an appropriate textual presentation. The key to Object Grammars is the expressive power of the mapping, which decouples the syntactic structure from the graph structure. To handle graphs, Object Grammars support declarative annotations for resolving textual names that refer to arbitrary objects in the graph structure. Predicates on the semantic structure provide additional control over the mapping. Furthermore, Object Grammars are compositional so that languages may be defined in a modular fashion. We have implemented our approach to Object Grammars as one of the foundations of the Ensō system and illustrate the utility of our approach by showing how it enables definition and composition of domain-specific languages (DSLs).
Lecture Notes in Computer Science, 2013
Language workbenches are tools that provide high-level mechanisms for the implementation of (doma... more Language workbenches are tools that provide high-level mechanisms for the implementation of (domain-specific) languages. Language workbenches are an active area of research that also receives many contributions from industry. To compare and discuss existing language workbenches, the annual Language Workbench Challenge was launched in 2011. Each year, participants are challenged to realize a given domain-specific language with their workbenches as a basis for discussion and comparison. In this paper, we describe the state of the art of language workbenches as observed in the previous editions of the Language Workbench Challenge. In particular, we capture the design space of language workbenches in a feature model and show where in this design space the participants of the 2013 Language Workbench Challenge reside. We compare these workbenches based on a DSL for questionnaires that was realized in all workbenches.
cs.utexas.edu
Abstract. Cascading Style Sheets (CSS) are used in the HyperText Markup Language (HTML) to descri... more Abstract. Cascading Style Sheets (CSS) are used in the HyperText Markup Language (HTML) to describe the style, size, color, and position of elements in a document. While simple styles are easy to specify, a style sheet for a complex site can become many thousands of ...