01-11-2012, 01:22 PM
Software Tools Design
Software.ppt (Size: 62 KB / Downloads: 22)
Software Architecture
As size/complexity of software increases, design/spec of overall system structure becomes more significant than the choice of algorithms/data structures
Currently not a well-defined terminology available for software arch.
but good software engineers do use architectural principles
Software architecture: defines a system in terms of computational components and interactions among them.
Architectural Elements
components: define computation,data storage
clients/servers, databases, filters,...
connectors: define the interactions between components
procedure calls, pipes, event multicast, …
configurations: collections of interacting components and connectors
diagrams of boxes and arrows, formal mathematical models
constraints: provide semantic understanding of the style requirements
what makes the style correct, legal, efficient, secure, reliable
Architectural Styles
Dataflow systems
batch sequential
pipes and filters
Call-and-return systems
main program and subroutine
OO systems
Hierarchical layers
Independent components
communicating processes
event systems
This class covers:
Pipes and Filters: Unix shell
Object-Oriented: Java
Client/Server:
CGI programming, Perl, XML
Java programming: Applets, Servlets
Event-based: Java event model, AWT
observer, command, chain of responsibility design patterns
Component-based: Javabeans
Common Framework
Use a common framework in order to compare different arch. styles
framework: collection of computational components (components), description of interactions (connectors), set of (constraints) on how they can be combined
For each style:
structural pattern
underlying computation model
essential invariants
common examples
advantages/disadvantages
common specializations
Pipes & Filters
Components:
filters (processing components): incrementally transform data (stream to stream) from a set of inputs to a set of outputs.
Connectors:
pipes: conduits for the data stream. transmit output of one filter to input of next filter
Invariants:
filters (components) must be independent entities;
little context info is utilized, no state info preserved between instantiations
filters do not know the identity of their upstream and downstream filters.
Common specialization
pipelines: restrict topologies to linear sequences of filters
bounded pipes: restrict amount of data
typed pipes: restrict type of data that can pass between filters
Examples: unix shell, compilers