Project Phase 3: Build Management and Version Control

CS350

Last modified: Nov 9, 2016
Contents:
1 Building
1.1 Demonstrating Test-Driven Development
2 Peer Evaluation
3 Evaluation
3.1 Grading of Project Phases
4 Design Brainstorming Session
5 Project Review Meetings
5.1 Conduct of the Meeting
5.2 Meeting Via Network Conferencing

In this phase of the project, you will begin the software construction process. Your priorities during this phase will be setting up and learning to use your project’s version control repository and automating your build

Your reference materials for this phase include

You should also review your grades from Phase 2 (stories). The detailed grade spreadsheet contains my own list of stories. If you are missing any of them, you may have failed to account for portions of the work required to finish this project. You should consider adding some of those to your own list of stories on RedMine, because I will continue to use those, in the future phases, as a basis for estimating how much of the project functionality you have implemented. If you do not have statements that describe the work you have done, you might not get credit for having done it.

1 Building

  1. Working from your GitLab project area, create a git repository for your project.

    Your project directories should be organized according to the Apache or Android conventions.

  2. Work on implementing the stories for the at least the first increment.

    Follow this process to track your progress on this increment.

  3. Using ant or gradle, automate the build of the project components so far. This should include all unit tests. The build should run all unit tests and (for now) whether those are passed or not, package the non-test components of the project as a Jar file.

  4. As you add components to the project, check them into the repository using git.

  5. Your project will eventually make use of a number of third-party libraries. Refer to the Design Notes linked at the top of this document for details.

When starting out, you may not need all of these. Use the Ant get task to fetch libraries and store them into a convenient location (e.g., within your build/ or target/ directory. (Gradle users remember: you can execute ant tasks from within Grade.) You will need to add these to your compilation and execution CLASSPATHs.

Near the end of this phase, however, you may be able to use the configuration management support of Ant+Ivy or Gradle to fetch and integrate these libraries into your build.

  1. “Submit” your project for this phase by tagging the version as “phase3”. Note: this should be a simple tag, not a new branch.

1.1 Demonstrating Test-Driven Development

You are required to follow the principles of test-driven development and to document your practices in doing so.

  1. In the previous phase, your team created stories in the Redmine issue tracker. You will use those to indicate what you are working on and how much progress you have made.

    Go to the issue tracker, log in to your project, and select “Agile”. This will take you to the backlog board.

    When you are ready to work on a story, assign it to yourself. (Drag your name from the list of project members on the right to the card for that story.)

    • It is permitted to reassign stories to other team members as necessary. Ideally, this should happen as you switch from task to task in implementing that story.
  2. The columns of the backlog board indicate how far you have progressed through the typical stages of TDD. Drag the story card from one column to the next as you begin each new activity.

    • So when you first start work on a story, you would drag it from “New” to “Interface Design”. When you have made any changes to ADT interfaces that you believe will be required, drag the card to “Test Case Development”. After you have developed your new unit test cases, move the card to implementation. When you are passing your tests, move the card to Integration. When your new code is successfully integrated into the rest of the project, move it to “Closed”.

      • You can also carry out these changes by editing the card and changing the “Status” field.

      • If necessary, you can move cards backwards. You can also move a card to the Rejected status at any time if the story has become unworkable or unneeded.

        • Add Notes to the cards as necessary to indicate why you have taken unusual steps.

  3. As you move your cards from column to column, add Notes to the issue to explain what you have done. Specifically,

    • When you move from Interface Design to Test Design, your note should indicate which classes you have added or modified and which function interfaces you changed within those classes.

    • When you move from Test Design to Implementation, your note should indicate which unit test classes you added or modified and which functions within those classes are testing the behavior of this particular story..

    • When you move from Implementation to Integration, your note should indicate which functions in which classes implement the core behavior of this story.

    • When you move from Integration to Closed, you should indicate what integration and/or system test classes and functions test this story’s behavior.

If you don’t update your agile board, your group may not get credit for work accomplished. If you move the cards forward without adding the explanatory notes, I might not believe your claim to have finished something.

2 Peer Evaluation

Each team member must individually take the peer evaluation survey. The purpose of this survey is to assess the contribution made by individual team members.

3 Evaluation

Evaluations will be a combination of how much the group has accomplished and how much each individual contributed to that group’s effort.

The login name / account used to create or edit stories or to commit code changes to the project will be also used as evidence of the individual’s efforts. This means that you should not appoint some students as scribes/librarians to record others’ work. Doing so will guarantee that the librarian gets credit for everyone else’s work.

Your team’s progress will be measured both in terms of what has been submitted and in a project review meeting. Refer to the more detailed description of the project review meetings below.

3.1 Grading of Project Phases

Phases 3 and 4 will be graded as

score = (_progress_ + process) * team * indiv

where:

4 Design Brainstorming Session

Near the beginning of phase 3, we will conduct a design “brainstorming” session during your recitation period. The purpose of this session is to arrive at a group consensus of the major components of the system design. As with all scheduled recitations, attendance is mandatory.

  1. Prior to the meeting, review our earlier discussion of Object-Oriented Analysis, particularly the object-oriented philosophy and the idea of modeling in terms of interacting objects. CS330 students may want to review the process of “classification”, which lies at the heart of the analysis that we will be doing.

  2. At the start of your hangout, one person should create a Google Doc editable by all team members and by @instructorEmail@ and share the URL to that. Make sure that your group name is part of the document file name.

  3. Based upon the requirements and design notes, propose classes that you think will be essential to this project. Propose the major operations on these. Sketch these out in your shared document as C++ class interfaces.

    Don’t worry about syntax and don’t waste time trying for perfection here. But do try to record things clearly enough so that someone can identify the classes, operations, and the major inputs/outputs of those functions.

  4. After teams have had a little while to get the process going, the instructor will start moving from one team meeting to another to see how you are doing and offer suggestions where appropriate. The timing will depend on how much time is spent with other teams. Yours may be visited once, or multiple times.

  5. After the meeting has concluded, put your shared document into your project Wiki either by copying it to a new Wiki page (linked from your front page) or by linking directly to the Google Doc URL.

5 Project Review Meetings

These meetings will be held during the recitation periods, as announced on the course outline.

Meetings will be held by network conferencing (Hangouts). More details on network conferencing meetings is below.

This course is about tools and techniques to support software construction, not about programming specifically. Getting the project to work will count as part of the grade, but is not the only part and may not be the most important part, except in as much as it demonstrates mastery of the relevant tools and techniques.

5.1 Conduct of the Meeting

An individual who is unable to complete a required task or answer a directed question to my satisfaction will lose individual score points. If a second individual in likewise unable to complete that task or to answer the question, then the overall team score will be reduced.

5.2 Meeting Via Network Conferencing

Meetings will be conducted via Hangouts. You will receive an email prior to the meeting containing a link that will take you to the meeting.