مهارت ها، دانش و نگرش تیم برای تولید نرم افزار به روش چابک
تولید نرم افزار به روش چابک : تیم تولید نرمافزار برای اینکه بتواند به صورت موفق نرمافزار را به روش چابک پیادهسازی نماید، نیازمند تغییر نگرش و دیدگاه و همچنین ارتقای دانش و مهارتها است. براین اساس در این مقاله الزامات کلیدی برای سازمان مذکور از دیدگاه نگرش، دانش و مهارتها بیان می شود.
فرهنگ و نگرش تیم توسعه
از دیدگاه نگرش، تیم توسعه نرمافزار باید اصول تفکر چابک را بپذیرد. این اصول در قالب Agile Manifesto توسط گروهی از پیشگامان و متفکران صنعت نرمافزار جهان ارائه شده است. هر فرد یا تیمی که می خواهد متدولوژی چابک را اجرا نماید باید این اصول را بپذیرد.پذیرش این اصول به معنای نوعی تغییر در دیدگاه و نگرش حرفهای افراد است و آنها را برای اجرای متدولوژی چابک آماده میسازد.
اصول در دوازده بند به شرح ذیل تعریف شده اند:
- بالاترین اولویت ما جلب رضایت مشتری با تحویل زود و مداوم نرمافزاری ارزشمند میباشد.
- استقبال از تغییر نیازمندیها، حتی در اواخر فرآیند توسعه. فرآیند های چابک، تغییر را در جهت مزیتِ رقابتی مشتری مهار میکنند.
- تحویل زود به زود نرمافزارِ قابل استفاده دو، سه هفته یک بار تا دو ، سه ماه یک بار با ترجیح بر فاصلههای زمانی کوتاهتر
- ذی نفعان کسب و کار و توسعه دهنده ها می بایست به صورت روزانه در طول پروژه با هم کار کنند.
- پروژهها را بر دوش افراد با انگیزه بنا کنید. فضای لازم را به آنها بدهید و از نیازهای آنها پشتیبانی کنید و به آنها اعتماد کنید تا کارها را انجام دهند.
- کارآمدترین و موثرترین روش انتقال اطلاعات به تیم توسعه و تبادل آن در میان اعضای تیم، گفتگوی چهره به چهره است.
- نرمافزار قابل استفاده، اصلی ترین معیار سنجش پیشرفت است.
- فرآیندهای چابک توسعه پایدار را ترویج می دهند، حامیان مالی، توسعه دهندگان و کاربران باید بتوانند سرعت پيشرفت ثابتی را براي مدت نامحدودی حفظ كنند.
- توجه مداوم به برتری فنی و طراحی خوب، باعث افزایش چابکی می شود.
- سادگی ضروری است.
- بهترین معماری ها، نیاز مندی ها و طراحی ها از تیم های خود سازماندهی شونده (Self-organizing) پدیدآور می شود.
- در فواصل منظم، تیم بر چگونگی موثرتر شدن، تامل و تفکر می نماید و سپس رفتار خود را براساس بازتاب این تفکر تنظیم و هم سو می نماید.
دوازده اصلی کلیدی:
دوازده اصلی کلیدی فوق تنها عبارات و جملاتی زیبا نیستند، بلکه حاصل تجربه سالیان زیاد برترین متخصصان نرمافزار جهان بوده که طی چندین جلسه مختلف و بحثهای فراوان بدان رسیدهاند و با یکدیگر پیمان بستهاند برای تولید محصولات نرمافزاری بهتر بدان پایبند باشند. از این رو در هر پروژه نرمافزاری پایبندی به این اصول ضروری است چرا که موفقیت پروژه در گرو الزاماتی است که توسط این مانیفست تبیین شده است. این اصول از هیچ دانشگاه و کلاس درسی بیرون نیامدهاند از این رو کاملاً کاربردی بوده و بهانهای برای رد آنها پذیرفتنی نیست.
مهارتهای تیم توسعه
علاوه بر نگرش مناسب، تیم توسعه سامانه باید مجموعهای از مهارتها را نیز در اختیار داشته باشد. در متدولوژیهای ساختیافتهتر مانند RUP، نقشهای مختلفی برای تیم توسعه نرمافزار تعریف شده که برای هر نقش نیز مهارتهای مورد نیاز تعیین گردیده است. این متدولوژی اسکرام سه نقش کلیدی مرتبط با توسعه نرمافزار تعریف گردیده است. در شکل زیر این نقشها نشان داده شدهاند.
نقشهای کلیدی در متدولوژی اسکرام
این سه نقش تولید نرم افزار به روش چابک عبارتند از:
مالک محصول
مالك محصول (Product Owner) نماينده كاربران، ذينفعان و مخاطبان سامانه است. اين فرد صداي مشتريان نيز ناميده ميشود. وي مسئوليت شناسايي و مستندسازي نيازمنديهاي كاربران در قالب User Story را بر عهده دارد. وي نيازمنديهاي سامانه را بهProduct Backlog وارد ميكند. همچنين مسئوليت اولويتبندي نيازمنديهاي را بر عهده دارد. اين فرد نقش واسطه بين كاربران و تيم پروژه را بر عهده دارد و مسئوليت برقراري ارتباطات موثر و سازنده بين تيم توسعه و مخاطبان بر عهده وي است. مالك محصول از ديدگاه كسب و كاري به محصول مينگرد و هدف وي اجراي نيازمنديمنديهاي سامانه به نحوي است كه ارزش مورد انتظار براي كسب و كار ايجاد گردد. مالك محصول در راستاي انجام نقش ارتباطي خود، فعاليتهاي كليدي ذيل را انجام ميدهد:
- توصيف محصول و فرآوردههاي آن براي ذينفعان
- برنامهريزي و اطلاعرساني در خصوص انتشارها
- اطلاعرساني در خصوص وضعيت تيم پروژه
- سازماندهي و برنامهريزي جلسات مرور نرمافزار
- آموزش ذينفعان طي فرآيند توسعه
- مذاكره در خصوص اولويتها، محدوده، منابع خصوصاً منابع مالي و زمانبندي
- حصول اطمينان از شفافيت نيازمنديهاي در Product Backlog
يكي از مهمترين ماموريتهاي مالك محصول، ايجاد توافق و همدلي بين ديدگاههاي مختلف ذينفعان است. هريك از ذينفعان و مخاطبان سامانه ممكن است حسب جايگاه و نقش سازماني خود داراي ديدگاههاي مختلفي در خصوص پروژه باشد، مالك محصول بايد بين اين ديدگاه توافق ايجاد نموده و تيم پروژه را با گروهي از نيازمنديهاي مورد توافق و شفاف در محدوده پروژه روبرو نمايد.
استاد اسکرام
پيادهسازي متدولوژي اسكرام از طريق يك نقش ديگر تحت عنوان اسکرام تسهيل ميشود. ماموريت كليدي اين نقش حذف عوامل مزاحم و بازدارنده از تحقق هدف اصلي تيم پروژه يعني تحويل محصول است. اين نقش با مدير پروژه متفاوت است و مسئوليت مديريتي در پروژه بر عهده ندارد. بلكه ماموريت وي بيشتر شبيه يك تسهيلكننده است. وي تيم پروژه را در اجراي چارچوب و متدولوژي اسکرام هدايت مينمايد و اطمينان حاصل ميكند چارچوب مذكور به درستي در حال اجرا است. وي همچنين به بهبود مستمر فرآيند توسعه سامانه نيز كمك ميكند. وظايف كليدي استاد اسکرام عبارت است از:
- هدايت تيم براساس اصول اسکرام براي توليد محصول با كيفيت
- ارتقاي قابليت Self-Organizing در تيم
- تسهيل رويدادهاي كليدي تيم براي حصول اطمينان از پيشرفت منظم پروژه
- راهنمايي تيم براي حذف عوامل مزاحم و بازدارنده در فرآيند توسعه سامانه
- كمك به مالك محصول براي نگهداري Product Owner به نحوي كه نيازمنديها به روشني براي تيم توسعه شفاف باشند.
بايد توجه داشت كه استاد اسکرام نقشها و وظايف مديريت پروژه را بر عهده نداشته و مسئوليتهاي مدير پروژه از جمله كنترل و فرماندهي بر عهده وي نيست.
تیم توسعه
تيم توسعه بين 3 تا 9 نفر عضو دارد. مسئوليت تمامي فعاليتهاي مرتبط با توليد سامانه از جمله تحليل، طراحي، پيادهسازي، آزمون، يكپارچهسازي و مستندسازي را بر عهده دارد. این تيم توسعه داراي دو ويژگي كليدي Cross-functional و Self-organizing است. Cross-functional بودن بدين معنا است كه تيم تمامي مهارتهاي مورد نياز براي انجام وظايف محوله را دارد. همانطور كه اشاره شد تيم توسعه مسئوليتهاي مختلفي در خصوص توسعه سامانه بر عهده دارد از اين رو ضروري است تا تمامي مهارتهاي مورد نياز را نيز در اختيار داشته باشد. در خصوص Self-organizing نيز شايان ذكر است كه مسئوليت سازماندهي، برنامهريزي داخلي، تقسيم وظايف و كنترل عملكرد اعضاي تيم بر عهده خود تيم است. براين اساس تيم توسعه داراي استقلال عمل براي پيادهسازي نيازمنديهاي مورد توافق در محدوده زماني تعيين شده است. البته تيم پروژه با ساير اركان پروژه از جمله كارفرما يا نماينده مديريت پروژه كارفرما در ارتباط بوده و اطلاعات وضعيت پروژه را با آنها تبادل مينمايد.
مهارتهای تیم اسکرام
در قسمتهاي فوق، نقشهاي كليدي مرتبط با متدولوژي اسکرام توصيف گرديد. در ادامه مهارتهاي مورد نياز هريك از اين نقشها براي اجراي موفق پروژه بيان شده است. اين مهارتها با توجه به معماري و فرآيند توصيه شده براي توسعه سامانه تعيين گرديده است.
مهارتهاي مالك محصول
- تسلط به فرآیند اسکرام
- شناخت و درک دقیق کسب و کار و فرآیندهای سازمان
- توانایی انتقال نیازمندیهای کسب و کار به تیم توسعه
- توانایی توصیف و تدقیق نیازمندیهای سیستمی
- توانایی شناسایی اولویتهای کسب و کار و تعیین اولویتهای سیستمی
- توانایی برقراری ارتباط موثر بین کاربران، ذینفعان و تیم پروژه
- راهنمایی و کمک به تیم پروژه در برنامهریزی موثر Sprintها
مهارتهاي تيم توسعه
مهارتهای تیم توسعه در بخشهای تحلیل و طراحی، پیادهسازی، آزمون، بهبود مستمر و یکپارچهسازی و تحویل به شرح ذیل تبیین شدهاند.
-
تحليل و طراحي
- تدوین User Storyها و Acceptance Criteria براساس رویکرد BDD
- توانايي طراحي سامانه با رعايت اصول SOLID
- توانايي تحليل و طراحي سامانه مبتني بر الگوهاي طراحي متناسب با معماري مايكروسرويس
- تسلط به رويكرد DDD در شناسايي، افراز و طراحي مايكروسرويسها
- تسلط به اصول و تکنیکهای معماری مایکروسرویس
-
پيادهسازي تولید نرم افزار به روش چابک
- توانايي راهاندازي و تنظيم محيط توسعه
- توانايي تدوين و بكارگيري رويهها، استانداردها و روشهاي مورد توافق براي توسعه استاندارد محصول
- توانايي توسعه Frontend براساس رويكرد Restful
- توانايي توسعه Backend براساس معماري مایکروسرویس
- توانايي پيادهسازي رويكرد Event Sourcing
- توانايي پيادهسازي رويكرد CQRS
- توانايي پيادهسازي قابليتهاي توليد گزارشهاي تحليلي مبتني بر رويكرد هوش تجاري
- توانايي توسعه كدهاي امن و مقاوم در مقابل حملات و تهديدهاي كليدي امنيتي
-
آزمون
- تسلط به طراحي، پيادهسازي و تحليل آزمونهاي خودكار
- تسلط به رويكرد طراحي آزمون، تدوين و پيادهسازي Test Caseها واحد مبتني بر رويكرد BDD
- تسلط به طراحي، پيادهسازي و نگهداري ابزارهاي آزمونهاي خودكار يكپارچگي
- توانايي طراحي و پيادهسازي ساير آزمونهاي مورد نياز از جمله بار، رگرسيون و امنيت
-
بهبود مستمر
- تسلط به مفاهيم و ابزارهاي مرور كد (Code Review)
- تسلط به مفاهيم و ابزارهاي پوشش كد (Code Coverage)
- توانايي بهبود مستمر محصول با استفاده از رويكرد Refactoring
- توانايي بهبود مستمر محصول براساس مفاهيم Code-Smell
-
يكپارچهسازي و تحويل
- توانايي پيادهسازي، تنظيم و نگهداشت زيرساخت ساخت خودكار، يكپارچگي مستمر، مديريت نسخ، مديريت انتشارها، مديريت پيكرهبندي و در نهايت تحويل خودكار سامانه
- تسلط به فرآیند اسکرام
مهارتهاي استاد اسکرام
- تسلط به فرآيند اسکرام
- تسلط به قالبها و فرمتهاي مورد استفاده در فرآيند
- آشنايي كامل با چارچوبها و ابزارهاي مديريت پروژه
- آشنايي كامل با ابزارهاي يكپارچهسازي مستمر
- مسلط به ابزارها و روشهاي آمادهسازي محيط توسعه