Lectures
The handouts and materials are partly from last year's lecture (2021). Updated slides, videos, and materials will be posted on Moodle.
- Lecture 1 (02-Sep-2022) - Introduction to Software Engineering
- Course Organization
- Overview of Software Engineering
- Background / Motivation of Homework Assignment 1
- Lecture 2 (09-Sep-2022) - 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 (16-Sep-2022) - Requirements Engineering II
- Additional Study Materials:
- Lecture 4 (23-Sep-2022) - 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 (30-Sept-2022) - 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 (07-Oct-2022) - Continuous Development & Integration - by Kristiina Rahkema
- Lecture 7 (14-Oct-2022) - Project Estimation / Architecture and Design I
- Lecture 8 (21-Oct-2022) - 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 (28-Oct-2022) - 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 (04-Nov-2022) - 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 (11-Nov-2022) - Refactoring (and TDD)
- Additional Materials:
- Introduction to TDD by Scott Ambler: (TDD-Ambler)
- 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 (18-Nov-2022) - 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 (25-Nov-2022) - Agile/Lean Methods II
- Lecture 14 (02-Dec-2022) - - Agile Practice in Industry (Guest Lecture by Anton Keks, Codeborne)
- 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/ -- Mira is one of Dietmar's former MSc students
- Lecture 15 (09-Dec-2022): Course wrap-up, review and exam preparation (with training quiz)