object-oriented frameworks are established tools for domain-specific reuse. Many framework design patterns have been documented, e.g. reverse engineering framework architectures from conventionally built applications ...
详细信息
object-oriented frameworks are established tools for domain-specific reuse. Many framework design patterns have been documented, e.g. reverse engineering framework architectures from conventionally built applications for a given domain. The framework development cycle generally evolves from open framework to closed application. We describe a more flexible component-based approach to framework design that stresses a common interface for `plugging-in' new components at different lifecycle stages. An analysis of framework-related user roles shows that the classical developer/end-user boundary is too rigid. We see the framework's development as a continuum within which its `actors' can customize its behaviour. This both increases the system's flexibility and reduces its maintenance requirement. A case study of three frameworks for different application domains illustrates the presented principles.
Reusing software improves quality as well as productivity. In practice, it is hard to achieve significant levels of reuse in commercial applications beyond generic support software. This tutorial will present programm...
详细信息
Reusing software improves quality as well as productivity. In practice, it is hard to achieve significant levels of reuse in commercial applications beyond generic support software. This tutorial will present programming and design techniques for achieving more reuse. The first session will examine the obstacles to reuse in commercial data processing, and illustrate the potential benefits. The main session will: consider design reuse, source code reuse and routine libraries;review the principles of modular design, cohesion, coupling and information hiding;and show how inheritance and dynamic binding extend and enhance these established techniques. The final session addresses organizational aspects of reuse, an alternative project lifecycle, metrics and developer motivation. The tutorial is intended for developers and their managers regardless of language, method or platform.
The growing role of server systems, especially in the context of the World Wide Web, requires providing flexible and inexpensive mechanisms for accounting for and controlling of resources consumed by individual reques...
详细信息
The growing role of server systems, especially in the context of the World Wide Web, requires providing flexible and inexpensive mechanisms for accounting for and controlling of resources consumed by individual requests. To a large extent, the Internet server models currently deployed fail in this respect. The focus of this work is to alleviate some problems related to resource management in server environments. In particular, we propose a structured approach to binding threads (execution entities) to resource accounts (abstractions encapsulating rights to using particular amounts of particular resources). The approach advocates separation between protection domains (processes) and resource management;we argue that this is more appropriate for server systems than traditional approaches. Resource accounts address some issues related to trust and to dividing complex requests into separate sub-requests.
Most current-day software engineering tools and environments do not sufficiently support software engineers to declare or to enforce the intended software architecture. Architectures are typically described at a too l...
详细信息
Most current-day software engineering tools and environments do not sufficiently support software engineers to declare or to enforce the intended software architecture. Architectures are typically described at a too low level, inhibiting their evolution and understanding. Furthermore, most tools provide little support to verify automatically whether the source code conforms to the architecture. Therefore, a formalism is needed in which architectures can be expressed at a sufficiently abstract level, without losing the ability to perform conformance checking automatically. We propose to codify declaratively software architectures using virtual software classifications and relationships among these classifications. We illustrate how software architectures can be expressed elegantly in terms of these virtual classifications and how to keep them synchronized with the source code.
The Unified Modeling Language is extensible, and so can be regarded as a family of languages. Implicitly or explicitly, any particular UML model should be accompanied by a definition of the particular UML family membe...
详细信息
The Unified Modeling Language is extensible, and so can be regarded as a family of languages. Implicitly or explicitly, any particular UML model should be accompanied by a definition of the particular UML family member used for the model. The definition should cover syntactic and semantic issues. This paper proposes a mechanism for associating models with such definitions. Any particular definition would form what we call a preface. The name is intended to suggest that the definition of a particular UML family member must conceptually come before any model built using that family member. A preface would be large, and should be organised using packages. This would allow large amounts of sharing between different prefaces. The paper proposes that prefaces should have an axiomatic style of semantics, through not necessarily fully formal, and it offers a general approach to semantics that would reduce problems of inconsistency within a large preface, based on the idea of general cases and special cases.
Software metrics proposed and used for procedural paradigm have been found inadequate for objectoriented software products, mainly because of the distinguishing features of the objectoriented paradigm such as inheri...
详细信息
Software metrics proposed and used for procedural paradigm have been found inadequate for objectoriented software products, mainly because of the distinguishing features of the objectoriented paradigm such as inheritance and polymorphism. Several objectoriented software metrics have been described in the literature. These metrics are goal driven in the sense that they are targeted towards specific software qualities. We propose a new set of metrics for objectoriented programs; this set is targeted towards estimating the testing efforts for these programs. The definitions of these metrics are based on the concepts of object orientation and hence are independent of the objectoriented programming languages. The new metrics set has been critically compared with three other metrics sets published in the literature.
Despite the possibility of providing standard collection frameworks, object-orientedlanguages do not generally encourage a 'very high level' style of programming in which collection components are regarded as...
详细信息
Despite the possibility of providing standard collection frameworks, object-orientedlanguages do not generally encourage a 'very high level' style of programming in which collection components are regarded as first class citizens and in which different implementations for a collection can be exchanged without affecting the correctness of a program and with minimal change to the source code. This results both from weaknesses in the structure of the frameworks and from the poor degree of integration of collections into the languages. We present a new approach to the integration of collections in object-orientedlanguages in which collection types are part of the language but collection implementations are not. We also show how the integration of collection types allows automatic conversions which, among other advantages, provide a new solution to the problem of statically type-safe compatibility for collections.
Summary form only given, as follows. OPEN is the premier third-generation, process-focussed, public domain OO methodology. It is documented in a number of professional-level texts. In this tutorial, a beginner's l...
详细信息
Summary form only given, as follows. OPEN is the premier third-generation, process-focussed, public domain OO methodology. It is documented in a number of professional-level texts. In this tutorial, a beginner's level presentation, OPEN is introduced through a number of case studies using UML as the notation.
The Model-View-Controller (MVC) architecture style separates software into models representing core functionality, views which display the models to the user, and controllers which let the user change the models. Alth...
详细信息
The Model-View-Controller (MVC) architecture style separates software into models representing core functionality, views which display the models to the user, and controllers which let the user change the models. Although more sophisticated architectures have since been developed, MVC is interesting to explore because its simplicity makes it more acceptable to practitioners and it is beginning to become well-known in industry. However, MVC is rarely studied with regard to systems containing more than one domain model. Several issues are either ambiguous or missing in the literature. The distinction between views and controllers, the way model states are updated in a multiple-model architecture, and the creation of reusable domain-specific components. A program was developed to investigate these issues, and this paper documents the corresponding design decisions. MVC proved helpful in creating a multiple-model system with reusable components, although some weaknesses remain.
C++ is a programming language that supports multiple paradigms: classes, overloaded functions, templates, modules, procedural programming and more. Despite the language's flexibility and richness, however, there h...
详细信息
C++ is a programming language that supports multiple paradigms: classes, overloaded functions, templates, modules, procedural programming and more. Despite the language's flexibility and richness, however, there has previously been little effort to create a design method to support multiple paradigms within a single application. This tutorial explores a coherent framework for multi-paradigm design, offering an advanced set of design practices that form the foundation for a formal multi-paradigm design method. Attendees will gain an understanding of domain engineering methods that support multi-paradigm design. The presentation reveals how to analyze the application domain using principles of commonality and variation to define subdomains according to the most appropriate paradigm for each. The course explores deep questions of design to address fundamental issues of software abstraction.
暂无评论