زبان مدل سازی یکپارچه
UML
مقدمه
UML یک زبان مدل سازی است، یک متد نیست، بسیاری از متدها حداقل شامل یک زبان مدلسازی و یک فرآیند هستند، زبان مدلسازی اصولاً شامل علائمی گرافیکی است که متدها با استفاده از این علائم مدل های طراحی شده را نمایش می دهند. اما فرآیند نشان می دهد که چه قدمهایی را باید در مرحله طراحی برداریم تا به هدف مورد نظر برسیم.
UML ترکیبی از سه روش مدلسازیOOSE, BOOCH, (Object Modeling Technique) OMT (Object-Oriented Software Engineering) است. این زبان یک استاندارد مدلسازی است، وجود یک زبان استاندارد خیلی مهم است اما لزومی ندارد که حتماً یک فرآیند استاندارد داشته باشیم . در دهه 1980 زبانهای شئ گرا مثل smal talk , C++ ابداع شدند، این زبانها باعث شدند که توسعه دهنده بتواند دنیای واقعی را بصورت مجموعه ای از اشیای مربوط به هم در نظر بگیرد و همان تصور ذهنی خود را با استفاده از یک زبان برنامه نویسی شئ گرا پیاده سازی کند، همین امر باعث شد که کتابهای زیادی در زمینه تحلیل و طراحی شئ گرا در سالهای 88 تا 92 منتشر شود. روش Booch در فازهای طراحی و ساخت پروژه به خوبی عمل می کرد وOOSE موارد قابل کاربرد را برای گرفتن نیازمندیهای کاربر و تحلیل و طراحی سطح بالا را بطور عالی پشتیبانی می کرد، روش OMTنیز برای تحلیل و تمرکز روی داده های سیستم اطلاعاتی(data intensive) بسیار مفید بود.
در اکتبر 1994 وقتی کهRambugh از شرکت جنرال الکتریک به Booch ازشرکت Rational پیوست، عملاً کار خود را برای ترکیب روشهای شخصی جهت ایجاد یک زبان مدلسازی واحد، شروع کردند. در اکتبر 1995 نسخة 0.8 روشUnified را ارائه دادند. در همین زمان Jacobson نیز برای شرکت دادن روش شخصیOOSE در پروژة UML با آنها به توافق رسید و مستندات نسخهUML 0.9 را در ژانویه 1996 آماده کردند. سر انجام در سال 1997 نسخه UML 1.0 ارائه شد و در همین سال به عنوان یک استاندارد توسط شرکتOMG شناخته شد.
علائم و فرامدل ها
علائم همان عناصر گرافیکی هستند که در مدلها دیده می شوند و نحو زبان مدلسازی را تشکیل می دهند. بعنوان مثال : علائم نمودار کلاس نمایشی را برای موارد و مفاهیمی نظیرکلاس، تناظر و چند تایی تعریف می کند.
در سازمانهای مختلف با حوزه های مسئله متفاوت، فرآیندهای متفاوتی مورد نیاز است، بنابراین تلاش بر این است که ابتدا بر یک فرامدل مشترک تمرکز شود و در درجه دوم بریک علامتگذاری مشترک تمرکز گردد. لذا فرامدل را چنین تعریف می- کنیم: نموداری- معمولا نمودار کلاس- است که علائم را تعریف می کند.
چرا مدلسازی می کنیم؟
مدلسازی قسمت عمدة فعالیتهایی است که مقدمه یک نرم افزار مناسب- نیازهای کاربر را برآورده کند- رافراهم می کند، بدین دلیل مدلسازی می کنیم که ساختار و رفتار مناسبی برای سیستم مرتبط با سیستم واقعی در نظر گرفته شود. می دانیم که زبان طبیعی برای این کار بعلت ابهام و پیچیدگی زیاد هنگام کار در سطوح پایین یک سیستم پیچیده مناسب نیست و کد نیز اگر چه دقیق است اما چون به جزئیات می پردازد و به یکباره نمی توانیم وارد این جزییات شویم، مناسب نیست. بنابراین برای اینکه سیستم را به صورت بصری ببینیم و معماری آن را کنترل نماییم و همچنین درک بهتری از سیستم داشته باشیم، مدلسازی می کنیم. یک مدل، نمایی ساده از دنیای واقعی است. بطور کلی مدلسازی از چهارجنبه زیر به ما کمک می کند:
1. مدلها به بصری سازی سیستم -آنچنانچه در دنیای واقعی وجود دارد یا آن طوریکه ما می خواهیم - کمک می کند .
2. مدل ها به ما اجازه می دهند که ساختار ورفتار سیستم را مشخص کنیم .
3. مدلها یک قالب را تعریف می کنند که مارا در مرحله ساخت هدایت می کند.
4. مدلها تصمیماتی که در مورد پروژه اخذ شده، بصورت مستند بیان می کند.
موارد قابل کاربرد Use cases
موارد قابل کاربرد با تکیه بر اینکه سیستم چه کاری را انجام می دهد یا اینکه سیستم جدید چه اعمالی را مضاف برکارهای قبلی باید انجام دهد، یک مدل از سیستم می دهد که مدل مورد قابل کاربرد نامیده می شود. این مدل برای تحلیل نیازهای عملیاتی سیستم بکار می رودکه این مدل درفاز تحلیل توسعه سیستم شئ گرا ایجاد می شود .
مدل کردن موارد قابل کاربرد در اولین مرحله توسعه سیستم برای کمک به توسعه دهنده جهت درک بهتر نیازهای عملیاتی سیستم بدون اینکه به چگونگی انجام این عملیات بپردازد، مفید واقع می شود. توسعه دهندة نرم افزار باید با کاربر در طول پروسه توسعه درارتباط باشد و در مشخصات نیازمندیها به توافق برسند . اگر نیازمندیهای کاربر در طول پریود توسعه نرم افزار تغییر کند، این تغییرات ابتدا در مدل مورد قابل کاربرد اعمال می شود . تغییرات در مورد قابل کاربرد منجر به تغییر در مدلهای دیگر می شود . این مدلها می توانند اثرات اجرایی را نشان دهند، مثلاً شما می توانید اثرات یک تغییر در طراحی یک مورد قابل کاربرد را مشاهده نمایید.مدل مورد قابل کاربرد شامل دو عنصر کنشگر و مورد قابل کاربرد است . کنشگر یک عنصر خارجی است که با سیستم تعامل دارد، در واقع کسی یا چیزی (یک سیستم خارجی ) که اطلاعات را در سیستم تغییر می دهد، کنشگر می باشد .
مورد قابل کاربرد نمایشی از مجموعه ای از اعمال مرتبط به هم است که با کنشگر مقدار دهی می شوند. برای تعریف دقیق مورد قابل کاربرد ابتدا مفهوم سناریو را تعریف می کنیم .
سناریو یک توالی از مواردی است که تعامل بین سیستم و کاربر را بیان می کند.
مورد قابل کاربرد مجموعه ای از سناریو های مرتبط به هم است که یک هدف کاربر را دنبال می کنند. تفاوتی که بین کاربر و کنشگر بتوان به آن اشاره کرد این است که کاربر کسی است که از سیستم استفاده می کند، اما کنشگر نشان دهنده نقشی است که کاربر در آن نقش عمل می کند، ممکن است که یک کاربر در چند نقش متفاوت از سیستم استفاده کند. نام کنشگر باید نشان دهنده نقش کاربر باشد، یک کنشگر کلاسی از کاربران را تعریف می کند و یک کاربر نمونه ای از کلاس کنشگر خاصی است. چون کنشگر ها در خارج از سیستم قرار دارند نیازی نیست که جزئیات آن را بررسی کنیم.
یک شکل ساده مورد قابل کاربرد شامل شرح سناریوی آن بصورت ترتیبی از مراحل شماره گذاری شده بهمراه راه حل های ترتیبی به ازای حالات مختلف مورد قابل کاربرد است.
مورد قابل کاربرد فقط آنچه یک سیستم انجام می دهد را توصیف می کند و از چگونگی انجام آن صحبتی نمی کند. برای این منظور، توصیف جریان وقایع یک مورد کاربرد کار مناسبی است. جریان وقایع عبارت است از متنی که در آن موارد زیر لحاظ می شود:
ــ مورد کاربرد کی و چگونه شروع و خاتمه می یابد؟
ــ چه زمانی تعامل با کنشگر صورت می گیرد؟
ــ چه اشیائی در چه زمانی مورد مبادله قرار می گیرند؟
ــ چه روالی عملیات اصلی و چه روالی عملیات استثنایی وجود دارد؟
متن زیر جریان کار یک مورد قابل کاربرد ساده را نشان می دهد.
Buy a product:
1. customer browses through catalog and selects items to buy
2. customer goes to check out
3. customer fills in shipping information ( address; next-day or 3-day delivery)
4. system presents full pricing information , including shipping
5. customer fills in credit card information
6. system authorizes purchase
7. system confirms sale immediately
8. system sends confirming email to customer
Alternative: Authurization failure
At step 6 , system fails to authorize credit purches
Allow customer to re-enter credit card information and re-try
Alternative: Regular customer
3a. system displays current shipping information , pricing information , and last fouur
digits of credit card information
3b. Customer may accept or override these defaults
Return to primary scenario at step 6
تا به حال به بررسی خصوصیات موارد قابل کاربرد پرداختیم . حال سوال این است که چگونه موارد قابل کاربرد را شناسایی کنیم ؟ برای مشخص کردن موارد قابل کاربرد Jacobson بررسی سوالات زیر را پیشنهاد می کند.
ــ آیا کنشگر اعمال خواندن و بروز رسانی اطلاعات را انجام خواهد داد؟
ــ وظیفه اصلی هر کنشگر چیست ؟
ــ آیا کنشگر الزاما تغییرات خارج از سیستم را باید به اطلاع سیستم برساند؟
ــ آیا کنشگر باید از تغییرات غیر منتظره آگاهی داشته باشد؟