کانال تلگرام

پیچیدگی دشمن مهندسی نرم افزار است

تاریخ : ۲۶ مهر ۱۳۹۸
نویسنده : آروین سعادت نیا
دسته بندی ها : برنامه نویسی

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

complexity

البته در حال حاضر این مشتری برای پروژه خود از یکی از شرکت‌های مشاور عالی استفاده می‌کند. متخصصین این شرکت در برنامه نویسی جفتی بسیار مهارت دارند. بدیهی است که نمی توانم نام آنها را در این مقاله بیاورم، اما در همان زمان که تازه می خواستم کار را شروع کنم نکات منفی بسیاری برایم پدیدار شد.

مدیر پروژه در همان ابتدا شروع به توزیع همه‌چیز کرد، او از عالی بودن پروژه و استفاده از تکنولوژی های قوی در آن گفت. در نهایت هم به من گفت که این کار یکی از پیچیده ترین کارهایی است که تا به حال روی آن کار کرده است. این موضوع اولین نکته منفی بود.

برخی از مردم عادت های بدی دارند و فکر می کنند هرچه یک پروژه پیچیده تر باشد، بهتر است. آیا هرچه پیچیدگی رشد کند، کیفیت هم بیشتر می شود؟ البته که نه. حقیقت دقیقاً عکس این مورد است. به همان میزانی که پیچیدگی افزایش می یابد، کیفیت پروژه نیز پایین می‌آید. واقعیت امر این است که پیچیدگی دشمن پروژه های موفق نرم‌افزاری است.

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

اما هر چه می گذرد قابلیت های بیشتری به پروژه شما اضافه می شود، در نهایت پیچیدگی های نرم افزار شما هم رشد می کنند. نرم افزاری که در همان ابتدا تنها دارای چند عمل اصلی ساده بود، اکنون بسیار پیچیده شده است. این پیچیدگی به خصوص اگر به اقدامات و اتفاقاتی که رخ می‌دهد، توجه چندانی نداشته باشید بیش از  پیش جلوه میکند.

دلیل این همه پیچیدگی نداشتن یک الگوی نرم افزاری مناسب است. نداشتن یک الگو و یا پیروی از الگوی نامناسب فقط بر پیچیدگی ها می افزاید. باید از الگویی پیروی کنیم که نرم افزار ما را ماندگار و قابل توسعه می‌کند. چرا می‌خواهیم کاری که می توان به سادگی انجام داد را پیچیده کنیم؟

یکی از الگوهای مناسب برای توسعه یک نرم افزار Domain-Driven Design است که البته شرح آن در این مقاله نمی گنجد، اما به زبان ساده می‌توان گفت این الگوی نرم افزاری بر پایه پیغام های ورودی و خروجی استوار است. دو نوع پیغام وجود دارد که برای این نوع سیستم ها بسیار مهم هستند، اولی همان command ها یا دستورات هستند و دومی رویدادها.

به خاطر سپردن اینها در ذهن به ما این امکان را می‌دهد که از الگوی به نام servicebus استفاده کنیم. از این الگو به عنوان پایه و اساس یک event-emitter برای کل سیستم استفاده می‌شود. روش‌های مختلفی برای استفاده از این الگو وجود دارند که البته هر کدام دارای مزایا و معایبی است.

پیچیدگی ها تلاش شما را برای ساده نگه داشتن به شکست می کشاند

بسیاری از الگوهای نرم افزاری هنگامی که توسط خودشان ارائه می شوند، بسیار ساده هستند(اگر پیچیده به نظر برسند) در حالی که وقتی شما با یک الگوی نرم افزاری آشنا نباشید، منحنی یادگیری شما می تواند سخت باشد. در طول زمان شما سرویس هایی را توسعه می‌دهید که هر کدام می توانند شامل صدها خط باشند.

در این حالت بهتر است از الگوهای نرم افزاری استفاده کنید. اگرچه استفاده از الگوها می‌تواند کدنویسی شما را تا حدودی زیاد کند، اما منافع زیادی برای شما به ارمغان خواهد گذاشت، نتیجه این می‌شود که هر مهندس در تیم شما می تواند کدتان را بررسی کرده و آن را کاملا درک کند. این موضوع حتی قابلیت استفاده مجدد از ایده‌های شما را نیز تقویت می کند. بنابراین چه چیزی کلید داشتن نرم افزاری ماندگار و قابل نگهداری است؟ با پیچیدگی ها بجنگید به هر قیمتی.

#پیچیدگی #مهندسی_نرم_افزار
۰ نظر

مقالات پیشنهادی

مشاهده همه مقالات
ثبت دیدگاه

برای ارسال دیدگاه لازم است ابتدا وارد سایت شوید