آموخته‌های گریدی بوچ از سیستمهای نرم‌افزاری پیچیده

  • یوسف مهرداد

۱-اصول و مبانی هیچ گاه کهنه نمی‌شوند.
پروژه‌های بزرگ و طولانی می‌توانند ترسناک و حتی در شرایط بد شبیه به نزدیک شدن لحظه مرگ باشند- با برداشتن هر قدم، یک قدم به مرگ نزدیکتر می‌شوند. به گفته بوچ، پروژه‌های با بهره‌وری بالا هیچگاه چهار موضوع اصلی زیر را فراموش نمی‌کنند:
۱- ایجاد انتزاعهای (abstraction) دقیق و انعطاف‌پذیر
۲- جداسازی موضوعات مهم (separation of concerns)
۳- تخصیص توزیع‌شده و متعادل مسئولیت بین اجزاء
۴- تأکید بر سادگی

بوچ رمز ایجاد انتزاعهای مناسب را به کارگیری دیدگاه شیءگرا به جای دیدگاه مبتنی بر الگوریتم می‌داند. …
به گفته وی جداسازی موضوعات مهم به زبان ساده یعنی «هیچ کس ماشین ظرفشویی را در حمام نمی‌گذارد». مشخصات اجزای سیستم بستگی به نیازمندی‌ها دارد، اما «بهتر است اجزای مرتبط به شکل منطقی در کنار هم قرار گیرند و اجزا غیرمرتبط از هم جدا شوند»
توجه داشته باشید که مبانی طراحی، دوری از معماری بی‌قواره را نیز شامل می‌شود. هیچ کس خانه‌ای با چندین آشپزخانه و فقط یک اتاق خواب طراحی نمی‌کند.
اهمیت ساده نگهداشتن اجزای سیستم و رسیدن به سادگی را دست کم نگیرید. وی هشدار می‌دهد که «ایجاد و حفظ اجزای ساده نیاز به انرژی دارد»

۲-نیاز به ریتم (دوره منظم) انتشار دارید
هر پروژه نیاز به ضرب‌آهنگی شبیه به ضربان قلب دارد. وی می‌گوید:«ایجاد ریتم موجب افزایش ثبات و قابل پیش‌بینی بودن پروژه می‌شود». …

۳-تمرکز بر معماری قابل اجرایی که به مرور کامل می‌شود
… «واقعیت، کد برنامه است» اما «کد برنامه همه واقعیت نیست» [خیلی‌ها عقیده دارند که کدبرنامه تنها واقعیت پروژه است و می‌تواند جایگزین خیلی چیزها از جمله معماری، مستندات و … شود]

۴- ایجاد ساختارهای اجتماعی که با حفظ قابلیت پیش‌بینی، موجب افزایش نوآوری شوند
کارتیمی عنصر اصلی هر پروژه بزرگ نرم‌افزاری است…. کسب‌وکار نیاز به پیش‌بینی دارد (نرم‌افزار کی آماده تحویل می‌شود؟) و در کنار آن نیاز به نوآوری. ایجاد ساختارهای اجتماعی که هر دو هدف را محقق کند، کار ساده‌ای نیست، اما پروژه‌های مؤفق توانسته‌اند نقطه تعادل بین آن دو – پیش‌بینی و نوآوری- را پیدا کنند.
یکی از نقاط مورد بحث و مجادله در ساختارهای اجتماعی میزان مشارکت مدیران در فرایند ایجاد و توسعه نرم‌افزار است. گریدی بوچ اعتقاد دارد که با وجودی‌ که خطی بین مدیران و توسعه‌دهندگان وجود دارد، اما به عنوان مثال معمار بهتر است عضوی از تیم پیاده‌سازی تیم هم باشد. هر چند با مشارکت زیاد مدیران، امکان ایجاد اشکالاتی در روابط تیم وجود دارد، اما به یاد داشته باشید که بین «خط» و «دیوار» تفاوت وجود دارد-خط یا دیوار بین مدیران و اعضای تیم-….

۵- لذت ببرید
این توصیه، یک توصیه دوستانه ساده نیست. بوچ اعتقاد دارد که پروژه‌های مؤفق، نتیجه کارِ تیمی است که از کارش لذت می‌برد. «اکثر انسانها می‌خواهند کارهای زیبا و برازنده انجام دهند. اگر به این خواسته درونی آنها بی‌توجه باشید، در حقیقت شوق رشد و پیشرفت را از آنها گرفته‌اید»
مرجع:www.cio.com

گزیده
:

A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over, beginning with a working simple system.
John Gall

https://bibalan.com/?p=581
یوسف مهرداد

یوسف مهرداد


کانال تلگرام

نظرات (2)

wave
  • پویا

    ۲۱ آبان ۱۳۹۱ در ۰۰:۰۰

    عالی بود

    پاسخ
  • شهاب

    ۲۲ آبان ۱۳۹۱ در ۰۰:۰۰

    استاد خیلی جالب بود .

    من با گزینه ۴ خیلی حال می کنم .

    پاسخ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

برای خروج از جستجو کلید ESC را بفشارید