مهندسی نیازمندیها- نمودار کلاس

نمودار کلاس

مهندسی نیازمندیها- نمودار کلاس

 در مهندسی نیازمندی ها، نمودار کلاس از اهمیت ویژه ای برخوردار است. دسته ­بندی و گروه ­بندی اشیا به‌وسیله نمودار کلاس انجام می­شود. درواقع  نمودار کلاس نمونه واقعی یک سیستم است که بسیار به زبان برنامه ­نویسی نزدیک می­باشد. در این نمودارباید کلاس ­بندی اشیا صورت گیرد همچنین در هر کلاس صفت­ها و عملیات مشخص می­شوند. روابط بین کلاسی­ها استخراج می­شود و به نمودار اضافه می­شوند. همچنین شما می­توانید از روی نمودار کلاس ، جداول دیتابیس را طراحی کنید.

می­توان گفت نمودار کلاس  دربرگیرنده نقشه اصلی سیستم است.

این نمودار کلاس  است که تبادل اطلاعات بین کلاس­ها را مدل می­کند و نحوه همکاری اجزا را در سیستم مشخص می­نماید.

رسم نمودار کلاس  یکی از مهم‌ترین مراحل در آنالیز و طراحی می­باشد یعنی رسم یک نمودار کلاس با جزییات کافی برنامه­نویسان را در فاز ساخت بسیار کمک می­کند تا برنامه­ای مبتنی بر اصول شی‌ءگرایی پیاده ­سازی کنند.

نحوه استخراج کلاس­ها

کلاس­ها به سه دسته تقسیم می­شوند:

  • کلاس موجودیت
  • کلاس واسط
  • کلاس کنترل

نحوه استخراج کلاس موجودیت

علاوه بر یاری­ گرفتن از نمودارهای وضعیت (State) و فعالیت (Activity) مصاحبه­هایی با کاربران داشته باشیم از میان صحبت­هایشان، اسم­هایی که می­شنویم، یادداشت نماییم.

در این مرحله ما وارد جزییات نمی­شویم سعی می­کنیم یک لیست از اسامی را جمع ­آوری نماییم، این لیست بلندبالا را لیست کلاس­های کاندید می­گویند یعنی این لیست دارای اسامی است که می­توانند به‌عنوان کلاس­هایی برای سیستم در نظر گرفته شوند، این لیست همچنین دارای اسامی خواهد بود که ممکن است بعداً به‌عنوان صفت­ها و عملیات در داخل کلاس­ها قرار گیرد، همچنین این لیست می­تواند دربرگیرنده روابط Association بین کلاسی باشد.

اصولاً چون در تهیه لیست کلاس­ها کاندید به مفاهیم برنامه­ نویسی توجه نداریم و فقط در پی اسامی جدید هستیم انواع و اقسام کلمات متنوع را در این لیست خواهیم دید این لیست را گاهی اوقات به‌عنوان فرهنگ لغت سیستم نیز معرفی می­کنند.

اکنون‌که این لیست بلندبالا را تهیه‌ کرده‌ایم، زمان آن رسیده که از طریق جلسات با کاربران، کلاس­های واقعی استخراج شود.

این جلسات را معمولاً به نام Brain storming یا توفان فکری می­شناسیم در این جلسات سؤالات متنوع و دیدگاه­های مختلف بررسی می­شود تا درنهایت لیست اصلی کلاس­ها استخراج شود.

اسامی که از این لیست باقی می­مانند، معمولاً جز صفت­ها و عملیات کلاس­ها قرار می­گیرند. این‌یک روش است برای استخراج موجودیت و یا کلاس­هایی که واقعاً در سیستم وجود دارند و قابل‌لمس هستند.

 

نحوه استخراج کلاس موجودیت

  • مصاحبه با کاربران
  • جمع­آوری لیستی از اسامی
  • لیست کلاس­های کاندید
  • فرهنگ لغات سیستم
  • جلسات توفان فکری

 

 

نحوه استخراج کلاس­های واسط

این کلاس­ها به‌عنوان واسط­هایی بین سیستم­ها و موجودیت­های خارجی می­باشند یک‌راه استخراج این‌ها این است که از روی نمودارهای قبلی موجودیت­های خارجی و Actor ها را مشخص کرده و به ازای هر یک از آن‌ها یک Interface کلاس را ایجاد کنیم.

 

نحوه استخراج کلاس­های کنترلی

این کلاس­ها معمولاً وظیفه کنترل کردن فعالیت­های کلاس­های مختلف سیستم را بر عهده‌دارند. در این کلاس­ها رفته‌رفته در فاز طراحی و با تکرار بیشتر قابل‌تشخیص‌تر می­شوند. این کلاس­ها معمولاً از شکستن روابط m:m (چند به چند) نیز حاصل می­شوند درواقع پیچیده­ترین نوع کلاس­ها هستند که تا حد زیادی سلیقه­ای می­باشند یعنی ممکن است برای انجام یک عملیات خاص از یک کلاس کنترلی استفاده کنیم و یا یک فعالیت خاص را با همکاری چند کلاس کنترلی انجام دهیم.

با توجه به روش­هایی که گفته شد شما می­توانید استخراج کلاس­ها را به روش سیستماتیک انجام دهید البته شما با خلاقیت خود می­توانید روند استخراج این کلاس­ها را به‌صورت بهتری کنترل کنید درهرحال شما باید بتوانید با استفاده از تکنیک­های خاصی لیست کلاس­های کاندید را استخراج و از روی آن کلاس­های موجود در سیستم را تشخیص دهید بعد از تشخیص کلاس­ها شما باید صفات و عملیات هر کلاس را تعیین نمایید.

 

راه­های استخراج صفت­ها و عملیات

یک‌راه مؤثر همین جلسات توفان فکری است یعنی عده­ ای از مهندسان نیازمندی­ها و کاربران نهایی دور هم جمع می­شوند، در حین استخراج کلاس­ها خصوصیات و عملیات­های مربوط به کلاس­ها را تشخیص می­دهند درواقع وقتی کلاس­ها استخراج شدند در لیست کلاس­هایِ کاندید، هر اسمی را که به یک کلاس وابستگی معنایی یا عملیاتی دارد در کنار آن کلاس قرار می­دهیم، این اسامی می­توانند به‌عنوان صفات و عملیات مربوط به یک کلاس در نظر گرفته شوند. معمولاً برای استخراج صفات مشکل چندانی نداریم برای استخراج عملیات یک کلاس می­توانیم از نمودار­های فعالیت و وضعیت استفاده کنیم.

هر چه تجربه شما در تحلیل یک مسئله بیشتر باشد، کار شما در استخراج کلاس­ها و به تبعه آن استخراج خصوصیات و عملیات آن کلاس آسان‌تر می­گردد.

انواع روابط بین کلاس­ها

  • رابطه Association
  • رابطه وابستگی Dependency
  • رابطه Aggregation
  • رابطه Generalization

رابطه Association: از طریق این رابطه دو کلاس به هم وصل می­شوند. این رابطه می­تواند دوطرفه یا یک‌طرفه باشد. در رابطه­های دوطرفه می­توان هم توسط یک فلش دوطرفه و هم یک خط ساده نمایش داده شود.

در رابطه یک‌طرفه دارای یک فلش یک‌طرفه است، که مسیر هدایت را نشان می­دهد.

نمودار کلاس

در این رابطه موارد زیر برای فهم بهتر نمودار Association می­تواند آورده شود:

  • نام رابطه – نام این رابطه “درس می­دهد ” یعنی استاد به دانشجو درس می­دهد.
  • Direction مسیر را مشخص می­کند اگر یک‌طرفه باشد- همان‌طور که می­بینید از طرف استاد به دانشجو گذاشته‌شده است.
  • Multiplicity رابطه یک‌به‌یک – چند به چند – یک به چند را مشخص می­کند- در این رابطه هر دو طرف نوعشان یک به چند است به این معنی که یک دانشجو می­تواند حداقل یک و حداکثر چندین استاد داشته باشد و یک استاد می­تواند حداقل یک دانشجو و حداکثر چندین دانشجو داشته باشد.
  • Role نقش هر کلاس را تعیین کنید- مثلاً در این نمودار ما دانشجو و استاد را داریم.
  • Navigation پیمایش- به این معنی است که آیا ما می­توانیم از طریق یک دانشجو به استاد برسیم و یا برعکس از استاد به دانشجو برسیم.

رابطه وابستگی Dependency: منظور از این رابطه این است که یک کلاس مستقل است و کلاس دیگر وابسته به این کلاس است. حذف کلاس مستقل، باعث حذف کلاس وابسته خواهد شد.

نمودار کلاس

رابطه Aggregation: رابطه­ای بین یک واحد کل و بخش­های آن می­باشد.

 

نمودار کلاس

 

رابطه Generalization: برای نشان دادن یک رابطه ­ای است که یک کلاس صفت­های مشترک در آن قرار داده می­شود و کلاس­های دیگر که دارای آن صفت­های مشترک هستند، از آن کلاس ارث­ بری می­کنند که صفات خاص خود را هم دارند. به‌عنوان‌مثال زن و مرد هر دو انسان هستند یکسری صفات مشترک دارند و یکسری صفات خاص خودشان است. مثال دیگر که در نمودار نمایش داده می­شود.

نمودار کلاس

استخراج رابطه ­ها

می‌توان از روش ماتریسی استفاده کرد. در این روش کلاس­های استخراج‌شده طول و عرض را تشکیل می­دهند. با استفاده از این روش رابطه بین کلاس­ها را استخراج می­کنیم.

 

relationship

سیستم فروش بلیط در محل شرکت مسافربری

اولین قدم تهیه لیست کلاس­های کاندید

ازجمله مسائلی که شما را در تهیه اسامی یاری می­رساند، جمع­آوری فرم­ها، مستندات و قبض­های و … موجود در یک سیستم است این لیست می­تواند در طول پروژه تکمیل و تکمیل­تر شود.

تهیه لیست کلاس­های کاندید

بلیط – مسئول فروش بلیط- نام مسئول فروش- مقصد- شماره سرویس- نام مسافر- شماره صندلی- مبلغ- بیمه- ساعت حرکت- تاریخ حرکت- کد پرسنلی مسئول فروش- راننده- شماره اتوبوس- شماره بلیط

استخراج کلاس­های واقعی سیستم و صفت­هایشان

پس‌ ازاینکه لیست کلاس­های کاندید را تهیه کردیم از روی آن باید کلاس­های واقعی سیستم را استخراج‌کنیم و اسامی مرتبط با آن‌ها را کنارشان قرار دهیم.

فرض کنید ما از طریق جلسات توفان فکری به این نتایج رسیدیم:

مسئول فروش بلیط: کد پرسنلی، نام مسئول فروش، کد مسافر

مسافر: کد مسافر، نام مسافر، کد بلیط

سفر: کد سفر، نام مقصد، تاریخ حرکت، ساعت حرکت

بلیط: کد بلیط، کد مسافر، کد مسئول فروش، کد سفر، مبلغ، شماره صندلی/صندلی­ها، تعداد نفرات

استخراج عملیات

مسئول فروش بلیط: ثبت اطلاعات مسافر- صدور بلیط

مسافر: تعیین مقصد- تعیین زمان حرکت و تاریخ حرکت

 

نمودار کلاس

درباره نویسنده

مطالب مرتبط

6 نظر

  1. احمد معین

    سلام وقت بخیر به استاد گرامی
    بابت مطالب فوق العاده ای که در سایت قرار میدهید بسیار سپاسگزارم
    و این مطالب بسیار کاربردی و مهم است و اجرای آنها و عمل کردن به آنها مهمتر
    باز هم ممنونم از مطالب شما

    پاسخ

نظر بدهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *