|
تحلیل سیستم شي گرا با استفاده از UML
|
|
KeyType آموزش تايپ فارسي و انگليسي تنها بعد از 6 ساعت با چشماني بسته |
SysAdviser گروه مشاوران فنآوري اطلاعات مشاوره، آموزش ، تحليل سيستم |
سمينار آموزشي BPM برگزاري دوره هاي آموزشي BPM BPM , BPMN , BPMS , BPR |
اشیاء برای اینکه کاری انجام بدهند نیاز دارند با هم کار کنند پس آنها نیاز به روشی دارند که با هم ارتباط برقرار کنند. وقتی که یک مشتری بلیط های را سفارش می دهد، مشتری باید یک سفارش ایجاد کند و بلیط مورد نظرش را به آن سفارش اضافه کند. اشیاء نرم افزاری که نماینده مشتری، سفارش، بلیط هستند نیاز دارند تا رابطه بین اشیاء دنیا واقعی را عینا تکرار کنند.
| Decouple an abstraction from its implementation so that the two can vary independently. |
یا Business process Management Notation ابزار و تواناساز اصلی در تکنولوژی مدیریت فرآیندهای کسب و کار (BPM) می باشد. در واقع می توان گفت مزیت اصلی استفاده از تکنولوژی BPM وجود زبان استانداردی به نام BPMN می باشد برای مدلسازی فرآیندها. ویژگی اصلی BPMN قابلیت تبدیل آن به زبانهایی است که قابل درک توسط سیستمهای نرم افزاری می باشد.
این آموزش تنها قابل استفاده توسط اعضاء گروه مدیریت فرآیند کسب و کار می باشد. جهت استفاده از این فایل شما احتیاج به نرم افزار Microsoft PowerPoint Viewer خواهید داشت.
|
Design patterns are recurring solutions to software design problems you find again and again in real-world application development. Patterns are about design and interaction of objects, as well as providing a communication platform concerning elegant, reusable solutions to commonly encountered programming challenges. |
The Gang of Four (GoF) patterns are generally considered the foundation for all other patterns. They are categorized in three groups: Creational, Structural, and Behavioral. Here you will find information on these important patterns.
با توجه به استقبال جالبي كه از فايلهاي Case Study موجود روي وبلاگ بعمل آمد، قصد دارم مثالها و كتابهاي ديگري رو بصورت فايل در اختيار شما دوستان عزيز قرار بدم.
كتاب UML Applied يكي از بهترين كتابها در زمينه آموزش UML بصورت كاربردي است . شما در اين كتاب با مفاهيم RUP يا Rational Unified Process آشنا شده و ياد مي گيريد در فازهاي مختلف ايجاد يك نرم افزار چگونه از انواع مختلف نمودارهاي UML استفاده مي شود.
BPMN یا Business Process Management Notation اصلی ترین ابزار و استانداردی است که در تکنولوژی BPM در اختیار شما گذاشته شده است. لازم بذکر است که طبق اعلاميه رسمي OMG ، استاندارد BPMN بعنوان يکي از نمودارهاي اصلي در نگارش بعدي UML معرفي خواهد شد.
جهت آشنایی مقدماتی با مفاهیم UML حتما به اینجا سر بزنید. در این سایت آموزشی , می توانید با انواع نمودارها و مفاهیم UML همراه با مثال آشنا شوید. یکی از مشخصه های بارز این سایت بحث کاملی است که در مورد تفاوتهای UML1 و UML2 ارائه کرده است. همچنین مقاله ای بسیار جالب در مورد مدلسازی کسب و کار(Business Modeling) در اینجا مطالعه کنید.
آموزش Rational Rose همراه با مثال. شما در این کیت آموزشی باید با مفاهیم UML قبلا آشنا باشید. این کیت توسط خود شرکت Rational تهیه شده است.
جهت دسترسي به اين مقاله اينجا را كليك كنيد.
UML در جريان شكل گيري روشهاي تحليل سيستم و طراحي شيء گرا بوجود آمده است. تمامي اين روشها عبارت اند از تركيبي از يك زبان مدلسازي گرافيكي و فرآيندي كه مراحل توسعه نرم افزار را توصيف مي كند. بعد از بوجود آمدن UML شركتهاي ايجاد كننده آن دريافتند كه اگر چه مي توان بر سر زبان مدلسازي گرافيكي بوجود آمده به توافق برسند ولي نمي توانند يك فرآيند مشترك و جامع جهت فرآيند پياده سازي نرم افزار ايجاد كنند. در نتيجه UML به يك استاندارد تبديل شد در حاليكه هيچگونه استانداردي براي توصيف فرآيند پياده سازي نرم افزار شكل نگرفت.
موضوع اين وبلاگ UML مي باشد و من هم قصد داشتم بيشتر درمورد UML بنويسم. اما به نظر مي رسد كه تكنيكهاي مدلسازي بدون توصيف فرآيندي كه از اين تكنيكها استفاده خواهد كرد معنايي ندارد. روشي كه شما از UML استفاده خواهيد كرد به مقدار زيادي به فرآيندي بستگي دارد كه شما جهت پياده سازي نرم افزار خود استفاده مي كنيد.
بنابراين بهتر است ابتدا به فرآيندها و روشهاي پياده سازي نرم افزار بپردازيم. ولي بياد داشته باشيد كه ما در اين وبلاگ به جزئيات روشهاي پياده سازي نرم افزار نخواهيم پرداخت. سعي ما براين است در مورد هر كدام از روشهاي مطرح شده يك ديد كلي را مطرح و منابع كافي جهت مطالعات بيشتر را معرفي كنيم.
اغلب اوقات UML ، در رابطه با RUP يا Rational Unified Process مطرح مي شود. RUP در واقع يك فرآيند يا به عبارت ديگر يك چارچوب فرآيند توسعه نرم افزار مي باشد كه از UML استفاده مي كند. ولي بياد داشته باشيد كه مي توان UML را در روشهاي مختلف توسعه نرم افزار استفاده كرد و RUP تنها يكي از اين روشها مي باشد.
شما می توانید نحوه گروهبندی نمودارهای UML را در اين شکل مشاهده کنید!
UML2 داراي 13 نمودار رسمي مي باشد. در جدول زير مي توانيد انواع اين نمودارها را همراه با نسخه اي از UML كه ارائه شده اند را ببينيد. علي رقم اينكه هر كدام از اين نمودارها بصورت مجزا قواعد و نمادهاي مخصوص به خود را دارند ولي در اصل نمودارهاي UML قابليت انعطاف زيادي داشته و مي توان از انواع نمادها و نمودارها در نمودارهاي ديگر استفاده كرد. استاندارد UML بيان مي كندكه از عناصر مخصوص به يك نمودار تنها مي توان در آن نوع نمودار خاص استفاده كرد ولي اين يك قانون كلي نيست.
|
نمودار |
هدف نمودار |
نسخه |
|
Activity |
نمايش نحوه رفتار و رويه اجراي يك كار |
UML 1 |
|
Class |
نمايش كلاس ، مشخصات كلاس و روابط بين كلاسها |
UML 1 |
|
Communication |
تراكنشهاي بين آبجكتها را نمايش مي دهد و تأكيد آن بر ارتباط بين اشياء مي باشد |
UML 1 |
|
Component |
ساختار و نحوه ارتباط بين مؤلفه ها |
UML 1 |
|
Composite structure |
تجزيه ساختاري يك كلاس در حال اجرا |
New to UML 2 |
|
Deployment |
نحوه استقرار فيزيكي سيستم |
UML 1 |
|
Interaction overview |
تركيب نمودار فعاليت و نمودار توالي |
New to UML 2 |
|
Object |
مثالي براي نحوه پيكربندي نمونه ها |
Unofficially in UML 1 |
|
Package |
ساختار سلسله مراتبي نحوه كامپايل نرم افزار |
Unofficially in UML 1 |
|
Sequence |
تعامل بين اشياء ، تأكيد اين نمودار بر توالي انجام كارها است |
In UML 1 |
|
State machine |
چگونه رويدادها يك شيء را در طول دوره عمرش تغيير مي دهند |
In UML 1 |
|
Timing |
تعامل بين اشياء ، تأكيد اين نمودار بر زمان مي باشد |
New to UML 2 |
|
Use case |
نمايش نحوه تعامل كاربران با سيستم |
In UML 1 |
در واقع UML داراي مجموعه اي از نمودارها مي باشد و استانداردي را تهيه نموده است كه تحليل گر را قادر مي سازد تا طرحي را ايجاد كند كه قابل درك براي مشتري ، برنامه نويس و همه افراد درگير فرآيند توسعه سيستم باشد. هر كدام از نمودارهاي UML در زمان خود و براي شخص مورد نظر خود بيان كننده يك ديد از سيستم مي باشند.
اين نمودارها از كتاب زير اقتباس شده اند :
UML Distilled: A Brief Guide to the Standard Object Modeling Language, Third Edition
Publisher:Addison Wesley
Pub Date: September 15, 2003
بعضي اصطلاحات مورد استفاده و معادل لاتين آنها :
نمودار كلاس (class diagram)
نمودار شيء
نمودار مورد كاربرد (use case diagram)
نمودار حالت (state diagram)
نمودار توالي (sequence diagram)
نمودار فعاليت (activity diagram)
نمودار همكاري (collaboration diagram)
نمودار جزء (component diagram)
نمودار استقرار (deployment diagram)
بسته ها (packages)
كليشه ها (stereotypes)
يادداشتها (notes)
پس از آشنايي با مفاهيم شيء گرايي، در اينجا زبان مدلسازي UML معرفي و خواهيم ديد چگونه اين زبان مفاهيم شيء گرايي را پشتيباني مي كند.
جهت آشنايي با تاريخچه پيدايش uml اينجا را كليك كنيد.
UML شامل تعدادي عنصر گرافيكي است كه از تركيب آنها نمودرارهاي UML شكل مي گيرند . هدف استفاده از نمودارهاي مختلف در UML ، ارائه ديدگاههاي گوناگون از سيستم است. همانطور كه مهندسين عمران جهت ساختن يك ساختمان پلانهاي مختلفي از ساختمان تهيه مي كنند ، ما با استفاده از نمودارهاي UML نماهاي مختلفي از نرم افزار مورد نظر را تهيه مي كنيم.
نكته اي كه بايد حتما به آن توجه كنيد اين است كه : مدل UML آنچه كه يك سيستم بايد انجام دهد را توضيح مي دهد، ولي چيزي درباره نحوه پياده سازي سيستم نمي گويد.
توجه : با توجه به رشد نرم افزارهاي پشتيباني كننده UML امروزه با استفاده از نرم افزارهايي مانند Visio ، Enterprise Architecture و rational rose شما مي توانيد بعد از كشيدن نمودارهاي UML مستقيما نمودارهاي خود را به بانك اطلاعاتي و كد تبديل كنيد (البته اين نرم افزارها ساختار كد شما را برايتان توليد مي كنند!). اين نرم افزارها همچنين كد برنامه شما را گرفته و نمودارهاي UML برنامه را توليد مي كنند.
در يك سيستم اشياء مختلف از طريق ارسال پيام با يكديگر كار مي كنند. فكر مي كنم يك تلويزيون و يك دستگاه كنترل از راه دور مثالي خوبي براي بيان اين مفهوم باشد. در واقع دستگاه كنترل پيامي را به دستگاه تلويزيون مي فرستد مبني بر اينكه "خودت را روشن كن" . شيء تلوزيون اين پيام را دريفات مي كند و خودش مي داند كه چگونه بايد روشن شود.
تناظر نشان مي دهد كه اشياء و يا كلاسها در بعضي حالات با هم ارتباط دارند. تناظر يك ارتباط ساختاري بين دو شيء است.
به طور مثال "روشن كردن" يك ارتباط بين شما و تلزيزيون است ،اين تناظر يك طرفه است (هميشه شما تلويزيون را روشن مي كنيد) . ولي بعضي تناظرها دوطرفه هستند ، مانند تناظر "ازدواج كردن با".
در ضمن فراموش نكنيد كه امكان دارد دو شيء تناظرهاي مختلفي با هم داشته باشند! حتما خودتان يك مثال براي اين مورد پيدا كنيد.
يكي از تناظرهاي مهم كه در تحليل سيستم وجود دارد تناظر چندتايي يا Multiplicity مي باشد : در واقع چند تايي تعداد اشياي مرتبط از يك كلاس را با اشياء كلاس ديگر بيان مي كند. مثلا در يك دانشگاه يك درس تنها توسط يك استاد تدريس مي شود(تناظر يك به يك) و يا يك درس توسط چند استاد تدريس مي شود (يك تناظر يك به چند).
لازم به ذكر است كه نمودارها قديمي Database Diagram نيز از تناظر يا رابطه بين بانكها پشتيباني مي كردند. ولي نمودارهاي كلاس كه يكي از نمودارهاي اصلي بحث شيء گرايي مي باشد ، علاوه بر امكانات نمودارهاي قديمي ERD امكانات گسترده تري را در تمامي زمينه ها به تحليگر مي دهد.
تجمع ، تركيب ، تناظر يك به چند ، تناظر دو به يك و .... از جمله تناظرهايي هستند كه در بحث شيء گرايي وجود دارند.
مفهوم پنهان سازي يكي از مفاهيم اصلي و يكي از مزيتهاي برجسته روشهاي تحليل سيستم شيء گرا مي باشد.
عمل پنهان سازي به اين معني است كه هر شيء به طور مستقل داراي داده ها و فرآيندهاي مورد نياز خود است و بخشي از اين داده ها و فرآيندها ممكن است از ديد ساير اشياء مخفي بماند. در نتيجه شيء ماهيتي تقريبا مستقل از اصل و محيط اطرفا خود پيدا مي كند. در نتيجه پنهان سازي اين امكان را مي دهد كه اگر يكي از اشياء درست كار نكند و مهندس نرم افزار مجبور به تغيير اين شيء است ، نيازي به تغيير اشياء ديگر نيست.
درواقع يك شيء آنچه را كه انجام مي دهد از ساير اشياء و جهان واقعي دور نگه مي دارد. براي روشن شدن مطلب شما يك دستگاه تلويزيون را در نظر بگيريد ، عمليات پيچيده طراحي شده در داخل مدارها و لامپ دستگاه تلويزيون از ديد ما پنهان شده است !
در مثال بالا ، دستگاه تلويزيون مورد نظر ما احتياج به قسمتهايي دارد تا انسانها بتوانند از طريق آن دستوراتي از قبيل روشن شو ، خاموش شو و ... را به دستگاه بدهند ، به مجموعه عملياتي كه يك شيء در اختيار اشياء ديگر مي گذارد تا با آن رابطه برقرار كنند واسط مي گويند.
به طور كلي مي توان گفت كه چند شكلي به معناي يك چيز بودن و چند شكل داشتن است.
به طور مثال در مورد "بازكردن" ! شما مي توانيد در را باز كنيد ، پنجره را باز كنيد ، يا يك حساب در بانك باز كنيد. در مدل شيء گرا كلاسهاي متفاوتي خواهيم داشت كه همگي متدي به نام "بازكردن" دارند، ولي هر كلاس خودش مي داند كه بايد چگونه عمليات "بازكردن" را انجام دهد.
چند شكلي به مدل سازان اين امكان را مي دهد تا با مشتريان با زبان و اصطلاحات خودشان صحبت كنند.
تاقبل از دهه ۹۰ افرادي از قبيل بوچ ، يوردان ، رامبا ، كد ، جانسن ، ملو ، مارتين ، اورل ، هندرسون و ... ديدگاههاي مختلف و راه حلهاي مختلفي را در اين خصوص ارائه كردند. در اوايل دهه ۹۰ ميلادي و در ادامه اين مباحث به نقاط مشترك خوبي نزديك شدند. در اين دهه روشهاي بوچ و رامبا متداولتر شدند و در نهايت در سال ۱۹۹۵ ميلادي بوچ و رامبا شروع به تركيب روشهاي خود نمودند و UML يا زبان مدل سازي يكپارچه (Unfied Modeling Languag e ) ايجاد شد. بعد از مدتي جاكبسن نيز به اين گروه پيوست و روشهاي آنها در كليه محافل شناخته شده و مشهور شد.
بالاخره در سال 1997 روايت 1.1 زبان UML به گروه مديريت شيء براي استانداردسازي ارائه شد و مورد قبول اين گروه قرار گرفت. در نهايت UML2.0 تحت بررسي OMG آخرين نسخه زبان مدلسازي يكپارچه ميباشد. جهت كسب اطلاعات بيشتر به www.omg.org/uml مراجعه كنيد.
شیء گرایی (Object-Oriented) لغتی است که امروزه در صنعت نرم افزار باب شده است. شرکتها به سرعت حرکت می کنند تا خود را با این تکنولوژی سازگار کنند و آن را در برنامه های موجود خود وارد نمایند. در حقیقت بیشتر برنامه ها امروزه با شی گرایی توسعه می یابند.
متد شیء گرایی یک راه متفاوت مشاهده برنامه هاست. با متد شیء گرایی شما یک برنامه را به قطعات بسیار کوچک یا آبجکتهایی تقسیم میکنید که تا اندازه ای مستقل از یکدیگر می باشند. به آن مانند ساختمانی از بلوکها نگاه کنید.به محض اینکه تعدادی آبجکتهای اساسی را در دنیای کامپیوتر ساختید یا بدست آوردید میتوانید به سادگی آنها را کنار هم بگذارید تا برنامه های جدید را ایجاد نمائید.
یکی از امتیازات اساسی متد شیء گرایی این است که می توانید یکبار اجزاء را ساخته و بارها و بارها استفاده کنید. یک بلاک ساختمان را می توانید در یک خانه یا یک قصر یا یک سفینه فضایی دوباره استفاده کنید. همچنین می توانید از یک قطعه طرح یا کد شیء گرایی در یک سیستم حاسبداری - یک سیستم بازرگانی یا یک سیستم پردازش سفارش استفاده مجدد نمائید.
حتما با خودتان می گوئید که شما تا کنون از کدهای قبلی نیز می توانستید در برنامه های مختلف استفاده کنید.
تفاوت متد شیء گرایی با روش سنتی توسعه چیست ؟ در روش سنتی روش توسعه به همراه اطلاعاتی که سیستم نگهداری خواهد کرد به خودمان وابسته است. در این روش ما از کاربربان می رسیم که چه اطلاعاتی را نیاز دارند. پایگاه داده ای را طراحی می کنیم که اطلاعات را نگه دارد. صفحاتی را تهیه می کنیم که اطلاعات را بگیرد و گزارشاتی را چاپ می کنیم تا اطلاعات را برای کاربران نمایش دهد. به عبارت دیگر ما بر روی اطلاعات متمرکز می شویم و کمتر توجه می کنیم که چه کاری با اطلاعات انجام شده است یا رفتار سیستم چگونه است (نمودارهای ERD را در روش تحلیل سیستم ساختیافته ببینید). این روش Data Senteric یا مبتنی بر داده نامیده شده است و برای ایجاد سیستمهای زیادی تا کنون استفاده شده است.
یک چالش بسیار بزرگ که روش مبتنی بر داده با آن روبرو می شود این است که درخواستهای سیستمها معمولا چندین بار تغییر مینماید. این سیستمها تغییرات در پایگاه داده را به آسانی پوشش میدهند ولی تغییرات در رفتار سیستم را به آسانی نمی توانند پوشش دهند. متد شیء گرایی در پاسخ به این مشکل ایجاد شده است. با متد شیء گرایی هم بر اطلاعات و هم بر رفتار متمرکز می شویم. در نتیجه اکنون می توانیم سیستم هایی را ایجاد نماییم که انعطاف پذیر شده اند تا اطلاعات یا رفتار را تغییر دهند.
مشاهده و درک این انعطاف پذیری با شناخت تعدادی از اصول شیء گرایی نمایان خواهد شد: نهان سازی یا Encapsulation - وراثت يا Inheritance و چند ريختي يا Polymorphism.
با ما همراه باشيد!
مرجع کامل UML with Rational Rose
نوشته باگزبندی
ترجمه مهندس مهرداد توانا و مهندس عاطفه شیجوئیمقايسه متدولوژي هاي ايجاد و توسعه سيستم هاي اطلاعاتي
گردآوري و تأليف : مهندس انوشيروان اخوان نياكيتحليل و طراحي سيستمها
ايگور هوريس كيوويچ
ترجمه مهندس عين الله جعفرنژاد قميمهندسي نرم افزار با بهره گيري از UML
ترجمه و تأليف مهندس اميرمهدي هدايت فر
ما از منابع ذكر شده جهت بيان علامتها ، استانداردها و مفاهيم UML استفاده مي كنيم. ولي همانطور كه قبلا نيز ذكر شد هيچكدام از منابع موجود ترجمه شده و همچنين هيچكدام از سايتها بصورت Case Study يك پروژه كامل را بررسي نكرده اند!
همچنين نرم افزاري كه ما در طول پروژه ها جهت مدلسازي استفاده خواهيم كرد Enterprise Rational Rose 2003 خواهد بود. جهت تهيه اين نرم افزار با من تماس بگيريد.
کتابهای آموزش UML موجود که اکثرا ترجمه می باشند تنها به معرفی علائم و مفهومهای زبان مدلسازی UML پرداخته اند و هیچکدام از آنها یک مثال کاربردی و واقعی را بطور کامل بررسی و تحلیل نکرده اند.
این وبلاگ قصد دارد مفاهیم شیء گرایی و زبان مدلسازی UML را بصورت Case Study و در طول تحلیل یک سیستم واقعی آموزش دهد.
نظرات , پیشنهادات و کمکهای علمی شما قطعا روشنای راه ما خواهد بود.