The importance of reliably achieving quality of service (QoS) requirements in service-oriented architectures is constantly increasing. This trend has changed the characteristics that are needed from the service architectures, hosting environments and to the methods to create new services. To enable hosting services with strict QoS requirements, abilities to model service requirements, identify the capabilities of the hosting environment, and effectively match those for the wanted service configuration are needed. Many current methods build theoretical models of service requirements and capabilities of the hosting infrastructure. Based on our experience, using these in commercial systems is hard. In this paper, we highlight the key requirements for commercial service oriented architectures with strict latency requirements. We also propose using empirical models of the service infrastructure to provide accurate and reliable service configuration that will match the service requirements.
Mobile services hold a promise of utilizing the phone also for other purposes than purely communication. However, repeated attempts at realizing mobile services in the market place have been met with limited success. This article (1) defines the architectural drivers that drive success or failure of mobile services, (2) analyzes three different architectural styles of realizing such a mobile service using the example of a movie ticket selling service and (3) presents the results of this analysis. The main result of the analysis is that a serious conflict exists between usability and essentially all the other architectural drivers included in our analysis, i.e. portability, deployability and scalability. This is due to the fact that, because of the restricted state of the art technology, only native client applications offer satisfactory usability, but these do not satisfy the other drivers.
Software architecture has been identified as a main tool for high quality system development. Software architecture provides the basis for the reuse in a software product line. Unfortunately the potential benefits of a well designed software architecture can be lost if the software architecture is not followed in the design of the products. We suggest that a software architecture help desk could play an important role in enabling the dissemination of software architecture and in improving the communication between designers and architects.
Software system has to face many changes during its life cycle. Some of these changes can be anticipated some come as surprises. Software systems can be designed to be flexible in terms of anticipated changes. Flexibility is achieved by structuring the system utilizing abstraction, indirection, late binding or some other variance mechanism. Surprising changes are still a problem. Partially this problem can be alleviated by proper management of design knowledge. We propose a mechanism to organize design decision so that this organization can be used to analyze change requests and determine their impact on system architecture. We demonstrate this using an industrial example.
A software architecture is the key artifact in software design, describing the main elements of a software system and their interrelationships. We present a method for automatically analyzing the quality of an architecture by searching for architectural and design patterns from it. In addition to approximating the quality of the design, the extracted patterns can also be used for predicting the quality of the actual system. The method is demonstrated by an industrial case over a complex telephone exchange software.
In this paper we present a generalization of Oberon's record type extensions. Our extension mechanism is orthogonally applicable to all the conventional data types found in Pascal-like languages. In order to balance the type system, we present an inverse concept, type reductions, that also can be applied to all the programmer-defined data types. These concepts provide flexible and powerful means for expressing universal subtyping and supertyping in a statically-typed programming language, as well as many possibilities for reuse of data types via a sound mathematical characterization of assignment statements. The presented ideas are under implementation in Alberich, a programming language that can be considered as a natural descendant of Oberon.