Feb. 22, 2010
Due Mar. 3
Each group carries out implementation and testing tasks for the group project, and writes a report about them. The assignment has two parts. It is due before class time (12:50pm) on Wednesday Mar. 3.
Note. You are asked to use the Translab svn server set up for the course. Make sure that you check in all your code as well as your documents.
Part 1. ImplementationEach group implements a working system and writes a report about the coding task and the code. This has 3 steps.
1. Try to generate as much code as possible from classes in your UML model, using UML tools such as IBM Rational Software Architect and Netbeans UML plugins. If you need to add or change information in the classes, do them in the classes in your UML model as much as possible before you generate code.
In your report, describe how you used tools to generate code from your UML model, and characterize the parts of the code that are generated automatically. For example, did you run into any problems, and how did you solve them? How many classes, how many fields/methods in each/some/all classes, and how many lines of code were generated? If you are unable to generate code automatically for some reason, describe how you tried, why it failed, and what you plan to do about this task.
2. Try to reuse as much code as possible from existing code in other related systems that you have found and are allowed to use. Also try to build class diagrams automatically for the reused code by reverse engineering using UML tools.
In your report, describe how you used existing code from related systems, and characterize the parts of the code that are used. In particular, describe precisely the source of the code and the parts/functionalities/APIs that you used; otherwise, it is called plagiarism. How many classes, methods, and/or lines of code are used? How are they reused or modified for reuse? What are the class diagrams built from them? If you are unable to reuse existing code or generate class diagrams, describe how you tried, why it was not possible, and what you plan to do about this task.
3. Try to implement the rest of the code for all methods in your classes. You will most likely not be able to do all in such a short time. Proceed by adding functionalities incrementally, so that you always have a working system to test and to show. Your code should be well documented.
In your report, describe how you did the coding task and characterize the portion of the code that you wrote manually. In particular, what functionalities have you implemented, in what order have you added them, and what are left to do? How many lines of code did you write, for how many methods and how many classes? Whether the code is evenly distributed in all methods and all classes, or some particular interesting methods needed, say, 30% of all code? Show and explain the most interesting parts of your code. Do not include all your code in the report.
Note. Reuse, forward and reverse engineering using tools, and incremental and iterative development are all parts of the requirements. If you did not do any of them, you need to show sufficient effort and justify carefully to not to loose points.
Part 2. Testing
Each group tests its implementation and writes a test report. Test report has 3 parts: a test plan, test descriptions, and test analysis.
1. The test plan describes a way in which we show customers that the software works correctly. It first establishes the test objectives (e.g., to test each use case scenario), so that the rest can be justified based on it. It then summarizes specified functions and characteristics from the requirement, system decomposition from design, and the approach to be taken, with a characterization of the coverage. This is followed by a list of tests (which function of which component, test number) and a schedule (which, when, who).
2. Test descriptions contain, for each test listed in the plan, the data and procedure to be used and the expected result.
3. Test analysis report contains, for each test, the actual result and follow up if deviations were found.
Requirements on giving credit
For anything in your submission that is not a creation of your group, explicitly include a section or sections containing references and acknowledgments giving credits to the sources.
For any part of your submission that is a creation of your group, indicate who in the group did it; for shared work on a part, indicate who did what percentage. Describe this explicitly in a separate section at the end of your document.
Extra credit suggestions
As in the extra credit part of Assignment 1, plus the following
task for Part 1:
Try round-trip engineering, describe how you did it and what results you obtained.
Before due time on the due date, each group should submit their report as well as working code through blackboard, and include a link to the report on the project web page. Please also submit a hardcopy of the report to me or the TA before the due time; you can leave it under my door if I am not in.
The two parts are each worth 50% of the grade (for both parts: 10% for 1, 20% for 2, and 20% for 3). Round-trip engineering may earn 10% extra credit. Writing and presentation problems may loose 10%. Not using the svn server may lose 10%. Submissions missing the part on giving credit will lose 30%. Exceptionally well thought-out and well written homeworks will receive appropriate extra credit.