scispace - formally typeset
Search or ask a question

Showing papers by "David Garlan published in 1992"


Proceedings Article
07 Sep 1992
TL;DR: WRIGHT as mentioned in this paper is an architectural description language based on the formal description of the abstract behavior of architectural components and connectors and provides a practical formal basis for the description of both architectural configurations and of architectural styles.
Abstract: : 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 software architectures and architectural styles. This dissertation demonstrates this claim through WRIGHT, an architectural description language based on the formal description of the abstract behavior of architectural components and connectors. WRIGHT provides a practical formal basis for the description of both architectural configurations and of architectural styles. It is distinguished by the use of explicit, independent connector types as interaction patterns, the ability to describe the abstract behavior of components using a CSP-like notation, the characterization of styles using predicates over system instances, and a collection of static checks to determine the consistency and completeness of an architectural specification. We introduce techniques to support the analysis of large-scale systems, and demonstrate WRIGHT's expressiveness and practicality through three case studies.

673 citations


Journal ArticleDOI
TL;DR: The tool abstraction paradigm, which supports the evolution of large-scale software systems by easing design changes in the system functions, is discussed and the KWIC (key word in context) index production system is used to illustrate the idea of tool abstraction.
Abstract: The tool abstraction paradigm, which supports the evolution of large-scale software systems by easing design changes in the system functions, is discussed. Systems that support tool abstraction are structured as a pool of abstract data structures shared by a collection of cooperating 'toolies', where each toolie provides a piece of the overall system function. When one toolie updates the shared data, other toolies must be notified: otherwise, cooperating-but-independent toolies may not execute, and the overall system function may be compromised. The KWIC (key word in context) index production system is used to illustrate the idea of tool abstraction. The relationship of tool abstraction to other concepts is examined. >

101 citations


ReportDOI
01 Aug 1992
TL;DR: The Software Architecture Level of Software Design course as discussed by the authors addresses the problem of the organizations used to assemble components into a software system, which is a special case of the problem addressed in this course.
Abstract: As software systems grow in size and complexity their design problem extends beyond algorithms and data structures to issues of system design. This area receives little or no treatment in existing computer science curricula. Although courses about specific systems are usually available, there is no systematic treatment of the organizations used to assemble components into systems. These issues -- thesoftware architecture level of software design -- are the subject of a new course that we taught for the first time in Spring 1992. In this pair of reports, Part I presents the motivation for the course, the content and structure of the current version, and our plans for improving the next version. Part II consists of teaching materials from the first offering, including assignments and overheads for lectures.

46 citations


Book ChapterDOI
01 Jan 1992
TL;DR: The software architecture level of software design as discussed by the authors was the subject of a new course that was taught for the first time in Spring 1992 and has been successfully used for several years since.
Abstract: As software systems grow in size and complexity their design problem extends beyond algorithms and data structures to issues of system design. This area receives little or no treatment in existing computer science curricula. Although courses about specific systems are usually available, there is no systematic treatment of the organizations used to assemble components into systems. These issues — the software architecture level of software design — are the subject of a new course that we taught for the first time in Spring 1992. This paper describes the motivation for the course, the content and structure of the current version, and our plans for improving the next version.

39 citations


Proceedings ArticleDOI
TL;DR: This work describes a technique for automating the production of application-specific environments that can be derived from general-purpose programming environments by a process of structured transformation.
Abstract: Current software development environments tend to lie at opposite ends of a spectrum: at one extreme are specialized application generators; at the other are general-purpose programming environments. The former provide strong support for system development and reuse, but are costly to build and available only for limited domains. The latter provide weak support, but are generally available and universally applicable.We describe a technique for automating the production of application-specific environments that lie between these two extremes. The key idea is that these environments can be derived from general-purpose programming environments by a process of structured transformation. We describe a tool for performing these transformations. It provides a set of formal operators for specializing a description of a general-purpose environment; as operators are applied, the system semi-automatically builds a set of transformation rules used to translate application-specific programs into those of the original general-purpose environment. The output of the tool is an application-specific environment together with a program transformer that provides execution semantics for programs written in that environment.

17 citations


01 Jul 1992
TL;DR: This work shows how a formal model allows us to say precisely what the authors mean by a software architecture, explore its properties, and systematically describe instances of the architecture.
Abstract: An important goal in software engineering is to describe complex software systems at an architectural level of abstraction While there are many useful architectural paradigms (pipes, blackboards, etc) they are typically understood only idiomatically and applied in an ad hoc fashion We show how a formal model allows us to say precisely what we mean by a software architecture, explore its properties, and systematically describe instances of the architecture We illustrate the approach using the well-known example of pipe-filter architectures

15 citations


Book ChapterDOI
01 Jan 1992
TL;DR: Some of the important dimensions of curriculum design for formal methods are outlined and the tradeoffs are illustrated through a brief examination of four common course formats.
Abstract: While formal methods are becoming increasingly important to software engineering, currently there is little consensus on how they should be taught In this paper I outline some of the important dimensions of curriculum design for formal methods and illustrate the tradeoffs through a brief examination of four common course formats I summarize what I have learned from teaching courses in each of these formats and outline an agenda of educational research that will enable us to teach formal methods more effectively

9 citations


01 Dec 1992
TL;DR: This work describes a technique for automating the production of application-specific environments that can be derived from general-purpose programming environments by a process of structured transformation.
Abstract: Current software development environments tend to lie at opposite ends of a spectrum: at one extreme are specialized application generators; at the other are general-purpose programming environments. The former provide strong support for system development and reuse, but are costly to build and available only for limited domains. The latter provide weak support, but are generally available and universally applicable. We describe a technique for automating the production of application-specific environments that lie between these two extremes. The key idea is that these environments can be derived from general-purpose programming environments by a process of structured transformation. We describe a tool for performing these transformations. It provides a set of formal operators for specializing a description of a general-purpose environment; as operators are applied, the system semi-automatically builds a set of transformation rules used to translate application-specific programs into those of the original general-purpose environment. The output of the tool is an application-specific environment together with a program transformer that provides execution semantics for programs written in that environment.

2 citations


Journal ArticleDOI
TL;DR: The GENIE as discussed by the authors programming environment is built around syntax-directed structure editors, which can be used in introductory and intermediate computer programming methods courses at both the collegiate and secondary school levels.
Abstract: This videotape demonstrates the functionality of Carnegie Mellon's GENIE programming environments. GENIE environment are publicly available on the Macintosh for Pascal and Richard Pattis' Karel the Robot teaching language. They are appropriate for use in introductory and intermediate computer programming methods courses at both the collegiate and secondary school levels. The Karel environment has been used successfully in group settings as early as the fourth grade.GENIE environments are built around syntax directed structure editors. [1, 2] Rather than edit only individual ASCII characters, the editors manipulate elements designated by a specific language grammar. Syntax errors are either prevented altogether or corrected immediately in context.Earlier structure editors often traded their syntax error prevention functionality for highly constrained and clumsy user interfaces. GENIE environments gracefully integrate text and structure editing, such that they have the "look and feel" of a good text editor, with the "intelligence" of a syntax directed structure editor.Through access to a common structure editor data base, GENIE environments combine many advanced tools for program design, comprehension and testing, all integrated in a single, uniform Macintosh user interface. Student program structures are maintained in "unparse" trees which can be mapped to and from text and graphics in many novel ways not constrained by a language's concrete syntax.[3] Different views of a common program database can be displayed and modified concurrently, emphasizing structure and design as well as implementation detail. [4] Similarly, arbitrary pieces of program structure can be hidden from view or displayed at will.At run time GENIE program can be traced at the level of expressions. Graphical data visualizations displaying arbitrary combinations of structured types are updated dynamically during run time and displayed in a representation of the program call stack. [5] Other notable GENIE features include an extensive contextual help system and a "notes" feature useful for project management, course assignments and "on-line" grading.User studies have been conducted at several universities and secondary schools throughout the United States. [6, 7, 8, 9] GENIE students in demanding courses have performed strikingly better than have students using other commercially available Macintosh software configurations.

1 citations


ReportDOI
01 Dec 1992
TL;DR: This paper broadens the class of systems that can benefit from reactive integration by showing how to augment general-purpose programming languages with facilities for implicit invocation, and illustrates the approach in the context of the Ada language.
Abstract: Reactive integration based on event broadcast is an increasingly important technique for developing systems. However, the use of this technique has largely been confined to tool integration systems --- in which tools exist as independent processes --- and special-purpose languages -- in which specialized forms of event broadcast are designed into the language from the start. This paper broadens the class of systems that can benefit from this approach by showing how to augment general-purpose programming languages with facilities for implicit invocation. We illustrate the approach in the context of the Ada language, and highlight the important design considerations that arise in extending such languages with facilities for reactive integration.