Hide menu

TDDB84 Design Patterns

Lab assignments

These instructions are valid from the fall of 2014

General Instructions

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.

Questions and Answers

One important note before you proceed to the instructions below: If you have any questions regarding the labs, make sure to check the corresponding forum in Moodle. Please feel free to participate in the discussions there and post your own questions.

Rationale

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.

Groups

Based on the pairs registered together in WebReg, you will be assigned (almost) randomly to one of three main topic groups:

  • The GUI group (package net.sf.freecol.client.control,gui)
  • The Domain model group (package net.sf.freecol.common.model)
  • The AI group (package net.sf.freecol.server.ai )

Each pair will belong to one of these three groups, and will also be connected to two other random pairs from each of the other two topic groups. See the table below for more information. Each row lists three groups that are connected to one another through the lab series. Each group will primarily be investigating, testing and adding functionality in a restricted part of the application described by the Java package listed to the right of the name of each group above.

TDDB84_2014_A123
GUI Model AI
karha455 sebhe175 johli119 tonfr314 marsw115 nikse235
TDDB84_2014_A456
GUI Model AI
julwi727 perek586 felno295 arvar314 johfr035 robda446
TDDB84_2014_A789
GUI Model AI
felri885 emmhe587 denju441 olist125 tomvi780 jonsk197
TDDB84_2014_A101112
GUI Model AI
danni701 nicos276 johsj101 jimax536 jonka100 hanes262
TDDB84_2014_A131415
GUI Model AI
nikbo120 emibe709 chrpa237 oscha646 rasho381 simda870
TDDB84_2014_A161718
GUI Model AI
emiol791 kribo852 marja589 dengo392 henla728

TDDB84_2014_B123
GUI Model AI
denor390 jusso422 matsv339 maxda784 simke926 andso518
TDDB84_2014_B458
GUI Model AI
antni325 wilda168 petar239 mathu837 nikni492 simsp242
TDDB84_2014_B91011
GUI Model AI
simqv543 wilho466 larpe603 vikan661 magha862 davbe067
TDDB84_2014_B121413
GUI Model AI
robab960 arvjo966 milba894 ammal617 jendu050 danca836
TDDB84_2014_B161718
GUI Model AI
juaji524 guali867 sruko932 rosra333 yunko064 renwa331

TDDB84_2014_C123
GUI Model AI
josgu898 johgu166 perwe710 sebst697 antsu469 alete471
TDDB84_2014_C456
GUI Model AI
erika440 filan821 gussv448 samli627 emihe386
TDDB84_2014_C789
GUI Model AI
johro127 maral420 axeek790 marfa222 albst795 marno512
TDDB84_2014_C101213
GUI Model AI
ludhe894 andgu198 gunbe856 axeba415 antda166 simha478
TDDB84_2014_C141516
GUI Model AI
stebr697 nikha184 crito803 jaklo522 marni388 eriha700
TDDB84_2014_C111718
GUI Model AI
tomwa926 davla305 matca324 micso796 davsa410

TDDB84_2014_D123
GUI Model AI
karkr654 jonze168 emiax775 tomfo938 emiry224 albto827
TDDB84_2014_D456
GUI Model AI
emmed608 hanin602 phibu125 alece341 aroto019 marny568
TDDB84_2014_D789
GUI Model AI
linme882 linna887 jonpe176 marwa172 gabba873 krija286
TDDB84_2014_D101112
GUI Model AI
johel964 sofwe496 nikan278 joade361 teovi698 oscwe917
TDDB84_2014_D131415
GUI Model AI
annfl042 nikfr357 marga603 sarsv839 davfa652 antos600
TDDB84_2014_D161718
GUI Model AI
frejo989 danca706 mikza835 aleud070 johsy071 marki423

Timetable overview

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.

Note: This is just an overview for you to get a brief appreciation for the workflow. For a more detailed view, please see Timetable

Preparations

In order to be able to hand in your assignments for the labs, you will require enrollment keys for Moodle so that you will be added to the correct group in that system. The following keys are set for the groups:

Group Enrollment Key
Group A 2014_groupA
Group B 2014_groupB
Group C 2014_groupC
Group D 2014_groupD

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:

In order to get started after have been assigned a group, it is necessary that you complete the following steps: Git & Gitlab guide.

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.

Tools

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.

Hints 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.
  • If you are new to Eclipse or just need help on how to setup, compile and run the FreeCol project, please see the compiling and running FreeCol tutorial

Bonus points for written examination

During lab 3 you will have the possibility to acquire bonus points for the written examination. More on this in the instructions for lab 3.

Lab assignments


Page responsible: Ola Leifler
Last updated: 2014-09-03