Results 1 - 10
of
15
An introduction to software architecture
- Advances in Software Engineering and Knowledge Engineering
, 1993
"... ..."
Architectural Styles and the Design of Network-based Software Architectures
, 2000
"...
The World Wide Web has succeeded in large part because its software architecture has been designed to meet the needs of an Internet-scale distributed hypermedia system. The Web has been iteratively developed over the past ten years through a series of modifications to the standards that define its ..."
Abstract
-
Cited by 391 (1 self)
- Add to MetaCart
The World Wide Web has succeeded in large part because its software architecture has been designed to meet the needs of an Internet-scale distributed hypermedia system. The Web has been iteratively developed over the past ten years through a series of modifications to the standards that define its architecture. In order to identify those aspects of the Web that needed improvement and avoid undesirable modifications, a model for the modern Web architecture was needed to guide its design, definition, and deployment.
Software architecture research investigates methods for determining how best to partition a system, how components identify and communicate with each other, how information is communicated, how elements of a system can evolve independently, and how all of the above can be described using formal and informal notations. My work is motivated by the desire to understand and evaluate the architectural design of network-based application software through principled use of architectural constraints, thereby obtaining the functional, performance, and social properties desired of an architecture. An architectural style is a named, coordinated set of architectural constraints.
This dissertation defines a framework for understanding software architecture via architectural styles and demonstrates how styles can be used to guide the architectural design of network-based application software. A survey of architectural styles for network-based applications is used to classify styles according to the architectural properties they induce on an architecture for distributed hypermedia. I then introduce the Representational State Transfer (REST) architectural style and describe how REST has been used to guide the design and development of the architecture for the modern Web.
REST emphasizes scalability of component interactions, generality of interfaces, independent deployment of components, and intermediary components to reduce interaction latency, enforce security, and encapsulate legacy systems. I describe the software engineering principles guiding REST and the interaction constraints chosen to retain those principles, contrasting them to the constraints of other architectural styles. Finally, I describe the lessons learned from applying REST to the design of the Hypertext Transfer Protocol and Uniform Resource Identifier standards, and from their subsequent deployment in Web client and server software.
Abstractions for Software Architecture and Tools to Support Them
- IEEE TRANSACTIONS ON SOFTWARE ENGINEERING
, 1995
"... Architectures for software use rich abstractions and idioms to describe system components, the nature of interactions among the components, and the patterns that guide the composition of components into systems. These abstractions are higher-level than the elements usually supported by programming ..."
Abstract
-
Cited by 290 (3 self)
- Add to MetaCart
Architectures for software use rich abstractions and idioms to describe system components, the nature of interactions among the components, and the patterns that guide the composition of components into systems. These abstractions are higher-level than the elements usually supported by programming languages and tools. They capture packaging and interaction issues as well as computational functionality. Well-established (if informal) patterns guide architectural design of systems. We sketch a model for defining architectures and present an implementation of the basic level of that model. Our purpose is to support the abstractions used in practice by software designers. The implementation provides a testbed for experiments with a variety of system construction mechanisms. It distinguishes among different types of components and different ways these components can interact. It supports abstract interactions such as data flow and scheduling on the same footing as simple procedure...
A Formal Approach to Software Architecture
, 1997
"... As software systems become more complex, the overall system structure---or software architecture---becomes a central design problem. A system's architecture provides a model of the system that suppresses implementation detail, allowing the architect to concentrate on the analyses and decisions that ..."
Abstract
-
Cited by 258 (14 self)
- Add to MetaCart
As software systems become more complex, the overall system structure---or software architecture---becomes a central design problem. A system's architecture provides a model of the system that suppresses implementation detail, allowing the architect to concentrate on the analyses and decisions that are most crucial to structuring the system to satisfy its requirements. Unfortunately, current representations of software architecture are informal and ad hoc. While architectural concepts are often embodied in infrastructure to support specific architectural styles and in the initial conceptualization of a system configuration, the lack of an explicit, independently-characterized architecture or architectural style significantly limits the benefits of software architectural design in current practice. In this dissertation, I show that an Architecture Description Language based on a formal, abstract model of system behavior can provide a practical means of describing and analyzing softwar...
Augmenting Design Patterns with Design Rationale
- Artificial Intelligence for Engineering Design, Analysis and Manufacturing
, 1997
"... Present-day software applications are increasingly required to be #reuse-conscious" in terms of the operating platforms, topology and evolutionary requirements. Traditionally, there has been much dif- #culty in communicating specialized knowledge like design intents, design recommendations and des ..."
Abstract
-
Cited by 13 (2 self)
- Add to MetaCart
Present-day software applications are increasingly required to be #reuse-conscious" in terms of the operating platforms, topology and evolutionary requirements. Traditionally, there has been much dif- #culty in communicating specialized knowledge like design intents, design recommendations and design justi#cations in the discipline of software engineering. This paper presents a methodology based on the combination of design rationale and design patterns to design reusable software systems. Design rationale is the representation of the reasoning behind the design of an artifact. Design patterns are descriptions of communicating objects and classes that are customized to solve a general design problem in a particular context. The paper details the use of an explicit software development process to capture and disseminate the specialized knowledge #i.e., intents, recommendations and justi#cations# that augments the description of the cases in a library #i.e., design patterns# dur...
Design Rationale and Design Patterns in Reusable Software Design
- Artificial Intelligence in Design (AID’96
, 1996
"... . This paper presents an in-progress development of a framework for using design rationale and design patterns for developing reusable software systems. The proposed framework will be used as an integrated design environment for reusable software design, to support collaborative development of soft ..."
Abstract
-
Cited by 6 (1 self)
- Add to MetaCart
. This paper presents an in-progress development of a framework for using design rationale and design patterns for developing reusable software systems. The proposed framework will be used as an integrated design environment for reusable software design, to support collaborative development of software applications by a group of software specialists from a library of building block cases. These goals translate into the effort of exploring the use of Artificial Intelligence in better management of software development and maintenance process by providing faster, less costly, smarter and on-time decisions. The paper details the use of an explicit software development process to capture and disseminate specialized knowledge that augments the description of the cases in a library during the development of software applications by heterogeneous groups. This specialized knowledge constitutes an important part of a software organization's memory, that is, the sharing of information and it's ...
Design Theory and Software Design
- Department of Computer Science, University of Alberta
, 1997
"... Software design methods share many characteristics with design methods in other fields. All these methods are the progeny of philosophies of design that are in turn influenced by more general philosophic movements. This essay begins with the influence of philosophies of science on the study of desig ..."
Abstract
-
Cited by 6 (0 self)
- Add to MetaCart
Software design methods share many characteristics with design methods in other fields. All these methods are the progeny of philosophies of design that are in turn influenced by more general philosophic movements. This essay begins with the influence of philosophies of science on the study of design, highlighting the effects on design discourse of Cartesian rationality, the hypothetico-deductive account of scientific progress, and Kuhnian paradigms. Next, the influence of the constructivist and humanist movements on design thinking are considered, culminating in the introduction of a philosophy of design based on hermeneutics, or interpretation. The influence of design philosophy on software design methods begins a categorization of several software design methods according to the design theory framework, with some emphasis on design methods that support a hermeneutical style of design. Some justification for a pluralistic approach to software design methodology rounds out the essay. ...
Software Architectural Styles for Network-Based Applications
, 1999
"... A software architecture determines how system components are identified and allocated, how the components interact to form a system, the amount and granularity of communication needed for interaction, and the interface protocols used for communication. For a network-based application, system perform ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
A software architecture determines how system components are identified and allocated, how the components interact to form a system, the amount and granularity of communication needed for interaction, and the interface protocols used for communication. For a network-based application, system performance is dominated by network communication. Therefore, selection of the appropriate architectural style(s) for use in designing the software architecture can make the difference between success and failure in the deployment of a network-based application. Software architectural styles have been characterized by their control-flow and dataflow patterns, allocation of functionality across components, and component types. Unfortunately, none of these characterizations are useful for understanding how a style influences the set of architectural properties, or qualities, of a system. These properties include, among others, user-perceived performance, network efficiency, simplicity, modifiability, scalability, and portability.We use these style-induced architectural properties to classify styles for network-based applications with the goal of understanding why certain styles are better than others for some applications, thus providing additional guidance for software engineers faced with the task of architectural design.
Architecture-driven Reuse of Code in KASE
- in Proceedings of the 5th International Conference on Software Engineering and Knowledge Engineering
, 1993
"... In order to support the synthesis of large, complex software systems, we need to focus on issues pertaining to the architectural design of a system in addition to algorithm and data structure design. In this paper, we present an approach that is based on abstracting the architectural design of a set ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
In order to support the synthesis of large, complex software systems, we need to focus on issues pertaining to the architectural design of a system in addition to algorithm and data structure design. In this paper, we present an approach that is based on abstracting the architectural design of a set of problems in the form of a generic architecture , and providing tools that can be used to instantiate the generic architecture for specific problem instances. Such an approach also facilitates reuse of code between different systems belonging to the same problem class. We describe an application of our approach on a realistic problem, present the results of the exercise, and discuss how our approach compares to other work in this area. 1. Introduction Until recently most research in providing automated support for software synthesis has focused on issues concerned with the synthesis of algorithms and data structures (e.g. (Barstow, 1979; Smith, 1990)) It is now being realized that in or...
The Golden Age of Software Architecture: A Comprehensive Survey
, 2006
"... This retrospective on nearly two decades of software architecture research examines the maturation of the software architecture research area by tracing the evolution of research questions and results through their maturation cycle. We show how early qualitative results set the stage for later preci ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
This retrospective on nearly two decades of software architecture research examines the maturation of the software architecture research area by tracing the evolution of research questions and results through their maturation cycle. We show how early qualitative results set the stage for later precision, formality, and automation, how results have built up over time, and how the research results have moved into practice.

