Skip to main content
Skip header

Software Engineering

Type of study Follow-up Master
Language of instruction English
Code 460-4163/02
Abbreviation SWI
Course title Software Engineering
Credits 4
Coordinating department Department of Computer Science
Course coordinator Ing. Svatopluk Štolfa, Ph.D.

Subject syllabus

The course is delivered as a block of lectures and exercises, each lasting 1.5 hours. The lectures provide theoretical foundations and an overview of modern approaches in software engineering, with a strong emphasis on linking theory with practice. Students will learn to analyse, explain, apply, and evaluate principles of the software lifecycle, discuss and design architectural solutions, and demonstrate skills in testing, quality assurance, security, and maintenance.

Topics:
• Requirements Engineering: advanced techniques for requirements gathering and analysis, formal specification, validation and verification.
• Software Architecture: architectural styles and patterns, microservices, distributed systems, decision-making and evaluation.
• Model-Driven Engineering (MDE): modelling, model transformations, code generation, UML and other modelling languages.
• Agile Methodologies: Scrum, Kanban, agile practices (TDD, pair programming, CI), agile scaling.
• DevOps and Continuous Delivery: principles, build/test/deployment automation, tools (Jenkins, Docker, Kubernetes).
• Software Quality Assurance: QA role, metrics, quality assurance techniques.
• Software Testing: unit, integration, system, and acceptance testing, test frameworks, advanced testing techniques, security and performance testing.
• Software Maintenance and Evolution: theory and practices, refactoring, technical debt management.
• Software Metrics and Analytics: measurement, data collection, analysis, project management applications.
• Software Security: secure development principles, threats, vulnerabilities, security testing.
• Application Domains: medicine, automotive, finance, game development.
• Cloud Computing, Embedded Systems and IoT: architectures, development, security, RTOS.
• Emerging Technologies: AI/ML in software engineering, blockchain, IoT and embedded systems.

Exercises focus on the practical application of knowledge. Students will solve, demonstrate, and discuss tasks covering all phases of the software lifecycle. A team semester project may also be included, enabling students to integrate and present their acquired knowledge in a comprehensive scenario.

E-learning

Literature

Pressman, R. S., Maxim, B. R.: Software Engineering: A Practitioner’s Approach. 9th Edition. McGraw-Hill, 2019.
Bass, L., Clements, P., Kazman, R.: Software Architecture in Practice. 4th Edition. Addison-Wesley, 2021.
Forsgren, N., Humble, J., Kim, G.: Accelerate: The Science of Lean Software and DevOps – Building and Scaling High Performing Technology Organizations. IT Revolution Press, 2018.
ISO/IEC/IEEE 12207: Systems and software engineering – Software life cycle processes. International Organization for Standardization, latest edition.

Advised literature

Sommerville, I.: Software Engineering. 10th Edition. Pearson, 2015.
Fowler, M.: UML Distilled: A Brief Guide to the Standard Object Modeling Language. 3rd Edition. Addison-Wesley, 2004.
Leffingwell, D.: Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise. Addison-Wesley, 2011.
Humble, J., Farley, D.: Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison-Wesley, 2010.
Mens, T., Serebrenik, A., Cleve, A. (eds.): Evolving Software Systems. Springer, 2014.
IEEE Computer Society: Guide to the Software Engineering Body of Knowledge (SWEBOK® Guide V3.0). IEEE, 2014.
Len Bass, Ingo Weber, Liming Zhu: DevOps: A Software Architect’s Perspective. Addison-Wesley, 2015.
Jez Humble, Joanne Molesky, Barry O’Reilly: Lean Enterprise: How High Performance Organizations Innovate at Scale. O’Reilly Media, 2014.