أحمد سيداحمد على عثمان2017-08-062017-08-062008http://hdl.handle.net/123456789/4665ملخص البحث عند بداية ظهور الحاسبات والبرمجيات كانت عملية البرمجة من الصعوبة بمكان لأنها كانت أقرب الى الالة وكانت تهتم بتفاصيل الالة, ومع مرور الزمن وتطور البرمجيات أصبحت البرمجة أسهل وأصبحنا نهتم بالمشكلة أكثر من أهتمامنا بالالة.وبالتالى أصبح الانسان هو العنصر الاهم فى تطوير البرمجيات. تعتبر البرمجة الكائنية من التقنيات التى أحدثت تغييرا كبيرا فى طريقة تعاملنا مع البرامج . ولفترة ليست بالقصيرة تعتبر البرمجة الكائنية فى قمة التقنيات المستخدمة, ولكن مع التطور الكبير فى حجم البرامج والتعقيد الكبير لها, اصبحنا بحاجة الى تقنيات تستطيع التغلب على القصور الذى بدأ بالظهور فى البرمجة الكائنية, فظهرت الـ(Aspect Oriented Programming) والتى تعتبر من التقنيات التى مازالت فى مرحلة التطوير. هذا البحث يهدف الى دراسة مدى تأثير الـ (Aspect Oriented Programming) على جودة البرمجيات. وذلك من خلال التطرق لهذه التقنية الجديدة بالتفصيل. وكيف أستطاعت ان تعالج مشاكل مثل الكود الموزع (Scattering Code) والكود المتداخل (Tangled Code) . كما تطرق البحث الى جودة البرمجيات ومواصفات البرمجيات ذات الجودة العالية والقياسات التى تطبق على البرمجيات لقياس مدى جودتها. لتحديد مدى تاثير هذه التقنية على جودة البرمجيات تم أنتاج برنامج صغير وهو برنامج المخزن بأستخدام الـ(Aspect Oriented Programming) بأستخدام لغة AspectJ وتم مقارنته مع نفس البرنامج بأستخدام البرمجة الكائنية. ومن خلال المقارنة أتضح أن الـ(AOP) أستطاعت ان تقلل من تعقيد البرنامج من خلال تقليل عدد الاسطر من ناحية ومن خلال سهولة الفهم للبرنامج, كما أنها أستطاعت ان تزيد من قابلية البرنامج للصيانة . ولكن من ناحية أخرى وجدنا انها يمكن أن تزيد من عدم قابلية البرنامج للأختبار وذلك لان الـ(Aspect) وحدة غير قابلة للاختبار بصورة مستقلة وتزيد مشكلة الاختبار أذا كان لدينا أكثر من (Aspect) يتعاملون مع نفس الكائنات وهو ما يعرف بخصائص التجميع (Emergent Properties) , كما أنها فى حالات يمكن ان تؤثر سلباً على صحة البرنامج وذلك فى حالة خصائص التجميع أذ لا يمكن التنبؤ بسلوك البرنامج ككل من خلال سلوك الكائنات المكونة له. Abstract At the earliest day of computer and programming the coding was very difficult task because the programmer focuses on the machine details rather than the problem, but with days and the evolution of the programming the programmer became focusing on the problem details rather than the machine details. The OO is greatest technique that changes our dealing with the programing and software development, for many years or decades the OO is mostly used. And many organizations and people used it to implement their systems. But with all this benefits which OO brings to us at the recent years it show that there is some failures especially when we work with the crosscutting concern, then the Aspect Oriented Programming (AOP) come to resolve this failure. Throw this thesis we will explain this new technology in details and study how the use of AOP can affect the software quality on behalf of the characteristics of the high quality software. This thesis shows how AOP solve the problems like the crosscutting concerns and the tangled code. Also explain the software quality and the characteristic of the high quality software, and the measurement that applied to software to measure the quality. To determine how this technology affects the quality we developed the inventory system throw it, and compare it to another release implemented by using OO. Form this comparison we found that AOP can reduce the software complexity by reducing the code size and increase the understandability, also AOP increase the maintainability, but on the other hand AOP decrease the testability because the aspect is not independent funcyionality unit then we can’t test it independatly specialy when we have more than one aspect crosscut single asbstraction.Also the AOP in certain case can reduse the software correctness namely in the emergent properties case which we have more than one aspect crosscut one unit in this case we can’t expect the system behavior from the behavior of the sub unit consist it.علوم حاسوبAspect Oriented Software Development جودة البرمجيات باستخدام