Study program / study programs: INFORMATION TECHNOLOGY

Type and level of studies: Undergraduate applied studies

Subject: SOFTWARE ENGINEERING PRINCIPLES

Status: Compulsory

ECTS credits: 7

Course objective

The objective of this course is to introduce the discipline of software engineering through the process of requirements collection, design, development, software management and documentation, using the computer science technologies, project management techniques, engineering, mathematics, design and other disciplines. Introduction to the production of high-quality software solutions and considering the characteristics that contribute to quality. Understanding the role and responsibility of client, user and participant in software development.

Course outcome

The students will master the techniques that are used for collecting the requirements, understand the importance of the requirements collection phase, learn the Software Requirements Specification (SRS) Template according to IEEE standard, the types of agile methods, Scrum development model, types of notation and description of software design, entity–relationship diagram, state diagram, Jackson structure diagram, UML (Unified Modeling Language) modeling form, the scope and life cycle of a variable.

The students will learn how to properly comment on a document, use variables to create a tidier, more readable program, properly name functions, implement naming conventions, the relationship between software testing and software quality, code inspection, Black box and White box testing techniques, the differences between corrective, adaptive and perfective maintenance, what bodies are entitled to issue standard, the concept of SC7 standards collection, ISO/IEC 12207 standard, ISO/IEC 12207 standard, software quality and software presentation.

Course content

Theoretical classes

  • Requirements collection process
  • Software requirement sources
  • Software requirements collection techniques
  • Requirement analysis and classification
  • Requirement specification
  • Requirement measurement
  • Software development methodology
  • Development models
  • Agile methods
  • SCRUM development
  • Software design process
  • Software structure and architecture
  • Architectural styles (macroarchitecture)
  • Design patterns (macroarchitecture)
  • Software design quality evaluation and analysis
  • Software design 
  • Minimizing complexity
  • Change prediction
  • Construction standards
  • Construction management
  • Coding
  • Construction testing
  • Construction quality
  • Integration
  • Testing criteria selection
  • Testing efficacy
  • Testing levels
  • Test units
  • Integral test
  • System testing
  • Testing objectives and techniques
  • Test documentation
  • Maintenance categories
  • Maintenance cost evaluation
  • Maintenance activities
  • Software documentation management

Practical classes

  • Examples that accompany lectures
  • Presenting contemporary software engineering tools
  • Illustrating agile development methods through practical examples and projects from practice