بخشی از مقاله

کريستال و ويژگي هاي آن
چکيده - به روز رساني و اعمال تغييرات لازم بر روي نرم افزارتوليد شده ، به منظور توسعه و بهبود آن يکي از موارد اجتناب ناپذير در بازار پر رقابت نرم افزار است . امروزه هدف بيشتر شرکت هاي نرم افزاري توليد نرم افزارهاي مفيد در کوتاهترين زمان و با کمترين هزينه در محيط پررقابت ، متغير و بيثبات نرم افزاري است . با گذشت زمان و به وجود آمدن نيازهاي جديد به متدلوژي اي نياز است که بتواند بر هر پروژه با اندازه ها و حساسيت هاي مختلف وهمچنين تغييرات فراوان منطبق شود. کريستال و خانواده ي آن ، از متدلوژيهاي قابل توسعه و برنامه ريزي است که بر اساس ويژگيهاي تيم و پروژه برنامه ريزي شده است . در اين مقاله متدلوژي چابک ، کريستال و خانواده ي آن بررسي و سپس مزايا و معايب اين متدلوژي نسبت به ب متدلوژي هاي ديگر بيان ميشود.
کليد واژه - متدلوژي چابک ، متدلوژي کريستال ، کريستال نارنجي، کريستال clear

مقدمه
حدود يک دهه ي پيش ، تصور مردم بر اين بود که بهترين راه براي توسعه ي نرم افزار (و يا سيستم هاي متمرکز بر نرم افزار)، برنامه ريزي پروژها، منطبق بر اصول مهندسي نرم افزاراست .بر اين اساس آن ها ميتوانستند از وجود تمام قابليت هاي مورد انتظار در نرم افزار برنامه ريزي شده اطمينان حاصل کنند و اين روش در بسياري از مواقع موثر واقع مي شد. اما با گذشت زمان روشن شد که برنامه ريزي پروژه ها بر اساس روش هاي قديمي ممکن است در سناريوهاي عملي خاصي مانند توسعه ي نرم - افزاردر سايز کوچک و متوسط بهترين راه کار نباشد. در مهندسي نرم افزارسنتي، تمامي مراحل و فعاليت هاي توسعه ي نرم افزار بر طبق اصول و نظم از پيش تعيين شده برنامه ريزي ميگردد که اين روش براي برنامه ريزي پروژه هاي پيچيده در سايز بزرگ که درک آن مشکل است مناسب خواهد بود. با استفاده از قوانين سيستماتيک مهندسي نرم افزار، توسعه دهندگان ميتوانند يک مساله ي دشوار را به زير مساله هاي قابل فهم تجزيه کنند. با اين روش ، هماهنگ سازي کارها در ميان اعضاي تيم هاي مختلف که در يک مکان نيستند و در سراسر جهان پراکنده شدند با اطمينان بيشتر و به صورت همزمان انجام مي گيرد. متاسفانه سربار تجاري مهندسي نرم افزاردر پروژه هايي با سايز کوچک و متوسط بسيار زياد است . در سال هاي اخير متدلوژي هاي سبک وزن مختلفي براي توسعه ي نرم افزار در سايز کوچک و متوسط به وجود آمده است که اين متدلوژيها ثابت کرده اند که براي اين زير مجموعه از نرم افزارها مقرون به صرفه تر و موثرتر هستند[١].
متدلوژيهاي سبک وزن قابليت انطباق بيشتري با صنعت نرم - افزار، تکنولوژي نرم افزار، بازارهاي موقت امروزي و نيازمندي هاي کاربران در بازارهاي موقت که روزانه در حال تغيير است را داراست . همچنين اين متدلوژي، تحويل نرم افزار را مطابق با جدول زمان بندي شده ، تضمين خواهد کرد[١,٢]. ايده ي اصلي متدلوژي سبک وزن ، اضافه کردن برخي از سطوح چاوس به فرايند توسعه ي نرم افزاراست تا بدينوسيله انعطاف پذيري بيشتري براي کمک به توسعه دهندگان به آنها ارائه شود .
تيم توسعه بر روي لبه هاي چاوس کار ميکنند تا بهره وري توسعه ي نرم افزار را به وسيله ي داد و ستد در بين منافع تيم بهينه کنند پس به جاي مدل قابل تکرار، قابل پيش بيني و خطي آبشاري يک مدل تطبيقي، افزايشي، تکرار شونده ، تکاملي و غير خطي اتخاذ مي کنند که به اين متدلوژي، متدلوژي چابک گفته مي شود.
متدلوژيهاي چابک عبارتند از برنامه نويسي افراطي ١،Scrum
خانواده ي کريستال ٢، توسعه ي ويژگي محور٣ ، توسعه ي نرماف - زارانطباقي٤، روش توسعه ي سيستم هاي پويا٥ ، توسعه ي ناب ٦، نسخه ي چابک از فرايند يکپارچه ي رشنال ٧ ،نرم افزارهاي کد باز٨ و برنامه نويسي عمل گرا٩ که يکديگر را پوشش مي دهند. در اين مقاله به بررسي کريستال و خانواده ي آن پرداخته مي شود.
٢-متدلوژي چابک
متدلوژي چابک يک فرايند انعطاف پذير توسعه ي نرم افزار است .
اين متدلوژي فرايند را به صورت سختگيرانه دنبال نميکند بلکه با تغييرات ، سازگار است . اين متدلوژي مجموعه اي از مقادير و اقدامات زمان بندي شده -تکرارشونده ، تکاملي و انطباقي است و اجازه ميدهد که توسعه دهندگان به خواسته هاي جديد پاسخ دهند.
يک متدلوژي چابک بر موارد زير تاکيد دارد
• مردم و ارتباطات آن ها بيش از فرايند و ابزار
• نرم افزارهاي مشغول به کار بيش از مصنوعات غير ضروري
• مشارکت کاربر بيش از مشخصات از پيش نوشته شده
• توسعه ي تطبيقي بيش از برنامه ريزي سخت گيرانه [١]
• همکاري، بحث و مذاکره با مشتري بر طبق قرارداد
• پاسخ به تغييرات از طريق پيگيري يک طرح [٢]
توسعه ي چابک ، نسبت به فرايند داراي فلسفه ي خاصي است . اين فلسفه شامل تعدادي متدلوژي هاي توسعه ي چابک است . فرايند چابک به طور کامل از تکنيک هاي نرم افزارسنتي منحرف نمي شود. در فرايند چابک بسياري از مفاهيم که سال ها در نرم - افزارسنتي به کار برده شده ، استفاده ميشود که از آن جمله مي توان طراحي مبتني بر تست ، جفت برنامه نويسي و refactoring را نام برد. متدلوژي چابک يک استراتژي براي کاهش فعاليت هاي توسعه ي نرم افزار و محصولات کاري مياني است .(به عنوان مثال از کاغذ بازيهاکاسته و نمونه سازيهاي موقت حذف ميشود) اساس کار متدلوژي چابک مفهوم "فقط به اندازه ي کافي "است به اين معنا که با حداقل هزينه ، تمامي اهداف مورد انتظار برآورده ميشود که همه ي اين ها با بازخورد انجام ميشود
[١]پس همه ي متدلوژيهاي چابک که به توسعه ي نرم افزاري توجه دارند ميتوانند يک فرايند تجربي باشند که حلقه هاي کوتاه بازخورد، بازرسي و تطبيق را در طي پروژه ايجاد مي کنند[٢].
٣-توسعه ي چابک و دستورالعمل ها
در فوريه ي ٢٠٠١ تعدادي از مهندسين نرم افزار مشاور با همکاري يکديگر، شروع به طبقه بندي تعدادي از متدلوژي هاي حساس به تغييرات مانند متدلوژي چابک کردند. سپس اقدام به تشکيل اتحاديه چابکي نموده و بيانيه ي چابک را ارائه دادند.
متدلوژيهايي که در اين اتحاديه پذيرفته شدند عبارتند از: توسعه ي نرم افزارانطباقي، کريستال ، روش توسعه ي سيستم هاي پويا، برنامه نويسي افراطي، توسعه ي ويژگي محور Scrum و... همچنين اتحاديه چابک ، دستورالعمل هايي را در پيروي از بيانيه تنظيم نمود. متدهاي چابک بيشتر اصول مدار( داراي اصول و قاعده ) هستند تا قانون مدار. به اين مفهوم که اعضاي تيم و مديريت از طريق اين اصول هدايت مي شوند تا اين که بخواهند از قواعد و قانون هاي از پيش تعيين شده که بر اساس روابط ، نقشها و فعاليتها تدوين شده اند پيروي کنند.
به دلايل زير:
• سودآوري اين تغييرات براي مشتريان
• اولويت بالاتر، جلب رضايت مشتري با تحويل به موقع و مستمر نرم افزار
• همکاري روزانه تجار و توسعه دهندگان در سرتاسر پروژه
• تشويق مشتريان به استفاده از نرم افزار با ساختن پروژه هايي مناسب با محيط و پشتيباني از نيازهاي آن - ها
• تاکيد بر مکالمه رو در رو بين اعضاي تيم توسعه جهت انتقال اطلاعات
• کار کردن نرم افزار، اولين مقياس اندازه گيري پيشرفت
• پروسه هاي agile، گامي در جهت توسعه براي حاميان مالي، توسعه دهندگان و استفاده کنندگان
• افزايش مهارت و دقت عمل با توجه مداوم به تکنيکهاي عالي و طراحي خوب
• سادگي کار با نرم افزار به منظور سهولت بيشتر در کاربرد آن
• کسب بهترين نتيجه براي سازماندهي نيازمنديها، معماري و طراحي با خود سازمان دهي تيم
• انعکاس منظم رفتار تيم ها و بررسي ميزان کارآمدي ايشان [٢,٣].
٤-چالش مديريت نيازمندي ها
چالش مديريت نيازمنديها در سيستم متمرکز بر نرم افزار اين است که نيازمنديها پويا هستند و تغييرات در آنها امري طبيعي است . همان طور که درک توسعه دهندگان از اهداف سيستم به صورت عمقي و تدريجا رشد ميکند، نيازمندي هاي کاربران نيز ممکن است به صورت متفاوت و مستمر رشد کند. به طور کلي فرايند توسعه ي تطبيقي، براي رسيدن به کيفيت بالاتر، از تيم توسعه و توسعه دهندگان منحصر به فرد مي خواهد که هر توسعه دهنده به اندازه ي کافي با تجربه و سازمان تيم نيز به اندازه ي کافي موثر و کار آمد باشد. در حقيقت نيازمنديها در حين توسعه ي سيستم کشف و پالايش ميشوند.
٥-تکاملي و افزايشي



شکل ١.توسعه ي نرم افزار ترتيبي و خطي
همان طور که شکل ١ نشان مي دهد، فرايندهاي توسعه ي نرم افزارسنتي چرخه ي حيات آبشاري متوالي و خطي را دنبال مي کنند. با پردازش نيازمنديها از طريق طراحي، کد، تست واحد، آزمون يکپارچگي و تست سيستم ، توسعه به صورت خطي پيشرفت مي کند. مشکل اساسي اين روش اين است که ريسک را به جلو هل مي دهد به طوري که متحمل به هزينه هاي بيشتر براي خنثيسازي اشتباهات انباشته شده از مراحل قبلي مي شود. طراحي اوليه ممکن است در شناسايي نيازمنديهاي اصلي معيوب باشد و کشف دير هنگام نقص هاي پنهان طراحي باعث مي شود هزينه ها از ميزاني که براي پروژه در نظر گرفته شده است ، تجاوز کند و حتي کل پروژه شکست بخورد. يکي از جايگزين هاي موجود براي رويکرد آبشاري روش تکرار شونده و افزايشي در شکل ٢ است .

شکل ٢.توسعه ي نرم افزارافزايشي و تکاملي
در اين روش که بر اساس مدل مارپيچي است ، ريسک هاي پروژه بسيار زود در چرخه ي حيات آن شناسايي ميشود، بنابراين اين امکان وجود دارد که همه ي ريسک ها به موقع حل شوند. هر تکرار باعث ميشود که تيم توسعه ، مصنوعات نرم افزاررا در شيوه ي قابل تکرار و قابل پيش بيني توسعه دهد. در فرايند توسعه ي نرم افزارافزايشي و تکرار شونده ، چرخه ي عمر نرم افزارشامل چندين تکرار در هر توالي است . هر تکرار مي تواند به عنوان يک پروژه ي توسعه ي نرم افزارکوچک باشد که از ضبط و استنباط ، تجزيه و تحليل ، طراحي، پياده سازي و تست ساخته شده است .
به منظور دريافت بازخورد از همه ي اعضاي پروژه ، در انتهاي هر تکرار يک نرم افزار کاري متوسط براي انتشار وجود دارد(زير مجموعه ي از پروژه ي نهايي، پروژه ي تکميل شده ي کامل ). در پايان تکرار نهايي، نرم افزارکاري بايد کامل شده و آماده ي انتشار در بازار باشد. در سراسر پروژه نيازمندي هاي نرم افزار، طراحي و پياده سازي، در صورت نياز دگرگون و پالايش شده است که اين يک راه موثر براي مقابله با عوامل مختلف غير قابل پيش بيني و فرار از آنها در فرايند توسعه ي نرم افزاراست [١]. تفاوت کليدي متدهاي چابک و متدهاي تکرار شونده ي گذشته طول هر تکرار است . در گذشته ، تکرارها ممکن بود ٣ تا ٦ ماه به طول انجامد. درحاليکه در متدهاي چابک طول تکرار ١ تا ٤ هفته تغيير مي کند و به صورت عمده از ٣٠ روز تجاوز نمي کند.
تحقيقات نشان داده است که تکرارهاي کمتر ريسک و پيچيدگي کمتر، بازخورد کمتر، نرخ موفقيت و قابليت پيش بيني بيشتري دارد.
٦- متدلوژي کريستال
خانواده ي کريستالي که متدلوژي توسعه ي نرم افزار سبک و مردم -محور-انطباقي و است . کلمه ي کريستال به تعداد زيادي تراش در سنگ هاي قيمتي اشاره ميکند که در مفهوم توسعه ي نرم افزار، نشان دهنده ي بسياري از تکنيک ها، ابزارها، استانداردها و نقش هاي به کار رفته در يک فرايند خاص است . روش کريستال يک روش متمرکز بر بشر و ارتباطات است . ابزارها، محصولات کاري متوسط و فرايندها همه در ارتباط با بشر کار مي کند. براي هر پروژه ي نرم افزاري خاص ، استراتژيهاي مديريتي مختلف بايد براي رسيدن به مديريت بهينه به تصويب برسد. اين متدلوژي اصرار دارد که براي دستيابي به موفقيت 10(اقتدار مردم ) بايد به طور کامل شبيه سازي شده و مورد استفاده قرار بگيرد. علاوه بر اين ارتباطات موثر خانواده ي کريستال و چرخه ي تحويل کوتاه ، کاغذ بازي موقت ، سربار و 11تشريفات اداري به حد افراط را به حداقل ميرساند در نتيجه هزينه ي يک پروژه به صورت قابل توجهي کاهش مي يابد. هدف اصلي توسعه ي نرم افزار انتشار محصولات نرم افزاري قابل اجرا و مفيد است . نگراني اصلي، حفظ پايداري توسعه ي نرم افزاراست .
اگر فرض شده باشد که فرايند اثر جانبي دارد، عوامل انساني ، بحراني ترين و مهم ترين اثر را بر روي عملکرد تيم دارد. بنابراين فرايندهاي توسعه ي مختلف متناسب با تيم هاي مختلف و اصل "کفايت آشکار" و يا "فقط به اندازه ي کافي "به يک فرايند اعمال مي شود. کار تيم توسعه بر روي محصولات مياني(به عنوان مثال اسناد توسعه و طرح هاي پيشرفت ) با تحويل مکرر نرم افزار قابل اجرا و به کارگيري کانال هاي ارتباطي چندگانه بين مردم ميتواند به مقدار قابل توجهي کاهش يابد. از آنجايي که پروژه هاي مختلف شرايط متفاوت دارند و وضعيت آن ها به صورت پيوسته مي تواند تغيير پيدا کند، معمولا توافق نامه هاي پذيرفته شده در يک تيم بايد اصلاح شود و مطابق با تغيير وضعيت تکامل پيدا کند. در تيم با پروژه هاي بزرگتر بايد متدهاي سنگين تر استفاده شود(حمايت بيشتر از مستندات )، همچنين الزامات بيشتري براي قابليت اطمينان نرم افزاربايد وجود داشته باشد، نظم و مقررات فرايند به کار رفته بايد محکم تر باشد و علاوه بر اين تفاوت فرهنگي بين مردم بايد به دقت در نظر گرفته شود [١]. متدهاي کريستال مشابه با RUP٣ بر اساس آدرس و اعتبار محيطي و ويژگيهاي خاص پروژه توسعه داده مي شود [٤].
RUP بر اساس متدولوژي برنامه محور آغاز ميشود و با پيگيري و دنبال کردن هدف ، ريسک هاي آن کوچکتر و کمتر مي شود. در مقابل ، نويسنده ي کريستال Alistair Cockburn احساس مي کند که متدلوژي پايه بايد" ندرت سخت " باشد. او ادعا مي کند که فرد به کنترل کردن کمتري از حد انتظار نياز دارد و نيز تحويل سريع به آن نيز خيلي خوب نيست . به علاوه از آنجايي که پروژه و تيم مربوط به آن در طول پروژه کامل ميشوند بنابراين متدولوژي به شدت بايد با توجه به واحدهاي پروژه تکامل يابد.
کريستال از خانواده متدها ميباشد زيرا Cockburn معتقد است که فرايند توسعه يافته اي که براي پوشاندن همه نيازها مناسب باشد وجود ندارد. به عنوان مثال متدهاي مختلف بايد ترتيب رنگي خاصي در جهت رسيدن به کدري خاص اختصاص دهند.
نسخه هاي بسيار سريع چابکي از نوع کريستال clear هستند که با کريستال زرد و قرمز و نارنجي دنبال مي شود. گراف شکل ٣ براي مشخص کردن نقطه شروع متد کريستال استفاده ميشود.
محور x تعداد يا سايز اعضاي تيم را مشخص مي کند. هرچه سايز تيم بزرگتر شود( حرکت به سمت راست روي محورx) ، مديريت پروژه از طريق ارتباطات رو در رو سخت تر و نياز به هماهنگي بيشتر مستندات ، ابزار آلات و روش ها و... ميشود. محور y نقاطي

در متن اصلی مقاله به هم ریختگی وجود ندارد. برای مطالعه بیشتر مقاله آن را خریداری کنید