Questions on N-SWE Software Engineering
Common Foundation of the Programme
- Code quality. Quality in software systems development, quality attributes and software metrics. Tactics for ensuring quality at the level of individual quality attributes. The Clean Code and SOLID principles, code refactoring. Code testing, unit tests, integration tests, user and acceptance tests. Debugging and performance testing. The quality management process in software systems development. Practical examples illustrating all of the above. (PV260, PA017)
- Software engineering. The software life cycle, the development process and software development management. The (Rational) Unified Process (UP, RUP) methodology, agile methodologies and the principles of agile software development. Deployment and operation of software systems. Maintenance of software systems, reusability. Practical examples illustrating all of the above. (PA017)
- Databases. Principles of data storage, databases. Relational database architecture, the SQL query language and its components (definition, manipulation, transactions). Data Definition Language (DDL). Data Manipulation Language (DML). Relational algebra, integrity constraints, transaction control. Indexing, hashing. Practical examples illustrating all of the above. (PV003 || PA152)
- Computer networks. Concepts, principles, architectures. The ISO/OSI and TCP/IP models, the IP protocol, transport protocols (TCP, UDP). Protocols at the network layers, IPv4 functions, advanced IPv6 functions. Peer-to-peer (P2P) networks, ad-hoc/sensor networks, high-speed networks, computer networks and multimedia. Practical examples of all the above. (PA159, PA191)
- Distributed systems. Basic concepts and principles. The difference between centralised and distributed system architectures, the disadvantages of both and how to overcome them. Replication, data sharing. Service-Oriented Architecture (SOA), web services. Examples of existing technologies and their applications. Practical examples for all of the above. (PA053)
DEV Specialisation – Design and Development of Software Systems
- Programming and software development. Tools and environments for the development of large-scale software systems. Fundamental concepts of software architectures from an implementation perspective. Multi-tier architecture of modern information systems, model-view-controller architecture. Technologies and languages suitable for front-end and back-end development. Persistence, ORM. Practical examples illustrating all of the above. (PA165 || PV179, option: Advanced Programming, SA200)
- Systems analysis and design. Object-oriented methods for designing information systems. Requirements specification and management. Software architectures, component-based systems. Design and architectural patterns. Component interfaces, interface-level contracts, OCL. Software system models, the UML language. Practical examples for all of the above. (PA103, PV167 || PV258 || PV293)
- Project management. Planning, risk management, the role of models in project management. Gantt charts, network analysis, the Critical Path Method (CPM), Programme Evaluation and Review Technique (PERT). International standards and methodologies for project management (PMI Project Management Body of Knowledge, PRINCE 2). Practical examples of all the above. (PA179)
- Data processing. Basic concepts and principles of data warehouses, data analytics and business intelligence. The data warehouse lifecycle. Big data analytics, languages for implementing analytical tasks, database-level analytics. Advanced data processing techniques, performance aspects of big data processing. Practical examples for all of the above. (PA036, PA220 || PA212)
- Secure code. Authentication and access control methods. Biometric authentication methods, their implications and challenges. Digital signatures and their use. Authentication of machines and applications. Principles of secure code. Typical security flaws at the code level, concurrency, input validation. Detection of security vulnerabilities, penetration testing. Practical examples illustrating all of the above. (PV157, PV286 || PV017)
- User interfaces. Principles of user interface design and development in modern software systems, including web and mobile systems. The user interface development process and quality principles. User experience (UX), interaction design, prototyping, wireframing, user research, usability testing. Technologies and tools. Practical examples of all the above. (PV252 || PV247 || PV278 || PV182)
OPS Specialisation – Deployment and Operation of Software Systems
- Development and deployment of software systems. Tools and environments for the development and deployment of large-scale software systems. Fundamental concepts of software architectures from the perspective of implementation and long-term maintenance. Technologies supporting continuous integration and deployment (CI/CD). Choosing a suitable programming language. Persistence, ORM. Practical examples illustrating all of the above. (PA165 || PV179, SA200)
- Secure infrastructure. Factors affecting system security at the infrastructure level; network security. Cyber security threats and examples of attacks. Design of security mechanisms, vulnerability detection, penetration testing, analysis of security attacks. Practical examples of all the above. (PA018 || PA211 || PB177 || PA232)
- Cloud computing. IaaS, PaaS and SaaS clouds. Concepts and principles of the design and development of applications intended for deployment in a cloud environment. Cloud services in the context of PaaS, data storage services. Ensuring application quality in a cloud environment: performance, scalability, availability and security. Practical examples of all the above. (PA200, PA234)
- Operating systems. The UNIX operating system; kernel functionality; memory and device management by the kernel. Basic configuration; user management; network services. Principles of development and the development environment in UNIX; working with processes and files; input/output operations. The MS Windows operating system, basic configuration, user management, the NTFS file system, hardware devices and drivers, and the basics of scripting. Practical examples for all of the above. (PV065, PV077, PV175)
- NoSQL databases. Principles and taxonomy of NoSQL databases. Distributed databases, ensuring consistency. Architectures and basic characteristics of the main types of NoSQL databases (key-value stores, document databases, column-family stores, graph databases). Practical examples for all of the above. (PA195)