Seminar sylabus PV260 (Groups 01, 02)

Seminar 1 - Introduction, Essential tools

Content of the seminar sessions

The purpose of the seminars is to provide hands-on experience with the topics discussed on the lectures. The seminar content will cover various areas of software metrics analysis, code refactoring and testing. The students will analyse and optimize multiple software quality attributes, such as reliability, maintainability, testability or performance with the help of modern open source tools. The students will work in pairs on exercises during the seminars and on larger assignments (projects) at home. The attendance on the seminars is mandatory. Although, the seminars focus on the Java programming language, the principles discussed on the seminars are generally applicable also in other languages and environments.

Requirements

The maximum number of points to be obtained in the course is 100 and the required minimum for passing is 70. The distribution of the points is as follows:

  • Active participation in lectures : 10 points
  • Achievements in seminars (completing bonus tasks, nice solutions, extra activity etc.): 10 points
  • Projects : 45 points
    • Assignment 1 (Refactoring): 15 points
    • Assignment 2 (Testing): 15 points
    • Assignment 3 (Performance testing, Static Code Analysis): 15 points
  • Final colloquium assessment: 35 points

Penalties

  • Every second (and afterwards) unexcused absence (note that one is allowed, and the first seminar session does not count):
    • -6 points.
  • Late submission of project or assignment:
    • -3 points for each team member.

Content of each seminar:

  1. Seminar organization, general introduction, Essential tools
  2. Clean Code and SOLID principles
  3. Code smells, Refactoring - refactoring existing project and adding new functionality, tuning performance of the project, scalability
  4. Testing - Advanced JUnit techniques, Data driven testing, Hamcrest matchers, Mockito
  5. Testing - Feature/Product testing, Test plans, Google ACC method, Risk Management, Selenium, Issue processing
  6. Performance testing with PerfCake, Profiling java applications with JProfiler
  7. Static code analysis - Checkstyle, Code reviews, Continuous Integration

Projects

  • There will be three larger assignments (separate mini-projects)
  • First will focus on code refactoring, second on unit testing and third on the performance testing and static code analysis
  • The deadline for each assignment will be 2-3 weeks
  • Students will work in pairs
  • Each project will have set of optional (and more challenging) tasks, whose completion will be awarded by bonus points

Basic study sources

Books

  • Clean Code: A Handbook of Agile Software Craftsmanship
    • Robert C. Martin
    • Link
  • Refactoring to Patterns
    • Joshua Kerievsky
    • Link
  • Refactoring: Improving the Design of Existing Code
    • Martin Fowler
    • Link
  • xUnit Test Patterns: Refactoring Test Code
    • Gerard Meszaros
    • Link

Web

Tutorials