Software Engineering II

Teachers

Included in study programs

Teaching results

Learning Outcomes after Course Completion
Knowledge
B. Know the basic UML diagrams and the rules for their creation in the context of object-oriented software design.
C. Understand the core ideas of both modern and classical software engineering methodologies and their differences.
E. Know the fundamental principles of modern software architecture design and their impact on system quality.
F. Know the principles of software testing and the role of test scenarios in the software development process.
G. Understand the importance of the maintenance phase within the software life cycle.
Skills
A. Design software systems using the object-oriented approach.
D. Apply appropriate object-oriented modeling methods and techniques for the definition, analysis, design, implementation, testing, and operation of software systems.
F. Design test scenarios corresponding to functional and non-functional software requirements.
J. Prepare technical documentation describing the proposed software solution.
Competences
H. Understand the organization and working practices of a software development team and function effectively as a team member.
I. Present and defend proposed solutions at a professional level using appropriate technical argumentation.
J. Take responsibility for the quality, clarity, and completeness of technical documentation and presented solutions.

Indicative content

1. Basics of OO principles (object, class, abstractions, encapsulation, inheritance, polymorphism). Modeling, levels of abstraction, Modeling techniques of object-oriented design, Unified Modeling Language (UML), description, classification dg. UML in the stages of software development, Class diagram
2. Class diagram, properties, associations, stereotypes,
3. Analytical model design (analytical classes), Sequence diagram,
4. Objects storage - OR mapping, Activity diagram, Collaboration (Status diagram).
5. Software design, Architecture and architecture design
6. Packages (package diagram), Component diagram. Patterns
7. Transition to the design stage, design classes, user interface design
8. Comparison of individual approaches to analysis and design. Software systems implementation: programming languages, implementation strategies, software product documentation.
9. Software systems testing: static and dynamic testing; testing techniques (white box, black box, program browsing, program verification), testing strategies, The role of validation and verification in software development
10. Operation and maintenance of software systems (reusability, changes in requirements, versioning, reengineering), software system configuration management. Computer aided software development, CASE resources.
11. Introduction to software project management. Basic processes of software project management (initialization, planning, management, execution, termination), economics of software development
12. Economics of software development, formal requirements and creation of contractual relations in software projects.
13. Quality management and measurement in software engineering. Ethics of software development, protection of intellectual property, code of ethics of a software engineer.

Support literature

1. Somerville, I.: Software Engineering, Addison-Wesley, 9. vydanie, 2011.
2. Russev S. a kol.:Softvérové inžinierstvo, Ekonóm Bratislava 2006
3. Fowler, M. 2009. Destilované UML. Grada Publishing a.s., ISBN 9788024720623.
4. Kadlec, V. 2004. Agilní programování: metodiky efektivního vývoje softwaru. Computer Press, ISBN 9788025103425.
5. Kanisová, H. 2006. UML srozumitelně. Computer Press, ISBN 9788025110836.
6. Schach, S.R. 2002. Object-oriented and classical software engineering. McGraw-Hill, ISBN 9780071122634.

Syllabus

1. The course introduces the object-oriented approach to software development and the fundamental principles of object orientation. Core concepts such as objects, classes, abstraction, encapsulation, inheritance, and polymorphism are explained together with modeling concepts and abstraction levels. 2. The structure and purpose of class diagrams are discussed. Attention is given to class attributes, associations between classes, and the use of stereotypes in object-oriented modeling. 3. The syllabus covers the creation of an analytical model using analytical classes. Sequence diagrams are introduced as a tool for modeling interactions and dynamic behavior within the system. 4. Object persistence and object–relational mapping are explained as mechanisms for storing objects. Activity diagrams and collaboration and state diagrams are introduced to describe workflows and system behavior. 5. The software design phase is presented with emphasis on system architecture. The principles of architectural design and their impact on software quality and maintainability are discussed. 6. The course addresses package organization and modularization using package diagrams. Component diagrams and an introduction to design patterns as reusable solutions to common design problems are included. 7. Transition to the detailed design phase is explained. Design classes and principles of user interface design are discussed with emphasis on usability and consistency. 8. Different approaches to analysis and design are compared. The implementation of software systems is addressed, including programming languages, implementation strategies, and documentation of software products. 9. Software system testing is introduced, including static and dynamic testing approaches. Testing techniques such as white-box and black-box testing, code reviews, verification, validation, and testing strategies are discussed. 10. Operation and maintenance of software systems are covered, including reuse, requirement changes, versioning, and reengineering. Configuration management and computer-aided software engineering tools are introduced. 11. An introduction to software project management is provided. Fundamental management processes such as project initiation, planning, execution, control, and closure are explained. 12. The syllabus addresses the economics of software development. Formal aspects and contractual relationships in software projects are discussed, including legal and organizational considerations. 13. The final part focuses on quality management and measurement in software engineering. Ethical aspects of software development, intellectual property protection, and the ethical code of software engineers are addressed.

Requirements to complete the course

40 % assignments: The aim of the assignments is to develop and defend a project on which students work in groups that have a defined team leader. The students choose the leader from among themselves. Students organize group work autonomously and are managed by a team leader. The evaluation of the results of the group's work (submitted project) is evaluated as a whole for the whole group. The evaluation of the contribution of individual members of the group to the evaluation of the group is the result of the group's internal agreement. Part of the evaluation of an individual student is also his activity in opposing and evaluating other groups' projects. The results of the work (project) are submitted by the group for evaluation during the semester three times. The following educational results are evaluated by evaluating projects and evaluating the opposition of the work results of other groups: A., B., D., E., F., H., I., J.
60 % final exam: The final exam consists of two parts: a test and a specific problem to solve. The test verifies the achieved level of educational results A., C., D., E., F., G., the solution of the problem task verifies the achieved level of educational results B., D., E., F.

Student workload

Total study load (in hours): 5 credits x 26 hours = 130 hours
Distribution of study load
Lectures and seminar participation: 52 hours
Preparation for seminars: 13 hours
Written assignments: 45 hours
Final exam preparation: 20 hours

Language whose command is required to complete the course

slovak

Date of approval: 04.03.2025

Date of the latest change: 04.01.2026