PDA

View Full Version : چرخه تولید نرم افزار و نکات حاکم بر آن



marandi
یک شنبه 14 دی 1382, 00:30 صبح
باسلام خدمت تمامی سروران عزیز
چند خط نوشته در مورد مراحل ساخت نرم افزار و مسائل حاکم بر آن جمع آوری کردم، امیدوارم به درد بخوره !......
در مسیر تکاملی توسعه نرم افزاری چرخه عمر متعددی متداول بوده است که اکنون نیز هر یک از آنها و یا ترکیبی از آنها مورد کاربرد میباشد . این چرخه ها شامل چرخه عمر آبشاری ، چرخه عمر مبتنی بر نمونه سازی ، چرخه عمر حلزونی و بالاخره تکنیکهای نسل چهارم که با بکارگیری ابزارهای متعدد در مراحل مختلف چرخه ، سرعت طراحی و پیاده سازی را چندین برابر کرده است. فعالیتهای اصلی که در مجموعه این چرخه ها قابل انتزاع است را می توان به سه مرحله اصلی تقسیم کرد:
1- فاز تعریف
2- فاز ایجاد
3- فاز نگهداری

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

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

و بالاخره فاز نگهداری که بر تغییراتی در نرم افزار تمرکز دارد که متناظر با تصحیح خطا و یا تطابق با تغییر محیط نرم افزار میباشد و یا اینکه ناشی از افزودن توانایی نرم افزار در تامین نیازمندی جدید مشتری دارد بنابر این سه نوع مختلف از تغییرات در این فاز قابل مشاهده است :
• تصحیح نرم افزار
• تطبیق نرم افزار
• افزایش توانمندی نرم افزار

تضمین کیفیت و مدیریت اعمال تغییرات
دو نوع مدیریت در اجرای پروژه نرم افزاری وجود دارد که همانند چتری ناظر بر تمامی فعالیتهای ایجاد و توسعه نرم افزار است . این دو عبارتند از: تضمین کیفیت یاQuality Assurance و Configuration Management یا مدیریت اعمال تغییرات در نرم افزار.

تضمین کیفیت ( Software Quality Assurance )
با عنوان این مطلب که هدف از مدیریت پروژه نرم افزاری تهیه و تحویل نرم افزار با بهترین کیفیت ممکن می باشد، بحث تضمین کیفیت جایگاه ویژه خود را در این پروسه از ابتدا تا انتهای چرخه عمر پروژه به خود اختصاص داده است .
طی یک بررسی که در سال 1989 توسط فینکلستین انجام گرفت نحوه توزیع خطا در سیستمهای اطلاعاتی بصورت زیر خلاصه گردیده است :
56% عدم کفایت در تعیین نیازمندیها
27% خطا در طراحی
7% خطا در برنامه نویسی
1% خطا در سایر مراحل

چنانچه ملاحظه می شود حساسترین مرحله در بروز خطا در یک نرم افزار مربوط به قدم تحلیل نیازمندیها یا (Requirement Analysis) می باشد ، این نیازمندیها منحصر به نیازمندیهای اعلام شده توسط مشتری نمی باشد بلکه عدم رعایت سایر نیازمندیها و استانداردهای سیستم که مربوط به تیم پروژه است نیز شامل آن دسته می باشد .از اینرو تحلیل درست آن ، وابستگی عمیقی به سطح مهارت و تخصص و تجارب اعضای تیم دارد ، و همچنین چنانچه ملاحظه می گردد خطا در تمام مراحل چرخه پیدایش و توسعه سیستم بروز می نماید از اینرو مدیریت کیفیت و حصول اطمینان از کیفیت به تمام مراحل توسعه نرم افزار بایستی نظارت داشته باشد.
به همین لحاظ فاکتورهایی جهت اندازه گیری کیفیت نرم افزار پیشنهاد گردیده اند ،بر اساس پیشنهاد McCall یازده فاکتور کیفی تعریف گردیده اند که در سه گروه طبقه بندی شده اند :
طبقه اول مربوط به عملکرد محصول ، طبقه دوم مربوط به تغییر پذیری و طبقه سوم مربوط به توانایی اجرایی نرم افزار در یک محیط جدید است .
این فاکتورها عبارتند از :
الف)
1. Correctness: یا صحت مربوط به تطبیق برنامه با مشخصات نیازمندیها می باشد.
2. : Reliability توانایی عملکرد با دقت لازم
3. Efficiency: توانایی عملکرد در محیط سخت افزاری که برای آن طراحی شده است.
4. Integrality : پیش بینی موارد حفاظتی و امنیتی
5. Usability : قابلیت اجرا توسط کاربران

ب)
6. Maintainability : قابلیت خطا یابی و رفع آن در برنامه
7. Flexibility : قابلیت تغییر در برنامه
8. Testability : قابلیت تست و ارزیابی برنامه

ج)
9. :Portabilityقابلیت انتقال برنامه از یک محیط سخت افزاری یا نرم افزاری به محیط دیگر
10. :Reusability قابلیت استفاده از نرم افزار یا بخشی از آن در نرم افزار دیگر
11. :Interoperability قابلیت تبادل اطلاعات بین برنامه و سایر سیستم ها

مدیریت اعمال تغییرات در نرم افزار( Software Configuration Management )
با توجه به این مطلب که در ادامه حیات سیستم به سبب تغییر محیط کاری ، نیازمندیهای جدید و سایر عوامل ، ممکن است نرم افزار دچار تغییراتی گردد از اینرو ثبت و اعمال تغییرات جدید و نگهداری سوابق قبلی سیستم از اهمیت ویژه ای برخوردار میگردد . به همین دلیل مدیریت اعمال تغییرات در نرم افزار بدین صورت تعریف گردیده است :
هنر تشخیص ، سازماندهی و کنترل تغییرات و اصلاحات به نرم افزار در حال ایجاد ، توسط تیم برنامه نویسی که هدف آن بالا بردن ثمربخشی از طریق کاهش اشتباه می باشد .

JavanSoft
یک شنبه 14 دی 1382, 01:13 صبح
جالب بود ... مرجع؟

marandi
یک شنبه 14 دی 1382, 18:14 عصر
جالب بود ... مرجع؟
در مورد مرجع باید بگم که مرجع دقیقی نداره این مطالب رو طی تنظیم Proposal هام در چند سال گذشته جمع آوری کردم......

JavanSoft
دوشنبه 15 دی 1382, 00:43 صبح
خیلی خوب بود چرا کاملش نکردید

marandi
دوشنبه 15 دی 1382, 05:00 صبح
خیلی خوب بود چرا کاملش نکردید
باید بگم، در زمینه چرخه تولید یک نرم افزار، دیگه سوادم تموم شده :oops: اگه کسی دیگه اطلاعات بیشتری داره، به متن اضافه کنه تا شاید منبع خوبی از کار در بیاد :wink:

sql_qassem
سه شنبه 23 دی 1382, 16:00 عصر
به هر حال ممنونیم
SQL
8)

hassan_kahrizy
سه شنبه 09 اسفند 1384, 22:22 عصر
بسمه تعالی
با سلام
خوب بود
با تشکر

M.GhanaatPisheh
شنبه 13 اسفند 1384, 05:23 صبح
مطالب تا حدودی به Solution Architecture از کتابهای MCSD.NET نزدیکه.
مبحثMSF حول همین بحث می گرده.

arashmmc
یک شنبه 14 اسفند 1384, 23:24 عصر
مطالب جالبی بوده است.

molana alavi
یک شنبه 21 اسفند 1384, 00:02 صبح
تعریف مقدماتی خوبی بود. متشکرم

...AJN
جمعه 15 مرداد 1395, 20:32 عصر
مطلب بسیار جالبی بود ، تشکر.....