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.