Course Description

Software design course addresses basic knowledge and skills for acquiring the competences in software engineering, namely understanding, evaluating and designing of software systems. Generic models of software engineering processes. Requirements engineering. Software architecture concepts and specification paradigms. Modeling of input/output and reactive software systems. Object-oriented system modeling (UML). Formal specification and verification of software system properties. Software testing. Automated assistance and tools in software design process.


Plan

 

Week

Topics

Literature

1. Course introduction: motivation & administration. Software & software design methods. -
  Instructions for student project development: project documentation, collaboration tools, version control system. -
2.  Introduction to software engineering: requirements engineering, documentation and classification. [Som 07] Chapters 1, 6; [Let 05] Chapter 1.
  Requirements engineering process: generic activities, application of UML standard, Use Case modelling.   [Som 07] Chapter 7; [Boo 05]; [Ben 04].
3.  UML diagrams for interaction modelling. Software engineering process models (waterfall, evolutionary, component-based). [Som 07] Chapters 4, 7; [Boo 05]; [Ben 04].
  Tools for creating UML diagrams – Astah Community. Using UML for creating Use Case and Sequential diagrams. [Jov 14].
4.  Unified software engineering process, generic activities in software engineering process. Introduction to software architecture. [Som 07] Chapter 4; [Pol 03]; [Sha 06].
  Architecture design & documentation principles. Process of software architecture selection and evaluation. [Let 05] Chapter 9.
5.  Invited lecture.  
  Modularization and Object oriented (OO) paradigm: class diagram development process. [Let 05] Chapter 5; [Odo 05] Chapters 2-4; [Šri 01].
6.  Modelling OO software architecture using UML: steps of OO modelling, class & object diagram. [Let 05] Chapter 5; [Odo 05] Chapter 7; [Boo 07]; [Šri 01].
  Modelling using UML class diagrams. [Jov 14]
7.  Modelling OO software architecture using UML: collaboration, state, activity and component diagrams. [Let 05] Chapters 5, 8; [Odo 05] Chapter 7; [Boo 07]; [Šri 01].
  Other UML diagrams. System description. [Let 05] Chapter 8; [Boo 05]; [Ben 04].
8. Midterm exam.  
9.  Architecture patterns, frameworks, distributed OO architecture (client-server, middleware and service-based architecture). [Let 05] Chapters 6,9; [Som 07].
  Architecture patterns: component-based architecture. [Let 05] Chapters 9,15; [Som 07].
10.  Examples of UML diagrams for architecture and system description. [Jov 14].
  Architecture pattern examples: middleware, event-based and service-based architecture. [Let 05] Chapter 9; [Som 07].
11. Architecture pattern examples: component-based architecture. [Let 05] Chapters 9,15; [Som 07].
  Holidays  
  Software testing, validation & verification. Software faults, errors and failures. Testing activities. [Let 05] Chapter 10; [Som 07]; [Mye 04]; [Sie 96].
12. Software testing: component testing, structural testing. [Let 05] Chapter 10; [Som 07]; [Mye 04]; [Sie 96].
  Software testing: functional testing. Testing automation. [Let 05] Chapter 10; [Som 07]; [Mye 04]; [Sie 96].
13.  Fundamentals of formal verification – introduction to propositional and first-order logic. [Cla 99]; [Hut 04].
  Formal verification: temporal logic, system description using CTL, model check. [Cla 99]; [Hut 04].
14.  Examples of most significant software architectures. [Som 07]; [Tay 09]; [Šil 99].
  Student project presentation. Preparation for final exam. -
15.  Final exam (covers all course material). -