بایگانی

بایگانی بهمن

سر فصل و منابع درس مهندسی نرم افزار

سرفصل و منابعی که توسط وزارت علوم برای درس مهندسی نرم افزار ۱ و ۲ در نظر گرفته شده است.

 

مهندسی نرم افزار ۱

سر فصل مطالب

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

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

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

مراجع

۱٫       Bentley, Barlow and Toppan, System Analysis and Design Methods, 199.

۲٫       Yourdon, Modern Structured Analysis, Perntice-Hall, 1989.

۳٫       Fitsgerald and A. Fitzgerald, Fundamentals of System Analysis, 3rd Edition, John Wiley, 1987.

۴٫       Hawryszkiewgcz, Introduction to System Analysis and Design, 2nd Edition, Prentice-Hall, 1992.

۵٫       E.M.Awad, System Analysis and Design, 2nd Edition 1985.

۶٫        K.E.Kendall and J.E. Kendall, Systems Analysis and Design, 2nd Edition, Prentice-Hall, 1992.

۷٫       B. Boehm, Software Engineering, 4th Edition, Addison-Wesley, 1996.

۸٫       A. Sommerville, Software Engineering, 4th Edition, Addison-Wesley, 1996.

۹٫        R. S. Pressman, Software Engineering, A Practitioners Approach, 4th Edition, Mc Graw Hill, 1996.

 

مهندسی نرم افزار ۲

سر فصل مطالب

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

مراجع

۱٫       A. Sommerville, Software Engineering, 4th Edition, Addison-Wesley, 1996.

۲٫       R. S. Pressman, Software Engineering, A Practitioners Approach, 4th Edition, Mc Graw Hill, 1996.

۳٫       D. Bell, I. Morrey and J. Pavgh, Software Engineering, A Practical Approach, Prentice-Hall, 1992.

۴٫       I. Jacobson, Object-Oriented Software Engineering, John Wiley, 1993. 

 

برای یک دوست

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

اگر می خواهی حقیقت را بشناسی، هیچ گاه باور نکن. نمی گویم که یک بی اعتقاد شو، زیر این نیز یک باور است. یک باور منفی، یک ضد باور …

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

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

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

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

یک مسیح بودن زیبا است اما یک مسیحی بودن نه.

اشو

جملات بالا را نوشتم چون تجربه کردم که من، شما و اکثر افرادی که در این دنیا زندگی می کنیم به شرطی شدن دچار شده ایم. و در بعضی از روزها بیشتر از همیشه به خاطر این شرطی شدن رنج می کشم. مثل این روز ها

(ایام محرم) ، همه حسین را باور دارند، ولی کسی از ما می تواند بار دیگر در شرایط مشابه حسین بودن را تجربه کند. من که ….

حسین باشیم نه حسینی.

 

Categories: غیرفنی Tags:

Adapter Pattern

Adapter Pattern:

الگوی سازگارساز (وفق دهنده، مبدل، Adapter Pattern)، الگوی است که در دنیا واقعی نمونه های زیادی از این الگو وجود دارد و به همین خاطر درک این الگو زیاد مشکل نخواهد بود.

شکل زیر را در نظر بگیرید و فرض کنید که کامپیوتر laptop شما دارای دو شاخه ای به شکل زیر است ولی پریز های برقی که در دیوار نصب شده است به شکلی است که در سمت چپ تصویر نشان داده شده است. شما برای استفاده از لپ تاپ خود در این محل چه کاری را انجام می دهید؟

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

مثال بالا یک مثال از دنیا واقعی بود. ولی یک وفق دهنده شی گرا چست؟ وفق دهنده های شی گرا دقیقا کار مشابهی را انجام می دهند. آنها یک اینترفیس را به گونه ای تغییر می دهند که سرویس گیرنده ها انتظار آنرا دارند.

وفق دهند های شی گرا:

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

برای حل این مشکل شما چیکار می کنید؟ می توانید سیستم نرم افزاری موجود را به گونه ای باز نویسی کنید که با کلاس هاس جدید همخوانی داشته باشد. یا کلاس های جدید را به گونه ای تغییر می دهید که با سیستم موجود همخوانی داشته باشد. اما آیا راه حل کم هزینه تری وجود ندارد که بدون تغییر هیچ کدام از سیستم ها، سیستم کار خود را انجام دهد. شما می توانید یک کلاس بنویسید که اینترفیس فروشندگان را به گونه ای تغییر بدهد که سیستم موجود انتظار دارد.

 

 

Adapter(سازگار ساز، وفق دهنده) مانند یک واسطه عمل می کند و درخواست های را که از سیستم موجود می رسد دریافت می کند و آنها را به شکلی تغییر می دهد و برای کلاس مورد نظر در سیستم فروشندگان ارسال می کند که قابل درک و اجرا برای آن کلاس باشد.

 

برای نمونه در شکل بالا کلاس کلاینت متدی به نام Max را که در اینترفیس Math1 تعریف شده است را نیاز دارد. ولی کلاس های که این اینترفیس را پیاده سازی می کنند. عملی را که کلاس کلاینت در نظر دارد انجام نمی دهند. ولی اینترفیس Math2 دارای عملی به نام Maxvalue است که توسط کلاس Imp2 پیاده سازی شده است و دقیقا خواسته کلاس کلاینت را انجام می دهد ولی با یک اینترفیس دیگر. برای حل این مشکل چه پیشنهادی دارید؟

برای حل این مشکل ما از یک مبدل (Adapter)، استفاده می کنیم. یعنی یک کلاس جدید تعریف می کنیم که اینترفیسی را که کلاس کلاینت می شناسد پیاده سازی می کند. ولی عمل Max را طوری سر بار گذاری می کنیم که وقتی آن فراخوانی می شود. عمل Maxvalue از کلاس Imp2 را فراخوانی کند.

 

 

نمودار کلاس Adapter:

نمودار کلاس الگو به صورت زیر است:

 

 

 

ستایش …

بهترین بخش را در هر فرد بجوی، و این را به او بگو. همه ما به چنین محرکی نیازمندیم، هر بار که از کار من ستایش می شود، فروتن می شوم، چون احساس نادیده گرفته شدن یا نا خوشایند بودن نمی کنم.

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

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

Categories: غیرفنی Tags: