Several algorithms [Gas92, MS89, Run92, DDHL94a, DDHL95, GMM95] have been proposed to automatically insert a class into an inheritance hierarchy. But actual hierarchies al include overriden and overloaded properties t...
详细信息
ISBN:
(纸本)9780897917889
Several algorithms [Gas92, MS89, Run92, DDHL94a, DDHL95, GMM95] have been proposed to automatically insert a class into an inheritance hierarchy. But actual hierarchies al include overriden and overloaded properties that these algorithms handle either very partially or not at all. Partially handled means handled provided there is a separate given function f able to compare overloaded properties [DDHL95, GMM95]. In this paper, we describe a new version of our algorithm (named Ares) which handles automatic class insertion more efficiently using such a function f. Although impossible to fully define, this function can be computed for a number of well defined cases of overloading and overriding. We give a classification of such cases and describe the computation process for a well-defined set of nontrivial cases. The algorithm preserves these important properties: preservation of the maximal factorization of properties preservation of the underlying structure (Galois lattice) of the input hierarchy conservation of relevant classes of the input hierarchy with their properties.
object-based (i.e. classless) models are very effective for elucidating requirements from users, and they support exploratory programming and rapid prototyping, providing a direct manipulation approach. On the other h...
详细信息
ISBN:
(纸本)9780897917889
object-based (i.e. classless) models are very effective for elucidating requirements from users, and they support exploratory programming and rapid prototyping, providing a direct manipulation approach. On the other hand, class-based models have powerful mechanisms to control redundancy, exploit sharing, express extension, and propagate changes to instances. The price object-based approaches pay is loss of control over change propagation, and potential redundancy. Two mechanisms to overcome this are sharing among objects and definition of objects as extension of others. We examine these mechanisms, and consider the effect that interacting policies for objects sharing and definition-by-extension have on change propagation and replication control. An implication is that, in absence of meta-objects or extra-language support, monolithic shared parts cannot coexist with prototypes represented as split objects.
In this paper we present a method of code implementation that works in conjunction with collaboration and responsibility based analysis modeling techniques to achieve better code reuse and resilience to change. Our ap...
详细信息
ISBN:
(纸本)089791788X
In this paper we present a method of code implementation that works in conjunction with collaboration and responsibility based analysis modeling techniques to achieve better code reuse and resilience to change. Our approach maintains a closer mapping from responsibilities in the analysis model to entities in the implementation. In so doing, it leverages the features of flexible design and design reuse found in collaboration-based design models to provide similar adaptability and reuse in the implementation. Our approach requires no special development tools and uses only standard features available in the C++ language. In an earlier paper we described the basic mechanisms used by our approach and discussed its advantages in comparison to the framework approach. In this paper we show how our approach combines code and design reuse, describing specific techniques that can be used in the development of larger applications.
To use modern hardware effectively, compilers need extensive control-flow information. Unfortunately, the frequent method invocations in object-orientedlanguages obscure control flow. In this paper, we describe and e...
详细信息
ISBN:
(纸本)9780897917889
To use modern hardware effectively, compilers need extensive control-flow information. Unfortunately, the frequent method invocations in object-orientedlanguages obscure control flow. In this paper, we describe and evaluate a range of analysis techniques to convert method invocations into direct calls for statically-typed object-orientedlanguages and thus improve control-flow information in object-orientedlanguages. We present simple algorithms for type hierarchy analysis, aggregate analysis, and interprocedural and intraprocedural type propagation. These algorithms are also fast, O(|procedures| * ∑pprocedures np * υp) worst case time (linear in practice) for our slowest analysis, where np is the size of procedure p and υp is the number of variables in procedure p, and are thus practical for use in a compiler. When they fail, we introduce cause analysis to reveal the source of imprecision and suggest where more powerful algorithms may be warranted. We show that our simple analyses perform almost as well as an oracle that resolves all method invocations that invoke only a single procedure.
Large software systems are often built on system platforms that support or enforce specific characteristics of the source code or actual design. These characteristics are either captured informally in design guideline...
详细信息
ISBN:
(纸本)9780897917889
Large software systems are often built on system platforms that support or enforce specific characteristics of the source code or actual design. These characteristics are either captured informally in design guideline documents or in specialized design and implementation languages. In our view, both approaches are unsatisfactory. Informal descriptions do not allow automated analysis and lead to vague constraint descriptions. The language-based approach leads to different languages for different platforms and even for different versions of the same basic platform. Our approach is to describe and name the constraints separately in a design constraint language called CDL, which is based on an extraordinarily concise logic of parse trees. Designs are then annotated with the names of the constraints they are supposed to satisfy. We discuss how the design constraint language is integrated into a design language environment. We exhibit industrial and experimental evidence that our choice of design constraint language allows us to formalize naturally and succinctly common design characteristics.
Virtual functions make code easier for programmers to reuse but also make it harder for compilers to analyze. We investigate the ability of three static analysis algorithms to improve C++ programs by resolving virtual...
详细信息
ISBN:
(纸本)9780897917889
Virtual functions make code easier for programmers to reuse but also make it harder for compilers to analyze. We investigate the ability of three static analysis algorithms to improve C++ programs by resolving virtual function calls, thereby reducing compiled code size and reducing program complexity so as to improve both human and automated program understanding and analysis. In measurements of seven programs of significant size (5000 to 20000 lines of code each) we found that on average the most precise of the three algorithms resolved 71% of the virtual function calls and reduced compiled code size by 25%. This algorithm is very fast: it analyzes 3300 source lines per second on an 80 MHz PowerPC 601. Because of its accuracy and speed, this algorithm is an excellent candidate for inclusion in production C++ compilers.
Previously, techniques such as class hierarchy analysis and profile-guided receiver class prediction have been demonstrated to greatly improve the performance of applications written in pure object-orientedlanguages,...
详细信息
ISBN:
(纸本)9780897917889
Previously, techniques such as class hierarchy analysis and profile-guided receiver class prediction have been demonstrated to greatly improve the performance of applications written in pure object-orientedlanguages, but the degree to which these results are transferable to applications written in hybrid languages has been unclear. In part to answer this question, we have developed the Vortex compiler infrastructure, a language-independent optimizing compiler for object-orientedlanguages, with front-ends for Cecil, C++, Java, and Modula-3. In this paper, we describe the Vortex compiler's intermediate language, internal structure, and optimization suite, and then we report the results of experiments assessing the effectiveness of different combinations of optimizations on sizable applications across these four languages. We characterize the benchmark programs in terms of a collection of static and dynamic metrics, intended to quantify aspects of the `object-orientedness' of a program.
The proceedings contain 38 papers. The topics discussed include: using a prototype based language for user interface: the Newton project's experience;annotating objects for transport to other worlds;managing objec...
ISBN:
(纸本)0897917030
The proceedings contain 38 papers. The topics discussed include: using a prototype based language for user interface: the Newton project's experience;annotating objects for transport to other worlds;managing objectoriented projects;type feedback vs. concrete type inference: a comparison of optimization techniques for object-orientedlanguages;profile-guided receiver class prediction;bidirectional object layout for separate compilation;minimizing row displacement dispatch tables;sound polymorphic type inference for objects;tailoring OO analysis and design methods;modular reasoning in the presence of subclassing;on the semantic diversity of delegation-based programminglanguages;subject-oriented composition rules;and compiling away the meta-level in object-oriented concurrent reflective languages using partial evaluation.
The proceedings contain 36 papers. The topics discussed include: application of domain analysis to object-orientedsystems;applying object-oriented software engineering methods to the development of call center softwa...
ISBN:
(纸本)0897917219
The proceedings contain 36 papers. The topics discussed include: application of domain analysis to object-orientedsystems;applying object-oriented software engineering methods to the development of call center software: a case study;using objects to manage in-memory data intensive expert systems;the navigation toolkit project revisited;performance of a OODB in a online 7x24x365 manufacturing operation;why C++ is not just an object-orientedprogramming language;patterns: cult to culture?;oopsla'95 doctoral symposium;implementing a real -time, embedded, telecommunication switching system in SmallTalk;objectoriented project management;OO process and metrics for effort estimation;semantic integration in complex systems: collective behavior in business rules and software transactions;workshop on design patterns for concurrent, parallel and distributed object-orientedsystems;the object engine: foundation for next generation architectures;subjectivity in object-orientedsystems workshop summary;objects and relational databases;object database behavior, benchmarks, and performance workshop addendum;workshop on adaptable and adaptive software;and legacy systems and object technology workshop summary.
The Workshop on object-oriented Real-Time systems has been conduced each year at oopsla since 1988 with a variety of formats. In this year's workshop, participants submitted position papers on a broad range of sub...
详细信息
ISBN:
(纸本)0897917219
The Workshop on object-oriented Real-Time systems has been conduced each year at oopsla since 1988 with a variety of formats. In this year's workshop, participants submitted position papers on a broad range of subjects, but were all asked to show the relevance of their work to three critical issues in OO real-time systems: dealing with time constraints;the roles of reactive versus scheduled behavior;and appropriate models of concurrent behavior. All position papers were presented and discussed during the workshop, followed by a round-table discussion of the state of the art regarding the three focus issues.
暂无评论