آقای محسن صبوریان تقبل زحمت نموده و در این ترم کمک استاد (T.A) درس سیستمهای شیءگرا خواهند بود. در کنار مباحث تحقیقی که به دانشجویان محول خواهد گردید، قرار بر آن است که دانشجویان یک سری تکلیف جهت تمرین و درک بهتر طراحی و پیادهسازی سیستمهای شیءگرا انجام دهند. اولین تمرین از این سری تهیه و انجام آن به دانشجویان محول شده است. از آن جا که تمرین نکات جالبی در خود دارد، صورت مسئله آن را در ادامه آوردهام. همین جا از آقای صبوریان جهت تقبل این زحمت کمال تشکر را دارم.
به نام خدا
تمرین شمارهی ۲ (مشق عید) – درس تحلیل و طراحی شیگرا
عنوان:تحلیل، طراحی و پیادهسازی مورد کاربرد امانت گرفتن کتاب از کتابخانهی دانشکده
تاریخ تحویل: …
شرح:
در ادامهی تمرینِ Domain Model Analysis، شما باید مورد کاربرد فرایند امانتگیری کتاب از کتابخانهی دانشکده را تحلیل، طراحی و پیادهسازی کنید. مورد کاربرد امانتگیری (مسیر اصلی و مسیرهای جایگزین) در قسمت پایانی توضیح داده شده است. به عنوان تمرین تحلیل، شما باید مفاهیم موجود در محیط ، مشخصات هر یک و ارتباطات بین آنها را بیابید. برای این کار استخراج مشخصهها/صفات اصول تجرید و الگوهای GRASP را به دقت رعایت کنید و برای در نظر گرفتن هر صفت دلیل منطقی داشته باشید. علاوه بر این، از روی مورد کاربرد، نمودار توالی سیستم (SSD) را (فقط برای مسیر اصلی ) رسم کنید. از آنجایی که پیشتر در درس مهندسی نرمافزار رسم SSD را یاد گرفتهاید، فقط اشاره میشود که:
SSD، نوعی نمودارِ توالی است که در سطح تجریدِ بالا و به ازای یک مورد کاربرد رسم میشود. در این نمودارِ توالی، سیستم به عنوان یک جعبهی سیاه در نظر گرفته میشود و تأکید بر ورودیهایی (درخواستها، پیغامها و …) است که از کاربر (External Actor) به سیستم میرسد، هر چند خروجی و پاسخهای سیستم هم لحاظ میشود.
در فاز طراحی، باید نمودارِ کلاسِ تهیه شده در بخش تحلیل را (که فاقد عملیات است)، با افزودن متودهای لازم تکمیل کنید. به علاوه باید SSD را به یک نمودارِ توالیِ مشروح، بسط دهید.
در فاز پیادهسازی هم باید کلیهی کلاسها و رابط هایی را که در دو مرحلهی قبل بازشناختید، به کد تبدیل کنید. از آنجایی که این مورد کاربرد، یک قسمت از یک سیستم بزرگ کتابخانه میباشد، برای اجرایی شدن کد پیادهسازی شده، به دلخواه خود میتوانید بهعنوان لایهی دادهها، از اشیاء ساختگی ، پایگاهدادههای جاسازیشده و یا فایلهای متنی ساده استفاده کنید. به علاوه شما ملزم به پیادهسازی رابط کاربر (UI) نیستید و تمامی پیغامهای سیستم را میتوانید به صورت متن در خروجی نمایش دهید، مورد کاربرد باید کاملاً اجرایی شود. به عنوان مثال باید تعدادی کتاب پیشفرض و همچنین اعضای کتابخانه در مقاطع مختلف در سیستم کتابخانه داشته باشید.
مواردی که در پایان این تمرین باید تحویل دهید:
۱. محصولات فاز تحلیل: مستندات Domain Model و SSD. جزئیات: نمودار SSD باید به فرمت استاندارد نمودار توالی در UML باشد. به عنوان Domain Model باید مستندی از مفاهیم موجود در سیستم به همراه صفات و رابطههای آنها تحویل داده شود. رابطههای بین مفاهیم، به عنوان نمودار کلاس در فاز طراحی تحویل داده میشود.
۲. محصولات فاز طراحی: نمودار کلاس و نمودار توالی. جزئیات: یک نمودار توالی و تعدادی نمودار کلاس به فرمت استاندارد UML.
۳. محصولات فاز پیادهسازی: کد این مورد کاربرد به علاوهی چندین (حداقل ۱۰) Test Case برای آزمایش مسیر اصلی و همهی مسیرهای فرعی (اعضای کتابخانه در مقاطع مختلف و جریمههای مختلف). همانطور که گفته شد، شما فقط موظف به پیادهسازی منطق صحیح اجرا شدن برنامه هستید و نیازی به پیادهسازی UI نیست. در عوض با اجرا کردن هر Test Case، باید جریان عمل (و خطاهای احتمالی) با پیغامهای مناسب نمایش داده شود. در هنگام تحویل، Test Caseهای شما اجرا و نتیجهی کار مشاهده میشود. یک نمونه Test Case:
mid1 = 1234; // sample member ID
showMemberfInfo(mid1); // print out member info
bid = {123, 234, 345}; // sample book IDs
addBook(mid1, bid[1]); // OK
addBook(mid1, bid[2]); // OK
addBook(mid1, bid[3]); // err! 1234 is undergraduate
mid2 = 1235; // another sample member ID.
showMemberfInfo(mid2); // print out member info
addBook(mid2, bid[1]); // err! bid[1] is already borrowed!
مورد کاربرد:
o پیششرطها:
۱. کاربر برای ورود به سیستم باید حساب (نام کاربری و کلمهی عبور) داشته باشد.
۲. متقاضی برای اخذ کتاب باید کارت (شناسه) عضویت داشته باشد.
o مسیر اصلی:
۱. کاربر گزینهی امانت را بر روی سیستم انتخاب میکند؛
۲. سیستم فرم پرسش شمارهی عضویت متقاضی امانت را نمایش میدهد؛
۳. کاربر شمارهی عضویت متقاضی امانت را وارد میکند؛
۴. سیستم مشخصاتِ عضو (شامل نام، نام خانوادگی، شمارهی عضویت، مقطع تحصیلی، ظرفیت مانده برای امانت و مجموع جریمهی دیرکردِ تصفیه نشده) و مشخصات کتاب یا کتابهای پیشتر امانت گرفتهشده (شامل نام کتاب، شناسهی کتاب و همچنین تاریخ بازگشت آن) را نمایش میدهد؛
۵. کاربر شناسهی کتاب را وارد میکند و کلید ثبت فشار میدهد. با این کار: ۱. شناسهی کتاب و تاریخ امانت به همراه تاریخِ برگشتِ محاسبه شده برای عضو ذخیره میشود. ۲. وضعیت کتاب در سیستم به «امانت داده شده» تبدیل میشود.
۶. در صورتی که عضو قصد دارد بیش از یک کتاب را امانت بگیرد مرحلهی ۵ تکرار میشود. پس از ثبت امانت این مورد کاربرد به پایان میرسد.
o مسیرهای جایگزین:
[۱] موجود نبودن کتاب
– در هنگام ثبت امانت، در صورتی که وضعیت کتاب، «امانت داده شده» بود، پیغام «کتاب امانت داده شده است» به کاربر نشان داده میشود.
[۲] پیدا نکردن کتاب
– در هنگام ثبت امانت، در صورتی که کتابی با شناسهی وارد شده وجود نداشت، پیغام عدم وجود کتاب به کاربر نشان داده میشود.
[۳] پر بودن ظرفیت امانت عضو
– در صورت پر بودن ظرفیت امانت، در صفحهی مشخصات عضو، پیغام پر بودن ظرفیت اخذ کتاب به کاربر نمایش داده میشود و کلید/عملیات ثبت غیر فعال میگردد.
[۴] منقضی شدن عضویت
– در صورتی که عضویت متقاضی امانت منقضی شده باشد، صفحهی مشخصات عضو با پیغامِ منقضی شدن حساب، به کاربر نمایش داده میشود و کلید/عملیات ثبت غیر فعال میگردد.
[۵] غیر فعال بودن (disabled) حساب عضو
– در صورتی که وضعیت عضویت متقاضیِ امانت «غیر فعال» باشد، صفحهی اطلاعات عضو با پیغام مشخصِ غیر فعال بودن عضو به کاربر نمایش داده میشود و کلید/عملیات ثبت غیر فعال میگردد.
[۶] جریمهی دیرکرد بیش از حد
– در صورتی که به عضو کتابخانه جریمهای بیش از ۲۰.۰۰۰ ریال تعلق گرفتهباشد، در صفحهی مشخصات عضو، پیغام جریمهی بیش از ۲۰.۰۰۰ ریال نمایش داده میشود و کلید/عملیات ثبت غیر فعال میگردد.
o قواعد کسب و کار :
دانشجویان کارشناسی، کارشناسی ارشد و دکترا، مشروط بر اینکه دانشجوی همان دانشکده باشند به ترتیب میتوانند ۳، ۴ و ۵ کتاب به امانت بگیرند. دانشجویان سایر دانشکدهها (که عضو کتابخانه هستند) بسته به مقطع تحصیلیشان، به ترتیب مجاز به امانت گرفتن ۲، ۳ و ۴ کتاب هستند. مهلت بازگشت کتاب برای دانشجویان همان دانشکده به ترتیب ۲، ۳ و ۴ هفته و برای دانشکدههای دیگر ۱، ۲ و ۳ هفته میباشد.
جریمهی دیرکرد بازگرداندن کتاب به ازای هر روز، برای اعضای همان دانشکده ۵۰۰ ریال و برای سایر اعضا ۱۰۰۰ ریال میباشد.
دانشجوی کامپیتر
۱۰ دی ۱۳۸۶ در ۰۰:۰۰🙁
خوب جواب تمرین رو هم زیش می گذاشتین که برای همه آموزنده باشد!