software architecture cs 4311 spring 2010 class lecture
Post on 18-Dec-2015
221 views
TRANSCRIPT
Example Software Architectures
1. Batch Sequential2. Blackboard3. Client Server4. Database-centric 5. Distributed
Computing6. Event driven7. Interpreter8. Monolithic
application
9. Peer-to-peer10. Pipe and Filter11. Plug-in12. Service-oriented13. Search-oriented14. Space-based15. Shared nothing16. Three-tier model17. Rule evaluation
Batch Sequential Architecture• What is it?
– A series of dedicated and independent components that transforms data in a sequential manner (Each component needs to finish its task before the next one can start).
• What problem does it solve and how?– Solve complex tasks
• by divide it into several easier tasks.– Modifiability/Maintainability
• Easy to change/fix the behavior of a component.– Reusability
• By only changing the components that interact with the environment the system can work on different structures.
• Example– Run on a web browser– Run as an independent application
– Flexibility• Additional components are easy to integrate.
Batch Sequential Architecture
• Actors– The actors consist of the independent components
(programs) that run in sequence to achieve the ultimate desired output of the system.
– Each components is responsible for a particular task and supplies the next component with the intermediate data once it has completed its task.
• How do they relate to each other?– They are related to each other by the data that they
each transform.
• Behavioral pattern
• Blackboard uses a generalized observer that allows multiple readers and writers. This helps communicate information system-wide.
• Used to handle complex, ill-defined problems where the solution is the sum of its components.
• Traditionally used in the development of systems with artificial intelligence techniques
• Solves nondeterministic problems such as decision support, signal processing and speech recognition
• (http://informingscience.org/proceedings/InSITE2005/I58f73Metz.pdf)
• Knowledge source – provides specific expertise that is needed by the application.
• Blackboard – in a way it can be thought of as a “dynamic” library of contributions made by knowledge sources
• Control – controls what problem solving activity goes on in the system. “moderator”
• Knowledge sources contribute their expertise and gathered knowledge to the Blackboard.
• Knowledge sources may also interact and with other ones to allow flexibility in the application.
• Control decides when knowledge sources may perform their operations.
Client Server Architecture
• How the problem is solved
• The actors in the Client Server Architecture– Client– Server– Network
Database-CentricWhat is it?• It is an alternative approach to a description of a design. We can use it
for different programming applications; it provides a higher degree of reliability, efficiency, and scalability than conventional approaches to distributed processing.
What problems does it solve?• Database-centric solves data management and processing of it. Critical
databases applications always become necessary to introduce a global transaction monitor, which can significantly reduce performance and scalability, but not with database centric.
How does it solve the problem?• Computes all the data to a single place, in this case the database.
Paden PortilloOscar ChavezEmmanuel Moreno
DATABASE
SERVER 1 SERVER 2
Client 1
Client 2
Client 3
Client 4 Client
5
Client 6
Actors and their roles
Benefits:Reduces amount of code, Reduces development Time, Reduces network traffic, Reduces complexity of applications
SETI@HomeA Distributed Computing Case Study
• Distributed computing (AKA grid computing) is a software architecture that makes use of the hardware on several computers.
• Distributed computing is primarily used to solve those problems that require exceptionally heavy computation.
• SETI@Home was the first project that demonstrated the feasibility of distributed computing to solve these problems.– Indeed, this was one of the primary goals of SETI@Home.– The specific problem SETI@Home is used for is to detect
intelligent life outside of Earth.
SETI@HomeA Distributed Computing Case Study
• The actors of SETI@Home:– Data - Astronomical data collected at the Arecibo Observatory– Central Server - Sends data to personal computers through the Internet– Personal Computers - Analyze received data using processor cycles
that are unused by the owner of the computer (e.g. when the computer is idle) to detect evidence of intelligence in data
• The architecture of SETI@Home allows researchers to do massive computations at a minimal cost by forgoing the need of a supercomputer.
• The software written for SETI@Home requires 2 components:– Central server software manages the distribution of data across
personal computers and the collection of analyzed data.– Personal computer software performs analysis and monitors processor
usage, ensuring that analysis is done only when the processor is not otherwise needed.
Event Driven Architecture
• Components in the system react to certain events.– For example
• State changes• I/O events
• Creates responsiveness in a changing environment• Actors
– Agents: components in a system that generate events– Sinks: event consumers
• Responsibility of applying action as soon as event is present• May act as a filter to another component• May provide an action based the given event
Event Driven Architecture
• Characteristics– Facilitates responsiveness – Works great in un-normalized unpredictable
environments • Event flow
– Sensing of fact– Technical representation in the form of an event– Reaction(s) to set event
• Example– Email application displays a message stating that a
new e-mail has been received
Event Driven Architecture
Agent
Sink 1 Sink 2 Sink 3 Sink n-1 Sink n
event
action action action action
event transformation
Interpreter
• Behavioral design pattern used to evaluate sentences in a language.
Problem
A class of problems occurs repeatedly in a well-defined and well understood domain. If the domain were characterized with a "language", then problems could be easily solved with an interpretation "engine".
Solution• Maps the domain to a language, the language to a grammar, and
the grammar to a hierarchical object-oriented design.
• Each symbol is represented as a class. The problem is represented as a tree where the leaves are terminals and the inner nodes are combination rules. The problem is solved by traversing the tree until only terminals are derived.
Actors• Abstract expression declares the abstract interpreter to all nodes
• Terminal expression needs one instance per terminal in a sentence
• Non-terminal expression maintains the instance variable for each rule
• Context contains the information global to the interpreter
• Client builds an abstract syntax tree representing the sentence
Sources
• http://en.wikipedia.org/wiki/Interpreter_pattern• http://www.cs.purdue.edu/homes/jv/510s05/patter
ns-pt2.pdf• http://
alumni.media.mit.edu/~tpminka/patterns/Interpreter.html
• http://www.vincehuston.org/ps/hanoi_article.html
Single-Tier Architecture
• Concept of having user interface and application of data access in one single program.
• Only application is accountable for computations
• Simplest software configuration– No modularity
– Not a typical Software Engineering Concept
Why Monolithic Application?
• Low Cost– Less Complex – No need to develop external computational or
processing modules
• Simple and Quick design– Single independent application
• No need for future expansion of software– Not easily maintained
Peer-to-Peer Architecture
• A type of architecture in which each class has equivalent capabilities and responsibilities
• A class can collaborate with any other class and vice versa
• Every class has access to the resources needed
• Every class gives access to all its resources
• No Super-classes
Plug-in Architecture
• It is an architecture that allows a program to “look for” add-in functionality at startup and for the plug-in to cooperate with it.
• It solves the need for added functionality, reducing the size of an application, and allowing 3rd party developers to add features.
• Plug-ins are added to the application as they are needed.
Service-Oriented Architecture (SOA)
• What is it?– Provides access to multiple components or
functions – Client doesn’t know what components or how
functionality is implemented
• Problem– Client needs access to multiple features however
the client shouldn’t know how those features are implemented
SOA
• Solve the Problem– Provides an interface that obscures the components
and gives the client a single access point.
• Actors– Client– Components are outside systems
• Relate– Client sends request to the service (the system)– Service sends request to the correct components
Search-Oriented Architecture
• Typical multi-tier architecture– A type of client-server architecture
Search-Oriented Architecture
• Data tier– Either replaced or placed behind another tier– New tier contains a search engine and search
engine index
• Queries– No longer done using database management
system– Done through use of search engine
Search-Oriented Architecture
• Benefit– Increase in response time– Creation of large, dynamic datasets
• What is it?– A type of architecture based on the use of spaces, which can be
used to store data and communicate with several services inside an application, also known as a Processing Unit
• What problem does it solve?– Scalability
• How does it solve the problem?– Through parallel processing– Several Processing Units can be added dynamically since they
operate independently • What are the actors?
– The client, the space and the services• How do they relate to one another?
– The client writes an object to a space. The services inside the Processing Unit read the object from the space, modify it, and return it back to the space. The modified object is sent back to the client.
Shared Nothing (SN)
• Distributed computing architecture that utilizes message passing instead of shared-disk or memory method:▪ Have own private memory, input/output devices
independently▪ Are self sufficient▪ Share nothing across network
What is it• client-server architecture
• Three different tier-Presentation
Input/ output
-Business
Data processing
-Data Access
Read/Write
Three-tier Advantages
• Highly Cohesive and low coupling
• Allows change in modules with out effect on the other tiers
• Encapsulates tasks
What should you know about software architectures (e.g., for the exam)?
• 16 architectures were presented in class.• You should know about each of them.
– Name– Organization of components– How components fit together
• Be able to identify an architecture from a system description
• Be able to design a system using an architecture• Be able to choose an appropriate architecture