فرایند توسعه نرم افزار چیست؟!
این سوالی هست که فکر می کنم با پاسخ دادن به اون یک درک سطحی از کلیت کار رو می تونم باهاش انتقال بدم. در واقع فرایند توسعه نرم افزار به مجموعه ای از فعالیت های مهندسی نرم افزار می گن که با هدف مدیریت چرخه عمر یک محصول نرم افزاری، طراحی و برنامه ریزی میشن.
به عنوان مثال، شما می خوای لاغر شی، میشینی یک سری برنامه غذایی، ورزشی و تمرینی میریزی که طبق اون میتونی توی ماه اول x کیلو، توی ماه دوم y کیلو و به همین ترتیب تا فلان تاریخ میتونی فلان مقدار از وزنت رو کم کنی. خب توی فرایند لاغر شدن، کالری غذاهایی که روزانه به بدنت اضافه میشه و مقداری که مصرف میشه محاسبه میشن، از طرفی مقدار کالری تک تک غذاهایی که توی روزمره می خوری محاسبه میشن و طبق یک ساختاری شما باید این مقادیر رو به همراه ورزش کردن و ملزومات جانبی این فرایند کنار هم بچینی که بتونی سر زمان مناسب به اون هدفی که داشتی برسی.
توسعه نرم افزار هم دقیقا به همین شکلِ؛ یعنی شما نیاز داری یک پروژه نرم افزاری رو ابتدا نیاز سنجی بکنی، بعد از اون تحلیل روش انجام بدی، بعد بری سراغ فاز اجرا و الی آخر ... به طور کلی میشه اون رو در سه بخش عمده برنامه ریزی (امکان سنجی، تعریف، تبیین نیازمندی ها) ، اجرا (طراحی، پیاده سازی، آزمون، مستند سازی) و نگهداری تقسیم بندی کرد. فرایندهای تولید نرم افزار اومده که برای هرکدوم از این بخش ها و جزئیات اونا روش، قواعد و اصول معینی رو ارائه کنه.
مدل های تولید و توسعه نرم افزار
فرایند های تولید نرم افزار بر اساس مدل تولید نرم افزار منتخب خود به چند دسته تقسیم میشه (مبتنی بر نوع پروژه انتخاب میشه) که عبارتند از :
-
مدل چابک (Agile Model): مدل چابک تولید نرم افزار در اصل روش تکراری را به عنوان اساس کار استفاده می کنه اما طرفداری نظریه سبکتر و محبوبیت بیشتر از روش سنتی هست. مدل چابک از بازخوردها به جای برنامه ریزی بعنوان مکانیزم اصلی کنترل پروژه استفاده می کنه. بازخورد ها بوسیله تست و آزمونهای مرتب و انتشار پیاپی و در بازههای کوتاه زمانی نرم افزارهای در حال تکامل تولید می شن. مدل های متودلوژی ایکس پی1 (روش خیلی سریع) اسکرام2 از جمله دو متدولوژی محبوب این مدل هستند.
-
مدل حلزونی (Spiral Model) این مدل برای بهبود مدیریت ریسک در تمام مراحل تولید نرم افزار ساخته شده و ترکیبی هست از مدل آبشاری بهمراه امکان نمونه سازی3 سریع. این مدل اگر چه برخی جنبه های مدل آبشاری را بهبود می داد لیکن از نارسایی های فراوان آن مدل متاثر بود.
-
مدل آبشاری (Waterfall Model) در این مدل فعالیت های تولید نرم افزار در قالب فازهای با توالی مشخص و به ترتیب، برنامه ریزی و اجرا میشن. اشکال عمده این روش اینه که بازبینی و تجدید نظر در فازهای انجام شده امکان پذیر نیست پس طبیعتا خطای تخمین ابعاد پروژه، ریسک اشتباه در فهم درست و تحلیل نیازمندی ها و نیز امکان انتخاب نابجای معماری بسیار بالا میره.
-
مدل تکراری و افزایشی (Incremental Model) مدل تکراری و افزایشی این امکان رو میده که بشه پروژه رو ابتدا در مقیاس بسیار کوچک شروع کرد و کلیه مراحل را طی نمود؛ سپس بمرور زمان سیستم را رشد بدیم و به سمت سیستم نهایی سوق جلو ببریم. این روش باعث می شه در حین اجرای کار مشکلات مهم قبل از اینکه باعث خراب شدن کل سیستم بشه شناسایی و حل بشن. همینطور به کاربرها اجازه میده نیاز های خود را به تدریج و بر حسب شرایط عینی سیستم بازنگری و عنوان کنن.
مدل نرم افزاری RAD به چه صورت است؟
در واقع RAD4 مدلی هست مبتنی بر دو مدل حلزونی و تکراری. در واقع یک مدل فرآیند تولید نرم افزار هست که تنها بر یک سیکل تولید بسیار کوتاه تأکید می کنه.
مدل RAD برای ساخت سیستم های اطلاعاتی پیشنهاد میشه و کاربرد این مدل، تاکید بر کوتاه نمودن دوره ساخت نرم افزار هست. این مطلب بیانگر اینه که BPMS5 یک روش برآمده از اصول مهندسی است و تمام اصول مهندسی را برای اجرای یک فرآیند سریع و مطمئن در سازمان را رعایت کرده است.
مراحل RAD:
مدل سازی تجاری: جریان اطلاعات در میان کارهای تجاری به شکلی مدلسازی میشه که به سوالات زیر پاسخ دهد.
- چه اطلاعاتی برای پیشبرد اهداف تجاری نیاز است؟
- چه اطلاعاتی تولید میشوند؟
- چه کسانی این اطلاعات را تولید میکنند؟
- این اطلاعات به کجا می روند؟
- چه کسانی آن را پردازش میکنند؟
مدل سازی داده ای: جریان اطلاعاتی به دست آمده در مرحله قبل به صورتی کامل پالایش میشه و اشیا داده ای مورد نیاز از آن استخراج میشه. صفات هر شی مشخص شده و ارتباط بین اشیا مشخص میکنه.
مدلسازی فرایند: پردازش ها و فرایندهای مورد نیاز برای ساخت، اضافه کردن، تغییر، حذف و یا بازیابی اشیاء داده ای تعریف میشن.
تولید برنامه کاربردی: این مدل فرض رو به استفاده از تکنیک های تولید نسل چهارم گذاشته؛ در این حال به جای نوشتن کد از اشیا و قطعات از قبل آماده شده استفاده میشه و در صورت امکان اجزای قابل استفاده مجددی تولید میکنه. در همه موارد، ابزارهای خودکار برای تسهیل در ساخت نرم افزار به کار گرفته میشن.
آزمون و چرخش: از اونجایی که این مدل بر استفاده مجدد از اجزا تاکید داره و بسیاری از مولفه ها قبلا مورد آزمایش قرار گرفتن، زمان تست کاهش پیدا می کنه؛ اما در این قسمت باید اجزای جدید و رابط های اجزا مورد تست قرار بگیرند.
مزایای مدل RAD:
- کاهش در زمان توسعه.
- افزایش قابلیت استفاده مجدد کامپوننت ها (اجزاء).
- بررسی های اولیه سریع رخ می دهند.
- دریافت بازخورد استفاده کنندگان رو با روی باز می پزیره.
- ادغام از همان ابتدا، بسیاری از مسائل ادغام رو حل می کنه.
معایب مدل RAD:
- به قوی/ضعیف بودن تیم و اجراهای فردی اعضای تیم برای شناسایی نیازمندی های بیزینس وابسته هست.
- فقط سیستم هایی که پیمانه ای (ماژولار) هستند می تونم از مدل RAD استفاده کنن.
- مستلزم داشتن مهارت های زیاد توسعه و طراحی هست.
- وابستگی زیادی داره با مهارت های مدل سازی.
- از اونجایی که خیلی به مدل سازی نیاز داره برای پروژه های کوچیک قابل استفاده (به صرفه) نیست.
چه زمانی باید از مدل RAD استفاده کرد؟
- زمانی میشه از RAD استفاده کرد که حداقل 2 الی 3 ماه زمان هست برای ماژولار کردن و مدل سازی کلی پروژه
- زمانی که چندین طراح در دسترس هست که مدل های ساخته شده رو طراحی کنن (و همچنین یک بودجه ی کافی برای پرداخت حقوق این طراح ها)
- زمانی مدل RAD SDLC6 انتخاب میشه که منابع با دانش زیادی از بیزینس در دسترس باشند و نیاز تولید یک سیستم در طول 2 الی 3 ماه وجود داره.
نحوه استفاده از مدل RAD به چه صورت می باشد؟
همانطور که گفتم، بخش اعظمی از مدل RAD مبتنی بر مدل سازی هست.تصویر زیر رو ببینید:
میبینید؟ سه مرحله اول اون مدل سازی هستش: (یعنی باید یک سری قالب کلی رو به صورت مدل یا طرح برای هر بخش آماده کرد)
- مدل سازی دیتا (اطلاعات پروژه)
- مدل سازی بیزینس (مارکت؛ کسب و کار)
- مدل سازی فرایند
- تولید نرم افزار
- تست و استفاده از محتوا در پروژه
و به عنوان کلام آخر هم می خوام این رو بگم که مهمترین ویژگی مدل RAD اینه که این امکان وجود داره که میشه از اجزا و مدل هاش دوباره و دوباره استفاده کرد. آرزوی موفقیت دارم.
1 XP - extreme programming
2 SCRUM
3 Prototyping
4 Rapid Application Development
5 business process management suite
6 Software Development Life Cycle