Homework 6

The goal of Homework 6 is to create a detailed design of the system you are creating for the semester project. The goal of design is to generate information that will allow you to start implementing the system with confidence. To do this, you will expand on the information generated for Homework 5 by creating a document that contains the following sections:

UI Mockups: Create screen mockups for the user interface of various parts of your application. What will a user see as they work through the tasks identified in your use cases? What is the overall organization of your user interface? How will data be displayed? How will the user navigate from screen to screen? Use this task as a means for focusing your thoughts about what you will actually be creating... iterate now on how your screens will be layed out and then include your final sketches in this section. I'm not going to place a limit on the number of screens you need to create for this section. Include what you think is needed to convey an overall sense of your application. Note: it is okay to work on paper for this task and then scan in your work to include in your document.

Data Storage: Discuss how you will persist data in your application. What storage technology will you use? Text files? XML? sqlite? Where will the data be stored? Describe the classes that you will use to access this data at run-time.

User Interactions: Use your use cases and ui mockups to identify at least three interactions that your user will have with your application. For each interaction, describe how your system will support it. Then show a sequence diagram of the objects that will participate in the interaction... some of these objects will represent UI widgets, some will be objects of the classes defined in the previous section (known as “model” or “domain” objects) to access/update persistent data, and some will be objects that sit in between the UI and the persistent data. This latter class of object is known as a “controller” and they contain application logic that decides how to respond to events, updating both model objects and UI widgets to represent the new state of the system.

Recall that sequence diagrams do not contain conditional constructs, so be sure to clearly describe the interaction that is being displayed in the sequence diagram. Do not try to show if-then-else scenarios in a single sequence diagram. If you find yourself needing to show such a situation, simply create two sequence diagrams, one that shows the true branch and one that shows the false branch.

Overview of the Application Architecture: Provide more information about the structure of your application and what frameworks it will be using. For example, if you're building an Android application, describe the activities you'll be creating and what Android services you'll be using (Media, Networking, Location, etc.). If you're building a web service or application, what framework will you be using, how will your service be structured, what request-response cycles will your service be supporting, etc. The goal of this task is to get you to delve more deeply into the frameworks you'll be using to implement your system and to think up front about what classes and services in that framework are the most relevant to your application.

Updated Class Diagram: Finally, use the information generated by the above activites to update the class diagram from Homework 5. There should be more detail in this diagram about how the system will be implemented, how frameworks are used, etc. If it is too difficult to fit everything into a single diagram, you can split your classes across more than one diagram in whatever way makes the most sense for your particular application. There should be more than just class names and relationships in this diagram, you should start to have a sense of the attributes and methods that will be contained in each of the classes.

This assignment is worth 70 points. 20 points each for the sections called UI Mockups and User Interactions and 10 points each for the remaining sections. This assignment is due on Friday, April 1st at 11:59 PM. Please submit a single archive containing all of your work.

© Kenneth M. Anderson, 2011