610 likes | 951 Views
بسمه تعالي. فصل دوازدهم. روش های سريع الانتقال (چابک) توسعه نرم افزار. اهداف جلسه. تقسيم بندی متدولوژي های توسعه نرم افزار معيارهای مقايسه متدولوژي ها با يکديگر مقايسه متدولوژي ها بر اساس معيارهای مطرح شده اصول بنيادی متدولوژي های چابک معرفی چند روش چابك.
E N D
بسمهتعالي فصل دوازدهم روشهای سريع الانتقال (چابک) توسعه نرم افزار
اهداف جلسه • تقسيمبندی متدولوژيهای توسعه نرمافزار • معيارهایمقايسه متدولوژيها با يکديگر • مقايسه متدولوژيها بر اساس معيارهای مطرح شده • اصولبنيادی متدولوژيهای چابک • معرفی چند روش چابك
متدولوژي توسعه نرمافزار • فرآيند توليد و توسعه نرمافزار ذاتاً يك فرآيند بينظم و پر هرج و مرج است. براي نظم دادن به اين فرآيند، متدولوژيهاي توسعه نرمافزار مطرح شدند • متدولوژي توسعه نرمافزار مشخص ميکند، چه فرآوردهاي (What) توسط چه کسي (Who) و در چه زماني (When) توليد شود.
تقسيم بندی متدولوژيهای توسعه نرمافزار • متدولوژيهای سنگين وزن (Heavyweight) • فازها بطور کامل اجرا شده و مستندات کامل ايجاد ميشود • متدولوژيهای سبک وزن (Lightweight) • فازها به صورت کوتاه و مستندات به اندازه ايجاد ميشوند • متدولوژيهای چابک در دسته دوم قرار دارند
متدولوژي سنگين وزن • در 25 سال اخير روشهاي بسيار زيادي براي توسعه نرمافزار معرفي شدند اما امروزه تعداد بسيار اندكي از آنها مورد استفاده قرار ميگيرد! • متدولوژيهاي فعلي بيش از اندازه ماشينگرا و مكانيزه هستند و بصورت فرآيندي وارد جزئيات غيرضروري ميشوند، به همين دليل اين نوع متدولوژها را سنگين وزن مينامند
مشکلات متدولوژيهاي سنگين وزن • مشتريان نرمافزارها حاضر نيستند كه براي دست يافتن به نرمافزارهاي مورد نياز خود مدت زيادي منتظر بمانند • رقابت بسيار شديد شركتهاي توليد نرمافزار براي ارائه خدمات نرمافزاري به كاربران • تغييرپذيري بسيار زياد نرمافزارهاي امروزي انكارناپذير است
Cost of change Promised date لزوم تغييرات در توسعه نرمافزار • No Change! • We are already running late. • I need to meet my date. • We worked hard to prevent change at the start. Customer big cheese
Cost of change Promised date لزوم تغييرات در توسعه نرمافزار • No Change! • We are already running late. • I need to meet my date. • We worked hard to prevent change at the start. Change & Rework happens at the most expensive time Customer big cheese Spec signed off here
Conflict* لزوم تغييرات در توسعه نرمافزار Successful Project Meet Schedule Best Product No Change! Change! Customer big cheese
معيارهای مقايسه متدولوژيها با يکديگر • روش • معيار موفقيت • اندازه پروژه • سبک مديريت • نحوه مستندسازی • چرخهها • اندازه تيم • برگشت سرمايه
Process Discipline CMM - SW روش • روشهای چابک بصورت Adaptive يا سازگار عمل میکنند يعنی با شرايط منطبق میشوند • روشهای سنگين وزن بصورت پيشگو يا Predictive عمل میکنند يعنی در آغاز همه چيز را پيشبينی میکنند آيا همه چيز از ابتدا قابل پيشبينی است؟ Rigid, Highly Structured Ad hoc, Chaotic Agile Processes RUP
معيار موفقيت • معيار موفقيت در روشهای چابک دستيابی به ارزش کاری (Business Value) است • در روشهای سنگين وزن معيار موفقيت پيش رفتن در راستای طرح اوليه است روشهای سنگين وزن انعطافپذيری ندارند
اندازه پروژه • اندازه پروژه در روشهای چابک کوچک است • اندازه پروژه در روشهای سنگين وزن میتواند بسيار بزرگ باشد اين مسأله از محبوبيت روشهای چابک نمیکاهد !!! (آمار نشان میدهد که تعداد پروژههای کوچک بسيار بيشتر است)
سبک مديريت • مديريت در روشهای چابک بصورت غيرمتمرکز و آزاد است • در روشهای سنگين وزن مديريت بصورت مطلق و استبدادی است مديريت غيرمتمرکز امکان تصميمگيری بهتر را فراهم میکند
نحوه مستندسازی • مستندسازی در روشهای چابک بصورت بسيار محدود انجام میشود • در روشهای سنگين وزن مستندسازی بصورت کامل و جامع انجام میشود در بسياری از موارد مستند سازيهای سنگين, کار بسيار دشوار و زمانبری است
چرخهها • تعداد چرخهها (Cycles) در روشهای چابک بسيار زياد است اما زمان آنها کوتاست • در روشهای سنگين وزن تعداد چرخهها کم است ولی زمان آنها بسيار زياد است زمانبر بودن چرخههای توليد, موجب طولانی شدن زمان انتظار برای رسيدن به نشرها میشود
اندازه تيم • در روشهای چابک اندازه تيم کوچک است (بين 20 تا 30 نفر) • در روشهای سنگين وزن اندازه تيم توسعه بزرگ است خلاقيت و همکاری در تيم کوچک بسيار بيشتر خواهد بود
برگشت سرمايه • در روشهای چابک سرمايه خيلی زود در طول پروژه بر میگردد • در روشهای سنگين وزن برای برگشت سرمايه بايد تا انتهای پروژه صبر کرد روشهای چابک از لحاظ اقتصادی بصرفهاند
بيانيه روشهاي چابک • در سال 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 شامل پنج فاز است • 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 - فرآوردهها • فرآوردههای Scrum به سه دسته اصلی تقسيم میشوند • Product Backlog • Sprint Backlog • Sprint BurnDown Chart
متدولوژيScrum - Product Backlog • شامل يک صف اولويتبندی شده است که در آن وظيفهمنديهای تکنيکی و حرفه نمايش داده شدهاند که بايد توسعه داده شوند • برای هر مورد مشخص شده در اين فرآورده، خواصی مانند وضعيت، اولويت و تخمين کاری وجود دارد
متدولوژيScrum - Sprint Backlog • مجموعهای از موارد حرفه و فني که برای تکرار جاری (Current Iteration) زمانبندی شدهاند در اين فرآورده نمايش داده میشوند • نيازها در اين فرآورده به وظايف تبديل می شوند • برای هر وظيفه يک شرح کوتاه وجود دارد و مشخص میشود که چه کسی مسئولانجام آن است و همچنين وضعيت و تعداد ساعات باقيمانده تا تکميل شدن هر وظيفه در اين فرآروده مشخص میشود
متدولوژيScrum - Sprint BurnDown Chart • ساعات باقيمانده برای تکميل شدن همه وظايف مربوط به يک Sprint را در قالب يک گراف بصورت برجسته نمايش میدهد
متدولوژيScrum - نقشها • Scrum Master • Product owner • Scrum team • Manager
متدولوژيهاي خانوادهCrystal • شامل مجموعهای از متدولوژيهای متفاوت است که مناسبترين آنها برای هر پروژه منحصر به فرد انتخاب میشود • دارای اصولی است که متدولوژيها را برای شرايط مختلف موجود در پروژهها سفارشی میکند • روش Crystal پيشنهاد میکند که يک متدولوژی مناسببراساساندازه و ميزان بحرانیبودن پروژه انتخاب شود
متدولوژيهاي خانوادهCrystal(ادامه) • هر عضو از خانوادهCrystalبايک رنگ مشخص میشودکهميزان سنگينی متدولوژی را نشان میدهد. رنگ تاريکتر نشان دهنده متدولوژی سنگينتر است C: Comfort D: Discretionary Money E: Essential Money L: Life
متدولوژيهاي خانواده Crystal (ادامه) • تمامی پروژهها از توسعه افزايشی با بازه زمانی حداکثر 4 ماه استفاده میکنند • تأکيد روی ارتباطات و همکاری بين افراد درگير در پروژه است • هيچ فعاليتيا ابزاری را برای توسعه محدود نمیکند • مثلاً میتوان از فعاليتهای XP و Scrum با هم در اين روش استفاده کرد