Software Architecture Styles - Department of Computer Science

advertisement
Software Architecture Styles
Service Oriented Architecture (SOA)

Break software into
Services

Services are very
loosely coupled

Services hide
information about how
they work

An application can
string together many
services to provide
functionality.
Layout of Service Oriented Architecture
Benefits

Organizational flexibility: Loosely coupled services ease the integration
into other applications.

Interoperability: Services are able to understand each other despite the
language they were written in.

Reusability & Maintainability – Changes made to one component in SOA
will not ripple outward and affect others. Reusable services can be easily
plugged into new applications without having to test them.
Drawbacks

Not suitable for Graphical User Interface functionalities.
(i.e. Map manipulation)

Stand-alone or short lived applications that do not require
request and response (i.e. word processing)

Increased complexity in basic understanding and managing
of SOA

Security is an issue as it must be considered at service level
rather than application level
Examples
1.
National Aeronautics and Space Administration: streamlines access
to its mounds of data, as well as link users of the data to the
services they need to process the data.
2.
Harvard Medical School (and its hospital) : shares medical data by
building an SOA involving about 25 categories of Web services
shared between 400 different departments with 14,000 employees.
3.
T-Mobile: uses SOA to work effectively with third-party content
providers such as Time Warner and the Bertelsmann Group to
deliver services to customers.
4.
Motorola: introduced 180 services, monitoring projects, and has an
average of 50 rules, covering everything from credit card
transactions to warranty services.
References
1.
Barry, Douglas K. Web services and service-oriented architectures:
the savvy manager's guide. Morgan Kaufmann, 2003.
2.
http://msdn.microsoft.com/enus/library/ee658117.aspx#ServiceOrientedStyle
3.
http://www.opengroup.org/soa/sourcebook/soa/soa_features.htm#tbl1
4.
http://www.uwplatt.edu/csse/courses/prev/csse411materials/s11/dubeya_Service%20Oriented%20Architecture.pptm
5.
http://www.exforsys.com/tutorials/soa/soa-disadvantages.html
6.
http://www.zdnet.com/blog/service-oriented/ten-examples-ofsoa-at-work-right-now/508
Component-Based Architecture
What is it?

Emphasizes on separation of concerns where each software
component is a software package, service, or a resource
that contains related functions.

Component Interface is a set of methods supported by a
component.

The components are put together to create one system.

This concept is the same when a car is being assembled,
there is prefabricated tires, wheels, stirring wheels, etc.
What problem does it solve?

Time consumption

Confusion of where the bug/error is located

Maintenance of the system
Advantages
Reusability
 More reliable systems
 Increases productivity
 Reduction in
development cycle time

Disadvantages

Maintenance cost for
component increases

Components can be
pricey
Examples

Enterprise JavaBeans

Component Object Model (COM)

.NET model
Holiday Reservation System
References
1.
http://en.wikipedia.org/wiki/Componentbased_software_engineering
2.
http://www.ijcaonline.org/volume2/number1/pxc387855.pdf
3.
http://www.cic.unb.br/~genaina/Dependability/Aulas/Aula2.pdf
4.
http://geekswithblogs.net/chrisfalter/archive/2010/09/05/soavs.-component-based-architecture.aspx
5.
http://www.seas.gwu.edu/~bell/csci210
lectures/components.pdf
Interpreter Architecture
What is it?
 Parses and executes input commands, updating the
state maintained by the interpreter [6]
What Problem does it solve?
 Suitable when the programming language or machine
for implementing a solution is not available
How does it solve the problem?
 Interpreter reads program in some language,
interprets it into another language and a component
stores the program’s current state [4]
Elements of the Architecture
 Components: Command interpreter,
program/interpreter state, user interface
 Connectors: Procedure calls, shared state
 Qualities Yielded: Portability
 Cautions: May be slow
Advantages and Disadvantages
Advantages
Simulates hardware that is not implemented
Supports portability across different platforms
Disadvantages
Indirection slows down execution
Examples
 Java Virtual Machine
 Lisp
Shared Nothing Architecture
What is it?
 Form of distributed computing
 Each node is independent and self-sufficient
 Mainly used in web development and database
management
What Problem does it solve?
 Avoids a single point of failure
 No centralization
How does it solve the problem?
 None of the nodes share disk memory or storage
 Queries go to the node that contains the information
Advantages and Disadvantages
Advantages

Scalability
 More

space simply requires adding more nodes
Reliability
 Faults
in one node doesn’t affect the others
Disadvantages

Cost


Nodes, communication links, maintenance/upgrades
Efficiency

Partitioning data leads to load imbalance
Example
Domain Name System (DNS) Server Hierarchy
References

http://www.sersc.org/journals/IJEIC/vol2_Is4/15.pdf

http://en.wikipedia.org/wiki/Shared_nothing_architectur
e

http://www.scaledb.com/pdfs/WP_SDvSN.pdf
Database-Centric Architecture
What is it?
 Refers to software in which databases play a crucial role
 Generally, any software that uses a standard, generalpurpose relational DBMS
What Problem does it solve?
 Programs need to manage (edit, store, delete) large amounts
of data
Other architectures make it impossible for this process to
exist, and if they do, make it a resource excessive process
How does it solve the problem?
 Allows for data to be stored in a secure location


Utilizing various algorithms, this data is always available in a
timed matter
Advantages and Disadvantages
Advantages

Drive as much work down into the database management
system as possible

Business rules can be defined as part of the database

Can take advantage of SQL-only capabilities

Can gain flexibility and performance over traditional
program-centric practices
Disadvantages

Many people aren’t as familiar with the approach, so a
learning curve is necessary

Adding a DBMS on to your application may add unnecessary
bloat
Example

a company named Base
One that develops
software
for constructing databas
e applications
uses database-centric
architecture because of
the grid and cluster
computing, and explains
how this design provides
enhanced security,
fault-tolerance, and
scalability
Peer-to-peer
What is it?
 Type of decentralized and distributed
architectural network that depends only
individual nodes called “peers” as both
suppliers and consumers of resources
What Problem does it solve?
 No main server for receiving and delivering all
the requests, instead the workload is
distributed to all peers. This architecture
made it possible for the internet to exist in
the very beginning. [3]
How does it solve the problem?
 It does not required a centralized server that
hosts its files, since everyone has access to
each other’s files through FTP (File Transfer
Protocol) [4]
Advantages and Disadvantages
Advantages

More reliable as central dependency is eliminated

Overall cost of building and maintaining is comparatively
less
Disadvantages

The whole system is decentralized making it difficult to
administer

Security in the system is very less

Data recovery and backup is difficult
Examples

Most modern applications still follow the early type of
programs like Napster. They use peer-to-peer are related
to sharing files, most of the time illegally.

Another modern application is digital currencies, where
every client owns a wallet with currency that only exists
on every client’s wallet. Kind of like real money, every
person has money that is validated once you buy
something and it’s taken away from you.
References
1. http://msdn.microsoft.com/en-us/library/ee658117.aspx
2. https://cs.uwaterloo.ca/~gweddell/cs446/NewArch.pdf
3. http://www.onjava.com/pub/a/onjava/2005/01/26/soa-intro.html?page=1
4. http://research.cs.queensu.ca/~ahmed/home/teaching/CISC322/F08/slides
/CISC322_03_ArchitectureStyles.pdf
5. http://www.onjava.com/pub/a/onjava/2005/01/26/soa-intro.html?page=1
6. http://sunset.usc.edu/classes/cs578_2014b/05_Architectural_Styles.ppt
7. http://msdn.microsoft.com/en-us/library/aa480021.aspx#aj1soa_topic3
Download