QUANTITATIVE ASSESSMENT OF THE FUNCTIONAL EFFECTIVENESS OF DESIGN PATTERNS ON THE PRESENCE OF CODE SMELLS

QUANTITATIVE ASSESSMENT OF THE FUNCTIONAL EFFECTIVENESS OF DESIGN PATTERNS ON THE PRESENCE OF CODE SMELLS. Masters thesis, King Fahd University of Petroleum and Minerals.

[img]
Preview
PDF
ID#_201411040____Mahmoud_Alfadel___Master_Thesis.pdf

Download (1MB) | Preview

Arabic Abstract

إن تطوير أنظمة البرمجيات يتم غالبا بطريقة غير ملائمة للممارسات الجيدة في البرمجة غرضية التوجه ، مما قد يتسبب في حدوث ما يسمى بعيوب الشيفرة المصدرية. عيوب الشيفرة المصدرية هي مؤشرات ضعف الحلول في جزء من التعليمات البرمجية التي تقترح مشكلة محتملة تحتاج إلى إيلاء الاهتمام في التعليمات البرمجية أو التصميم. من ناحية أخرى، فإن أنماط التصميم تهدف إلى الفهرسة الأفضل لتطوير أنظمة برمجيات غرضية التوجه. قد تكون هناك علاقة مشتركة بين أنماط التصميم وعيوب الشيفرة المصدرية، حيث أن هذه الظاهرة مذكورة في بعض الأحيان في الدراسات الخاصة في مجال هندسة البرمجيات. وبالتالي، فإن هذا العمل يقوم بعملية التحليل والتقييم بقصد تحديد العلاقة بين أنماط التصميم وعيوب الشيفرة المصدرية في أنظمة البرمجيات، التي قد تحدث بسبب الاستخدام الخاطئ لأنماط التصميم. ويهدف العمل إلى ما يلي: (1) التقييم التجريبي ما إذا كان وجود أنماط التصميم قد يتصل بوجود عيوب الشيفرة المصدرية في مستوى الصف. (2) التقييم التجريبي ما إذا كانت العلاقة بين كل فئة من فئات أنماط التصميم وعيوب الشيفرة المصدرية مشابهة لما هي عليه في مستوى الصف. (3) التقييم التجريبي للعلاقة بين كل نمط تصميم على حدة وعيوب الشيفرة المصدرية . لإنجاز هذا العمل، قمنا بمسح للدراسات المرجعية ذات الصلة بأنماط التصميم وعيوب الشيفرة المصدرية, لاحقاً, قمنا ببناء دراسة تجريبية على 10 أنظمة برمجية مفتوحة المصدر بلغة Java تتراوح مابين صغيرة إلى متوسطة الحجم. على وجه التحديد، قمنا إحصائياً بتقييم علاقة الوجود المشترك بين أنماط التصميم وعيوب الشيفرة المصدرية. تم إنجاز العمل من خلال ثلاث مراحل: (1) مرحلة تصميم الصفوف. (2) مرحلة فئات أنماط التصميم. (3) مرحلة كل نمط من أنماط التصميم على حدة. تم تطبيق قواعد الترابط لاستخراج العلاقات القوية بين أنماط التصميم وعيوب الشيفرة المصدرية. تخلُص النتائج إلى أن الصفوف المشاركة في أنماط التصميم تعرض عيوباً في الشيفرة المصدرية أقل من تلك التي تعرضها الصفوف الغير مشاركة في أنماط التصميم وذلك في غالبية الأنظمة البرمجية المستخدمة في هذه الدراسة. بلإضافة لذلك, يجدر الإشارة إلى أن أنماط التصميم لها نفس التأثير على عيوب الشيفرة المصدرية. إن هذه النتيجة قد تدل على أن اعتماد أي فئة من فئات أنماط التصميم قد ينتج نفس البرنامج من ناحية جودة الوثوقية. من خلال دراسة عيوب الشيفرة المصدرية يمكن اكتشاف العيوب الأكثر شيوعا في هذه الدراسة: Blob, God Class, External Duplication. إن غالبية قواعد الترابط التي تم اكتشافها تشير إلى أن وجود أنماط التصميم في الصفوف يقود إلى عدم وجود عيوب في الشيفرة المصدرية. من جهة أخرى, فإن هناك بعض قواعد الترابط التي أظهرت عكس النتيجة السابقة حيث أن بعض أنماط التصميم لها علاقة وثيقة ببعض عيوب الشيفرة المصدرية. أنمام التصميم: Singleton, State, Strategy, Adapter and Decorator أظهرت بشكل فعّال أنه لا يوجد ترابط بينها وبين عيوب الشيفرة المصدرية فيما أظهرت أنماط التصميم: Command, Memento العلاقة الوثيقة بينها وبين بعض عيوب الشيفرة المصدرية وبالأخص: Blob, God Class, External Duplication. في الواقع فإن الاستخدام الخاطئ لأنماط التصميم قد يفضي إلى حدوث عيوب في الشيفرة المصدرية. من الجدير بالذكر قوة العلاقة بين نمط التصميم Command وعيبي الشيفرة المصدرية Blob, God Class. على الرغم من المهنية الاحترافية التي يُشار إاليها عند استخدام أنماط التصميم, فإن النتائج الملاحظة في هذه الدراسة يمكن أن تُستخدم كحافز لدفع اهتمام المطورين البرمجيين باتجاه التأثيرات الغير مرغوب بها والناتجة عن تطبيق أنماط التصميم بشكل غير مناسب.

English Abstract

Software systems are often developed in a way that good practices of the object-oriented paradigm are not fulfilled, causing the occurrence of specific dis-harmonies which called code smells. Code bad smells are indicators of poor solutions in a fragment of code that propose a potential problem needs to pay attention in code or design. On the other hand, design patterns are intended to catalogue the best practices for developing object-oriented software systems. Although apparently widely divergent, there may be an co-occurrence relation between design patterns and code smells, since this phenomenon is sometimes mentioned in studies in the field of software engineering, albeit discreetly. Hence, this work carries out an investigative study and analysis with the intention of identifying the relationship between design patterns and code smells in systems, that may happen due to the inadequate use of design patterns. The work is aimed to have the following purposes: (1) to evaluate empirically if the presence of design patterns connects to the presence of code smells in the class level. (2) to evaluate empirically if the relation between each category of design pattern and code smells would hold as in the class level. (3) to evaluate empirically the relation between individual design patterns and code smells. To accomplish this work, we first perform a literature review in order to understand the recent states concerning design patterns and code smells, then, we accomplish an empirical study using twenty design patterns and thirteen code smells in ten small-size to medium-size, open source Java systems. Specifically, we evaluate statistically the presence of design patterns and their possible usage effects on code smells that lead to their co-occurrences. The study is conducted through three levels: (1) Class level, (2) Design Pattern Category level. (3) Pattern level. Association rules are applied to extract the strong rules that describe the relation between pattern-smell pairs. The observed relationship concludes that classes participating in design patterns display less smell proneness and smell density than classes not participating in design patterns in the majority of systems. It was discovered that every one of the different categories acts in the same way in terms of smell proneness. This observation tends towards the conclusion that the adoption of any of the design patterns might produce the same reliable software. By examining the presence of individual smells in code, it is possible to discover the most common ones: Blob, God Class and External Duplication. The majority of the important rules we discovered combine the presence of a design pattern, and the absence of a code smell. There are rules, however, which represent patterns that are linked with certain smells. Singleton, State, Strategy, Adapter and Decorator are some of the patterns that are generally not collocated with smells, while for Command and Memento this association is significantly weaker. Command patterns are linked to the Blob, External Duplication and God Class smells, whereas the Memento patterns are connected with Blob and External Duplication, with the God Class being the exception. In fact, design patterns misuse could potentially facilitate the production of bad smells. The most noteworthy cases were the co-occurrences of the Command design pattern with the Blob and the God Class. Although professional developing of software systems is cataloged in design patterns, this observation could be utilized to pay developers' attention for the possible undesired sound effects when design patterns are applied inadequately.

Item Type: Thesis (Masters)
Subjects: Computer
Engineering
Research > Information Technology
Department: College of Computing and Mathematics > Information and Computer Science
Committee Advisor: Aljasser, Khalid
Committee Members: Alshayeb, Mohammad and Mahmood, Sajjad
Depositing User: MAHMOUD AL FADEL (g201411040)
Date Deposited: 04 Oct 2017 11:22
Last Modified: 30 Dec 2020 13:07
URI: http://eprints.kfupm.edu.sa/id/eprint/140435