Συντάχθηκε 09-11-2026 09:09
Τόπος:
Σύνδεσμος τηλεδιάσκεψης
Έναρξη: 10/11/2026 16:00
Λήξη: 10/11/2026 17:00
ΠΟΛΥΤΕΧΝΕΙΟ ΚΡΗΤΗΣ
Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών
Πρόγραμμα Προπτυχιακών Σπουδών
ΠΑΡΟΥΣΙΑΣΗ ΔΙΠΛΩΜΑΤΙΚΗΣ ΕΡΓΑΣΙΑΣ
Σπυρίδωνος Χειλουδάκη
με θέμα
Ανάπτυξη Διαδικτυακής Εφαρμογής για το Μετασχηματισμό Περιπτώσεων Χρήσης σε Πηγαίο Κώδικα.
Development of a Web Application for Transforming Use Cases to Source Code.
Εξεταστική Επιτροπή
Καθηγητής Μιχαήλ Γ. Λαγουδάκης (Σχολή ΗΜΜΥ, Επιβλέπων)
Καθηγητής Γεώργιος Χαλκιαδάκης (Σχολή ΗΜΜΥ)
Επίκουρος Καθηγητής Νικόλαος Σπανουδάκης (Τμήμα ΗΜ, ΕΛΜΕΠΑ)
Περίληψη
Κάθε σύστημα λογισμικού ξεκινά ως μια άτυπη περιγραφή του τι επιθυμούν να επιτύχουν οι χρήστες με αυτό, η οποία συχνά διατυπώνεται με τη μορφή περιπτώσεων χρήσης (use cases) σε ελεύθερο κείμενο που ορίζουν τους εμπλεκόμενους ρόλους (actors), τους στόχους και τους επιχειρησιακούς κανόνες. Παρότι τα Μεγάλα Γλωσσικά Μοντέλα (Large Language Models – LLMs) και οι πράκτορες που χρησιμοποιούν εργαλεία (tool-using agents) μπορούν να συνθέσουν μεμονωμένες συναρτήσεις ή να επιδιορθώσουν απομονωμένα σφάλματα σε υπάρχοντα αποθετήρια κώδικα, ο αυτόματος μετασχηματισμός περιπτώσεων χρήσης ελεύθερου κειμένου σε ένα πλήρες, πολυ-αρχειακό έργο λογισμικού αποτελεί σημαντικά δυσκολότερο πρόβλημα. Η αρχιτεκτονική της εφαρμογής παραμένει υπονοούμενη μέσα στο κείμενο, οι οντότητες του πεδίου πρέπει να αναπαρίστανται με συνέπεια στη βάση δεδομένων, στη διεπαφή προγραμματισμού (API) και στη διεπαφή χρήστη (UI), ο παραγόμενος κώδικας συχνά αποτυγχάνει σε πραγματικό περιβάλλον εκτέλεσης λόγω ασυμβατοτήτων βιβλιοθηκών ή ρυθμίσεων, ενώ το ίδιο το γλωσσικό μοντέλο δεν αποτελεί αξιόπιστο κριτή του αποτελέσματός του. Όταν το ίδιο μοντέλο γράφει τόσο τον κώδικα υλοποίησης, όσο και τις δοκιμές, σε ανοιχτό βρόχο, οι δοκιμές ενδέχεται να αναπαράγουν τις εσφαλμένες παραδοχές του κώδικα. Η παρούσα διπλωματική εργασία πραγματεύεται το πρόβλημα του αυτόματου μετασχηματισμού μιας περιγραφής περιπτώσεων χρήσης σε ελεύθερο κείμενο σε ένα ολοκληρωμένο, έτοιμο προς λήψη, έργο λογισμικού, το οποίο εκτελείται με μία μόνο εντολή και συνοδεύεται από αντικειμενικά τεκμήρια ορθότητας που συλλέγονται από εξωτερικά εργαλεία και όχι από ισχυρισμούς του μοντέλου. Παρουσιάζουμε μια διαδικτυακή πλατφόρμα με διεπαφή πραγματικού χρόνου, η οποία υποστηρίζει τόσο τοπικά μοντέλα ανοικτών βαρών μέσω Ollama, όσο και εμπορικά APIs. Η πλατφόρμα περιορίζει όλες τις λειτουργίες αρχείων σε ασφαλείς χώρους εργασίας, εκτελεί όλες τις εντολές δόμησης και ελέγχου σε απομονωμένο περιβάλλον Docker και επιβάλλει αυστηρά όρια βημάτων και χρόνου. Η πλατφόρμα υλοποιεί δύο συμπληρωματικές στρατηγικές παραγωγής κώδικα. Η πρώτη στρατηγική (codegen) χρησιμοποιεί έναν μεμονωμένο πράκτορα ReAct με ένα περιορισμένο σύνολο εργαλείων αρχείων και εκτέλεσης για τον σχεδιασμό, την υλοποίηση, τον έλεγχο (unit testing) και τη διόρθωση της υλοποίησης. Η δεύτερη στρατηγική (fullstack) συντονίζει έναν πολυπρακτορικό pipeline επεξεργασίας εννέα σταδίων για τη σύνθεση διαδικτυακών εφαρμογών τριών επιπέδων. Η δεύτερη στρατηγική (fullstack) αξιολογήθηκε σε τρία κείμενα απαιτήσεων (clinic, helpdesk και warehouse), τα οποία περιελάμβαναν συνολικά 18 σενάρια χρήσης, όπου αξιοποιήσαμε ένα LLM 27 δισεκατομμυρίων παραμέτρων που εκτελείται σε μία μόνο κάρτα γραφικών. Και οι τρεις εκτελέσεις παρέδωσαν πλήρεις εφαρμογές μέσα σε 132 έως 167 βήματα πρακτόρων, πέρασαν όλους τους ελέγχους τους και αναπαράχθηκαν ανεξάρτητα. Από τις 18 περιπτώσεις χρήσης, οι 14 ικανοποιήθηκαν πλήρως, οι 4 εν μέρει, ενώ καμία δεν απέτυχε· οι κανόνες εξουσιοδότησης, απομόνωσης, κύκλου ζωής και ταυτοχρονισμού τηρήθηκαν σε όλες τις εφαρμογές. Εκ των αποτελεσμάτων προέκυψαν 10 ευρήματα (3 μέτριας και 7 χαμηλής σοβαρότητας), τα οποία σχετίζονται με την επικύρωση εισόδου και τις λεπτομέρειες εμφάνισης σε τομείς που δεν καλύπτονταν από τις δοκιμές που παρήγαγε το σύστημα. Το γεγονός αυτό αναδεικνύει τόσο την αξία, όσο και τους περιορισμούς, της επαλήθευσης που διενεργείται από το ίδιο το σύστημα.
Abstract
Every software system begins as an informal description of what people want to achieve with it, often expressed as plain-text use cases that specify actors, goals, and domain rules. While Large Language Models (LLMs) and tool-using agents can synthesize individual functions or repair isolated defects in existing repositories, transforming free-text use cases into a complete, multi-file software project remains substantially harder. The application architecture remains implicit in the text, domain entities must stay consistent across the database, the API, and the user interface, generated code often fails in real runtime environments due to library dependencies or configuration mismatches, and a language model cannot serve as a reliable judge of its own output. When the same model writes both the implementation code and the tests in an open loop, its tests can share the code's flawed assumptions. This diploma thesis addresses the problem of automatically transforming a plain-text brief of use cases into a complete, ready to download, software project that starts with a single command and includes verification evidence gathered by external tools, rather than asserted by the model. We present a web platform with a real-time interface that supports both local open-weight models (via Ollama) and hosted commercial APIs, confines all file operations to path-safe workspaces, executes all build and test commands inside an isolated Docker sandbox, and enforces strict step and time budgets. The platform hosts two complementary generation strategies. The first strategy (codegen) uses a single ReAct agent with a narrow set of tools; the agent plans, implements, writes unit tests, and repairs the failing code. The second strategy (fullstack) uses a nine-stage pipeline to produce a complete three-tier application. We evaluated the second strategy (fullstack) on three briefs (clinic, helpdesk, and warehouse) with 18 use cases in total, where we utilized a 27-billion-parameter LLM that runs on a single GPU. All three runs produced complete applications within 132 to 167 agent steps, which passed all checks and were reproduced independently. Out of the 18 use cases, 14 were fully met, 4 were partially met, and none failed; the authorization, isolation, lifecycle, and concurrency rules were adhered to across all applications. The results produced 10 findings (3 of medium severity and 7 of low severity), which relate to input validation and display details in areas not covered by the generated tests; this fact highlights both the value and the limitations of verification generated by the system itself.
Meeting ID: 98724728320
Password: 748528