Adrian Trifu

Welcome to the lab website! You'll find an up-to-date overview of the current status here

Week 1:

  • Kickoff

Week 2:

  • Modelling software with UML (for a list of UML modeling tools, check out http://www.oose.de/umltools.htm)
  • Class diagrams
  • Sequence diagrams
  • Assignment 1 (deadline week 3): Based on the contents of this archive, and using a UML modelling tool of your choice (e.g. StarUML)
  1. Draw a detailed class diagram for all the classes contained in folder "code", as well as a sequence diagram for the method calls triggered after the line marked by a "*" in method main() of class Main;
  2. Sketch an appropriate implementation for the classes described in the two diagrams contained in folder "UML". Above all, provide implementations for the methods createFile(), createFolder() and createShortcut() in class Folder, as well as for the two copyTo() methods in classes Shortcut and File.

Week 3:

  • Revision control systems
  • Case study: CVS
  1. References: CVS manual, Pragmatic Version Control using CVS

Week 4:

  • Managing builds with Ant / make
  • References (Info): make tutorial, make manual, g++ man pages
  • References (CTI): Ant tutorial, Ant manual
  • Assignment 2 (Info): For the attached project, write a makefile that uses the GNU compiler g++ and has the following targets:
  1. compile - compiles all the source files contained in the root folder of the archive.
  2. build - builds the program executable by linking the object files that result from target "compile" with the external library contained in folder "lib" (the library contains the implementation of class "Inmultire").
  3. deploy (default target) - should create the folder called "deploy" into which it should copy the program executable that results from target "build"
  4. clean - cleans up by deleting all object files, the program executable as well as the folder "deploy".
  • Assignment 2 (CTI): For the attached project, write an Ant build file having the following targets:
  1. init - creates a folder called "build"
  2. compile.model - depends on "init" and compiles the source files starting from "src/de/fzi/sissy", using all external libraries contained in "lib", into the folder "build"
  3. compile.all - depends on "compile.model" and compiles the test classes contained under "src/de/fzi/test" into the folder "build".
  4. deploy (default target) - creates a folder called "deploy" into which it creates a jar containing the compiled classes under "build/de/fzi/sissy".
  5. clean - restores the project to the initial state (deletes everything that hadn't been previously included in the archive).

You can find a skeleton of the ant file here

Week 5:

  1. CVS integration
  2. Ant/make integration
  3. code conventions & templates (References: Sun Java code conventions, Sample C++ coding conventions)
  4. refactoring support (Reference: M.Fowler et. al,, “Refactoring. Improving the Design of existing Code”). Case study (CTI students only): here.

Monopoly

Week 6:

NumarComplex.zip

  • Automated unit testing with JUnit / CppUnit.
  • Literature:
  1. Info: CppUnit Cookbook and Wiki, A. Hunt, D. Thomas “Pragmatic Unit Testing in Java with JUnit” (Chapter 1).
  2. CTI: A. Hunt, D. Thomas “Pragmatic Unit Testing in Java with JUnit” (Chapter 1, 2, 3)., JUnit tutorial, JUnit home.
  • Assignment 3 (Info): Write a test suite containing the following test cases for the method "contains()" of class "IntList", in the attached source code: search for a number in an empty list, search for a number in a list of one element (the searched number is in the list), search for a number in a list of one element (the searched number is not in the list), search for a number in a list that has more than one element (the searched number is in the list at the first position), search for a number in a list of more than one element (the searched number is in the list at the last position), searched for a number in a list of more than one element (the searched number is not in the list). Use fixtures (setUp/tearDown) where necessary. Makefile
  • Assignment 3 (CTI): For method "strToInt()" of class "SringConv", create a suite of tests that covers all possible execution paths of the tested method. The source code of the class can be found here

Week 7:

  • Use cases and story cards
  • Suggested literature:
  1. Martin Fowler, “UML Distilled” (Chapter 9)
  2. http://en.wikipedia.org/wiki/Use_case
  3. http://en.wikipedia.org/wiki/User_story
  4. Kent Beck, “Extreme Programming Explained” (Chapter 15).
  • Assignment 4: The attachment contains the description of a project. Identify the relevant actors as well as the corresponding use cases, and draw a use case diagram.

Based on the identified use cases, identify and describe features of the system, using story cards. A template story card can be found here.

Week 8:

  • CRC cards
  • Team formation for the mini-project
  • Suggested literature:
  1. K. Beck, W. Chunningham, “A Laboratory For Teaching OO Thinking
  2. D.Rubin, “Introduction to CRC Cards”.
  • Project Assignment 1:

Given the attached requirements document, identify all relevant actors and use cases, and draw the corresponding use case diagram (e.g. using StarUML). From each use case, specify at least one story card.

Week 9:

  • Orele de vineri nu se tin.
  • In prima saptamana de dupa vacanta va rog sa veniti in echipe formate, cu tema pentru saptamana 9 (diagrame de use-case-uri si story cards pentru cofetarie).