Section outline

  • Η Τεχνολογία Λογισμικού είναι το πεδίο της Επιστήμης Υπολογιστών που πραγματεύεται τεχνικές, μεθοδολογίες, πρακτικές και εργαλεία για την συστηματική, μεθοδική και ποσοτικοποιημένη προδιαγραφή, σχεδίαση, υλοποίηση, έλεγχο, και συντήρηση συστημάτων λογισμικού υψηλής ποιότητας και εντός δεδομένου προϋπολογισμού και χρόνου εκτέλεσης, δηλαδή σύμφωνα με τις αρχές της μηχανικής (engineering). Το μάθημα περιλαμβάνει ένα μεγάλο εύρος αντικειμένων όπως η προδιαγραφή λογισμικού, η αρχιτεκτονική, η σχεδίαση, η παραγωγή πηγαίου κώδικα, ο έλεγχος, η διαχείριση έργων και η διασφάλιση ποιότητας, με πρακτική επαφή με εργαλεία όπως περιβάλλοντα μοντελοποίησης, διαχείρισης, αυτόματης παραγωγής και ελέγχου κώδικα, καθώς σχετικά εννοιολογικά πρότυπα.

    Από το ακ.έτος 2026-2027 το περιεχόμενο του μαθήματος προσαρμόζεται δυναμικά στις νέες συνθήκες με τη σχεδόν καθολική χρήση εργαλείων Τεχνητής Νοημοσύνης για τη συγγραφή πηγαίου κώδικα, αλλά και την υποστήριξη της εκτέλεσης πολλών άλλων εργασιών του κύκλου ζωής λογισμικού. Στο πλαίσιο αυτό, οι διαλέξεις με "παραδοσιακά" αντικείμενα Τεχνολογίας Λογισμικού στοχεύουν στην εμβάθυνση της κατανόησης θεμελιωδών εννοιών, όπως αυτές που σχετίζονται με τις απαιτήσεις, την περιγραφή των προδιαγραφών, την αρχιτεκτονική, την αξιολόγηση ποιότητας και την τεκμηρίωση του λογισμικού. Η κατασκευή του κώδικα, ο έλεγχος, η παραγωγή περιγραφικών μοντέλων αυτού, καθώς και άλλες κατά περίπτωση πρόσφορες εργασίες, επανα-προσδιορίζονται ως εργασίες που θα εκτελεστούν σε μεγάλο βαθμό από εργαλεία ΤΝ με ανθρώπινη εποπτεία, κριτική αξιολόγηση, διαμόρφωση και τελική αποδοχή και ευθύνη. Στόχος είναι, μεταξύ άλλων, η αποτίμηση της πραγματικής προστιθέμενης αξίας των εργαλείων ΤΝ στον κύκλο ζωής λογισμικού και η ανάδειξη του νέου ρόλου του Μηχανικού Λογισμικού στις σύγχρονες συνθήκες.

    Στα πλαίσια του μαθήματος οι σπουδαστές εκπονούν σε ομάδες μια εξαμηνιαία εργασία με αντικείμενο που διαμορφώνουν οι ίδιοι, σύμφωνα με τις οδηγίες. Η εργασία δίνει την αφορμή αξιοποίησης μεγάλου μέρους γνώσεων προγραμματισμού, βάσεων δεδομένων, υπηρεσιών διαδικτύου, ασφάλειας, διεπαφών κ.ά., μέσα από σύγχρονα περιβάλλοντα τεκμηρίωσης και ανάπτυξης λογισμικού με χρήση ΤΝ με την εποπτεία και την ευθύνη των ομάδων που καθορίζουν και κριτικά αξιολογούν τα παραγόμενα από την ΤΝ στοιχεία. 

    Επικοινωνία:
    - Για όλα τα θέματα που αφορούν το μάθημα γράψτε στο forum ΣΥΖΗΤΗΣΕΙΣ, έχοντας πρώτα αναζητήσει ανεπιτυχώς απάντηση στο ερώτημά σας. 
    - Email αποκλειστικά στη διεύθυνση softeng@courses.softlab.ntua.gr, για θέματα μη-γενικού ενδιαφέροντος, διαφορετικά στο forum.

    Erasmus students

    please view the Erasmus section to register your contact data, download materials, and get info about assignments.

    • ΑΝΑΚΟΙΝΩΣΕΙΣ ΔΙΔΑΣΚΟΝΤΩΝ Φόρουμ
    • ΣΥΖΗΤΗΣΕΙΣ Φόρουμ
  • Σύμπτυξη Ανάπτυξη

    Διαλέξεις 2026-2027

  • Σύμπτυξη Ανάπτυξη

    Εργασία 2026-2027

    • Software Engineering (NTUA ECE course 3205)

      ERASMUS course offering 2026-2027 

      Software Engineering is the field of Computer Science that deals with concepts, techniques, methodologies, practices, and tools for the systematic, methodical, and quantifiable specification, architecturing, design, implementation, testing, verification and maintenance of high-quality software systems, within given budget and temporal constraints, in accordance with engineering principles. The course covers a wide range of subjects, including software specification, architectural and detailed design, implementation, verification and validation, project management, and quality assurance. Modern tools and environments are used for documentation, diagrams, code management, code generation, testing, and AI.

      This course is intended for advanced undergraduate students in Computer Science who have successfully completed at least three years of studies; participants must have a good knowledge in the following areas:
      • Principles of computer programming, with proficiency in C and/or C++
      • Programming methodologies and Object-Oriented Programming in C++ and/or Java
      • Algorithms and data structures using C, C++, or Java
      • Modern programming languages, such as JavaScript and/or Python
      • Relational database systems and SQL, with practical experience in PostgreSQL or MySQL
      • Fundamentals of network programming
      • Non-relational database systems, such as MongoDB
      • Source code management (git) and collaboration (GitHub)

      Starting from academic year 2026–2027, the course content is being dynamically adapted to the new conditions arising from the near-universal use of AI tools for source-code generation, as well as for supporting the execution of several other tasks throughout the software lifecycle. In this context, lectures and reference textbooks and materials covering “traditional” Software Engineering topics, aim to deepen students’ understanding of fundamental concepts, such as those related to software requirements, specification, architecture, quality management, and documentation. Code development, testing, software modeling, as well as other tasks, are redefined as activities that will be carried out, at least partially by AI tools, always with human supervision, critical evaluation, refinement, and ultimate acceptance and responsibility. Among the course objectives are the assessment of the actual added value of AI across the software lifecycle, as well as the exploration of the evolving role of Software Engineers in the future.

      As part of the course, students work in teams on a semester-long project, the topic of which they will define themselves, following with specific guidelines. The project servers as an opportunity to apply existing knowledge in programming, databases, web services, apis, security, user interfaces, and other related areas, using modern software documentation and development tools, all supported by AI. The student groups retain oversight and responsibility in defining the relevant tasks and critically evaluating the outputs produced by AI tools. Progress is monitored online using integration with AI skills, as well as code and project management tools offered by GitHub.


      The course materials are lecture slides, reference textbooks and online resources. Moodle (helios.ntua.gr) is used as the online LMS for communication, lecture materials, etc. Additional slides and online resources are offered to Erasmus students. The reference textbooks are as follows:
      • Ian Sommerville, Software Engineering 10th edition 
      • Roger Pressman, Software Engineering - a practitioner's approach, 7th edition

    • The project paper can be downloaded from here.

    • Access permission required, please request access

    • The attached contains the calendar (.ics) files for 3 scheduled meetings, aiming to sit together discuss questions regarding the implementation of the semester project. All the meetings will take place at "Room 13, Phase 2" of the ECE new building. 

      Participation is not compulsory. However, assuming that you have been working on the project and you have specific questions regarding technical challenges you go though, you are advised to attend.

  • Τεχνολογία Λογισμικού 10η έκδοση, I.Sommerville 
    ISBN:  9780137503148
    Εκδότης: ΕΚΔΟΣΕΙΣ ΚΛΕΙΔΑΡΙΘΜΟΣ ΕΠΕ

    ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ, 8η Έκδοση, Pressman R. S., Maxim R. Bruce
    ISBN: 978-1-259-25315-7
    ελληνική έκδοση, επιμέλεια Α.Πρέντζα, Κ.Σαΐδης ISBN: 978-960-418-720-1 

    Στοιχεία τεχνολογίας λογισμικού, Β.Βεσκούκης
    Σύνδεσμος Ελληνικών Ακαδημαϊκών Βιβλιοθηκών, Εκδόσεις Κάλλιπος
    ebook, URL: http://hdl.handle.net/11419/3160