TDDB84 Design Patterns
This page is currently reflecting the proposed format for the Fall 2014 edition of the course. The contents of this page is still subject to changes before the start of the course.
These instructions are valid from the fall of 2014
The software you will be working on is FreeCol, an open source implementation of a multiplayer strategic computer game set in the Caribbean during the era of European colonization. You will analyze, test and modify the software, to emulate a normal progression for new developers in a project, and in the process try to understand how the software works, in terms of design decisions and their impact on your ability to understand, test and modify it.
The lab series will be performed within a larger software project due to the nature of software design and design patterns: design patterns will be necessary and visibible only at a larger scale in software projects. Also, software design tends to matter only when several people work jointly on a project, which is why you will be divided into groups.
Based on the pairs registered together in WebReg, you will be assigned randomly to one of three main topic groups:
- The GUI group (package
- The Domain model group (package
- The AI group (package
The lab series is a big part of this course, so prepare to invest some time in it. Below are the expected hours for each laboration given, and these include not just doing the laborations but also discussing with your peer groups, submitting forum posts to Moodle, and reading other groups material.
- Lab 1 should take 24 hours to complete.
- Lab 2 should take 24 hours to complete.
- Lab 3 should take 32 hours to complete.
This sums up to 80 hours, which is equivalent to the 3hp or 3 ECTS.SHOULD PERHAPS BE MOVED TO TIMETABLE
Note: This is just a overview for you to get a brief appreciation for the workflow. For a more detailed view, please see Timetable
The software will be developed within a lab environment that consists of the programming language Java, a Java development environment (Eclipse), source-code management for distributed development (git/GitLab) and the software itself (FreeCol). In that order, we suggest that you do tutorials to understand the parts that you are not familiar with since before:
- Java: There are excellent tutorials or cheat sheets on Java for people who have abackground in C, C++ or C#.
- Eclipse: there are tutorial videos and excercises for beginners if you have no prior experience with working in an IDE such as Eclipse. If you have, chances are you will recognize much of the functionality from IntelliJ, Visual Studio or Netbeans.
- Git is a distributed version control system for software, and there are great resources available to learn more about it on git-scm.org.
- Gitlab is used as the local web frontend to your projects that you will collaborate on.
net.sf.freecol.FreeCol). We encourage you to try the game, alone or against your friends.
You will have had projects and accounts generated for you in GitLab, where the first person in each subgroup will be the owner of the project. You will need to ensure that you can collaborate on the project both of you, by making both students developers in the same project. Is is assumed that you work actively both by submitting to the project.
Also, you will have to invite your assistant to be a developer in your projects, so that he or she can review your progress. Your projects will not be visible to all other students. The groups that you are working with will have to submit their work to you as pull requests.
Below are some suggested tools that could provide useful throughout the lab series.
- ObjectAid UML Explorer - Provides an UML overview over a selected set of classes, which could prove useful when locating design patterns or finding structural dependencies in the code.
Hinst and help
- The Eclipse command to Open Call Hierarchy is a useful tool to help see dependencies and usage for methods and constructors. In order to use this command right click on a method or constructor and select Open Call Hierarchy from the drop down menu.
- Q: What if our group fails to comply with the deadlines for the labs, with respect to participating with others' or producing code of our own?
- A: You will be tasked with extra assignments (see the end of each lab description under Extra Assignment)
Page responsible: Ola Leifler
Last updated: 2014-07-02