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

Download Report

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

‫مهندسی نرم افزار‬
‫تهیه و گردآوری‪ :‬فهیمه باعثی‬
‫دانشجویان محترم لطفا در هنگام تحویل تمرین ها به نکات زیر توجه نمائید‪:‬‬
‫‪ ‬تمرینات و تحقیقات محوله در هر جلسه فقط و فقط در جلسه بعد همان درس‬
‫تحویل گرفته می شود‪.‬‬
‫‪ ‬تمرینات می بایست خوانا و مرتب در برگه ای که نشان از ادب و نظم شما دارد‬
‫نوشته شود‪.‬‬
‫‪ ‬تمرینات تحویل داده شده حتما با سوال مربوطه همراه باشد‪.‬‬
‫‪ ‬در باالی برگه تحقیق انجام شده توسط شما‪ ،‬حتما عنوان تحقیق ذکر شود‪.‬‬
‫‪ ‬نام و نام خانوادگی و تاریخ تحویل تحقیق‪/‬تمرین حتما در باالی برگه ذکر شود‪.‬‬
‫در صورت عدم رعایت موارد فوق نمره ای به تحقیق یا تمرین تحویل داده شده‬
‫تعلق نگرفته و اعتراض ی وارد نمی باشد‪.‬‬
‫مقدمه‬
‫‪ ‬یک بنای ساختمانی چیست؟‬
‫‪ ‬یک بنای ساختمان محصولی از یک یا چند بنا است که شامل مصالح ساختمانی چون‬
‫سیمان‪ ،‬گچ و‪ ..‬است‪.‬‬
‫‪ ‬نرم افزار کامپیوتری چیست؟‬
‫‪ ‬نرم افزار محصول فرآیند مهندس ی نرم افزار است که توسط مهندسان نرم افزار طراحی و‬
‫ایجاد می شود‪.‬‬
‫‪ ‬مجموعه برنامه هایی که کنترل و هماهنگی فعالیت های سخت افزار و هدایت پردازش داده ها‬
‫را برعهده دارد‪ ،‬نرم افزار نامیده می شود‪.‬‬
‫مقدمه‬
‫‪ ‬نرم افزار عبارتست از‪:‬‬
‫‪ .1‬دستورات (برنامه های کامپیوتری) که در صورت اجرا شدن باعث انجام وظایف خواسته‬
‫‪.2‬‬
‫‪.3‬‬
‫شده و کارایی مورد نظر می شوند‪.‬‬
‫ساختمان داده هایی که امکان پردازش کافی اطالعات را مهیا می سازند‪.‬‬
‫مستنداتی که توصیف کننده عملکرد و چگونگی استفاده از برنامه ها می باشند‪( .‬یعنی دو‬
‫مورد فوق را تشریح می کنند‪).‬‬
‫‪ ‬نرم افزار کامپیوتری را چه کسانی استفاده می کنند؟‬
‫‪ ‬هر فردی ممکن است به صورت مستقیم یا غیرمستقیم از آن استفاده کند‪.‬‬
‫‪ ‬علت اهمیت نرم افزار؟‬
‫‪ ‬تاثیر گسترده بر تمام جنبه های زندگی‬
‫‪ ‬مراحل ایجاد نرم افزار چگونه است؟‬
‫‪ ‬با بکارگیری فرآیندی خاص و طی کردن یک روند مشخص‬
‫نقش های دوگانه نرم افزار‬
‫‪ ‬نقش اول‪ :‬نرم افزار یک محصول است‪.‬‬
‫‪ ‬دارای پتانسیل محاسباتی است‪.‬‬
‫‪ ‬تولید‪ ،‬مدیریت‪ ،‬تغییر‪ ،‬نمایش و انتقال اطالعات را انجام میدهد‪.‬‬
‫‪ ‬نقش دوم‪ :‬نرم افزار وسیله ای برای تحویل محصول است‪.‬‬
‫‪ ‬از ‪ functionality‬سیستم پشتیبانی می کند یا به طور مستقیم آن را فراهم می کند‪.‬‬
‫‪ ‬سایر برنامه ها را کنترل می کند (مثل سیستم عامل ها)‬
‫‪ ‬بر روی ارتباطات تاثیر می گذارد (مثل نرم افزارهای شبکه )‬
‫‪ ‬کمک به ساخت سایر برنامه ها می کند (مثل ابزارهای نرم افزاری)‬
‫یک نرم افزار وقتی موفق است که‪:‬‬
‫‪ ‬نیازهای کاربران را برطرف کند‪.‬‬
‫‪ ‬بدون مشکل کار کند‪.‬‬
‫‪ ‬اصالح و تغییر بر روی آن ساده باشد‪.‬‬
‫‪ ‬استفاده از آن آسان باشد‪.‬‬
‫خصوصیت نرم افزار‬
‫‪ ‬نرم افزار یک عنصر منطقی است و نه یک جزء فیزیکی‪.‬‬
‫‪ ‬بهترین راه شناخت مشخصات نرم افزار‪ ،‬مقایسه آن با یک جزء دیگر از‬
‫محصوالت ساخت انسان است (مثال مقایسه با سخت افزار)‬
‫‪ ‬بنابراین نرم افزار دارای مشخصاتی است که تا حد قابل مالحظه ای با‬
‫مشخصات سخت افزاری متفاوت است‪ .‬تفاوتهای عملیاتی‪:‬‬
‫‪ ‬نرم افزار توسعه داده می شود (‪ )develop‬در صورتیکه سخت افزار ساخته می شود‬
‫(‪ .)create‬نرم افزار توسعه می یابد یا طراحی می شود؛ اما به مفهوم کالسیک ساخته نمی‬
‫شود‪.‬‬
‫‪ ‬نرم افزار فرسوده نمی شود‪ ،‬اما کیفیت خود را از دست می دهد به عبارتی دیگر نرم افزار دور‬
‫ریختنی نیست‪.‬‬
‫‪ ‬گرچه صنعت به سمت مونتاژ اجزاء حرکت می کند‪ ،‬اما نرم افزار همچنان سفارش ی ساخته‬
‫می شود‪.‬‬
‫‪ ‬روش ها و ابزارهای آزمایش نرم افزار از روش ها و ابزارهای سخت افزار متفاوت است‪.‬‬
‫‪ ‬نرم افزار پیچیده است به این دلیل که بیشتر سفارش ی ساخته می شود‪.‬‬
‫تاریخچه نرم افزار‬
‫‪ ‬بحران نرم افزار اولین بار بصورت رسمی در کنفرانس در سال ‪ 1968‬میالدی مطرح‬
‫گردید‪ .‬عوامل اصلی این بحران عباتند از ‪:‬‬
‫‪ ‬هزینه باالی ایجاد نرم افزار‬
‫‪ ‬تاخیر در تولید و تحویل نرم افزار‬
‫‪ ‬نگهداری پرهزینه نرم افزار‬
‫‪ ‬پیشرفت سریع سخت افزار‬
‫‪ ‬کیفیت پائین نرم افزار‬
‫‪ ‬افزایش پیچیدگی محصوالت‬
‫تاریخچه نرم افزار‬
‫‪ ‬انواع روش های برنامه نویس ی رایج‬
‫‪ ‬برنامه نویس ی منفرد‬
‫‪ ‬برنامه نویس ی تیمی‬
‫‪ ‬مشکالت برنامه نویس ی منفرد‬
‫‪ ‬طوالنی شدن زمان پروژه‪ ،‬افزایش هزینه ها‪ ،‬مشکل خظایابی‪ ،‬مشکل در ارزیابی میزان پیشرفت‬
‫نمودار تکامل نرم افزار‬
‫‪2000‬‬
‫دوره چهارم‬‫•سیستم های خبره‬
‫•ماشین های خوش‬
‫مصنوعی‬
‫•معماری موازی‬
‫•روش های ش یء گرا‬
‫‪1950‬‬
‫‪1960‬‬
‫‪1990‬‬
‫‪1970‬‬
‫‪1980‬‬
‫سالهای اولیه (دوره اول)‬‫دوره دوم‬‫دوره سوم‬‫*سیستم های توزیع شده •چندکاربری‬
‫•پردازش دسته ای‬
‫•توزیع محدود‬
‫•سیستم های بی درنگ‬
‫*هوش توکار‬
‫•نرم افزارهای سفارش ی و‬
‫•پایگاه داده ها‬
‫*سخت افزار ارزان‬
‫مخصوص‬
‫•نرم افزارهای از قبل تولید شده‬
‫نکته‪ :‬توسعه فوق در اثر بهره وری سخت افزار‪ ،‬اندازه کوچکتر و هزینه پائین تر سیستم‬
‫های کامپیوتری پیچیده تر بوجود آمده اند‪.‬‬
‫جامعه ما از یک جامعه صنعتی به یک جامعه اطالعاتی تبدیل شده است‪.‬‬
‫دوره اول‬
‫‪‬‬
‫دهه ‪ 50‬و اوایل دهه ‪60‬‬
‫سخت افزار به سرعت رشد می کرد‬
‫پردازش به صورت دسته ای بود و توزیع شدگی به مفهوم امروزه وجود نداشت (فقط در سیستم‬
‫رزرو خطوط هوایی و یا سیستم دفاعی آمریکا)‬
‫اغلب سخت افزار عهده دار اجرای یک برنامه تنها بود که آن برنامه نیز به نوبه خود برای اجرای‬
‫یک کاربرد خاص نوشته شده بود‪.‬‬
‫سخت افزار در سال های اولیه به صورت همه منظوره درآمد اما نرم افزار همچنان تک منظوره‬
‫باقی ماند‬
‫بیشتر نرم افزارها توسط یک نفر و یا یک سازمان ایجاد و استفاده می شد پس‪ ،‬یک نفر آن را می‬
‫نوشت‪ ،‬اجرا می کرد‪ ،‬و در صورت بروز خطا آن را برطرف می کرد‪ ،‬مدیریت هم به آن یک نفر‬
‫تکیه می کرد تا در صورت بروز خطا آن را برطرف سازد‪.‬‬
‫‪‬‬
‫پس طراحی یک فرآیند ضمنی و انجام شده در مغز یک نفر بود و هیچ مستنداتی نیز وجود نداشت‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫دوره دوم‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫اواسط دهه ‪ 60‬تا اواخر دهه ‪70‬‬
‫سیستم های چند برنامه ای و چند کاربردی بوجود آمدند‪.‬‬
‫تکنیک های محاوره ای‪ ،‬نوع جدیدی از کاربرها و سطح جدیدی از پیچیدگی را در نرم افزار و سخت‬
‫افزار بووجود آوردند‪.‬‬
‫سیستم های بالدرنگ در این دوره معرفی شدند‪.‬‬
‫در این دوره نرم افزارهای از قبل تولید شده مطرح شدند‪.‬‬
‫در این دوره برنامه های بسیاری نوشته شدند که نیاز بود اعمال زیر روی آن ها انجام شود‪:‬‬
‫‪ ‬در صورت بروز خطا تصحیح شوند‪.‬‬
‫‪ ‬در اثر تغییر خواسته کاربران اصالح شوند‪.‬‬
‫‪ ‬با سخت افزارهای جدید منطبق گردند‪.‬‬
‫‪‬‬
‫نکته‪ :‬به مجموعه فعالیت های فوق نگهداری نرم افزار (‪ )Software Maintenance‬گفته‬
‫می شود‪ .‬در این دوره بود که بحران نرم افزاری بوجود آمد‪.‬‬
‫دوره سوم‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫اواسط دهه ‪ 70‬تا اواخر دهه‪80‬‬
‫سیستم های توزیع شده بوجود امدند و این امر پیچیدگی سیستم های کامپیوتری مبتنی بر آنها را‬
‫باال برد‪.‬‬
‫ریزپردازنده ها و کامپیوترهای شخص ی اختراع شده و مورد استفاده انبوه قرار گرفتند‪.‬‬
‫ریزپردازنده ها در بسیاری از محصوالت هوشمند به کاربرده شدند‪( .‬مانند اتومبیل‪ ،‬ربات‪)... ،‬‬
‫شرکت های نرم افزاری بسیاری رشد کردند زیرا کامپیوترهای شخص ی در همه جا خریداری می‬
‫شدند و نیازمند نرم افزار بودند‪.‬‬
‫نمودار رشد فروش کامپیوتر شخص ی کم کم به صورت یکنواخت تبدیل شد اما نمودار رشد نرم‬
‫افزار همچنان به صورت صعودی باقی ماند‪.‬‬
‫دوره چهارم‬
‫‪‬‬
‫در این دوره سیستم های خبره و نرم افزارهای هوش مصنوعی از آزمایشگاه ها به سوی کاربردهای‬
‫واقعی حرکت کردند و معماری های موازی مطرح شدند‪.‬‬
‫نمودار زوال پذیری (نرخ شکست) در سخت‬
‫افزار‬
‫نمودار زوال پذیری (نرخ شکست) در سخت افزار‬
‫‪ ‬شکل موجود در اسالید قبل‪ ،‬شکست سخت افزار نسبت به زمان را نشان می‬
‫دهد‪ .‬این رابطه‪ ،‬اغلب منحنی وانی شکل نامیده می شود و نشان می دهد که‬
‫سخت افزار در ابتدا میزان شکست باالیی دارد ( این شکست ها اغلب مربوط به‬
‫اشکاالت ساخت و طراحی هستند)‪ ،‬در یک بازه زمانی‪ ،‬اشکاالت برطرف شده و‬
‫میزان شکست در یک میزان ثابت می ماند‪ .‬با گذشت زمان‪ ،‬قطعات سخت افزاری‬
‫تحت تاثیر گرد و غبار‪ ،‬نوسان‪ ،‬استفاده نادرست‪ ،‬تغییرات زیاد درجه حرارت‪ ،‬و‬
‫بسیاری عوامل دیگر کیفیت خود را از دست می دهند‪ .‬به بیان ساده‪ ،‬سخت افزار‬
‫به سمت از رده خارج شدن پیش می رود‪.‬‬
‫نمودار زوال پذیری (نرخ شکست) در نرم افزار‬
‫نمودار زوال پذیری (نرخ شکست) در نرم افزار‬
‫‪ ‬نرم افزار به تدریج دچار فرسودگی نمی گردد‪ ،‬بلکه فاسد می شود‪.‬‬
‫‪ ‬در طول دوران زندگی‪ ،‬نرم افزار نیازمند تغییرات (نگهداری) است‪ .‬تغییرات انجام‬
‫می شود‪ ،‬و اشکاالت جدیدی ممکن است بوجود آید‪ ،‬که باعث می شود به میزان‬
‫شکست ثابت خود بازگردد‪ ،‬تغییر دیگری درخواست می شود‪ ،‬و باعث می شود‬
‫منحنی مجدد پرش داشته باشد‪ .‬این مسئبه باعث می شود سطح میزان شکست‬
‫به آرامی افزایش یابد‪ ،‬و کیفیت نرم افزار به علت تغییرات تنزل می یابد‪.‬‬
‫کاربردهای نرم افزار‬
‫محتوای اطالعاتی و هدف برنامه ماهیت و کابرد نرم افزار را مشخص می کند‪.‬‬
‫‪ ‬نرم افزار سیستمی برای سرویس دهی به سایر برنامه ها نوشته می شود‪.‬‬
‫‪ ‬نرم افزار کابردی نیازهای خاص مثل نیازهای تجاری را رفع می کند‪.‬‬
‫‪ ‬نرم افزارهای مهندس ی‪ /‬علمی مثل نرم افزارهای ‪CAD‬‬
‫‪ ‬نرم افزارهای جاسازی شده مثل محصوالت هوشمند‬
‫‪ ‬نرم افزارهای خط تولید‬
‫‪ ‬نرم افزاری وب‬
‫‪ ‬نرم افزارهای هوش مصنوعی‬
‫کاربردهای نرم افزار‬
‫‪ ‬نرم افزار چه در یک تلفن سلولی قرار داشته باشد یا درون یک کامپیوتر بزرگ‪،‬‬
‫یک انتقال دهنده اطالعات محسوب می گردد‪ .‬یعنی اطالعاتی را تولید می کند‪،‬‬
‫سازمان می دهد‪ ،‬تحویل می گیرد‪ ،‬نمایش یا انتقال می دهد‪.‬‬
‫‪ ‬اگر از آن به عنوان وسیله انتقال دهنده محصول استفاده شود‪ ،‬به صورت پایه و‬
‫اساس کنترل کامپیوتر (سیستم عامل)‪ ،‬تبادل اطالعات (شبکه ها) و ایجاد و‬
‫کنترل برنامه های دیگر (ابزارهای نرم افزاری و محیط آن) استفاده خواهد شد‪.‬‬
‫نمایش یا انتقال ‪ +‬تحویل ‪ +‬سازماندهی ‪ +‬تولید‬
‫انتقال دهنده‬
‫طبقه بندی نرم افزار‬
‫‪ ‬نرم افزار ها را می توان براساس ماهیت کاربردی آن ها مطابق زیر طبقه بندی‬
‫کرد‪:‬‬
‫‪ ‬نرم افزار های سیستمی‬
‫‪ ‬نرم افزار های بالدرنگ‬
‫‪ ‬نرم افزار های تجاری‬
‫‪ ‬نرم افزار های مهندس ی و علمی‬
‫‪ ‬نرم افزار های جاسازی شده‬
‫‪ ‬نرم افزار های کامپیوترهای شخص ی‬
‫‪ ‬نرم افزار های مبتنی بروب‬
‫‪ ‬نرم افزار های هوش مصنوعی‬
‫نرم افزارهای سیستمی(‪)system software‬‬
‫‪ ‬مجموعه ای از برنامه ها هستند که برای سرویس دادن به برنامه های دیگر‬
‫نوشته شده اند مانند کامپایلرها‪ ،‬ویرایشگرها‪ ،‬برنامه های مدیریت فایل‬
‫‪ ‬خصوصیات این نرم افزارها‪:‬‬
‫‪ ‬فعل و انفعال زیاد با سخت افزار‬
‫‪ ‬استفاده بسیار از طرف کاربران متفاوت‬
‫‪ ‬عملیات همزمان و موازی که نیازمند به مدیریت است‪.‬‬
‫‪ ‬اشتراک منابع‬
‫‪ ‬مدیریت پیچیده فرآیندها‬
‫‪ ‬ساختمان داده های پیچیده‬
‫‪ ‬واسطه های خارجی چندگانه‬
‫نرم افزارهای بالدرنگ(‪)Realtime software‬‬
‫‪ ‬نرم افزارهایی هستند که وقایع دنیای واقعی را اندازه گیری‪ ،‬تجزیه و تحلیل و‬
‫کنترل می کنند‪.‬‬
‫‪ ‬مولفه های این نرم افزارها عبارتند از ‪:‬‬
‫‪ ‬مولفه جمع آوری داده ها که اطالعات را از محیط بیرون جمع آوری و قالب بندی می کند‪.‬‬
‫‪ ‬مولفه کنترل‪ /‬خروجی که به محیط خارجی پاسخ می دهد‪.‬‬
‫‪ ‬مولفه مدیریت که بقیه مولفه ها را طوری زمان بندی می کند تا بتوانند پاسخ بالدرنگ ایجاد‬
‫کنند (از ‪ 1‬میلی ثانیه تا ‪ 1‬دقیقه)‬
‫‪ ‬نکته‪ :‬عبارت بالدرنگ با عبارتهای محاوره ای (‪ )Interactive‬و اشتراک زمانی‬
‫(‪ )Time sharing‬فرق می کند‪.‬‬
‫‪ ‬نکته‪ :‬سیستم بالدرنگ باید با محدودیت زمانی مشخص پاسخ دهد در حالی که‬
‫زمان پاسخ سیستم های دیگر می تواند بدون بوجود آمدن نتایج فاجعه بار تغییر‬
‫کند‪.‬‬
)Business software(‫نرم افزارهای تجاری‬
‫معیارهای ارزیابی نرم افزار‬
‫‪ ‬چهار عامل اصلی در تعیین کیفیت نرم افزار مهم هستند‪:‬‬
‫‪ ‬قابلیت نگهداری (‪)Maintainability‬‬
‫نرم افزار باید بتواند با تغییرات نیازهای کاربران تکامل و توسعه یابد و نیازهای جدید آنها را‬
‫رفع نماید‪.‬‬
‫‪ ‬قابلیت اطمینان (‪)Dependability‬‬
‫نرم افزار باید امین‪ ،‬درست کار و راستگو باشد‬
‫‪ ‬کارایی (‪)Efficiency‬‬
‫نرم افزار نباید از منابع سیستم استفاده نادرست کرده و آنها را هدر دهد‪.‬‬
‫‪ ‬قابلیت پذیرش (‪)Acceptability‬‬
‫نرم افزار باید بوسیله کاربری که آن را سفارش داده است پذیرش و تائید گردد‪.‬‬
‫یعنی نرم افزار باید قابل فهم‪ ،‬مفید و سازگار با سایر سیستم ها باشد‪.‬‬
‫سه عامل مشکل زا در تولید نرم افزار‪:‬‬
‫‪ ‬ناهمگونی‬
‫‪ ‬حل‪ :‬استفاده از تکنیک های مختلف توسعه برای ساخت نرم افزاری که بتواند روی سکوها و‬
‫محیط های اجرایی مختلف اجرا شود‪.‬‬
‫‪ ‬تحویل‬
‫‪ ‬حل‪ :‬استفاده از تکنیک های مختلف توسعه برای هرچه سریع تر کردن زمان تحویل نرم افزار‬
‫‪ ‬اعتماد‬
‫‪ ‬حل‪ :‬استفاده از تکنیک هایی که نشان می دهد نرم افزار ارائه شده می تواند از طرف کاربران‬
‫آن مورد اعتماد قرار گیرد‪.‬‬
‫باورهای غلط مشتریان‬
‫‪ ‬همه شما به یک دستورالعمل نیاز دارید که به شما بگوید چگونه برنامه نویس ی را‬
‫شروع کنید‪.‬‬
‫‪ ‬نیازمندی ها تغییر می کنند ول نرم افزار می تواند خودش را با انعطافی که دارد با‬
‫آن ها وفق دهد‪.‬‬
‫باورهای غلط توسعه دهندگان نرم افزار‬
‫‪ ‬وقتی که برنامه ما اجرا شد کار تمام است‪.‬‬
‫‪ ‬تا زمانی که برنامه در حال اجرا است من هیچ نظری در مورد چگونگی عملکرد آن‬
‫ندارم‪.‬‬
‫‪ ‬تنها چیز قابل تحویل برنامه ای است که کار می کند‪.‬‬
‫‪ ‬مهندس ی نرم افزار باعث ایجاد مستندات غیرضروری و حجیم می شود که نتیجه‬
‫آن افت سرعت ما است‪.‬‬
‫باورهای غلط مدیریتی‬
‫‪ ‬کتاب استانداردها برای ساخت نرم افزار نیازهای اطالعاتی توسعه دهندگان را‬
‫برطرف می کند‪.‬‬
‫‪ ‬اگر از روال عادی کار عقب افتادیم می توانیم افراد بیشتری را جذب کنیم‪.‬‬
‫‪ ‬می توانیم تولید نرم افزار را به شرکت دیگری بسپاریم و خودمان استراحت کنیم‪.‬‬
‫فرآیند (‪)Process‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫فرآیند چیست؟ وقتی که محصول یا سیستمی را می سازیم این امر اهمیت دارد که از یکسری‬
‫مراحل قابل پیش بینی استفاده کنیم‪ .‬نقشه مسیری که به ما کمک می کند تا نتایجی را در زمان‬
‫معین و با کیفیت یاال ایجاد کنیم فرآیند نرم افزار نام دارد‪.‬‬
‫چه کس ی این کار را انجام می دهد؟ مهندسین نرم افزار و مدیران آن ها فرآیند را تحت نیاز خود‬
‫انتخاب کرده و آن را دنبال می کنند‪.‬‬
‫چرا فرآیند مهم است؟ فرایند به کار ما سامان می بخشد و فعالیت های موجود را کنترل نموده و‬
‫نتایج ثابتی را برای آن ها پیش بینی می کند‪ .‬در غیراینصورت‪ ،‬کار ما دچار هرج و مرج و بی نظمی‬
‫خواهد شد‪.‬‬
‫مراحل انجام کار چیست؟ فرآیندی که از آن استفاده می کنیم وابسته به نرم افزاری است که آن‬
‫را می خواهیم ایجاد کنیم‪ ،‬پس انتخاب فرآیند براساس نوع نرم افزار صورت می گیرد‪.‬‬
‫محصول کار چیست؟ از دیدگاه یک مهندس نرم افزار‪ ،‬برنامه ها‪ ،‬اسناد و داده هایی است که طی‬
‫مراحل مهندس ی در یک فرآیند به دست می آیند‪.‬‬
‫فرآیند (‪)Process‬‬
‫‪ ‬فرآیند ساخت نرم افزار‬
‫مراحل مهندس ی نرم افزار‬
‫‪ ‬فعالیت های مرتبط با مهندس ی نرم افزار را صرف نظر از اندازه و پیچیدگی پروژه و‬
‫همچنین زمینه کاربردی آن می توان به سه مرحله یا فاز (‪ )Phase‬کلی زیر تقسیم‬
‫نمود‪.‬‬
‫‪‬مرحله تعریف (‪)Definition‬‬
‫‪‬مرحله توسعه (‪)Development‬‬
‫‪‬مرحله نگهداری (‪)Maintenance‬‬
‫مرحله تعریف‬
‫‪ ‬در این مرحله‪ ،‬تمرکز بر تعیین ”‪ “What‬می باشد‪.‬‬
‫‪ ‬تولیدکننده نرم افزار سعی دارد داده های مورد پردازش‪ ،‬وظایف‪ ،‬عملکردها و‬
‫رفتار سیستمی مورد انتظار‪ ،‬واسط ها‪ ،‬قیود و شرایط طراحی و همچنین‬
‫معایرهای تشخیص اعتبار سیستم را تعیین نماید‪.‬‬
‫‪ ‬در این مرحله‪ ،‬سه فعالیت عمده زیر انجام می شود‪:‬‬
‫‪‬تجزیه و تحلیل خواسته ها و نیازمندی ها (مهم)‬
‫‪‬مهندس ی اطالعات یا سیستم‬
‫‪‬برنامه ریزی پروژه نرم افزاری‬
‫مرحله توسعه‬
‫‪ ‬در این مرحله‪ ،‬تمرکز بر تعیین چگونگی”‪ “How‬می باشد‪.‬‬
‫‪ ‬مهندس نرم افزار سعی دارد چگونگی ساختمان داده ها‪ ،‬چگونگی پیاده سازی‬
‫وظایف‪ ،‬چگونگی واسط ها و نحوه تبدیل طراحی به یک زبان برنامه سازی و‬
‫همچنین چگونگی آزمون نرم افزار را کامال مشخص نماید‪ .‬در این مرحله‪ ،‬سه‬
‫فعالیت عمده زیر انجام می شود‪:‬‬
‫‪‬طراحی نرم افزار‬
‫‪‬پیاده سازی نرم افزار و تولید کد‬
‫‪‬آزمون نرم افزار‬
‫مرحله نگهداری‬
‫‪ ‬تمرکز این مرحله بر ” تغییر“ است‪ .‬در طول این مرحله ممکن است با ‪ 4‬نوع تغییر‬
‫زیر مواجه شویم‪:‬‬
‫‪.1‬‬
‫نگهداری تصحیحی‪:‬‬
‫‪ .2‬نگهداری تطبیقی‪:‬‬
‫‪.3‬‬
‫نگهداری تکمیلی‪:‬‬
‫‪.4‬‬
‫نگهداری پیشگیری کننده‪:‬‬
‫مدل های فرایند نرم افزار‬
)Software Process Models(
36
‫مدل های فرایند نرم افزار‬
‫‪ ‬برای حل مسائل واقعی در یک صنعت یا یک شرکت‪ ،‬یک مهندس نرم افزار یا‬
‫سیستم مهندس ی باید یک استراتژی توسعه یا متدولوژی انتخاب کند‪ ،‬به نحوی‬
‫که شامل الیه های متدها‪ ،‬فرآیندها و ابزارهای شرح داده شده باشد‪.‬‬
‫‪ ‬این فرایند گاهی اوقات تحت عنوان مدل های تولید نرم افزار نامیده می شود‪.‬‬
‫‪ ‬هر مدل فرآیند دارای دیدگاه های گوناگونی است‪ .‬مثال؛‬
‫‪ ‬جریان کاری (‪ :)Work flow‬ترتیب فعالیت ها‪.‬‬
‫‪ ‬جریان داده (‪ :)Data flow‬داده ها چگونه و از چه جاهایی جریان می یابند‪.‬‬
‫‪ ‬نقش‪ /‬عمل (‪ :)Role/Action‬چه کس ی چه کاری را انجام می دهد‪.‬‬
‫‪37‬‬
‫‪ .1‬مدل ترتیب خطی‬
‫‪)Sequential Model‬‬
‫‪‬‬
‫‪‬‬
‫( ‪Linear‬‬
‫‪The‬‬
‫مشهور به مدل « دوره زندگی کالسیک توسعه سیستم»‬
‫ساده ترین و کارآمد ترین روش برای تولید نرم افزارهای نسبتا محدود است‬
‫که در آن تحلیل نیازمندیها و تعریف صورت مساله به سادگی انجام می شود‪.‬‬
‫مهندسی سیستم های اطالعاتی‬
‫تحویل به‬
‫مشتری‬
‫‪38‬‬
‫آزمون‬
‫ایجاد کد‬
‫طراحی‬
‫تحلیل‬
‫نیازهای‬
‫نرم افزاری‬
‫مزایای مدل ترتیب خطی‬
‫• فقط نیاز به تخصص برنامه‬
‫نویس ی وجود داشت و از نظر نیروی‬
‫متخصص مشکالت کمی وجود‬
‫داشت‪.‬‬
‫• در این مدل چون همه چیز با‬
‫برنامه نویس ی توام بوده‪ ،‬مشکالت‬
‫یافتن و بکاربردن روش های‬
‫مناسب برای مراحل مختلف و‬
‫تبدیل این مراحل بهم وجود ندارد‪.‬‬
‫‪1‬‬
‫‪2‬‬
‫‪39‬‬
‫معایب مدل ترتیب خطی‬
‫‪ .1‬مدل برنامه نویس ی و ترمیم قابلیت دید ندارد و فقط برنامه نویس ی که برنامه های سیستم موردنظر را نوشته‬
‫با مسائل آن آشنا می باشد‪( .‬سیستم تولید شده متکی به فرد است‪).‬‬
‫‪ .2‬کد تولید شده در این مدل چون با تغییرات زیاد همراه بوده دارای ساختار مناسبی نیست و تغییرات بعدی روی‬
‫آن نمی تواند به راحتی صورت پذیرد‪.‬‬
‫‪ .3‬معموال توجه الزم به نیازهای کاربر نمی شود و نرم افزار در اکثر مواقع دارای مشخصات الزم نیست‪.‬‬
‫‪ .4‬همه چیز در برنامه نویس ی خالصه می شود‪ ،‬پیگیری نرم افزار از طریق برنامه ها بسیار مشکل است نگهداشت‬
‫در این مدل با مشکالت اساس ی روبرو است‪.‬‬
‫‪ .5‬قابلیت اطمینان در نرم افزار تولیدی در این روش وجود ندارد چون نرم افزار دائما در حال ترمیم است و‬
‫براساس طراحی صحیحی صورت نگرفته است‪.‬‬
‫‪40‬‬
‫‪ .2‬مدل آبشاری (‪)Waterfall model‬‬
‫‪ ‬یکی از متداولترین مدلهای کالسیک در ساخت نرم افزار است‪.‬‬
‫‪ ‬به آن مدل دوران حیات (‪ )Life Cycle‬هم می گویند‬
‫‪ ‬به دلیل مشکالتی که در مسائل تحلیل‪ ،‬طراحی و پیاده سازی آن وجو داشت‬
‫کمتر در پروژه های بزرگ از آن استفاده می شد‪.‬‬
‫‪ ‬مراحل دوره زندگی توسعه سیستم یکی پس از دیگری اتفاق می افتد‪.‬‬
‫‪ ‬در این مدل‪ ،‬تولید نرم افزار مراحل مختلفی دارد که هرمرحله دارای ورودی‬
‫و وظیفه و خروجی خاص ی است‪.‬‬
‫‪ ‬خروجی هر مرحله در این مدل ورودی مرحله بعدی است‪.‬‬
‫‪41‬‬
‫‪ .2‬مدل آبشاری (‪)Waterfall model‬‬
‫‪‬‬
‫‪‬‬
‫چون مدت زمان انجام پروژه معموال طوالنی است در پروژه ها و نرم افزارهای‬
‫وسیع کمتر از آن استفاده می شود‪.‬‬
‫با این وجود چون در سال های اخیر معایب و مشکالت موجود در این مدل‬
‫تقریبا برطرف شده است به عنوان یکی از مدل های اصل و پایه در تولید نرم‬
‫افزار مطرح شده است‪.‬‬
‫‪42‬‬
‫شرح مراحل مدل آبشاری‬
‫‪ ‬مطالعه امکان سنجی و یا کاربر ”چه میخواهد“‬
‫‪ ‬رفتار بیرونی سیستم یا یک سیستم ” چه کاری انجام میدهد“‬
‫‪ ‬برآورده کردن خواسته ها یعنی ” چگونه انجام میدهد“‬
‫‪ ‬پیاده سازی یا کدنویس ی یا از مرحله قوه به فعل‬
‫‪ ‬تست سیستم‬
‫‪ ‬نگهداری و توسعه‬
‫مزیت مدل‪ :‬در صورت بروز اشتباه قابلیت بازگشت به مرحله قبل وجود دارد‪.‬‬
‫مرحله ‪ 1‬در مدل آبشاری‪ :‬فهم و تحلیل خواسته ها‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫مرحله اولیه و قبل از هرکاری در تولید یک نرم افزار این است که مشخص شود‬
‫نیازهای کاربر چیست‪.‬‬
‫در مدل آبشاری این کار از طریق ارتباط مستقیم تحلیل گر با کاربر صورت می‬
‫پذیرد تا اینکه تحلیل گر سیستم خواسته های کاربر را درک کند و آن ها را تجزیه‬
‫و تحلیل نماید‪.‬‬
‫این مرحله از کار را مرحله فهم و تحلیل خواسته ها یا مرحله شناخت می گویند‪.‬‬
‫در این مرحله ابتدا مطالعه امکان سنجی صورت می گیرد و طی ان یک مطالعه و‬
‫بررس ی مقدماتی روی سیستم مورد نظر انجام می پذیرد‪ .‬ضمن این مطالعه‬
‫مشخص می شود که اوال آیا نیاز به سیستم مکانیزه هست یا نه! ثانیا با توجه به‬
‫امکانات و مشکالت فنی و اقتصادی و عملیاتی امکان ایجاد یک سستم مکانیزه‬
‫جدید که هدف ها و نیازهای کاربر را برآورده سازد هست یانه؟‬
‫مرحله ‪ 1‬در مدل آبشاری‪ :‬فهم و تحلیل خواسته ها‬
‫‪ ‬نتیجه مطالعه امکان سنجی‪ :‬یک گزارش امکان سنجی است که در آن ضمن‬
‫مشخص شدن موارد فوق‪ ،‬نتایج بررس ی‪ ،‬پیشنهادات کلی و برنامه زمان بندی‬
‫مراحل مختلف تولید نرم افزار و همچنین تخمن کلی هزینه های ایجاد سیستم‬
‫جدید آورده می شود‪.‬‬
‫‪ ‬این گزارش توسط تحلیل گر سیستم تهیه شده و به مدیریت ارائه می شود‪.‬‬
‫‪ ‬در صورتی که مورد تائید مدیریت واقع شد مراحل بعدی کار می تواند انجام‬
‫پذیرد‪.‬‬
‫مرحله ‪ 2‬در مدل آبشاری‪ :‬تعریف خواسته ها‬
‫‪ ‬هدف این مرحله‪ :‬تعریف خواسته های سیستم به طور کامل‪ ،‬سازگار و غیرمبهم‬
‫‪ ‬در تعریف خواسته ها مشخص می شود که سیستم چه کار باید بکند و به‬
‫چگونگی انجام کار پرداخته نمی شود یعنی شرح رفتار خارجی سیستم مورد نظر‬
‫است‬
‫‪ ‬وظیفه تحلیل گر در این مرحله‪ :‬خواسته های سیستم را مدل سازی میکند و‬
‫خروجی این مرحله در واقع مدل سیستم است‪.‬‬
‫‪ ‬در این مرحله تحلیلگر نمودار گردش کار سیستم پیشنهادی را رسم میکند که‬
‫ممکن است با نمودار گردش کار سیستم فعلی خیلی فرق داشته باشد‪.‬‬
‫‪ ‬برای مدل کردن سیستم روش خیلی مفید و موثر استفاده از نمودار جریان داده‬
‫یا ‪ )Data Flow Diagram( DFD‬است‪.‬‬
‫مرحله ‪ 2‬در مدل آبشاری‪ :‬تعریف خواسته ها‬
‫‪‬‬
‫در این مرحله غیراز نمودارهای فوق موارد مختلف دیگری مانند تغییرات الزم در‬
‫فرم های ورودی‪ ،‬تغییرات الزم در خروجی ها‪ ،‬پیشنهاد پرونده های اطالعاتی و‬
‫محتویات آن ها‪ ،‬صورت منابع انسانی و غیرانسانی موجود مورد نیاز سیستم‬
‫پیشنهادی و غیره نیز آورده می شود‪.‬‬
‫مرحله ‪ 3‬در مدل آبشاری‪ :‬طراحی‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫طراحی یعنی بکارگیری تکنیک ها و اصول مختلف به منظور تعریف یک طرح به‬
‫صورت قابل درک‪.‬‬
‫عملیات طراحی خواسته ها را به یک نمایش از نرم افزار تبدیل می کند که می‬
‫تواند قبل از اینکه برنامه نویس ی شروع شود از نظر کیفی ارزیابی گردد‪.‬‬
‫در این مرحله هدف اصلی این است که مشخص شود نرم افزار چگونه کار می‬
‫کند‪.‬‬
‫طراحی ‪ 2‬مرحله دارد‪:‬‬
‫مرحله ‪ :1‬طراحی کلی‬
‫مرحله ‪ :2‬طراحی تفضیلی‬
‫مرحله اول طراحی ‪ :‬طراحی کلی‬
‫در این مرحله اسکلت سیستم طراحی می شود که این کار می تواند براساس یکی انواع‬
‫طراحی زیر صورت می پذیرد‪.‬‬
‫الف‪ -‬طراحی باال به پائین (‪)Top Down design‬‬
‫در این نوع طراحی سیستم شکسته می شود به اجزا یا زیرسیستم هایی و هرکدام از‬
‫زیرسیستم ها به نوبه خود می تواند به زیرسیستم های کوچکتر شکسته می شود‬
‫و این کار تاحد الزم ادامه می یابد‪ .‬این نوع طراحی در بیشتر سیستم ها به کار‬
‫میرود‪.‬‬
‫ب‪ -‬طراحی پائین به باال (‪)Bottom up design‬‬
‫در این نوع طراحی ابتدا کوچکترین اجزاء سستم مشخص می شود و از ترکیب تعدادی‬
‫از آنها یک جزء بزرگتر سیستم به دست می آید و کار ادامه می یابد تا در نهایت‬
‫راس طرح که همان سیستم موردنظر است به دست آید‪.‬‬
‫مرحله اول طراحی ‪ :‬طراحی کلی‬
‫ج‪ -‬طراحی میانه (‪)Middle out design‬‬
‫در این نوع طراحی ابتدا از اجزاء اصلی میانی که مشخص تر هستند شروع و از یک‬
‫طرف تا حد الزم به سمت جزئیات و از رف دیگر به سطوح باالتر و کلی تر رفته و‬
‫تست می شود‪.‬‬
‫مرحله دوم طراحی ‪ :‬طراحی تفصیلی‬
‫‪‬‬
‫در این مرحله طراحی ریز جزئیات سیستم صورت می گیرد مانند طراحی فرم ها‪،‬‬
‫طراحی منوها‪ ،‬طراحی گزارشات‪ ،‬طراحی فایل ها ورکوردها و همچنین مواردی از‬
‫قبیل تعیین استانداردهای سیستم‪ ،‬تعیین روش های کنترل‪ ،‬تعریف عملیات‬
‫اجرای برنامه‪ ،‬تهیه نمودار کلی منطق برنامه و‪ ...‬در این مرحله انجام می پذیرد‪.‬‬
‫مرحله ‪ :4‬پیاده سازی‬
‫‪‬‬
‫‪‬‬
‫در این مرحله طرح تهیه شده در مرحله قبل پیاده سازی می شود یعنی به فرم‬
‫قابل درک ماشین تبدیل می گردد‪.‬‬
‫برای این کار زبان برنامه نویس ی مناسب انتخاب شده و برنامه های مختلف‬
‫براساس مشخصات درنظر گرفته شده در طرح نوشته و آماده اجرا می گردند‪.‬‬
‫مرحله ‪ :5‬تست‬
‫‪ ‬در مرحله تست‪ ،‬نرم افزار پیاده سازی شده به آزمایش گذاشته می شود‪.‬‬
‫‪ ‬هدف پیدا کردن خطاهای سیستم است‪.‬‬
‫‪ ‬تست در دو زمینه صورت می پذیرد‪.‬‬
‫‪ ‬اوال تست در مورد اجزاء به طور مستقل انجام می گیرد که در این رابطه هم‬
‫در مورد عملیات و دستورات داخلی برنامه آزمایش می شود که درست عمل‬
‫کند و هم در مورد وظایف خارجی پیمانه ها که مشخص می شود براساس‬
‫ورودی های مختلف آیا نتایج موردنظر به دست می آیند یا نه‪.‬‬
‫‪ ‬ثانیا تست در مورد مجموعه اجزاء در ارتباط با هم صورت می گیرد که در‬
‫این حالت مشخص می شود که آیا خواسته های موردنظر کاربر حاصل شده‬
‫است یا نه و بدین صورت کل نرم افزار مورد آزمایش واقع می شود‪.‬‬
‫مرحله ‪ :5‬تست‬
‫‪‬‬
‫در صورت وجود اشکاالتی که نتوان در خود این مرحله رفع نمود بسته به نوع‬
‫اشکال باید به یکی از مراحل قبل یعنی طراحی یا تعریف خواسته ها و یا فهم و‬
‫تحلیل خواسته های بازگشت نمود‪.‬‬
‫مرحله ‪ :6‬نگهداشت‬
‫‪ ‬پس از تست سیستم به عنوان آخرین مرحله مدل آبشاری برای تولید نرم افزار‬
‫مرحله عملیات و نگهداشت آن می باشد که از مراحل حساس و پرهزینه در این‬
‫مدل است‪.‬‬
‫‪ ‬بیشترین درصد هزینه تولید نرم افزار در مدل آبشاری مربوط به مرحله‬
‫نگهداشت آن می باشد‪.‬‬
‫‪ ‬علت باال بودن درصد هزینه در مرحله نگهداشت عدم توجه کافی به مراحل اولیه‬
‫تولید نرم افزار است‪.‬‬
‫‪ ‬به طور کلی سه نوع نگهداشت در نرم افزار مطرح است‪:‬‬
‫الف‪ -‬نگداشت تکمیلی‬
‫ب‪ -‬نگهداشت تطبیقی‬
‫ج‪ -‬نگداشت تصحیحی‬
‫الف‪ -‬نگهداشت تکمیلی‬
‫‪ ‬مجموعه فعالیت هایی که در رابطه با تکمیل نرم افزار‪ ،‬جهت جوابگویی به‬
‫نیازهایی که قبال مشخص نشده‪ ،‬انجام شود را نگداشت تکمیلی گویند‪.‬‬
‫‪ ‬خواسته های جدید کاربر هر لحظه ممکن است مطرح باشد‪ .‬این خواسته ها‬
‫باعث ایجاد تغییراتی در نرم افزار تولید می شود‪.‬‬
‫‪ ‬بعض ی اوقات این خواسته ها باعثی تغییراتی و در پاره ای موارد موجب‬
‫سازماندهی مجدد نرم افزار می گردد‪.‬‬
‫ب‪ -‬نگهداشت تطبقی‬
‫‪ ‬این نوع نگهداشت جهت پاسخگویی به محیط نرم افزار است‪.‬‬
‫‪ ‬یعنی اگر ابزار و وسایل و محیط نرم افزار تغییر کند نرم افزار باید قابلیت تطبیق‬
‫با محیط را داشته باشد‪.‬‬
‫‪ ‬محیط ممکن است از نظر سخت افزار مثل دستگاه های جانبی و یا از نظر نرم‬
‫افزار مثل سیستم عامل باشد‪.‬‬
‫ج‪ -‬نگهداشت تصحیحی‬
‫‪ ‬این نوع نگهداشت در مورد تصحیح خطاها در هنگام عملکرد نرم افزار می باشد‬
‫که این خطاها حتی در مرحله تست هم مشخص نشده و در هنگام اجرای واقعی‬
‫نرم افزار خود را نشان می دهدو ادامه حیات نرم افزار را دشوار یا ناممکن می‬
‫سازد‪.‬‬
‫‪ ‬این خطاها ممکن است مربوط به هریک از مراحل قبل باشد که اصالحات از آن‬
‫مرحله به بعد باید صورت پذیرد‪.‬‬
‫مزایای مدل آبشاری‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫در مدل ابشاری چون خروجی هریک از مراحل ورودی برای مراحل بعد می باشد‬
‫هر مرحله وابستگی شدیدی به مرحله قبل دارد و بنابراین اگر اولین مرحله آن به‬
‫خوبی انجام شد باشد ورودی درست به مرحله بعد می دهد و می توان انتظار‬
‫داشت که این مرحله نیز به خوبی انجام شود و به همین ترتیب این مسئله برای‬
‫مرحله بعدی هم صادق است‪.‬‬
‫ارائه اصول و تکنیک های مناسب در اکثر مراحل مختلف این مدل انجام این‬
‫مراحل را آسان می کند و بکارگیری این اصول و تکنیک ها در تولید نرم افزار‬
‫ضمن اینکه کیفیت نرم افزار را افزایش می دهد قابلیت دید نرم افزار را باال می‬
‫برد به طوری که پیگیری آن نسبتا راحت صورت می پذیرد‪.‬‬
‫مراحل این مدل خیلی شبیه به مراحل کلی هستند که در همه نمونه های‬
‫مهندس ی نرم افزار کاربرد دارند‪.‬‬
‫معایب مدل آبشاری‬
‫‪‬‬
‫در مدل آبشاری با وجود اینکه مراحل آولیه بسیار مهم می باشند ولی عمال توجه‬
‫الزم به این مرحله نمی شود و این مسئله با توجه به درصد هزینه های‬
‫اختصاص یافته به مراحل مختلف که براساس بررس ی های آماری به دست‬
‫آمده کامال مشخص است‪ .‬درصد هزینه ها براساس آمار فوق الذکر به صورت‬
‫زیر می باشد‪.‬‬
‫‪%3‬‬
‫◦ فهم و تحلیل خواسته ها‬
‫‪%3‬‬
‫◦ تعیین مشخصات‬
‫‪%5‬‬
‫◦ طراحی‬
‫◦ پیاده سازی‬
‫‪%7‬‬
‫‪%15‬‬
‫◦ تست‬
‫‪%67‬‬
‫◦ نگهداشت‬
‫معایب مدل آبشاری‬
‫همانطور که مشاهده می شود درصد هزینه ای که مرحله نگهداشت به خود‬
‫اختصاص می دهد بیشترین مقدار یعنی ‪67‬درصد می باشد ‪ .‬از طرفی به قسمت‬
‫های مهم یعنی فهم و تحلیل خواسته ها و تعیین مشخصات جمعا شش درصد‬
‫هزینه اختصاص یافته است‪.‬‬
‫‪ ‬در مدل آبشاری استفاده کننده باید کلیه خواسته های خود را در مرحله اول‬
‫صریحا بیان و مشخص کند چون عمال در طول تولید نرم افزار دیگری با‬
‫استفاده کننده وجود ندارد تا اینکه نرم افزار تولید شده و پی از آن برای ارزیابی‬
‫درستی آن ارتباط با استفاده کننده برقرار می شود‪ .‬بیان کلیه خواسته ها در یک‬
‫مرحله توسط استفاده کننده مشکل است‪.‬‬
‫معایب مدل آبشاری‬
‫روش های جمع آوری اطالعات‬
‫الف‪ .‬مصاحبه‬
‫بهترین روش بدست اوردن اطالعات در یک سیستم است که در اکثر پروژه های تولید‬
‫نرم افزار به کار می رود‪.‬‬
‫در این روش طی یک برنامه ریزی مناسب ‪ 4‬مورد مشخص می شود‪:‬‬
‫‪ .1‬زمان مصاحبه‬
‫‪ .2‬مکان مصاحبه‬
‫‪ .3‬موضوع مصاحبه‬
‫‪ .4‬شخص مصاحبه شونده‬
‫روش های جمع آوری اطالعات‬
‫ب‪ .‬مشاهده‬
‫‪ ‬بسیاری از مسائل و مشکالت در هنگام مشاهده بهتر مشخص می گردند‪.‬‬
‫‪ ‬هنگام مشاهده شرایط محیطی‪ ،‬چگونگی انجام کارها و کنترل های الزم‪ ،‬حجم و‬
‫فشردگی کارها‪ ،‬صرعت کار‪ ،‬معطلی کار و مانند اینها به طورعینی مشخص می‬
‫شود‪.‬‬
‫‪ ‬تحلیل گر باید از همکاری افراد محیط مطمئن شود تا اینکه شرایط مصنوعی و‬
‫غیرعادی در زمان مشاهده او در محیط ایجاد نشود چون اطالعات در این‬
‫شرایط مفید و موثر نخواهد بود‪.‬‬
‫روش های جمع آوری اطالعات‬
‫ج‪ .‬پرسشنامه‬
‫‪ ‬این روش هنگامی مورد استفاده قرار می گیرد که جمع آوری اطالعات در مورد‬
‫عده زیاد و یا در محل های پراکنده و دور از یکدیگر صورت می پذیرد‪.‬‬
‫‪ ‬این روش باید با احتیاط انجام شود و در طرح و تهیه پرسشنامه ها و حصول‬
‫اطمینان از جلب همکاری افراد در پرکردن پرسشنامه ها دقت شود چون عدم‬
‫پاسخ صحیح به پرسشنامه ها باعث کسب اطالعات ناقص و غیرواقعی می‬
‫شود‪.‬‬
‫روش های جمع آوری اطالعات‬
‫پرسشنامه ها دو نوع هستند‪:‬‬
‫‪ .1‬پرسشنامه ها با پاسخ باز‬
‫‪ .2‬پرسشنامه ها با پاسخ بسته‬
‫روش های جمع آوری اطالعات‬
‫د‪ .‬بررس ی اسناد و مدارک‬
‫ر‪ .‬بررس ی سیستم های موجود‬
‫ه‪ .‬بررس ی سایر سیستم های مشابه‬
‫ز‪ .‬صورت برداری منابع مورد نیاز‬
‫ح‪ .‬تجزیه و تحلیل خروجی مورد نیاز‬
‫ط‪ .‬نمونه گیری و تجزه و تحلیل آماری‬
‫روش های جمع آوری اطالعات‬
‫‪ .3‬مدل نمونه ساز (‪)THE Prototyping model‬‬
‫‪‬‬
‫با استفاده از یک مدل ابتدایی‪ ،‬آنچه را که کاربر به آن نیاز دارد‪ ،‬اعم از ورودی‬
‫ها‪ ،‬پردازش ها و گزارش ها به مشتری نشان داده می شود تا از آنچه در آینده به‬
‫شکل یک سیستم طراحی و پیاده سازی خواهد شد‪ ،‬آگاه باشد‪.‬‬
‫‪ .1‬شروع کار با تعریف نیازهای کاربر‬
‫‪ .2‬انجام طراحی سریع (سعی در تمرکز روی آن جنبه هایی از سیستم که برای‬
‫مشتری قابل رویت است‪).‬‬
‫‪ .3‬ایجاد یک یا چند برنامه با استفاده از ابزاری مثل روش های تهیه گزارش‬
‫سریع‬
‫‪ .4‬ارتباط با مشتری و دریافت نظرات وی‬
‫‪ .5‬ساخت مدل نمونه دیگر یا تکمیل مدل نمونه در صورت نیاز‬
‫‪70‬‬
‫مدل نمونه ساز‬
‫گرفتن نیازهای‬
‫مشتری‬
‫ساخت مدل نمونه‬
‫‪71‬‬
‫اخذ نظر مشتری در‬
‫ارتباط با مدل نمونه‬
‫مزایای مدل نمونه ساز‬
‫‪ .1‬امکان تغییر و جمع آوری نیازها‬
‫‪ .2‬در طول تولید نرم افزار ارتباط مشتری با طراح و تولید کننده نرم افزار همواره‬
‫برقرار می باشد‪.‬‬
‫‪72‬‬
‫معایب مدل نمونه ساز‬
‫‪ .1‬چون نمونه ای از نرم افزار در اختیار مشتری قرار می گیرد و مشتری در ابتدا نمی تواند نرم افزار‬
‫کامل را مشاهده کند ممکن است تصور غلطی از نرم افزار پیدا کند‪.‬‬
‫‪ .2‬نمونه ایجاد شده بدون در نظر گرفتن مسائل کیفی و غیره می باشد و درک ایجاد مجدد نرم‬
‫افزار برای مشتری مشکل است‪ .‬چون او از مسائل کیفی و مهندس ی هیچ گونه اطالعی ندارد و‬
‫معموال تغییرات پی در پی برنامه برای مشتری خوشایند نیست‪.‬‬
‫‪ .3‬ممکن است طراح یا تولید کننده نرم افزار برای دستیابی سریع به مدل نمونه به مسائل مهمی‬
‫توجه نکند‪ .‬مثال سیستم عامل درستی را انتخاب نکرده یا زیبان برنامه نویس ی نامناسبی را برای‬
‫نوشتن مدل نمونه انتخاب نماید‪....‬‬
‫‪73‬‬
‫‪ .4‬مدل توسعه کاربردی سریع(‪)RAD‬‬
‫‪ ‬این مدل‪ ،‬یک مدل فرآیندی توسعه نرم افزار ترتیب خطی است که همان‬
‫گونه که از نامش پیداست‪ ،‬قصد دارد فرآیند توسعه را تسریع کند‪.‬‬
‫‪ ‬دالیل نیاز به روش ی جهات تهیه سریع نرم افزار‪:‬‬
‫‪ .1‬فناوری ها و کاربرد آن ها در مهندس ی نرم افزار به سرعت‬
‫پیشرفت دارد‪.‬‬
‫‪ .2‬تهیه یک سیستم بزرگ از تعریف سیستم تا پیاده سازی آن به‬
‫زمان زیادی وقت نیاز دارد‪.‬‬
‫‪ .3‬محصول نرم افزاری تهیه شده ممکن است جوابگوی نیازهای روز‬
‫نباشد‪.‬‬
‫‪74‬‬
‫‪ .4‬مدل توسعه کاربردی سریع(‪)RAD‬‬
‫‪ ‬در این مدل‪ ،‬کارهای نرم افزاری به یخش های مختلفی تقسیم شده و افراد تیم‬
‫پروژه روی بخش های تقسیم شده متمرکز شده و کار شروع می شود‪.‬‬
‫‪ ‬در پایان کار نتیجه حاصله از هر بخش با یکدیگر تلفیق می شود تا محصول نهایی‬
‫ساخته شود‪.‬‬
‫‪ ‬آیا سیستم قابلیت تفکیک پذیری دارد؟؟؟؟؟؟؟‬
‫‪ ‬آیا می توان همه کارها را در یک زمان به پایان رساند تا امکان ترکیب و تحویل دهی‬
‫آن میسر باشد؟؟؟؟؟؟؟؟‬
‫‪ ‬مدیریت چنین پروژه هایی ساده نیست زیرا با دو مشکل افراد و زمان محدود روبرو‬
‫هستیم‪.‬‬
‫‪75‬‬
‫‪ .4‬مدل توسعه کاربردی سریع(‪)RAD‬‬
‫‪ ‬این مدل از دسته مدل های تکراری است و نیاز به ایجاد یک یا چند مدل نمونه‬
‫دارد‪.‬‬
‫‪ ‬این مدل معموال برای پروژه های نسبتا بزرگ کاربرد دارد و افراد تیم باید نهایت‬
‫همکاری و دقت را داشته باشند تا بتوانند در موعد مقرر تولید نهایی را به مشتری‬
‫تحویل دهند‪ ،‬چون اگر یک قسمت از این پروژه انجام نشده باشد تحویل پروژه‬
‫میسر نیست‪.‬‬
‫‪76‬‬
‫تیم شماره ‪3‬‬
‫مدل ‪RAD‬‬
‫مدل سازی کارها‬
‫(تفکیک کارها)‬
‫مدل سازی کارها‬
‫(تفکیک کارها)‬
‫مدل سازی داده‬
‫ای‬
‫تولید کاربرد یا‬
‫نرم افزار‬
‫مدل سازی‬
‫فرآیندی‬
‫تولید کاربرد یا‬
‫نرم افزار‬
‫تولید کاربرد یا‬
‫نرم افزار‬
‫آزمون و تحویل‬
‫به مشتری‬
‫آزمون و تحویل‬
‫به مشتری‬
‫‪77‬‬
‫مدل سازی داده‬
‫ای‬
‫مدل سازی‬
‫فرآیندی‬
‫تیم شماره ‪1‬‬
‫مدل سازی کارها‬
‫(تفکیک کارها)‬
‫مدل سازی داده‬
‫ای‬
‫مدل سازی‬
‫فرآیندی‬
‫آزمون و تحویل‬
‫به مشتری‬
‫تیم شماره ‪2‬‬
‫مدل های فرایند نرم افزاری تکاملی‬
‫‪78‬‬
)Incremental model( ‫ مدل افزایش ی‬.5
79
‫مدل افزایش ی‬
‫‪ ‬در این مدل پروژه به تدریج تکمیل می شود‪.‬‬
‫‪ ‬در هر ترتیب خطی یک «رشد» قابل تحویل دهی را تولید می کند‪.‬‬
‫‪ ‬در اینجا برخالف روش نمونه ساز‪ ،‬نمونه های تولیدی مجددا برای رشد بعدی قابل‬
‫استفاده هستند‪.‬‬
‫‪ ‬همانند روش نمونه ساز و سایر روش های افزایش ی طبیعتی تکراری دارد‪.‬‬
‫‪ ‬برخالف مدل نمونه ساز‪ ،‬در هر مرحله از رشد خود تمرکز روی تحویل یک محصول‬
‫عملیاتی دارد‪.‬‬
‫‪ ‬این مدل زمانی مفید است که از نظر نیروی انسانی و مالی امکانات کافی برای‬
‫رسیدن به نتیجه مورد نظر در دسترس نباشد‪.‬‬
‫‪80‬‬
‫مدل افزایش ی‬
‫مهندسی سیستم های اطالعاتی‬
‫تحویل‬
‫دهی در‬
‫اولین رشد‬
‫تحویل‬
‫دهی در‬
‫دومین‬
‫رشد‬
‫تحویل‬
‫دهی در‬
‫سومین‬
‫رشد‬
‫آزمون‬
‫آزمون‬
‫‪81‬‬
‫آزمون‬
‫ایجاد کد‬
‫ایجاد کد‬
‫ایجاد کد‬
‫طراحی‬
‫تحلیل‬
‫نیازهای‬
‫نرم افزاری‬
‫طراحی‬
‫طراحی‬
‫تحلیل‬
‫نیازهای‬
‫نرم افزاری‬
‫تحلیل‬
‫نیازهای‬
‫نرم افزاری‬
‫رشد ‪3‬‬
‫رشد ‪2‬‬
‫‪ .6‬مدل حلزونی (‪)The spiral model‬‬
‫‪ ‬یک مدل فرایند نرم افزار تکاملی است‪.‬‬
‫مدل‬
‫ترتیب‬
‫خطی‬
‫مدل‬
‫نمونه ساز‬
‫مدل‬
‫حلزونی‬
‫‪ ‬این مدل امکان توسعه سریع روایت های افزایش ی نرم افزار را فراهم می‬
‫آورد‪.‬‬
‫‪ ‬در این مدل‪ ،‬نرم افزار از طریق مجموعه ای از روایت ها و نسخه های‬
‫افزایش ی‪ ،‬توسعه می یابد‪.‬‬
‫‪82‬‬
‫مدل حلزونی‬
‫‪ ‬این مدل به تعدادی فعالیت تقسیم می شود که گاهی اوقات به آن ها‬
‫نواحی کاری می گویند‪.‬‬
‫‪ ‬به طور کلی بین سه تا شش ناحیه کاری وجود دارد‪.‬‬
‫‪ ‬مدل حلزونی یک روش واقعی در توسعه سیستم ها و نرم افزارهایی است‬
‫که دارای مقیاس بزرگ هستند‪.‬‬
‫‪ ‬به دلیل آن که نرم افزار به شکل تدریجی تکمیل می شود‪ ،‬توسعه دهنده و‬
‫مشتری بهتر آن را درک می نماید و می تواند در مقابل سطح خطرپذیری‬
‫تکمیل پروژه واکنش نشان دهد‪.‬‬
‫‪83‬‬
‫مدل حلزونی‬
‫‪ ‬مدل حلزونی از نمونه ساز به عنوان مکانیزم کاهش خطرپذیری استفاده‬
‫می کند و این امکان را به توسعه دهنده سیستم می دهد تا روش نمونه‬
‫ساز را در هر مرحله از تکمیل محصول به کار بگیرد‪ .‬بنابراین مدلی مطمئن و‬
‫قابل اعتماد است‪.‬‬
‫‪84‬‬
‫مدل حلزونی‬
‫برنامه ریزی‬
‫تحلیل خطر‬
‫پذیری‬
‫ارتباط با مشتری‬
‫ارزشیابی‬
‫مشتری‬
‫مهندس ی‬
‫ساختن و انتشار‬
‫‪85‬‬
‫مدل حلزونی‬
‫‪ ‬ارتباط با مشتری‪ :‬کارهایی مثل گردآوری نیازها و اطالعات مورد لزوم‬
‫‪ ‬برنامه ریزی‪ :‬کارهایی که نیاز به تعریف منابع انسانی و مادی و زمان و کنترل روی‬
‫آنها دارد و نیز سایر اطالعات مورد نیاز در پروژه‬
‫‪ ‬تحلیل خطر پذیری‪ :‬کارهایی که برای براورد خطرات تکنیکی و مدیریتی الزم‬
‫است‪.‬‬
‫‪ ‬مهندس ی‪:‬کارهایی که برای ساخت و ارائه پروژه الزم است‪.‬‬
‫‪ ‬ساختن و انتشار‪ :‬کارهای الزم برای ساخت‪ ،‬آزمایش‪ ،‬نصب پشتیبانی (مثل‬
‫مستندات و آموزش)‬
‫‪ ‬ارزشیابی مشتری‪ :‬کارهایی مثل بازخور از مشتری براساس ارزیابی نرم افزار ایجاد‬
‫شده در اثنای مرحله مهندس ی و اجرا در هنگام مرحله نصب‪.‬‬
‫‪86‬‬
‫‪ .7‬مدل توسعه هم زمان ( ‪the concurrent‬‬
‫‪)development model‬‬
‫‪ ‬مدل توسعه هم زمان یا مهندس ی هم زمان‬
‫‪)Engineering‬‬
‫وظایف‬
‫مجموعه ای از‬
‫فعالیت های تکنیکی‬
‫‪87‬‬
‫( ‪Concurrent‬‬
‫حالت های مرتبط‬
‫مدت زمان انجام‬
‫پروژه در این‬
‫مدل به حداقل‬
‫خواهد رسید‬
‫که جهت تکمیل‬
‫پروژه به طور هم‬
‫زمان کار می کند‪.‬‬
‫‪ .8‬مدل روش های رسمی‬
‫‪ ‬مجموعه ای از فعالیت هایی است که منجر به ایجاد مشخصات دقیق‬
‫(همانند مدل های ریاض ی ) نرم افزار کامپیوتری می شود‪.‬‬
‫‪ ‬مهندس نرم افزار را قادر می سازد تا سیستم کامپیوتری را با استفاده از عالیم‬
‫ریاض ی دقیق مشخص کرده‪ ،‬توسعه دهد و بررس ی کند‪.‬‬
‫‪ ‬وقتی از روش های رسمی در هنگام توسعه سیستم استفاده می شود‪ ،‬این‬
‫روش ها مکانیزمی را برای حل بسیاری از مسایل تهیه می کنند که در مدل های‬
‫دیگر نرم افزار غلبه بر آن ها مشکل است‪ ،‬به طور مثال عدم جامع بودن یا‬
‫ناسازگاری می تواند توسط این مدل ساده تر درک شده و رفع شود‪.‬‬
‫‪88‬‬
‫مزایا و معایب مدل روش های رسمی‬
‫مزایا‬
‫معایب‬
‫وضوح‬
‫‪ .1‬مصرف زمان بیشتر‬
‫روشنی‬
‫‪ .2‬هزینه بیشتر‬
‫سازگاری‬
‫جامع بودن‬
‫‪.3‬آموزش های سخت تر‬
‫‪.4‬عدم مکانیزم مناسب در برقراری ارتباط با مشتری‬
‫‪ .5‬استفاده آن در سیستم هایی با حساسیت باال‬
‫‪89‬‬
‫‪ .9‬مدل تکنیک های نسل چهارم (‪)4gt‬‬
‫‪‬‬
‫این مدل شامل مجموعه گسترده ای از ابزارهای نرم افزاری است که همه آنها‬
‫دارای یک فصل مشترک هستند ‪:‬‬
‫‪ ‬چون تکنیک های ذکر شده چندان جنبه‬
‫عام ندارد‪ ،‬می توان گفت که بزرگترین مشکل‬
‫این مدل حالت ویژه آن است‪.‬‬
‫‪90‬‬
‫هرکدام از آنها یک مهندس نرم‬
‫افزار را قادر می سازند تا بعض ی‬
‫از مشخصات نرم افزاری را در‬
‫یک سطح باال مشخص کند‪ .‬آن‬
‫گاه ابزار نرم افزاری به طور‬
‫خودکار کد برنامه مشخص‬
‫شده توسط توسعه دهنده را‬
‫ایجاد می کند‪.‬‬
‫مدل تکنیک های نسل چهارم (‪)4gt‬‬
‫‪ ‬امروزه‪ ،‬یک محیط توسعه نرم افزاری که بخواهد از مدل ‪ 4GT‬استفاده‬
‫کند‪ ،‬باید شامل بعض ی یا تمام ابزارهای زیر باشد‪:‬‬
‫‪ ‬زبان های غیررواملند برای پرس و جوهای پایگاه داده ای‬
‫‪‬تولید گزارش‬
‫‪‬پردازش و کار با داده ها‬
‫‪‬تعامل با صفحه نمایش و ابزاری برای تعریف این صفحه‬
‫‪‬ابزاری برای ایجاد کد‪ ،‬امکان گرافیک های سطح باال و قابلیت های‬
‫صفحات گسترده‬
‫‪91‬‬
‫مدل تکنیک های نسل چهارم (‪)4gt‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫شبیه سایر مدل ها‪ 4GT ،‬با گردآوری نیازها شروع می شود ( مشتری یا کاربر‬
‫درباره نیازهایش صحبت می کند)‬
‫صحبت ها مستقیما به یک نمونه عملیاتی ترجمه می شود‪.‬‬
‫البته این موضوع همیشه صحت ندارد زیرا مشتری ممکن است در مورد نیازهایش‬
‫اطمینان کافی نداشته باشد یا نسبت به بعض ی از حقایق محیط عملیاتی سیستم‬
‫موجود تردید داشته باشد‪ ،‬یا قادر نبوده یا بی میل باشد که اطالعات را به شکلی‬
‫که قابل استفاده برای ابزار ‪ 4GT‬باشند‪ ،‬تهیه کند‪.‬‬
‫برای کاربردها و پروژه های کوچک ممکن است مستقیما مرحله گردآوری داده ها به‬
‫مرحله اجرا برود‪ .‬مثال با استفاده از زبان های نسل چهارم غیررواملند‪.‬‬
‫برای پروژه های بزرگ حتی اگر از زبان های ‪ 4GL‬نیز استفاده شود‪ ،‬حتما نیاز به‬
‫روش طراحی برای توسعه سیستم داریم‪..‬‬
‫‪92‬‬
‫مزایا و عیب روش‪4gt‬‬
‫‪ ‬مزایا‬
‫‪‬کوتاه شدن زمان توسعه سیستم‬
‫‪‬افزایش قابل مالحظه بهره وری برای کسانی که نرم افزار را تولید می کنند‪.‬‬
‫‪ ‬عیب‬
‫‪‬عدم استفاده آسان ابزار بکار رفته در ‪ 4GT‬نسبت به زبان های برنامه نویس ی‪.‬‬
‫به این دلیل که کدهای تولیدی توسط این ابزار کارا نیستند‪.‬‬
‫‪93‬‬
‫عناصر و اصول توسعه سیستم ها‬
‫‪94‬‬
‫عوامل مهم موفقیت در توسعه سیستم ها‬
‫‪( 1‬مهم ترین عامل)‬
‫سیستم باید بتواند نیازهای خواسته شده را برآورده سازد‬
‫و حالل مشکالت باشد‪.‬‬
‫‪2‬‬
‫قابلیت انعطاف و نگهداری آن‬
‫‪3‬‬
‫یکپارچگی و صحت سیستم‬
‫‪4‬‬
‫پروژه توسعه سیستم باید در مدت معین و در چارچوب‬
‫بودجه ای از پیش تعیین شده تکمیل شود‪.‬‬
‫‪95‬‬
‫عوامل مهم موفقیت در توسعه سیستم ها‬
‫‪ ‬این عوامل در بیان بسیار ساده اند‪ ،‬اما در عمل و واقعیت بسیار مشکل به‬
‫نظر می رسند‪.‬‬
‫‪ ‬عوامل موفقیت خود می توانند ذاتا متناقض باشند‪.‬‬
‫‪ ‬مثال‪:‬‬
‫وارد کردن فشار برای تولید سیستم و اتمام آن در مدت زمان کمتر از‬
‫زمان تعیین شده قبلی با قیمت برآورده شده‪ ،‬باعث می شود که عمال‬
‫تیم پروژه نتواند وقت زیادی را صرف انعطاف ذیری‪ ،‬دقت و قابل‬
‫اطمینان بودن سیستم کند‪.‬‬
‫‪96‬‬
‫علل شکست پروژه های سیستمی‬
‫‪ ‬شکست پروژه چیست؟؟؟؟‬
‫‪‬قصور در انجام یک یا چند عامل موفقیت گفته شده در بخش قبلی‬
‫باعث شکست یک پروژه می شود‪.‬‬
‫‪.1‬ضعف ارتباطی‬
‫‪.2‬عدم وجود تحلیل کافی‬
‫‪.3‬عدم توانایی نسبت به کارآیی نتیجه سیستم‬
‫‪ .4‬عدم فرایند تعریف کامل مساله‬
‫‪97‬‬
‫‪ .1‬ضعف ارتباطی‬
‫‪ ‬از یک طرف کاربرانی وجود دارند که مسایل ساخت یک سیستم را نمی‬
‫دانند‪.‬‬
‫‪ ‬از طرف دیگر برنامه نویسانی وجود دارند که مسایل تجاری و مفاهیم آن را‬
‫درک نمی کنند‪.‬‬
‫‪ ‬تحلیل گران و طراحان سیستم کلید اتصال بین این دو گروه هستند‪.‬‬
‫‪ ‬تحلیل گران و طراحان سیستم الاقل نیاز به زبانی مشترک برای برقراری‬
‫ارتباط با هم و رسیدن به یک استاندارد مشخص دارند و این مساله خیلی‬
‫حایز اهمیت است که شخص رابط‪ ،‬زبان مشترک هر دو را بداند‪.‬‬
‫‪98‬‬
‫‪ .2‬عدم وجود تحلیل کافی‬
‫‪ ‬بسیاری از پروژه ها فاقد تحلیل کافی هستند و این موضوع دو علت دارد‪:‬‬
‫‪ .1‬معموال فشار شدیدی روی افراد تیم وجود دارد که هرچه زودتر‬
‫نتیجه کلی را مشخص کنند و شروع به طراحی تفضیلی و برنامه‬
‫نویس ی نمایند‪.‬‬
‫‪ .2‬منابع کافی که باید در هنگام تحلیل و طراحی کلی تهیه شوند اغلب‬
‫خوب درک نشده اند‪.‬‬
‫‪99‬‬
‫‪.3‬عدم توانایی نسبت به کارآیی نتیجه سیستم‬
‫‪ ‬تحلیل گر ممکن است پس از تکمیل کار خود و اطمینان از صحت سیستم‬
‫باز از خود بپرسد که «سیستم نباید انقدر پیچیده شود؟»‬
‫‪ ‬تحلیل گری که روی جنبه های فیزیکی سیستم مانند ساختار‪ ،‬مراحل‬
‫پیچیده فرآیند و ‪ ...‬زیاد تمرکز کند‪ ،‬نتیجه کارش ممکن است منجر به‬
‫ایجاد سیستمی غیرقابل انعطاف و غیرقابل نگهداری شود‪.‬‬
‫‪100‬‬
‫‪ .4‬عدم فرایند تعریف کامل مساله‬
‫‪ ‬معموال تصور می شود که ‪:‬‬
‫◦ تحلیل= مصاحبه با مردم و یافتن آنچه آنان می خواهند‬
‫◦ طراحی = کشیدن یک نمودار گردش ی برای برنامه نویس و گفتن اینکه‬
‫چه برنامه ای بنویسد!!!‬
‫‪ ‬ویژگی سیستم جدید این می شود که مجموعه ای از یادداشت های‬
‫مصاحبه ها‪ ،‬فرم های جاری و امارها و نمودارهای گردش ی سیستم تهیه می‬
‫شود‪.‬‬
‫‪ ‬همه این ها در کنار هم هرچه بیشتر دست تحلیل گر را می بندند‪.‬‬
‫‪101‬‬
‫عناصر موفقیت‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪102‬‬
‫مشکالت ذکر شده شایع هستند ولی بدون چاره نمی باشند‪.‬‬
‫راه حل‪ :‬استفاده از ابزارها‪ ،‬تکنیک ها و فرایندهای موجود برای به حداقل‬
‫رساندن مشکالت‬
‫این تکنیک ها باید در یک چارچوب خوب یا به عبارتی متدولوژی مناسب‬
‫تعریف شوند‪.‬‬
‫یک متدولوژی‪ ،‬چارچوبی برای مدیریت پروژه است و جهت تکمیل یک یا‬
‫چند مرحله از مراحل دوره زندگی توسعه سیستم به کار گرفته می شود‪.‬‬
‫متدولوژی برای حصول اطمینان از تکمیل پروژه‪ ،‬تائید کیفیت و به عنوان‬
‫مبنایی جهت اصالح احتمالی سیستم در صورت مواجه شدن با مشکالت‬
‫غیرقابل پیش بینی است‪.‬‬
‫اصول اولیه توسعه سیستم ها‬
‫‪.1‬‬
‫‪ ‬فرآیند موفقیت در توسعه سیستم‬
‫ها‪ ،‬دربرگیرنده تعدادی ویژگی ‪.2‬‬
‫مشترک و واضح است‪ .‬این ویژگی ها‬
‫شامل‪:‬‬
‫‪.3‬‬
‫‪.4‬‬
‫‪(‬سه اصل اول ارتباط تنگاتنگی با هم‬
‫دارند‪).‬‬
‫‪103‬‬
‫‪.5‬‬
‫تکرار‬
‫تجزیه سیستم به الیه ها یا‬
‫سلسله مراتب‬
‫هدف اساس ی و بنیادی سیستم‬
‫استفاده از ابزار گرافیکی‬
‫استفاده از مدل ها‬
‫‪ .1‬تکرار‬
‫‪ ‬هیچ تحلیل گری‪ ،‬قادر نیست تنها با یک بار مرور مسائل کاری را یاد بگیرد‪.‬‬
‫‪ ‬فرایند تجزیه مساله به چند جزء کوچک تر ممکن است در داخل هر جزئی‬
‫تکرار شود تا به سطحی از جزئیات برسیم که قابل درک باشند‪.‬‬
‫‪104‬‬
‫‪ .1‬تکرار (ادامه)‬
‫‪ .i‬تحلیل سیستم با بررس ی همه جانبه طرز کار موضوع مورد مطالعه‬
‫و سیاست های آن که سیستم را می سازد‪ ،‬شروع می شود‪.‬‬
‫‪ .ii‬سپس به دنبال فرایند تحلیل‪ ،‬ساختاری که باید با استفاده از آن‬
‫مدل هایی تهیه شود بررس ی می گردد‪.‬‬
‫‪ .iii‬در صورت لزوم تحلیل گر فرایند را انقدر تکرار می کند تا درک‬
‫کاملی از سیستم داشته و توافق کاملی درباره اهداف و وظایف و‬
‫روش کار سیستم بین استفاده کنند و تحلیل گر حاصل شود‪.‬‬
‫‪105‬‬
‫‪ .2‬سلسله مراتب و تجزیه سیستم به الیه ها‬
‫‪ ‬سلسله مراتب یا طبقه بندی == شکستن یا تقسیم یک مساله یا پروژه‬
‫بزرگ به قسمت های ساخت یافته‪ ،‬مرتبط و قابل کنترل کوچک تر است‪.‬‬
‫تکرار‬
‫سلسله مراتب‬
‫و تجزیه‬
‫سیستم به الیه‬
‫ها‬
‫هدف اساسی‬
‫و بنیادی‬
‫سیستم‬
‫‪ ‬مثال‪ :‬اولین تکرار ممکن است در یک سیستم منجر به شناسایی اجزا یا زیر‬
‫سیستم های اصلی می شود و تکرارهای بعدی باعث شناسایی اجزای باز‬
‫هم کوچکتر در داخل زیر سیستم های اصلی گردد‪.‬‬
‫‪106‬‬
‫‪ .2‬سلسله مراتب و تجزیه سیستم به الیه ها‬
‫(ادامه)‬
‫‪ ‬هر قسمتی از سیستم در قالب یک سری از اجزا تعریف می شوند‪.‬‬
‫‪ ‬این تجزیه و طبقه بندی آن قدر ادامه پیدا می کند تا به سطحی برسیم که‬
‫وظایف و نیازهای قسمت های جداگانه سیستم به خوبی فهمیده و درک‬
‫شوند‪.‬‬
‫‪107‬‬
‫‪ .3‬هدف اساس ی و بنیادی سیستم‬
‫‪ ‬تعریف روشن و ساده ای از اهداف سیستم می بایست وجود داشته باشد تا‬
‫اطمینان حاصل شود که نیازهای استفاده کننده براورده می شود‪.‬‬
‫‪ ‬داشتن هدفی معین و مشخص === چه چیزهایی باید در داخل سیستم درنظر‬
‫گرفته شود و یا اینکه درنظر گرفته نشود‪.‬‬
‫‪ ‬مشکل اساس ی‪ :‬نمی شود قبل از آنکه محدوده مشکل کامال مشخص شود‪،‬‬
‫هدف روشنی را ترسیم کرد‪.‬‬
‫‪ ‬مفاهیم تکرار و تجزیه امکان فرآیند تکاملی تعیین اهداف را می دهد‪.‬‬
‫‪108‬‬
‫‪ .4‬استفاده از ابزار گرافیکی‬
‫ابزارها و تکنیک های گرافیکی‬
‫متعددی جهت کمک به تحلیل گر وجود‬
‫دارد که می تواند در درک بهتر سیستم‬
‫جاری و نیز آنچه که سیستم در آینده به‬
‫آن نیاز دارد‪ ،‬مورد استفاده قرار گیرند‪.‬‬
‫نمایش گرافیکی سیستم این امکان را به‬
‫استفاده کننده و تحلیل گر می دهد تا حد‬
‫انتظار هر سیستم را مشخص کنند‪.‬‬
‫(نمودار‬
‫‪DFD‬‬
‫جریان داده ها)‬
‫نمودار جریان داده ها هم ابزار تحلیلی‬
‫و هم ابزار ارتباطی است‪.‬‬
‫‪109‬‬
‫این نوع نمودار نشان می دهد که‬
‫چگونه عناصر داده ای در داخل یک‬
‫سیستم حرکت کرده و به اطالعات تبدیل‬
‫می شوند‪.‬‬
‫نمودار جریان داده های فرایند ثبت دانشجویی‬
‫فهرست ثبت‬
‫نام‬
‫شماره دانشجویی‬
‫سیستم صورتحساب‬
‫شهریه‬
‫کالس‬
‫زمانبندی شده‬
‫ظرفیت‬
‫موجود‬
‫ثبت نام در‬
‫کالس‬
‫درخواست‬
‫شده‬
‫قبول کالس درخواست شده‬
‫دفترچه راهنمای‬
‫دوره ها‬
‫‪110‬‬
‫پیش نیاز‬
‫دوره‬
‫بررسی‬
‫پیش نیازها‬
‫برنامه زمانبندی‬
‫کالس‬
‫ظرفیت موجود‬
‫ظرفیت‬
‫کالس‬
‫درخواست‬
‫کالس‬
‫درخواست بازکردن‬
‫کالس‬
‫دوره های‬
‫تکمیل شده‬
‫رونوشت دانشجو‬
‫دانشجو‬