Lectures
The handouts and materials are partly from last year's lecture (2022). Notice: Updated slides, videos, and materials will be posted on Moodle.
Attendance in Industry Guest Lectures (Lectures 2, 13, and 14) are Mandatory. Skipping these lectures will result in an individual penalty.
- Lecture 1 (08-Sep-2023) - Introduction to Software Engineering
- Course Organization
- Overview of Software Engineering
- Background / Motivation of Homework Assignment 1
- Lecture 2 (15-Sep-2023) - Requirements Engineering I + Industry Guest Lecture (on Team Engagement in Agile environments and why it matters) by - Patrick Manuel Weyer (Swedbank)
Attendance is Mandatory.
- Additional Study Materials:
- Lean requirements (by Atlasssian)
- INVEST in good Stories, and SMART Tasks (by Bill Wake)
- Hints on how to write testable requirements
- A series of You Tube videos by Lars Bilde explaining the steps from first interviews with stakeholders to user stories, tasks, and sprint planning (note: these videos promote the use of the commercial tool ScrumWise - any other backlog management and sprint planning tool may be used instead):
- Initial user stories extracted from interview
- First backlog items (user stories)
- Finding more User Stories from existing User Stories (e.g., by splitting up)
- Splitting User Stories into Tasks?
- General remarks about the right level of backlog planning detail
- Planning the first (or next) sprint
- Time tracking with the Task Board
- Sprint Burndown Chart
- Additional Study Materials:
- Lecture 3 (22-Sep-2023) - Requirements Engineering II
- Additional Study Materials:
- Lecture 4 (29-Sep-2023) - Analysis
- Additional Study Materials:
- Old but still very informative summary on how to come up with a domain model: http://csis.pace.edu/~marchese/CS616/Lec5/se_l5a.htm
- UML notation: (wikipedia-link)
- Domain modelling rules - with examples: (link)
- Agile domain modelling - with example: (link)
- Seven information 'smells' of domain modelling - with example: (link)
- Additional Study Materials:
- Lecture 5 (6-Oct-2023) - Development Infrastructure - Development/Build/Collaboration Tools
- Topics:
- Basics of IDE (focus on IntelliJ IDEA) -- short recap
- Build scripts (focus on Gradle) -- short recap
- Version control (focus on Git)
- Build scripts (focus on Gradle)
- Issue tracker (focus on Bitbucket)
- Communication tools (focus on Bitbucket wiki)
- Links to descriptions/tutorials on how branching works in Git and what types of workflows are useful:
- Topics:
- Lecture 6 (13-Oct-2023) - Continuous Development & Integration - by Kristiina Rahkema
- Lecture 7 (20-Oct-2022) - Project Estimation / Architecture and Design I
- Lecture 8 (27-Oct-2023) - Architecture and Design II
- Additional Materials:
- In the Object-Oriented Programming course you probably learned already about object-oriented design principles. Here is a summary: OO design principles revisited (apologies for the spamming with advertisements)
- Two videos on software design given by Erik Jogi (Codeborne) in the course on Systems Modeling (2015):
- Part 1: http://www.uttv.ee/naita?id=22772
- Part 2: http://www.uttv.ee/naita?id=22820
- Two videos on the architectural pattern MVC:
- Here is a link to a series of mini-tutorials (~15 min each) by Derek Banas about design patterns: (link)
- Code examples:
- Code example of a simple MVC implementation in Java: MVC example
- Code example of Publisher/Subcriber pattern without Observer Pattern, with Observer Pattern, and with PropertyChangeListener (relevant since Java9): Publisher-Subscriber (Observer Pattern) example
- Examples of Java implementations of design patterns: (link)
- Example of a SW Architecture Description from a student project: Course Registration System
- Example DSSA Reference Architectures:
- Short overview of first generation Architecture Description Languages: ADLs
- Attribute-Driven Design method by SEI: ADD and ADD Example
- Software Architecture QuickGuide: Link to Guide
- Tutorial on Clean Architecture for mobile app development (Android): https://www.raywenderlich.com/3595916-clean-architecture-tutorial-for-android-getting-started#toc-anchor-002
- Additional Materials:
- Lecture 9 (3-Nov-2023) - Verification and Validation (Testing) I - by Dietmar Pfahl
- Additional Materials:
- JUnit4 tutorials with IntelliJ IDEA by Brian Fraser:
- JUnit4 Tutorial 1 -- Basics
- JUnit4 Tutorial 2 -- Testing Exceptions, Code Coverage, Test Fixtures
- JUnit5 User Guide
- Free Coursera Tutorial on Java Unit Testing using JUnit5: https://www.coursera.org/learn/unit-testing-in-java/ungradedLti/BDxG6/unit-testing-in-java
- JUnit4 tutorials with IntelliJ IDEA by Brian Fraser:
- Additional Materials:
- Lecture 10 (10-Nov-2023) - Verification and Validation (Testing) II - by Dietmar Pfahl
- Additional Materials:
- Link to book on TDD and ATDD (=BDD): (TDD book) -- Note: you have to create an account to be able to read all chapters (it's free of charge)
- Link to an explanation of TDD
- Link to BDD Tool Cucumber Tutorial: (Cucumber)
- The Ten Most Critical Web Application Security Risks: PDF
- Additional Materials:
- Lecture 11 (17-Nov-2023) - Refactoring (and TDD)
- Additional Materials:
- Introduction to TDD by Bob Martin (TDD-Martin)
- Introduction to TDD by Grant Winney: (TDD-Winney)
- List of Refactorings for Code Smells: (link)
- For self-study: Introductory refactoring example by Fowler: (pdf)
- (video-2017: Refactoring Demo Part 1) -- 12:15 min
- (video-2017: Refactoring Demo Part 2) -- 9:03 min
- (video-2017: Refactoring Demo Part 3) -- 6:39 min
- (video-2017: Refactoring Demo Part 4) -- 3:18 min
- (video-2017: Refactoring Demo Part 5) -- 2:48 min
- (video-2017: Refactoring Demo Part 6) -- 2:54 min
- (video-2017: Refactoring Demo Part 7) -- 5:27 min
- (video-2017: Refactoring Demo Part 8) -- 11:52 min
- Lecture 12 (24-Nov-2023) - Agile/Lean Methods I
- Scrum Guide
- Agile life-cycle models
- Link to PivotalTracker for backlog management: https://www.pivotaltracker.com
- Blog entry on '7 Wastes' of Agile Software Development: (link)
- Interesting videos about the agile/lean software development approach at Spotify (13 min each):
- Lecture 13 (1-Dec-2023) - Agile Practice in Industry (Guest Lecture by Patrick Manuel Weyer (Swedbank)) Attendance is Mandatory.
- Lecture 14 (08-Dec-2023) - Agile Practice in Industry (Guest Lecture by - Anton Keks (Codeborne)) Attendance is Mandatory.
- 2021 Slides: (pdf-2021)
- 2021 Video: (video-2021)
- Other materials:
- Elements of agile working at Codeborne: https://codeborne.com/2015/08/10/working-agile.html
- Codeborne promo video: https://codeborne.com/et/
- Codeborne Blog: https://codeborne.com/blog/
- Lecture 15 (15-Dec-2023): Course wrap-up, review and exam preparation (with training quiz)