


بهکارگیری تفکر ناب در توسعه نرم افزار بخش اول
4 اردیبهشت 1399


بکارگیری کانبان برای احیای پروژههای در حال شکست بخش دوم
30 خرداد 1399در ادامه مقالهی «بهکارگیری تفکر ناب در توسعه نرمافزار» به بررسی اتلاف شناسایی شده در محیط توسعه نرمافزار میپردازیم. پیشنهاد میشود درصورتیکه هنوز بخش اول این مقاله را نخواندهاید مطالعه را از بخش اول آن شروع کنید.
هفت اتلاف در فناوری اطلاعات
شرایط محیطی میتوانند زمان راهاندازی را افزایش دهند. بهطور طبیعی تعویض وظیفهها دائما انجام نمیشود، بنابراین اغلب انواع دیگری از اتلاف عامل آن هستند.
هفت اتلاف شناسایی شده در یک محیط تولید عبارتند از:
- نقل و انتقال
- موجودی
- حرکت (جابهجایی)
- انتظار
- بیشتولید
- بیشفرایند
- نقصها
در حالیکه شاید برخی از این موارد در محیط توسعه واضح و روشن باشند، برای رسیدگی به برخی دیگر از آنها نیاز است تا نوع دیدگاه خود را تغییر دهید.
برای کمک به تغییر این دیدگاه، اجازه دهید، توضیح دهم که چگونه میتوان اتلافهای تولید را به یک کارخانه نرمافزاری تعبیر کرد.
اتلاف شماره 1: نقل و انتقال
نقل و انتقال احتمالاً دشوارترین اتلاف قابل شناسایی در محیط توسعه نرمافزار است. محصول نهایی در دپارتمان فناوری اطلاعات، یک کار مجازی است. تکهای از نرمافزار که روی برخی از سرورها استقرار دارد. پس چطور باید منتقل شود؟ آیا بر روی یک CD/DVD کپی میشود و برای مشتری ارسال میگردد؟ شاید، اما این آخرین گام در فرایند است و بیشتر اوقات، هیچ ارتباطی با خود دپارتمان فناوری اطلاعات ندارد. بنابراین چگونه میتوان وظیفهها یا رفع خطاها را در طی فرایند توسعه انتقال داد؟
به جای نقل و انتقال فیزیکی، فکر کنید که چگونه وظیفهها از یک توسعهدهنده به توسعهدهنده بعدی، از طراح به توسعهدهنده، از تحلیلگر به طراح و غیره میرسد. یک مثال کاربردی از اتلافِ نقل و انتقال وقتی است که یک توسعهدهنده وظیفهای را تمام کرده است و کد را به آزمونگر واگذار میکند. بیایید فرض کنیم آزمونگر به تازگی وظیفهای را تمام کرده است و فوراً میتواند این وظیفه جدید را بردارد. آزمونگر ابتدا باید وظیفه را بررسی کند تا بفهمد قرار است چه کاری را انجام دهد یا حل کند. سپس باید برنامه را شروع کرده و به مرحله مناسبی برساند تا آنچه را که برنامهنویسی شده است را آزمایش کند. مطمئنم که میتوانید تصور کنید که رسیدن به آن مرحله مدتی طول میکشد (و این احتمال را نادیده گرفتهام که این وظیفه نیاز به استقرار در محیط آزمون دارد).
واگذاری این زمان راهاندازی را برای آزمونگر بوجود میآورد. البته، مسائل بسیار دیگری نیز موجب زمان راهاندازی میشوند، اما این مثال موضوع را نشان میدهد. منبع دیگری از اتلاف نقل و انتقال وقتی است که وظیفهی مشخصی را واگذار میکنید، معمولاً نفر بعدی در زنجیرهی فرایند فورا روی آن کار نمیکند. همچنین نقل و انتقال تا اندازهای زمان انتظار اضافهای را ایجاد میکند که بعداً با جزییات در مورد آن بحث خواهیم کرد.
اتلاف شماره 2: موجودی
موجودی شکل دیگری از اتلاف نرمافزار است که ممکن است در ابتدا آشکار نباشد. موضوع نرمافزار است! آن را در انبار انباشته نمیکنید که منجر به موجودی بیش از حد شود، درسته؟ در عمل، به نوعی این کار را انجام میدهید – اما آن را بکلاگ مینامید. هر قدر موارد بیشتری در انتظار رسیدگی داشته باشید، انبار یا موجودی بیشتری را می سازید.
بکلاگ تنها نوع موجودی نیست که در محیط توسعه نرمافزار خود دارید. کار روی چه تعداد قلمهای فنی، درخواست نگهداری، درخواست ویژگی جدید را شروع کردهاید و مجبورشدهاید آنها را در وضعیت متوقفشده نگه دارید چرا که اولویت بالاتری دارید یا منتظر نصب بخش دیگری از نرمافزار هستید و یا باید منتظر پاسخ مشتری بمانید؟ شروع وظیفه و عدم اتمام بلافاصله آن به هر دلیلی، منجر به افزایش موجودی میشود -شش اتلاف دیگر نیز میتوانند باعث بروز این اتفاق شوند.
اتلاف شماره 3: حرکت
حرکت و نقل و انتقال دشوارترین اتلافهایی هستند که میتوان در ابتدا کشف کرد. شما واقعا نیاز دارید در مورد وظیفهها و فرایندها متمایز فکر کنید. وقتی در مورد حرکت در محیط نرمافزاری صحبت میکنید، ناخودآگاه به این میاندیشید که چگونه یک وظیفه که قلمی مجازی است درعمل میتواند حرکت کند. اما این یک دیدگاه اشتباه است.
موضوع حرکت صرفا پیرامون حرکت فیزیکی است: افراد یا اشیائی که متحرک هستند. وقتی آنها در حال حرکت هستند زمان آنها صرف افزودن ارزش نمیشود. با این حال، هر حرکتی را نمیتوان اتلاف در نظر گرفت. در تولید، حرکت را میتوان به راحتی از جابهجایی افرادی که باید مواد را از مکانهای مختلف دریافت کنند، یا جابهجایی محصول به انبار یا حتی مشتری، شناسایی کرد. جابهجایی منطقی است و درک آن در این نوع محیط آسان است.
اما در یک محیط نرمافزاری چه طور؟ یکی از اتلافهای حرکت که ممکن است اصلاً در نظر نگیرید، حرکتی است که کاربر نهایی باید برای کار با نرمافزار انجام دهد. ممکن است کاربران برای انجام یک وظیفه، مجبور به فشردن کلیدهای متعدد یا حرکت دادنهای ماوس باشند. به عنوان مثال، فکر کنید اگر در برنامه «Word» فقط از منوها استفاده کنید، چه کارهایی را باید برای کپی و جایگذاری بین دو سند انجام دهید. آیا این آیکونهای کوچک و یا کلیدهای میان بر را دوست ندارید؟
همچنین، افراد در تمام طول روز پشت میزهای خود نمینشینند (بعضی از شما ممکن است فکر کنید که بهخصوص در صنعت نرمافزار این موضوع متداول است). در واقع، افراد تیم زمان قابل توجهی را در دفتر جابجا میشوند. مثلا:
- دریافت و بروزرسانی وظیفهها روی تابلوی اسکرام
- جلسههای اجتنابناپذیر
- گفتگو با سایر توسعه دهندهها/ آزمونگرها/ مدیران
- …
ممکن است از مسافتی که اعضای تیمتان روزانه میپیمایند تعجب کنید. چگونه اتلاف حرکت را تا حد امکان از بین میبرید؟ خب، احتمالاً بهطور غریزی این موضوع را میدانید که استقرار افرادی که در یک اتاق بر روی پروژه یکسانی کار میکنند در مقایسه با وقتی که با یک دیوار، طبقه یا ساختمان از هم جدا هستند، کارآمدتر است. چرا اینطور است؟ یک دلیل ساده این است که ارتباطات نقش مهمی در بهینهسازی عملکرد دارد و با کانالهای ارتباطی کوتاهتر، ارتباطات را طبیعیتر، مستقیمتر و فوریتر پیش میبرد.
– انتظار: آنچه که ما را خود به خود به اتلاف بعدی میرساند.
اتلاف شماره 4: انتظار
اگر کار در جریان[1] برای رفتن به گام بعدی در فرایند در انتظار باشد، پس بهطور موثر مدیریت نشده است. وظیفههایی که در انتظار به سرمیبرند، زمان «فاقد ارزش افزوده» (NVA)[2] را در فرایندتان انباشته میکنند که نه تنها تحویل آن قلم بلکه سایر قلمها را نیز به تأخیر میاندازند، زیرا سرانجام این وظیفه باید دوباره برداشته شود.
بهترین شکل توصیف زمان NVA عبارت است از مدت زمان صرف شده بر روی وظیفهای که مشتری مایل به پرداخت هزینهای بابت آن نیست. رفع خطاها، مراحل کنترل کیفیت (مانند آزمون) و غیره نمونههایی از آن هستند. بخشی از این زمان NVA باید کلا حذف شود، اما بخشی از آن را میتوان به عنوان زمان «ارزش افزوده تجاری» (BVA) [3] دستهبندی کرد، به معنای مدت زمانی که مشتری مایل به پرداخت هزینه بابت آن نیست اما برای حفظ سیستم جاری در یک سطح کیفی مشخص ضروری است. نمونههای آن در توسعه نرم افزار ایجاد یادداشتهای انتشار، نگهداری از سیستم مدیریت وظیفهها، پیادهسازی تغییرات در سراسر شرکت برای ایجاد خدمت بهتر و غیره، هستند.
[1] Work In Progress (WIP)
[2] Non-Value Added
[3] Business Value Added
بخش پایانی این مقاله را می توانید در پست بعدی مطالعه کنید.
مترجم: علی مفخر
ویراستار: مهدیه قدسینژاد



2 دیدگاه
مرسی از لطفتون
منتظر بخش پایانی هستم، چون داخل سایت پیداش نکردم.
ممنون
با عرض سلام و تشکر از نظر شما همراه گرامی
بخش پایانی این مقاله سهشنبه هفته آینده بر روی سایت قرار میگیرد.