CompSci 308
Spring 2021
Advanced Software Design and Implementation

OOGA Team Meeting

To prepare you for the final project, work on the following exercises in your teams:

  1. Introduce yourselves by sharing:
    • where you are and how you are experiencing school this semester
    • your motivation/interest in this course
    • your knowledge/interest in games and genres
    • areas of the project you interested/concerned about
  2. Share your previous team experiences to derive some positive practices that the team thinks would be useful to incorporate into the Team Contract
    • Choose a specific game genre the team wants to work on
    • Choose a fun/interesting name for your team (this is an excellent team build exercise because, along with agreeing on the genre, it can sometimes be the hardest part of the project :)
  3. Clone the shared team repository to each person's machine and Open the project in IntelliJ
  4. Complete this exercise to think about describing the design of a very flexible game without actually writing any code
  5. Discuss your goals, ideas, and project roles to come to consensus as a team as a start to your planning:
  6. Choose a time for the next team meeting

Any time left over can be spent discussing anything useful to get the team started on the project's Design Plan.

Submission

At the end of lab, push your group's markdown files, DESIGN_EXERCISE.md and PLANNING.md, to the doc folder of the master branch of your team's provided ooga_teamNN Gitlab repository using the commit message "lab_fluxx_design - everyone's NetIDs".

Individually, submit the Team Contract form.

Discussion

Before discussing OOGA directly, start with this smaller exercise that asks you to try to think about the design of a very flexible game without worrying about exactly how it will be implemented. In other words, without writing any actual implementation code, try to explore trade-offs between several designs and describe the best one in enough detail that you can get a handle on how the different rules and goals could be defined using data files.

Planning

Like most complex software, OOGA can be broken down into a set of somewhat self-contained components that are potentially usable on their own but need to work together flexibly to solve the total problem. Keep in mind when your team creates a schedule for the work to be done on various components that some components are more fundamental than others and some can simply be placeholders or have simplified implementations until they need to be fleshed out. Some components will represent the Model, while others will represent the View and/or Controller.

Within each Sprint, you may choose to start some components, make progress on others, and/or finalize the implementation of yet other components. No matter how you choose to distribute the work to be done among the sprints, there should always be something demonstrably improved over the last sprint, and the code at the end of the sprint should always run (i.e., without crashing). In industry, Sprints often end with a demo to stakeholders, and progress is measured by how many features (i.e., things a customer would see as a reason for buying your product) were completed in the Sprint, rather than how much of the data structure was set up.

Try to spend some time now clarifying the order in which the project's features will be completed and who will be taking the lead on each feature.

Discuss your plan by prioritizing the components each team member plans to take primary and secondary responsibility for and a high-level plan of how the team will spend its time to complete the program. Specifically, each person should take responsibility for specific features and use cases they intend to work on during each Sprint. This requires the team to agree on the feature priorities and set a goals for each week's work.