قابلیت پاسخگویی سریع نسبت به تغییرات محیطی امروزه به عنوان یکی از تواناییهای استراتژیک شرکتها حائز اهمیت است. این موضوع موجب شدهاست تا رودیکردی تازه در تولید با نام تولید چابک ظهور پیداکند. چابکی مداوم و پایدار به عملکرد کارکنان و سازمان، ارزش محصول و خدمات و تغییر دائم در زمینه فرصتهای حاصل از جذب مشتری توجه میکند و مستلزم آمادگی دائم برای مواجهشدن با تغییرات بنیادی و سطحی است و شرکتهای چابک همواره برای یادگیری هر چیز تازهای که باعث افزایش سودآوری ناشی از بهرهگیری از فرصتهای جدید میشود، آماده هستند.
مفهوم چابکی بر رویکردهای توسعه سامانههای نرمافزاری نیز اثرگذاشته و متدلوژیهای توسعه سیستم چابک را در برابر روشهای سنتی ارائهنمودهاست. متدولوژی توسعه چابک Incremental and Iterative Development(IID) یکی از روشهای نوین است. این فرآیند رویکردی ساده و آسان برای فهم نرمافزارهای کاربردی کسب و کار است.
مدل افزایشی یا Incremental model
در مدلهای توسعه آبشاری قبل از طراحی نرمافزار نیازهای مشتریان شناسایی میشود. در چنین شرایطی برنامه نویسان ملزم به استفاده از استراتژیهای ویژهای قبل از شروع به طراحی نرمافزار هستند.
در مدلهای آبشاری محور هر زمان تغییری در نیازها رخ میدهد، برنامه نویسان مجبور هستند یکبار دیگر فرآیندهای مربوط به نیازها، طراحیها و پیادهسازیها را مورد بررسی قراردهند. در اینگونه مدلها رویکردهای جداسازی طراحی و پیادهسازی باید به خوبی مستندسازی شدهباشند تا هرگونه تغییر احتمالی برای سیستم شفاف و روشن باشد. اما همانگونه که ممکن است به نظر برسد، مدل آبشاری به شدت منقبض است و همین بسته بودن، خیلی زود عملکرد ضعیف و کاستیهای آن را نشان داد.
این ضعفها به اندازهای مشهود بودند که کارشناسان در خلل دهه های ۷0 و ۸0 میلادی به فکر افتادند تا جایگزین مناسبی برای این مدل ارائه کنند. در مدت زمان طراحی یک محصول همواره این احتمال وجود دارد که نیازهای جدیدی شناسایی شوند که باید در یک محصول قرار گیرند. البته این دیدگاه کاملاً با استراتژی مدل آبشاری متفاوت است. برای حل این مشکل متدولوژی تکاملی و افزایشی ارائهشد که به توسعه دهندگان نرمافزار اجازه می داد تا الزامات و تصمیمگیریهای مرتبط با طراحی را با کمی تاخیر به مرحله اجرا درآورند.
در این مدل، فرآیند کامل شدن محصول به صورت مرحله به مرحله انجام میشود. به طوری که فرآیندهایی همچون طراحی، اعتبارسنجی، یکپارچهسازی، پیادهسازی، آزمایش و همچنین توسعه و نگهداری در هر مرحله انجام میشوند. کار نهایی روی محصول زمانی صورت خواهدگرفت که کلیه نیازهای شناسایی شده در یک محصول گنجانده شدهباشند. به صورت معمول، مدل افزایشی شامل مشخصههایی از مدل آبشاری با ایدئولوژی تکرارشوندگی و نمونهسازی اولیه را با همدگیر ادغام میکند. در این روش محصول در قالب تعدادی مؤلفه طبقهبندیشده که هر کدام به طور مستقل طراحی شده و ساخته میشوند. هر زمان مؤلفهای کامل میشود در اختیار مشتری قرار میگیرد.
این فرآیند چند ویژگی شاخص دارد، اول آنکه اجازه میدهد تا جزئیات مربوط به یک محصول به خوبی مورد بررسی قرار گیرند، دوم آنکه از طولانی شدن پروسه توسعه نرمافزار ممانعت به عمل میآورد، سوم آنکه از سرمایه گذاریهای سنگینی که در اوایل کار ممکن است باعث به وجودآمدن مشکالت مالی شود پیشگیری کرده و در نهایت از پروسه طولانی شدن فرآیند ساخت محصول که باعث نارضایتی مشتری میشود جلوگیری میکند.
در این حالت هر قطعه در زمان مناسب، فرآیند طراحی را سپری کرده و همچنین اگر نیازهای جدیدی تدوین شوند به سهولت و سرعت قابلیت پیادهسازی دارند. هنگامی که طراحی هر مؤلفه کامل شد آنها در کنار یکدیگر قرارگرفته و محصول نهایی را تشکیل میدهند. در مدل افزایشی پس از آنکه اولین نمونه آمادهشد یک محصول اولیه که پایهکار را نشان میدهد در اختیار مشتری قرار میگیرد. در این زمان بر مبنای بازخوردهای دریافت شده از مشتری تغییرات لازم شناسایی شده و در مدلسازی بعدی این تغییرات اعمال میشوند. فرآیند ساخت همچنان ادامه مییابد تا زمانی که مدلهای تولیدشده با محصول تحویلشده تطابق یابند. به خاطر منعطف بودن رویکردهای افزایشی، از این مدلها در مدلهای چابک نیز استفاده میشود. مدل افزایشی همواره سعی میکند سرویسهایی که از ارزش بیشتری برخوردار هستند را از سرویسهایی که از ارزش کمتری برخوردار هستند متمایز کرده و آنها را اولویت بندی کند.
هنگامی که یک نمونه اولیه محصول کاملگشت و به مشتری تحویل دادهشد، مشتری میتواند از محصول در مجموعه خود بهرهبرداری کند. استفاده از این نمونه باعث میشود تا مشتری بتواند تاثیر محصول بر سایر بخشهای شرکت خود را بازبینی کرده، کمبودها را شناسایی کند و در نهایت به تیم سازنده اعلام نماید که چه ویژگیهای دیگری لازم است تا در مدل بعدی وجود داشتهباشند . این رویکرد باعث میشود مدلهایی که در ادامه ساخته خواهند شد با مدلهای افزایشی موجود یکپارچه باشند که در نتیجه باعث بهبود عملکرد یک سیستم میشوند و باعث میشوند محصول کاملتری در اختیار مشتری قرار گیرد.
از بارزترین ویژگیهای مدل افزایشی میتوان به این موارد اشاره کرد: سرعت بالای تولید نرمافزار و سپریکردن سریع مراحل اولیه چرخه تولید یک نرمافزار، انعطافپذیر بودن و کم هزینه بودن به لحاظ اعمال تغییرات و نیازها، آزمایش و اشکالزدایی سادهتر در مدت زمان هر تکرار، دریافت بازخوردهای مشتری در ارتباط با هر مؤلفهای که ساخته میشود، مدیریت سادهتر ریسکها، سادهتر بودن فرآیند اشکالزدایی در مقایسه با دیگر متدولوژیها (در هر بار تکرار دامنه تغییرات کوچکتر میشود، همین موضوع فرآیند آزمایش عناصر را هدفمندتر و دقیقتر میکند)، توانایی پاسخگویی مشتریان به قابلیتها و بازبینی مجدد محصول و در نهایت ارائه سریع تر محصول اولیه با قیمت کمتر.
توسعه مبتنی بر تکرارشوندگی و افزایشی (Iterative and incremental development)
طراحی تکرار شونده یا Iterative design ، یک متدولوژی طراحی بر مبنای یک فرآیند دورهای از نمونهسازی، آزمایش، تحلیل و ویرایش یک محصول یا حتی یک پردازش است. در این روش بر مبنای نتایج به دستآمده از آزمایشهایی که به صورت تکرارشونده و مرتب انجام میشوند، یکسری تغییرات و اصلاحات پیادهسازی میشود. هدف این فرآیند بالابردن قابلیت طراحی و افزایش کیفیت است.
اولین قدم در فرآیند طراحی تکرارشونده طراحی یک نمونه آزمایشی است. این نمونه ابتدایی باید به وسیله یک گروه متمرکز یا گروهی که در محصول ذینفع نیستند و نظراتشان احساسی و متعصبانه نیست، بررسیشود. اطلاعاتی که این گروه استخراج میکنند، گردآوری شده و در مرحله بعد یعنی ساخت محصول از آنها استفاده میشود. این روند آنقدر تکرار میشود تا بالاخره بتواند نیازهای کاربر را برآورده کند. تکرارشوندگی افزایشی حاصل از ادغام طراحی تکرارشونده با مدل ساخت افزایشی میباشد. مدلهای توسعه تکرارشونده و افزایشی به نیازها و تغییرات جدید پاسخ میدهند. تعداد دقیق و ماهیت مدلهای افزایشی ساخته شده و این که چهچیزی تکرار میشود برای هر مدل خاص بوده و بر مبنای پروژه هدف مشخص میشود. توسعه افزایشی و تکرارشونده یکی از موارد کلیدی در مدلهای آبشاری اصلاح شده، فرآیند یکپارچه سازی و برنامه نویسی مفرط است.
این مدل، عملکردی شبیه به چرخه PDCA(Plan-Do-Check-Act)در بهبود فرآیند تجاری دارد. یک روش مدیریتی تکرارشونده چهار مرحلهای که در دنیای تجارت به منظور کنترل، پیوستگی، بهبود فرآیندها و پروسهها مورد استفاده قرار میگیرد. ایده اصلی این روش، طراحی یک سیستم با استفاده از چرخههای تکرارشونده و با بهرهگیری از رویکرد برشهای کوچک زمانی است.
این رویکرد به طراحان نرمافزار اجازه میدهد از تجاربی که در مراحل قبلی طراحی محصول به دست آوردهاند در زمان ساخت مؤلفههای بعدی یا نسخههای جدیدتر نرمافزار استفادهکنند. برای هر مرتبه تکرار، تعدادی نکته درباره طراحی محصول ویرایش میشوند و توانمندیهای کاربردی تازهای به آن افزوده میشود.
این روش از مرحله اولیه، مرحله تکرار و فهرست کنترلپروژه تشکیل میشود.. قدم نخست تدوین یک نمونه آزمایشی از محصول است. هدف از این مرحله ابتدایی ساخت محصولی است که کاربری آسانی داشتهباشد. مدلی که در این مرحله ساخته میشود، بهتر است مشکلات کلیدی را نشانداده و راهحلی را ارائه کند. راهحلی که اجرای آن ساده باشد.
جهت مدیریت کارآمدتر فرآیند تکرارشونده، یک فهرست کنترل پروژه تدوین میشود که مجموعهای از همه کارها و وظایفی است که باید صورت پذیرند. تکرارشوندگی افزایشی حاصل از ادغام طراحی تکرارشونده همراه با مدل ساخت افزایشی میباشد. در این فهرست مشخصههای جدیدی که باید بهکاربردهشوند، درکنار قسمتهایی از راهحل که نیازمند بازنگری هستند؛ قرار میگیرد. فهرست کنترل پروژه نتیجه فاز تجزیه و تحلیل است که به صورت پیوسته بازبینی میشود. در فرآیند تکرارشونده، تکرار به معنای بازطراحی و پیادهسازی ساده، سرراست و پشتیبانی از طراحی مجددی است که یک وظیفه را به فهرست کنترل پروژه اضافه میکند. در این مدل سطح جزئیات به صورت ایستا و ثابت نیستند.
فهرست کنترل پروژه با استفاده از نتایجی که از تحلیلها به دست میآید ویرایش میشود. این مدل شامل چهار فاز زیر است:
- فاز آغاز/ بنیانگذاری: هدف این مرحله شناسایی محدوده پروژه، الزامات و ریسکهایی است که در سطح بالاتر وجود دارد. جزئیاتی که در این فاز قرار دارند به شکلی خواهندبود که بتوان کار را بر مبنای آنها آغاز کرد.
- فاز تحلیل تفصیلی: به تدوین یک معماری کاربردی میپردازد که سعی دارد ریسکهایی که در فاز آغازین شناسایی شدهاند را کاهش دهد.
- فاز ایجاد : ساخت افزایشی بر اساس فازهایی که پیشتر به آن اشاره کردیم فرآیند طراحی محصول را تکمیل میکند.
- فاز گذار : در این فاز سیستم وارد محیط عملیاتی میشود.
از مزایای این مدل به موارد زیر میتوان اشاره کرد:
- همیشه یک نسخه در حال اجرا از برنامه کاربردی موجود است.
- اگر محدودیت زمانی وجود داشته باشد میتوان آخرین نسخه ساخته شده را به مشتری تحویل داد. البته ممکن است همه قابلیتها در این نسخه وجود نداشته باشد اما به هر حال توانایی انجام بعضی از وظایف را داراست.
- این شانس را دارید تا منشأ آخرین خطاهای به وجودآمده را به راحتی شناسایی کنید. به سبب آنکه اطلاع دارید به تازگی چه کدهایی را در فرآیند تکرار اضافه کردهاید که همین موضوع سرعت اشکال زدایی را به طرز محسوسی افزایش خواهدداد.
- همواره این شانس را دارید تا بازخوردهای مثبتی را در مدت زمانی که برنامه در حال اجرا بودهاست به دست آورید.
- به خاطر ویرایشهای اولیه صورت گرفته، زمان کمتری برای فرآیند توسعه صرف خواهدشد.