الگوها

یکی دیگر از نکات مثبت دیگر در الگوهای طراحی این است که آنها ماحصل تجربه‏اند و نه مباحث آکادمیک. به عبارت دیگر برای خلق یک الگو، لازم نیست شما در آزمایشگاههای مهندسی نرم‏افزار به دنبال کشف نمونه‏ای جدیدی از آن باشید، بلکه باید در حین تجربه و انجام کار، حواستان به گذشته‏تان باشد یا به آینده؛ و طرح این سئوال که آیا من درگذشته این مسئله را حل کرده‏ام؟ آیا مسئله‏ای که با آن روبرو هستم دیگر بار ممکن است تکرار شود؟( الگوهای طراحی، محاسن و معایب (Design Patterns Pros & Cons) )

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

ما در دنیایی از الگوهای زندگی می کنیم. از همان روزهای اول زندگی، الگوها را فرا می گیریم و بکار می بریم. ما از همان دوران کودکی، چیز هایی را که در اطرفم تکرار می شنوند می بینیم و آنها را تکرار می کنیم. حتی بطور غریزی در شرایط مشابه، عکس العمل های مشابهی از خود نشان می دهیم. پس مفهوم الگو، از اولین روزهای زندگی با ما بوده است و  با ما خواهد بود. اینها را نوشتم تا بگویم وقتی درباره الگوها صحبت می کنیم، درباره مفهوم جدیدی صحبت نمی کنیم. بحث اصلی من این است، که برای استفاده از الگوها در نرم افزار(در تمام چرخه حیات یک نرم افزار)، آیا فقط تجربه های که در این رشته دارم را می توانیم بصورت الگوهای در بیاوریم و ار آن استفاده کنیم. یا می توانیم از تمام تجربیاتی که در زندگی روزمره داریم یا حتی تجربیاتی که افراد دیگر در رشته های مختلف دارند استفاده کنیم و با تغییر در شیوه بیان، آنها را در فرمتی ارائه دهیم که بشود در چرخه تولید نرم افزار یا هر مسئله دیگری از آن استفاده کنیم. برای نمونه، یکی از قوانین شیمی که در کتاب دوره دبیرستان که حتما آنرا خواندید، به اینصورت بود: اگر بر یک تعادل پویا تغییری تحمیل شود، آن تعادل در جهتی جا به جا می شود، که تغییر تحمیل شده را تعدیل کند و یا آنرا به کمترین مقدار ممکن برساند. این فانون را من چند سال قبل، در کتاب شیمی حواندم، ولی آن را به عنوان الگوی در شرایط مشابه، برای خودم قرار دادم. و به اعتقادم این قانون می تواند در هر سازمانی و هر تیمی بکار گرفته شود. یا یک مثال دیگر، همه افرادیکه مثل خودم حتی آشنایی بسیار کمی با RUP، داشته باشند. حتما این اصل اساسی RUP، را شنیده اند، اگر به مشکلات حمله نکنید، آنها به شما حمله خواهند کرد. دوباره جمله بسیار زیبایی است، که حتما باید بکار گرفته شود. اما می گویند شرکت رشنال برای استخراج این اصول و سایر خروجیهای RUP، هزاران پروژه را مورد ارزیابی قرار دادند. ولی به نظر من بعضی از این اصول مثل اصل بالا، از زمانهای دور وجود داشته ولی چون بطور شفاهی بیان شده است و یا به دلایلی دیگر، مورد توجه قرار نگرفته است. در پایین داستانی را از کتاب قصه هایی یرای پدران، فرزندان، نوه ها، می آورم که به قول گردآورنده این مجموعه، آقای پائولو کوئلیو، حتی منشا و خالق این داستان ها نیز معلوم نیست، که دقیقا همان اصل، RUP را بیان می کند اما به شیوه ای جذابتر(توصیه می کنم حتما بخوانید و مقایسه کنید):

استاد بزرگ و نگهبان، مراقبت از یک صومعه ذن را بین خود تقسیم کردند. یک روز، تکهبان در گذشت  و باید کس دیگری را جایگزین او می کردند.

استاد بزرگ همه ی شاگردها را جمع کرد تا مشخص کند افتخار کار در کنار او، نصیب کدام یکی از آن ها خواهد شد.

استاد بزرگ گفت: مساله ای را مطرح می کنم. کسی که اول این مساله را حل کند، نگهبان جدید معبد خواهد بود.

بعد نیمکتی در وسط تالار گذاشت. روی نیمکت، گلدان سفالی گران بهایی گذاشت که گل سرخی در آن قرار داشت.

استاد گفت: مساله این است.

شاگردها، حیران، به گلدان نگاه کردند: به طرح های پیچیده و نادر روی سفال، به تازگی و زیبایی گل. منظور چه بود؟ چه کار باید می کردند؟ معما چه بود؟

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

استاد گفت: تو نگهبان جدید مایی.

وقتی شاگرد به جای خودش برگشت، استاد بزرگ توضیح داد:

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

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

  1. فروزنده رسولی
    ۵ تیر ۱۳۸۶ در ۱۷:۳۵ | #1

    با سلام با تشکر از زحمات بی دریغ شما و جمعی از همکارانمان که حدود ۲ سال است با تکنولوژی شی گرایی آشنا شده ایم و پیوسته به دنبال منابع فارسی و دقیق می گشتیم تا اینکه با وبلاگ شما آشنا شدیم و آنچه را که می خواستیم همه را در اینجا پیدا کردیم . ضمن تشکر مجدد از شما و آرزوی سلامتی و موفقیت جنابعالی , خواهشمند است ما را در پیشرفت طراحی و برنامه نویسی جاوا راهنمایی فرمایید . با تشکر و امتنان

  1. بدون بازتاب