Software design

Outcomes and objectives

Mastering advanced object-oriented programming using advanced design patterns and respecting the principles of software engineering. Getting to know the basic principles of modelling and software specification. Students are able to work in teams and develop a complex desktop application that uses structured data files. When developing the application, students know how to use advanced object-oriented programming, to choose the appropriate design pattern while respecting the principles of software engineering. They also know the basics of UML, they are able to interpret the formal software specification and implement the software based on it.


Advanced UML class diagram concepts – composition and aggregation link, package diagram. Structured data formats – JSON and XML. Serialization and deserialization of objects into a structured format. Design patterns for creating objects – Factory, Prototype, Builder. Composition of objects and classes according to structural design forms – Adapter, Bridge, Composite, Decorator, Facade. Each design pattern is explained on a representative example that includes a UML class diagram and an implementation in the Java programming language. Basic principles of team software development. UML use case diagram. Writing software functional requirements specification. UML sequence diagram. Design patterns for defining software behaviour – Iterator Pattern, Command Pattern, Mediator Pattern, Observer Pattern. Explanations of design patterns that describe behaviour include a class diagram, a sequence diagram, and an implementation view in the Java programming language. Presentation of various examples of practical application of design patterns. Case study analysis of software implementation based on specification. UML component diagram. Modules in the Java programming language (from version 9). Representation of a modular application through a UML component diagram.

Practical classes

Illustration of using a modern development environment. Basic concepts of the version control system – Git. Overview of the basic functions of Git. Teamwork using Git. Using ready-made libraries in projects. Exercising implementation of object serialization in XML and JSON format. Exercising loading data from XML and JSON formats into the appropriate object model. The exercise of implementing the appropriate design pattern in the Java programming language for a given task description. The exercise of implementing structural design patterns. The exercise of implementing a larger desktop application in a team based on the specification of functional requirements using appropriate design patterns. The implementation of design patterns for defining software behaviour. The implementation of the module in the Java programming language.