بحث مربوط به وابستگی، بحثی ساده و پایهای و در عین حال کلیدی است که معمولن مدیران پروژه با کلیات اون آشنا هستند. پس اگر با این موضوع آشنایی محدودی دارید، حتمن این مقاله رو دنبال کنید. اگر در این بحث حرفهای هم هستید، مروری بر موارد (مخصوصن بخشهای انتهایی) داشته باشید، تا جزئیات از قلم افتاده رو ببینید.
وابستگی چیست؟
وظیفههای یک پروژه به هم مرتبط هستند و رابطه بین اونهاست که زمانبندی پروژه را میسازه. رابطه بین وظیفهها، وابستگی (Dependency) نامیده میشه. در استاندارد پمباک (PMBOK) بیان شده که همه وظیفهها «باید» وابستگی داشته باشند. پس اگر وظیفهای بخواد در بدنهی پروژه قرار بگیره، باید با دیگر وظیفهها در ارتباط باشه. در واقع اگر وظیفهای بدون وابستگی باشه، یه یتیمِ رها شده تو دریای کارهاست و نه جزئی از پروژه. مدیران پروژه به کمک این ارتباط بین وظیفهها میتونند تاثیر وضعیتهای مختلف رو بر زمانبندی مشخص کنند. در واقع اگه نتوانیم جواب سوالهایی مثل سوالهای زیر رو بدیم، از ظرفیت کاملِ زمانبندی پروژه استفاده نکردیم:
- کدوم وظیفه در مسیر بحرانی است؟ (که تاخیر در اجرای اون، منجر به طولانی شدن کل پروژه میشه.)
- اگر مدت زمان وظیفهای تغییر کنه، چه تاثیری روی تاریخ تکمیل پروژه داره؟
برای اینکه زمانبندی در طول زندگی پروژه مدام در حال تغییر و رسیدن به بهترین حالت هستش، مهمه که یک زمانبندی واقعگرایانه و قابل دستیابی داشته باشیم. پس وظیفهها حتمن باید با هم در ارتباط باشند.
وجود وابستگی وظیفهها به دلیلهای زیر واجب است:
- توالی بستههای کاری (وظیفهها) در طرح پروژه
- محاسبه مسیر بحرانی (طولانیترین مسیر/مدت زمان) وظیفهها در طرح پروژه
- تعیین مسائل مربوط به منابع و زمانبندی و تصمیمگیری در مورد اونها
- پایش و مدیریت طرح پروژه
- یافتن فرصتهای برای تسریع در اجرای زمانبندی
انواع وابستگیهای وظیفه
در پروژه میشه از ۴ نوع وابستگی استفاده کرد. در ادامه با این نوعها و مثالهایی ازشون آشنا میشیم.
۱. پایان به شروع
این وابستگی Finish to Start یا FS هم گفته میشه و معمولترین نوع وابستگی بین وظیفههاست که در نرمافزار پراجکت (MSP) هم وابستگی پیشفرضه. در این حالت وظیفه دوم نمیتونه شروع بشود، مگر اینکه وظیفه اول تموم بشه. معمولن بیشتر از ۹۰% وابستگیهای بین وظیفهای در زمانبندی از این نوع هستن.

برای نمونه،
- شام خوردن وقتی شروع میشه که درست کردن غذا تموم شده باشه.
- بعد از کندنِ گود میشه بتنریزی رو انجام داد.
- نرمافزار رو وقتی میشه نصب کرد که سرور آماده باشه.
توجه کنید که اگه هیچگونه معیار و دلیل خاصی (برای انواع دیگه وابستگی) نباشه، باید از این نوع استفاده کرد.
۲. شروع به شروع
این وابستگی Start to Start یا SS هم گفته میشه. در این حالت وظیفه دوم نمیتونه شروع بشه، تا موقعی که وظیفه اول شروع بشه. نکته ظریف در این قسمت اینه که نباید بگیم «هر دو وظیفه با هم شروع میشن». در واقع وظیفه اول، پیشنیازِ وظیفه دومه و با شروع شدنش، اجازه میده وظیفه دوم شروع بشه. پس وظیفه دوم میتونه دیرتر هم شروع بشه و الزامی به شروع همزمان نیست.

برای نمونه،
- فرایند ترکیب شیمیایی نمیتونه شروع بشه، تا وقتی که تست کیفیت هوا شروع بشه.
- پایش عملیات باید شروع بشه، تا فرایندهای یک عملیات صنعتی بتونه شروع بشه.
همونطور که میبینید، مثالهای زیادی برای این نوع رابطه نیست. کمتر از ۵% وابستگیها از نوع شروع به شروع هستند. تلاش نکنید به اجبار از این نوع رابطه استفاده کنید.
۳. پایان به پایان
این وابستگی Finish to Finish یا FF هم گفته میشه. در این حالت وظیفه دوم زمانی میتونه تموم بشه که وظیفه اول تموم بشه. پس وظیفه دوم به هیچوجه نمیتونه قبل از وظیفه اول تموم بشه. نکته مهم اینه که قرار نیست این دو وظیفه حتمن «با هم» تموم بشن.

برای نمونه، کار طراحی نمیتونه تموم بشه تا وقتی که مطالعات محیطی تموم بشه.
این نوع رابطه هم مثل شروع به شروع کمتر دیده میشه و کمتر از ۵% وابستگیهای پروژه از این نوع هستند.
۴. شروع به پایان
این وابستگی Start to Finish یا SF هم گفته میشه. این نوع رابطه کاملن بیاستفاده ست و معمولن در هیچ زمانبندیای استفاده نمیشه. اگه نگاه عملگرا به مدیریت پروژه دارید، اصلن این رابطه رو یاد هم نگیرید! این وابستگی برای این آموزش داده میشه که در نرمافزارهای برنامهریز پروژه مثل مایکروسافت پراجکت (MSP)، امکان استفاده ازش وجود داره.
در هر حال، وابستگی شروع به پایان به این صورته که وظیفه دوم نمیتونه تموم بشه، مگر اینکه وظیفه اول شروع بشه. از طرف دیگه، وظیفه دوم میتونه «هر زمانی» بعد از شروع وظیفه اول تموم بشه. درکش کمی سخته. نه؟ :)

برای نمونه،
- بازرسی نمیتونه تموم بشه تا وقتی که بررسی مشتری انجام بشه.
- انجام پرداخت نمیتونه تموم بشه تا وقتی تحویل کالا شروع بشه.
در نهایت، ساده و سرراستترین رابطه، همان «پایان به شروع» است. درک این نوع وابستگی برای همه آسونه و البته منجر به طولانیتر شدن بیش از حد پروژه میشه. برای کاهش دادن مدت زمان کل زمانبندی میتونید از نوعهای دیگر وابستگی یا تکنیکهای ذخیره زمان (لینک) استفاده کنید.
وابستگیهای اجباری و اختیاری
معمولن ما بیشتر با وابستگیهای اجباری طرف هستیم. این نوع وابستگیها به دلیل اجبار فیزیکی، اجبار قراردادی یا الزام حقوقی استفاده میشن. تقریبن بیشتر وابستگیهای بین دو فعالیت که به ذهن میرسند، اجباری هستند. مثلن اول باید گودبرداری بشه تا امکان بتنریزی ایجاد بشه. یک اجبار فیزیکی. به این نوع وابستگیها، «وابستگی با منطق سخت» هم گفته میشه.
اما نوع دیگری از رابطه است که روی سنگ نوشته نشده و وحیِ مُنزل نیست. به اینها وابستگیهای اختیاری یا بصیرتی (Discretionary) گفته میشه. چرا باید سراغ این رابطهها بریم؟
- اگر پروژه یا فازی از اون زود تموم بشه، جایزه میگیریم.
- منابع پروژه برای پروژهی دیگهای مورد نیازه که تکمیل زودهنگام اون پروژه مهمه.
در مورد اول، شما از ترکیب متفاوتی از روابط بین وظیفهها استفاده میکنید تا مدت زمان کل پروژه به حداقل برسه و کار زودتر جمع بشه. در مورد دوم، شما مجبور میشوید روابط را به نوعی تغییر بدید که هر چند منجر به افزایش مدت زمان پروژهتون میشه ولی تعدادی از منابع آزاد میشوند تا به پروژهی مهمتر برسند.
خیلی وقتها این تغییر در روابط و رسیدن به توالی بهینه، بر مبنای تجربه تیم کاری انجام میشه، به همین دلیل به این نوع، وابستگی بصیرتی هم گفته میشه.
وابستگیهای اجباری و اختیاری ۲!
دستهبندی دیگری برای وابستگیهای بین وظیفهای وجود داره که در واقع شکل دیگهای از همون دستهبندی اجباری و اختیاری است که در بخش قبل توضیح دادم و فقط برای اینکه با این عنوانها هم آشنا بشید، در ادامه مطرح میکنم. در این رویکرد، وابستگیها در سه دسته قرار میگیرند:
- منطقی: وابستگیهایی هستند که با توجه به منطق تعیین میشن، مثلن نمیتونید دیوار رو رنگ کنید، وقتی هنوز ساخته نشده.
- مبتنی بر منبع: گاهی میشه با مهارت بیشتر یا مقدار بیشتر از منابع، پروژه رو سریعتر تموم کرد. مثلن در صورتیکه دو نقاش داشته باشید، دو وظیفه میتونند به صورت موازی انجام بشوند و نه پشت هم. پس یه سری از وابستگیها بر مبنایِ تعداد و سطح منابعی که در دست دارید، قابل تعیین هستند.
- ترجیحی: زیاد پیش میاد که به شکلهای مختلف میشه روابط وظیفهها رو تعیین کرد ولی مدیر پروژه بر اساس تجربه یا ترجیحش میتونه به شکل خاصی کارها رو در کنار هم و در ارتباط با هم قرار بده.
همینطور که متوجه شدید، «وابستگی منطقی» معادل «وابستگی اجباری یا سخت» در بخش قبله. «وابستگیهای مبتنی بر منبع و ترجیحی» هم معادل «وابستگی اختیاری یا بصیرتی» هستند.
وابستگی داخلی و خارجی
وابستگیهای بین وظیفهها میتونند در یکی از دو دسته زیر بیافتند:
- وابستگی داخلی: رابطه بین دو وظیفهای که در یک پروژه هستند.
- وابستگی خارجی: رابطه بین دو وظیفه که در دو پروژه مختلف هستند.
تا میتونید از ایجاد وابستگیهای خارجی جلوگیری کنید. هر چند در دنیای واقعی بسیار پیش میاد که یک وظیفه از پروژهتون با وظیفهای از پروژهی دیگه رابطه داشته باشه. نرمافزار مایکروسافت پراجکت (MSP) هم این امکان رو به شما میده که این رابطههای خارجی رو ایجاد کنید. شاید در یک نوشتهی دیگه روش کارش رو توضیح دادم ولی همونطور که گفتم، تا میشه، اینکار رو انجام ندید. دلایل خوبی برای بروز مشکل وجود داره که از حوصله این نوشته خارجه. پیشنهاد میکنم اگه کاری به بیرون از محدودهی پروژه ارتباط داره، مثلن نیاز به تموم شدن کاری در پروژه دیگه یا تایید شدن توسط فردی در بیرون از تیم پروژه هست، وظیفهی پروژه خودتون رو با تنظیم محدودیت (Constraint) در زمان مناسب پین کنید و در صورتیکه پایانِ کارِ پیشنیاز تغییر کرد، زمان شروع وظیفهی خودتون رو بروز کنید. تلاش بیشتری برای پایش و اصلاح زمانبندی لازمه ولی به دردسر استفاده از وابستگی خارجی میارزه :)