The proceedings contain 20 papers. The special focus in this conference is on Generative programming and Component engineering. The topics include: Program generation, termination, and binding-time analysis;generative...
ISBN:
(纸本)3540442847
The proceedings contain 20 papers. The special focus in this conference is on Generative programming and Component engineering. The topics include: Program generation, termination, and binding-time analysis;generative programming for embedded systems;a specification and scripting language for binary data;memoization in type-directed partial evaluation;a protocol stack development tool using generative programming;building composable aspect-specific languages with logic metaprogramming;architectural refactoring in framework evolution;towards a modular program derivation via fusion and tupling;generative programming for embedded software;a framework for the detection and resolution of aspect interactions;bridging the gap between implementation and design;program termination analysis in polynomial time;generators for synthesis of qos adaptation in distributed real-time embedded systems;optimizing content management system pipelines;component-based programming for higher-order attribute grammars;altering java semantics via bytecode manipulation;meta-programming with concrete object syntax and managing dynamic changes in multi-stage program generation systems.
Traditional protocol implementation approaches capture the structural aspects of protocols in a common base that can be used accross layers. However, they are usually not very good at capturing the behavioral aspects....
详细信息
ISBN:
(纸本)3540442847
Traditional protocol implementation approaches capture the structural aspects of protocols in a common base that can be used accross layers. However, they are usually not very good at capturing the behavioral aspects. Two important implementation problems result, namely, reprogramming similar behavior and configuration of crosscutting concerns. In this paper, we present an approach to solve the problems of reprogramming similar behavior and absence of systematic configuration mechanisms for crosscutting concerns in communication systems. Our approach is based on generative programming, has been implemented in C++ and has been validated with several protocols. We also sketch an approach for run-time reconfigurable protocol stacks.
Many design concepts can be expressed only indirectly in source code. When this occurs, a single concept at design results in a verbose amount of code that is scattered across the system structure. In this paper, we p...
详细信息
ISBN:
(纸本)158113469X
Many design concepts can be expressed only indirectly in source code. When this occurs, a single concept at design results in a verbose amount of code that is scattered across the system structure. In this paper, we present explicit programming, an approach that enables a developer to introduce new vocabulary into the source to capture a design concept explicitly. An introduced vocabulary item modularizes the implementation details associated with a design concept, reducing the scattering of code needed to express the concept. The vocabulary item appears in the code where the concept is needed;uses of the vocabulary may thus remain distributed through the code. We believe explicit programming provides a useful engineering point, balancing modularization and separation in (at least) two cases. First, when a design concept is tightly coupled with particular constructs in a program, separation is unlikely to lead to any benefits of reusability or comprehensibility. Second, concepts that emerge as a system evolves can be encapsulated and recorded, paving the way for later separation when conditions warrant it. We introduce ELIDE, a tool that supports explicit programming in Java, and describe several cases showing the utility of the explicit programming approach.
The goal of aspect-oriented programming is to modularize crosscutting concerns (or aspects) at the code level. These aspects can be defined in either a general-purpose language or in a language that is fine-tuned to a...
详细信息
ISBN:
(纸本)3540442847
The goal of aspect-oriented programming is to modularize crosscutting concerns (or aspects) at the code level. These aspects can be defined in either a general-purpose language or in a language that is fine-tuned to a specific aspect in consideration. Aspect-specific languages provide more concise and more readable aspect declarations but are limited to a specific domain. Moreover, multiple aspects may be needed in a single application and composing aspects written in different aspect languages is not an easy task. To solve this composition problem, we represent both aspects and aspect languages as modularized logic metaprograms. These logic modules can be composed in flexible ways to achieve combinations of aspects written in different aspect-specific languages. As such, the advantages of both general-purpose and aspect-specific languages are combined.
Code is modularized for many reasons, including making it easier to understand, change, and verify. Aspect-oriented programming approaches extend the kind of code that can be modularized, enabling the modularization o...
详细信息
ISBN:
(纸本)158113469X
Code is modularized for many reasons, including making it easier to understand, change, and verify. Aspect-oriented programming approaches extend the kind of code that can be modularized, enabling the modularization of crosscutting code, We conducted an inquisitive study to better understand the kinds of crosscutting code that software developers encounter and to better understand how the developers manage this code. We tracked eight participants: Four from industry and four from academia. Each participant was currently evolving a non-trivial software system. We interviewed these participants three times about crosscutting concerns they had encountered and the strategies they used to deal with the concerns. We found that crosscutting concerns tended to emerge as obstacles that the developer had to consider to make the desired change. The strategy used by the developer to manage the concern depended on the form of the obstacle code. The results of this study provide empirical evidence to support the problems identified by the aspect-oriented programming community, and provide a basis on which to further assess aspect-oriented programming.
Formal theories of teamwork are typically treated as software design specifications of team behavior. We take a different approach to programming teamwork by directly executing logical specifications of joint commitme...
详细信息
ISBN:
(纸本)9781581134803
Formal theories of teamwork are typically treated as software design specifications of team behavior. We take a different approach to programming teamwork by directly executing logical specifications of joint commitment and joint intention. This approach leads to a domain-independent framework for programming teamwork where one can modify (or add new) behavior for a team of agents just by modifying (or adding) logical sentences. One may also be able to predict the behavior of an agent team offline using its team intention specification and verify it by running the actual system.
For aspect-oriented software development (AOSD) to live up to being a software engineering method, there must be support for the separation of crosscutting concerns across the development lifecycle. Part of this suppo...
详细信息
ISBN:
(纸本)158113469X
For aspect-oriented software development (AOSD) to live up to being a software engineering method, there must be support for the separation of crosscutting concerns across the development lifecycle. Part of this support is traceability from one lifecycle phase to another. This paper investigates the traceability between one particular AOSD design-level language, Theme/UML, and one particular AOSD implementation-level language, AspectJ. This provides for a means to assess these languages and their incompatibilities, with a view towards eventually developing a standard design language for a broad range of AOSD approaches.
The proceedings contain 42 papers. The topics discussed include: hybrid computation with an attractor neural network;from embodied cognitive science to synthetic psychology;how do I trust thee? let me count the ways;h...
ISBN:
(纸本)0769517242
The proceedings contain 42 papers. The topics discussed include: hybrid computation with an attractor neural network;from embodied cognitive science to synthetic psychology;how do I trust thee? let me count the ways;how do I trust thee? let me count the ways;problems, solutions and information systems development;cognitive informatics: a knowledge engineering perspective;model and heuristic technique for efficient verification of component-based software systems;towards a refinement calculus for object systems;system modeling and design using genetic programming;an agent-based framework for developing flexible distributed systems;compression and its metrics for multimedia;software agents: quality, complexity and uncertainty issues;and a simplified protocol operational semantics for multiagent protocols.
The Know-It-All Project is investigating methodologies for the development, application, and evolution of frameworks. A concrete framework for database management systems is being developed as a case study for the met...
详细信息
ISBN:
(纸本)3540442847
The Know-It-All Project is investigating methodologies for the development, application, and evolution of frameworks. A concrete framework for database management systems is being developed as a case study for the methodology research. The methodology revolves around a set of models for the domain, the functionality, the architecture, the design, and the code. These models reflect the common and variable features of the domain. Refactoring of source code has been studied as a preliminary step in the evolution of object-oriented software. In cascaded refactoring, we view framework evolution as a two-step process: refactoring and extension. The refactoring step is a set of refactorings, one for each model. The refactorings chosen for a model determine the rationale or constraints for the choice of refactorings of the next model. There are several issues with respect to architecture that we have encountered and are exploring. These include (1) the choice of models for the architecture;(2) the design of the architecture and its evaluation;(3) the evolution of the architecture by extending the concept of refactoring from source code to architecture;and (4) the modeling of variation in architectures across the product line. Here we focus on the refactoring of the architecture.
An assertion in a computer program is a logical formula (Boolean expression) which the programmer expects to evaluate to true on every occasion that program control reaches the point at which it is written. Assertions...
详细信息
ISBN:
(纸本)354043481X
An assertion in a computer program is a logical formula (Boolean expression) which the programmer expects to evaluate to true on every occasion that program control reaches the point at which it is written. Assertions can be used to specify the purpose of a program, and to define the interfaces between its major components. An early proponent of assertions was Alan Turing (1948), who suggested their use in establishing the correctness of large routines. In 1967, Bob Floyd revived the idea as the basis of a verifying compiler that would automatically prove the correctness of the programs that it compiled. After reading his paper, I became a member of a small research school devoted to exploring the idea as a theoretical foundation for a top-down design methodology of program development. I did not expect the research to influence industrial practice until after my retirement from academic life, thirty years ahead. And so it has been. In this talk, I will describe some of the ways in which assertions are now used in Microsoft programming practice. Mostly they are used as test oracles, to detect the effects of a program error as close as possible to its origin. But they are beginning to be exploited also by program analysis tools and even by compilers for optimisation of code. One purpose that they are never actually used for is to prove the correctness of programs. This story is presented as a case study of the way in which scientific research into ideals of accuracy and correctness can find unexpected application in the essentially softer and more approximative tasks of engineering.
暂无评论