Service-Oriented Computing

Course Description

Introduction to service-oriented distributed computing. Service-oriented programming and engineering. Enterprise and business applications. Human and programmable web. Web standards, architectures, technologies, and protocols. Principles of design and implementation of high-performance, scalable, and secure web services. HTTP, Ajax, and Websocket protocol. REST architectural style. Design and implementation of RESTful web services and REST API. Semantic web services.

General Competencies

The course prepares the students for design, development, and analysis of distributed service-oriented computer systems. Students are prepared to apply REST principles in design of high-performance, scalable, and secure web services. In addition, students are prepared to analyze how existing web services fit into REST principles and derive redesign decisions to improve their performance, scalability, and security. Students gain practical knowledge about design and implementation of web servers, web clients, web proxies, and asynchronous web services based on contemporary Websocket protocol.

Learning Outcomes

  1. define service as a software artefact and distinguish services from objects and components
  2. identify protocol and standard stack in service-oriented computing
  3. apply object-oriented programming and component-based technologies during design and implementation of individual services
  4. define the procedure of development of distributed systems based on reuse of existing services
  5. design and implement distributed application using service composition
  6. explain coordination and management of service-oriented systems
  7. explain service composition based on semantic descriptions
  8. estimate and evaluate security and fault tolerance of service-oriented systems

Forms of Teaching

Lectures

Lecturer-driven classroom presentations with live demonstrations of how to implement theoretical concepts in software

Exams

Two written exams

Laboratory Work

Design and development of a RESTful web service, Hadoop. Students individually implement given assignment in recommended language or tool, and periodically demonstrate the progress to teaching assistants.

Consultations

Individual office hours with lecturers and assistants are organized on student's request.

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Comment: Percent of Grade
Laboratory Exercises 43 % 35 % 43 % 0 %
Class participation 0 % 5 % 0 % 0 %
Mid Term Exam: Written 0 % 30 % 0 %
Final Exam: Written 0 % 30 %
Exam: Written 43 % 100 %
Comment:

Continuous Assessment: Min (Mid Term Exam: Written + Final Exam: Written + Lecture attendance and oral examination in classroom) = 50 %

Week by Week Schedule

  1. Introduction; definition of service-oriented computing as a paradigm for software development and software comsumption; examples of dual interface (GUI and API) of popular web services; brief history of the web
  2. Basics of HTTP protocol; HTTP request and HTTP response; structure of HTTP message: request and status line, headers, body; URL; HTTP client algorithm; implementation of a simple HTTP client
  3. REST and RESTful web services; REST constraints: network, content, and interaction constraints; REST network constraints: client-server architecture, layered system; proxy and gateway
  4. REST content constraints: addressability; resource-oriented architecture; resource identifiers; URI, URL, and URN
  5. REST content constraints: connectedness; resource representations; hypermedia; hypermedia formats: HTML, XML, JSON; media types in HTTP; content negotiation
  6. REST interaction constraints: uniform interface and statelessness; HTTP methods; HTTP status codes; safety and idempotence of HTTP methods; example of HTTP server implementation using Java servlets
  7. REST interaction constraints: caching and code on demand; conditional HTTP request and its impact on scalability; cache topologies; cache processing algorithm; REST triangle; REST maturity model
  8. Mid term exam
  9. RESTful API design; resource and URI design; resource modelling; interaction design; metadata design; HTTP persistent connections; HTTP pipelining
  10. Asynchronous and real-time web; AJAX; server push technologies: polling and long polling; Websocket protocol and Websocket API; performance and scalability comparison of polling, long polling, and Websocket based communication
  11. Web service implementation using WS-* standards: SOAP, WSDL, XML, XML Schema
  12. Security in service-oriented systems
  13. Quality of service (QoS) in service-oriented systems
  14. Microservices architecture
  15. Final exam

Study Programmes

University graduate
Computer Engineering (profile)
Specialization Course (1. semester) (3. semester)
Computer Science (profile)
Specialization Course (1. semester) (3. semester)
Software Engineering and Information Systems (profile)
Specialization Course (1. semester) (3. semester)
Telecommunication and Informatics (profile)
Specialization Course (1. semester) (3. semester)

Literature

L. Richardson, S. Ruby (2007.), RESTful Web Services, O'Reilly Media
M. Masse (2011.), REST API Design Rulebook, O'Reilly Media
D. Gourley, B. Totty, M. Sayer, A. Aggarwal, S. Reddy (2002.), HTTP The Definitive Guide, O'Reilly Media
E. Newcomer, G. Lomow (2004.), Understanding SOA with Web Services, Addison-Wesley Professional
T. Erl (2004.), Service-Oriented Architecture: A Field Guide to Integrating XML and Web Services, Prentice Hall