220 likes | 314 Views
EEE 243B Applied Computer Programming. Software architecture I Communicating your design. Review. Name the 5 phases of the software lifecycle What is the difference between verification and validation?. Outline. What is architecture? Software architecture Pipes and filter
E N D
EEE 243BApplied Computer Programming Software architecture I Communicating your design
Review • Name the 5 phases of the software lifecycle • What is the difference between verification and validation? Maj JGA Beaulieu & Capt MWP LeSauvage
Outline • What is architecture? • Software architecture • Pipes and filter • Layered architecture Maj JGA Beaulieu & Capt MWP LeSauvage
What is architecture? • Engineers must be able to communicate their designs and ideas early in a project to be effective • In most engineering disciplines, designs are communicated with blueprints • At the highest level of the blueprints the drawings show a high level abstraction of the entire project • These high level abstractions show the architectural style of the project Maj JGA Beaulieu & Capt MWP LeSauvage
What is architecture? • Architectural drawings convey more than what the end product will look like; they communicate engineering intent • For example, the architecture of a bridge shows what it will look like and also how the bridge will be supported, (suspension, compression, cantilever,…) without the details of how this will be done • Words like cantilever describe an architectural style or architectural idiom that civil engineers understand and study Maj JGA Beaulieu & Capt MWP LeSauvage
Software architecture • In software engineering there are no blueprints • However, software engineers still require a way of communicating their designs and their intent • The study of software architecture is currently in its infancy Shaw and Garland, 1996 • Although S/W architecture has not yet matured, there are several ideas that can be useful to help us communicate our designs Maj JGA Beaulieu & Capt MWP LeSauvage
Software architecture • In the several decades that software products have appeared, several architectural idioms have been identified because they keep reappearing and are proven to work • Such idioms are: • Pipes and filters architectures • Layered architectures • Data abstractions • Repositories • Client-server architectures • Process Control Systems Maj JGA Beaulieu & Capt MWP LeSauvage
Software architecture • Software architectures help us: • Identify how the components will interact with each other • Show how data and information is exchanged between components • By providing a set of symbols and a vocabulary to describe our systems • Rules for using the symbols and the vocabulary • When we specify an architectural style, the design and implementation must respect this architecture Maj JGA Beaulieu & Capt MWP LeSauvage
Software architecture • So far, we have seen two kinds of diagrams that can help us describe and communicate our systems: • Functional hierarchy: shows the various functions in our system and their relative relationships to one another (caller-server relation) • Flow charts: low-level representation of the logic of an algorithm • Architectural diagrams are at a higher level of abstraction than functional hierarchies Maj JGA Beaulieu & Capt MWP LeSauvage
Software architecture • We also have talked about modules; which allow us to apply the principle of information hiding • As we build systems, the modules we use can also be represented in a hierarchy similar to a functional hierarchy to show dependency relationships • However, modules can also be used as building blocks in software architectural styles Maj JGA Beaulieu & Capt MWP LeSauvage
Pipes and filters • Perhaps one of the simplest architectural style is one that originated in batch systems: the pipes and filters architecture • This style is used extensively for programs written in the Unix shell • In a pipes and filters architecture, data is seen as a continuous stream which is transformed by components (filters) Maj JGA Beaulieu & Capt MWP LeSauvage
Pipes and filters • Filters are independent of each others; the state of each filter is unknown to the others • A filter does not “know” which other filters are upstream or downstream • Output at a filter can start before input is completely done (continuous flow) • The connectors in a pipes and filters architecture represent data that is feed and collected continuously to and from filters; hence the name pipe • Pipes and filters can be typed or un-typed Maj JGA Beaulieu & Capt MWP LeSauvage
Pipes and filters Filters Pipes Maj JGA Beaulieu & Capt MWP LeSauvage
Pipes and filters • Pipes and filters architecture is useful for electrical engineers that use software as part of their solutions • Many components used in data acquisition, signal processing, communication systems, radars, power management and several other implementations, use software filters because they are highly flexible • The continuous flow of data and transformations are a good fit for processing digitalized signals Maj JGA Beaulieu & Capt MWP LeSauvage
Pipes and filters • Once developed, filters can be reused: i.e. a low pass filter that has been written can be reused for different tasks by changing the filtering controls (constants) • Early language compilers followed the pipes and filters architecture • One of the company in the world that uses the pipes and filters architecture in their products is Tektronix – in their digital oscilloscopes Maj JGA Beaulieu & Capt MWP LeSauvage
Layered architectures • Another architectural style that has been extensively used over the years is the layered architecture • Dijkstra first introduced the layered architecture when he designed the T.H.E. Operating System • Dijkstra proposed that operating systems should be a hierarchy of layers • Each layer has its own responsibility and provides a service to the layer above it. Maj JGA Beaulieu & Capt MWP LeSauvage
Layered architectures Layer n Layer n-1 … Layer 2 Layer 1 Layer 1 Layer 2 Maj JGA Beaulieu & Capt MWP LeSauvage
Layered architectures • Layered architectures should be used when: • You have identified that your system needs to isolate classes of services • Provide access control mechanisms or several levels of security • Need to hide hardware or software implementation to reduce complexity • Increase platform portability by replacing lower layer(s) depending on the platform used • Need to account for asynchronous signals and high variation in response times Maj JGA Beaulieu & Capt MWP LeSauvage
Layered architectures • The type of hierarchy in a layered architecture differs from the simple modular or functional hierarchies because the layers redefine the relationships • The relationships in a functional hierarchy identify which functions are used by other functions • The relationships in a layered architecture identify the functions that provide services and the functions that can call those services Maj JGA Beaulieu & Capt MWP LeSauvage
Layered architectures • The functions in a layer provide services to the functions in the layer above it; and are clients to the functions in the layer below it. My_prog Fctn 1 Fctn 2 Fctn 3 Fctn A Fctn B Maj JGA Beaulieu & Capt MWP LeSauvage
Layered architectures • Layered systems can be used for: • projects that implement protocols (communication, transformation,…) • GUI systems to separate the user interface functions, from the solution • Robotics systems, to separate responsibilities in layers – Decision making, High level navigation, Map making, Sensor integration, Sensor reading, robot control Maj JGA Beaulieu & Capt MWP LeSauvage
Quiz Time • Why do we use architectural idioms (styles) in software engineering? • Are the filters inside a pipes and filters architecture, in a hierarchy? • What is the difference between a functional hierarchy and the hierarchy in a layered architecture? Maj JGA Beaulieu & Capt MWP LeSauvage