روشهای سريع الانتقال (چابک) توسعه نرم افزار بسمهتعالي فصل دوازدهم روشهای سريع الانتقال (چابک) توسعه نرم افزار
اهداف جلسه تقسيمبندی متدولوژيهای توسعه نرمافزار معيارهای مقايسه متدولوژيها با يکديگر مقايسه متدولوژيها بر اساس معيارهای مطرح شده اصول بنيادی متدولوژيهای چابک معرفی چند روش چابك
متدولوژي توسعه نرمافزار فرآيند توليد و توسعه نرمافزار ذاتاً يك فرآيند بينظم و پر هرج و مرج است. براي نظم دادن به اين فرآيند، متدولوژيهاي توسعه نرمافزار مطرح شدند متدولوژي توسعه نرمافزار مشخص ميکند، چه فرآوردهاي (What) توسط چه کسي (Who) و در چه زماني (When) توليد شود.
تقسيم بندی متدولوژيهای توسعه نرمافزار متدولوژيهای سنگين وزن (Heavyweight) فازها بطور کامل اجرا شده و مستندات کامل ايجاد ميشود متدولوژيهای سبک وزن (Lightweight) فازها به صورت کوتاه و مستندات به اندازه ايجاد ميشوند متدولوژيهای چابک در دسته دوم قرار دارند
متدولوژي سنگين وزن در 25 سال اخير روشهاي بسيار زيادي براي توسعه نرمافزار معرفي شدند اما امروزه تعداد بسيار اندكي از آنها مورد استفاده قرار ميگيرد! متدولوژيهاي فعلي بيش از اندازه ماشينگرا و مكانيزه هستند و بصورت فرآيندي وارد جزئيات غيرضروري ميشوند، به همين دليل اين نوع متدولوژها را سنگين وزن مينامند
مشکلات متدولوژيهاي سنگين وزن مشتريان نرمافزارها حاضر نيستند كه براي دست يافتن به نرمافزارهاي مورد نياز خود مدت زيادي منتظر بمانند رقابت بسيار شديد شركتهاي توليد نرمافزار براي ارائه خدمات نرمافزاري به كاربران تغييرپذيري بسيار زياد نرمافزارهاي امروزي انكارناپذير است
لزوم تغييرات در توسعه نرمافزار No Change! We are already running late. I need to meet my date. We worked hard to prevent change at the start. Cost of change Promised date Customer big cheese
لزوم تغييرات در توسعه نرمافزار No Change! We are already running late. I need to meet my date. We worked hard to prevent change at the start. Cost of change Promised date Change & Rework happens at the most expensive time Customer big cheese Spec signed off here
لزوم تغييرات در توسعه نرمافزار Successful Project Meet Schedule Best Product No Change! Change! Customer big cheese Conflict*
معيارهای مقايسه متدولوژيها با يکديگر روش معيار موفقيت اندازه پروژه سبک مديريت نحوه مستندسازی چرخهها اندازه تيم برگشت سرمايه
آيا همه چيز از ابتدا قابل پيشبينی است؟ روش روشهای چابک بصورت Adaptive يا سازگار عمل میکنند يعنی با شرايط منطبق میشوند روشهای سنگين وزن بصورت پيشگو يا Predictive عمل میکنند يعنی در آغاز همه چيز را پيشبينی میکنند آيا همه چيز از ابتدا قابل پيشبينی است؟ Rigid, Highly Structured Ad hoc, Chaotic Process Discipline Agile Processes RUP CMM - SW
روشهای سنگين وزن انعطافپذيری ندارند معيار موفقيت معيار موفقيت در روشهای چابک دستيابی به ارزش کاری (Business Value) است در روشهای سنگين وزن معيار موفقيت پيش رفتن در راستای طرح اوليه است روشهای سنگين وزن انعطافپذيری ندارند
اندازه پروژه اندازه پروژه در روشهای چابک کوچک است اندازه پروژه در روشهای سنگين وزن میتواند بسيار بزرگ باشد اين مسأله از محبوبيت روشهای چابک نمیکاهد !!! (آمار نشان میدهد که تعداد پروژههای کوچک بسيار بيشتر است)
مديريت غيرمتمرکز امکان تصميمگيری بهتر را فراهم میکند سبک مديريت مديريت در روشهای چابک بصورت غيرمتمرکز و آزاد است در روشهای سنگين وزن مديريت بصورت مطلق و استبدادی است مديريت غيرمتمرکز امکان تصميمگيری بهتر را فراهم میکند
در بسياری از موارد مستند سازيهای سنگين, کار بسيار دشوار و زمانبری است نحوه مستندسازی مستندسازی در روشهای چابک بصورت بسيار محدود انجام میشود در روشهای سنگين وزن مستندسازی بصورت کامل و جامع انجام میشود در بسياری از موارد مستند سازيهای سنگين, کار بسيار دشوار و زمانبری است
چرخهها تعداد چرخهها (Cycles) در روشهای چابک بسيار زياد است اما زمان آنها کوتاست در روشهای سنگين وزن تعداد چرخهها کم است ولی زمان آنها بسيار زياد است زمانبر بودن چرخههای توليد, موجب طولانی شدن زمان انتظار برای رسيدن به نشرها میشود
خلاقيت و همکاری در تيم کوچک بسيار بيشتر خواهد بود اندازه تيم در روشهای چابک اندازه تيم کوچک است (بين 20 تا 30 نفر) در روشهای سنگين وزن اندازه تيم توسعه بزرگ است خلاقيت و همکاری در تيم کوچک بسيار بيشتر خواهد بود
روشهای چابک از لحاظ اقتصادی بصرفهاند برگشت سرمايه در روشهای چابک سرمايه خيلی زود در طول پروژه بر میگردد در روشهای سنگين وزن برای برگشت سرمايه بايد تا انتهای پروژه صبر کرد روشهای چابک از لحاظ اقتصادی بصرفهاند
مقايسه متدولوژيهاي سبک و سنگين Agile Methods Heavy Methods Approach Adaptive Predictive Success Measurement Business Value Conformation to plan Project Size Small Large Management Style Decentralized Autocratic Documentation Low Heavy Emphasis People-Oriented Process-Oriented Cycles Numerous Limited Domain Unpredictable/Exploratory Predictable Team Size Small/Creative
بيانيه روشهاي چابک در سال 2001 متخصصان روشهاي چابک بيانيهاي را منتشر كردند و اين روشها را در چهار اصل كلي به دنياي نرمافزار معرفي نمودند كه عبارتند از: فردگرايي و تعامل برتر از فرآيندها و ابزارها نرمافزار قابل اجرا بهتر از مستندات مفهومي همکاري با مشتريان بهتر از مذاکرات قراردادگرا پاسخ به تغيير بهتر از دنبالهروي از طرح
معروفترين روشهاي چابک XP (Extreme Programming) Scrum Crystal Family FDD (Feature Driven Development) Dynamic System Development Adaptive Software Development Open Source Software Development
متدولوژی XP (Extreme Programming) بر مبنای اصول سادگی، همکاری و بازخورد سريع استوار است ايده اين روش توسطKent Beck در سال 2000 ارائه شده است مبتنی بر آزمايش (Test-Driven) نقش مشتريان بسيار پررنگ است فرآيند آن شامل 12 فعاليت و 5 فاز است
متدولوژی XP – چرخه حيات
متدولوژی XP – فازها چرخه حيات XP شامل پنج فاز است Exploration Planning Iterations To Release Product Tionizing Maintenance and Dead
متدولوژی XP – نقشها و مسئوليتها برنامهنويس مشتري آزمايشکننده پيگيري کننده (Tracker) مربي مشاور مدير (رئيس ارشد)
متدولوژی XP – فرآوردهها User Stories معمولاً بشکل متنی بوده و توسط مشتريان نوشته میشوند از طريق آنها نيازمنديهای سيستم مشخص میشود Iteration Plan مجموعهای از User Story هاست که توسط مشتری انتخاب میشوند در يک تکرار که معمولاً دو هفته طول میکشد، توليد میشود طرحهای تکرار با توجه به اولويت مشخص شده توسط مشتری اجرا میشوند انتخاب براساس بودجه تعيينشده توسط توسعهدهندگان خواهد بود
متدولوژی XP – فرآوردهها (ادامه) Release Plan مجموعهای از طرحهای تکرار را در قالب يک نقشه کلی برای رسيدن به نشرها نمايش میدهد Task زيرمجموعهای از User Story ها هستند Taskها از نظر تکنيکی و کاری اولويت بيشتری دارند و بايد سريع انجام شوند Taskها در مرحله طرحريزی تکرارها (Iteration Planning) مشخص میشوند
متدولوژی XP – فرآوردهها (ادامه) Metaphore نشاندهنده يک تصوير کلی از سيستم است برای هر عنصر در سيستم يک نام در نظر گرفته میشود ارتباط بين عناصر درگير در سيستم از طريق Metaphore مشخص میشود Spike يک راهحل ضربتی (Spike Solution)، برنامه سادهايست که بوسيله آن میتوان راهحلهای بالقوه را کشف کرد در مواردی که User Story ها حساس و مهمند از آن استفاده میشود
متدولوژی XP – عمليات Planning Game يک تعامل محصور (Close Interaction) بين مشتری و برنامهنويس بدست میآيد برنامهنويس کار لازم برای پيادهسازی گزارشهای مشتری را تخمين میزند و مشتری در مورد حوزه و زمان نشرها تصميمگيری میکند Simple Design تأکيد اصلی در اين روش بر روی طراحی سادهترين راهحل ممکن است و پيچيدگيهای غيرضروری و کدهای اضافی به سرعت حذف میشوند
متدولوژی XP – عمليات (ادامه) Testing توسعه نرمافزار يک فرآيند آزمايشگراست (Test-Driven) قبل از اينکه برنامهنويس يک خاصيت را اضافه کند، برای آن يک تست طراحی میکند که بصورت پيوسته اجرا میگردد Refactoring بازسازی سيستم با حذف موارد تکراری، بهبود ارتباطات، سادهسازی و افزايش انعطافپذيری سيستم Pair Programming دو نفر کد را روی يک کامپيوتر مینويسند (يک کدنويس و يک متخصص استراتژی)
متدولوژی XP – عمليات (ادامه) Collective Ownership هر فردی میتواند کد را در هر زمانی تغيير دهد Continuous Integration کد جديد در حداقل زمان ممکن به کد اوليه میپيوندد، بنابراين سيستم دفعات زيادی در روز يکپارچه شده و ساخته میشود 40 Hour Week حداکثر چهل ساعت کار در هفته کافی است اين مورد اجباری است و بيشتر از اين ساعات کار مجاز نمیباشد
متدولوژی XP – عمليات (ادامه) On- Site Customer مشتری بايد بصورت تمام وقت برای تيم توسعه در دسترس باشد Coding Standards قواعد کدنويسی بايد توسط برنامهنويسان رعايت شود و ارتباط بين کدها مورد توجه قرار گيرد
متدولوژی FDD (Feature Driven Development) تمام فرآيند توسعه نرم افزار را پوشش نمیدهد و بيشتر روی دو فاز طراحی و پيادهسازی متمرکز میشود برای استفاده بهمراه ساير فعاليتهای يک پروژه توسعه نرمافزار طراحی شده است و هيچ مدل فرآيند خاصی لازم ندارد مبتنی بر توسعه تکراری با انتخاب بهترين و موثرترين فعاليتهاست روی جنبههای کيفتی تأکيد دارد و شامل نشرهای محسوس و پيگيری دقيق پيشرفت پروژه است
فرآيندهایFDD شامل پنج فرآيند ترتيبی است که از طريق آنها فعاليتهای طراحی و پيادهسازی انجام میشود قسمت تکراری فرآيند FDD (طراحی و ساخت) از توسعه چابک حمايت میکند هر تکرار از يک خاصيت، معمولاً 2 تا 3 هفته زمان میبرد
متدولوژی FDD – نقشها FDD نقشهای خود را به سه دسته کلی تقسيم میکند نقشهای کليدی نقشهای حمايتی نقشهای اضافی
متدولوژی FDD – نقشهاي کليدي مدير پروژه معمار ارشد مدير توسعه برنامهنويس ارشد مالك كلاس (Class Owner) متخصص دامنه (Domain Manager)
متدولوژی FDD – نقشهاي حمايتي مدير نشر (Release Manager) مشاور زبان (Language Guru) مهندس ساخت (Build Engineer) مسئول ابزار (Toolsmith) مدير سيستم (System Administrator)
متدولوژی FDD – نقشهاي اضافي سه نقش اضافی که در همه پروژهها وجود دارند آزمايشکننده (Tester) مستقرکننده (Deployer) نويسنده فني (Technical Writer) هر عضو میتواند چندين نقش بازی کند و هر نقش ممکن است به چند عضو نسبت داده شود
متدولوژی FDD – بهترين تجربيات Domain Object Modeling شامل استخراج و توضيح دامنه مسأله میباشد Developing By Feature توسعه و بررسی ميزان پيشرفت پروژه از طريق دنبال کردن پيادهسازی ليست وظايف و خواص مشخص شده Individual Class Ownership برای هر کلاس شخصي وجود داشته باشد که مسئول سازگاری، کارايی و صحت آن باشد
متدولوژی FDD – بهترين تجربيات Feature Teams تيم كوچكي كه بهصورت پويا شكل گرفتهاند Inspection استفاده از معروفترين و بهترين مكانيزهاي شناسايي خطاها Regular Builds تضمين اينكه هميشه يك سيستم قابل اجرا و قابل نمايش دادن (Demo) وجود دارد Configuration Management داشتن تاريخچه تغييرات و نسخههاي مختلف (بهمراه كد منبع)
متدولوژی FDD – بهترين تجربيات Progress Reporting روند اجراي فعاليتها به صورت كامل و در سطوح مختلف سازماني گزارش شود
متدولوژيScrum از يک استراتژی در بازی راگبي اقتباس شده است تأکيد روی اصول انعطافپذيری، سازگاری و سودمندی است تمرکز: چگونه اعضای تيم بايد عمل کنند تا سيستم توليد شده، در يک محيط کاملاً تغييرپذير، انعطافپذيری کافی داشته باشد ايده اصلی: توسعه سيستمها شامل چندين متغير محيطی و تکنيکی است (نيازها، زمان، منابع و تکنولوژی)که احتمالاً در طول فرآيند توسعه تغيير میکنند اين موضوع فرآيند توسعه را پيچيده و غيرقابل پيشبينی میکند
متدولوژيScrum - فرآوردهها Product Backlog Sprint Backlog Sprint BurnDown Chart
متدولوژيScrum - Product Backlog شامل يک صف اولويتبندی شده است که در آن وظيفهمنديهای تکنيکی و حرفه نمايش داده شدهاند که بايد توسعه داده شوند برای هر مورد مشخص شده در اين فرآورده، خواصی مانند وضعيت، اولويت و تخمين کاری وجود دارد
متدولوژيScrum - Sprint Backlog مجموعهای از موارد حرفه و فني که برای تکرار جاری (Current Iteration) زمانبندی شدهاند در اين فرآورده نمايش داده میشوند نيازها در اين فرآورده به وظايف تبديل می شوند برای هر وظيفه يک شرح کوتاه وجود دارد و مشخص میشود که چه کسی مسئول انجام آن است و همچنين وضعيت و تعداد ساعات باقيمانده تا تکميل شدن هر وظيفه در اين فرآروده مشخص میشود
متدولوژيScrum - Sprint BurnDown Chart
متدولوژيScrum - نقشها Scrum Master Product owner Scrum team Manager
متدولوژيهاي خانواده Crystal شامل مجموعهای از متدولوژيهای متفاوت است که مناسبترين آنها برای هر پروژه منحصر به فرد انتخاب میشود دارای اصولی است که متدولوژيها را برای شرايط مختلف موجود در پروژهها سفارشی میکند روش Crystal پيشنهاد میکند که يک متدولوژی مناسب براساس اندازه و ميزان بحرانیبودن پروژه انتخاب شود
متدولوژيهاي خانواده Crystal (ادامه) C: Comfort D: Discretionary Money E: Essential Money L: Life
متدولوژيهاي خانواده Crystal (ادامه) تمامی پروژهها از توسعه افزايشی با بازه زمانی حداکثر 4 ماه استفاده میکنند تأکيد روی ارتباطات و همکاری بين افراد درگير در پروژه است هيچ فعاليت يا ابزاری را برای توسعه محدود نمیکند مثلاً میتوان از فعاليتهای XP و Scrum با هم در اين روش استفاده کرد
مزايای روشهای سريع الانتقال تأکيد روی شرکتدادن مشتری در پروژهها است که در پروژههای کاربردی بسيار مفيد است تأکيد روی کارگروهی و ارتباط متقابل که در بالا بردن راندمان کاری نقش مهمی دارد همه افراد درگير در پروژه در قبال کيفيت محصول مسئولند سنجش مستمر کارهای انجام شده از مزايای بسيار مفيد اين روشها است
مزايای روشهای سريع الانتقال (ادامه) توسعه افزايشی که با روشهای مدرن توسعه نرمافزار سازگار است طراحی ساده و روشن برای فرآيند توسعه بازبينیهای مستمر که به بالا رفتن کيفيت کار برنامهنويسان کمک میکند
معايب روشهای سريع الانتقال بدليل کمبود فعاليتهای طراحی در اين روشها، اگر کد بيش از چند هزار خط باشد ممکن است فرآيند توسعه با موانع خطرناکی برخورد کند کمبود مستندات مربوط به طراحی در اين روشها آنها را به پروژههای کوچک محدود میکند و قابليتهای استفاده مجدد را در آنها محدود میکند کمبود فرآيندهای بازبينی ساختيافته
معايب روشهای سريع الانتقال (ادامه) کمبود فرآيند طراحی منظم و استفاده از بازبينیهای غير ساختيافته باعث اتلاف زمان و هزينه میشود کمبود طرح کيفيت. در اين روشها هيچ نوع طرح استانداردی برای ارزيابی کيفيت وجود ندارد کمبود راهنماهای آموزشی برای استفاده از اين روشها
پرسش و پاسخ