CSCI 639 Topics in Software Engineering Assignment #4 Fall 2006
Assignment #4: Detailed Design – Overview (Two Parts) 1. A carefully constructed Iteration Plan. This now becomes an essential part of your deliverable, as we are about to go into the Construction phase. (more next pages) 2. Use Case Realizations. A sequence diagram and a communications diagrams for the basic course of events for each of your use cases. Lastly, a View of Participating Classes. The sequence diagram is to be fully annotated, as shown in lecture slides. This is a design-level sequence diagram, so it should include subsystems via their interfaces; also the persistency mechanism.
Iteration Plan – Calculated Risk You should sketch out what you feel will be the number of Construction iterations that will be needed and the features (scenarios) that you will implement in each iteration. Remember! Jump on the scenarios / features that present the MOST RISK to develop! Secondly, your most important core functionalities should be the next consideration. Map these out into a number of iterations with short duration (typically two or three weeks) and potentially stick to the plan. Include dates, scenarios, and expected outcomes, and, of course, room for your iteration assessment - shortcomings (a post mortem). Use Word or Excel. Include span time simulated dates of iteration (since we will not actually do them in this course due to time)!
Recall: Iteration Planning (Normally your first iteration must be totally understood before you start it and you should have a ‘pretty good idea’ of the specifics of your second. As you finish the first, you would roll into the second one anything ‘not quite right,’ finalize it before you start this one and map out a ‘pretty good idea’ for the third iteration. Iterate.) I realize that we will not be implementing this project, in the interests of time. But take a stab at setting up the iterations. Note: the first iteration often may not contain a great deal of core functionality; rather, be sure you can address high risk items, such as linking to satellites, accessing / validating access to a database, connecting to this/that, etc. Ensure you have the technologies you would need on board and are configured correctly, etc.
Iteration Plan – Technology Assessment Technology Assessment. Your iteration plan should include your preliminary assessment of the technologies that you would plan to use, where (for what features) you would plan to use them, sources of knowledge of these technologies and overall assessment of your team’s familiarities with these technologies. Examples: JavaScript and HTML for parts of the user graphical interface; Java servlets or Beans for …
Use Case Realizations - Interaction Diagrams Interaction Diagrams. For each Use Case, you are to develop a Sequence Diagram in Rose for the basic course of events scenario for that particular Use Case. Develop the Sequence Diagrams in the Logical View, Design Package, etc. Check out Use Case Realizations in the Rose Browser. Sequence diagrams are to be fully annotated and should include subsystem interfaces, persistency references, etc. as appropriate. You need not provide the sequence diagram for the subsystem itself – only its interface. See lecture slides for these Context Diagrams. Use the toggle (F5) to generate the Communications Diagram.
Use Case Realizations - VOPC Class Diagram For each sequence diagram you develop, you are to produce in Rose a single VOPC (View of Participating Classes) for that sequence diagram. This represents the static view (as opposed to the dynamic view given by the sequence diagram) that shows classes (attributes and methods) needed to support the scenario for which you have created the sequence diagram. Be certain to include all the associations, multiplicities, etc. in this class diagram. Some of the details of Assignment #3 that might not have gotten ‘finalized’ (the attributes and operations of some of the classes) will need to be finalized at this time. The classes in the VOPC are to include your best estimate of the required methods as well as the attributes needed. (In truth, the BEST approach to assigning these responsibilities (via methods) to classes is by undertaking the sequence diagram and noticing that there are responsibilities that are needed – then add these responsibilities (methods) to the appropriate classes (the ones that have the data necessary to meet the responsibilities). We are at the end. Wish we could do more!