آنالیز و طراحی شی گرا

آنالیز و طراحی شی گرا

مفهوم شئ گرایی 

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

اگر تمام کارهایی که ما انجام می‌دهیم شئ گرا باشند به این معنی است که ما در object ها تمرکز کرده‌ایم، حالا در یک زبان شئ گرا برنامه بزرگ ما به بخش‌هایی با object های مستقل تقسیم می شود تقریبا شبیه برنامه‌ای مینی که هر object نماینده یک بخش می‌باشد.

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

تجزیه و تحلیل و طراحی شی گرا  (OOAD)

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

SDLC   در  OOAD

چرخه نرم افزار معمولأ حالت‌های توصیف انتزاعی مشکل، طراحی، کدنویسی، تست و در نهایت استقرار تقسیم می‌شود. اولین مرحله از این پروسه آنالیز و طراحی می‌باشد که تفاوت بین این دو معمولا به این صورت بیان می شود: چه چیز در مقابل چگونه

در قسمت آنالیز، توسعه‌دهندگان با کاربران و متخصصین حوزه (Domain Experts) کار می‌کنند تا چگونگی کار سیستم را تعریف کنند، جزئیات پیاده‌سازی معمولا در این مرحله به صورت کامل نادیده گرفته می‌شود. هدف فاز آنالیز ایجاد یک مدل از سیستم فارغ از محدودیت‌هایی مانند تکنولوژی مناسب است، این کار معمولا توسط use case ها انجام می‌شود.

فاز طراحی، مدل آنالیز شده را بهبود می‌بخشد و تکنولوژی‌های مورد نیاز را اعمال می‌کند. با تمرکز بر توصیف object ها و attribute ها و رفتار ها و تعاملات. مدل طراحی باید جزئیات مورد نیاز را داشته باشد تا برنامه نویسان بتوانند طراحی را در کد پیاده کنند. این مراحل به صورت تکراری و افزایشی در متدولوژی نرم‌افزار اجرا می‌شود، بنابراین فعالیت‌های OOAD یکبار انجام نمی‌شود و به طور مداوم بازبینی و بهبود داده می‌شود.

آنالیز شئ گرا

- دریافت نیازمندی‌ها: تعریف کننده کاری که نرم افزار نیاز دارد انجام دهد و چه مشکلی را قرار است حل کند.
- تعیین نیازمندی‌ها: توصیف نیازمندی معمولا به وسیله use case ها و یا داستان‌های کاربر  (user stories)
- مدل مفهومی: تشخیص object های مهم، بهبود آن‌ها، تعریف رابطه، رفتار آن‌ها و کشیدن یک نمودار ساده.

طراحی شی گرا 

فاز آنالیز تعیین کننده object ها و روابط بین آن‌ها با استفاده از مدل مفهومی می‌باشد، در حالی که فاز طراحی تعریف کننده object ها به وسیله ایجاد کلاس‌ها و … از مدل مفهومی می‌باشد.

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

در طراحی شی گرا:

- توضیح کلاس‌ها  و روابط بین آن‌ها با استفاده از کلاس دیاگرام ها

- توضیح تعامل بین object ها با استفاده Sequence Diagram

- اعمال قوانین طراحی نرم افزار و Design Patterns

یک کلاس دیاگرام یک نمایش تصویری از کلاس‌هایی است که شما احتیاج دارید و این جایی است که شما باید درباره قوانین شئ گرایی مانند ارثبری (Inheritance) و چندریختی (Polymorphism) دقت بالایی داشته باشید.

مدل‌سازی سیستم

مدل‌سازی سیستم، یک فرایند توسعه می‌باشد که هر مدل نماینده یک دیدگاه متفاوت از سیستم است، مهمترین جنبه مدل‌سازی سیستم کنار گذاشتن جزئیات و نمایشی انتزاعی می‌باشد.

مدل‌ها معمولا مبتنی بر نمادهای گرافیکی و بر اساس زبان مدلسازی یکپارچه (UML) می‌باشند‌. مدل‌های دیگر سیستم مانند «مدل‌های ریاضی» و «توضیح سیستم» می‌باشند.

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

دیدگاه‌های مختلف

ما می‌توانیم مدل‌ها را بر اساس دیدگاه‌های مختلف توسعه دهیم.

- خارجی، شما محیط سیستم را مدل‌سازی می‌کنید
- تعاملی، شما تعامل بین Component ها را مدل‌سازی می‌کنید
-  ساختاری، شما سازماندهی سیستم یا ساختار داده‌ها را مدل‌سازی می‌کنید 
 - رفتاری، شما رفتار پویای سیستم را مدل‌سازی می‌کنید

زبان مدلسازی یکپارچه  (UML)

این زبان به زبان استاندارد مدل‌سازی شئ گرا تبدیل شده، که شامل دیاگرام‌های زیادی هست ولی معمول‌ترین آن‌ها به شرح ذیل می‌باشند:

Use case diagram:

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

Class digram:

نشان دهنده object های مختلف، رفتار و رابطه آن‌ها با یکدیگر

Sequence diagram:

نشان دهنده تعامل بین object ها در سیستم و تعامل بین بازیگران و object ها می‌باشد

 نمودار ماشین حالت: 

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

 نمودار فعالیت:

نشان دهنده جریان داده‌ها بین فرآیندهای موجود در سیستم