Software Tools Design
Software.ppt (Size: 62 KB / Downloads: 15)
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.
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
pipes and filters
main program and subroutine
This class covers:
Pipes and Filters: Unix shell
CGI programming, Perl, XML
Java programming: Applets, Servlets
Event-based: Java event model, AWT
observer, command, chain of responsibility design patterns
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:
underlying computation model
Pipes & Filters
filters (processing components): incrementally transform data (stream to stream) from a set of inputs to a set of outputs.
pipes: conduits for the data stream. transmit output of one filter to input of next filter
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.
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