مهندسی نرم افزار
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
پیش نیاز
دوره
بررسی
پیش نیازها
برنامه زمانبندی
کالس
ظرفیت موجود
ظرفیت
کالس
درخواست
کالس
درخواست بازکردن
کالس
دوره های
تکمیل شده
رونوشت دانشجو
دانشجو