عناوين



 اخبار


برگزیده


امنيت


مقاله


گزارش و گفتگو


ياداشت


اخبار شرکتها


همايشها



فراخوانها و آئين نامه ها


عکس و ویدئو

 
  خدمات



نسخه موبایل



خروجی پیامک



خروجی RSS



عضویت در خبرنامه ها

 

راهنما
تبليغات


 

سفارش آگهی
مقاله
جمعه، 30 بهمنماه 1383

12:45 PM

February 18, 2005


مدلسازى (Modeling)

نوشته : ساسان نیکوکار


امروزه یك سازمان نرم‏افزارى موفق سازمانى است كه بتواند بسادگى نرم‏افزارهایى را تولید كند كه نیازهاى كاربران در آن دیده شده باشد. چنین سازمانى كه بتواند چنین نرم‏افزارى را با روشها و ابزار مؤثر و در زمان مناسب پیاده‏سازى كند، مى‏تواند در امر تجارت موفق باشد. محصول اولیه یك تیم تولید نرم‏افزار، بهینه نمى‏باشد و شعار نمى‏دهد بلكه مهم است كه نرم‏افزارى را پیاده‏سازى كرده باشد كه نیازهاى كاربران و تجارت را برآورده سازد. بقیه موارد حالت ثانویه به حساب مى‏آیند. نكته مهمى در این شعار وجود دارد. متأسفانه بسیارى از سازمانهاى نرم‏افزارى درگیر حالت ثانویه مى‏باشند. براى پیاده‏سازى نرم‏افزارى كه اهداف موردنظر را برآورده سازد، شما باید كاربران را ملاقات كنید تا نیازهاى واقعى سیستم شما بدست آید. مى‏توان گفت براى اینكه شما در نهایت بتوانید نرم‏افزارى با كیفیت بالا به وجود آورید، باید داراى افراد و ابزارى مناسب به همراه هدف مشخص و واضحى باشید.


مدل كردن، قسمت مركزى تمامى فعالیتهایى است كه پیاده‏سازان نرم‏افزارى را به سمت تولید یك محصول مناسب راهنمایى مى‏كند. ما سیستم‏ها را مدل مى‏كنیم براى اینكه رفتارها و ساختارهایى را كه در سیستم خود مى‏خواهیم بصورت كتبى داشته باشیم، ما مدل مى‏كنیم تا بتوانیم معمارى سیستم خود را كنترل كنیم و بتوانیم سیستمى را كه در حال ساختن آن مى‏باشیم بهتر درك كنیم، امكان Reuse را در سیستم داشته باشیم و همچنین ریسكهاى پروژه را مدیریت كنیم.


بسیارى از سازمانهاى نرم‏افزارى شروع به انجام كارهاى بزرگ مى‏كنند، ولى مشكل اصلى این است كه آنها همانند ساختن لانه براى پرنده‏ها عمل مى‏كنند (براى ساختن لانه پرنده مى‏توان با تعدادى تخته و میخ و بدون نیاز به نقشه اقدام به ساخت لانه كرد).


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


عناصر زیادى در موفقیت یك پروژه نقش دارد كه یكى از آنها كه در همه رعایت مى‏شود، مدلسازى است. ما مدل مى‏كنیم تا كاربران تصویرى ازمحصول نهایى را مشاهده كنند، ما حتى مدل مى‏كنیم تا ریسكهایى هایى را كه بر سرراه پروژه قرار دارد پیدا كنیم. پس مى‏توان گفت كه مدلسازى در اصل یك كار تكنیكى است.


مدلسازى چیست؟


یك مدل ساده شده هستى است كه وجود دارد. در اصل مدل یك نقشه از سیستم را فراهم مى‏كند. مدلها ممكن است دربرگیرنده جزئیات یك برنامه باشند. پس به طور كلى مى‏توان گفت كه یك مدل خوب، مدلى است كه تمام عناصر درگیر در پروژه و روابط بین آنها و نحوه اثرگذارى آنها را مشخص كند. هر سیستمى ممكن است توسط چندین مدل شرح داده شود و در هر مدلى یك نقشه شماتیكى وجود دارد كه بر تشریح سیستم مى‏پردازد. پس با این همه چرا ما مدل مى‏كنیم؟


ما مدل مى‏كنیم تا كه سیستمى را كه مى‏خواهیم پیاده‏سازى كنیم بهتر درك كنیم‏


از مدلسازى به چهار نتیجه مى‏رسیم:



  • مدلها به ما كمك مى‏كنند كه سیستمى را كه مى‏خواهیم به آن برسیم بهتر تصور كنیم.
  • مدلها به ما اجازه مى‏دهند تا ساختار و رفتار سیستم را مشخص كنیم.
  • مدلها ما را در جهت ساخت صحیح سیستم راهنمایى مى‏كنند (براى ما الگوهایى (Pattern) را ایجاد مى‏كنند كه مى‏توانیم در پروژه‏هاى بعدى خود از آنها استفاده كنیم. این كار باعث افزایش امكان Reuse در پروژه مى‏شود).
  • مدلها تصمیماتى را كه در جهت كاربردى سیستم باید گرفته شوند مستند مى‏كنند.

ما در اصل مدلها را براى سیستمهاى پیچیده ایجاد مى‏كنیم. زیرا نمى‏توانیم آنها را یكجا تصور كنیم. انسان توانایى درك چیزهاى پیچیده را ندارد و در درك آنها محدودیت دارد. ولى با مدل سازى در هر نسخه روى یك جزء از سیستم كار مى‏شود، باید توجه داشت كه مدل‏سازى مى‏تواند روى تخته، كاغذ، كارتهاى CRC و... صورت گیرد. ولى چیزى كه مهم است مدل كردن سیستمهاى پیچیده مى‏باشد و شكستن آنها به سیستمهاى كوچكتر كه قابل درك بوده و به راحتى قابل پیاده‏سازى مى‏باشند.


اصول مدلسازى:


تجربه چهار اصل را براى مدلسازى پیشنهاد مى‏كند:


اول: انتخاب مدلهایى كه براى ساخت داراى تأثیرات كارآمد و عمیقى بر روى اینكه چگونه مى‏توان به یك مشكل حمله كرد و چگونه مى‏توان براى آن راه‏حل پیدا كرد مى‏باشند.


به معنى دیگر مدل خود را خوب انتخاب كنید. یك مدل خوب مشكلات موجود در سرراه پیاده‏سازى را تصویر مى‏كند و مسیرى را كه راهى مناسبتر از آن پیدا نمى‏كنید پیشنهاد مى‏دهد، ولى مدلهاى نامناسب شما را به بى‏راهه راهنمایى خواهند كرد. در تولید نرم‏افزار مدلهایى را كه شما انتخاب مى‏كنید مى‏توانند تاثیر زیادى بر روى دید شما به مسائل داشته باشند. اگر شما یك سیستمى را بعنوان پیاده‏ساز یك بانك اطلاعاتى درنظر داشته باشید، به احتمال زیاد روى روابط موجودیتى كه رفتارشان همانند triggerها و Store Procedureها مى‏باشد تمركز خواهید كرد. اگر شما سیستمى را بعنوان یك آنالیست مشاهده كنید، مدلها را به احتمال زیاد از دید الگوریتم و جریان داده‏هایى كه بین پروسس‏ها در حال حركت مى‏باشند بررسى مى‏كنید. پس نتیجه مى‏شود كه هر مدل دیدى به سیستم ما مى‏دهد كه این دیدها، گوناگون بوده و هزینه و سودهاى خاص خود را دارند.


دوم: هر مدلى بسته به شرایط باید از لایه‏هاى گوناگونى بررسى شود. این مسئله هم در دنیاى واقعى و هم در صنعت نرم‏افزار صادق است. گاهى یك مدل سریع و راحت همانند User Interface مشخص مى‏كند كه ما نیازمند چه مى‏باشیم. این مسئله در تعیین Platform، شبكه و مسائلى از این قبیل حائز اهمیت مى‏باشد.


بهترین مدلها آنهایى هستند كه اجازه دهند شما جزئیات و وابستگى‏هاى سیستم خود را بشناسید و متوجه شوید كه به كدام علت به آنها در سیستم خود نیازمند باشید. در بسیارى از مدلها یك طراح یا كاربر مى‏خواهد بر روى «چه چیز» متمركز شود و یك پیاده‏ساز مى‏خواهد بر روى «چه طور» تمركز كند، هر دوى اینها مى‏خواهند یك سیستم را در لایه‏ها و زمانهاى مختلف تصویر كنند.


سوم: بهترین مدلها آنهایى هستند كه به واقعیت نزدیك و در ارتباط با آن باشند. مدل مناسب باید با دنیاى واقعى مرتبط باشد و مشخص كند كه در كدام قسمتها داراى ضعف مى‏باشد. در اصل تمامى مدلها حالت ساده شده‏اى از دنیاى واقعى هستند، نكته اصلى در مدل این است كه جزئیات اصلى و مهم سیستم از قلم انداخته نشده باشد.


در نرم‏افزار، نقطه ضعف در از بین رفتن ارتباط بین مدل آنالیز شده و مدلى كه طراحى مى‏شود مى‏باشد. این شكاف بین مدلها باعث ایجاد شكافهاى بیشترى در پروژه در زمانهاى مختلف خواهد بود.


چهارم: هیچ مدلى به تنهایى كارایى كافى ندارد. هر سیستم بزرگى بهتر است كه داراى خط مشیى باشد كه به سمت یك مجموعه از مدلهاى كوچك با كمترین وابستگى حركت كند. اگر شما سازنده یك ساختمان باشید، هیچ نقشه‏اى وجود ندارد كه تمام جزئیات را براى شما مشخص كرده باشد. در حداقل شرایط شما به چندین نقشه مانند برق ساختمان، طبقات، لوله‏كشى و... نیازمند باشید. شاید جمله سؤال برانگیز، وجود كلمه «با كمترین وابستگى» در اصل چهارم مى‏باشد. این به معناى داشتن مدلهایى است كه مى‏توانند بطورى مستقل و جداگانه ساخته شده و استفاده شوند. اما هنوز هم بر همدیگر وابستگى دارند. مثلاً در نقشه ساختمان، نقشه برق ساختمان یك نقشه جداگانه و كامل مى‏باشد كه مى‏تواند پیاده‏سازى شود، ولى هنوز بر نقشه بناى ساختمان وابستگى دارد زیرا با تغییر در آن ممكن است نقشه برق نیز دچار تغییر شود. این واقعیت در سیستمهاى نرم‏افزارى شى‏ءگرا صادق است. براى درك معمارى چنین سیستمهایى شمانیازمند چندین View بهم مرتبط مى‏باشید كه شامل موارد زیر مى‏باشد.


- Usecase View (نیازمندیهاى سیستم را مشخص كرده و نمایش مى‏دهد).


- Design View (پیداكردن مشكلات سیستم و مشخص كردن راه‏حلهاى مربوط به آنها).


- Process View (پردازش Threadهاى موجود در سیستم را در قالب توزیع شده مدل مى‏كند).


- Development View (پیاده‏سازى و اداره كردن درك فیزیكى سیستم را برعهده دارد).


- Deployment View (بر روى مهندسى و تكنولوژى گسترش برنامه متمركز مى‏باشد).


هر كدام از دیدها ممكن است داراى ساختار گوناگونى باشند ولى درمجموع همه آنها نقشه یك سیستم نرم‏افزارى را نشان مى‏دهند. البته باید توجه داشت كه در سیستمهاى گوناگون هر كدام از این مدلها ممكن است داراى اهمیت بیشترى نسبت به دیگر مدلها باشند. مثلاً در Graphic User interface(GUI) دیدهاى Usecase مهم است. در سیستمهاى Realtime دید پردازشى مهم است و در برنامه‏هاى تست و Web دید پیاده‏سازى و گسترش برنامه از اهمیت بالایى برخوردار است.


امروزه یك سازمان نرم‏افزارى موفق سازمانى است كه بتواند بسادگى نرم‏افزارهایى را تولید كند كه نیازهاى كاربران در آن دیده شده باشد. چنین سازمانى كه بتواند چنین نرم‏افزارى را با روشها و ابزار مؤثر و در زمان مناسب پیاده‏سازى كند، مى‏تواند در امر تجارت موفق باشد. محصول اولیه یك تیم تولید نرم‏افزار، بهینه نمى‏باشد و شعار نمى‏دهد بلكه مهم است كه نرم‏افزارى را پیاده‏سازى كرده باشد كه نیازهاى كاربران و تجارت را برآورده سازد. بقیه موارد حالت ثانویه به حساب مى‏آیند. نكته مهمى در این شعار وجود دارد. متأسفانه بسیارى از سازمانهاى نرم‏افزارى درگیر حالت ثانویه مى‏باشند. براى پیاده‏سازى نرم‏افزارى كه اهداف موردنظر را برآورده سازد، شما باید كاربران را ملاقات كنید تا نیازهاى واقعى سیستم شما بدست آید. مى‏توان گفت براى اینكه شما در نهایت بتوانید نرم‏افزارى با كیفیت بالا به وجود آورید، باید داراى افراد و ابزارى مناسب به همراه هدف مشخص و واضحى باشید.


مدل كردن، قسمت مركزى تمامى فعالیتهایى است كه پیاده‏سازان نرم‏افزارى را به سمت تولید یك محصول مناسب راهنمایى مى‏كند. ما سیستم‏ها را مدل مى‏كنیم براى اینكه رفتارها و ساختارهایى را كه در سیستم خود مى‏خواهیم بصورت كتبى داشته باشیم، ما مدل مى‏كنیم تا بتوانیم معمارى سیستم خود را كنترل كنیم و بتوانیم سیستمى را كه در حال ساختن آن مى‏باشیم بهتر درك كنیم، امكان Reuse را در سیستم داشته باشیم و همچنین ریسكهاى پروژه را مدیریت كنیم.


بسیارى از سازمانهاى نرم‏افزارى شروع به انجام كارهاى بزرگ مى‏كنند، ولى مشكل اصلى این است كه آنها همانند ساختن لانه براى پرنده‏ها عمل مى‏كنند (براى ساختن لانه پرنده مى‏توان با تعدادى تخته و میخ و بدون نیاز به نقشه اقدام به ساخت لانه كرد).


اگر شما واقعاً مى‏خواهید كه نرم‏افزارى را بدون هدف و در كمترین زمان ممكن تولید كنید مشكلات این كار فقط نوشتن خود برنامه مى‏باشد، ولى در واقع هدف اصلى ایجاد یك نرم‏افزار صحیح مى‏باشد و پیاده‏سازى یك نرم‏افزار كارا وابسته است بر ابزار، فعالیتها و معمارى كه آن نرم‏افزارى استفاده مى‏كند. بسیارى مواقع پروژه‏ها بصورت كوچك شروع مى‏شوند ولى پس از مدتى به پروژه‏هاى بزرگ تبدیل مى‏شوند، بخاطر آنكه آنها موفقیت كارى خودشان را در این راه قربانى مى‏كنند.




لینک ثابت || اضافه شده توسط آرش کریم بیگی|| نسخه قابل چاپ || بازگشت به صفحه اصلی || آرش کریم بیگی

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


فهرست آخرین عناوین

 
    تبليغات  
 







 
  سفارش آگهی