Slides & example code from the Software Engineering lecture first held WS 20/21 @ FOM University of Applied Sciences for Economics and Management Berlin.
The lecture is practical-oriented, e.g. it doesn't explain all possible UML diagram types but rather focuses on few selected key topics. All explanations are accompanied by code examples and UML diagrams. Also, all lectures contain exercises together with solutions. The target audience of this lecture are students which are familiar with at least one high-level programming language, e.g. Java.
The key focus of the lecture is:
- Software Design and Modeling: UML, Design Patterns, Architecture Patterns, SOLID Principles, Modularisation
- Implementing and Integrating Real-Word Software Systems: Clean Code, Top-down vs Bottom-Up approach, Continuous Integration, Continuous Delivery
Topics which are not discussed, but which will be addressed by my colleagues during the semester, are:
- Project Management
- Requirements Engineering
- Effort Estimation Techniques
- Software Testing
- Software Configurations Management
- Operating Software Systems
After attending the lecture, students should be able to...
- Using UML in order to explain software systems, to capture requirements and model them out with appropriate UML diagrams
- Understand and being able to communicate important aspects of good software designs, e.g. loose coupling, high cohesion, modularisation and clean code
- Design and implement software systems in modern environments by using shown architecture and design patterns
In the first lecture we are familiarizing with common UML diagram types such as: use case, class, state, and sequence diagrams
The second lecture is about common architecture patterns such as Model View Control (MVC), RESTful, Microservice, Serverless Architecture
After looking into architecture patterns we will examine concrete design patterns and clean code practices when designing and implementing software
4 Integrating Software Systems
This lecture is about Continuous Integration and Continuous Delivery (also known as CI/CD
) - we will learn how to integrate and rollout software in existing software systems
5 Case Study - Implementing an Alerting Service
At the end of the semester we will have a look at a small software project in which we try to apply the learned material by focusing on the following aspects:
- Understanding the requirements and use cases
- Crafting and design a solution architecture
- Integrate and rollout the implemented solution
6 Exam Preparation / Final Q&A
In the last lecture we will have a final look at the learned material and prepare for the examination
Note that each lecture directory contains exercises and solutions.
For example, for lecture 1 you'll find the following resources under ./lectures/1
lectures/1
|-- README.md
|-- exercise
| `-- README.md
`-- solution
`-- README.md
Not sure how to contribute ideas, changes, etc. to this repository? Check github.com/firstcontributions/first-contributions out!