Toolstack

The SWEA course is focused on realistic, industrial, software development - and that means a lot of industrial strength tools.

Introduction

The central tools you need are

  1. An object-oriented programming language: Java required.
  2. Build and Dependency management: Gradle required.
  3. Software configuration management: Git required.
  4. An Integrated Development Environment (IDE): IntelliJ recommmended.

All provided code will run on Java 8 and (probably) newer versions.

There are basically two paths for getting the toolstack:

  1. Get the provided virtual machine ('m1') with all tools correctly installed. I actually recommend this path as a) it is easier b) virtualization is the 'name of the game' today, and c) as you will get used to Linux and d) when you have passed this course you just delete the VM and have not poluted your host machine with lots of SWEA tools.
  2. Install all tools manually on your own machine. A bit more tedious, but you have a bit more freedom in choosing tools and the comfort of your favorite OS.

In later years, I have simply stopped developing on my Windows machine - I do that in Lubuntu Linux VMs instead to keep my own machine clean.

Virtual machine: M1

M1 is a Lubuntu based VM. Ubuntu/Lubuntu are widely used Linux distributions and are thus also a perfect learning vehicle for getting to know Linux that is the OS for open source server systems...

To get going, you have to

  1. Download the VM in m1-swea.zip (3.6 GB) and unzip it in some folder. Unzips to a folder with a VMWare version 9 virtual machine. It is a 64-bit LUbuntu 18.04 LTS Desktop machine with Java 8, Gradle, Git, and IntelliJ installed. User: dev; pwd: csau.
  2. Download a VMWare Workstation Player (On www.vmware.com, click the 'Products' category and select 'Workstation Player' (Windows/Linux) or 'Fusion for Mac'. Workstation Player is free for non-commercial use, Fusion is only 30 day trial. However, you should be able as AU student to get Fusion for free - check the forum for details.
  3. ... and once started, browse to the folder and load and start the VM named 'm1'. If asked, say you have copied it.
  4. Log onto Lubuntu using the credentials above
  5. Want a shell? Hit Ctrl-Alt-T.
  6. Want the IntelliJ IDE? Click 'StartButton/Programming/IntelliJ'.
  7. Want a faster VM? If your laptop has spare muscles, shutdown the vm, and then edit settings - more memory surely helps!

Why 'M1'? It is the old Messier catalogue number for the Crab Nebula, a supernova remnant, which is the background picture of the VM. I have a degree in astronomy way back...

I have made screencasts of starting a Lubuntu VM - it is for an earlier course, but the process is the same for M1. You can find them here

  1. M31 Download and Run. Demo of getting and running the m31 VM (which is rather similar to M1). Ignore the demo of running the PayStation test cases using Ant in a shell; we use Gradle instead in SWEA.
  2. M1 Test in IntelliJ. Short demo of running the PayStation test cases within IntelliJ.

The source code for the mandatory project is already installed, in folder proj/hotciv-tdd-start.

Git Importing

And... You will in Mandatory Iteration 2 need to get a AU GitLab repository per group and get HotCiv under Git control. If this is new to you, you can consult the following video except for the exceptions mentioned below the link.

Import HotCiv into AU GitLab
Changes compared to the video:
  1. Use the 'UNI-AD' login and use your Blackboard credentials.
  2. The 2018 onwards HotCiv is Gradle based, so the files you need to git add are just The files and folder shown in the video are from the Ant era in which the project contained a lot more files (no more 'lib/', 'test/', 'build.xml', etc.)

Manual Install on your Own Machine

You will need Java, Gradle, Git, and an IDE.

Java

Java JDK Standard Edition. You will need the 'JDK' to get the compile. Make sure you update your PATH environment variable so you can execute 'java' and 'javac' from a shell. On Ubuntu Linux you can 'sudo apt-get install openjdk-8-jdk' and get everything you want.

Gradle

Download it from https://gradle.org/install/. Again, Ubuntu linux is easier, just 'sudo apt install gradle' and it is working.

Git

Search the net for 'Downloading Git' and you will hit installation guides for all major platforms. For Ubuntu Linux, just use sudo apt-get install git.

Personally, I use 'SourceTree' on Windows (nice graphical overview of branches, code diff, and nice stuff); and use the raw command line on Linux.

One annoying thing about git is that it constantly asks you for your git repository password. Avoid that by setting up its credential cache. These commands should do the trick:

  git config --global user.name "(your name)"
  git config --global user.email "(your mail address)"

  git config --global credential.helper cache
  git config --global credential.helper 'cache --timeout=7200'
  git config --global push.default simple
    

To import HotCiv into your Git repository, see the 'Git Importing' section above.

IntelliJ

Find IntelliJ download page for how to get it for the major platforms.

To get HotCiv into IntelliJ, please follow the Import a Gradle project into IntelliJ guide.

If you run into problems, ask at the forum or seminar!

Screencast production and publication

As a supplement to writing reports, hand-ins may require you to make a screencast: A video of your computer screen while you talk us through the actions you make.

I use BandiCam for recording (Windows) but it is not free. Students have over the years found and recommended tools, check out the following suggestions:

  1. https://obsproject.com
  2. https://www.nextofwindows.com/6-best-free-screencast-recording-tools-for-windows
  3. Mac's QuickTime can be used on MacOS.
  4. https://www.screencast-o-matic.com/ should work on Mac and Windows.
  5. 6 of the Best Free Linux Screencasting Software provides some options for Linux
Please, if you find others or have comments, post a note on the forum.

Hint: If your tool supports it, ensure that you turn on features that highligh the mouse and mouse clicks as this greatly enhances the TA's ability to view what you have been doing! In Bandicam, on the 'Video' tab, make sure to check "Show mouse cursor" and "Add mouse click effects".

If you start considering using video editing software, then I frankly think don't. If you are not used to a tool, it would take much more time to get acquinted with it, than to do the screen capture once more.

To let the TA view your screencast there are two options

Optional tools

UML Drawing Tools

A simple drawing tool is to write it on a whiteboard/paper, use your phone to take a picture, and paste it into your report! As long as you writing is easy to read, this is perfectly fine.

For more finesse, a UML drawing tool is handy to draw the required class and sequence diagrams for the exercises. I use Microsoft Visio (Win platform). As a CS student you can get Visio for free (and a lot of other MS software). Do not use the built-in stencils, instead I recommend those posted by Pavel Hruby (at www.phruby.com). All UML diagrams in FRS have been made in Visio. You sign up for free Microsoft products by sending an e-mail to microsoft@cs.au.dk - you must provide your CS mail address in the body of the mail message.