Project 3: Implementation and Unit Testing

Due by: Friday, November 8, 2024 at 11:59 p.m.

Introduction

The implementation phase of the project is where you do the majority of the programming. Use the design document you created to guide the implementation of the code. Work on various components of the project should be divided up among the team members and completed, keeping as close to the timeline you created in your design document as possible. Likewise, components should be tested with JUnit unit tests.

Read below for details on deliverables expected for this project.

Details

Working Product

By the end of this phase, you should have a working product that contains most of the features you planned. Ideally, you would introduce no new features in the final phase of the project which is intended for integration and system testing, polish, and documentation. In reality, some new features are to be expected for most teams.

Team Management with Trello

Trello is a tool used to track tasks. In Trello terms, each task is called a card. Cards can be added to and moved between lists. Lists mark the state of a card. For a software engineering project, the lists might be: To Do, Assigned, In Development, In Testing, and Complete. The To Do list might contain all the features that haven't been added. Each feature might be moved to the Assigned list when a team member has been assigned that feature to work on. The team member might move a feature card from the Assigned list to the In Development list when he or she is actually working on it. Then, that feature card might move to the In Testing list when it's being tested, especially if someone other than the original developer is testing it. Finally, when the feature has been tested, is working, and has been committed to the repository, its card can be moved to the Complete list.

These lists are only an example. You might find a different set of stages suits your team, depending on your development style; however, it's difficult to imagine a development system that doesn't start with a list of features, assigns them to various team members, and eventually moves them to a list of completed features.

Although there are competing project management tools such as Monday, I am requiring you to use Trello for consistency across the class. Trello is free (and can be useful for other classes or even projects around the house). Trello even supports GitHub integration.

Each student must create a Trello account. Each team must create a Trello project corresponding to your software development project. Each team must use Trello for team management. Finally, each team must add me (user name @barrywittman) to its Trello project so that I can access it.

Code Review Logs

Each workday, your team must have a code review in which the entire team discusses the code that has been added to the repository during that week. You must document these code reviews by listing who submitted the code; the features that were added, updated, or fixed; and any issues the code might have.

Track these added features against the features you planned to have completed by each workday on your timeline.

JUnit Tests

Your team is required to generate unit tests for your code, using the JUnit framework. You must create at least 20 separate JUnit test methods for the classes and methods in your code. Please generate tests that are meaningful and test important features of your classes and methods. If there is a feature of your code that seems difficult to test, please come see me for help. Learning how to test well might be the most important thing you could learn in a software development course.

Updated Timeline

Update your timeline to reflect what you got done and what you have left to do in Project 4. It's likely that some features took longer than you expected, but it's possible that some took less time. The most logical way for you to express this updated timeline is with a new Gantt chart covering the weeks in Project 4 (which go to the end of the semester).

Submission

Commit your Word, PDF, or LaTeX files (containing code review logs and updated timeline) and all Java source files (containing your working code as well as your JUnit tests) to the private GitHub repository for your group. All work must be submitted by Friday, November 8, 2024 at 11:59 p.m. As in the previous projects, written documents should be committed by storing them into a folder called docs in your IntelliJ project. These documents should have meaningful names like Code Review Logs.docx or Updated Timeline.pdf. Create a tagged release with the name Alpha Version. Doing so marks the state of your repository at that point.

All work must be done within assigned teams. You may discuss general concepts with your classmates, but it's never acceptable for you to look at another team's code. Please refer to the course policies if you have any questions about academic integrity. If you have trouble with the assignment, I am always available for assistance.

Grading

Your grade will be determined by the following categories:

Category Weight
Working Product 50%
Trello Team Management 10%
Code Review Logs 10%
JUnit Tests 20%
Updated Timeline 5%
Programming style 5%