كارگاه آموزش معماري نرم‌افزار

Download Report

Transcript كارگاه آموزش معماري نرم‌افزار

‫كارگاه آموزش ي‬
‫معماري نرم‌افزار‬
‫‪www.esoa.ir‬‬
‫دكتر فريدون شمس‬
‫سيد شروين استادزاده‬
‫فهرست مطالب‬
‫پيچيدگي در نرم‌افزار‬
‫آشنايي با ‪OMG‬‬
‫معماري مدل‌رانه‬
‫مفاهيم و اصول بنيادين‬
‫توسعه مبتني بر ‪MDA‬‬
‫فرصت‌ها و تهديدها‬
‫پيچيدگي در نرم‌افزار‬
‫چگونه مي‌توان بر پيچيدگي حاكم بر نرم‌افزار غلبه‬
‫كرد؟‬
‫يك واقعيت‬
‫امروزه تمدن ما بر روي نرم‌افزار بنا شده است‪.‬‬
‫مشكل اول نرمافزار‪ :‬حل پيچيدگي‬
‫عوامل پيچيدگي در نرمافزار‬
‫پيچيدگی دامنه مساله‬
‫انعطاف‌پذيري نرم‌افزار و عدم استاندارد بودن آن‬
‫پيچيدگي فرآيند توسعه نرم‌افزار‬
‫پيچيدگي توصيف رفتار سيستم‌هاي گسسته‬
‫يك واقعيت‬
‫توسعه نرم‌افزار يك فرآيند پيچيده و سخت‬
‫بوده‪ ،‬هست‪ ،‬و خواهد بود‪.‬‬
‫يك واقعيت‬
‫اگر به كل تاريخ مهندس ي نرم‌افزار نگاه كنيم‬
‫درمي‌يابيم كه سير تكاملي اين تاريخ‬
:‫در يك واقعيت خالصه شده است‬
‫افزايش سطح تجريد‬
Languages:
Platforms:
Processes:
Architecture:
Tools:
Enablement:
Assembly -> Fortran/COBOL -> Simula -> C++ -> Java
Naked HW -> BIOS -> OS -> Middleware -> Domain-specific
Waterfall -> Spiral -> Iterative -> Agile
Procedural -> Object Oriented -> Service Oriented
Early tools -> CLE -> IDE -> XDE -> CDE
Individual -> Workgroup -> Organization
‫سطح تجريد‬
‫ما بايد سطح تجريد را افزايش دهيم‪ ،‬چون با افزايش سطح‬
‫تجريد مي‌توان ‪...‬‬
‫با سكوهاي مختلف كار كرد‪.‬‬
‫توسعه نرم‌افزار را ساده‌تر و كارآمدتر كرد‪.‬‬
‫به دنياي واقعي نزديك‌تر شد‪.‬‬
‫گام بعدي ‪...‬‬
‫گام بعدي در افزايش سطح تجريد چيست؟‬
‫‪OMG‬‬
‫)‪(Object Management Group‬‬
‫‪ OMG‬چيست و‬
‫چه نقش ي در توسعه نرم‌افزار دارد؟‬
‫ چيست؟‬OMG
Alcatel
Fujitsu
AT&T
Glaxo SmithKline LION Bioscience Pfizer
BEA
Hewlett Packard
Metanology
Rockwell
Borland
Hitachi
MITRE
SAP
Boeing
Hyperion
MSC.Software
SAS Institute
CA
IBM
NASA
Sprint
Codagen
IONA
NEC
Sun
DaimlerChrysler io Software
Nokia
Telefonica
Ericsson
Kabira
NTT DoCoMo
Unisys
France Telecom
Kennedy Carter
OASIS
Vitria
John Deere
Oracle
OMG ‫موفقيتهاي بزرگ‬
Common Object Request Broker Architecture (CORBA)
Unified Modeling Language (UML)
Common Warehouse Metamodel (CWM)
Meta-Object Facility (MOF)
XML Metadata Interchange (XMI)
‫ناهمگونيهاي صنعت نرمافزار‬
‫زبان‌هاي برنامه‌سازي‬
‫‪Java ، C# ، C++ ، C‬‬
‫‪... ، COBOL ، Delphi ، VB‬‬
‫سيستم‌هاي عامل‬
‫‪( Windows‬نگارشهاي مختلف) ‪، MacOS ، VMS ، Linux ، Unix ،‬‬
‫‪... ، PalmOS‬‬
‫سيستم‌هاي تعبيه‌شده‬
‫پروتكل‌هاي شبكه‌اي و ارتباطي‬
‫‪USB ، Firewire ، SS7 ، IP ، ATM ، Ethernet‬‬
‫‪HomeRF ، 802.11b ، Bluetooth‬‬
‫ناهمگونيهاي صنعت نرمافزار‬
‫(ادامه)‬
‫ناهمگوني باعث به تاخير افتادن توسعه سيستم‌هاي سازماني‬
‫توزيع‌شده مي‌شود‪.‬‬
‫هيچ توافقي بر روي ‪...‬‬
‫سخت افزار وجود ندارد‪.‬‬
‫زبان‌هاي برنامه‌سازي وجود ندارد‪.‬‬
‫سيستم‌هاي عامل وجود ندارد‪.‬‬
‫پروتكل‌هاي شبكه‌اي و ارتباطي وجود ندارد‪.‬‬
‫مي‌توان بر روي يك سطح باالتر تجريد توافق كرد‪.‬‬
‫ميان‌افزارها‬
‫ناهمگونيهاي صنعت نرمافزار‬
‫(ادامه)‬
‫امروزه ميان‌افزارها نيز بسيار افزايش پيدا كردند ‪...‬‬
‫‪CORBA‬‬
‫‪COM / DCOM / MTS‬‬
‫‪Java / EJB‬‬
‫‪XML / SOAP‬‬
‫‪C# / .Net‬‬
‫نمي‌توان هيچ يك از آنها را برتر از ديگران در نظر گرفت‪.‬‬
‫توافقي بر روي ميان‌افزار نيز وجود ندارد‪ .‬مشكل همچنان باقي‬
‫است‪.‬‬
‫ناهمگونيهاي صنعت نرمافزار‬
‫(ادامه)‬
‫بايد‌توافقي‌بر‌روي‌واسطها‌و‌تبادالت بين‌‬
‫آنها‌وجود‌داشته‌باشد‪.‬‬
‫راهحل ‪OMG‬‬
‫معماري مدل رانه‬
Model Driven Architecure (MDA)
‫معماري مدلرانه‬
‫معماري مدل‌رانه محاسبات هزاره سوم است‪.‬‬
‫معماري مدل‌رانه سير تكاملي تجزيه و تحليل شيءگرا‪ ،‬و ‪ UML‬است‪.‬‬
‫معماري مدل‌رانه يك روش ساده و فراگير است كه استانداردهاي مورد‬
‫نياز جهت ساخت‪ ،‬يكپارچه سازي‪ ،‬و نگهداري دارايي‌هاي نرم‌افزاري را‬
‫تعيين مي‌كند‪.‬‬
‫معماري مدل‌رانه سعي مي‌كند از زبان‌هاي مدل‌سازي نه تنها به عنوان‬
‫زبان طراحي بلكه به عنوان يك زبان برنامه‌سازي نيز استفاده كند‪.‬‬
‫افزايش سطح تجريد برنامه‌سازي‬
‫بهبود قابليت توليد‪ ،‬كيفيت‪ ،‬و ماندگاري محصوالت نرم‌افزاري‬
‫معماري مدلرانه‬
‫(ادامه)‬
‫معماري مدل‌رانه يك روش نوين براي تعريف و ساخت‬
‫سيستم‌هاي نرم‌افزاري است كه در آن ‪...‬‬
‫مدل‌سازي بر اساس ‪ ، MOF ، UML‬و ‪ XMI‬انجام مي‌شود‪.‬‬
‫از چرخه حيات كامل نرم‌افزار (تحليل‪ ،‬طراحي‪ ،‬پياده‌سازي‪،‬‬
‫استقرار‪ ،‬نگهداري‪ ،‬تكامل‪ ،‬و يكپارچه‌سازي) پشتيباني مي‌شود‪.‬‬
‫بر روي تعامل‌پذيري و قابليت حمل باال تاكيد مي‌شود‪.‬‬
‫هزينه ابتدايي آغاز پروژه پايين است‪.‬‬
‫معماري مدلرانه‬
‫(ادامه)‬
‫روشي را براي مشخصه سيستمهاي نرم‌افزاري معرفي مي‌كند‬
‫كه در آن‪ ،‬وظايف سيستم از مشخصه پياده‌سازي آن وظايف بر‬
‫روي يك سكوي خاص فن‌آوري‪ ،‬جدا شده است‪.‬‬
‫اين كار با تعريف سطوح مختلفي از مدل‌ها انجام مي‌شود‪...‬‬
‫‪ ...‬و همزمان سازگاري و هماهنگي بين تمام سطوح مدل‌ها حفظ‬
‫مي‌شود‪.‬‬
‫مفاهيم و اصول بنيادين‬
‫سيستم‬
‫مفاهيم ‪ MDA‬در قالب سيستم‌ها بيان مي‌شود‪.‬‬
‫يك سيستم مي‌تواند هر موجوديتي باشد‪:‬‬
‫يك برنامه‬
‫يك سيستم كامپيوتري‬
‫يك تركيب از قسمت‌هاي مختلف سيستم‌ها‬
‫سيستمي از سيستم‌ها‬
‫مدل‬
‫مدل تجريدي از يك يا چند بخش از سيستم است‪.‬‬
‫مدل به ما كمك مي‌كند بر روي قسمت‌هاي اساسي يك مساله متمركز‬
‫شويم تا بهتر آن را درك كنيم‪.‬‬
‫مدل به ما كمك مي‌كند در مسير رسيدن به يك راه‌حل موثر و كارآمد‬
‫حركت كنيم‪.‬‬
‫الا به شكل تركيبي از متن و تصوير بيان مي‌شود‪.‬‬
‫مدل معمو ‌‬
‫سنت رايج اين است كه مدل‌ها يك پياده‌سازي را ايجاد نمي‌كنند‪.‬‬
‫توسعه مدلرانه )‪(MDD‬‬
‫پارادايمي كه در آن از روي مدل‪ ،‬يك خانه ساخته مي‌شود‪.‬‬
‫روشي براي توسعه سيستم كه در آن مدل‌ها وظيفه هدايت و‬
‫راهبري جريان درك‪ ،‬تحليل‪ ،‬طراحي‪ ،‬ساخت‪ ،‬استقرار‪،‬‬
‫بهره‌برداري‪ ،‬نگهداشت‪ ،‬و تكامل را بر عهده دارند‪.‬‬
‫اين روش مي‌تواند بسياري از محصوالت توسعه نرم‌افزار را‬
‫مكانيزه و خودكار توليد كند‪.‬‬
‫معماري مدلرانه‬
‫استانداردي براي توسعه مدل‌رانه‬
‫متعلق به ‪OMG‬‬
‫بر روي استاندارد ‪ MOF‬بنا شده‬
‫ديدگاه )‪(viewpoint‬‬
‫يك روش تكنيكي براي تجريد است‪.‬‬
‫مجموعه‌اي از مفاهيم معماري و قوانين سازماندهي را به‬
‫خدمت مي‌گيرد تا بر روي مفاهيمي خاصي از سيستم تمركز‬
‫كند‪.‬‬
‫در اين جا تجريد يعني فرآيند حذف جزييات انتخابي و ايجاد يك‬
‫مدل ساده شده‬
‫سه ديدگاه از سيستم در معماري مدل‌رانه وجود دارد‪:‬‬
‫ديدگاه مستقل از محاسبه‬
‫ديدگاه مستقل از سكو‬
‫ديدگاه خاص سكو‬
‫ديدگاه مستقل از محاسبه‬
‫اين ديدگاه بر روي محيط سيستم و نيازمنديهاي آن تاكيد دارد‪.‬‬
‫در اين ديدگاه جزييات ساختارها و فرآيندهاي سيستم يا پنهان‬
‫هستند و يا هنوز مشخص نشده‌اند‪.‬‬
‫ديدگاه مستقل از سكو‬
‫اين ديدگاه بر روي عملكرد يك سيستم تاكيد مي‌كند‪.‬‬
‫در آن جزييات الزم براي پياده ‌سازي روي يك سكو خاص‬
‫مخفي شده است‪.‬‬
‫در واقع اين ديدگاه بخشي از مشخصه كامل سيستم را نشان‬
‫مي‌دهد كه از يك سكو به سكو ديگر بدون تغيير باقي مي‌ماند‪.‬‬
‫ديدگاه خاص سكو‬
‫اين ديدگاه‪ ،‬ديدگاه مستقل از سكو را به همراه جزييات‬
‫پياده‌سازي بر روي يك سكو خاص نشان مي‌دهد‪.‬‬
‫ديد )‪(View‬‬
‫يك ديد (يا يك مدل ديدگاه)‪ ،‬نمايشي از يك سيستم بر پايه زاويه‬
‫يك ديدگاه خاص است‪.‬‬
‫سكو )‪(Platform‬‬
‫مجموعه‌اي از فن‌آوري‌ها و زيرسيستم‌ها است‪.‬‬
‫هر سكو يك مجموعه همگن از وظايف است كه از طريق‬
‫تعدادي واسط و الگوهاي خاص كاربردي مي‌توان آنها را به‬
‫خدمت گرفت‪.‬‬
‫برنامه كاربردي )‪(Application‬‬
‫به يك وظيفه‌مندي در حال توسعه اشاره مي‌كند‪.‬‬
‫هر سيستم به شكل يك يا چند برنامه كاربردي بر روي يك يا‬
‫چند سكو توصيف مي‌شود‪.‬‬
‫تغيير شكل )‪(Transformation‬‬
‫به فرآيند تبديل يك مدل به مدل ديگر گفته مي‌شود‪.‬‬
‫مدل مبدا و مدل مقصد بايد مربوط به يك سيستم باشند‪.‬‬
‫هم مي‌تواند بصورت دستي باشد و هم بصورت خودكار‬
‫سرويسهاي فراگير‬
‫)‪(Pervasive Services‬‬
‫سرويس‌هايي هستند كه در يك سطح وسيعي از سكوها در‬
‫دسترس هستند‪.‬‬
‫پياده سازي‬
‫يك پياده سازي يك مشخصه است كه در آن تمام اطالعات‬
‫مورد نياز براي ساخت يك سيستم و عملياتي كردن آن را در‬
‫خود جاي داده است‪.‬‬
‫انواع مدلها‬
‫مدل‌هاي مستقل از محاسبه )‪(CIM‬‬
‫مدل‌هاي مستقل از سكو )‪(PIM‬‬
‫مدل‌هاي خاص سكو )‪(PSM‬‬
‫مدل‌هاي خاص پياده‌سازي )‪(PSI‬‬
‫مدل سكو )‪(PM‬‬
‫مدل مستقل از محاسبه )‪(CIM‬‬
‫يك مدل مستقل از محاسبه ديدي از سيستم بر پايه ديدگاه مستقل‬
‫از محاسبه است‪.‬‬
‫بر روي نيازمنديهاي سيستم تاكيد دارد‪.‬‬
‫جزييات ساختار سيستم‌ها را نشان نمي‌دهد‪.‬‬
‫مدل مستقل از محاسبه را گاهي مدل دامنه نيز مي‌نامند‪.‬‬
‫نقش مهمي در ايجاد پلي بين خبرگان دامنه مساله و‬
‫نيازمنديهاي آنها از يك طرف و متخصصان طراحي و‬
‫پياده‌سازي از طرف ديگر دارد‪.‬‬
‫مدل مستقل از سكو )‪(PIM‬‬
‫يك مدل مستقل از سكو ديدي از سيستم بر پايه ديدگاه مستقل از سكو‬
‫است‪.‬‬
‫بر روي عملكرد يك سيستم تاكيد مي‌كند‪.‬‬
‫جزييات الزم براي پياده‌سازي روي يك سكو خاص مخفي شده است‪.‬‬
‫سيستم از منظر چگونگي پشتيباني از كسب‌وكار مدل مي‌شود‪.‬‬
‫مستقل از فن‌آوريهاي پياده‌سازي است‪.‬‬
‫يك مدل مستقل از سكو درجه خاصي از استقالل را ارايه مي‌كند‪.‬‬
‫يكي از متداول‌ترين روشها براي ايجاد اين مدل استفاده از يك ماشين‬
‫مجازي است‪.‬‬
‫ماشين مجازي به شكل يك مجموعه از بخش‌ها و سرويس‌هاي مستقل از يك سكو‬
‫خاص تعريف مي‌شود‪.‬‬
‫مدل خاص سكو )‪(PSM‬‬
‫يك مدل خاص سكو ديدي از سيستم بر پايه ديدگاه خاص سكو‬
‫است‪.‬‬
‫مدل مستقل از سكو را گسترش مي‌دهد‪.‬‬
‫جزييات الزم براي پياده ‌سازي روي يك سكو خاص را نشان‬
‫مي‌دهد‪.‬‬
‫يك ‪ PSM‬مشخصه‌هاي داخل ‪ PIM‬را با جزييات مربوط به‬
‫چگونگي استفاده سيستم بر روي يك سكو خاص تركيب مي‌كند‪.‬‬
‫امكان داشتن چندين مدل خاص سكو براي يك مدل مستقل از‬
‫سكو وجود دارد‪.‬‬
‫مدل خاص پيادهسازي )‪(PSI‬‬
‫يك مدل خاص سكو را پياده‌سازي مي‌كند‪.‬‬
‫كد اجرايي است كه بر روي سخت‌افزار نهايي اجرا مي‌شود‪.‬‬
‫از روي ‪ Object Model‬توليد مي‌شود‪.‬‬
‫مدل سكو )‪(PM‬‬
‫مدل سكو مجموعه مفاهيم تكنيكي‪ ،‬بخشهاي مختلف يك سكو‪ ،‬و‬
‫سرويسهاي ارائه شده توسط آن سكو را نشان مي‌دهد‪.‬‬
‫توسعه مبتني بر ‪MDA‬‬
‫معماري مدل‌رانه چگونه كار مي‌كند؟‬
‫توسعه ‪ MDA‬در يك نگاه‬
‫مدلهاي مستقل از‬
‫محاسبه )‪(CIMs‬‬
‫مدلهاي مستقل از‬
‫سكو )‪(PIMs‬‬
‫مدلهاي خاص سكو‬
‫)‪(PSMs‬‬
‫كد اجرايي‬
‫گام اول‪ :‬تهيه مدلهاي ‪CIM‬‬
‫نيازمنديهاي سيستم در مدل‌هاي مستقل از محاسبه مدل مي‌شود‪.‬‬
‫اين كار مي‌تواند توسط خبرگان دامنه مساله انجام شود‪.‬‬
‫گام دوم‪ :‬ايجاد مدلهاي ‪PIM‬‬
‫مدل‌هاي ‪ PIM‬با توجه به مدل‌هاي ‪ CIM‬ايجاد مي‌شوند‪.‬‬
‫مدل‌هاي ‪ PIM‬مي‌توانند از سرويس‌هاي فراگير نيز استفاده‬
‫كنند‪.‬‬
‫‪Pervasive‬‬
‫‪Services‬‬
‫‪Model‬‬
‫‪Domain‬‬
‫‪Facilities‬‬
‫‪Model‬‬
‫‪Calls‬‬
‫‪Calls‬‬
‫‪PIM‬‬
‫گام سوم‪ :‬تهيه مدل سكو‬
‫معمار يك يا چند سكو را براي پياده‌سازي سيستم برمي‌گزيند‪.‬‬
‫اين كار با توجه به صفات كيفيتي و مصالحه بين آنها انجام‬
‫مي‌شود‪.‬‬
‫گام چهارم‪ :‬تهيه مدلهاي ‪ PIM‬نشانهگذاري شده‬
‫براي تبديل مدل‌هاي ‪ PIM‬به مدل‌هاي‬
‫‪ PSM‬بايد از نگاشت استفاده كنيم‪.‬‬
‫يك نگاشت مشخصه‌هايي را براي تبديل‬
‫فراهم مي‌كند‪.‬‬
‫در فرآيند نگاشت مدل سكو ماهيت نگاشت‬
‫را مشخص مي‌كند‪.‬‬
‫براي انجام نگاشت ابتدا بايد مدل‌هاي ‪PIM‬‬
‫نشانه گذاري شوند‪.‬‬
‫يك نشانه تعيين مي‌كند يك موجوديت در‬
‫‪ PIM‬چگونه بايد به موجوديتي در ‪PSM‬‬
‫تبديل شود‪.‬‬
‫‪PIM‬‬
‫‪Marked‬‬
‫‪PIM‬‬
‫‪Transformation‬‬
‫‪PSM‬‬
‫گام پنجم‪ :‬تهيه مدلهاي ‪PSM‬‬
‫گام بعدي اين است كه ‪ PIM‬نشانه‌گذاري شده به يك ‪ PSM‬تبديل شود‪.‬‬
‫مي‌تواند بصورت دستي‪ ،‬نيمه‌خودكار‪ ،‬يا تمام خودكار انجام شود‪.‬‬
‫ورودي به اين گام ‪ PIM‬نشانه‌گذاري شده و يك نگاشت است‪.‬‬
‫خروجي نيز ‪ PSM‬است‪.‬‬
‫‪PIM‬‬
‫‪Maps to‬‬
‫‪Other‬‬
‫‪Model‬‬
‫…‬
‫‪Maps to‬‬
‫‪Java/EJB‬‬
‫‪Model‬‬
‫‪Maps to‬‬
‫‪CORBA‬‬
‫‪Model‬‬
‫گام ششم‪ :‬تهيه مدلهاي ‪ PSM‬نشانهگذاري شده‬
‫بصورت مشابه براي تبديل مدل‌هاي‬
‫‪ PSM‬به ‪ PSI‬ابتدا بايد ‪ PSM‬نشانه‬
‫گذاري شود‪.‬‬
‫‪PIM‬‬
‫‪Marked‬‬
‫‪PIM‬‬
‫‪Transformation‬‬
‫‪PSM‬‬
‫‪Marked‬‬
‫‪PSM‬‬
‫‪Specific‬‬
‫‪Implementation‬‬
‫ توليد كد‬:‫گام هفتم‬
.‫در آخرين گام كدهاي اجرايي توليد مي‌شود‬
PIM.‫امكان انجام مهندسي معكوس نيز وجود دارد‬
Maps to
CORBA
Model
Maps to
CORBA
Maps to
Maps to
Java/EJB
Model
…
Maps to
Java/EJB
Other
Model
Maps to
…
Other
‫استانداردها و فرامدلها‬
‫استانداردها و فرامدلها‬
‫نگاشت‬
‫‪ PIM‬به ‪PIM‬‬
‫نگاشت‬
‫‪ PSM‬به ‪PSM‬‬
‫‪UML MOF CWM‬‬
‫‪Time‬‬
‫نگاشت‬
‫‪ PIM‬به ‪PSM‬‬
‫(خاص يك سكو)‬
‫استانداردها و فرامدلها‬
MOF
references
described
by
Transformation
model
M1 model
Transformation
rules
M2 model
Instance
M1
Transformation
correspondences
Instance
M2
MDA ‫چارچوب مفهومي‬
Meta language
Is written
in
Is written
in
Transformation
definition
Language
Is
written in
Source
Model
Language
Is used
by
Transformation
tool
Is
written in
Target
Model
‫فرصت‌ها و تهديدها‬
‫مزاياي معماري مدلرانه‬
‫كد نويسي دستي رفتار يك مدل حذف مي‌شود‪.‬‬
‫تمركز بر روي مدل‌ها باعث طراحي بهتر و دقيقتر مي‌شود‪.‬‬
‫انقالبي در افزايش سطح تجريد‬
‫جداسازي قواعد كاري از محيط پياده‌سازي‬
‫تهديدات فراروي معماري مدلرانه‬
‫پشتيباني كامل از يكپارچگي مدل‌ها‬
‫مديريت گسترش روزافزون فن‌آوريهاي مختلف‬
‫افزايش بلوغ ابزارهاي ‪MDA‬‬
‫تبديل مدل‌ها‬
‫هماهنگي بين نگاشت مدل‌ها‬
‫ابزارهايي براي آزمون مدل‌رانه‬
‫كمپايلر مدل‬
... ‫اطالعات بيشتر‬
http://www.omg.org/
http://www.omg.org/mda/