Intro-to-software-Arch
Abstract
Architectural design has been addressed by:
- informal diagrams
- descriptive terms
- module interconnection languages
- templates and frameworks for specific domain systems
- formal models of component integration mechanisms.
8 architectural styles + 6 case studies.
Introduction
What are overal system structural issues?
- gross organization and global control structure
- protocols for communication
- synchronization and data access
- assignment of functionality to design elements
- physical distribution
- composition of design elements
- scaling and performance
- selection among design alternatives
From programming languages to software architecture
historical development of abstration techniques in CS.
High-Level programming language
- instructions and data separately
- symbolic names for code and memory addresses
- marco processors: a single symbol = sequences of instructions.
- procedure invocation, for loop and conditional statements.
- data types for selecting the proper machine instructions, show how data should be used.
- introduction of modules
- Abstract data types
Abstract Data Types
- the software structure (which included a representation packaged with its primitive operators),
- specifications (mathematically expressed as abstract models or algebraic axioms),
- language issues (modules, scope, user-defined types),
- integrity of the result (invariants of data structures and protection from other manipulation),
- rules for combining types (declarations),
- information hiding (protection of properties not explicitly included in specifications).
Software Architecture
Developed vocabulary of software designs
- client-server model
- abstraction layering and system decomposition
- distributed, OO approach
- pipeline
Examples: Software Architecture
-
International Standard Organization's Open Systems Interconnection Reference Model (a layered network architecture)
-
NIST/ECMA Reference Model (a generic software engineering environment architecture based on layered communication substrates)
-
X Window System (a distributed windowed user interface architecture based on event triggering and callbacks)
Architectural styles
Common framework to view
- a collection of computational components
- a description of the interactions between these components - connectors, e.g. procedure call, event boardcast, database queries and pipes
What's architectural style?
It defines a family of systems in terms of a pattern of structural organization, determintes the vocabulary of components and connectors together with a set of constraints on how they can be combined.
constraints: e.g. topological constraints on architectural descriptions, execution semantics
Common questions
- What's the structural pattern - the components, connectors and constraints?
- What's the underlying computational model?
- What are the essential invariants of the style?
- What are some common examples of its use?
- What are the advantages and disadvantages of using that style?
- What are some of the common specializations?
1. Pipes and Filters
- Components are filters, having a set of inputs and a set of outputs.
- Connectors are pipes, conduits for the steams, transmitting outputs of one filter to inputs of another.
Invariants of the styls
- filters should be independent, should not sharing state with other filters.
- filters do not know the identify of their unsteams and downstreams filters.
Common specializations
- pipelines restricting linear sequences of filters
- bounded pipes, restricting the amount of data on a pipe
- typed pipes, requre data passed between two filters have a well-defined type.
Examples: Pipe&Filters
- Unix shell
- compiler
- signal processing domains
- functional programming
- distributed systems
2. Data Abstraction and Object-Oriented Organization
- Components: objects or an abstract data type, data representations and their associated primitive operations encapsulated.
- Connectors: function and procedure invocations.
Advantage
- object can hide its representation from its clients
- change the implementation without affecting those clients.
- allow designer to decompose problems into collections of interacting agents.
Disadvantage
- One object must know another object's identify
- Side effect problems
3. Event-based, implicit invocation
Alternative integration technique:
- implicit invocation
- reactive integration
- selective boardcast
Usage:
- actors
- constraint satisfaction
- daemons
- packet-switched networks
4. Layered Systems
5. Repositories
References
Garlan & Shaw paper "Introduction to Software Architectures" as covered in the previous Reading Discussion: Chapters 1, 2 and 3 (pages 1 - 17) and Chapter 5 (pages 36 - 37).