Title: Architecture
1Architectural patterns
2Patterns
- Architectural patterns
- Fundamental structural organization for software
systems. - High-level subdivision of the system.
- Highest level of pattern
- Design patterns
- Organization of classes
- Intermediate level of pattern
- Idioms
- Organization within a single class or a few
classes - Lowest level of pattern
- Some architectural patterns
- Layers
- Pipes and filters
- Broker
- Model-View-Controller (MVC)
- Master-slave
3Categories of architectural patterns
- From mud to structure
- Patterns Layers, Pipes and filters
- Distributed systems
- Patterns Broker, Master-Slave
- Interactive systems
- Patterns Model-View-Controller (MVC)
4Architectural Pattern - Layers
- Decompose overall system task into cooperating
subtasks Examples - TCP/IP, and other protocol stacks
- Java application, JVM, OS, physical machine
- Information systems Presentation, Controller,
Model, Data - Upper layer asks lower layer for service
- Interfaces between layers must be stable
- Standardization Public or proprietary
- Java interface is a keyword of the language
- Error handling
- Exceptions
- Special values for signaling errors, like null or
-1
5Layers consequences
- Benefits
- Reuse of layers
- Support for standardization
- A network protocol specifies a layer, but does
not implement it! - Dependencies are kept local
- Exchangeability
- An implementation of a layer can be exchanged
with another implementation - With the same interface
- Liabilities
- Lower efficiency
- Difficult to establish correct granularity of
layers - Layers inside layers might help
6Architectural Pattern - Pipes and filters
- System process a stream of data.
- Each processing step is encapsulated in a filter
component. - Examples
- A shell in an operating system, like Linux/UNIX
or MS-DOS - find a data.txt sort more
- Find all lines with a in data.txt sort the
lines show the lines, one screen at a time - Compilation of a Java program
- Lexical analysis syntax analysis semantic
analysis code generation - Generally
- Data source filter filter data sink
- The vertical bar is called a pipe.
- Implementation
- Cooperating processes
- No shared memory Uses standard input (System.in)
and standard output (System.out) - Cooperating threads
- Shared memory Bounded buffers
- Example The bounded buffer exercise
7Pipes and filters, consequences
- Benefits
- Flexibility by filter exchange
- Plug-in a new filter, and you have another
application - Flexibility by recombination
- Reuse of filter components
- Useful for prototyping
- Efficient in parallel processing
- Liabilities
- Sharing information is hard
- Data transformation overhead
- Data must be adapted to the next filter
- Error handling
8Distributed systems
- A layered system can be distributed
- Each layer running on a separate computer
- Called multi-tiered system
- A pipes and filters system can be distributed
- Each filter running on a separate computer
- Pipes are network connections
9Architectural Pattern - Broker
- Coordinates communication between distributed
components - Decouples clients and servers
- Broker features
- Register / deregister servers
- Locate servers
- Forward messages
- Examples
- CORBA
- Common Object Request Broker Architecture
- Some chat / messenger systems
10Broker, consequences
- Benefits
- Location transparency
- Clients do not need to know where servers are.
- Servers can be moved to other computers.
- Changeability and extensibility
- Servers can be changed
- Keep the same interface
- Reusability
- Components can be reused in other application
- Liabilities
- Efficiency
- Fault tolerance
- Broker is not working gt nothing is working
11Architectural Pattern Master-Slave
- Divide and conquer
- Master use same subservice from slaves
- Master functions
- Split work
- Call slaves
- Combine results
- Examples
- Parallel processing
- Fault tolerance
- Computational accuracy
12Master-Slave, consequences
- Benefits
- Faster computation
- Split the problem over threads and machines.
- Easy scalability.
- Robustness
- Slaves can be duplicated
- Correctness
- Slave can be implemented differently to minimize
sementic errors - Liabilities
- Communication overhead
- Not all problems can be divided
13Interactive systems
- Interaction with the user
- Through graphical user interfaces
- System responds to events (user inputs)
- Functional core of the system must be kept
independent of the user interface - You must be able to add a new user interface to
the system. - A single system can have many user interfaces
- PC interface
- Web interface
- PDA interface
- Mobil phone interface
14Architectural Pattern Model-View-Controller (MVC)
- Divides an application into 3 parts
- Model
- Core functionality and data
- View
- Displays information to the user
- Same model component can have many views
- Controller
- Handles user input
- User interface View controller
- Changes in the model are automatically propagated
to the view - Use observer-observable design pattern
15Model-View-Controller in Java
- The Java GUI frameworks Swing (and AWT) uses a
modified version of MVC - Each Swing component has
- Model
- Holding the state of the component
- View
- The visual part
- Controllers
- Are attached by programmers
- Example JButton
- Model ButtonModel getModel()
- View ButtonUI getUI()
- Controllers addActionListener(),
addItemListener(), attChangeListener() - Example, JavaBeans AccountConstrained (Model)
AccountFrame (View controller)
16Model-View-Controller, consequences
- Benefits
- Multiple views for the same model
- Synchronized views
- Pluggable views and controllers
- Exchangeability of look and feel
- Port to a new windowing platform does not change
the model. - Liabilities
- Increased complexity
- Excessive number of updates
- Intimate connection between view and controller
- Close coupling of (view, controller) and model
- Both view and controller make calls to model
17Distributed systems
- Advantages
- Resource sharing
- Printers, files (HTTP), etc.
- Openness
- Using standard protocols
- Scalability
- Fault tolerance
- Replication
- Disadvantages
- Complexity
- Security
- Manageability
- Unpredictability
18Client-server vs. distributed objects
- Client-Server
- Clients and servers are treated differently
- Distributed objects
- Interacting objects
- Location is irrelevant (taken care of by
middleware) - Build on top of client/server
- Like distributed library
- Java RMI
- CORBA
19Service-oriented architecture
- SOA
- Web services
- HTTP for transportation
- SOAP structured data exchange
- UDDI for discovery
- WSDL for description
- XML used everywhere
- Service registry
- Service provider
- Service requestor
20References
- Buschmann et al. Pattern-Oriented Software
Architecture, Volume1, Wiley 1996 - Martin Fowler Patterns of Enterprise Application
Architecture, Addison Wesley 2003 - Ian Sommerville Software Engineering, 7th
edition, Addison Wesley 2004 - 11. Architectural Design
- 12. Distributed System Architectures
- Lethbridge Langaniere Object-Oriented Software
Engineering, 2nd edition, McGraw-Hill 2005 - 9. Architecting and designing software