A SOLID Grasp of C# Design: Principles, Refactoring, and a Case-Driven Approach

dc.contributor.advisorΒασιλάκης, Κωνσταντίνος
dc.contributor.authorΦρέσκου, Αγγελική
dc.contributor.departmentΤμήμα Πληροφορικής και Τηλεπικοινωνιώνel
dc.contributor.facultyΣχολή Οικονομίας και Τεχνολογίαςel
dc.contributor.masterΕπιστήμη Υπολογιστώνel
dc.date.accessioned2025-10-29T09:57:41Z
dc.date.issued2025-10-17
dc.descriptionΜ.Δ.Ε. 91el
dc.description.abstractThe thesis investigates how the combined application of the SOLID principles and the GRASP patterns can be used to produce robust C# software designs that remain maintainable, testable, and extensible as systems evolve. A unified, principle-to-practice framework is presented in which SOLID secures class- and component-level integrity while GRASP structures responsibilities and collaborations at the architectural level. The approach is operationalized in the .NET ecosystem through idiomatic refactorings—interface extraction, role-focused interface segregation, strategy-based composition, and dependency inversion realized via dependency injection—so that variation can be absorbed at stable seams owned by high-level policy. To move beyond stylistic guidance, the work employs metric-guided evaluation and a cohesive C# case study representative of an e-commerce workflow. Changes are validated using static and change-based indicators (coupling/cohesion proxies, instability indices, files-touched per feature), along with test metrics (coverage and mutation score). The results indicate that dependency boundaries defined and verified at the policy layer localize change, reduce “shotgun surgery,” and enable faster, more reliable testing through mocks and contract tests; extension by addition is favored over risky edits, and architectural refactoring becomes safer. Contributions include: (i) a mapped correspondence between SOLID and GRASP that clarifies when and how to apply each; (ii) a refactoring playbook tied to expected metric movement; (iii) case studies demonstrating end-to-end impact in C#; and (iv) pedagogical scaffolding suitable for studio-style instruction. Limitations are noted regarding external validity across real-time or resource-constrained domains and the use of proxy metrics for maintainability. Future work is outlined for principle-aware analyzers, boundary verification in continuous integration, broader multi-team replication, and curriculum-ready case libraries, with the aim of turning design principles into repeatable, measurable engineering practice.el
dc.description.abstracttranslatedΠερίληψη Η παρούσα διπλωματική εργασία διερευνά πώς ο συνδυασμός των αρχών SOLID και των προτύπων GRASP μπορεί να χρησιμοποιηθεί για την παραγωγή ανθεκτικών σχεδίων λογισμικού σε C#, τα οποία παραμένουν συντηρήσιμα, ελέγξιμα και επεκτάσιμα καθώς τα συστήματα εξελίσσονται. Παρουσιάζεται ένα ενοποιημένο πλαίσιο από τη θεωρία στην πράξη, στο οποίο οι αρχές SOLID διασφαλίζουν την ακεραιότητα σε επίπεδο κλάσης και συνιστώσας, ενώ τα πρότυπα GRASP οργανώνουν τις ευθύνες και τις συνεργασίες σε αρχιτεκτονικό επίπεδο. Η προσέγγιση υλοποιείται στο οικοσύστημα .NET μέσω ιδιοτυπικών αναδομήσεων (refactorings), όπως εξαγωγή διεπαφών, διαχωρισμός διεπαφών βάσει ρόλων, σύνθεση μέσω προτύπων στρατηγικής και αντιστροφή εξάρτησης μέσω dependency injection, έτσι ώστε η ποικιλία να απορροφάται σε σταθερά σημεία ελέγχου που ανήκουν στην ανώτερη πολιτική του συστήματος. Για να υπερβεί το επίπεδο της απλής στυλιστικής καθοδήγησης, η εργασία εφαρμόζει αξιολόγηση με βάση μετρικές και παρουσιάζει μια συνοχή μελέτη περίπτωσης σε C#, αντιπροσωπευτική ενός ηλεκτρονικού εμπορικού σεναρίου (e-commerce workflow). Οι αλλαγές επικυρώνονται μέσω στατικών και δυναμικών δεικτών (πληρεξούσιες μετρικές σύζευξης/συνοχής, δείκτες αστάθειας, αριθμός αρχείων που τροποποιούνται ανά λειτουργία), καθώς και μετρικών δοκιμών (κάλυψη κώδικα και βαθμός μετάλλαξης). Τα αποτελέσματα δείχνουν ότι τα όρια εξάρτησης, όπως ορίζονται και επαληθεύονται στο επίπεδο πολιτικής, τοπικοποιούν τις αλλαγές, μειώνουν το φαινόμενο της “χειρουργικής με καραμπίνα” (shotgun surgery) και επιτρέπουν ταχύτερο και πιο αξιόπιστο έλεγχο μέσω mocks και δοκιμών συμβολαίου (contract tests)· η επέκταση μέσω προσθήκης προτιμάται έναντι επικίνδυνων τροποποιήσεων, και η αρχιτεκτονική αναδόμηση καθίσταται ασφαλέστερη. Οι συνεισφορές περιλαμβάνουν: (i) έναν αντιστοιχισμένο χάρτη μεταξύ SOLID και GRASP που αποσαφηνίζει πότε και πώς εφαρμόζεται κάθε αρχή· (ii) ένα εγχειρίδιο αναδομήσεων συνδεδεμένο με την αναμενόμενη μεταβολή μετρικών (iii) μελέτες περίπτωσης που αποδεικνύουν τον ολιστικό αντίκτυπο σε C#·και (iv) διδακτικό υλικό κατάλληλο για διδασκαλία τύπου εργαστηρίου ( studio-style instruction). Αναγνωρίζονται περιορισμοί όσον αφορά την εξωτερική εγκυρότητα σε τομείς πραγματικού χρόνου ή με περιορισμένους πόρους, καθώς και στη χρήση έμμεσων μετρικών για τη συντηρησιμότητα. Τέλος, προτείνεται μελλοντική εργασία για αναλυτές ευαισθητοποιημένους στις αρχές σχεδίασης, επαλήθευση ορίων σε συνεχή ολοκλήρωση (continuous integration), ευρύτερη επαναληψιμότητα σε πολυομαδικά περιβάλλοντα και εκπαιδευτικές βιβλιοθήκες μελετών περίπτωσης, με στόχο τη μετατροπή των αρχών σχεδίασης σε επαναλήψιμη, μετρήσιμη μηχανική πρακτική.el
dc.format.extent419el
dc.identifier.urihttps://amitos.library.uop.gr/xmlui/handle/123456789/9264
dc.language.isoenel
dc.publisherΠανεπιστήμιο Πελοποννήσουel
dc.subjectΛογισμικό υπολογιστών-Ανάπτυξηel
dc.subjectΓλώσσες προγραμματισμού (Ηλεκτρονικοί Υπολογιστές)el
dc.subjectΑντικειμενοστρεφής προγραμματισμός (Ηλεκτρονικοί Υπολογιστές)el
dc.subjectΑνακατασκευή λογισμικούel
dc.subjectC# (Γλώσσα προγράμματος υπολογιστή)el
dc.subjectComputer software-Developmentel
dc.subjectProgramming Languages (Electronic computers)el
dc.subjectObject-oriented programming (Computer science)el
dc.subjectSoftware refactoringel
dc.subjectC# (Computer program language)el
dc.subject.keywordSoftware Engineeringel
dc.subject.keywordSOLID Principlesel
dc.subject.keywordGRASP Patternsel
dc.subject.keywordC#el
dc.subject.keywordObject Oriented Programmingel
dc.titleA SOLID Grasp of C# Design: Principles, Refactoring, and a Case-Driven Approachel
dc.typeΜεταπτυχιακή διπλωματική εργασίαel
dcterms.embargoLiftDate2028-10-28T09:57:41Z
dcterms.embargoTerms3 yearsel

Files

License bundle

Now showing 1 - 1 of 1
Loading...
Thumbnail Image
Name:
license.txt
Size:
933 B
Format:
Item-specific license agreed upon to submission
Description: