Lectures
Lectures will be conducted online. The link to join the online lectures will be available in Moodle from September 2024.
- Lectures: Fridays 10:15-12:00, Online (via Moodle)
The handouts and materials are partly from last year's lecture (2023). Notice: Updated slides, videos, and materials will be posted on Moodle.
- Lecture 1 (06-Sep-2024) - Introduction to Software Engineering
- Course Organization
- Overview of Software Engineering
- Background / Motivation of Homework Assignment 1
- Lecture 2 (13-Sep-2024) - Requirements Engineering I
- 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 (20-Sep-2024) - Requirements Engineering II
- Additional Study Materials:
- Lecture 4 (27-Sep-2024) - 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 (4-Oct-2024) - 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 (11-Oct-2024) - Continuous Development & Integration - by Kristiina Rahkema
- Lecture 7 (18-Oct-2024) - Project Estimation / Architecture and Design I
- Lecture 8 (25-Oct-2024) - Architecture and Design II
- Additional Materials:
- Eric Freeman and Elisabeth Robson : Head First Design Patterns: A Brain-Friendly Guide (2nd Edition) , 2021
- Alexander Shvets: Dive Into Design Patterns , 2018
- 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 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)
- Attribute-Driven Design method by SEI: ADD and ADD Example
- Software Architecture QuickGuide: Link to Guide
- Additional Materials:
- Lecture 9 (1-Nov-2024) - 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 (08-Nov-2024) - 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 (15-Nov-2024) - Refactoring (and TDD)
- Additional Materials:
- List of Refactorings for Code Smells: (link)
- Lecture 12 (22-Nov-2024) - 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 (29-Nov-2024): Course wrap-up, review and exam preparation (with training quiz)
- Week 14-15 (No lecture): Student competition (optional), More details on Moodle.