اصل YAGNI در طراحی نرم افزاری

قطعا برای هر توسعه دهنده ای پیش می آید که بعد از مدتی کد نویسی در یک پروژه خاص ویژگی های موجود در محصول با خواست های کارفرما متفاوت می باشد. دلایل بسیاری برای این رخداد نه چندان دلچسب بیان شده است.
شاید در نگاه اول بگویید که کم کاری تیم توسعه و فرار از مسئولیت ها و خواسته ها موجب این این اتفاق گردیده است. اما همیشه و در بیشتر مواقع این طور نیست. در بسیاری از موارد تمرکز تیم توسعه و برنامه نویسان روی قسمت هایی از محصول متمرکز می گردد که در حال حاضر نیازی به آن نیست. در ادامه در مورد اصل YAGNI صحبت می کنیم که مفهومی در رابطه همین اتفاق می باشد.
YAGNIیک اصل توسعه نرمافزار است که به معنی “تنها آنچه که نیاز دارید بسازید” است. یکی از اصول بسیار کاربردی در پروژه های چابک همین اصل است. اولویت بندی رکن اساسی در مدیریت پروژه های چابک می باشد. از این رو برنامه نویسان نیز باید تنها آن قسمت از نرم افزار را بنویسند که در حال حاضر به آن نیاز واقعی وجود دارند. در واقع می بایست روی حداقل نیاز ها تمرکز کرد و از ایجاد پیچیدگی زیاد در سیستم خودداری نمود.
مزایای پیروی از اصل YAGNI
از جمله فواید این اصل می توان به جلوگیری از هدر رفت منابع از جمله زمان و هزینه کمک نمود. چرا که برآوردن نیاز هایی که در حال حاضر مورد تقاضا نمی باشند چیزی جز هدر رفت هزینه در پی نخواهد داشت.
شاید در ذهن شما این سوال پیش بیاید که داشتن یک سامانه یا نرم افزار که قابلیت های بیشتری دارد چگونه می تواند مضر باشد؟
جواب این سوال بسیار ساده است. هر سامانه تولید شده برآیند خواسته های یک سازمان و یا کسب و کار است که بعد از مدل سازی تبدیل به سیستم می گردد. حال توقعی که از سیستم به عمل می آید این است که تا جای ممکن نیاز ها و خواسته های سازمان را برآورده سازد. این اصل بر این باور است نیاز هایی که برای آینده به ذهن توسعه دهندگان می آید حتی نمی تواند نیاز آینده را مرتفع کند چراکه با گذشت زمان و پیشرفت نیاز های پروژه های چابک تغییر می کند.
جلوگیری از پیچیدگی و ساده سازی سیستم از جمله مزایای پیروی از این اصل می باشد. همواره پروژه های چابک دارای قسمت هایی هستند که با منطق کسب و کاری پیچیده روبرو می گردند. حال افزودن پیچیدگی بیشتر در سیستم می تواند روند پیشرفت کار را فلج نماید و بهره وری و برآوردن نیاز های سازمانی را به حداقل برساند.
انعطاف در مقابل تغییرات چابک پروژه ها با داشتن کد ساده تر و مینیمال بهتر محقق می گردد. پیاده سازی تغییرات جدید از جمله چالش های مهم پروژه های چابک می باشد. که پیروی از اصل YAGNI می تواند تا حدودی این امر را محقق گرداند.
حدود پایبندی به YAGNI
از آنجاکه انجام اصول مختلف بایست به اندازه و به جا صورت پذیرد این اصل نیز از این قاعده مستثنا نمی باشد. پایبندی زیاد و افراط گونه به این اصل نیز می تواند کیفیت و پیشرفت را از بین ببرد. چراکه این امر موجب فرار از وظایف و صرف توان برای پروژه می باشد. از طرفی پایبندی افراطی می تواند برای برآورده سازی اولویت های بعدی بک لاگ چالش ایجاد کند. از اینرو همواره باید حد عدالت در اجرای این اصل نگه اشت.
مثالی در مورد پیروی از اصل YAGNI
برای مثال فرآیند درج و نمایش محصول برای فروش را در نظر بگیرید. فیلدهای مربوط به محصول شامل : عنوان، عکس، قیمت، دستبه بندی، موجودی می باشد. در حال حاضرامکان سبد خرید در صفحه سایت از تیم توسعه خواسته شده است. پیاده سازی این قسمت از پروژه برای تیم می تواند ساده باشد تا آنجا که در نهایت منجر به فروش محصول گردد.
چنانچه تیم توسعه در حال کار، به فکر بیفتد که با اضافه کردن چند فیلد در موجودیت ها می تواند در آینده، فرآیند اجاره دادن محصول را پیاده سازی کند، با اضافه کردن فیلدها و اینترفیس های اضافی در سیستم تنها پیچیدگی را افزایش داده و برای چیزی که وجود ندارد تولید کد اضافی نموده است.
و یا درنظر بگیرید که در ابتدا می توان با نمایش چند فیلد کمتر در صفحه محصول ابتدا حالت ساده تری از فرآیند خرید را پیاده سازی نمود و در ادامه فیلدهای بیشتر که مورد نیاز هستند کم کم به سامانه اضافه گردند.
خلاصه و نتیجه گیری
طراحی نرم افزار همانند هر محصولی اصولی دارد که پیروی از این اصول می تواند در هزینه و زمان صرفه جویی کند. اصل YAGNI بر این باور است که هر چیز اضافه ای که نیاز سیستم نیست را نباید داخل سیستم اضافه کرد و از پیچیده کردن فرآیند ها اجتناب ورزید.
- منبع: vahidnazari.ir
- نویسنده: وحید نظری
برچسب ها: