مدل RAD در توسعه نرم ‌افزار


کلمه RAD مخفف Rapid Application Development می باشد. همانطور که از نام این مدل مشخص است توسعه نرم ‌افزار در این روش به صورت سریع و یا Rapid اتفاق می‌افتد. مدل RAD بر اساس تکنیک های نمونه سازی و یا prototyping و روش توسعه تکراری و یا همان iterative بنا نهاده شده است و هیچ گونه برنامه ریزی خاصی در آن وجود ندارد.

فرآیند تولید نرم افزار شامل برنامه ریزی لازم برای توسعه محصول می باشد. تکنیک Rapid Application Development بر روی جمع آوری نیازمندی های مشتری بر اساس جلسات و کارگاه های برگزار شده تمرکز دارد. تست ‌های اولیه نمونه‌ های اولیه و یا همان prototype ها توسط مشتری با در نظر گرفتن توسعه تکراری انجام می‌شود.

استفاده کردن مجدد از نمونه‌های از قبل موجود و انجام continuous integration و rapid delivery در این مدل اتفاق می‌افتد. منظور از continuous integration و rapid delivery یکپارچه کردن قسمت های مختلف ساخته شده با یکدیگر و همچنین تحویل نسخه های مختلف برنامه به مشتری است.

مدل RAD چیست؟

مدلRapid application development که به صورت کوتاه به آن RAD می گویند یک متدولوژی توسعه نرم‌افزار است که از حداقل برنامه ‌ریزی استفاده می کند و سعی در نمونه سازی سریع نرم ‌افزار دارد. یک نمونه اولیه و یا prototype یک مدل عملیاتی از نرم افزار است که عملیات تقریباً یکسانی را نسبت به محصول نهایی خواهد داشت.

در مدل RAD ماژول های عملیاتی به صورت موازی توسعه داده می شوند و سپس برای تکمیل کردن محصول نهایی و تحویل آن به مشتری با یکدیگر یکپارچه و یا اصطلاحاً integrate می گردند. از آنجایی که هیچ برنامه‌ریزی دقیقی وجود ندارد در نظر گرفتن و لحاظ کردن تغییرات در روند توسعه نرم افزار ساده تر است. همانطور که پیشتر گفتیم پروژه ‌های RAD بر اساس مدل iterative و incremental عمل می کنند و از تیم های توسعه نرم‌ افزار کوچکی تشکیل شده اند. علاوه بر این domain expert ها و نماینده ‌های مشتری و دیگر منابع IT که بر روی پروژه کار می‌کنند نیز بخشی از این مدل می باشند. مهمترین جنبه مدل RAD این است که prototype ها و یا نمونه های اولیه ساخته شده قابل استفاده مجدد در مراحل بعدی خواهند بود.

طراحی مدل RAD

مدل RAD تجزیه و تحلیل و طراحی و ساخت و تست را در قالب سیکل های کوتاه و تکراری توزیع می‌کند. در ادامه فازهای مختلف مدل RAD را بررسی خواهیم کرد.

فاز business modeling

فاز business modeling و یا مدل سازی تجاری به ساختن یک business model می پردازد. مدل تجاری و یا business model یک محصول که در حال توسعه است از نقطه نظر جریان اطلاعات و توزیع کردن آنها بین کانال های تجاری مختلف طراحی می گردد. یک تجزیه و تحلیل تجاری کامل برای درک هرچه بهتر اطلاعات ضروری انجام می گردد.

فاز data modeling و یا مدل سازی داده

اطلاعات کسب شده در فاز business modeling در این فاز بازبینی و تجزیه و تحلیل می شود و مجموعه ‌ای از اشیای داده ای و یا data object های ضروری برای business تشکیل می گردند. ویژگی های تمامی این مجموعه داده ها تعریف و مشخص می‌شود. علاوه بر این، ارتباط بین این data object ها تنظیم گردیده و به صورت دقیق و مفصل و در ارتباط با business model بررسی می گردند.

فاز مدلسازی فرآیند و یا process modeling

در این فاز data object های تعریف شده در فاز data modeling مورد بررسی دقیق تر قرار می گیرند و جریان اطلاعاتی مورد نیاز برای کسب کردن اهداف تجاری بر اساس business model تعریف می‌گردند. مدل فرآیند و یا process model برای تمامی تغییرات شکل گرفته بر روی مجموعه data object ها در این فاز تعریف می‌گردد.

توصیفات فرآیند برای اضافه کردن و حذف کردن و بازیابی و تغییر دادن data object ها نیز در این فاز در اختیار قرار می گیرند.

فاز application generation و یا تولید برنامه

سیستم در این فاز ساخته و کدنویسی با استفاده از ابزارهای خودکارسازی و یا همان automation tool ها انجام می گردد. در این فاز مدل ‌های داده و فرآیند به prototype ‌های واقعی تبدیل می گردند.

فاز تست و یا testing and turnover

از آنجایی که هر کدام از prototype ها به صورت مستقل در هر iteration مورد تست کردن قرار می گیرند، روند تست کردن و زمان مورد نیاز برای آن در مدل RAD کاهش پیدا می‌کند؛ اما جریان داده و data flow و همچنین interface های بین تمامی component ها باید به طور کامل تست بگردند.

البته در این فاز برخی از component ها تست گردیده اند که این موضوع خود باعث کاهش ریسک پروژه می گردد. تصویری که در قسمت زیر مشاهده می کنید مدل RAD را با جزئیات تمام نشان می‌دهد.


مقایسه مدل RAD و مدل های سنتی SDLC

مدل های سنتی SDLC از یک مدل فرآیندی سختگیرانه که تمرکز زیادی بر روی تجزیه و تحلیل نیازمندی ها و جمع آوری آنها قبل از کد نویسی و ساخت پروژه دارند پیروی می کند. به عبارت دیگر، این مدلها فشار زیادی را بر روی مشتری قرار می دهند تا تمامی نیازمندی های جمع آوری شده را تأیید کرده و سپس ساخت پروژه آغاز می گردد. علاوه بر این، مشتری احساس اینکه محصول نرم افزاری در حال تولید شدن است را کسب نخواهد کرد؛ چرا که هیچ نسخه عملیاتی تا مدت زیادی تحویل او داده نمی شود. علاوه بر این، در روند توسعه یک نرم افزار ممکن است مشتری نیاز به ایجاد تغییراتی پس از ساخته شدن نرم افزار داشته باشد. اما تغییر دادن فرآیند تغییرات در مدل های توسعه نرم ‌افزار سنتی کمی دشوار است و حتی ممکن است نتوان تغییرات اساسی را در محصول نهایی لحاظ کرد. این در حالی است که مدل RAD تمرکز خود را بر روی تحویل incremental و iterative مدل های عملیاتی از نرم افزار به مشتری گذاشته است. این موضوع باعث تحویل سریع نمونه ‌هایی از نرم افزار نهایی به مشتری و همچنین درگیر کردن آن به طور کامل در روند توسعه نرم ‌افزار می‌کند. این موضوع باعث کاهش ریسک‌ های مختلف مربوط به نیازمندی ‌های مشتری می گردد.

کاربرد مدل RAD

مدل RAD به راحتی می‌تواند در پروژه‌ هایی که modularization و یا ماژوله سازی در آنها امکان‌پذیر است لحاظ بگردد. اگر یک پروژه را نتوان به ماژول های مختلف و کوچک شکست، احتمالاً استفاده کردن از مدل RAD باعث عدم موفقیت پروژه خواهد شد. ضمناً نکاتی که در ادامه می بینید سناریوهایی که می‌توان در آنها از مدل RAD را استفاده کرد نشان می ‌دهد.

  1. مدل RAD بهتر است زمانی مورد استفاده قرار بگیرد که بتوان یک سیستم را به قسمت های کوچک تر و یا اصطلاحاً ماژول شکست و هر کدام را به صورت incremental تحویل داد.
  2. استفاده از این مدل زمانی توصیه می شود که از لحاظ مالی امکان استفاده کردن از ابزارهای تولید کردن کد وجود داشته باشد.
  3. مدل RAD زمانی مورد استفاده قرار می‌گیرد که خبره های دامنه و یا domain expert ها در دسترس باشند تا بتوان دانش تجاری و یا business knowledge مرتبط با برنامه را از آنها کسب کرد.
  4. از این مدل زمانی باید استفاده کرد که نیازمندی ها در طول توسعه نرم افزار تغییر می‌کنند و این موضوع باید با استفاده از نمونه‌ های اولیه عملیاتی که به مشتری تحویل داده می‌شوند لحاظ بگردند.

مزایا و معایب مدل RAD

مدل RAD همانطور که از نامش نیز مشخص است تمرکز بر روی تحویل سریع نمونه های اولیه و کاهش دادن هر چه بیشتر زمان توسعه نرم ‌افزار دارد. علاوه بر این تمرکز دیگر این مدل توسعه نرم ‌افزار بر روی قابلیت استفاده مجدد و یا reusability مربوط به component ها و البته توسعه نرم افزار موازی می باشد.

بهتر است از مدل RAD زمانی استفاده کنیم که متخصصین توسعه نرم افزار بتوانند مرتباً با مشتری های مربوط به پروژه در تعامل باشند تا تغییرات احتمالی مربوط به نیازمندی ها را در prototype های ایجاد شده لحاظ نمود. اگر هر کدام از این دو مورد در پروژه لحاظ نگردند ممکن است پروژه با شکست مواجه شود. در ادامه برخی از مزایای استفاده کردن از مدل RAD را بررسی می کنیم.

  1. به راحتی می‌تواند تغییر در نیازمندیها را جوابگو باشد.
  2. امکان اندازه گیری روند پیشرفت پروژه امکان پذیر است.
  3. زمان هر iteration کوتاه و استفاده کردن از ابزارهای RAD امکان پذیر است.
  4. با تعداد کمتر برنامه نویسان در زمان کمتری می توان به سطح تولید و یا productivity بیشتری رسید.
  5. زمان توسعه نرم ‌افزار کاهش پیدا می‌کند.
  6. امکان استفاده مجدد از component های ساخته شده وجود دارد.
  7. بازبینی های اولیه با سرعت بیشتری اتفاق می افتند.
  8. از بازخورد مشتری استفاده می شود.
  9. بسیاری از مشکلات یکپارچه سازی و یا integration از همان ابتدای کار حل و فصل می گردد.

و اما استفاده از مدل RAD معایبی را نیز دارد که در ادامه به آنها می پردازیم.

  1. نیاز به اعضای تیم متخصص برای درک هرچه بهتر business requirement ها
  2. فقط زمانی مورد استفاده قرار می گیرد که سیستم را بتوان ماژوله بندی کرد.
  3. برنامه نویسان و توسعه دهندگان بسیار حرفه ‌ای نیاز دارد.
  4. مهارت های مدل سازی پیشرفته ای را باید لحاظ کرد.
  5. برای پروژه های ارزان تر مناسب نیست؛ چرا که هزینه مدل سازی و تولید خودکار کد بسیار بالاست.
  6. مدیریت آن پیچیده تر است.
  7. برای سیستم هایی که بر اساس component ها کار می کنند و امکان مقیاس پذیری دارند مناسب تر است.
  8. نیاز به مشارکت مداوم مشتری در روند توسعه نرم افزار دارد.
  9. برای پروژه هایی که زمان توسعه آنها کوتاه ‌تر است مورد استفاده قرار می گیرد.

منبع:وبسایت پرووید