This document discusses various integration patterns for software architecture, including file transfer, shared databases, remote procedure calls, messaging, and service-oriented architectures. It describes the advantages and challenges of each pattern, and covers related topics like WS-* specifications, SOAP, and REST.
The document discusses software architecture and modularity. It describes a "Big Ball of Mud" architecture with no constraints that can be quick to develop but leads to high maintenance costs. Modular decomposition is recommended, with modules having well-defined interfaces and responsibilities. Key recommendations for modular design include high cohesion, low coupling between modules, and following principles like single responsibility, open/closed, and dependency inversion.
The document discusses various enterprise information systems and business architectures. It describes key systems like ERP (Enterprise Resource Planning), CRM (Customer Relationship Management), SCM (Supply Chain Management), PLM (Product Lifecycle Management), ECM (Enterprise Content Management), BPM (Business Process Management), and EAI (Enterprise Application Integration). For each system, it provides details on what it is used for, advantages, challenges, and examples of applications.
This document provides an overview of software architecture concepts including:
- Definitions of software architecture as the high-level structure of a software system and main design decisions.
- Taxonomies including architectural styles, patterns, quality attributes, and constraints.
- Descriptions of common architectural elements like components, connectors, and views.
- Discussions of prescriptive versus descriptive architecture, architecture evolution, and recovery.
Hugtakið hugbúnaðararkítektúr er yfirhlaðið orð og þýðir mismunandi hluti fyrir mismunandi fólk. Við ætlum í þessum fyrirlestri að skilgreina ýmis hugtök tengd arkítektúr til að fá betri skilning á þessu. Við munum einnig skilgreina hvað agile arkítektúr þýðir eða hvað það þýðir ekki. Þá skoðum við monolith arkítektúr sem er hinn hefðbundi arkítektúr sem flestir nota í dag. Vandinn er sá að í dag eru kröfurnar meiri en þessi arkítektúr ræður við og því hafa menn verið að skoða aðrar leiðir eins og lightweight Service Oriented Architecture og hvernig smíða má hugbúnað sem þjónustur eða microapps eða microservice.
Við skoðum einnig lagskiptingu en það er elsta trikkið í bókinni og byggir á deila og drottna aðferðinni.
This document summarizes key aspects of .NET architecture for enterprises. It describes the roles and responsibilities of software architects, principles of architecture like separation of concerns and low coupling/high cohesion, and common architectural patterns. It also outlines common layers in applications like the business layer, services layer, data access layer, and presentation layer, describing what they are, responsibilities, and design patterns associated with each layer. The document provides guidance on how to design maintainable and testable systems with a focus on separation of concerns, low coupling between components, and following architectural best practices.
This document provides information on a course titled "Software Engineering" taught by Dr. P. Visu at Velammal Engineering College. The objectives of the course are outlined, including understanding software project phases, requirements engineering, object-oriented concepts, enterprise integration, and testing and project management techniques. Six course outcomes are also listed relating to comparing process models, requirements engineering, object-oriented fundamentals, software design, testing techniques, and project estimation and scheduling. The document then provides details on the 5 course units covering software process and agile development, requirements analysis, object-oriented concepts, software design, and testing and project management. Learning resources including textbooks and online links are also listed.
ArchJava is an extension to Java that connects software architecture and implementation by introducing new language constructs like components, ports, and connections. This ensures the implementation conforms to the architectural constraints and guarantees communication integrity. Key benefits include better program understanding and evolution by keeping architecture and code consistent. ArchJava aims to make architectural reasoning about code possible through communication integrity checks and other features.
This document discusses object-oriented programming concepts like classes, inheritance, and polymorphism.
It begins with an overview of classes, explaining that classes contain instance variables and methods. Classes can extend other classes through inheritance, allowing subclasses to override or add new functionality. References can point to objects of a class or any superclass.
The document then discusses polymorphism, where the decision of which method to call is determined at runtime based on the actual object type. This allows subclasses to be used through their parent class references. The summary cautions that direct concrete inheritance can cause issues if not used carefully, such as violating the Liskov substitution principle.
GOLC 2012 - On Standardizing the Management of LabVIEW-based Remote Laborator...Mohamed Tawfik
This document discusses standardizing the management of remote laboratories built using LabVIEW through remote laboratory management systems (RLMSs). It outlines the need for a standard application programming interface (API) layer to wrap LabVIEW-based remote labs and make them compatible with different RLMSs. The layer would define a common set of communication tools from LabVIEW, such as VI server and web services, to connect remote labs to RLMSs while addressing factors like simultaneous access, security, and session management. Developing such an API layer could help share and manage the many existing LabVIEW-based remote labs across various university platforms.
[2015/2016] Introduction to software architectureIvano Malavolta
This presentation is about a lecture I gave within the "Software systems and services" immigration course at the Gran Sasso Science Institute, L'Aquila (Italy): http://cs.gssi.infn.it/.
http://www.ivanomalavolta.com
A presentation on layered software architecture that goes through logical layering and physical layering, the difference between those two and a practical example.
The document describes a course on software engineering taught by Dr. P. Visu at Velammal Engineering College. It includes the course objectives, outcomes, syllabus, and learning resources. The key objectives are to understand software processes, requirements engineering, object-oriented concepts, software design, testing, and project management techniques. The syllabus covers topics like software processes, requirements analysis, object-oriented concepts, software design, testing, and project management over 5 units. Recommended textbooks and online references are also provided.
The document provides an overview of a software engineering course syllabus and objectives. The syllabus covers 6 units: software process and agile development, requirements analysis and specification, object oriented concepts, software design, testing and management, and learning resources. The course objectives are to understand software project phases, requirements engineering, object oriented concepts, enterprise integration, and testing/project management techniques. Students will learn to compare process models, formulate requirements engineering concepts, understand object oriented fundamentals, apply software design procedures, and evaluate testing techniques and project schedules.
The document provides an overview of learning the Unified Modeling Language (UML) 2.0. It discusses how UML 2.0 addresses the limitations of previous versions to better support model-driven architectures, executable UML, and interoperability between tools. It also describes the benefits of UML as a formal modeling language and introduces some of the basic concepts of UML including models, diagrams, degrees of UML usage, and how UML relates to different software development processes and views.
This presentation is about a lecture I gave within the "Software systems and services" immigration course at the Gran Sasso Science Institute, L'Aquila (Italy): http://cs.gssi.infn.it/.
http://www.ivanomalavolta.com
Upcoming Challenges in E-Learning & Online Learning EnvironmentsMohamed Tawfik
Upcoming challenges in e-learning and online learning environments include:
1) Transitioning to blended learning models that combine online and in-person instruction.
2) Integrating learning management systems with remote laboratories and services like Web 2.0 tools.
3) Developing mobile learning capabilities that incorporate location-based and user-based interactions in a new framework deployable on smart devices.
Software Architecture: introduction to the abstractionHenry Muccini
The document provides an introduction to software architecture concepts including:
- Software architecture is defined as a set of components and connectors communicating through interfaces along with architecture design decisions.
- Multiple views are used to describe architectures including logical, process, deployment, and more.
- Architectural styles like pipe-and-filter and layered styles guide architecture design.
- Careful architecture design is important as it impacts system properties like performance, scalability, and testability.
Software Engineering 101 provides an overview of key concepts in software engineering including:
- Software engineering is the application of a systematic approach to software design, development, and maintenance.
- Software architecture establishes the high-level structure of a system, while software development focuses on implementation details. Both are important.
- Common software architectures include client-server, peer-to-peer, REST, service-oriented, and multi-tier architectures.
- Popular software development methodologies include waterfall, iterative, agile (e.g. Scrum, XP), and design patterns help solve common problems.
- Software development also involves object-oriented programming, databases, testing, and release management.
The document describes an online examination system. It discusses the existing manual paper-based examination system and its drawbacks. The proposed system is an online examination system developed using ASP.Net and SQL Server that allows administrators to create exams and questions, and students to take exams online. Key features include exam and student administration, online question display and answering, automated result calculation and display.
This document provides an overview of various types of architectural standards including conceptual standards like IEEE 1471 and DoDAF that define viewpoints and views, notational standards like UML and SysML, and process standards like TOGAF and RUP. It discusses the benefits of standards in promoting interoperability and network effects while also noting drawbacks like limiting flexibility. The document advises deciding when to adopt a standard based on whether in the early or late phase of a project.
Modern Software Architectures: Building Solutions for Web, Cloud, and MobileDan Mohl
The document discusses modern software architecture trends for building web, cloud, and mobile solutions. It covers moving applications to the client using single page applications, using NoSQL databases, and designing applications using patterns like MVVM and CQRS. The document also discusses architecting for mobile by using responsive design, writing for both web and native platforms, and using services that are faster on mobile.
The document provides information on a course titled "Software Engineering" taught by Dr. P. Visu at Velammal Engineering College. It includes the course objectives, outcomes, syllabus, and learning resources. The objectives are to understand software project phases, requirements engineering, object-oriented concepts, enterprise integration, and testing techniques. The outcomes cover comparing process models, requirements engineering, object-oriented fundamentals, software design, and testing techniques. The syllabus covers topics like software processes, requirements analysis, object-oriented concepts, software design, testing, and project management over 5 units. Recommended textbooks and online references are also provided.
This document discusses fundamental concepts of software architecture, including:
- Breaking systems down into modular components through techniques like encapsulation, contracts, and decoupling.
- Scaling systems up through parametrization, simplicity, decentralization, and standard libraries.
- Conceptualizing at a higher level of abstraction using techniques like abstraction, hierarchical decomposition, specialization, formalization, and viewpoints.
- Best practices like making dependencies and transformations explicit, limiting freedom to avoid side effects, and testing semantics rather than syntax.
An Empirical Study on Collaborative Architecture Decision Making in Software ...Sandun Dasanayake
European Conference on Software Architecture 2016 - Architecture decision making is considered one of the most challenging cognitive tasks in software development. The objective of this study is to explore the state of the practice of architecture decision making in software teams, including the role of the architect and the associated challenges. An exploratory case study was conducted in a large software company in Europe and fifteen software architects were interviewed as the primary method of data collection. The results reveal that the majority of software teams make architecture decisions collaboratively. Especially, the consultative decisionmaking style is preferred as it helps to make decisions efficiently while taking the opinions of the team members into consideration. It is observed that most of the software architects maintain a close relationship with the software teams. Several organisational, process and human related challenges and their impact on architecture decision-making are also identified.
This document discusses REST (Representational State Transfer) and resource-oriented architectures. It provides examples of designing RESTful APIs and services using common REST constraints like URIs to identify resources, HTTP methods to manipulate resources, and resource representations. The key aspects covered are modeling the domain as resources, designing URIs, exposing a uniform interface, designing representations, and common interaction flows and error conditions.
This document provides information on a course titled "Software Engineering" taught by Dr. P. Visu at Velammal Engineering College. The objectives of the course are outlined, including understanding software project phases, requirements engineering, object-oriented concepts, enterprise integration, and testing and project management techniques. Six course outcomes are also listed relating to comparing process models, requirements engineering, object-oriented fundamentals, software design, testing techniques, and project estimation and scheduling. The document then provides details on the 5 course units covering software process and agile development, requirements analysis, object-oriented concepts, software design, and testing and project management. Learning resources including textbooks and online links are also listed.
ArchJava is an extension to Java that connects software architecture and implementation by introducing new language constructs like components, ports, and connections. This ensures the implementation conforms to the architectural constraints and guarantees communication integrity. Key benefits include better program understanding and evolution by keeping architecture and code consistent. ArchJava aims to make architectural reasoning about code possible through communication integrity checks and other features.
This document discusses object-oriented programming concepts like classes, inheritance, and polymorphism.
It begins with an overview of classes, explaining that classes contain instance variables and methods. Classes can extend other classes through inheritance, allowing subclasses to override or add new functionality. References can point to objects of a class or any superclass.
The document then discusses polymorphism, where the decision of which method to call is determined at runtime based on the actual object type. This allows subclasses to be used through their parent class references. The summary cautions that direct concrete inheritance can cause issues if not used carefully, such as violating the Liskov substitution principle.
GOLC 2012 - On Standardizing the Management of LabVIEW-based Remote Laborator...Mohamed Tawfik
This document discusses standardizing the management of remote laboratories built using LabVIEW through remote laboratory management systems (RLMSs). It outlines the need for a standard application programming interface (API) layer to wrap LabVIEW-based remote labs and make them compatible with different RLMSs. The layer would define a common set of communication tools from LabVIEW, such as VI server and web services, to connect remote labs to RLMSs while addressing factors like simultaneous access, security, and session management. Developing such an API layer could help share and manage the many existing LabVIEW-based remote labs across various university platforms.
[2015/2016] Introduction to software architectureIvano Malavolta
This presentation is about a lecture I gave within the "Software systems and services" immigration course at the Gran Sasso Science Institute, L'Aquila (Italy): http://cs.gssi.infn.it/.
http://www.ivanomalavolta.com
A presentation on layered software architecture that goes through logical layering and physical layering, the difference between those two and a practical example.
The document describes a course on software engineering taught by Dr. P. Visu at Velammal Engineering College. It includes the course objectives, outcomes, syllabus, and learning resources. The key objectives are to understand software processes, requirements engineering, object-oriented concepts, software design, testing, and project management techniques. The syllabus covers topics like software processes, requirements analysis, object-oriented concepts, software design, testing, and project management over 5 units. Recommended textbooks and online references are also provided.
The document provides an overview of a software engineering course syllabus and objectives. The syllabus covers 6 units: software process and agile development, requirements analysis and specification, object oriented concepts, software design, testing and management, and learning resources. The course objectives are to understand software project phases, requirements engineering, object oriented concepts, enterprise integration, and testing/project management techniques. Students will learn to compare process models, formulate requirements engineering concepts, understand object oriented fundamentals, apply software design procedures, and evaluate testing techniques and project schedules.
The document provides an overview of learning the Unified Modeling Language (UML) 2.0. It discusses how UML 2.0 addresses the limitations of previous versions to better support model-driven architectures, executable UML, and interoperability between tools. It also describes the benefits of UML as a formal modeling language and introduces some of the basic concepts of UML including models, diagrams, degrees of UML usage, and how UML relates to different software development processes and views.
This presentation is about a lecture I gave within the "Software systems and services" immigration course at the Gran Sasso Science Institute, L'Aquila (Italy): http://cs.gssi.infn.it/.
http://www.ivanomalavolta.com
Upcoming Challenges in E-Learning & Online Learning EnvironmentsMohamed Tawfik
Upcoming challenges in e-learning and online learning environments include:
1) Transitioning to blended learning models that combine online and in-person instruction.
2) Integrating learning management systems with remote laboratories and services like Web 2.0 tools.
3) Developing mobile learning capabilities that incorporate location-based and user-based interactions in a new framework deployable on smart devices.
Software Architecture: introduction to the abstractionHenry Muccini
The document provides an introduction to software architecture concepts including:
- Software architecture is defined as a set of components and connectors communicating through interfaces along with architecture design decisions.
- Multiple views are used to describe architectures including logical, process, deployment, and more.
- Architectural styles like pipe-and-filter and layered styles guide architecture design.
- Careful architecture design is important as it impacts system properties like performance, scalability, and testability.
Software Engineering 101 provides an overview of key concepts in software engineering including:
- Software engineering is the application of a systematic approach to software design, development, and maintenance.
- Software architecture establishes the high-level structure of a system, while software development focuses on implementation details. Both are important.
- Common software architectures include client-server, peer-to-peer, REST, service-oriented, and multi-tier architectures.
- Popular software development methodologies include waterfall, iterative, agile (e.g. Scrum, XP), and design patterns help solve common problems.
- Software development also involves object-oriented programming, databases, testing, and release management.
The document describes an online examination system. It discusses the existing manual paper-based examination system and its drawbacks. The proposed system is an online examination system developed using ASP.Net and SQL Server that allows administrators to create exams and questions, and students to take exams online. Key features include exam and student administration, online question display and answering, automated result calculation and display.
This document provides an overview of various types of architectural standards including conceptual standards like IEEE 1471 and DoDAF that define viewpoints and views, notational standards like UML and SysML, and process standards like TOGAF and RUP. It discusses the benefits of standards in promoting interoperability and network effects while also noting drawbacks like limiting flexibility. The document advises deciding when to adopt a standard based on whether in the early or late phase of a project.
Modern Software Architectures: Building Solutions for Web, Cloud, and MobileDan Mohl
The document discusses modern software architecture trends for building web, cloud, and mobile solutions. It covers moving applications to the client using single page applications, using NoSQL databases, and designing applications using patterns like MVVM and CQRS. The document also discusses architecting for mobile by using responsive design, writing for both web and native platforms, and using services that are faster on mobile.
The document provides information on a course titled "Software Engineering" taught by Dr. P. Visu at Velammal Engineering College. It includes the course objectives, outcomes, syllabus, and learning resources. The objectives are to understand software project phases, requirements engineering, object-oriented concepts, enterprise integration, and testing techniques. The outcomes cover comparing process models, requirements engineering, object-oriented fundamentals, software design, and testing techniques. The syllabus covers topics like software processes, requirements analysis, object-oriented concepts, software design, testing, and project management over 5 units. Recommended textbooks and online references are also provided.
This document discusses fundamental concepts of software architecture, including:
- Breaking systems down into modular components through techniques like encapsulation, contracts, and decoupling.
- Scaling systems up through parametrization, simplicity, decentralization, and standard libraries.
- Conceptualizing at a higher level of abstraction using techniques like abstraction, hierarchical decomposition, specialization, formalization, and viewpoints.
- Best practices like making dependencies and transformations explicit, limiting freedom to avoid side effects, and testing semantics rather than syntax.
An Empirical Study on Collaborative Architecture Decision Making in Software ...Sandun Dasanayake
European Conference on Software Architecture 2016 - Architecture decision making is considered one of the most challenging cognitive tasks in software development. The objective of this study is to explore the state of the practice of architecture decision making in software teams, including the role of the architect and the associated challenges. An exploratory case study was conducted in a large software company in Europe and fifteen software architects were interviewed as the primary method of data collection. The results reveal that the majority of software teams make architecture decisions collaboratively. Especially, the consultative decisionmaking style is preferred as it helps to make decisions efficiently while taking the opinions of the team members into consideration. It is observed that most of the software architects maintain a close relationship with the software teams. Several organisational, process and human related challenges and their impact on architecture decision-making are also identified.
This document discusses REST (Representational State Transfer) and resource-oriented architectures. It provides examples of designing RESTful APIs and services using common REST constraints like URIs to identify resources, HTTP methods to manipulate resources, and resource representations. The key aspects covered are modeling the domain as resources, designing URIs, exposing a uniform interface, designing representations, and common interaction flows and error conditions.
Composable Software Architecture with SpringSam Brannen
Sam Brannen gave a presentation on composable software architecture with Spring. He discussed how modern enterprise applications need to interact with multiple external systems and services. A composable architecture uses modular, stateless components that can be assembled in different combinations. Spring supports this through features like dependency injection, inversion of control, and its ecosystem of projects. The roadmap for Spring 4.0 includes better support for Java 8, configuring Spring with Groovy, and key Java EE 7 technologies.
This document discusses various architectural styles for information systems. It begins by defining data and information, then describes factors that affect the usefulness of information like quality, timeliness, completeness and relevance. It then presents a taxonomy of architectural styles including data flow, data-centered, virtual machine, independent component, and call-and-return styles. For each style it provides the goals, characteristics, advantages, and disadvantages. It also discusses heterogeneous styles and different types of management information systems.
In the last two decades, refactoring for code and design smells have received considerable focus from both academia and industry. This talk covers large scale refactoring for architectural smells which is gaining considerable attention from the software engineering community in the last few years. The main focus is on real-world case-studies and experiences in performing large scale refactoring for architectural smells from both industrial and open source projects. This talk will provide useful pointers to the participants on how to deal with refactoring for architectural smells in real-world contexts; further, it will also suggest research questions for the software engineering community to explore.
The document discusses architectural design for software systems. It covers topics such as software architecture, data design, architectural styles, analyzing architectural alternatives, and mapping requirements to architectural designs. The key aspects are:
1) Architectural design represents the structure of data and program components to build a computer system. It begins with data design and derives architectural representations.
2) Software architecture allows analysis of design effectiveness and consideration of alternatives to reduce risks.
3) Common architectural styles include data-centered, data flow, call-and-return, object-oriented, and layered styles.
4) Requirements are mapped to architectural designs through techniques like transform mapping and transaction mapping. The resulting design is then refined.
Basics of Software Architecture for .NET DevelopersDan Douglas
The document discusses the basics of software architecture for .NET developers. It defines software architecture as the structure and design of an application, including its components and how they are connected. A good architecture provides advantages like compatibility, extensibility, reliability and maintainability. The software architect must take implicit requirements into account, such as scaling and future needs, even if stakeholders are not aware of them. Architects should understand object oriented principles, design patterns, emerging technologies and focus on reusability.
This slideshow walks through common and popular Architectural design patterns such as Data-Driven Architecture, Micro-Services, Layered Architecture, and Micro-Kernel Architecture. I also go over the pros and cons and in which scenario each architecture is preferable
The document discusses architectural styles and decomposition techniques for software systems. It describes layering and tiering as basic decomposition approaches, with layers representing different levels of abstraction and tiers representing peer modules within the same layer. Several common architectural styles are then introduced, including pipes and filters, repository, client/server, model-view-controller, service-oriented, and peer-to-peer. Closed and open layered architectures are contrasted, and examples of layered systems like virtual machines and the OSI model are provided. Finally, the document notes that complete decompositions often involve both layering and partitioning techniques.
This is an introductory lecture to Software Architecture Design Decisions, part of the Advanced Software Engineering course, at the University of L'Aquila, Italy (www.di.univaq.it/muccini/SE+/2012)
Principles of software architecture designLen Bass
The document discusses principles of software architecture design. It states that quality attribute requirements have the strongest influence on architectural design. Quality attributes can be specified through concrete scenarios involving stimuli, sources, environments, artifacts, responses, and measures. Architectural tactics are techniques that improve specific quality attributes by modifying architectures. Tactics relate to quality models or expert experience and are important for designing and evaluating architectures.
Software Architecture: views and viewpointsHenry Muccini
This is an introductory lecture to Software Architecture Views and Viewpoints, part of the Advanced Software Engineering course, at the University of L'Aquila, Italy (www.di.univaq.it/muccini/SE+/2012)
Software Architecture for Cloud InfrastructureTapio Rautonen
The document discusses software architecture principles for cloud infrastructure, including microservices, distributed computing fallacies, designing for failure, and new design patterns like cache-aside, circuit breaker, and event sourcing. It also covers topics like autoscaling, asynchronous messaging, reactive streams, configuration management, and challenges like software erosion and failures cascading in distributed systems. The overall message is that building distributed systems on cloud infrastructure requires adopting new architectural patterns to deal with failures and improve scalability, performance and resilience.
The document provides an overview of enterprise architecture. It defines enterprise architecture as the analysis and documentation of an enterprise from strategic, business, and technical perspectives. The overview discusses the key concepts of enterprise architecture including business networks, information flows, infrastructure, products/services, and transition planning. It also provides a high-level view of how enterprise architecture analyzes an organization's current and future state across technology, business, and strategy.
The three common software architecture styles commonly used in distributed systems and XML Web Services are compared and contrasted. In particular, the key differences between traditional SOAP and REST styles are explored. Guidelines are presented on which style is most applicable for certain application scenarios, and when a combination of styles is necessary.
Web services allow software applications to communicate over the World Wide Web through standards such as HTTP and XML. There are two main types of web services: SOAP-based "big" web services which use XML messages and WSDL definitions, and RESTful web services which access networked resources through uniform commands like HTTP and have a simpler architecture. A service-oriented architecture is a collection of services that communicate to deliver added functionality, and web services provide a common way to connect different software applications running on various platforms.
A distributed system is a collection of computational and storage devices connected through a communications network. In this type of system, data, software, and users are distributed.
This document provides an overview of Apache Camel, an open source integration framework. It discusses integration patterns, why Camel is named Camel, Camel's parents (Apache ServiceMix), messaging concepts like queues and topics, common message brokers like ActiveMQ, characteristics of an ESB including routing and transformation, OSGi and JBI specifications, and what components and DSLs are included in Camel.
Automatic Synthesis of Adaptable and Evolving Choreography-based Service-oriented Systems. This lecture was given at GSSI Center for Advanced Studies, April 11-12, 2017 in L'Aquila, by Marco Autili, Assistant Professor, Department of Information Engineering Computer Science and Mathematics, University of L'Aquila, in collaboration with Massimo Tivoli, Associate Professor, DISIM, University of L'Aquila.
SOA involves breaking large applications into smaller, independent services that communicate with each other, while monolith architecture keeps all application code and components together within a single codebase; services in SOA should have well-defined interfaces and be loosely coupled, stateless, and reusable; components of SOA include services, service consumers, registries, transports, and protocols like SOAP and REST that allow services to communicate.
This document provides an introduction and overview of service-oriented architecture (SOA). It discusses the origins and definition of SOA, including what services and service programming are. It describes key SOA concepts like the enterprise service bus (ESB), message queues, and transformation/routing. Standards for service orchestration (BPEL), composition (SCA), and connectivity (JCA) are covered. The document concludes that adopting SOA requires separating business processes from implementation components to enable business-led process management.
Service-oriented architecture (SOA) is an architectural style that defines how components should be loosely coupled, modular, and have well-defined interfaces so that they can be reused across multiple applications and systems. A service is a reusable component that can be used as a building block to form larger, more complex business applications. SOA aims to allow services to be accessed without knowledge of their underlying platform implementation by defining standard protocols for services to communicate with each other.
There are two main types of distributed systems: request/response and message passing. Request/response systems focus on invoking operations and return values, while message passing focuses on constructing and dispatching messages without expecting a response. There are also two main architecture styles: object-oriented and service-oriented. Object-oriented styles involve communicating with object instances and have stateful communications, while service-oriented styles involve communicating with services through a standardized interface in a stateless manner. A shift is occurring from object-oriented to service-oriented architectures, as the latter allows for looser coupling and better scalability through messages. Web services can support both request/response and message passing systems.
This document provides guidance on effective application development in IBM Integration Bus. It discusses designing applications with IIB facilities, considering performance and scalability, designing for administration, using interfaces, and designing consistently. The key recommendations are to use built-in nodes, subflows, and shared libraries; consider message size and avoid loops; use applications and shared libraries; leverage built-in patterns; and thoroughly test applications.
Enterprise Application Architectures by Dr. Indika KumaraThejan Wijesinghe
Enterprise Applications/Computing
Architecture Styles for Enterprise Applications
Method-oriented
Message-oriented
Resource-oriented
REST (representational state transfer)
Event-oriented
SOA (service-oriented architecture)
Basic and extended SOA
Implementing SOA
RESTful
WS-* (web services stack)
ESB (enterprise service bus)
Business processes and service compositions
The document discusses the architecture for an adaptable enterprise software system using a case study of a Student Credit Reporting System (SCRS) forms application. It describes adopting a service-oriented architecture using Java EE and web services to develop a multi-tier system with components like a forms server, application server, and database. The system was designed to leverage open source technologies like JBoss and Apache Struts for standardization and extensibility of web applications.
Service Oriented Software Engineering: Services as reusable components, Service Engineering, Software Development with Services. Service-oriented architectures, RESTful services
This document provides an overview of Service Oriented Architecture (SOA) and its enabling technologies. It discusses key SOA principles like loose coupling, standardized service contracts, and service reusability. The document also covers major SOA objectives, benefits, architecture layers, and the differences between SOA and web services. Web services are described as a standardized way for applications to communicate over the web using XML, SOAP, WSDL and other standards. The document contrasts SOA with public-subscribe and pull-based vs push-based messaging architectures.
This document summarizes a presentation about Rebus, a .NET messaging library. Rebus provides messaging capabilities via durable, asynchronous queues and supports transports like MSMQ and RabbitMQ. It addresses problems with monolithic systems, integration with external parties, and complex coordination of logic. The presentation demonstrates how to use Rebus to split a trading/billing system, integrate with an external credit checking service, and implement complex coordinated logic with timeouts. The speaker advocates for messaging and service-oriented architectures to address these distributed system challenges.
SOA and WCF (Windows Communication Foundation) basicsYaniv Pessach
This document provides an overview and introduction to distributed applications, web services, and Windows Communication Foundation (WCF). It begins with introducing the presenter and their background working on Microsoft's web services team. The document then discusses key concepts around web services such as contracts, loose coupling, and message exchange patterns. It presents an example of a car dealership and how web services could be used. It outlines the standards, layers, and technologies involved in building web services. Finally, it discusses how WCF simplifies and improves upon previous Microsoft technologies for building distributed applications and web services.
This is a talk I gave on patterns and antipatterns of SOA, based on my understandings and practices and inspired by Ron Jacobs famous webcast by the same name.
The document discusses implementing service-oriented architecture (SOA) using web services in C++. It provides reasons for using C++, such as performance advantages and tight control over memory and CPU. It then discusses how a native web services stack can help integrate legacy C++ systems and provide new capabilities without rewriting code. The stack should support web service standards, code generation from WSDL, portability, low memory usage, security, handling binary data, interoperability, and asynchronous communication. It presents the WSF/C++ stack as fulfilling these requirements through support for standards, security, low-level control, and interoperability testing.
Este documento ofrece consejos sobre la publicación de investigación. Explica que publicar los resultados es una actividad fundamental para cualquier grupo de investigación ya que ayuda a difundir los hallazgos, establecer colaboraciones y participar en discusiones con otros investigadores. Además, recomienda considerar publicar incluso antes de completar un doctorado para ganar experiencia y empezar a construir un currículum. Por último, proporciona orientación sobre dónde publicar los diferentes tipos de trabajos y el proceso general de publicación.
El documento introduce el doctorado como el nivel de estudios más alto reconocido a nivel mundial, también conocido como PhD. Explica que el doctorado implica principalmente autoaprendizaje y que aunque tiene ventajas como flexibilidad horaria y viajar, requiere una gran pasión y trabajo duro. Finalmente, ofrece consejos sobre cómo elegir un tema, director, realizar investigación y publicaciones para completar con éxito un doctorado.
The document discusses RDF Shapes, which are used to describe and validate RDF data. It provides examples of using ShEx and SHACL to define shapes for RDF graphs and validate instance data against those shapes. Key points covered include the differences between ShEx and SHACL, such as ShEx focusing on defining structures while SHACL adds target declarations, and how both can be used to generate validation reports.
The document discusses legislative linked data portals created by the Chilean National Library of Congress. It summarizes two projects - one to capture the history of laws through their legislative process, and another to collect parliamentary work. The projects use semantic technologies like named entity recognition, entity linking, and XML conversion to generate Akoma Ntoso documents and extract RDF. The data is published through web portals and a SPARQL endpoint. The second part of the talk discusses RDF validation using ShEx and SHACL to describe and validate RDF structure.
Although RDF is a corner stone of semantic web and knowledge graphs, it has not been embraced by everyday programmers and software architects who need to safely create and access well-structured data. There is a lack of common tools and methodologies that are available in more conventional settings to improve data quality by defining schemas that can later be validated. Two technologies have recently been proposed for RDF validation: Shape Expressions (ShEx) and Shapes Constraint Language (SHACL). In the talk, we will review the history and motivation of both technologies. We will also and enumerate some challenges and future work with regards to RDF validation.
Wikidata es una base de datos de conocimiento libre que almacena información estructurada sobre entidades y sus relaciones. Permite editar y consultar datos de forma colaborativa. Los datos se representan mediante enunciados formados por sujeto, predicado y objeto, y se pueden consultar y ordenar usando SPARQL.
Legislative document content extraction based on Semantic Web technologiesJose Emilio Labra Gayo
This document summarizes a project by the Chilean Library of Congress to extract and publish legislative documents as linked open data using semantic web technologies. It describes how natural language processing is used to automatically mark up documents with XML tags, extract entities and structures. The marked up documents are then converted to RDF and made available via a SPARQL endpoint and on portals for exploring the history of laws and parliamentary work. Some lessons learned include tradeoffs around RDF granularity and future projects are planned to expand the linked data to additional domains.
ShEx is a language for validating RDF data. It allows defining shapes that specify constraints on nodes and triples. ShEx expressions can be used to validate if RDF graphs conform to the defined shapes. The ShEx language is inspired by languages like RelaxNG and provides different serialization formats like ShExC, ShExJ, and ShExR. There are open-source implementations of ShEx validators in languages like JavaScript, Scala, Ruby, Python, and Java. ShEx provides a concise way to define RDF shapes and validate instance data against those shapes.
- SPARQL is a query language for retrieving and manipulating data stored in RDF format. It is similar to SQL but for RDF data.
- SPARQL queries contain prefix declarations, specify a dataset using FROM, and include a graph pattern in the WHERE clause to match triples.
- The main types of SPARQL queries are SELECT, ASK, DESCRIBE, and CONSTRUCT. SELECT returns variable bindings, ASK returns a boolean, DESCRIBE returns a description of a resource, and CONSTRUCT generates an RDF graph.
Este documento introduce la Web Semántica, describiendo su justificación, definición y principales tecnologías. Explica que la Web Semántica tiene como objetivo publicar y enlazar datos para permitir su reutilización, automatización e integración. Describe las tecnologías clave como RDF, SPARQL, OWL y SHACL y destaca iniciativas como el Linking Open Data.
The document discusses the RDF data model. The key points are:
1. RDF represents data as a graph of triples consisting of a subject, predicate, and object. Triples can be combined to form an RDF graph.
2. The RDF data model has three types of nodes - URIs to identify resources, blank nodes to represent anonymous resources, and literals for values like text strings.
3. RDF graphs can be merged to integrate data from multiple sources in an automatic way due to RDF's compositional nature.
Este documento presenta las tendencias actuales en informática desde la perspectiva de Jose Emilio Labra Gayo, profesor e investigador de la Universidad de Oviedo. Labra Gayo discute 10 tendencias clave, incluyendo la era de los datos, la apertura de datos, la integración e interoperabilidad de sistemas, los servicios bajo demanda, el seguimiento y análisis de personas, la seguridad y privacidad, la reactividad frente a la proactividad, la automatización y los robots, Internet de las Cosas e Industria 4
- SPARQL is a query language for retrieving and manipulating data stored in RDF format. It is similar to SQL but for RDF data.
- SPARQL queries contain prefix declarations, specify a dataset using FROM, and include a graph pattern in the WHERE clause to match triples.
- The main types of SPARQL queries are SELECT, ASK, DESCRIBE, and CONSTRUCT. SELECT returns variable bindings, ASK returns a boolean, DESCRIBE returns a description of a resource, and CONSTRUCT generates an RDF graph.
Este documento describe Node.js, un entorno de ejecución de JavaScript para el servidor. Explica que Node.js fue desarrollado en 2009 y usa un modelo de programación asíncrono basado en eventos. También describe características clave como el uso de módulos, streams y el objeto process, y cómo Node.js se puede usar para crear servidores HTTP y manejar E/S del sistema de archivos.
Como publicar los datos: datos abiertos y enlazados
Charla impartida en Jornadas Open Data y Transparencia: Ayuntamiento de Oviedo
11 de septiembre de 2017
Este documento resume varias alternativas a XML para la representación de datos, incluyendo JSON, YAML, SXML, CSV y RDF. Describe brevemente cada formato y compara sus características, ventajas y desventajas respecto a XML.
Este documento describe la transformación de documentos XML mediante XSLT. XSLT es un lenguaje de transformación de documentos XML que permite convertir un documento XML en otro formato mediante la aplicación de plantillas. El documento explica conceptos clave de XSLT como plantillas, aplicación de plantillas, obtención de valores, creación de elementos y atributos, y estructura básica de una hoja de estilos XSLT.
Este documento describe XPath, un lenguaje de consulta para documentos XML. XPath se desarrolló originalmente en 1999 como parte de XSL y luego se independizó para usarse en otros contextos como XQuery. XPath permite acceder y consultar partes de un documento XML trabajando sobre el árbol del documento. El documento explica conceptos clave de XPath como expresiones, tipos de nodos, ejes de localización y funciones.
ISO 4020-6.1 – Filter Cleanliness Test Rig: Precision Testing for Fuel Filter Integrity
Explore the design, functionality, and standards compliance of our advanced Filter Cleanliness Test Rig developed according to ISO 4020-6.1. This rig is engineered to evaluate fuel filter cleanliness levels with high accuracy and repeatability—critical for ensuring the performance and durability of fuel systems.
🔬 Inside This Presentation:
Overview of ISO 4020-6.1 testing protocols
Rig components and schematic layout
Test methodology and data acquisition
Applications in automotive and industrial filtration
Key benefits: accuracy, reliability, compliance
Perfect for R&D engineers, quality assurance teams, and lab technicians focused on filtration performance and standard compliance.
🛠️ Ensure Filter Cleanliness — Validate with Confidence.
This presentation provides a detailed overview of air filter testing equipment, including its types, working principles, and industrial applications. Learn about key performance indicators such as filtration efficiency, pressure drop, and particulate holding capacity. The slides highlight standard testing methods (e.g., ISO 16890, EN 1822, ASHRAE 52.2), equipment configurations (such as aerosol generators, particle counters, and test ducts), and the role of automation and data logging in modern systems. Ideal for engineers, quality assurance professionals, and researchers involved in HVAC, automotive, cleanroom, or industrial filtration systems.
MODULE 5 BUILDING PLANNING AND DESIGN SY BTECH ACOUSTICS SYSTEM IN BUILDINGDr. BASWESHWAR JIRWANKAR
: Introduction to Acoustics & Green Building -
Absorption of sound, various materials, Sabine’s formula, optimum reverberation time, conditions for good acoustics Sound insulation:
Acceptable noise levels, noise prevention at its source, transmission of noise, Noise control-general considerations
Green Building: Concept, Principles, Materials, Characteristics, Applications
Optimize Indoor Air Quality with Our Latest HVAC Air Filter Equipment Catalogue
Discover our complete range of high-performance HVAC air filtration solutions in this comprehensive catalogue. Designed for industrial, commercial, and residential applications, our equipment ensures superior air quality, energy efficiency, and compliance with international standards.
📘 What You'll Find Inside:
Detailed product specifications
High-efficiency particulate and gas phase filters
Custom filtration solutions
Application-specific recommendations
Maintenance and installation guidelines
Whether you're an HVAC engineer, facilities manager, or procurement specialist, this catalogue provides everything you need to select the right air filtration system for your needs.
🛠️ Cleaner Air Starts Here — Explore Our Finalized Catalogue Now!
Video Games and Artificial-Realities.pptxHadiBadri1
🕹️ #GameDevs, #AIteams, #DesignStudios — I’d love for you to check it out.
This is where play meets precision. Let’s break the fourth wall of slides, together.
DIY Gesture Control ESP32 LiteWing Drone using PythonCircuitDigest
Build a gesture-controlled LiteWing drone using ESP32 and MPU6050. This presentation explains components, circuit diagram, assembly steps, and working process.
Read more : https://circuitdigest.com/microcontroller-projects/diy-gesture-controlled-drone-using-esp32-and-python-with-litewing
Ideal for DIY drone projects, robotics enthusiasts, and embedded systems learners. Explore how to create a low-cost, ESP32 drone with real-time wireless gesture control.
Filters for Electromagnetic Compatibility ApplicationsMathias Magdowski
In this lecture, I explain the fundamentals of electromagnetic compatibility (EMC), the basic coupling model and coupling paths via cables, electric fields, magnetic fields and wave fields. We also look at electric vehicles as an example of systems with many conducted EMC problems due to power electronic devices such as rectifiers and inverters with non-linear components such as diodes and fast switching components such as MOSFETs or IGBTs. After a brief review of circuit analysis fundamentals and an experimental investigation of the frequency-dependent impedance of resistors, capacitors and inductors, we look at a simple low-pass filter. The input impedance from both sides as well as the transfer function are measured.
Department of Environment (DOE) Mix Design with Fly Ash.MdManikurRahman
Concrete Mix Design with Fly Ash by DOE Method. The Department of Environmental (DOE) approach to fly ash-based concrete mix design is covered in this study.
The Department of Environment (DOE) method of mix design is a British method originally developed in the UK in the 1970s. It is widely used for concrete mix design, including mixes that incorporate supplementary cementitious materials (SCMs) such as fly ash.
When using fly ash in concrete, the DOE method can be adapted to account for its properties and effects on workability, strength, and durability. Here's a step-by-step overview of how the DOE method is applied with fly ash.
1. Software Architecture
School of Computer Science University of Oviedo
University of Oviedo
Software Architecture
Parte II. Architecture taxonomies
Lesson 9: Integration patterns
2014 Jose Emilio Labra Gayo
2. Software Architecture
School of Computer Science University of Oviedo
Integration
Application Integration =
Biggest challenge in Computer Science
3. Software Architecture
School of Computer Science University of Oviedo
Integration
Integration styles
File transfer
Shared database
Remote procedure call
Messaging
Topologies
Hub & Spoke, Bus
Service Oriented Architectures
WS-*, REST
4. Software Architecture
School of Computer Science University of Oviedo
File transfer
Shared database
Remote procedure call
Messaging
5. Software Architecture
School of Computer Science University of Oviedo
File transfer
An application generates a data file that is
consumed by another
One of the most common solutions
Advantages
Independence between A and B
Low coupling
Easier debugging
By checking intermediate files
Application
A
exports
File
imports
Application
B
6. Software Architecture
School of Computer Science University of Oviedo
File transfer
Challenges
Both applications must agree a
common file format
It can increase coupling
Coordination
Once the file has been sent, the receiver
could modify it 2 files!
It may require manual adjustments
Application
A
exports
File
imports
Application
B
7. Software Architecture
School of Computer Science University of Oviedo
Shared database
Applications store their data in a shared database
Advantage
Data are always available
Everyone has access to the same information
Consistency
Familiar format
SQL for everything
Application
C
Data
Base
Application
A
Application
B
8. Software Architecture
School of Computer Science University of Oviedo
Shared database
Challenges
Database schema can evolve
It requires an common schema for all applications
That can cause problems/conflicts
External packages are needed (common database)
Performance and scalability
Database as a bottleneck
Synchronization
Distributed databases can be problematic
Scalability
NoSQL ?
9. Software Architecture
School of Computer Science University of Oviedo
Shared database
Variants
Data warehousing: Database used for data analysis
and reports
ETL: process based on 3 stages
Extraction: Get data from heterogeneous sources
Transform: Process data
Load: Store data in a shared database
10. Software Architecture
School of Computer Science University of Oviedo
Remote procedure call
An application calls a function from another
application that could be in another machine
Invocation can pass parameters
Obtains an answer
Lots of applications
RPC, RMI, CORBA, .Net Remoting, ...
Web services, ...
Application
A
Stub
call
procedure
Skeleton
Application
answer B
11. Software Architecture
School of Computer Science University of Oviedo
Remote procedure call
Advantages
Encapsulation of implementation
Multiple interfaces for the same information
Different representations can be offered
Model familiar for developers
It is similar to invoke a method
Application
A
Stub
call
procedure
Skeleton
Application
answer B
12. Software Architecture
School of Computer Science University of Oviedo
Remote procedure call
Challenges
False sense of simplicity
Remote procedure procedure
8 fallacies of distributed computing
Synchronous procedure calls
Increase application coupling
The network is reliable
Latency is zero
Bandwidth is infinite
The network is secure
Topology doesn't change
There is one administrator
Transport cost is zero
The network is homogeneous
8 fallacies of distributed computing
Application
A
Stub
call
procedure
Skeleton
Application
answer B
http://en.wikipedia.org/wiki/Fallacies_of_distributed_computing
13. Software Architecture
School of Computer Science University of Oviedo
Messaging
Multiple independent applications communicate
sending messages through a channel
Asynchronous communication
Applications send messages a continue their
execution
Application
C
Application
A
Application
B
Message channel
14. Software Architecture
School of Computer Science University of Oviedo
Messaging
Advantages
Low coupling
Applications are independent between each other
Asynchronous communication
Applications continue their execution
Implementation encapsulation
The only thing exposed is the type of messages
Application
C
Application
A
Application
B
Message channel
15. Software Architecture
School of Computer Science University of Oviedo
Messaging
Challenges
Implementation complexity
Asynchronous communication
Data transfer
Adapt message formats
Different topologies
Application
C
Application
A
Application
B
Message channel
17. Software Architecture
School of Computer Science University of Oviedo
Hub & Spoke
Related with Broker pattern
Hub = Centralized message Broker
It is in charge of integration
Application 1 Application 2
Hub or Broker
Central integration
engine
Application 3 Application 4
18. Software Architecture
School of Computer Science University of Oviedo
Bus
Each application contains its own integration
machine
Publish/Subscribe style
Message Bus
Application 1
Application 2
Adapter and
Integration engine
Adapter and
Integration engine
Adapter and
Integration engine
Adapter and
Integration engine
Application 3 Application 4
19. Software Architecture
School of Computer Science University of Oviedo
Bus
ESB - Enterprise Service Bus
Defines the messaging backbone
Some tasks
Protocol conversion
Data transformation
Routing
Offers an API to develop services
MOM (Message Oriented Middleware)
21. Software Architecture
School of Computer Science University of Oviedo
SOA
SOA = Service Oriented Architecture
Services are defined by an interface
Internet
Service 2
Interface
Interface
Service 3
Service 1
Interface
22. Software Architecture
School of Computer Science University of Oviedo
SOA
Elements
Provider: Provides service
Consumer: Does requests to the service
Messages: Exchanged information
Contract: Description of the functionality provided
by the service
Endpoint: Service location
Policy: Service level agreements
Security, performance, etc.
23. Software Architecture
School of Computer Science University of Oviedo
SOA
Constraints
Service
Consumer
Service
Policy
Endpoint
Contracts
Messages
Adheres to
Binds to
Understands
Sends/receives
Governed by
Exposes
Implements
Sends /receives
Fuente: SOA Patterns, A. Rottem Gal Oz
Serves
Describes
24. Software Architecture
School of Computer Science University of Oviedo
SOA
Challenges
Independent of language and platform
Interoperability
Use of standards
Low coupling
Decentralized
Reusability
Scalability
one-to-many vs one-to-one
Partial solution for legacy systems
Adding a web services layer
25. Software Architecture
School of Computer Science University of Oviedo
SOA
Challenges
Performance
E.g. real time systems
Overkill in very homogeneous environments
Security
Risk of public exhibition of API to external parties
DoS attacks
Service composition and coordination
27. Software Architecture
School of Computer Science University of Oviedo
WS-*
WS-* model = Set of specifications
SOAP, WSDL, UDDI, etc....
Proposed by W3c, OASIS, WS-I, etc.
Goal: Reference SOA implementation
28. Software Architecture
School of Computer Science University of Oviedo
WS-*
Web Services Architecture
Processes
Discovery, Aggregation, Choreography
Descriptions
Web Services Description Language (WSDL
Messages
SOAP extensions
Reliability, Correlation, Transactions
SOAP
Base technologies: XML, DTD, Schema
Base technologies: XML, DTD, Schema
Communications
HTTP, SMTP, FTP, JMS, IIOP, ...
S
E
C
U
R
I
T
Y
M
A
N
A
G
E
M
E
N
T
30. Software Architecture
School of Computer Science University of Oviedo
WS-*
UDDI
HTTP
SOAP request (XML)
SOAP answer (XML)
Web Service
Implementation
Web Service
Consumer
31. Software Architecture
School of Computer Science University of Oviedo
WS-*
SOAP
SOAP
SOAP
SOAP
Internet
Currency
converter
Billing
Users
Management
SOAP
XML
User
Application
Web Services ecosystems
32. Software Architecture
School of Computer Science University of Oviedo
WS-*
SOAP
Defines messages format and bindings with several
protocols
Initially Simple Object Access Protocol
Evolution
Developed from XML-RPC
SOAP 1.0 (1999), 1.1 (2000), 1.2 (2007)
Initial development by Microsoft
Posterior adoption by IBM, Sun, etc.
Good Industrial adoption
33. Software Architecture
School of Computer Science University of Oviedo
WS-*
Message format in SOAP
Envelope
Header
Body
Header Key
Header Key
34. Software Architecture
School of Computer Science University of Oviedo
WS-*
Example of SOAP over HTTP
POST /Suma/Service1.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: longitod del mensaje
SOAPAction: "http://tempuri.org/suma"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<sum xmlns="http://tempuri.org/">
<a>3</a>
<b>2</b>
</sum>
</soap:Body>
</soap:Envelope>
POST ?
35. Software Architecture
School of Computer Science University of Oviedo
WS-*
Advantages
Specifications developed by community
W3c, OASIS, etc.
Industrial adoption
Implementations
Integral view of web services
Numerous extensions
Security, orchestration, choreography, etc.
36. Software Architecture
School of Computer Science University of Oviedo
WS-*
Challenges
Not all specifications are mature
Over-specification
Lack of implementations
RPC style abuse
Uniform interface
Sometimes, bad use of HTTP architecture
Overload of GET/POST methods
37. Software Architecture
School of Computer Science University of Oviedo
WS-*
Applications
Lots of applications have been using SOAP
Example: eBay (50mill. SOAP transactions/day)
Other examples: thetrainline.com, Hyatt, Microsoft
live, etc.
Some popular web services ceased to offer SOAP
support
Examples: Amazon, Google, etc.
38. Software Architecture
School of Computer Science University of Oviedo
REST
REST = REpresentational State Transfer
Architectural style
Source: Roy T Fielding PhD dissertation (2000)
Inspired by Web architecture (HTTP/1.1)
39. Software Architecture
School of Computer Science University of Oviedo
REST
REST - Representational State Transfer
Diagram
Internet
HTTP
Resource 1
GET, PUT,
POST, DELETE
GET, PUT,
POST, DELETE
Resource 2
Application
40. Software Architecture
School of Computer Science University of Oviedo
REST
Set of constraints
Resources with uniform interface
Identified by URIs
Fixed set of actions: GET, PUT, POST, DELETE
Resource representations are returned
Stateless
REST = Architectural style
Some levels of adoption:
RESTful
REST-RPC hybrid
41. Software Architecture
School of Computer Science University of Oviedo
REST as a composed style
Layers
Client-Server
Stateless
Cached
Replicated server
Uniform interface
Resource identifiers (URIs)
Auto-descriptive messages (MIME types)
Links to other resources (HATEOAS)
Code on demand (optional)
42. Software Architecture
School of Computer Science University of Oviedo
REST uniform interface
Fixed set of operations
GET, PUT, POST, DELETE
Method In databases Function Safe? Idempotent?
PUT Create/Update Create/update No Yes
POST Update Create/
Update children
No No
GET Retrieve Query resource info Yes Yes
DELETE Delete Delete resource No Yes
Safe = Does not modify server data
Idempotent = The effect of executing N-times is the same as executing it once
43. Software Architecture
School of Computer Science University of Oviedo
REST
Stateless client/server protocol
State handled by client
HATEOAS (Hypermedia As The Engine of Application State)
Representations return URIs to available options
Chaining of resource requests
Example: Student management
1.- Get list of students
GET http://example.org/student
Returns list of students with each student URI
2.- Get information about an specific student
GET http://example.org/student/id2324
3.- Update information of an specific student
PUT http://example.org/student/id2324
44. Software Architecture
School of Computer Science University of Oviedo
REST
Advantages
Client/Server
Separation of concerns
Low coupling
Uniform interface
Facilitates comprehension
Independent development
Scalability
Improves answer times
Less network load (cached)
Less bandwidth
45. Software Architecture
School of Computer Science University of Oviedo
REST
Challenges
REST partially adopted
Just using JSON or XML
Web services without contract or description
RPC style REST
Difficult to incorporate other requirements
Security, transaction, composition, etc.
46. Software Architecture
School of Computer Science University of Oviedo
REST as a composed style
Layers
Client
Server
Stateless
Replicated
REST
Uniform
Interface
Cache Code on
demand
(optional)