شناسایی تاکتیکهای معماری در کد منبع بر اساس یک رویکرد معنایی
محورهای موضوعی :احسان شریفی 1 , احمد عبداله زاده بارفروش 2
1 - دانشجوی دکتری، دانشکده مهندسی کامپیوتر، دانشگاه صنعتی امیرکبیر، تهران، ایران
2 - استاد، دانشکده مهندسی کامپیوتر، دانشگاه صنعتی امیرکبیر، تهران، ایران
کلید واژه: تاکتیک معماری, ریزتاکتیک, آنتولوژی, مدل معنایی,
چکیده مقاله :
سامانه های نرم افزاری تا زمانی که قابلیت اعمال تغییرات را داشته باشند زنده هستند و امکان استفاده از آنها وجود دارد. اعمال تغییرات در کد منبع بدون توجه به تأثیرات آن می تواند باعث فرسایش معماری سامانه ی نرم افزاری شود. فرسایش معماری بهمرور، امکان انجام تغییرات را غیرممکن می نماید و سامانه روبهزوال می رود. تصمیمات معماری در کد منبع معمولاً توسط تاکتیک های معماری محقق می شوند. تاکتیک ها تصمیمات ریزدانه ای هستند که برای تحقق یک ویژگی کیفیتی خاص اتخاذ می شوند. شناسایی تاکتیک ها در کد منبع این امکان را برای توسعه دهندگان فراهم می کند که اعمال تغییرات در کد را با آگاهی از مکان پیاده سازی این تصمیمات انجام دهند. لذا فرآیند فرسایش معماری کندتر شده و سامانه ی نرم افزاری دیرتر به سمت زوال حرکت می نماید. بدین منظور، در این مقاله یک رویکرد بر مبنای وب معنایی بهمنظور شناسایی تاکتیک های معماری در کد منبع معرفی می شود. بر اساس این رویکرد، مفهوم جدیدی به نام ریز تاکتیک معرفی می شود که امکان شناسایی تاکتیک های معماری را با استفاده از یک رویکرد معنایی مبتنی بر وب معنایی و آنتولوژی ارتقاء می بخشد. نتایج حاصل از ارزیابی رویکرد پیشنهادی نشان می دهد که امکان شناسایی تاکتیکها در این روش با دقت و کیفیت بهتری نسبت به روش های مشابه انجام می شود.
Software systems are alive as long as they can be changed and used. Changing the source code without considering the consequences can lead to the architectural erosion of software systems. Architectural erosion gradually makes the system unchangeable and moves it towards deterioration. Architectural decisions in the source code are usually made using architectural tactics. These tactics are fine-grained decisions that are made to achieve a certain quality attribute. Recognizing these tactics in the source code, allows developers to change the code while knowing the implementation location of these decisions. This slows the architectural erosion process and delays the system's movement towards deterioration. Thus, this paper introduces a method based on semantic web for recognizing the architectural tactics presented in the source code. Based on this approach, the new concept of microtactic is introduced that increases the possibility of recognizing architectural tactics using a semantic web and ontological approach. The evaluation results show that this method in comparison with other similar methods recognizes the tactics with higher precision and quality.
M. Mirakhorli, “Preventing erosion of architectural tactics through their strategic implementation, preservation, and visualization,” in 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE), Nov. 2013, pp. 762–765. doi: 10.1109/ASE.2013.6693152.
N. B. Harrison and P. Avgeriou, “How do architecture patterns and tactics interact? A model and annotation,” Journal of Systems and Software, vol. 83, no. 10, pp. 1735–1758, Oct. 2010, doi: 10.1016/j.jss.2010.04.067.
M. Mirakhorli, A. Fakhry, A. Grechko, M. Wieloch, and J. Cleland-Huang, “Archie: A Tool for Detecting, Monitoring, and Preserving Architecturally Significant Code,” in Proceedings of the 22Nd ACM SIGSOFT International Symposium on Foundations of Software Engineering, New York, NY, USA, 2014, pp. 739–742. doi: 10.1145/2635868.2661671.
J. Ryoo, P. Laplante, and R. Kazman, “A Methodology for Mining Security Tactics from Security Patterns,” in 2010 43rd Hawaii International Conference on System Sciences, Jan. 2010, pp. 1–5. doi: 10.1109/HICSS.2010.18.
M. Mirakhorli, P. Mäder, and J. Cleland-Huang, “Variability points and design pattern usage in architectural tactics,” in Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering, New York, NY, USA, Nov. 2012, pp. 1–11. doi: 10.1145/2393596.2393657.
M. Mirakhorli and J. Cleland-Huang, “Detecting, Tracing, and Monitoring Architectural Tactics in Code,” IEEE Transactions on Software Engineering, vol. 42, no. 3, pp. 205–220, Mar. 2016, doi: 10.1109/TSE.2015.2479217.
D. E. Krutz and M. Mirakhorl, “Architectural clones: toward tactical code reuse,” in Proceedings of the 31st Annual ACM Symposium on Applied Computing, New York, NY, USA, Apr. 2016, pp. 1480–1485. doi: 10.1145/2851613.2851787.
I. J. Mujhid, J. C. S. Santos, R. Gopalakrishnan, and M. Mirakhorli, “A search engine for finding and reusing architecturally significant code,” Journal of Systems and Software, vol. 130, pp. 81–93, Aug. 2017, doi: 10.1016/j.jss.2016.11.034.
J. Keim, A. Kaplan, A. Koziolek, and M. Mirakhorli, “Does BERT Understand Code? – An Exploratory Study on the Detection of Architectural Tactics in Code,” in Software Architecture, Cham, 2020, pp. 220–228. doi: 10.1007/978-3-030-58923-3_15.
B. Milhem and H. A. Ismail, “Evaluating Software Architecture Based on Their Implemented Patterns and Tactics,” Thesis, Université d’Ottawa / University of Ottawa, 2020. doi: 10.20381/ruor-25057.
M. Zanoni, F. Arcelli Fontana, and F. Stella, “On applying machine learning techniques for design pattern detection,” Journal of Systems and Software, vol. 103, no. Supplement C, pp. 102–117, May 2015, doi: 10.1016/j.jss.2015.01.037.
J. (Yossi) Gil and I. Maman, “Micro Patterns in Java Code,” in Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, New York, NY, USA, 2005, pp. 97–116. doi: 10.1145/1094811.1094819.
S. Maggioni, “Design pattern detection and software architecture reconstruction: an integrated approach based on software micro-structures,” Università degli Studi di Milano-Bicocca, 2010.
R. Studer, V. R. Benjamins, and D. Fensel, “Knowledge engineering: Principles and methods,” Data & Knowledge Engineering, vol. 25, no. 1, pp. 161–197, Mar. 1998, doi: 10.1016/S0169-023X(97)00056-6.
A. Barforoush and A. Rahnama, “Ontology Learning: Revisited,” Journal of Web Engineering (JWE), vol. 11, pp. 269–289, Dec. 2012.
N. Noy and D. Mcguinness, “Ontology Development 101: A Guide to Creating Your First Ontology,” Knowledge Systems Laboratory, vol. 32, Jan. 2001.
S. Ehsan and D. Mahmood, “AN APPLICABLE METHOD FOR COMPREHENSIVE CORPUS GATHERING NEEDS FOR FUZZY DOMAIN ONTOLOGY GENERATION,” ELECTRONIC INDUSTRIES, vol. 7, no. 1, pp. 89–103, Jan. 2016.
R. Y. K. Lau, D. Song, Y. Li, T. C. H. Cheung, and J.-X. Hao, “Toward a Fuzzy Domain Ontology Extraction Method for Adaptive e-Learning,” IEEE Transactions on Knowledge and Data Engineering, vol. 21, no. 6, pp. 800–813, Jun. 2009, doi: 10.1109/TKDE.2008.137.
M. Atzeni and M. Atzori, “CodeOntology: RDF-ization of Source Code,” in The Semantic Web – ISWC 2017, Cham, 2017, pp. 20–28. doi: 10.1007/978-3-319-68204-4_2.
S. Kim, D.-K. Kim, L. Lu, and S. Park, “Quality-driven architecture development using architectural tactics,” Journal of Systems and Software, vol. 82, no. 8, pp. 1211–1231, Aug. 2009, doi: 10.1016/j.jss.2009.03.102.
S. Paydar and M. Kahani, “A semantic web enabled approach to reuse functional requirements models in web engineering,” Autom Softw Eng, vol. 22, no. 2, pp. 241–288, Jun. 2015, doi: 10.1007/s10515-014-0144-4.