Tracking the changing dynamics of object-oriented frameworks, design patterns, architectural styles, and subsystems during the development and reuse cycle can aid producing complex systems. Unfortunately, current obje...
详细信息
ISBN:
(纸本)9780897917889
Tracking the changing dynamics of object-oriented frameworks, design patterns, architectural styles, and subsystems during the development and reuse cycle can aid producing complex systems. Unfortunately, current object-orientedprogramming tools are relatively oblivious to the rich architectural abstractions in a system. This paper shows that architecture-oriented visualization, the graphical presentation of system statics and dynamics in terms of its architectural abstractions, is highly beneficial in designing complex systems. In addition, the paper presents architecture-aware instrumentation, a new technique for building efficient on-line instrumentation to support architectural queries. We demonstrate the effectiveness and performance of the scheme with case studies in the design of the Choices object-oriented operating system.
Developing large software systems has largely become an exercise in integration. The main effort is writing "glue" that holds externally developed components together. We will explore the shift away from com...
详细信息
ISBN:
(纸本)9781595938657
Developing large software systems has largely become an exercise in integration. The main effort is writing "glue" that holds externally developed components together. We will explore the shift away from commercial off-the-shelf (COTS) to free/open source software (F/OSS) components, and identify the opportunities and issues introduced by it.
Recently, language extensions have been proposed for Java and C# to support pattern-based reflective declaration. These extensions introduce a disciplined form of meta-programming and aspect-orientedprogramming to ma...
详细信息
ISBN:
(纸本)9781595938602
Recently, language extensions have been proposed for Java and C# to support pattern-based reflective declaration. These extensions introduce a disciplined form of meta-programming and aspect-orientedprogramming to mainstream languages: They allow members of a class (i.e., fields and methods) to be declared by statically iterating over and pattern-matching on members of other classes. Such techniques, however, have been unable to safely express simple, but common, idioms such as declaring getter and setter methods for fields. In this paper, we present a mechanism that addresses the lack of expressiveness in past work without sacrificing safety. Our technique is based on the idea of nested patterns that elaborate the outer-most pattern with blocking or enabling conditions. We implemented this mechanism in a language, MorphJ. We demonstrate the expressiveness of MorphJ with real-world applications. In particular, the MorphJ reimplementation of DSTM2, a software transactional memory library, reduces 1,107 lines of Java reflection and bytecode engineering library calls to just 374 lines of MorphJ code. At the same time, the MorphJ solution is both high level and safer, as MorphJ can separately type check generic classes and catch errors early. We present and formalize the MorphJ type system, and offer a type-checking algorithm.
暂无评论