Monday, August 31, 2009

Project 1

Due date: Fri, 4 Sep
Individual project

Objectives
  • Installation of and familiarity with required software
  • An understanding of the HTTP protocol
  • Initial experiments with web service access
Part 1: Installing cURL

cURL is a command-line data transfer tool that supports HTTP, among several other common protocols. Therefore, it can play the role of a command-line web user agent (commonly called browser).

You should set up cURL in at least one of the following ways:
  • It should be installed by default on Mac OS X.
  • Install using the package management system for your platform, e.g., sudo apt-get install curl ca-certificates on Ubuntu.
  • Download an appropriate version for your platform with SSL support.
  • Use it remotely by logging on to one of the departmental hosts, random.cs.luc.edu or infinity.cs.luc.edu.
Test the HTTPS support of your cURL installation as follows. You need your own Delicious account or your own Twitter account.
  • curl -u yourid https://api.del.icio.us/v1/tags/get
  • curl -u yourid https://twitter.com/statuses/friends_timeline.xml
cURL will prompt you for the password. In either case, you should see a response in XML format (with lots of angular brackets). If you see any error messages pertaining to missing SSL support, double-check your installation and try again. If you don't have any bookmarks or friends, your response will be essentially empty, for example, <posts user="yourid" ...> </posts>, but that's still a successful interaction with the service.

Part 2: Installing Eclipse

We are using Yoxos to manage our Eclipse configurations. In particular, I have created a configuration for this class. To obtain a distribution for your OS based on this configuration:
(You can also manage your own configurations on Yoxos and use this one as a starting point.)

If Eclipse runs out of memory, please follow these directions.
Deliverables
  • Screenshot or other form of transcript of your successful access to the Delicious or Twitter web service.
  • Screenshot of your Eclipse configuration showing the successful execution of a HelloYourname Java project that prints Hello Yourname.
Please follow these online submission instructions. Submission by email, especially to the mailing list, is highly discouraged.

Monday, August 24, 2009

Tentative weekly course schedule

Week 1

  • organizational matters
  • overview
  • introduction to computing with services (ch 1)
  • SOA versus programmable web
  • connecting to and combining existing services: in-class demo

Week 2

  • principles of service-oriented computing (ch 5)
  • connecting to and combining existing services: in-class demo (continued)

Week 3

  • programming web services (ch 3)
  • resource-oriented (REST) services (Restlet book ch 4)
  • project discussion

Week 4

  • project 2b discussion
  • test 1

Week 5

  • enterprise architectures (ch 4)
  • basic standards for web services (ch 2)
  • resource-oriented (REST) and process/flow-oriented (SOAP) views of services (Restlet book ch 4  and ch 10)
  • project 2b discussion (as needed)

Week 6

  • restful services
  • project 2b discussion

Week 7

  • WS-* standards
  • stateful services
  • SOAP
  • test 2

Week 8

  • SOAP
  • Apache CXF framework
  • project 2c discussion

Week 9

  • project 2c discussion
  • message-based integration

Week 10

  • message-based integration
  • project 3 discussion

Week 11

  • message-based integration
  • project 3 discussion
  • test 3

Week 12

  • semantic web

Week 13

  • semantic web

Tentative project roadmap

  • connecting to and combining existing services: details TBA
  • implementing resource-based services: Restlet.org
  • implementing process-based (flow-based) services: Apache CXF
  • message-based service integration: Apache Camel
  • (time permitting) implementing agent-based and semantic web services: JADE, Jena

Project 0

Discussion Group Subscription

The first part of this project, due immediately, requires you to subscribe to the discussion group for this course. Keep in mind that you are responsible for being familiar with any information exchanged on this discussion group.

Linux Account Verification

The second part of this project, also due immediately, requires you to verify that your departmental Linux account works. (If you are a new student, you should have received email about your account.) This account is separate from your Loyola account and will allow you to use the lab machines as well as the cvs.cs.luc.edu server (we will use the CVS system for version control in conjunction with team-based development). If you have any problems with your Linux account, please contact our lab manager right away.

Group Formation

The last part of this project, due within about two weeks, requires you to form a project work group with other fellow students. The groups should be of size three. The groups should stay the same throughout the semester.
Once you have formed your group, please send me email containing a list of all group members with the user IDs for their departmental Unix accounts.
For each subsequent project, there will be one submission and consequently one grade per group.

Submission

There is no submission required for this project, other than sending the list of group members by email.

Tuesday, April 22, 2008

Project 3 presentations

Monday, March 31, 2008

Project 2

Due Date: Wednesday, 30 April (firm)

Group project

Functional and Architectural Requirements

In this project, you will have the opportunity to implement a resource-oriented reservation system. You should follow these requirements, using your web application from the previous semester as a starting point.

Overall, you should follow the architectural and design principles outlined here:
Your system should support at least two representations:
  • XHTML (suitable for a human user)
  • JSON or concise XML (suitable for a programmatic client)
The key conceptual component of this project is to map the uniform REST verbs to the functionality described in the requirements. To some extent, we should do this part as a group in class and through the mailing list. The example from chapter 7 of the REST book should help as well.

Other Non-Functional Requirements

  • The project is managed using Maven.
  • Restlet is used to expose the given functionality in a resource-oriented form. Where appropriate, suitable representations should be included that make the functionality accessible through a web browser (XHTML). Otherwise, the functionality should be accessible through a suitable client also implemented in Restlet (JSON or XML).
  • There should be a comprehensive test suite involving direct and client-based testing (using the chosen data representation) of the available functionality.
  • Persistence is provided using Hibernate as in your web application starting point, or you may switch to db4o instead.
  • Dependencies should be managed using the Spring framework.

Submission

Please use the repository for your group for collaboration and notify me when your work is ready for me to review. No explicit submission will be required.

Project 3

Due Date: Wed 9 April (outline); Mon 21 April (presentation)

Group project

Description

In this project, you will have the opportunity to investigate a topic of interest in the area of web services.

Given the remaining time of the semester and the length of each presentation, you are not expected to conduct an exhaustive study of your topic. The purpose of this project is for you to find and present some starting points for using a particular technology or discuss the utility of some general approach. Please consult with me if you have any questions.

Deliverables

This project consists of the following deliverables:
  • Brief outline of your presentation due on 9 April.
  • Brief (15-20 minutes) in-class presentation of your findings (followed by up to 5 minutes of questions) on 21 April or before.
  • Accompanying materials, such as electronic copies of your visual presentation, code examples, etc.

Possible topics

Here are some possible topics:
You are welcome to choose other relevant topics pending my approval.

Submission

Please refer to the online submission procedure. Each team is to make exactly one submission. Any written materials should be submitted either in PDF format or through Google Docs.