متدولوژی یا چارچوب؟
آیا اسکرام یک متدولوژی است؟ آیا اجایل یک متدولوژی است؟ Framework چیست؟ تفاوت Framework و متدولوژی چیست؟
یکی از مسائلی که در بسیاری از شرکتهای نرمافزاری و در بین کارشناسان و مدیران این شرکتها وجود دارد عدم شناخت متدولوژی و Framework و تفاوتهای موجود میان آنهاست. سوالاتی که در ابتدای شروع این پست مشاهده کردید فقط بخش کوچکی از سوالاتی است که بسیاری هنوز جواب دقیقی برای آن ندارند. این مشکل نه تنها در شرکتهای نوپا و استارتاپها بلکه در برخی از شرکتهای نرمافزاری با سابقه نیز دیده میشود و جالب اینجاست که با یک جستجوی کوچک در اینترنت به این نتیجه رسیدم که این مشکل یک مشکل جهانی است!
سوالی که ایجاد میشود این است که چرا باید تفاوت بین این دو را بدانیم و چه اهمیتی دارد؟
جواب این است که با دانستن تفاوتهای این دو میتوانیم روش توسعه فرآیند نرمافزاری خود را با دقت بیشتری انتخاب کنیم. بنابراین تصمیم گرفتم در پستی به تشریح این مسئله بپردازم.

Framework یک ساختار ناقص و ناکامل است که جای تجربیات و ابزارها در آن خالی است ولی حداقل فرآیندهای مورد نیاز را مشخص کرده است. در حالی که متدولوژی شامل گروهی از دستورالعملها، ابزارها و تجربیات است که میتوان برای هدایت فرآیندها برای دستیابی به یک هدف خاص از آن استفاده کرد.
تعریف مشابهی هم توسط Scott Ellis در مقاله Framework, Methodologies and Processes وجود دارد:
چارچوبها کمی شل و ناقص هستند. آنها به وجود آمده اند که ساختار و مسیر انجام کارها به روش مورد نظر را بدون نیاز به جزئیات سختگیرانه فراهم کنند. در حقیقت چارچوبها فقط رهنمود ارائه میکنند. آنها قدرتمند هستند، زیرا ضمن داشتن انعطافپذیری کافی برای سازگاری با شرایط متغیر و یا سفارشیسازی برای شرکت شما از رویکردهای تأیید شده استفاده میکنند.
متدولوژی رویکردی برای انجام کار است که به همراه مجموعهای از قوانین، روشها، فعالیتهای تست، تحویل دادنیها، و فرآیندهایی که برای حل مسئلهای خاص استفاده میشود. متدولوژیها یک رویکرد فکر شده، تعریف شده و قابل تکرار را به نمایش میگذارند.
در حالت کلی چارچوبها یک ساختار از آنچه باید انجام شود ایجاد میکنند، اما برای بهترین روش برای آنچه باید انجام شود به تجربه انجام دهنده کار وابسته هستند، در حالی که متدولوژی تمام این موارد را با جزئیات بیان میکند: چه کاری باید انجام شود، چه زمانی باید انجام شود، چگونه باید انجام شود و چرا. در ادامه خلاصهای از برخی تفاوتهای اساسی بین چارچوبها و روشها آمده است.
مشخصه |
Framework |
Methodology |
ساختار |
قابل انعطاف (اجازه ایجاد انطباق میدهد) |
تجویزی (شامل وظایف، متدها، تکنیکها و ابزارها) |
استانداردها |
چه باید انجام شود |
چه چیزی در چه زمانی و چگونه باید انجام شود |
خروجی ثابت قابل پیشبینی |
پایین |
بالا |
مقاومت در برابر نقص |
پایین |
بالا |
قابلیت قراردادن دیگر چارچوبها در آن |
بله |
خیر |
قابلیت قرار دادن دیگر متدولوژیها در آن |
بله |
بله |
قابلیت خصوصیسازی برای محیطها و فرهنگهای مختلف |
بله |
تا حدی |
سطح تجربه مورد نیاز برای استفاده موثر |
بالا |
متوسط |
میزان تلاش برای پیادهسازی |
متوسط تا زیاد |
متوسط |
سهولت حاکمیت و نظارت بر انطباق |
بالا |
پایین |
پشتیبانی از برنامهریزی سریع |
متوسط |
بالا |
پشتیبانی از متریکهای تخمین |
شاید |
بله |
فراهم آوردن فازها و مراحل |
بله |
بله |
فراهم آوردن اصول، فلسفه و منطق اساسی |
شاید |
بله |
به نظر میرسد چارچوبها از متدولوژیها متداولتر باشند زیرا آنها به افراد اجازه میدهند که اجزای آنها را چگونه به کار بگیرند. اگر چه این کار ریسکها و مشکلاتی را نیز به دنبال دارد: ممکن است نواقصی در فرآیند ایجاد شود، ایجاد نتایح متناقض و یا ناسازگار محتمل است، معیارهای عملکرد و انطباق به سختی قابل تهیه و اجرا هستند. با این حال با کمک متخصصان با تجربه میتوانید راهنمایی لازم را برای دستیابی به نتایج مناسب به دست آورید.
از دیگر سو، متدولوژیها بسیاری از ریسکها و مشکلات ذاتی موجود در فریم ورکها را حل کردهاند اما اغلب پیادهسازی آنها مشکلتر است، زیرا مسائل کوچکی را برای اندیشیدن باقی گذاردهاند. افراد کم تجربهتر تمایل بیشتری به متدولوژیها دارند ولی در مقابل افراد متخصص معتقد هستند که روش آنها بهتر است.
جالب است که به دلیل ماهیت Frameworkها، آنها میتوانند با دیگر چارچوبها تلفیق شوند. آنها حتی میتوانند متدولوژیها را در بافت خود بگنجانند. در حالیکه این گفته برای متدولوژیها مصداق ندارد چون آنها برای انجام کار خاصی ایجاد شدهاند.
چارچوبها و متدولوژیهای مدیریت پروژه
وقتی صحبت از مدیریت پروژه به میان میآید به نظر میرسد که تعداد چارچوبها از متدولوژیها بیشتر هستند. چارچوبهای مدیریت پروژه بسیار زیاد و متنوع هستند ولی در عین حال تمایل دارند که بر اساس همان اصول اساسی ساخته شوند. (شروع، توجیه، برنامهریزی، اجرا، کنترل، استقرار، ارزیابی)
در ادامه مشخصات برخی از معروفترین چارچوبها و متدولوژیهای مدیریت پروژه را مشاهده میکنید.
Approach |
F/M |
توضیح |
PRINCE2 |
M | یک روش مبتنی بر فرآیند برای مدیریت موثر پروژه. این روش که به صورت عام تعریف شده است، بهترین تجربیات و راهنماییها را برای مدیریت پروژه ارائه میکند. |
Traditional Project Management |
F | PMBOK مدیریت پروژه سنتی را به صورت مجموعهای از ابزارها و تکنیکها تعریف میکند که میتواند بر روی فعالیتهایی که محصول نهایی، خروجی یا سرویس را دنبال میکند اجرا گردد. |
Critical Chain Project Management (CCPM) |
F | روشی برای برنامهریزی و مدیریت پروژهها که تاکید بر روی اجرای وظایف مورد نیاز پروژه دارد. |
Event Chain Methodology (ECM) |
F | یک تکنیک مدلسازی عدم قطعیت و تحلیل شبکه برنامهریزی است که بر روی شناسایی و مدیریت رویدادها و زنجیره رویدادهایی که بر روی پروژه تاثیرگذار است متمرکز است. |
در حوزه فناوری اطلاعات و توسعه نرمافزار وضعیت کمی پیچیدهتر است. در اینجا برخی روشها به وجود آمدهاند که مراحل چرخه زندگی توسعه نرمافزار (SDLC) را پوشش میدهند و برخی از آنها تلفیقی از روشهای مدیریت پروژه و مدیریت فرآیند هستند. SDLC (Software Development Life Cycle) همانطور که از نامش پیداست فرآیندی از توسعه سیستم یا نرم افزار تعریف شده است که نیازمندیهای خاصی را پوشش میدهد و شامل فعالیتهای مختلفی میشود. از درک اینکه چرا سیستم و یا نرمافزار باید تولید شود شروع میشود، امکانسنجی پروژه، آنالیز کردن مسائل، انتخاب معماری و طراحی سیستم، پیادهسازی و تست، تا تحویل سیستم یا نرمافزار به عنوان یک محصول به کاربر. SDLC یک فرآیند تدریجی است، یه این معنی که در طول چرخه پروژه چندین فاز توسعه طی میشود و هر فاز، فاز قبل از خود را تکمیل میکند. هر فاز نیز خود دارای چندین فاز یا مرحله به صورت زیر میباشد .
- Planning
- Analysis
- Design
- Implementation
- Test
- Deploying
در جدول ادامه معروفترین رویکردها و متدها را مشاهده میکنید.
توضیح |
F/M |
Approach |
مدل آبشاری یا waterfall model یک مدل فرآیندی توسعه نرمافزار ترتیبی است که دارای تعدادی فاز است. |
F |
Waterfall Development |
یک چارچوب مهندسی نرمافزار که توسعه تکراری و افزایشی را در طول چرخه پروژه ترویج میکند. |
F |
Agile |
یک چارچوب مبتنی بر چارچوب چابک یا agile است. |
F |
Scrum |
یک چارچوب توسعه نرمافزار با هدف بهبود کیفیت نرمافزار میباشد. |
F |
Extreme Programming (XP) |
یک فرآیند توسعه نرمافزار افزایشی و تکرار شونده مبتنی بر چارجوب چابک است. |
F |
Feature Driven Development (FDD) |
یک چارچوب تحویل پروژه مبتنی بر چارچوب چابک که رویکرد تکرارشونده و افزایشی دارد. |
F |
Dynamic Systems Development (DSDM) |
یک فرآیند یکپارچه و متدولوژیک توسعه نرمافزار |
M |
Rational Unified Process (RUP) |
سوال: آیا میتوان framework را به متدولوژی تبدیل کرد؟
همانطور که گفته شد framework یک ساختار ناکامل است و پیادهسازی آن به تجربه استفاده کنندگان آن وابسته است. با ترکیب و استفاده از چارچوبهای مختلف در یک framework میتوان به روش توسعه مناسب برای سازمان و پروژههای خود دست پیدا کنید و یک متد ترکیبی ایجاد نمائید و با مستندسازی بخشهای مختلف آن و ایجاد دستورالعمل و فرآیند و مستندسازی بهترین تجربیات به دست آمده میتوان یک متدولوژی برای سازمان و پروژه خود ایجاد نمائید.
آیا شما به چنین متدی نیاز دارید؟ چرا؟
0 پیام