1 مقدمهusecase ها
با توجه به مفاهیم کلاسها مورد مهمی در uml را بررسی میکنیم که همان usecase ها هستند. دراین فصل موضوعات زیر مطرح میشوند :
• usecase چیست
• ساختن یک usecase
• محتویات یک usecase
• extend یک usecase
• تحلیل یک usecase
در گذشته با دیاگرامهایی برخورد کردیم که دیدگاه ثابتی در مورد کلاسهای سیستم ارائه میکرد. به سراغ دیاگرامهایی میرویم که دیدگاهی پویا ارائه میکند ونشان میدهد چگونه سیستم و کلاسهایش با گذشت زمان تغییر میکنند .دیدگاه ثابت به روابط بین تحلیلگر و طراحان سیستم کمک میکند و دیدگاه پویا به روابط بین تحلیلگر وگروه طراحان کمک میکند و به طراحان اجازه میدهد که برنامه بنویسند .
مشتری و تیم طراحان یک مجموعه مهم از امینان سیستم را تشکیل می دهند. نه دیدگاه ثابت و نه دیدگاه پویا، کارکرد سیستم را از نقطه نظر کاربر نشان نمیدهند. فهمیدن این دیدگاه کلیدی است برای ساختن سیستمی که مفید وقابل استفاده باشد. این دیدگاه تقاضاها را بررسی میکند وکار کردن با آن آسان (و حتی جالب است) است.
مدل کردن سیستم از دیدگاه کاربر آن، کار usecase است . در این فصل درباره اینکه usecase چیست و چه کاری انجام میدهد صحبت میکنیم و همچنین درباره چگونگی استفاده از دیاگرام usecase در تصویرسازی در UML بحث میکنیم .
2- 1 usecase ها چه هستند ؟
چندین سال قبل من یک فاکس خریدم. وقتی که برای خرید به دفتر تهیهکننده رفته بودم با سطح وسیعی از انتخاب ها برخورد کردم. چگونه باید تصمیم خوبی میگرفتم؟ از خودم پرسیدم میخواهم با فاکس چه کاری انجام بدهم؟ چه مواردی را نیاز دارم، چه اعمالی را میخواهم با فاکس انجام بدهم؟ آیا میخواهم کپی بگیرم؟ به کامپیوتر متصلش کنم؟ به عنوان scanner از آن استفاده کنم؟ میخواهم فاکسها را به سرعت بفرستم، که به سرعت شمارهگیر احتیاج داشته باشم؟میخواهم تشخیص بدهم که fax آمده یا کسی تلفن کرده است ؟
از مراحل یک پردازش مانند مراحل بالا وقتیکه یک خرید بدون انگیزه را ترتیب دادیم گذشتیم. در تحلیل یک فرم از usecase چه کاری انجام میدهیم ؟ از خود میپرسیم چگونه از یک محصول یا سیستم استفاده میکنیم، تا پول خود را به خوبی خرج کنیم. بنابراین مهمترین چیز این است که نیازها را بشناسیم .
این نوع پردازش مخصوصاً برای بخش آنالیز سیستم طراحی شده است .چگونه کاربرها از درایور سیستم از همان راهی که شما طراحی کردهاید و سیستم را ساختهاید استفاده می کنند ؟
usecase یک ساختار است که به تحلیلگر سیستم که با کاربر کار میکند، کمک میکند تا سیستم کاربردیی را طراحی کند .
اصطلاح جدید : usecase مجموعهای از سناریوها است که سیستم از آنها استفاده میکند. هر سناریو یک ترتیب زمانی از وقایع را شرح میدهد. هر ترتیب زمانی به وسیله شخصی یا سیستمی دیگر یا یک قطعهای از سختافزار و یا بهوسیله گذر زمان بنا نهاده میشود. موجودیتهای که ترتیب زمانی را شروع میکنند actor نامیده میشوند. ترتیب زمانی باعث میشود که استفادههای دیگری از actor توسط کسانی که actor را بنا گذاشتهاند و یا توسط دیگر actor ها بشود .
3- 1 چراusecase ها مهم هستند ؟
تنها یک راه با ارزش برای تحریک مشتری به صحبت در مورد دیدگاهش درباره سیستم وجود دارد. usecase یک ابزار عالی برای تحریک مشتری است. معمولاً تحریک مشتری برای صحبت مفصل در مورد چگونگی استفادهاش از سیستم کار آسانی نیست. چراکه توسعه سیستمهای قدیمی اغلب یک پردازش اتفاقی است، که در تحلیل بسیار کوتاه است. کاربرها برخی مواقع وقتی در مورد ورودیهایشان از آنها سوال میشود، گیج میشوند . ایدهای موجود این است که سیستمی که کاربرها با آن کار میکنند را در مراحل اولیه آنالیز و تحلیل سیستم در نظر بگیریم. این کار احتمال اینکه سیستم در نهایت برای کاربر بهتر شود را بالا میبرد ، مثل تعویض مفاهیم محاسباتی یک سیستم قدیمی که باعث گیج شدن کاربران برای کار با آن میشود.
4- 1 یک مثال : ماشین نوشابه
فرض کنید که میخواهیم یک ماشین نوشابه طراحی کنیم. برای بدست آوردن دیدگاه کاربران باید با چند نفر از کاربران برای دانستن نحوه برخوردشان باسیستم مصاحبه کنیم. زیرا عمل اصلی ماشین این است که به مشتری اجازه میدهد یک قوطی نوشابه بخرد ، بنابراین کاربران سریعاً به ما میگویند که مجموعهای از سناریوها(به عبارتیusecase ها)را داریم که احتمالاً عنوان ”خرید نوشابه“ را دارند. بنابراین هر سناریو ممکن را بررسی میکنیم. توجه داریم که در طراحی سیستم معمولی سناریوها در اثر صحبت با کاربر به وجود میآیند.
1-4- 1 usecase خرید نوشابه
actor این usecaseمشتری است، که میخواهد یک قوطی نوشابه بخرد. مشتری سناریو را با انداختن پول آغاز میکند. سپس او امکان انتخاب دارد. اگر همه چیز به خوبی پیش برود دست کم یک قوطی نوشابه به مشتری تحویل داده میشود.
با توجه به مراحل ترتیب زمانی باید به تصویر دیگری از سناریو توجه شود. چه پیش زمینهای باعث تحریک مشتری برای آغاز کردنusecase خرید نوشابه میشود؟ تشنگی یکی از شرایط آشکار است. چه شرایط بعدی لازمه مراحل سناریو است؟ دوباره آشکارترین مورد این است که مشتری یک نوشابه دارد. آیا سناریویی که تعریف کردیم تنها سناریو ممکن برای این مسئله است؟ موارد دیگری هم سریعاً به ذهن میآین . ممکن است نوشابه دیگری غیر از آنچه مشتری خواسته تحویل داده شود. ممکن است مشتری پول کافی برای قیمت نوشابه را وارد نکرده باشد. چگونه میتوان ماشین را با این سناریو طراحی کرد؟
به مرحله دیگر از usecase خرید نوشابه میرویم. به سراغ سناریو alternative میرویم. مشتری usecase را با انداختن پول به داخل ماشین آغاز میکند. سپس امکان انتخاب دارد، اما ماشین در انتها قوطی نوشابهای که انتخاب شده را تحویل نمیدهد و به مشتری پیام میدهد که پول خارج از محدوده ماشین است. پیام باید به گونهای باشد که مشتری را برای انتخاب دیگر تحریک کند. همچنین ماشین باید پیشنهادی برای پس دادن پول به مشتری بدهد. در این جا، مشتری نوشابه دیگری را انتخاب میکند و ماشین آن را تحویل میدهد (اگر انتخاب جدیدی صورت نگیرد نوشابه نیز فروخته نمیشود) و یا عمل تحویل پول اتفاق میافت . شرایط بعدی، تحویل یک قوطی نوشابه یا تحویل پول است.
سناریو دیگری نیز ممکن است اتفاق بیفتد. ”خارج از محدوده“ پیامی است که زمانیکه ماشین موجودی نداشته باشد نمایان میشود و در این مرحله باقی میماند تا زمانی که دوباره پر شود و بتواند نوشابه را تحویل دهد. در این مرحله ممکن است که مشتری پول را نیانداخته باشد. مشتری که ما ماشین را برایش طراحی کردهایم ممکن است سناریو اول را ترجیح بدهد. اگر مشتری پول را وارد ماشین کرده ممکن است مایل باشد انتخاب دیگری انجام بدهد، تا اینکه در مورد پس دادن پول از او سوال شود.