Quality-Assuring Software Engineering Methods (QASM)
FH Münster Lecture
Software Quality Under Time Pressure
In the private sector, software products are developed under high time pressure caused by the market economy. The source code, which is constantly growing, is distributed among different teams/sub-projects and is becoming increasingly difficult to maintain, further develop and test - in long-term projects, such shortcomings develop that the working hours of the teams are used more and more inefficiently and bug fixes and new features are always needed take longer and become more expensive while maintaining the quality of the overall product. The development processes of many companies also regularly lead to frustration among specialists.
Goals of the Lecture
In this module, students learn how and what problems arise in software development when working on software products in large teams in the private sector under release pressure. Well-known topics such as "Test-Driven Development" are not explained in detail from the ground up, but are rather touched upon and considered in the overall context in order to show the enormous costs that companies worldwide repeatedly incur if software development is not combined with testing from the start , continuous integration/deployment and automated infrastructure combined.
The comparison of different open source technologies gives the students a broad horizon, which enables them to estimate, plan and implement the appropriate scope and effort for the selection and setup of toolchains, test suites and automation infrastructure.
Furthermore, the students are enabled to economically justify the need for corresponding processes and the effort to set up and maintain them in front of superiors in the private sector in order to develop software with realistic and effective processes at high speed that meets high quality standards. In addition, expectations are conveyed that one may already have when applying for jobs at "good" companies.
Content Covered by the Lecture over the Semester
The following contents will be discussed and applied with small example projects
Testing and Tooling
Regression-free software development at high speed through tools and testing
- Test Driven Development
- Sanitizers, Static Analysis, Linter Tools
- Fuzzing, QuickCheck
VCS & Collaboration
- Version Control with Git
- Synchronization of decentralized repositories
- Pull request workflows with code review
- Avoid "hidden" build dependencies through total isolation
- The central role of hashing for code and dependencies
- Frustration-free setup of complex toolchains per developer
- Automated, perfectly reproducible integration tests
- Defining Build Environments with Docker and Nix, comparing the pros and cons
- The importance of CI/CD for predictable and speedy product releases
- Construction of a complex CI/CD chain for automatic product deployment. Look at products/technologies like Github, Gitlab, Nix Hydra.
- Comparison of the pros and cons of Docker vs. Nix
Master students in electrical engineering, computer science, and similar
4 blocks, 2 days each. Dates are announced every summer before the winter semester.
Online oral exam. Appointments will be made during the semester.
Part theory, part programming lab with exercises
Online if Corona/Energy rules apply. Computer pool lecture room at Steinfurt otherwise.
Jacek Galowicz, M.Sc.