Software architecture: perspectives on an emerging discipline (original) (raw)

First international workshop on architectures for software systems workshop summary

ACM SIGSOFT Software Engineering Notes, 1995

As systems become more complex, the high-level organization of the overall system---the software architecture---becomes a critical aspect of design. Architectural concerns include organization of a system as a composition of components; global control structures; protocols for communication, synchronization, and data access; assignment of functionality to design elements; physical distribution; scaling and performance; dimensions of evolution; and selection among design alternatives.Recently, software architecture has begun to emerge as an important field of study for software engineering practitioners and researchers. Architectural issues are being addressed by work in areas such as module interface languages, domain-specific architectures, software reuse, codification of organizational patterns for software, architectural description languages, formal underpinnings for architectural design, and architectural design environments.While there has been considerable recent activity in ...

A report on the first european conference on software architecture (ECSA'2007)

2009

Software Architecture, defined as the formal study of the structures and patterns of complex software systems, is already in its second decade as a regular discipline within Software Engineering. Not so long ago, architectures were simply left implicit. Today this would not be possible anymore; software applications cannot be conceived as isolated monoliths. Almost any software piece is now part of another system, and these systems have become themselves distributed, more complex, and larger.

A Brief Survey of Software Architecture

Software of today is becoming larger and more complex. More powerful ways of structuring complexity are consequently required, whether it is about development methodologies, structural programming, naming conventions, configuration management, or, as is discussed in this report, software architecture. A software system's architecture can be described as the " blueprint " of a system at the highest level of abstraction, describing the main components and their most important interactions. We discuss in more detail how architectures can be described and the uses of such descriptions. Much research so far has also been dedicated to methods and case studies, to make the research of practical interest. This report describes how the quality of the software can be ensured to a certain degree through informal approaches – not least because an architectural description provides a common understanding around which different stakeholders can meet and discuss a system. Formal approaches are also emerging, and there are a number of formal languages for description of a system's software architecture. This report presents a brief survey of the field of Software Architecture; both informal and formal approaches are covered and discussed. The report concludes with presenting the author's planned research, aiming at answering how component-based architectures can be designed to handle change.

An Introduction to Software Architecture

As the size of software systems increases, the algorithms and data structures of the computation no longer constitute the major design problems. When systems are constructed from many components, the organization of the overall system-the software architecture-presents a new set of design problems. This level of design has been addressed in a number of ways including informal diagrams and descriptive terms, module interconnection languages, templates and frameworks for systems that serve the needs of specific domains, and formal models of component integration mechanisms.

Definition and Documentation of Software Architectures

This paper discusses the work of the software architect by describing a software architect's concerns and the documents that a software architect should produce. It proposes a definition of software architecture and discusses archtectural design criteria based on the idea that every architecture is expected to meet a specified set of goals. We start with a discussion of the meaning of "architecture", then discuss the goals of an architect, proceed to what's needed to achieve those goals, describe ways of documenting architectural design decisions, and finally discuss how to determine how well the design goals have been met for any given architecture.

Software architecture: a travelogue

Future of Software Engineering Proceedings, 2014

Over the past two and a half decades software architecture has emerged as an important subfield of software engineering. During that time there has been considerable progress in developing the technological and methodological base for treating architectural design as an engineering discipline. However, much still remains to be done to achieve that. Moreover, the changing face of technology raises a number of challenges for software architecture. This travelogue recounts the history of the field, its current state of practice and research, and speculates on some of the important emerging trends, challenges, and aspirations.

Foundations for the study of software architecture

ACM Sigsoft Software Engineering Notes, 1992

The purpose of this paper is to build the foundation for software architecture. We first develop an intuition for software architecture by appealing to several wellestablished architectural disciplines. On the basis of this intuition, we present a model of software architecture that consists of three components: elements, form, and rationale. Elements are either processing, data, or connecting elements. Form is defined in terms of the properties of, and the relationships among, the elements --that is, the constraints on the elements. The rationale provides the underlying basis for the architecture in terms of the system constraints, which most often derive from the system :requirements. We discuss the components of the model in the context of both architectures and architectural styles and present an extended example to illustrate some important architecture and style considerations. We conclude by presenting some of the benefits of our approach to software architecture, summarizing our contributions, and relating our approach to other current work.

Formulations and formalisms in software architecture

Lecture Notes in Computer Science, 1995

Software architecture is the level of software design that addresses the overall structure and properties of software systems. It provides a focus for certain aspects of design and development that are not appropriately addressed within the constituent modules. Architectural design depends heavily on accurate speci cations of subsystems and their interactions. These speci cations must cover a wide variety of properties, so the speci cation notations and associated methods must be selected or developed to match t h e properties of interest. Unfortunately, the available formal methods are only a partial match for architectural needs, which e n tail description of structure, packaging, environmental assumptions, representation, and performance as well as functionality. A prerequisite for devising or selecting a formal method is sound understanding of what needs to be formalized. For software architecture, much of this understanding is arising through progressive codi cation, which begins with real-world examples and creates progressively more precise models that eventually support formalization. This paper explores the progressive codi cation of software architecture: the relation between emerging models and the selection, development, and use of formal systems.

Architectures for Software Systems: A Curriculum Development Proposal in Undergraduate Software Engineering

1993

DIST RID-uI. U , OIRECTORATE FOR FREEDOM OF INFORMATION AND SECURITY REVIEW (OASO-PA) DEPARTMENT OF DEFENSE 93-15534-_ 's-u' '-u I, z 1 Project Goals and Rationale This curriculum development project had as its primary goal the development of a course that augments existing undergraduate software curricula by teaching concepts, techniques, and examples at the architectural level of software design. Specifically, Architectures for Software Systems would "* Teach students how to understand and evaluate designs of existing software systems from an architectural perspective. "* Provide students with the intellectual building blocks for designing new systems in principled ways using well-understood architectural paradigms. "* Show students how formal notations and models can be used to characterize and reason about a system design. "* Familiarize students with concrete examples of actual system architectures that can serve as models for new designs. CARNEGIE MELLON UNIVERSITY SOFTWARE ARCHITECTURE CURRICULUM 2 "We developed a short form of the material, suitable for half-and full-day tutorials. This material was delivered at the following conferences: Sofware Engineering and Knowledge Engineering (SEKE'92), International Conference on Computer Aided Design (ICCAD'92), International Conference on Software Engineering (ICSE 15). It will be delivered again in December, 1993 as an invited tutorial for SIGSOFT'93. "* We produced a paper based on the course content as a general introduction to software architecture. The paper has been published as "An Introduction to Software Architecture*, by David Garlan and Mary Shaw, and appears in Advances in Software Engineering and Knowledge Engineering, Volume/, World Scientific Publishing Company, 1993.