{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,25]],"date-time":"2026-06-25T13:48:10Z","timestamp":1782395290909,"version":"3.54.5"},"reference-count":31,"publisher":"MDPI AG","issue":"7","license":[{"start":{"date-parts":[[2026,6,25]],"date-time":"2026-06-25T00:00:00Z","timestamp":1782345600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"name":"EK\u00d6P-25 University Research Scholarship Program of the Ministry for Culture and Innovation","award":["EK\u00d6P-25-4-II-ELTE-1068"],"award-info":[{"award-number":["EK\u00d6P-25-4-II-ELTE-1068"]}]}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Computers"],"abstract":"<jats:p>Static analysis of student programming submissions has proven a useful supplement to manual evaluation in university courses, but existing approaches focus on local code-quality issues and rarely check higher-level design decisions such as architectural conformance. We propose an architecture-aware static-analysis methodology for student submissions written in C# and structured according to the Model-View (MV) or Model-View-ViewModel (MVVM) architectures. A deterministic clustering algorithm assigns user-defined types to architectural layers by combining heuristic rules derived from SDK conventions with course-specific information, and our 10 proposed violation checks\u2014covering layer-dependency rules, encapsulation, event handling, and dependence on concretions\u2014are evaluated on the recovered layer structure. We implemented the methodology as an open-source analyzer integrated with an automated submission-evaluation system used in a university course focused on event-driven applications, and evaluated it on 947 submissions containing 13,126 user-defined types from past semesters. The analyzer assigned more than 98% of types to their correct layer and surfaced more than 6000 architectural and design issues. The results show that architecture-aware static analysis is a viable complement to manual grading and produces actionable feedback for both students and lecturers.<\/jats:p>","DOI":"10.3390\/computers15070404","type":"journal-article","created":{"date-parts":[[2026,6,25]],"date-time":"2026-06-25T12:37:55Z","timestamp":1782391075000},"page":"404","update-policy":"https:\/\/doi.org\/10.3390\/mdpi_crossmark_policy","source":"Crossref","is-referenced-by-count":0,"title":["Architecture-Aware Static Analysis and Violation Detection of C# Student Submissions"],"prefix":"10.3390","volume":"15","author":[{"given":"B\u00e1lint Dominik","family":"Orosz","sequence":"first","affiliation":[{"name":"Department of Programming Languages and Compilers, Faculty of Informatics, ELTE E\u00f6tv\u00f6s Lor\u00e1nd University, P\u00e1zm\u00e1ny P\u00e9ter stny. 1\/C, H-1117 Budapest, Hungary"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-9828-3322","authenticated-orcid":false,"given":"Judit","family":"Sz\u00fccs","sequence":"additional","affiliation":[{"name":"Department of Information Technology and Its Applications, Faculty of Information Technology, University of Pannonia, Gasparich M. utca 18\/A, H-8900 Zalaegerszeg, Hungary"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-3168-7736","authenticated-orcid":false,"given":"M\u00e1t\u00e9","family":"Cser\u00e9p","sequence":"additional","affiliation":[{"name":"Department of Software Technology and Methodology, Faculty of Informatics, ELTE E\u00f6tv\u00f6s Lor\u00e1nd University, P\u00e1zm\u00e1ny P\u00e9ter stny. 1\/C, H-1117 Budapest, Hungary"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"1968","published-online":{"date-parts":[[2026,6,25]]},"reference":[{"key":"ref_1","unstructured":"E\u00f6tv\u00f6s Lor\u00e1nd University (2026, May 20). Student Enrollment Data. Available online: https:\/\/neptun.elte.hu\/VcShowReport\/Index\/341?skey=kEK61DN0NsNzQ5BjUmDpbFAn."},{"key":"ref_2","unstructured":"Anderson, N. (2026, May 20). College Is Remade as Tech Majors Surge and Humanities Dwindle. Available online: https:\/\/www.washingtonpost.com\/education\/2023\/05\/19\/college-majors-computer-science-humanities\/."},{"key":"ref_3","first-page":"37","article-title":"Detecting Programming Flaws in Student Submissions with Static Source Code Analysis","volume":"68","author":"Kaszab","year":"2023","journal-title":"Stud. Univ. Babe\u015f-Bolyai Inform."},{"key":"ref_4","doi-asserted-by":"crossref","unstructured":"Paiva, J.C., Figueira, \u00c1., and Leal, J.P. (2023). Bibliometric Analysis of Automated Assessment in Programming Education: A Deeper Insight into Feedback. Electronics, 12.","DOI":"10.3390\/electronics12102254"},{"key":"ref_5","unstructured":"Microsoft (2026, May 20). Desktop Guide for Windows Forms .NET. Available online: https:\/\/learn.microsoft.com\/en-us\/dotnet\/desktop\/winforms\/overview\/?view=netdesktop-8.0."},{"key":"ref_6","unstructured":"Microsoft (2026, May 20). Desktop Guide for WPF .NET. Available online: https:\/\/learn.microsoft.com\/en-us\/dotnet\/desktop\/wpf\/overview\/?view=netdesktop-8.0."},{"key":"ref_7","unstructured":"Microsoft (2026, May 20). C# Programming Guide: Events. Available online: https:\/\/learn.microsoft.com\/en-us\/dotnet\/csharp\/language-reference\/keywords\/event."},{"key":"ref_8","doi-asserted-by":"crossref","unstructured":"Mekterovi\u0107, I., Brki\u0107, L., and Horvat, M. (2023). Scaling Automated Programming Assessment Systems. Electronics, 12.","DOI":"10.3390\/electronics12040942"},{"key":"ref_9","doi-asserted-by":"crossref","first-page":"3","DOI":"10.3390\/software1010002","article-title":"Automated Code Assessment for Education: Review, Classification and Perspectives on Techniques and Tools","volume":"1","year":"2022","journal-title":"Software"},{"key":"ref_10","doi-asserted-by":"crossref","unstructured":"Scanniello, G., D\u2019Amico, A., D\u2019Amico, C., and D\u2019Amico, T. (2010). An approach for architectural layer recovery. SAC \u201910: Proceedings of the 2010 ACM Symposium on Applied Computing, Association for Computing Machinery.","DOI":"10.1145\/1774088.1774551"},{"key":"ref_11","doi-asserted-by":"crossref","unstructured":"Wongtanuwat, W., and Senivongse, T. (2020). Detection of Violation of MVVM Design Pattern in Objective-C Programs. ICCCM \u201920: Proceedings of the 8th International Conference on Computer and Communications Management, Association for Computing Machinery.","DOI":"10.1145\/3411174.3411193"},{"key":"ref_12","first-page":"377","article-title":"MMVMi: A validation model for MVC and MVVM design patterns in iOS applications","volume":"45","author":"Aljamea","year":"2018","journal-title":"IAENG Int. J. Comput. Sci."},{"key":"ref_13","unstructured":"(2024). DOT Language; Graphviz Documentation. Available online: https:\/\/graphviz.org\/doc\/info\/lang.html."},{"key":"ref_14","doi-asserted-by":"crossref","unstructured":"Hasan, M. (2009). Finding the design pattern from the source code for developing reusable object oriented software. Proceedings of the Second International Conference on the Applications of Digital Information and Web Technologies, IEEE.","DOI":"10.1109\/ICADIWT.2009.5273947"},{"key":"ref_15","doi-asserted-by":"crossref","unstructured":"Sarkar, S., Rama, G.M., and Shubha, R. (2006). A Method for Detecting and Measuring Architectural Layering Violations in Source Code. Proceedings of the 13th Asia Pacific Software Engineering Conference (APSEC\u201906), IEEE.","DOI":"10.1109\/APSEC.2006.7"},{"key":"ref_16","unstructured":"Sommerville, I. (2015). Software Engineering, Pearson. [10th ed.]."},{"key":"ref_17","doi-asserted-by":"crossref","unstructured":"Baldwin, C.Y., and Clark, K.B. (2000). Design Rules: The Power of Modularity, MIT Press.","DOI":"10.7551\/mitpress\/2366.001.0001"},{"key":"ref_18","doi-asserted-by":"crossref","unstructured":"Wong, S., Cai, Y., Valetto, G., Simeonov, G., and Sethi, K. (2009). Design Rule Hierarchies and Parallelism in Software Development Tasks. Proceedings of the IEEE\/ACM International Conference on Automated Software Engineering, IEEE.","DOI":"10.1109\/ASE.2009.53"},{"key":"ref_19","doi-asserted-by":"crossref","unstructured":"Cai, Y., Iannuzzi, D., and Wong, S. (2011). Leveraging design structure matrices in software design education. Proceedings of the 24th IEEE-CS Conference on Software Engineering Education and Training (CSEE&T), IEEE.","DOI":"10.1109\/CSEET.2011.5876085"},{"key":"ref_20","doi-asserted-by":"crossref","first-page":"604","DOI":"10.1145\/324133.324140","article-title":"Authoritative sources in a hyperlinked environment","volume":"46","author":"Kleinberg","year":"1999","journal-title":"J. ACM"},{"key":"ref_21","doi-asserted-by":"crossref","unstructured":"Constantinou, E., Kakarontzas, G., and Stamelos, I. (2011). Towards Open Source Software System Architecture Recovery Using Design Metrics. Proceedings of the 15th Panhellenic Conference on Informatics, IEEE.","DOI":"10.1109\/PCI.2011.36"},{"key":"ref_22","doi-asserted-by":"crossref","first-page":"476","DOI":"10.1109\/32.295895","article-title":"A metrics suite for object oriented design","volume":"20","author":"Chidamber","year":"1994","journal-title":"IEEE Trans. Softw. Eng."},{"key":"ref_23","doi-asserted-by":"crossref","first-page":"10493","DOI":"10.1007\/s00500-022-06908-0","article-title":"Pathways for statically mining the Model-View-Controller software architecture on mobile applications","volume":"26","author":"Dobrean","year":"2022","journal-title":"Soft Comput."},{"key":"ref_24","doi-asserted-by":"crossref","unstructured":"Dobrean, D., and Dio\u015fan, L. (2021). A Hybrid Approach to MVC Architectural Layers Analysis. Proceedings of the 16th International Conference on Evaluation of Novel Approaches to Software Engineering\u2014ENASE, SciTePress. INSTICC.","DOI":"10.5220\/0010326700360046"},{"key":"ref_25","doi-asserted-by":"crossref","unstructured":"Ali, R., Kaindl, H., and Maciaszek, L.A. (2022). Validating HyDe: Intelligent Method for Inferring Software Architectures from Mobile Codebase. Proceedings of the Evaluation of Novel Approaches to Software Engineering, Springer.","DOI":"10.1007\/978-3-030-96648-5"},{"key":"ref_26","unstructured":"Dobrean, D., and Dio\u015fan, L. (2026, May 20). Intelligent Methods for Inferring Software Architectures from Mobile Applications Codebases. Available online: https:\/\/teze.doctorat.ubbcluj.ro\/doctorat\/teza\/fisier\/6683."},{"key":"ref_27","doi-asserted-by":"crossref","unstructured":"Komolov, S., Dlamini, G., Megha, S., and Mazzara, M. (2022). Towards Predicting Architectural Design Patterns: A Machine Learning Approach. Computers, 11.","DOI":"10.3390\/computers11100151"},{"key":"ref_28","unstructured":"Dankov\u010d\u00edkov\u00e1, Z. (2017). Custom Roslyn Tool for Static Code Analysis. [Master\u2019s Thesis, Masaryk University]. Available online: https:\/\/is.muni.cz\/th\/f6oc3\/masterThesis.pdf."},{"key":"ref_29","doi-asserted-by":"crossref","first-page":"31","DOI":"10.1145\/375360.375365","article-title":"A guided tour to approximate string matching","volume":"33","author":"Navarro","year":"2001","journal-title":"ACM Comput. Surv."},{"key":"ref_30","doi-asserted-by":"crossref","first-page":"171","DOI":"10.1007\/BF00268499","article-title":"Edge-disjoint spanning trees and depth-first search","volume":"6","author":"Tarjan","year":"1976","journal-title":"Acta Inform."},{"key":"ref_31","unstructured":"Orosz, B.D. (2024). Automated Validation of Design and Architectural Patterns on Student Assignments with Static Code Analysis. [TDK Thesis\/Master\u2019s Thesis, E\u00f6tv\u00f6s Lor\u00e1nd University, Faculty of Informatics]. Available online: https:\/\/tms-elte.gitlab.io\/theses\/orosz_balint_dominik_tdk.pdf."}],"container-title":["Computers"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.mdpi.com\/2073-431X\/15\/7\/404\/pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,6,25]],"date-time":"2026-06-25T13:02:20Z","timestamp":1782392540000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.mdpi.com\/2073-431X\/15\/7\/404"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2026,6,25]]},"references-count":31,"journal-issue":{"issue":"7","published-online":{"date-parts":[[2026,7]]}},"alternative-id":["computers15070404"],"URL":"https:\/\/doi.org\/10.3390\/computers15070404","relation":{},"ISSN":["2073-431X"],"issn-type":[{"value":"2073-431X","type":"electronic"}],"subject":[],"published":{"date-parts":[[2026,6,25]]}}}