Yuanfang Cai

Assistant Professor

Dept. of Computer Science

Drexel University

CS575: Software Design

 

Professor: Yuanfang Cai

E-mail: yfcai AT cs DOT drexel DOT edu

Office: University Crossings 104

Phone: 215-895-0298

 

Teaching Assistant: Sunny Wong (sunny.wong AT drexel DOT edu)

Online Office Hours:

     Place: BbVista

     Time: Tuesday 6pm-8pm and Wednesday 7:30pm-9:30pm

(Or by appointment)

Class Project

The group project can take two forms:

  1.  Canonical choice: this is an application design and development project. The team will be asked to design, implement and test a distributed application using a Service Oriented Architecture, and related techniques and tools. The team will be able to submit an application of their interest. The instructor will also provide examples of reasonable SOA-based application that teams may want to embrace. Deliverables for this kind of projects will follow the typical cycle of software production, with – of course – a strong emphasis on design deliverables and their quality.
  2. Non-canonical choice: for teams with a substantial previous experience of SOA, who might want try their hand with something different, or for teams that would like to explore advanced and/or research-oriented topics in software design. Those teams can propose a different kind of project, which must be centered upon some interesting design ideas. The instructor reserves a right to accept such a proposal, upon proper brainstorming with the team. Deliverables for this kind of projects will be jointly decided by the team and the instructor, depending on the nature and the objective of each project.

 

Using Web Services to Implement a SOA Application

Description

The goal of the term project is to develop a non-trivial application that will enable you to practice the concepts covered in the course. The following outlines the project approach and deliverables, which includes (1) a project proposal, (2) a design package, (3)  a unit test harness, and (4) an application package.

You are encouraged to come up with your own project idea, or select from one of the ideas below in case you are having difficulty thinking of a project. Although you may do an individual project, I encourage you to work in a team consisting of 5-6 members. You follow the sample project and its models.

For the project you will design and implement a system in accordance with a service-oriented architecture. Your solution must include

(1) a user interface (preferably browser- based);

(2) a collection of services implemented as web services,

(3) additional application-specific code needed to support the functionality of your project.

Your project will require you to implement a collection of web services using Java or C#. For a Java project, you can choose from Glassfish or Tomcat 6 with Axis2. For a C# project, please use Visual Studio 2008 with IIS 5 or 6. If you project needs a database, please use SQL Server or Postgresql 8.3.

Step 1: Develop the Project Proposal

Your first project deliverable is to develop a project proposal. The proposal is to be submitted to the Instructor via  BbVista. The project proposal must provide a brief description describing the scope and functionality of your project. Your project proposal should follow the project proposal template. This deliverable will not be graded but feedback will be given should I think that your project proposal is not of appropriate scope or complexity (too big, too small, too simple, or too complex). Your project proposal must also give your project a name, and define all of the project team members by providing name and email address for each project member. Even if you use one of my project ideas below you must submit a short proposal.

Step 2: Develop the Project Design Package

Produce a design document according to the design template.

If you choose to create a SOA project, produce a SOA design package that clearly specifies the services that you are going to implement, and how your projectl will interact with these services. I would prefer that the architecture and design is modeled in UML but feel free to use other notation if that would work better for you. Don’t forget to highlight how you are applying the leanings in class to implement your design – i.e., the use of a reference architecture, clear specification of interface contracts, messaging constraints, the use of design and architectural views, mapping of service providers to service consumers, etc.

Submit the design package for your project via BbVista. The deliverable can be in PDF format. Whenever possible use pictures instead of text to describe the architecture and design of your project solution.

Step 3: Prepare a Unit Test Harness for your Service(s) to Validate your Service Contract and your Initial Service Deployment

Produce Unit Test Harness according to the instructions.

Since we are using a contract-first approach towards service design, you should design a schema to formally describe the allowable input and output message(s) to your service(s). You should also use tools such as xsd, xsdobjectgen, jaxb, etc. to create language-specific types (a.k.a. classes) that adhere to your schema contract and ensure correct serialization/deserialization to your input and output message(s).

Once you have your schema and types prepared you will need to create a unit test application that accepts as input a file (or string) in XML format that will be deserialized into the appropriate request object type for your service(s). Your unit test application should verify that the input file adheres to the schema and throw an appropriate exception otherwise. Once appropriately digested, the unit test application should instantiate an instance of a service proxy and call a service stub designed to mimic the behavior of your final service. The unit test application must not pass an XML string to the service, instead, it must pass an instance of the object you created from the deserialization process to the proxy. The proxy will then pass your request message to your service stub in a SOAP envelope.

The service stub, based on the request, will return a hard-coded response to the unit test client. The response may be hard-coded or loaded from a sample XML file (or string). Once retuned to the unit test application, the unit test application will serialize the response message (in object form) to an XML string and display the results.

Note the UI for the unit test application does not have to be fancy, and may be either a web application or a rich client application. During week 9 each team report their progress in term of unit test application through online discussion. Your service stub should be ready to run by the end of the week.

Step 4: Implement, Test and Submit your Project

Your final project submission must include a WAR or EAR file with the binary code that can be deployed on the web server, and a separate TAR or ZIP file with the source code. You should also submit a SQL scripts or a Postgresql backup file for us to set up the database.

The final project deliverable must include, easy-to-understand, step-by-step directions on how to configure and deploy your project on the .Net or Java platforms. I cannot tell you how many times that I was unable to install and test a student project due to deployment problems. Please include this file in the archive (ZIP or TAR) that you submit and name the file “ReadMe.xxx” (plain text, PDF, RTF, and Word formats are fine).

In addition to the code, I would like a final version of the design document that includes updates that were made during the implementation of your project, and a set of test cases and usage scenarios that you tested. Your team lead must check his/her email several times per day after the project is submitted in case I have problems evaluating your project.

Some Project Ideas

The following are some project ideas that you may use:

  1. Develop a software engineering portal. The software engineering portal will provide facilities for a user to create an account, upload a collection of source code and alias this collection of code as a “solution”. The portal should allow the user to manage multiple “solutions” (collections of code), as well as multiple versions of a solution. Basic capabilities with respect to a solution must include the ability to add, update, delete and version a solution. Each solution should be given a human-readable and understandable name.

    Once a solution is resident on the portal, the portal should offer at least 2 different software engineering services that can be applied to a selected solution. The services that you support are up to you. Some SE capabilities that you might want to consider include clustering, reachability analysis, source code metrics, source code visualization, dependency analysis, and so on. I do not expect you to develop these SE capabilities, as there are many tools out there in the open source and academic research circles that you can use. Your design, however, must provide a clear strategy for dealing with the integration of the source code repository of solutions with the SE services that you are implementing. Also, although your implementation only needs to implement 2 different SE services, the design should clearly support an easy integration of additional SE services.

  2. Develop a conference management system (CMS). The CMS should support users with the following roles: Editor, Reviewer, Author. The editor creates accounts for the reviewers, and the authors create their own accounts. An author can create an account and upload one or more papers for consideration of being published in a conference proceedings. Authors can see their own submissions only. Authors must upload their paper and fill out a form with information related to the paper such as the abstract, keywords, etc. The editor can see all submissions. The editor then creates accounts for reviewers and assigns each reviewer one or more papers to referee. Your system must support the ability for a single paper to be reviewed my multiple people. Each reviewer can download their assigned papers in the native format in which it was submitted. The reviewer fills out a form providing feedback on the paper and a publication recommendation (on a scale from 1 - 5). After the reviewer prepares their feedback it is available to the reviewer and the editor. The reviewer can only see their reviews, while the editor can see all of the reviews. The editor then has the ability to release the reviews. Once the editor releases the reviews the author can see their reviews only, and the reviewers can see all reviews posted for the papers that they reviewed (since a paper is generally reviewed by more than one referee).
  3. Develop a fault-tolerant content/file management system. This system provides an administrative interface where an administrator defines multiple storage pools. A user can then register for an account and upload files to be stored in the content/file management system. Each file should be stored in at least two locations (storage pools) so that it is available in the event of a hardware failure. The user interface should provide an “explorer-like” interface to give the perception of a hierarchical file system. The system should allow the user to store and retrieve multiple versions of the same file. The system should also allow the administrator to govern/limit the amount of storage available to a particular user. The system should also provide security in that a user can only see the files that they stored in the file system. A user may also mark one or more files as shared and specify read-only or read-write access permission. Shared files are available to all users.

Sample Project Download

1. Sample project unit test service stub (download).

2. Sample project design models (download). 

3.A sample project (download).

 

 

 

"The best way to predict the future is to invent it." ---Alan Kay.

"Fundamental is the building block of fun." --- A dancing girl.