درس مهندسی نرم افزار پیشرفته
فصل اول
بسمه تعالی
بحران نرم افزار و بررسی مسئله پیچیدگی در نرم افزار
اهداف جلسه
درک مشکلات تولید نرم افزار و راه مقابله با آن
درک اهمیت مهندسی نرم افزار
درک ضرورت روی آوردن به یک متدولوژی مدون
درک ماهیت نرم افزار و تفاوت آن با بقیه محصولات مهندسی
درک پیچیدگی نرم افزار و عوامل پدید آورنده آن
آشنائی با مبحث سیستمهای پیچیده و ویژگیهای آنها
فهرست مطالب
بحران نرم افزار
مهندسی نرم افزار و ضرورت آن
متدولوژی و اهمیت آن
تفاوت نرم افزار و سخت افزار
پیچیدگی ذاتی نرم افزار
عوامل پدید آورنده پیچیدگی نرم افزار
ساختار سیستمهای پیچیده
ویژگی سیستمهای پیچیده
پیچیدگی سازمان یافته وسازمان نیافته
بحران نرم افزار
”پیشرفت شگرف سخت افزار و ضعف روشهای تولید نرم افزار و ناتوانی این روشها در کنترل پیچیدگی نرم افزار بحران نرم افزار را بوجود آورد“
علایم این بحران عبارتند از:
عدم بهره گیری کامل از قدرت سخت افزار
ناتوانی روشهای تولید نرم افزار در پاسخگوئی به افزایش تقاضا
هزینه های هنگفت تولید نرم افزار
عدم تحویل به موقع
عدم تامین نیازمندیهای کاربر
کیفیت پایین و نامطمئن
سختی نگهداری بعلت کیفیت پایین طراحی
بحران نرم افزار (ادامه)
”برای مقابله با این بحران مهندسی نرم افزار مطرح شد“
مهندسی نرم افزار و ضرورت آن
ویژگیهای مهندسی نرم افزار
تجدید نظر در روشهای برنامه ریزی و کنترل
استفاده از تجربیات دیگر رشته های مهندسی(مثال الگوها Patterns)
تهیه و جایگزینی استانداردهای مطمئن
مهندسی نرم افزار و ضرورت آن (ادامه)
تعریف:
”بکارگیری یک روش سیستماتیک، منظم و قابل اندازه گیری برای تولید و توسعه، عملیاتی کردن و نگهداری نرم افزار؛ بکارگیری اصول مهندسی در تولید نرم افزار“
اهداف مهندسی نرم افزار
افزایش کیفیت، قابلیت اطمینان، قابلیت نگهداری
رضایت کاربر و سهامداران
کاهش هزینه
تحویل به موقع
استفاده از مولفه های استاندارد
استفاده مجدد
مهندسی نرم افزار و ضرورت آن (ادامه)
ابزارهای خودکار
سازی
(CASE Tools)
متدولوژی
تکنولوژی مهندسی نرم افزار
فرآیند تولید
مهندسی نرم افزار و ضرورت آن (ادامه)
روش : فرآیندی منظم که با استفاده از مجموعه ای از نمادگذاریهای خوش تعریف، مجموعه ای از مدلها را ایجاد می کند که هر کدام بخشی از سیستم نرم افزاری در دست تولید(یا توسعه) را توصیف می نماید.
اهمیت متدولوژی
”یکی از علل اساسی بحران نرم افزار عدم وجود روشهای مناسبی برای تولید نرم افزار“
متدولوژی: مجموعه ای از روشها که در تمام چرخه حیات سیستم نرم افزاری اعمال شده و بر یک نوع نگرش کلی درباره جهان نرم افزار متکی هستند.
”بنظر بسیاری از متخصصین بکارگیری یک متدولوژی مدون در تولید نرم افزار می تواند تا اندازه قابل توجهی مشکلات بیان شده را برطرف سازد “
ویژگیهای یک متدولوژی مطلوب:
ارئه تعاریف از مفاهیم اولیه بکار رفته در متدولوژی
ارائه مدلی برای فرآیند تولید
داشتن مدل زیر بنائی(مدل معماری)
اهمیت متدولوژی (ادامه)
ارائه یک شیوه علامت گذاری استاندارد
معرفی تکنیکهایی برای پیاده سازی متدولوژی که توانایی کنترل پیچیدگی سیستمهای کنونی را دارا باشند
ارائه معیارهای برای ارزیابی نتایج حاصل از بکارگیری متدولوژی
وجود ابزار اتوماتیک برای کمک به تولید و اجرای مدلهای مبتنی بر متدولوژی
اهمیت متدولوژی (ادامه)
تفاوت نرم افزار و سخت افزار
فرایند تولید نرم افزار یک فرایند مهندسی است نه یک فرایند تولید صتعتی
بوسیله متخصصین
بوسیله استفاده کننده گان نهائی
تعیین مشخصات:
1
سخت افزار
نرم افزار
نرم افزار با گذشت زمان دچار فرسودگی نشده بلکه فاسد می گردد
2
تفاوت نرم افزار و سخت افزار (ادامه)
زمان
نرخ خرابی
منحنی نرخ خرابی سخت افزار نسبت به زمان
تفاوت نرم افزار و سخت افزار (ادامه)
منحنی نرخ خرابی ایده آل نرم افزار نسبت به زمان
تفاوت نرم افزار و سخت افزار (ادامه)
تغییر
نرخ خرابی افزایش یافته به علت تاثیرات جانبی
منحنی واقعی
منحنی ایده آل
منحنی نرخ خرابی واقعی نرم افزار نسبت به زمان
بیشتر نرم افزارها به شیوه سنتی ساخته می شوند و از ترکیب مولفه های استاندارد تولید نمی گردند
3
تفاوت نرم افزار و سخت افزار (ادامه)