Overview |
---|
For this project you will design and implement software for drawing “vector graphics”.
This QuickTime movie shows how the developers of OmniGraffle implemented the features below. You don’t have to implement the features the same way they did—I’d be amazed if you did—but hopefully the movie clarifies what a user could do with each feature. Your project has three categories of features: Required FeaturesA successful program must allow the user to do ALL of the following:
Additional FeaturesFor a higher grade (see the Grading Rubric below), your program must also allow the user to do some of the following:
Bonus FeaturesA top-notch project (see the Grading Rubric below) will also allow the user to:
|
Two Rules for Teaming / LearningThis is a team assignment. That means that some “divide and conquer” is valuable (indeed, necessary!) and appropriate. It is also a learning experience. To that end:
It is perfectly fine to get help from the in-class or lab assistants. As always, they should provide help, not do the design or write the code for you. |
Team GradingSee Team Score and Individual Score for how the team is graded and how individual grades may be more or less than the team's grade. Note here that: Those who don't obey the two rules for an appropriate learning experience (in Team Participation, to the left) will receive a reduced grade. Also:
|
Subversion Repository
Your SVN repository for this assignment is:
Check out the
All work should be placed in this project folder and committed back to your repository.
After you check out your VectorGraphics project, examine its Planning folder and note that templates for all of your non-code documents are already in your VectorGraphics project, beneath Planning. Recall the advice on using version control in teams. FIX ME - DO THIS LINK. |
Process |
|
---|---|
Extreme ProgrammingYou will use many of the Rules and Practices of Extreme Programming. In particular, you will use, in one form or another, all the indicated rules/practices on the image to the right (which is taken from the preceding link). For pair programming, each team member should do at least one pair programming session per cycle. Additionally, you should use documented stubs throughout (i.e., document each method while the method has a stub, THEN write the method's code). Where practical, you should include unit tests and do test-driven programming (where you write the unit test before implementing the unit). In-class timeYou will usually have about 1/4 of each of our sessions (i.e., about 25 minutes) to work on your team project.
Team meetings and communicationSchedule regular out-of-class meetings, at least once a week. Recall the advice on conducting Effective Meetings. FIX ME - I NEED TO DO THIS LINK. You will have a Stand-Up Meeting at each class session. Reach agreement on how you will communicate with each other between meetings:
|
Milestones and Due Dates |
|||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Descriptions of deliverables |
|||
---|---|---|---|
Release PlanThe Release Plan specifies, for each scheduled release of the software, which User Stories will be implemented in that release. We require you to have 4 cycles (releases) At the beginning of each cycle, you review your Release Plan and possibly revise which user stories are to be implemented in that cycle.
Find the template for your first Release Plan document in Planning/Cycle1.
|
User Stories and Acceptance Tests | ||
What are User Stories? | Why are User Stories Important? What are Acceptance Tests? | Grading Rubric for User Stories |
---|---|---|
Your Release Plan document should contain your User Stories. From the Rules of Extreme Programming (XP) at www.extremeprogramming.org/rules/userstories.html: User Stories are written by the customers as things that the system needs to do for them … They are in the format of about three sentences [for us, 1 to 3 sentences] of text written by the customer in the customer’s terminology without techno-syntax … Each story will get a 1, 2 or 3 week [for us, 1, 2 or 3 hours] estimate in “ideal development time” [includes testing, but no meetings, email or other interruptions].
Note that User Stories are descriptions of what the user would be able to DO with the software. For example: User launches program and sees a blank drawing area and some buttons representing actions that could be taken. This story doesn’t say anything about the buttons actually working, so that is not part of this user story. A User Story for a button working might be something like: User clicks the Rectangle button and can then draw a rectangle in the drawing area by clicking and dragging the mouse. If the user can't tell by RUNNING the program whether the User Story was satisfied, then it is NOT a User Story. |
Short development cycles are a key feature of Extreme Programming. This is especially useful for projects where the development team—that’s you—is unfamiliar with the problem to be solved. At the start of each development cycle, the team negotiates with the customer on the work to be accomplished during that cycle, namely, which User Stories are to be implemented in that cycle. After the customer has suggested some user stories for the cycle, the development team will decide whether it is reasonable to complete them all in the time available. If not, the customer will withdraw some of the proposed stories until an achievable set of stories is agreed upon. This just-in-time planning gives XP much of its agility.User stories are powerful in two important ways.
|
Place your User Stories in the Planning/Cycle1/ReleasePlan-ForCycle1.docx file that we provided, at the indicated place in that file. Grading Rubric: Your User Stories must be of the appropriate number (else no credit) and use correct grammar and spelling (else score reduced by up to 50%). Additionally:
|
Screen Layout SketchOne way to specify a project is to list its Features or User Stories, as described above. Another way is to provide a Screen Layout Sketch that depicts the user interface for your project. Reach consensus in class on a draft of the Screen Layout Sketch that you will use. Then, one or more team members may finish the sketch outside of class.
Place your Screen Layout Sketch in the Planning/Cycle0 folder, replacing the ScreenLayoutSketch.pdf file that is already there as a stub.
Grading Rubric:
|
CRC CardsYour project must incorporate a good object-oriented (OO) design, as described in your textbook (Chapter 8, sections 1 and 2, and Chapter 12). To come up with this design you will:
CRC Cards are part of Extreme Programming and described at www.extremeprogramming.org/rules/crccards.html. Briefly:
Place your CRC Cards in the Planning/Cycle0 folder, replacing the CRCCards.pdf file that is already there as a stub.
Grading Rubric: Your CRC Cards must be of the appropriate number and make sense given the context of your Screen Layout Sketch, Features and User Stories (else score reduced by up to 50%). Additionally:
|
UML Class DiagramAfter you have completed your CRC Cards, use them to generate a UML Class Diagram, as described at www.agilemodeling.com/artifacts/classDiagram.htm (and at many other places as well). Here is a sanity check for your UML class diagram. Does it:
You must draw your UML Class Diagram using UMLet. Find and use an empty template for your first UML Class Diagram in Planning/Cycle1.
Grading Rubric: Your UML Class diagram must be readable (but need not be optimal in terms of minimizing line-crossings and so forth); it must use correct correct notation; and it must be up-to-date with your code (else no credit). Additionally, for all of the User Stories in the upcoming cycle:
|
Task ListAt the beginning of each development cycle, AFTER you have finalized the User Stories to be implemented in that cycle, make a Team Task List for implementing those user stories. This list should contain all the tasks that you think you have to do to implement the user stories for the cycle. Each task should include:
Be sure to include:
You will have a separate Team Task Plan document for each cycle; find and use the template for your Cycle 1 Team Task Plan in Planning/Cycle1, and similarly for Cycles 2 and 3. It is normal for the task list to change during the cycle — just commit the updated file to your repository whenever it changes. Grading Rubric: Your Team Task List must have enough tasks to implement all of the User Stories in the current cycle (else at most half credit) and it must appear that your team used your Team Task List throughout the cycle (else at most half credit). Additionally:
|
Working CodeAt the end of Cycle 1, commit your Working Code with a comment Release 1; and similarly for subsequent cycles. Your released code should:
You should strive to pass all your acceptance tests for this cycle (as generated from your User Stories), but it is OK if your code does not do so. If there are aspects of your classes that can be tested apart from the GUI, then it would be great if you provide JUnit tests for those features. Grading Rubric:
|
Status ReportAt the END of each development cycle, complete the Status Report for that cycle. It should indicate:
You will have a separate Status Report document for each cycle; find and use the template for your Cycle 1 Status Report in Planning/Cycle1, and similarly for Cycles 2 and 3. Grading Rubric:
|
Evaluation of Team PerformanceFor each cycle (including Cycle 0), I will post a survey on ANGEL called Evaluation of Team Performance. The surveys for the first three cycles will be brief; the survey for the final cycle will be longer. The surveys will help:
Each person does the Evaluation of Team Performance at the end of each cycle; it is NOT a team activity. |
Individual ReflectionYour Individual Reflection is a survey that you do on Angel after completing the rest of the project. It lets you introspect on what went well in the project and how you can do even better on your next project. I expect thoughtful responses to the survey questions in your Individual Reflection. It forms a critical part of both your learning and your grade in the project. Grading Rubric: Your score is:
|
Public DemonstrationYou get to show off your project in a public demonstration in the Union during 10th week. Grading Rubric:
|
Grading Rubric |
|||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Your Team Score is:
|
Your Individual Score (that is, your final grade on the project) is your Team Score, but REDUCED if you are NOT:
If you aspire to a higher level of achievement than your teammates do on this project, your team should talk with me early in the project to see how we can structure the project for this. |