بخشی از مقاله
چکیده
امروزه، چالشهای موجود در سازمانهای بهکارگیرنده فناوری اطلاعات، پیچیدگی نرمافزارهای مقیاس سازمانی و الزاماتی همچون کیفیت و پاسخ به تغییرات باعث شده است تا انتخاب رویکردهای توسعه نرمافزار مناسب از اهمیت هر چه بیشتری برخوردار باشد. بهکارگیری رویکردهای فنی و مدیریتی توسعه نرم افزار ناب میتواند سازمانها را طوری توانا سازد تا ارزشها را مشخص کرده، اقدامات ایجادکننده ارزش را در بهترین دنباله مرتب کنند و فعالیتهای مرتبط را با حداقل اتلاف و حداکثر کار گروهی و بهینگی ترغیب کنند.
این مقاله به تبیین و تحلیل مفاهیم بنیادی توسعه نرمافزار ناب پرداخته و آن را باارزشها، اصول و اقدامات آن بررسی مینماید. همچنین ارتباط توسعه نرمافزار ناب و چابک مورد پیمایش تطبیقی قرار میگیرد و نیز همگامی و تعاملات آن دو روش توسعه، توصیف میگردد. هدف از ارائه متن حاضر برجستهسازی مفاهیم رویکردهای ناب شامل ارزشهایی همانند کشش، کمال و جریان ارزش؛ و اصولی همچون بهینهسازی کلی، اجتناب از اتلاف است. در این ارائه رویکردهای مفهومسازی و پژوهش تطبیقی جهت توصیف مفاهیم بنیادی این حوزه دانش از مهندسی نرمافزار اعمال گردیده است. دستاورد پژوهش حاضر در تبیین انطباقی رویکردهای ناب و چابک و نیز نمایش مفاهیم این دو حوزه در ابعاد ارزش، اهداف، اصول و اقدامات خلاصه میگردد.
-1 مقدمه
امروزه اهمیت استفاده از روش توسعه مناسب، برای پروژههای نرم افزاری بر کسی پوشیده نیست. از دیدگاه کنت بک5، چهار متغیر اصلی در یک پروژه نرمافزاری که میتواند سرنوشت پروژه را تغییر دهد، شامل هزینه 6، زمان7، کیفیت8 و حوزه مسئله9 هست که روشهای مختلف توسعه نرمافزار باید بهگونهای پاسخگوی این متغیرهای وابسته به یکدیگر باشد .
در میان این متغیرها، کیفیت یکی از عوامل مؤثر در رضایتمندی نهایی مشتری بوده و معمولاً از طریق نیازمندی های غیر وظیفه مندی و بهخصوص در حیطه معماری نرمافزار مطرح میشود .[2] همچنین، تخمین صحیح زمان و هزینه و کنترل آنها در طول پروژه، از عوامل لازم برای موفقیت پروژه نرمافزاری هستند. از سوی دیگر، حوزه مسئله، شناخت دقیق آنچه مشتریواقعاً در پی آن است و درک دقیق نیازمندیهای مرتبط با آن حوزه، از مسائل اصلی مهندسان نرمافزار هست.
از برآیند آنچه مطرح شد میتوان نتیجه گرفت که یک هدف عمومی در پروژههای نرم افزاری دستیابی به بیشترین ارزش با کمترین اتلاف و درنهایت دستیابی به بهینگی در متغیرهای سرنوشتساز پروژه است. رویکردهای ناب به ما کمک میکنند تا توسعه نرمافزار مطابق نیاز مشتری داشته و هرچه سادهتر فکر کرده و به مسائل اساسیتر و با اولویتتری در عمل، بپردازیم
درنتیجه با تلاش کمتر، کار ارزشمندتری را انجام دهیم . این موضوع با توجه به بحرانهای اقتصادی، نیاز به صرفهجویی و سرعت در شرایط رقابتی امروز از اهمیت خاصی برخوردار است. در همین راستا تولید ناب بهره مند از نوعی تفکر است که پس از کسب موفقیتهای بسیار در صنعت اتومبیلسازی و سایر صنایع، در مهندسی نرمافزار نیز بکار گرفتهشده است و به دنبال آن است که شرکتهای تولید نرمافزار از مزایای حاصل از بکار گیری مفاهیم و اصول ناب بهرهمند شوند. انگیزه ما در این مقاله، معرفی و تبیین مفاهیم ارزشمند رویکردهای ناب و چابک در توسعه نرمافزار با استفاده از روش پژوهش تطبیقی هست.
ساختار مقاله به این شکل است که در ابتدا به تبیین توسعه نرمافزار ناب و مفاهیم بنیادین آن پرداخته میشود. سپس ارزشهای ناب موردبررسی قرار میگیرد و بعدازآن تبیین اصول رویکردهای ناب ارائه میشود. اقدامات و فعالیتهای توسعه نرمافزار ناب بخش بعدی مقاله را تشکیل میدهد که پرداختن به آن پس از زمینهسازی در مورد ارزشها و اصول مرتبط با آن میسر است. در ادامه توسعه نرمافزار چابک با تمرکز بر مفاهیم بنیادی آن تبیین میگردد؛ و درنهایت تحلیل ارتباطات توسعه نرمافزار ناب و چابک ارائه میشود. پایش تحلیلی این دو روش توسعه نرمافزار با ارائه یک جدول مقایسهای برجستهسازی میگردد. قسمت پایانی مقاله نیز شامل نتیجهای از بحث مقاله خواهد بود.
-2 تبیین توسعه نرمافزار ناب
مفهوم مدیریت محصول در سال 1931 معرفی شد .[5] یکی از مهمترین اقداماتی که در آن سالها صورت میگرفت پذیرش نقش مدیر محصول بود .[4] بعدازاین تجربه موفق برخی شرکتها تصمیم گرفتند که این اقدام را انجام دهند و آنها نیز مدیر محصول داشته باشند. تولید ناب با اقتباس از برخی فعالیتهای مدیریت محصول شرکت اتومبیلسازی تویوتا در حدود دهه 1950، در مقابل رویکردهای تولید دستی و تولید انبوه با اهدافی همانند بهینهسازی و انطباق با نیازهای بازار در صنعت مطرح گردید
و اصطلاح ناب اولین بار در نیمه 1980 میلادی در انستیتو تکنولوژی ماساچوست مطرح شد .[4] این رویکرد، به دنبال تأمین و ارائه ارزشهای خالص به مشتری از طریق زنجیره کامل خلق ارزشها است. در سال 2003 ماری و تام پاپندیک در کتابی رویکردهای نابرادر ارتباط با رویکردهای چابک معرفی نمودند و این آغاز ناب در توسعه نرمافزار بود [8] هرچند بعضی ایده استفاده از اصول ناب در توسعه نرمافزار را تقرباًی به قدمت خود اصطلاح ناب میدانند .
توسعه نرمافزار ناب، ترکیبی سیستماتیک از ارزشها، اصول و اقدامات در ساخت سیستمهای نرمافزاری است. رویکردهای ناب، توسعه نرمافزار را از منظر مدیریت محصول و در جریان ارزش محصول مینگرند 4]، .[5 و بدیهی است که در این منظر همه ذینفعان و توسعهدهندگان متعهد و مسئول تولید یک محصول نرمافزاری واحد میشوند و بهاینترتیب تمرکز، اثربخشی و همکاری کلیه متصدیان تولید محصول ارتقا مییابد
بر همین اساس رویکردهای ناب یک رهیافت چندبعدی را به نمایش میگذارند و در مواردی همچون تفکر سیستمی، کیفیت، یکپارچهسازی و مشارکت میتوانند بسیار اثرگذار باشند. شواهد تجربی از کاربرد ناب در توسعه نرمافزار، نشاندهنده کاهش زمان تولید و افزایش بهرهوری و رضایت مشتری، بوده و استفاده از رویکردهای ناب در توسعه نرمافزار را بسیار مفید ارزیابی میکنند .[10] بهطور خلاصه توسعه نرمافزار ناب را با مفاهیم بنیادی زیر میتوان برجستهتر ساخت
▪ ساختن چیزهای درست2؛ این مفهوم به اجتناب از انجام مؤثر و دقیق کاری که نباید انجام شود میپردازد. این مفهوم اشاره به این نکته دارد که بیفایدهترین کارها انجام کارهای غیر مؤثر و ضروری بهصورت دقیق و تفصیلی است. و بهاینترتیب به انتخاب چیزهای درست برای ساخت و تولید بر مبنای نیاز مشتری و کسب ارزشافزوده اشاره مستقیم دارد.
▪ ساخت درست چیزها3؛ این مفهوم تلاش برای ساخت صحیح و با حداقل اتلاف را بیان میکند. و تمرکز بر بهبود مستمر فرآیند ساخت و کیفیت را برجسته میسازد.
▪ تحویل و آموزش سریع4؛ این مفهوم بر بازبینی روی فرآیند تولید تأکید دارد. در این مفهوم تمرکز بر تحویل سریع محصول به مشتری است و در این فرآیند؛ مدیریت بازخوردها، تحلیل و آموختن هر چه بیشتر از آنها در دستور کار قرار دارد. بطوریکه تحلیل بازخوردها با همکاری و تعامل با ذینفعان دارای اهمیت است. همچنین آموختن تجربیات جدید و استفاده از تجربیات قبلی از ارکان ساختاری این مفهوم هست.
-1-2 ارزشهای ناب
رویکردهای ناب شامل نوعی از تفکر است که سازمان ها را قادر می سازد تا ارزش ها را مشخص کرده و اقدامات ایجادکننده ارزش را در بهترین دنباله مرتب کنند. در هنگام درخواست، فعالیت ها را با حداقل اتلاف و حداکثر کار گروهی و مسئولیت پذیری انجام دهند و اجرای کار را پیوسته بهبود دهند. جریان هوشمند اطلاعات، سرعت و کیفیت بالاتر و چگونگی درک و پردازش داده بهمنظور تعامل بهتر با تیم توسعه و کاربر نهایی، از مزایای تفکر ناب هست. پنج مفهوم بنیادی ناب شامل موارد زیر است 5]، 7، [13، که ما در این مقاله آنها را بهعنوان ارزش در رویکردهای ناب در نظر میگیریم:
▪ ارزش1 - ارزشافزوده و ارزش تجاری - : این موضوع توسط مشتری تعیینشده و باید درک روشنی از آن داشته باشیم. در این راستا، رویکردهای ناب در نرمافزار تنها بر فرایندهای توسعه متمرکز نمیشود، بلکه به چگونگی استفاده از فناوری اطلاعات در جهت ایجاد ارزش برای مشتری نیز توجه دارد .[4] هدف اصلی هر محصول یا سرویس فراهم کردن ارزشافزوده برای مشتری است. شناسایی ارزش محصول برای یک مشتری بسیار با چشمانداز توسعه محصول و استراتژی تولید آن در ارتباط است. این ارزش از ارزشهای توسعه نرمافزار ناب ازاینجهت بنیادین به شمار میرود که نمایشدهنده دلیل وجود یک سازمان در بازار محصول یا خدمات است. بهعبارتدیگر درصورتیکه یک سازمان، محصول یا خدمات دارای ارزشافزوده برای مشتریان ایجاد ننماید آنگاه وجودش دچار تزلزل خواهد شد.
▪ جریان ارزش:2 طرحی که تمام مراحل فرایند تولید را معین کرده و هر مرحله را برحسب اینکه ایجاد ارزشافزوده برای مشتری میکند، دستهبندی مینماید.
▪ جریان:3 کوتاه نمودن چرخه بازخورد در فرایند توسعه نرمافزار و ایجاد جریان ارزش در تولید نرمافزار، از اهداف توسعه نرمافزار ناب است. نتیجه این موضوع افزایش سرعت و کیفیت با هزینه کمتر خواهد بود .[3]
▪ کشش:4 سفارشهای مشتری است که در فرآیند تولید، کشش ایجاد میکند. این موضوع اطمینان میدهد که چیزی، قبل از آنکه موردنیاز باشد، ساخته نمیشود.
▪ کمال:5 این ارزش به کوشیدن برای تکامل فرایند و فعالیتهای صورت گرفته در آن با شناسایی و از بین بردن مداوم اتلاف، اشاره میکند. کمال برخلاف سایر ارزشهای ناب که متمرکز بر دریافتن پاسخ "چرا" هستند، به دنبال کسب پاسخ "چگونه" است. کمال در مورد چگونگی انجام اقدامات مبتنی بر اصول بحث میکند. دیدگاه ناب پیشنهاددهنده تمرکز روی روشی از تفکر برای افزایش بهرهوری و سودمندی بهصورت تدریجی و افزایش است. این تفکر با بهرهمندی از یک حافظه بلندمدت ازآنچه انجامشده است، تکمیل میگردد. این دیدگاه تحقق تدریجی کمال را برجستهسازی مینماید.
در رویکردهای ناب، پذیرش شرایط انسانی - و روانشناختی - میتواند یک ارزش محسوب گردد. پذیرش طبیعت پیچیده و بدون قطعیت فعالیتهای دانشمحور نیز بهعنوان یک ارزش در حوزه ناب قابل احتساب است. همچنین حرکت بهسوی کسب نتایج اقتصادی و جامعه شناختی بهتر از دیگر مواردی است که صریحاً بهعنوان ارزش قابلپذیرش هست .[14] شباهت نسبی تولید نرمافزار و تولید صنعتی، امکان بهرهمند شدن از ارزشها و اصول ناب در توسعه نرمافزار را فراهم نموده است .[ 4] هم چنین تحقق ارزشهای ناب بهتنهایی و یا در کنار ارزشهایی همانند ارزشهای چابکی میتواند مشکلات رایج در بسیاری از سازمانها را بهصورت مستقیم یا غیرمستقیم تحت تأثیر مثبت قرار دهد
-2-2 اصول توسعه نرمافزار ناب
در ادامه برخی از اصول توسعه نرمافزار ناب تبیین میگردد :
-1 بهینهسازی کلی:6 حداقل سه منظر بنیادی برای بهینهسازی جامع قابل تبیین است: اول اینکه ارزش نرمافزار در بستر یک سیستم ارزشی تحقق مییابد . این سیستم ارزشی در محیط یک کسب وکار مطرح است اصولاً فراتر از یک سیستم نرمافزاری هست بطوریکه جریانی از ارزشهای تجاری، خدماتی و تولیدی را در ارتباط با یکدیگر در برمیگیرد.