290 likes | 638 Views
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.
E N D
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 • 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. • 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. • 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. • Motorola: introduced 180 services, monitoring projects, and has an average of 50 rules, covering everything from credit card transactions to warranty services.
References • Barry, Douglas K. Web services and service-oriented architectures: the savvy manager's guide. Morgan Kaufmann, 2003. • http://msdn.microsoft.com/en-us/library/ee658117.aspx#ServiceOrientedStyle • http://www.opengroup.org/soa/source-book/soa/soa_features.htm#tbl1 • http://www.uwplatt.edu/csse/courses/prev/csse411-materials/s11/dubeya_Service%20Oriented%20Architecture.pptm • http://www.exforsys.com/tutorials/soa/soa-disadvantages.html • http://www.zdnet.com/blog/service-oriented/ten-examples-of-soa-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
Disadvantages Advantages Reusability More reliable systems Increases productivity Reduction in development cycle time Maintenance cost for component increases Components can be pricey
Examples • Enterprise JavaBeans • Component Object Model (COM) • .NET model Holiday Reservation System
References • http://en.wikipedia.org/wiki/Component-based_software_engineering • http://www.ijcaonline.org/volume2/number1/pxc387855.pdf • http://www.cic.unb.br/~genaina/Dependability/Aulas/Aula2.pdf • http://geekswithblogs.net/chrisfalter/archive/2010/09/05/soa-vs.-component-based-architecture.aspx • 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_architecture • 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, general-purpose 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 database 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 • http://msdn.microsoft.com/en-us/library/ee658117.aspx • https://cs.uwaterloo.ca/~gweddell/cs446/NewArch.pdf • http://www.onjava.com/pub/a/onjava/2005/01/26/soa-intro.html?page=1 • http://research.cs.queensu.ca/~ahmed/home/teaching/CISC322/F08/slides/CISC322_03_ArchitectureStyles.pdf • http://www.onjava.com/pub/a/onjava/2005/01/26/soa-intro.html?page=1 • http://sunset.usc.edu/classes/cs578_2014b/05_Architectural_Styles.ppt • http://msdn.microsoft.com/en-us/library/aa480021.aspx#aj1soa_topic3