Concurrent data accesses in high-level languages like Java and C# are typically mediated using mutual-exclusion locks. threads use locks to guard the operations performed while the lock is held, so that the lock's...
详细信息
Advice is a mechanism used by advanced object-oriented and aspect-orientedprogramming languages to augment the behavior of methods in a program. Advice can help to make programs more modular by separating crosscuttin...
详细信息
ISBN:
(纸本)354027992X
Advice is a mechanism used by advanced object-oriented and aspect-orientedprogramming languages to augment the behavior of methods in a program. Advice can help to make programs more modular by separating crosscutting concerns more effectively, but it also challenges existing ideas about modularity and separate development. We study this challenge using a new, simple formal model for advice as it appears in languages like AspectJ. We then add a module system designed to leave program functionality as open to extension through advice as possible, while still enabling separate reasoning about the code within a module. Our system, Open Modules, can either be used directly to facilitate separate, component-based development, or can be viewed as a model of the features that certain AOP IDEs provide. We define a formal system for reasoning about the observational equivalence of programs under advice, which can be used to show that clients are unaffected by semantics-preserving changes to a module's implementation. Our model yields insights into the nature of modularity in the presence of advice, provides a mechanism for enforceable contracts between component providers and clients in this setting, and suggests improvements to current AOP IDEs.
Most programs currently written by humans are objectoriented ones. Two of the greatest benefits of objectorientedprogramming are the separation of interface from implementation, and the notion that an object may hav...
详细信息
the power of objects lies in the flexibility of their interconnection structure. But this flexibility comes at a cost. Because an object can be modified via any alias, object-oriented programs are hard to understand, ...
详细信息
ISBN:
(纸本)354022405X
the power of objects lies in the flexibility of their interconnection structure. But this flexibility comes at a cost. Because an object can be modified via any alias, object-oriented programs are hard to understand, maintain, and analyse. Aliasing makes objects depend on their environment in unpredictable ways, breaking the encapsulation necessary for reliable software components, thus making it difficult to reason about and optimise programs, obscuring the flow of information between objects, and introducing security problems. Aliasing is a fundamental difficulty, but we accept its presence. Instead we seek techniques for describing, reasoning about, restricting, analysing, and preventing the connections between objects and the flow of information between them.
this paper presents the reverse engineering tool JSPick, which recovers page signatures and form types from server pages based presentation layers. A formal semantics of the tool is given in pseudo-evaluation style.
ISBN:
(纸本)0769519024
this paper presents the reverse engineering tool JSPick, which recovers page signatures and form types from server pages based presentation layers. A formal semantics of the tool is given in pseudo-evaluation style.
Constructors play an essential role in object-oriented (00) languages as a means of object creation. Yet, very little empirical evidence exists on constructors, trends in their composition and how they impact comprehe...
详细信息
ISBN:
(纸本)0769519024
Constructors play an essential role in object-oriented (00) languages as a means of object creation. Yet, very little empirical evidence exists on constructors, trends in their composition and how they impact comprehension and encapsulation of 00 classes. In this paper, we empirically investigate the opportunities, benefits and problems of refactoring class constructors across a sample of classes from five Java systems. the refactoring used, namely, replacing multiple constructors with creation methods, was applied to each of a set of classes containing three or more constructors. Empirical results showed benefits in terms of removed (duplicated) lines of code across the majority of systems. they also showed the potential for improved class comprehension by the creation of non-constructor methods (as a replacement for constructors) and improved encapsulation of class elements through use of a private catch-all constructor. We also provide evidence from five C++ systems which suggests similar trends in constructors to those found for Java. In terms of problems encountered, frequent and inconsistent use of the super construct made refactoring prohibitively difficult in some cases;the existence of Java interfaces also means a lack of scope for constructor refactoring. the results indicate clear and tangible benefits to be gained from investigation and implementation of refactoring techniques in Java, but with caution being exercised in certain cases;refactoring in practice is not as straightforward as the theory suggests.
the proceedings contain 42 papers. the topics discussed include: software services and software maintenance;software documentation: how much is enough?;revitalizing modifiability of legacy assets;towards automatical m...
ISBN:
(纸本)0769519024
the proceedings contain 42 papers. the topics discussed include: software services and software maintenance;software documentation: how much is enough?;revitalizing modifiability of legacy assets;towards automatical migration of transformation rules after grammar extension;automated COBOL to java recycling;light-weight product-lines for evolution and maintenance of web sites;web applications design and maintenance using symbolic model checking;enabling legacy system accessibility by web heterogeneous clients;towards a benchmark for web site extractors: a call for community participation;identifying refactoring opportunities using logic meta programming;refactoring browser with preprocessor;the role of constructors in the context of refactoring object-oriented systems;supporting evolution in component-based development using component libraries;and reengineering legacy application to e-business with modified rational unified process.
the proceedings contain 19 papers. the special focus in this conference is on object-orientedprogramming. the topics include: 11th workshop for PhD students in object-oriented systems;quality of service in distribute...
ISBN:
(纸本)3540436758
the proceedings contain 19 papers. the special focus in this conference is on object-orientedprogramming. the topics include: 11th workshop for PhD students in object-oriented systems;quality of service in distributed object systems and distributed multimedia object/component systems;formal techniques for java programs;automating object-oriented software development methods;adaptive object-models and metamodeling techniques;specification, implementation, and validation of object-oriented embedded systems;feature interaction in composed systems;6thworkshop on component-orientedprogramming;advanced separation of concerns;multiparadigm programming with OO languages;generative programming;4th workshop on object-oriented architectural evolution;7th workshop on mobile object systems;the next 700 distributed object systems;quantitative approaches in object-oriented software engineering;object-oriented business solutions;4th workshop on OO and operating systems;the next 700 distributed object systems and poster session.
Component-based programming is currently carried out using mainstream object-oriented languages. the languages have to be used in a highly disciplined way to guarantee flexible component composition and extensibility....
详细信息
ISBN:
(纸本)3540437592
Component-based programming is currently carried out using mainstream object-oriented languages. the languages have to be used in a highly disciplined way to guarantee flexible component composition and extensibility. this paper investigates abstractions for component-orientedprogramming on the programming language level. We propose a simple prototype-based model for first-class components on top of a class-based object-oriented language. the model is formalized as an extension of Featherweight Java. Our calculus includes a minimal set of primitives to dynamically build, extend, and compose software components, while supporting features like explicit context dependencies, late composition, unanticipated component extensibility, and strong encapsulation. We present a type system for our calculus that ensures type-safe component definition, composition, and evolution.
We describe a module mechanism, which we call difference-based modules, and an object-oriented language we call MixJuice. MixJuice is an enhancement tu the Java language that adopts difference-based modules instead of...
详细信息
ISBN:
(纸本)3540437592
We describe a module mechanism, which we call difference-based modules, and an object-oriented language we call MixJuice. MixJuice is an enhancement tu the Java language that adopts difference-based modules instead of Java's original module mechanism, Modules are units of information hiding, reuse and separate compilation. We have completely separated the class mechanism and the module mechanism, and then unified the module mechanism and the differential programming mechanism. Although this module mechanism is simpler than that of Java, it enhances ease with which programs can be extended, reused and maintained. Collaborations that crosscut several classes call be separated into different modules. Modules are composable in the same way as mixins. the composition of modules sometimes causes name collision and an interesting phenomenon, which we call implementation defects. We describe solutions to these problems.
暂无评论