شی ءگرایی بیش از آنکه یک متدلوژی مشخص برای توسعه سیستم ها باشد، یک رهیافت و یا فراتر از آن یک قالب فکری برای مدلسازی و ساخت سیستم هاست. همچون رهیافت ساخت یافته که از نظر تاریخی ابتدا در حوزه برنامه نویسی پدید آمد و سپس به حوزه های تحلیل و طراحی تعمیم یافت، رهیافت شی ءگرا نیز در آغاز در قلمرو زبانهای برنامه نویسی توسعه یافت.
در دهه هفتاد میلادی، زبانهایی چون
Simula، Smalltalkو Modula طراحی شد که بر خلاف زبانهای رویه ای سنتی، زبانهای شی ءگرا نامیده می شدند. اساس این زبانها که به طور خاص برای ساختن برنامه هایی در زمینه شبیه سازی و هوش مصنوعی طراحی شده بودند، بر تصویرسازی قلمرو کار بر مبنای اشیاء و کلاسها استقرار بود.
در آن زمان استفاده از این زبانها چندان رواج نیافت، اما ایده های اساسی آن مانند وراثت ، کپسوله کردن ، چند ریختی و برنامه نویسی مبتنی بر رویداد در یکی از موفقترین و متداول ترین زبانهای برنامه نویسی یعنی ++
C به کار گرفته شد. با رواج ++C و سپس گسترش واسط کاربرهای گرافیکی (GUI) که از مفاهیم شی ءگرایی استفاده می کردند، اندک اندک شی ءگرایی به عنوان یک قالب فکری مسلط در مهندسی نرم افزار درآمد.
تعمیم و گسترش ایده های شی ءگرایی در حوزه تحلیل و طراحی سیستم، بعدها صورت گرفت. کسانی چون بوچ ، فایراسمیت ، کود و یوردون متدلوژیهایی برای توسعه سیستم ها بر مبنای این ایده ها طراحی کردند. تحلیل و طراحی شی ءگرا در دهه 90میلادی شرح و بسط زیادی پیدا کرده است و امروزه به نظر می رسد گرایش غالب در توسعه آتی متدلوژیهای مهندسی نرم افزار باشد.
با این وجود، رواج، همه گیری و کاربردپذیری این روشها همپای توسعه فنی مبانی آنها رشد نکرده است و امروزه این متدلوژیها همچنان سهم بسیار اندکی از دامنه کار توسعه سیستم ها را به خود اختصاص می دهند.
هرچند متدلوژیهای متعددی در خانواده روشهای شی ءگرایی طرح شده اند، اساس این روشها در اصل یکی است. در این گزارش برای تشریح مفاهیم اساسی و مراحل توسعه سیستم بر مبنای شی ءگرایی، یکی از متدلوژیهای مطرح این خانواده یعنی متدلوژی طراحی شی ءگرا (
OOA) انتخاب شده است. این متدلوژی توسط کود و یوردون در سال 1991طراحی شده است.

 

 


برای تشریح الگوی مفهومی روشهای شی ءگرا، شاید بهتر باشد آن را با رهیافت سنتی مدلسازی در روشهای ساخت یافته مقایسه نمود. در الگوی ساخت یافته، در اولین تقسیم، سیستم به دو وجه "داده " و "فرآیند" تفکیک می شود. سپس طی روندی سلسله مراتبی و مطابق با روش از بالا به پایین، هریک از این وجوه خود به اجزاء و مؤلفه های فرعی تجزیه می شوند. این روند تا به جایی ادامه پیدا می کند که عناصر قابل پیاده سازی (ساختار پرونده های فیزیکی، واحدهای برنامه ای ) مشخص شوند.


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


از دیدگاه شی ءگرایی، قلمرو کار (یا قلمرو مسأله ) از تعدادی شی ء و ارتباط میان اشیاء تشکیل شده است. تعریف شی ء آنقدر کلی است که تعریف دقیقی نمی توان از یک شی ء به دست داد. هر چیزی ممکن است یک شی ء باشد؛ پرونده، کاربر، دستگاه فیزیکی، واحد سازمانی، سیستم، و به طور کلی هر موجودیتی که دارای داده ها و رفتار مربوط به خود باشد. همانگونه که ذکر شد هر شی ء دارای دو وجه یا بعد درونی است : داده، یعنی مشخصات اطلاعاتی که حالت شی ء را در هر لحظه معین می کنند. و فرآیند، یعنی رفتاری که شی ء در واکنش به محرکهای خارجی از خود نشان می دهد. بعد فرآیندی شی ء را در متدلوژیهای شی ءگرا، رفتار، سرویس و متد هم می نامند. داده های مربوط به یک شی ء، به شکل مشخصه های آن شی ء نشان داده می شود.
اگر دو یا چند شی ء در بخشی از مشخصه ها و رفتارهای خود مشترک باشند، می توان شیئی کلی تر از آنها را تصور کرد که در بر دارنده آنهاست. این اشیاء کلی را کلاس (رده ) می گویند. میان اشیاء و کلاسها رابطه عضویت (تعلق ) برقرار است. همچنین هر کلاسی می تواند خود عضو کلاس بالاتری باشد و همین طور الی آخر. به این ترتیب میان کلاسها و اشیاء یک سیستم، شبکه ای از ارتباطات سلسله مراتبی پدید می آید که ساختار اشیاء یا مدل اشیاء سیستم را مشخص می کند.
ارتباط میان کلاسها ممکن است به یکی از دو شکل عموم ـ خصوص (مثلا رابطه میان اسناد بانکی و چک ها) یا کل ـ جزء (مثلا دانشگاه ـ دانشکده ) باشد. تحلیل سیستم در روشهای شی ءگرا اساساً عبارت است از شناسایی اشیاء و کلاسهای سیستم و تشخیص روابط میان آنها.
همانگونه که گفته شد، هر شی ء دارای رفتار ویژه خود نیز می باشد که در پاسخ به محرکهای بیرونی از خود نشان می دهد. این محرکها ممکن است از خارج سیستم یا از اشیاء دیگر درون سیستم دریافت شود. این محرکها را در اصطلاح شی ءگرایی، پیام می نامند. عملکرد سیستم، برآیند رفتارهایی است که در اشیاء سیستم از خود نشان می دهند.
ویژگی مهمی که در ارتباط میان دو شی ء (کلاس ـ کلاس یا کلاس ـ شی ء) مطرح می شود، وراثت است. به این معنی که شی ء عضو یک کلاس، بخشی از داده و فرآیندهای شی ء بالاتر را عیناً به ارث می برد. علاوه براین، این شی ء یقیناً دارای داده ها و فرآیندهایی است که در شی ء بالاتر وجود نداشته است. بنابراین در سلسله مراتب اشیاء سیستم، هر داده یا فرآیند تنها به داده هایی دسترسی دارد (یا از داده هایی آگاه است ) که برای انجام عملیات خود به آنها احتیاج دارد.
یک نتیجه دیگر، خصلتی است که از آن به کپسوله سازی تعبیر می شود، به این معنی که هر واحد تفکیک (شی ء) به طور مستقل دارای داده ها و فرآیندهای مورد نیاز خود است و بخشی از این داده ها و فرآیندها ممکن است از دید سایر واحدهای سیستم مخفی باشد. به این ترتیب شی ء ماهیتی تقریباً مستقل از بافت و محیط خود پیدا می کند و می توان آن را در بافت و محیط سیستم دیگری نیز بکار بست. این ویژگی را بازکاربردپذیری می نامند که از مهمترین مزایا و دستاوردهای رهیافت شی ءگرا محسوب می شود.
یکی از ویژگیهای متدلوژیهای شی ءگرا وحدت مفهومی الگوها در کلیه مراحل زیستچرخ توسعه سیستم است. به این معنی که در طی مراحل تحلیل، طراحی و پیاده سازی سیستم، از مفاهیم، اصطلاحات و قالب فکری واحدی استفاده می شود. تحلیل گر کار خود را با شناسایی کلاسها و اشیاء آغاز می کند، طراح مدل منطقی و فیزیکی سیستم را با استفاده از ساختار کلاسها و اشیاء می سازد و برنامه نویس نیز با استفاده از یکی از زبانهای شی ءگرا، این طراحی را به کد تبدیل می کند. حتی برای طراحی بانکهای اطلاعاتی نیز روشها و ابزارهای شی ءگرا وجود دارد. به این ترتیب زبان مشترکی در کلیه مراحل توسعه سیستم به وجود می آید که امر ساخت سیستم و نگهداری و تغییر آن را تسهیل می کند.



در تحلیل و طراحی شی ءگرا پنج فعالیت اساسی زیر باید انجام شود :

·         یافتن کلاس ـ شی ها

·         شناسایی ساختارها

·         تفکیک موضوعی

·         تعریف مشخصه ها

·         تعریف روالها

هرچند این فعالیت ها به مفهوم دقیق کلمه، مراحل متوالی اجرای متدولوژی نیستند و برخی از آنها را می توان جزئاً به صورت موازی انجام داد، با این وجود به خاطر وابستگی موضوعی فعالیت های پسین به فعالیت های پیشین و حرکت تدریجی از کلیات به جزئیات می توان آنها را هم ارز مراحل پیشرفت متدلوژی به مفهوم متداول آن شمرد.
در این بخش اهداف و جزئیات هر مرحله (فعالیت ) شرح داده شده است :

 

1. یافتن رده ـ شی ها
هدف اصلی تحلیل گر در این مرحله، کسب شناخت از قلمرو کار سیستم و تشخیص رده ها و اشیایی است که نقش اساسی در کارکرد آن بازی می کنند. نوع اقداماتی را که در این مرحله انجام می شود، می توان با اولین مراحل مدلسازی داده ها در روشهای کلاسیک ساخت یافته مقایسه کرد. در آن روشها، تحلیل گر از طریق مطالعه قلمرو کار و یا روشهایی مانند مصاحبه، مرور مدارک و... سعی می کند هستنده های عمده و اساسی سیستم را شناسایی و ثبت کند. در
OOA نیز وظیفه تحلیل گر در این مرحله، کشف و شناسایی رده ها و اشیای مهم سیستم است. برای این کار او باید مدارک موجود را مطالعه کرده، با افراد مختلفی مصاحبه کند و احیاناً سیستم های موجود یا مرتبط را بررسی نماید.
عمل اساسی تحلیل گر، به عنوان استخراج رده ها و اشیاء از قلمرو کار توصیف شده است. یک کلاس ـ شی ء که آنرا با نماد زیر نشان می دهند، واحدی است متشکل از یک کلاس و اشیایی که در آن رده قرار می گیرند.


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

·         شیء، مدل تجریدی چیزی است که در قلمرو کار وجود دارد.

·         اطلاعاتی که در مورد هر شی ء می خواهیم در سیستم نگهدای کنیم، مشخصه های شی ء می نامیم.

·         اندرکنش میان هر شی ء و دیگر اشیاء روالها (یا خدمات ) شی ء نامیده می شود.

·         کلاس، مجموعه ای است از اشیایی که اطلاعات و اندرکنشهای مشترک دارند.

مهمترین و حساس ترین وظیفه تحلیل گر در این مرحله، تشخیص و شناسایی صحیح اشیاء در قلمرو کار است. کد و یوردون چند ضابطه زیر را به عنوان ملاکهای تشخیص اشیاء و کلاس های سیستم برمی شمرند :

·         ماندگاری اطلاعاتی ؛ آیا هیچ یک از داده های مربوط به شی ء لازم است در سیستم حفظ شود؟ اگر چنین نیست، احتمالا این شی ء را نباید جزء اشیاء سیستم به شمار آورد.

·         ماندگاری عملیاتی ؛ آیا هیچ یک از عملیات یا پردازشهای مربوط به شی ء لازم است در سیستم حفظ شود ؟ اگر چنین نیست، احتمالا لزومی به وارد کردن شی ء در اشیاء؛ سیستم نمی باشد. اگر برای شیئی، نه داده و نه پردازش ماندگاری وجود نداشته باشد، یقیناً می توان آن را از مجموعه اشیاء سیستم ها خارج کرد.

·         بیش از یک مشخصه ؛ اشیاء سیستم معمولا باید بیش از یک مشخصه داشته باشند.

·         بیش از یک شی ء در یک کلاس ؛ آیا همه مشخصه های تعیین شده، به همه اشیاء عضو کلاس قابل اطلاق هستند ؟ اگر چنین نباشد، احتمالا باید آن کلاس را به دو یا چند کلاس (به صورت سلسله مراتبی ) تجزیه کرد.

·         قابلیت اطلاق عملیات ؛ آیا همه عملیات (خدمات ) تعیین شده، به همه اشیاء عضو کلاس قابل انتساب هستند ؟ اگر چنین نباشد، مشابه ضابطه فوق، باید کلاس های فرعی ایجاد کرد.

·         وجود اشیاء در قلمرو کار ؛ همه اشیاء سیستم را باید از قلمرو کار (مسأله ) استخراج کرد و نه از راه حلهای مسأله. به عنوان مسأله در یک سیستم ثبت نام دانشگاه، "دانشجو" شیی است که در قلمرو کار مستقیماً وجود دارد. اما چیزی مانند "فرم ثبت نام "، علیرغم آنکه در جهان خارجی واقعاً وجود دارد، وجودش وابسته به نحوه پیاده سازی یکی از راه حلهای سیستم است. به عبارت دیگر می توان راه حلی برای پیاده سازی سیستم تصور کرد که در آن شی ء "فرم ثبت نام " وجود نداشته باشد.

·         اجتناب از اشیاء مشتق ؛ اشیاء مشتق، اشیایی هستند که می توان آنها را از سایر اشیاء یا مشخصه ها استخراج کرد، اینگونه اشیاء را نباید جزو اشیاء واقعی سیستم به شمار آورد.

نتیجه این مرحله، تهیه فهرست کلاس ها و اشیاء سیستم است که به نحو مناسبی می توان آنها را در ارتباط با یکدیگر مستند کرد.

 

2. شناسایی ساختارها
کلاس ها و اشیاء پایه ای سیستم که در مرحله قبل فهرست آنها تهیه شده، در این مرحله باید در یک مدل رابطه ای سازماندهی شوند. به این معنی که ارتباط میان آنها کشف و مدلسازی شود.
کود و یوردون دو شکل اساسی زیر را برای ارتباط میان کلاس ها پیشنهاد کرده اند.

·         ساختار عموم ـ خصوص ؛ در این نوع ارتباط که آن را به اختصار gen-spec می نامند، یک کلاس عمومی به دو یا چند کلاس فرعی مرتبط می شود. به عنوان مثال کلاس "کارکنان " را می توان به دو کلاس "کارکنان تمام وقت " و "کارکنان پاره وقت " تجزیه کرد. این نوع رابطه بین کلاس ها را با نماد زیر نشان می دهند.


·         ساختار کل - جزء ؛ رابطه کل ـ جزء میان چند کلاس برقرار است که یکی از آنها دربرگیرنده بقیه محسوب می شود. این رابطه ممکن است به یکی از اشکال زیر برقرار باشد:

o    رابطه یک کلاس کلی و اجزاء تشکیل دهنده آن ؛ مثلا بین یک سازمان و واحدهای مختلف آن

o    رابطه ظرف و مظروف ؛ مثلا بین یک کلاس درس و صندلی های موجود در آن

o    رابطه مجموعه و اعضای آن ؛ مثلا یک دانشکده و اساتید آن

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


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

 

3. تفکیک موضوعی
تفکیک موضوعی که می توان آن را شناسایی موضوعات نیز نام نهاد، مرحله ای است که در آن مدل تولید شده در مراحل قبل که شامل فهرست و ساختار کلاس ها و اشیاء سیستم است، به محدوده های موضوعی مختلف تفکیک می شود. این کار ممکن است در سیستم های کوچک تر ضروری نباشد، اما در سیستم هایی که بیش از 20 تا 30 کلاس در آنها شناسایی شده است، بدون تفکیک موضوعی نمی توان تحلیل و طراحی را به خوبی پیش برد.
مرحله تفکیک موضوعی در روش
OOA مشابه خوشه سازی فعالیت ها در رهیافت های سنتی می باشد. تحلیل گر باید با دریافت نظرات کاربران، کلاس های شناسایی شده را در چند محدوده موضوعی شامل کلاس های مرتبط با هم تقسیم بندی کند. حاصل کار در این مرحله به تولید مدلی منجر می شود که شامل فهرست محدوده های موضوعی و کلاس های موجود در هر محدوده است. این مدل را لایه موضوعی سیستم می نامند که مکمل لایه ساختاری سیستم است.
به عنوان مثالی از لایه موضوعی در یک سیستم، می توان به تقسیم بندی تراکنش های یک مؤسسه بانکی به دریافت، پرداخت، گشایش اعتبار و تهاتر اشاره کرد.
باید توجه کرد لایه موضوعی، خود ساختاری سلسله مراتبی دارد. یعنی هر موضوع ممکن است از چند موضوع فرعی تشکیل شده باشد و همین طور الی آخر.

 

4. شناسایی مشخصه ها
در این مرحله مشخصه های کلاس ـ شی ءها تعیین می گردد. این مرحله با مرحله تعیین مشخصه ها در مدل داده ای روشهای سنتی متناظر است. نام مشخصه هایی که برای هر شی ء تعریف می شوند، در قسمت میانی نماد کلاس ـ شی ء نوشته می شود.
تعیین رابطه بین کلاس ـ شی ءها مهم در همین مرحله انجام می شود. اگر بین دو کلاس ـ شی ء ارتباطی وجود داشته باشد (در واقع بین مصداقهای آنها رابطه ای باشد)، این ارتباط با خطی که بین نماد دو کلاس ـ شی ء کشیده می شود، نمایش داده می شود. چندبه چندی رابطه نیز در دو انتهای خط فاصل نوشته می شود.
در
OOA ملاحظات مربوط به پیاده سازی بانک اطلاعاتی، مانند بهنجارسازی یا تعیین کلیدها در مراحل بعد (طراحی ) انجام می شود.

 

5. تعریف فرآیند
منظور از فرآیند (که در روشهای مختلف شی ءگرایی به آن خدمت ، روش یا رفتار نیز گفته می شود) عملیاتی است که یک شی ء در پاسخ به دریافت یک پیام انجام می دهد. در این مرحله از
OOA، فرآیندهای کلاس ـ شی ءها تعیین می گردد. یک راه برای تعیین
فرآیندهای لازم، تعریف فرآیندهایی است که برای تغییر دادن حالت شی ءها لازم به نظر می رسد. به این منظور می توان به مدل داده ای تهیه شده در مرحله قبل مراجعه کرد. برخی از فرآیندهای دیگر از اعمال فرآیندهای اساسی ایجاد، حذف و دسترسی به شی ءهای مختلف حاصل میشود.
غیر از این اعمال اساسی، بقیه فرآیندها به دو دسته کلی تقسیم می شوند :

·         فرآیندهای محاسباتی

·         فرآیندهای مرتبط با محیط خارجی، یعنی فرآیندهایی برای کشف و پاسخگویی به رویدادها.

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



ابزارهایی که در روش طراحی شی ءگرا از آنها استفاده میشود، تا حد زیادی با ابزارهای سایر روشهای سنتی متفاوتند. هرچند این ابزارها در متدلوژیهای مختلف شی ءگرا فرق می کند، با این وجود برخی از ابزارهای نمونه ای که در مجموع این روش ها به کار می رود، عبارتند از :

·         نمودار کلاس ها

·         نمودار شی ءها

·         نمودارهای پیمانه ای

·         نمودارهای فرآیند

·         نمودار تبدیل حالت

·         نمودار زمانبندی

·         نمودار وراثت



شی ءگرایی یک روش مدلسازی و ساخت سیستم هاست که آن را می توان تقریباً در تمام حوزه های سنتی کاربرد سیستم ها به کار بست. با این وجود تاکنون این روش بیشتر در مورد طراحی و ساخت سیستم های کنترل صنعتی، سیستم های کنترل بیدرنگ ، سیستم های عامل همه منظوره یا ویژه و سیستم های اطلاعات جغرافیایی (GIS) به کار رفته است. در اینگونه سیستم ها، طبیعت و ماهیت قلمرو کار مدلهای شی ءگرا را ایجاب می کند. عناصر سیستم در چنین حالتهایی، واحدهای خودکار و نسبتاً مجزایی هستند که برحسب دریافت پیام های داخلی یا محیطی از خود واکنش نشان می دهند و کارکرد کل سیستم از برآیند همین واکنشها شکل می گیرد.
با وجود توسعه نسبتاً موفق متدلوژیهای شی ءگرا در دهه 1990میلادی و وجود ابزارهای قوی برای پشتیبانی این روشها، گزارشی از کاربرد وسیع این متدلوژیها در عرصه تحلیل و طراحی سیستم های اطلاعاتی در دست نیست. تحقیقی که در سال 1991در مورد میزان به کارگیری متدلوژیهای مختلف توسعه سیستم صورت گرفته است، نشان می دهد که تنها 3 تا 5درصد عملیات مهندسی نرم افزار به صورت جدی به شی ءگرایی اختصاص دارد. می توان فرض کرد که همین میزان اندک نیز بیشتر در لایه های پیاده سازی و ساخت واسط کاربر به کار رفته است. کاربرد روش شی ءگرا در تحلیل و طراحی سیستم ها، بویژه در مورد سیستم های بزرگ و بسیار بزرگ، مستلزم غلبه بر پیچیدگی های مفهومی و ابزاری بسیاری است که معمولا از عهده متخصصین عادی خارج است. در مورد آینده متدلوژیهای شی ءگرا از نظر کاربردپذیری و رواج استفاده، عملا نمی توان اظهار نظر قطعی کرد.



شرکتهای متعددی در سطح بین المللی وجود دارند که از متدلوژی شی ءگرا پشتیبانی می کنند. این پشتیبانی شامل آموزش، انتقال فن آوری، مشاوره و ارائه مدلهای قالبی برای کاربردهای مختلف می گردد. هزینه برخورداری از این خدمات هنوز بسیار بالاست و استفاده از آن را در پروژه های کوچک، عملا غیرممکن می سازد، از سوی دیگر باید اذعان کرد که از نظر آموزشی عمومی مهارتهایی که برای تحلیل و طراحی شی ءگرا لازم است، در سطح دانشگاهی، تاکنون پیشرفت چندانی صورت نگرفته است و تحلیل گرانی که بخواهند این روشها را فرا گیرند، ناگزیر از مراجعه به کتابهای تخصصی و یا شرکت در دوره ای ویژه هستند.



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

1. مزایا

·         یکپارچگی ؛ مهمترین مزیت متدولوژیهای شی ءگرا، یکپارچگی مفهومی و ابزاری آنهاست. به این معنی که در طول زیستچرخ توسعه سیستم ها، از تحلیل گرفته تا پیاده سازی برای استفاده از روشهای شی ءگرا، مفاهیم، واژگان و مدلهای نسبتاً واحد و نزدیک به هم، به کار برده می شود. مفاهیمی چون شی ء، کلاس، وراثت، چندریختی و... هم در تحلیل و طراحی شی ءگرا مصداق دارند و هم در برنامه نویسی با زبانهای شی ءگرا. به این ترتیب زبان یکدست و واحدی به وجود می آید تا همه دست اندرکاران تهیه سیستم با استفاده از آن، با یکدیگر ارتباط برقرار کنند.

·         بازکاربردپذیری ؛ رهیافت شی ءگرا به تولید واحدهایی از مدل، بانک اطلاعاتی و برنامه می انجامد که می توان آنها را مکرراً در پروژه ها یا سیستم های دیگری بکار بست. مدافعین شی ءگرایی وضعیتی آرمانی در آینده را تصویر می کنند، که در آن کار تحلیل گر، طراح یا برنامه نویس صرفاً جستجو و گزینش واحدهای مناسب موضوع برای ساختن مدلها، طراحی بانکهای اطلاعاتی یا ایجاد برنامه های کاربردی خواهد بود. هرچند می توان نسبت به تحقق چنین وضعیتی تردید جدی روا داشت، با این وجود، قابلیت کاربردپذیری مجدد بسیاری از فرآورده های روشهای شی ءگرا را نمی توان نادیده انگاشت.

·         سازگاری با تغییرات ؛ مدلهایی که با استفاده از روشهای OOA ساخته می شوند، در مقابل تغییرات نسبتاً انعطاف پذیری بالایی دارند و بسادگی می توان این مدلها را همگام با تغییرات، بهنگام کرد.

2. معایب

·         دشواری ؛ مفاهیم و روشهای طراحی شی ءگرا نسبتاً پیچیده است و به ویژه برای تحلیل گران و طراحانی که با روشهای ساخت یافته سنتی پرورش یافته اند، انس و آشنایی با قالب فکری شی ءگرا معمولا دشوار است.

·         عدم رواج ؛ تعداد شرکتها و گروههایی که بتوانند پروژه های توسعه سیستم را با استفاده از روشهای OOA به صورت موفقیت آمیزی اجرا کنند، بسیار اندک است. به همین دلیل ایجاد و نگهداری سیستم ها با استفاده از روشهای شی ءگرا مستلزم هزینه نسبتاً بالایی است که در مورد پروژه های کوچک و متوسط مقرون به صرفه نمی باشد.

·         تلفیق ناپذیری با سایر روشها ؛ روشهای ساخت یافته سنتی در الگوی مفهومی و ابزارها و مراحل تا حد زیادی با هم اشتراک دارند. به همین دلیل برای پیاده سازی سیستم هایی که با این روشها تهیه می شوند، گزینه های متعددی با تلفیق و ترکیب متدلوژیها قابل انتخاب است. اما روشهای شی ءگرا به دلیل پیروی از یک قالب فکری کاملا مجزا، بسادگی قابلیت تلفیق و ترکیب با بقیه روشها را ندارند.

3. جمع بندی
در مجموع پیروی از متدولوژیهای شی ءگرا در تحلیل و طراحی نظام آمارهای ثبتی توصیه نمی شود. زیرا زیرساخت انسانی و فنی استفاده از این روشها به ویژه در کشور ما هنوز به حد کافی توسعه نیافته است و از سوی دیگر در این مورد به نظر می رسد می توان از روشهای ساده تری که در خور ماهیت اساساً داده گرای این سیستم ها نیز باشند، استفاده نمود.

 


دانشگاه آزاد اسلامی واحد لاهیجان

اگر هنر نبود حقیقت( واقعیت) ما را نابود می کرد. (نیچه)