Lectures
- Lecture 1 (07-Sep-2018) - Introduction to Software Engineering
- Course Organization: (pdf-2018-1)
- Overview of Software Engineering: (pdf-2018-2)
- Homework Assignment 1: (pdf-2018-3)
- Video: (video-2018)
- Lecture 2 (14-Sep-2018) - Requirements Engineering I
- Slides: (pdf-2018)
- Video: (video-2018)
- Lean requirements (by Atlasssian)
- INVEST in good Stories, and SMART Tasks (by Bill Wake)
- Hints on how to write testable requirements
- Balsamiq - A tool for developing wireframes (Mockups)
- 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
- Lecture 3 (21-Sep-2018) - Requirements Engineering II
- Slides: (pdf-2018) - Note: The part "Project Estimation with Use Cases" will be covered at the beginning of Lecture 7 (Architecture and Design).
- Video: (video-2018)
- Lecture 4 (28-Sep-2018) - Analysis
- Slides: (pdf-2018)
- Video: (video-2018)
- 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)
- Lecture 5 (05-Oct-2018) - Development Infrastructure I - Development Tools - by Stepan Bolotnikov, Guardtime
- Slides: (pdf-2018)
- Video: (video-2018)
- Topics:
- Basics of IDE (focus on IntelliJ IDEA)
- Version control (focus on Git)
- Links to descriptions/tutorials on how branching works in Git and what types of workflows are useful:
- Lecture 6 (12-Oct-2018) - Development Infrastructure II - Build and Collaboration Tools - by Stepan Bolotnikov, Guardtime
- Slides: (pdf-2018)
- Video: (video-2018)
- Topics:
- Build scripts (focus on Gradle)
- Issue tracker (focus on Bitbucket)
- Communication tools (focus on Bitbucket wiki)
- Lecture 7 (19-Oct-2018) - Architecture and Design
- Slides: (pdf-2018-EstimationWithUseCases) and (pdf-2018-Architecture&Design)
- Video: (video-2018)
- 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:
- Two videos on software design given by Erik Jogi (Codeborne) in the course on Systems Modeling (2015):
- Code example of a simple MVC implementation in Java: MVC example
- Here is a link to a series of mini-tutorials (~15 min each) by Derek Banas about design patterns: (link)
- Examples of Java implementations of design patterns: (link)
- Example of a SW Architecture Description from a student project: Course Registration System
- Example DSSA Reference Architecture: MURA
- Short overview of first generation Architecture Description Languages: ADLs
- Attribute-Driven Design method by SEI: ADD and ADD Example
- Lecture 8 (26-Oct-2018) - Verification and Validation (Testing) I
- Slides: (pdf-2018)
- Video: (video-2018)
- JUnit4 tutorials with IntelliJ IDEA by Brian Fraser:
- JUnit4 Tutorial 1 -- Basics
- JUnit4 Tutorial 2 -- Testing Exceptions, Code Coverage, Test Fixtures
- Lecture 9 (02-Nov-2018) - Verification and Validation (Testing) II
- Slides: (pdf-2018)
- Video: (video-2018)
- 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 BDD Tool Cucumber Tutorial: (Cucumber)
- Lecture 10 (09-Nov-2018) - Continuous Development & Integration - by Svetlana Omelkova, Taxify
- Slides: (pdf-2018) (video-2018)
- Topics:
- What is Continuous Integration
- Why to use CI
- CI best practices
- Demos:
- Jenkins CI in Taxify
- CI for open source projects with Travis CI (link: https://github.com/omelkova/CI_travis_demo)
- Lecture 11 (16-Nov-2018) - Refactoring (and TDD)
- Slides: (pdf-2018)
- Video: (video-2018)
- Introduction to TDD by Scott Ambler: (TDD-Ambler)
- Introduction to TDD by Bob Martin: (TDD-Martin)
- TDD tutorial on Eclipse (very basic TDD example): (tutorial-link)
- Link to web-page with Test-Driven Development (TDD) resources: (TDD-link)
- List of Refactorings for Code Smells: (link)
- 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 (23-Nov-2018) - Agile/Lean Methods
- Slides: (pdf-2018)
- Video: (video-2018)
- Scrum Guide
- Agile life-cycle models
- Interesting blog entry comparing Scrum with Kanban in a Finnish organisation: (link)
- Link to PivotalTracker for backlog management: https://www.pivotaltracker.com
- Interesting blog entry on '7 Wastes' of Agile Software Development: (link)
- Interesting videos about the agile/lean software development approach at Spotify (13 min each):
- No lecture on 30-Nov-2018
- Lecture 13 (07-Dec-2018) - Software Craftsmanship, the Codeborne Way - by Anton Keks, Codeborne
- Announcements:
- Slides of Anton Keks' talk: (pdf-2018)
- Video of Anton Keks' talk: (video-2018)
- Elements of agile working at Codeborne: https://codeborne.com/2015/08/10/working-agile.html
- Codeborne promo video: https://codeborne.com/et/
- Lecture 14 (14-Dec-2018) - Course wrap-up, review and exam preparation (with training quiz)
- Slides: (pdf-2018) - Note: The answers to the questions in the training quiz will be given in the lecture.
- There will also be a practice quiz (to prepare for the exam)! The quiz is voluntary and you won't get marks for it. :)