|
Yuanfang Cai Assistant Professor |
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 ProjectThe group project can take two forms:
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. The following are some project ideas that you may use:
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. |