630 likes | 872 Views
بسم الله الرحمن الرحيم. استفاده از رويكرد جنبهگرايي در مدلسازي و ارزيابي نيازمنديهاي غيروظيفهمندي در طراحي سيستمهاي مبتني بر وب پاياننامه كارشناسيارشد رشته مهندسي نرمافزار الهام مؤذن. آزمايشگاه سيستمهاي هوشمند. اسفند ماه 1388. بيان مسأله. اهداف تحقيق .
E N D
بسم الله الرحمن الرحيم استفاده از رويكرد جنبهگراييدر مدلسازي و ارزيابي نيازمنديهاي غيروظيفهمنديدر طراحي سيستمهاي مبتني بر وبپاياننامه كارشناسيارشدرشته مهندسي نرمافزارالهام مؤذن آزمايشگاه سيستمهاي هوشمند اسفند ماه 1388
بيان مسأله استفاده از رويكرد جنبهگرايي در مدلسازي و ارزيابي نيازمنديهاي غيروظيفهمندي در طراحي سيستمهاي مبتني بر وب
اهداف تحقيق پي بردن به ماهيت نيازمنديهاي غيروظيفهمندي استخراج الگوي تحقق نيازمنديهاي غيروظيفهمندي استفاده از مفهوم جنبه تزريق جنبهگراي نيازمنديهاي غيروظيفهمندي در فرآيند توسعه و معماري كاربردهاي وب ارزيابي راهحل پيشنهادي بر كيفيت از ديد توسعهدهنده استفاده از رويكرد جنبهگرايي در مدلسازي و ارزيابي نيازمنديهاي غيروظيفهمندي در طراحي سيستمهاي مبتني بر وب
چارچوب تحقيق • 1. بررسي ادبيات موضوع • طبقهبندي نيازمنديهاي كاربردهاي وب • درخت نيازمنديهاي كيفي كاربردهاي وب • مهندسي وب • كاربردهاي سازماني مبتني بر وب • تعريف كانسرن • ضعف شئگرايي • 2.ريشهيابي خلأ تأمين نيازمنديهاي غيروظيفهمندي در مهندسي كاربردهاي وب • معرفي مورد مطالعاتي • توسعه شئگراي مورد مطالعاتي با جديدترين تكنيكهاي مهندسي وب • استخراج الگوي تحقق نيازمنديهاي غيروظيفهمندي • راهكارهاي ارائه شده براي رفع ضعف موجود در شئگرايي • 3. تزريق نيازمنديهاي غيروظيفهمندي در فرآيند توسعه كاربردهاي وب • 4. بهبود فرآيند توسعه مورد مطالعاتي با تزريق جنبهگراي نيازمنديهاي غيروظيفهمندي • 5. ارزيابي راهحل پيشنهادي • 6. نتيجهگيري استفاده از رويكرد جنبهگرايي در مدلسازي و ارزيابي نيازمنديهاي غيروظيفهمندي در طراحي سيستمهاي مبتني بر وب
كاربردهاي وب ادبيات موضوع (مفروضات) • طبقهبندي نيازمنديهاي كاربردهاي وب • نيازمنديهاي وظيفهمندي • نيازمنديهاي محتوا • نيازمنديهاي واسط كاربري • نيازمنديهاي پيمايشي • نيازمنديهاي شخصيسازي • نيازمنديهاي تراكنشي • نيازمنديهاي غيروظيفهمندي
ليست نيازمنديهاي كيفي كاربردهاي وب ادبيات موضوع (مفروضات) • در سال 1997 • قابليت استفاده (دركپذيري عمومي سايت، قابليت كمك آنلاين، قابليتهاي واسط و زيبايي، ...) • قابليت وظيفهمندي (توانايي جستجو و بازيابي، قابليتهاي پيمايش و مرور، ...) • قابليت اطمينان (پردازش صحيح لينك، ترميم خطا، اعتبارسنجي ورودي كاربر، ...) • بهرهوري (كارايي زمان پاسخ، سرعت توليد صفحات، ...) • نگهداشتپذيري (آساني تصحيحات، وفقپذيري، توسعهپذيري، ...) • در سال 2002 • امنيت (جلوگيري كردن از دسترسي غيرمجاز و خنثي كردن حملات خرابكارانه خارجي) • دسترسپذيري (درصدي از زمان) • مقياسپذيري (استفاده همزمانِ 100، 1000، 10000 يا 100000 كاربر) • زمان رسيدن به بازار
مهندسي وب ادبيات موضوع (مفروضات) تعريف مهندسي وب طراحي كاربردهاي وب هرم طراحي كاربردهاي وب
كاربردهاي سازماني مبتني بر وب ادبيات موضوع (مفروضات) دادههاي پيچيده در حجم زياد تعداد زياد كاربران تعداد زياد صفحات واسط كاربري يكپارچگي منطق تجاري پيچيده انواع نيازمنديهاي خاص سيستمهاي مبتني بر وب
View Controller Model معماري كاربردهاي سازماني مبتني بر وب ادبيات موضوع (مفروضات) پيروي از سبك معماري لايهاي استفاده از الگوي مدل دامنه نگاشت بر پايگاهدادههاي رابطهاي نمايش وب
تعريف كانسِرن ادبيات موضوع (مفروضات) يك كانسرن جنبهاي از يك مسأله است كه براي ذينفع يا ذينفعاني، بحراني يا در غير اينصورت مهم ميباشد. اغلب، نيازمنديها جنبههايي از يك مسأله توسعه نرمافزار را بيان ميكنند اما نه همه آنها را. برخي از جنبههاي مسأله در طول چرخه عمر نرمافزار مطرح ميشوند. كانسرنهاي عيني و غيرعيني
ضعف رويكرد شئگرايي ادبيات موضوع (مفروضات) متداولترين رويكرد توسعه سيستمهاي نرمافزاري ناتواني در پيمانهبندي كانسرنهاي متقاطع تأثير آن بر نحوه تأمين كانسرنهاي غيروظيفهمندي در كاربردهاي وب
مورد مطالعاتي طراحی آزمایشات کیفیت کنترل پروژه بازرسی مدیریت ریسک داشبورد کنترل کیفیت مواد اولیه و محصول مدیریت Holding امور قراردادها برنامه ریزی پروژه حسابداری پروژه مدیریت مالی برنامه ریزی مواد مدیریت Claim برنامه ریزی عملیات مهندسی محصول حسابداری صنعتی کنترل کیفیت کارگزینی اموال مديريت تولید کنترل تولید حسابداری عمومی پرسنلی حضور و غیاب ظرفیت سنجی نگهداری و تعمیرات توسعه محصول مديريت انبار تشکیلات بودجه سهام معرفی ماژول ها مدیریت مشخصات فنی تجهیزات آموزش رفاه تعمیرات اضطراری حقوق و دستمزد خزانه داری مدیریت مالی نقشه ماژولهایCyber ERP حسابداری خرید اقدامات پیشگیرانه حسابداری فروش مديريت فروش ارزشیابی مدیریت منابع انسانی مدیریت خرید اتوماسیون اداری مدیریت پروژه کنترل موجودی مدیریت توزیع کارتابل مکانیزه خرید صادرات اطلاعات تامین کنندگان و مشتریان انبار مقداری فروش و سفارشات دبیرخانه خدمات پس از فروش حسابداری انبار پیام های داخلی واردات بازاریابی ريشهيابي خلأ تأمين نيازمنديهاي غيروظيفهمندي در مهندسي كاربردهاي وب سيستم جامع برنامهريزي منابع سازماني كاملاً مبتني بر وب
معماري Cyber ERP Presentation Layer e - form JSP TagLib Model Controller Struts Domain Object Service Factory & Service Wrapper Spring Service Layer Service Interface Workflow Service Service Implementation Data Access Layer Workflow Management System DAO Interface DAO Implementation Hibernate Application DB Workflow DB Layering Domain Model Data Mapper MVC ريشهيابي خلأ تأمين نيازمنديهاي غيروظيفهمندي در مهندسي كاربردهاي وب
توسعه مدلگرا با استفاده از توليد كنندههاي كد • حرکت به سمت MDD (Model Driven Development) Spring Service Layer Presentation Layer Service Interface Domain Object JSP TagLib Service Implementation Data Access Layer Model Controller DAO Interface Struts DAO Implementation Hibernate Application DB UI Generator Domain Generator ريشهيابي خلأ تأمين نيازمنديهاي غيروظيفهمندي در مهندسي كاربردهاي وب
فايلهاي HTML فايلهاي XML توليد نمونه اوليه واسط كاربري توليد خودكار لايههاي فوقاني معماري طراحي متامدل واسط كاربري جمعآوري نيازمنديهاي هر زيرسيستم از طريق محك سيستمهاي موجود، دانش متخصصين دامنه و مصاحبه با مشتري پيادهسازي منطق غيروظيفهمندي در هر پيمانه در هر لايه پيادهسازي منطق وظيفهمندي در هر لايه تدوين سناريوي كانسرن وظيفهمندي توليد خودكار لايههاي زيرين معماري طراحي متامدل دامنه تست سناريوي وظيفهمندي نمودارهاي UML 2.0 فايلهاي نگاشت بر Hibernate (.hbm) متا داده ی موجودیت ها به صورت O/R Mapping XML متاداده واسط کاربر به صورت xml: • الگوی صفحه • مولفه های موجود در هر صفحه به همراه کلید عنوان آن ها (مستقل از زبان) • اطلاعات مربوط به پکیج ها و نامگذاری • کلاس های موجودیت (Java Bean) • جداول مرتبط در پایگاه داده • کلاس های سرویس و DAO و تزریق وابستگی این دو به هم • تنظیمات و پیکره بندی های Spring • واسط کاربرJSP به همراه اسکرپیت های کنترلی JS • ایجاد تنظیمات و ساخت کدهای MVC (Struts Action/Form) • رجیستر کردن صفحه در پرتال cyberERP پراكندگي كانسرنهاي غيروظيفهمندي در معماري كاربرد وب و در هم پيچيدگي آنها با كانسرنهاي وظيفهمندي ريشهيابي خلأ تأمين نيازمنديهاي غيروظيفهمندي در مهندسي كاربردهاي وب
معماري زيرسيستم مديريت منابع انساني (HRM) ريشهيابي خلأ تأمين نيازمنديهاي غيروظيفهمندي در مهندسي كاربردهاي وب
بخشي از كد سناريوي محاسبه حقوق در لايهModel Controller ريشهيابي خلأ تأمين نيازمنديهاي غيروظيفهمندي در مهندسي كاربردهاي وب
بخشي از كد سناريوي محاسبه حقوق در لايهSpring Service Layer ريشهيابي خلأ تأمين نيازمنديهاي غيروظيفهمندي در مهندسي كاربردهاي وب
بخشي از كد سناريوي محاسبه حقوق در لايهData Access Layer ريشهيابي خلأ تأمين نيازمنديهاي غيروظيفهمندي در مهندسي كاربردهاي وب
طبقهبندي كانسرنهاي عيني در توسعه كاربردهاي وب ريشهيابي خلأ تأمين نيازمنديهاي غيروظيفهمندي در مهندسي كاربردهاي وب • كانسرن وظيفهمندي هسته : محاسبه حقوق Core Functional Concern • كانسرن غيروظيفهمندي قابل عملياتي شدن: مجازشناسي Operationalizable Non-functional Concern • كانسرن غيروظيفهمندي نظارتپذير: كارايي زمان پاسخ Checkable Non-functional Concern
استخراج الگوي تحقق كانسرنهاي غيروظيفهمندي تحقق امنيت نظارت كارايي زمان پاسخ ريشهيابي خلأ تأمين نيازمنديهاي غيروظيفهمندي در مهندسي كاربردهاي وب
استخراج الگوي تحقق كانسرنهاي غيروظيفهمندي ريشهيابي خلأ تأمين نيازمنديهاي غيروظيفهمندي در مهندسي كاربردهاي وب پراكندگي و در هم پيچيدگي كانسرنها Tangling & Scattering كانسرن متقاطع Crosscutting Concern نيازمنديهاي غيروظيفهمندي كانسرنهاي متقاطع در توسعه كاربردهاي وب ميباشند.
تأثير ناكارايي رويكرد شئگرايي بر نيازمنديهاي غيروظيفهمندي در توسعه كاربردهاي وب ريشهيابي خلأ تأمين نيازمنديهاي غيروظيفهمندي در مهندسي كاربردهاي وب توزيع مسئوليت پيادهسازي نيازمنديهاي غيروظيفهمندي ناكارايي در استفاده مجدد از پيادهسازي نيازمنديهاي وظيفهمندي و غيروظيفهمندي عدم بازنمايي نيازمنديهاي غيروظيفهمندي در معماري كاربرد و دشواري استدلال پيرامون آنها دشواري در آزمون نيازمنديهاي غيروظيفهمندي دشواري در نگهداري كاربرد با توجه به هزينه اصلاحات براي توسعهدهنده
راهحل پيش رو: جداسازي پيشرفته كانسرنها Aspect-Oriented Programming (AOP) ريشهيابي خلأ تأمين نيازمنديهاي غيروظيفهمندي در مهندسي كاربردهاي وب • نياز به يك نوع مكانيزم پيمانهبندي جديد • تكنيك جداسازي كانسرنها • تكنيك تركيب كانسرنها • راه حلهاي ارائه شده براي برطرف نمودن نقطه ضعف شئگرايي: • برنامهنويسي جنبهگرا • فيلترهاي تركيبي • جداسازي چندبعدي كانسرنها • برنامهنويسي قابل تطبيق
برنامهنويسي جنبهگرا ريشهيابي خلأ تأمين نيازمنديهاي غيروظيفهمندي در مهندسي كاربردهاي وب Aspect-Oriented Programming. Kiczales, Gregor, et al. Proceedings of the European Conference on Object-Oriented Programming (ECOOP), 1997. بهبود پيمانهبندي سيستم با تمركز بر پيادهسازي پيمانهاي كانسرنهاي متقاطع ميباشد. هر كانسرن متقاطع را در يك پيمانه جداگانه تمام منطق كاري كانسرنهاي متقاطع از ساز و كار اصلي برنامه مجزا ميشوند.
AspectJ ريشهيابي خلأ تأمين نيازمنديهاي غيروظيفهمندي در مهندسي كاربردهاي وب An Overview of AspectJ. Kiczales, Gregor, et al. Proceedings of the European Conference on Object-Oriented Programming (ECOOP), 2001. Join point Pointcut Advice Inter-type declaration (introduction) Aspect
پيادهسازي كانسرنهاي متقاطع در كاربردهاي جاوا ريشهيابي خلأ تأمين نيازمنديهاي غيروظيفهمندي در مهندسي كاربردهاي وب ميخواهيم اشياء Screen تغييرات اشياء Point را ملاحظه كنند. راهحل برنامهنويسي جنبهگرا: جنبه PointObserving
پيادهسازي كانسرنهاي متقاطع در كاربردهاي جاوا introduction pointcut aspect advice ريشهيابي خلأ تأمين نيازمنديهاي غيروظيفهمندي در مهندسي كاربردهاي وب
نيازمندي غيروظيفهمندي با قابليت جنبه شدن تزريق نيازمنديهاي غيروظيفهمندي در فرآيند توسعه كاربردهاي وب "يک نيازمندي غيروظيفهمندي با قابليت جنبه شدن، يک ويژگي کيفي است که پس از پالايش در چارچوب نيازمنديهاي غيروظيفهمندي زيرشاخههايي از نوع کانسرنهاي غيروظيفهمندي قابل عملياتي شدن و يا کانسرنهاي غيروظيفهمندي نظارتپذير داشته باشد.” امنيت كارايي
نيازمنديهاي غيروظيفهمندي با قابليت جنبه شدن تزريق نيازمنديهاي غيروظيفهمندي در فرآيند توسعه كاربردهاي وب
فايلهاي HTML فايلهاي XML توليد نمونه اوليه واسط كاربري توليد خودكار لايههاي فوقاني معماري طراحي متامدل واسط كاربري جمعآوري نيازمنديهاي هر زيرسيستم از طريق محك سيستمهاي موجود، دانش متخصصين دامنه و مصاحبه با مشتري تست سناريوي كانسرن وظيفهمندي پيادهسازي منطق وظيفهمندي در هر لايه تدوين سناريوي كانسرن وظيفهمندي هسته توليد خودكار لايههاي زيرين معماري طراحي متامدل دامنه تلاقي كانسرنهاي وظيفهمندي و غيروظيفهمندي نمودارهاي UML 2.0 فايلهاي نگاشت بر Hibernate (.hbm) تست يكپارچگي نمودارهاي گسترش يافته جنبهگراي UML 2.0 تست سناريوي كانسرن غيروظيفهمندي قابل عملياتي شدن تدوين سناريوي كانسرن غيروظيفهمندي قابل عملياتي شدن تعريف متامدل مؤلفه زيرساختي جنبهگرا استخراج نيازمنديهاي غيروظيفهمندي با قابليت جنبه شدن برنامهنويسي جنبهگرا تست سناريوي كانسرن غيروظيفهمندي نظارتپذير تدوين سناريوي كانسرن غيروظيفهمندي نظارتپذير تعريف متامدل مؤلفه نظارتگر جنبهگرا برنامهنويسي جنبهگرا نمودارهاي گسترش يافته جنبهگراي UML 2.0 بهبود فرآيند توسعه مورد مطالعاتي با تزريق جنبهگراي نيازمنديهاي غيروظيفهمندي
بررسي زبانهاي توصيف جنبهگراي معماري نرمافزار • مقايسه زبانهاي توصيف جنبهگراي نرمافزار (: قابل قبول، ~ : ضعيف، : فقدان) تزريق نيازمنديهاي غيروظيفهمندي در فرآيند توسعه كاربردهاي وب
تعريف متامدل جنبه براي مدلسازي كانسرنهاي غيروظيفهمندي با گسترش جنبهگراي UML 2.0 تزريق نيازمنديهاي غيروظيفهمندي در فرآيند توسعه كاربردهاي وب • <<NFR>> • <<ONFC>> • <<CNFC>> • <<Aspect>> • <<pointcut>> • <<advice>>
مدلسازي كانسرن Authorization به عنوان يك كانسرن غيروظيفهمندي با قابليت عملياتي شدن در مؤلفه جنبهگراي Security تزريق نيازمنديهاي غيروظيفهمندي در فرآيند توسعه كاربردهاي وب
نحوه تحقق advice1 در جنبه Authorization، توصيف شده در Collaboration نظير آن تزريق نيازمنديهاي غيروظيفهمندي در فرآيند توسعه كاربردهاي وب
مدلسازي كانسرن Response Time Monitoring به عنوان يك كانسرن غيروظيفهمندي نظارتپذير در مؤلفه جنبهگراي Performance تزريق نيازمنديهاي غيروظيفهمندي در فرآيند توسعه كاربردهاي وب
نحوه تحققadvice1 در جنبهResponse Time Monitoring توصيف شده درCollaboration نظير آن تزريق نيازمنديهاي غيروظيفهمندي در فرآيند توسعه كاربردهاي وب
بخشي از كد مورد كاربرد محاسبه حقوق در لايهModel Controller پس از اعمال فرآيند توسعه جنبهگراي پيشنهادي تزريق نيازمنديهاي غيروظيفهمندي در فرآيند توسعه كاربردهاي وب
پيمانهبندي كانسرن متقاطع Authorization در يك جنبه
پيمانهبندي كانسرن متقاطع Time MonitoringResponseدر يك جنبه
Architecture (Re)definition Review Guidelines Quality Criteria no Architecture Ok? yes Go! Implement Architecture ارزيابي راه حل پيشنهادي ارزيابي راهحل پيشنهادي
ارزيابي مبتني بر سناريو استفاده از رويكرد جنبهگرايي در مدلسازي و ارزيابي نيازمنديهاي غيروظيفهمندي در طراحي سيستمهاي مبتني بر وب • روش ارزيابي SAAM • توصيف معماريهاي كانديد • توسعه سناريوها • طبقهبندي و اولويتدهي سناريوها • ارزيابي سناريوها • بدست آوردن ارتباطات بين سناريوها • تهيه ارزيابي كلي
نميتوانم معماري خوبي بدست آورم، مشكل چيست؟ Refactor yes Go! Implement Architecture مشكل روش SAAM Indirect Scenario no Architecture Ok? ارزيابي راهحل پيشنهادي
روش ارزيابي ASAAM استفاده از رويكرد جنبهگرايي در مدلسازي و ارزيابي نيازمنديهاي غيروظيفهمندي در طراحي سيستمهاي مبتني بر وب • گسترش جنبهگراي SAAM • توسعه معماري كانديد • توسعه و اولويتدهي سناريوها • ارزيابي تك تك سناريوها و تشخيص جنبهها • سناريوهاي مستقيم، سناريوهاي غيرمستقيم، سناريوهاي جنبهگونه، جنبههاي معماري • ارزيابي تعامل سناريوها و طبقهبندي مؤلفهها • مؤلفه چسبناك، مؤلفه در هم پيچيده، مولفه مركب، مؤلفه بدتعريف • طراحي مجدد معماري • تكنيكهاي متداول (الگوهاي طراحي شئگرا، ...) • تكنيكهاي جنبهگرايي
ارزيابي معماري پايه و معماري پيشنهادي مورد مطالعاتي با استفاده از ASAAM ارزيابي راهحل پيشنهادي • ارزيابي قابليت نگهداشت • سناريوهاي نگهداشت اصلاحي • سناريوهاي نگهداشت تكميلي • سناريوهاي نگهداشت تطبيقي • سناريوهاي نگهداشت پيشگيرنده
توصيف معماري (معماري پايه) تحقق امنيت نظارت كارايي زمان پاسخ ارزيابي راهحل پيشنهادي
توصيف معماري (معماري پيشنهادي) ارزيابي راهحل پيشنهادي
توسعه سناريوها ارزيابي معماري پايه و معماري پيشنهادي مورد مطالعاتي با استفاده از ASAAM
ارزيابي سناريوها و تشخيص جنبهها در معماري پايه ارزيابي معماري پايه و معماري پيشنهادي مورد مطالعاتي با استفاده از ASAAM
ارزيابي سناريوها و تشخيص جنبهها در معماري پايه استفاده از رويكرد جنبهگرايي در مدلسازي و ارزيابي نيازمنديهاي غيروظيفهمندي در طراحي سيستمهاي مبتني بر وب