Software Engineering

Professors Andriana Prentza
Eleftheria Stougiannou
Course category Core
Course ID DS-507
Credits 5
Lecture hours 3 hours
Lab hours 2 hours
Digital resources View on Aristarchus (Open e-Class)

Learning Outcomes

The course’s material includes the basic principles underlying the development of software projects, the most widely used Software Life Cycle Models, as well as methodologies, techniques and tools for the systematic analysis, design, development, testing, operation and maintenance of good quality software systems within a specific timetable and budget, following the structured and object-oriented approach.

Upon successful completion of the course, the students will be in position to:

  • Explain the basic principles and techniques that constitute the model of object-oriented programming (indicatively: classes and objects, inheritance, polymorphism).
  • Design and develop programs that implement specific algorithms in the object-oriented programming language Java.
  • Test programs developed in Java in a specific integrated programming environment.
  • Explain the basic concepts, methodologies and techniques used in each phase of the software life cycle.
  • Evaluate and select the appropriate software life cycle model.
  • Draw diagrams using the UML (Unified Modeling Language) modeling software for requirements analysis, design and development of software systems.
  • Apply testing techniques for software systems testing (validation and verification).

Course Contents

  • Introduction to Software Engineering, Software Engineering Principles, Problems in the development of software projects.
  • Software life cycle models – Introduction, classification and critical assessment of their general qualitative characteristics.
  • Requirements analysis and specifications – Requirements analysis using the Structured Analysis approach
  • Software requirements models and document
  • Methods of analysis and design of object-oriented systems, Unified Modeling Language (UML)
  • Use case diagrams
  • Class and object diagrams
  • Interaction diagrams
  • State diagrams
  • Design of software systems, Architectural Design
  • Coding – Desirable features – Writing techniques and good coding practices
  • Software testing – debugging
  • Software development tools (CASE tools)
  • Applications with UML

Recommended Readings

  • “Software Engineering”, Edition: 8th, Authors: R. Pressman, B.Maxim, Editors: A. Prentza, K. Saides, Publisher: Tziola, 2018 (1st Book)
  • “Software Engineering – Theory and Practice”, Edition: 2nd, Author: S. L. Pfleeger, Publisher: Kleidarithmos Ltd, 2011 (2nd Book)
  • Notes and course slides