Software Engineering

Objectives and outcomes

Familiarity with modern methods and principles of software engineering, as well as understanding and application of the most commonly used methodologies for software development. Students understand the problems of modern software development. They are familiar with different methods for solving these problems, with their advantages and disadvantages. Students know several commonly used methodologies and methods for software development and know how to apply them.

Lectures

Defining the functional and non-functional requirements of the software. A formal requirement specification. Professional software development. Software engineering ethics. Software engineering activities. Software quality characteristics. Challenges in software development. Software Engineering and Web. Analysis of software development case studies in different domains and different software technologies. Software development process models – waterfall and incremental models. Software specification. Software modelling – contextual model, interaction model, structural model, behavioural model. Software design and implementation. Model-based software development. Prototypes. Adapting to changing requirements. Rational Unified Process – RUP. Basics of agile software development. Software testing and test-based development. Software evolution. Software security. Component-based software development. Use of ready-made software components. Different software architectures – service-oriented, monolithic, microservice.

Practical classes

Analysis of a formal software specification. Analysis of software development case studies. Teamwork on the development of an original software solution while respecting the principles of software engineering covered in the lectures. Illustration of different models and methods of software development – model-based, test-based, component-based development. Demonstration of different software architectures and their adequate applications.