Architectural Styles: Understanding Patterns in Software Architecture
This text explores various architectural styles in software design, emphasizing their complexity and abstract nature. It highlights how these styles function as patterns rather than rigid frameworks, offering advantages and disadvantages to their use. The primary styles discussed include Layers, Dataflow (Pipes and Filters), and Object-Oriented, each with unique applications in system architecture, particularly in music improvisation. Learning and selecting an appropriate architectural style is essential for efficiency and effectiveness in software projects.
Architectural Styles: Understanding Patterns in Software Architecture
E N D
Presentation Transcript
Architectural Styles SAIP 5
Styles are Patterns • Bigger than design patterns • More abstract than reference models • domain independent • not a particular design • rules for design
Styles are Patterns • Similar • need examples to understand • must use before you understand fully • advantages and disadvantages • every use is different • many variations
Styles are patterns • Different • so big, and with so many variations, that it is better to think of them as a set of patterns Pattern Oriented Software Architecture • so big that you could write a book on each one • so big that people tend to know just a few
Three Styles in One System • Layers • Dataflow (Pipes and Filters) • Object-Oriented
The System • Framework for music improvisation • Bill Walker • Two applications • Jazz piano duets • Extreme modern electronic improvisation http://datura.cerl.uiuc.edu/BillWalker/ dissertation/Dissertation.html
The Layers Control Music transformation Music Representation Hardware
Dataflow architectural style • Components are filters • Filters transform input to output • Filters don’t • share state • know identity of input or output • Example: Streams
Advantages of dataflow • Easy to understand • Easy to change • Easty to maintain • Components are reusable • Handle parallelism well
Disadvantages of dataflow • Not good for interactive processing • Doesn’t handle separate but related streams very well. • Doesn’t model state very well.
Music Improvisor MIDI Chord Finder chords Sequence Finder Keyboard sequences Transformer chords Chord Builder MIDI out sequences
Dataflow • Pull • getNext() • multiple inputs easy, multiple outputs hard • Push • putNext(data) • multiple outputs easy, multiple inputs hard • Pipes and filters • filter is a process • less efficient
Data Representation MusicalObject * * * Midi Event Note Chord Sequence
Dataflow Stream Chord Builder Retrograde Keyboard Chord Finder Sequence Finder
Use of OO Techniques • Polymorphism makes it easy to make new combination of components • At runtime! • Inheritance makes it easier to make new component
Summary: 3 styles • Layers divides system into three parts • Dataflow organizes one layer • OOP is used to describe data (bottom layer), provide reusable components for dataflow system (middle layer) and to implement the control system (top layer).
Criticism • SAIP claims that you decide the qualities that you want and then pick a style • but many styles for each quality • but many other considerations in picking style • which ones you know • compatibility with other architectural choices • styles are more complicated than they indicate
Summary • Architectural styles are very important • More complex than indicated by book • It takes a long time to learn a new style, but it is worth it • We need better descriptions of the styles!