IranIT.info Articles
عنوان الگوهاي طراحي، قسمت اول : پيش‌گفتار
نويسندهحسن ابوالحسنى تاريخ ارسال 20/04/1381 نام قسمت فناورى
پيش‌گفتار مترجم
مقاله حاضر و مقالاتي که در ادامه آن ارائه خواهند شد، ترجمه کتاب
Design Patterns: Elements of reuseable software components
است، که مرجع اساسي و اوليه براي مبحث الگوهاي طراحي در نرم افزار است.
امروزه در مهندسي نرم افزار بحث الگوها بسيار متداول است. علت اساسي هم تاثير عميقي است که اين مبحث در ايجاد سيستم هاي نرم افزاري با معماريهايي که کيفيت محصول نرم افزاري را بالا برده و امکان استفاده مجدد چنين الگوهايي را فراهم مي‌سازد، مي‌باشد.
در اين کتاب تعدادي از الگوهايي که امروزه بصورت متداول در طراحي نرم افزارها استفاده مي‌گردد، ارائه شده است. پس از انتشار اين کتاب الگوهاي ديگري معرفي گشته و برخي از آنها نيز امروزه بصورت متداول مورد استفاده قرار مي‌گيرند. به هر حال چون اين کتاب مرجع معرفي کننده الگوهاست مطالعه آن براي هر مهندس نرم افزار ضروري است.
هدف اين است که ترجمه اين کتاب را بصورت سلسله‌وار تحت مقالاتي در سايت IranIt.Info ارائه کرده تا براحتي در دسترس علاقه مندان قرار بگيرد.

پيش‌گفتار

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

گريدي بوچ
دانشمند ارشد
شرکت راشنال

راهنمايي به خوانندگان
اين کتاب داراي دو بخش اصلي است. اولين قسمت (فصول يک و دو) شرح مي دهند که الگوهاي طراحي چه بوده و چگونه در طراحي نرم افزارهاي شيء گرا به شما کمک مي‌کنند. يک نمونه آورده شده که نشان مي‌دهد چگونه اين الگوها در عمل بکار مي روند. بخش دوم کتاب (فصول 3، 4 و 5) حاوي کاتالوگي از الگوهاي طراحي واقعي است.
کاتالوگ بخش عمده کتاب را تشکيل مي دهد. فصول آن الگوهاي طراحي را به سه نوع تقسيم مي نمايد: آفرينشي ، ساختاري و رفتاري . اين کاتالوگ را به روشهاي متفاوتي مي توان مورد استفاده قرار داد. مي شود آنرا از ابتدا تا انتها خواند يا برحسب نياز از الگويي به الگوي ديگري پرش کرد. روش دوم کمک مي کند تا تفاوت الگوهاي مشابه را درک کرد.
مي توان از ارجاعات بين الگوها بعنوان يک مسير منطقي در کاتالوگ استفاده کرد. اين مشي درک بهتري از اينکه چگونه الگوها به هم مربوط هستند، چگونه مي توانند با ديگر الگوها ترکيب شوند، و چه الگوهايي بهتر با هم ديگر کار مي کنند را ايجاد خواهد کرد. شکل 1.1 (صفحه 12) اين ارجاعات را بصورت گرافيکي نشان مي دهد.
روشي ديگر براي خواندن کاتالوگ اتخاذ يک مشي مساله گرا مي باشد. به بخش 1.6 (صفحه 24) برويد تا بعضي از مسايل متداول در طراحي نرم افزارهاي شيء گرا را خوانده، سپس الگوهايي را بخوانيد که به اين مسايل جوابگو هستند. برخي ممکن است تصميم بگيرند تا يکبار کاتالوگ را خوانده و آنگاه يک مشي مساله‌گرا براي اعمال اين الگوها در پروژه هايشان استفاده نمايند.
اگر يک طراح شيء گراي با تجربه نيستيد بهتر است با ساده ترين و متداول ترين الگوها به قرار زير شروع کنيد:
Abstract Factory (صفحه 87)
Factory Method (107)
Observer (293)
Adapter (139)
Strategy (315)
Composite (163)
Template method (325)
Decorator (175)
پيدا کردن سيستم شيء گرايي که از تعدادي از اين الگوها استفاده نکند، مشکل است. سيستمهاي بزرگ تقريبا از همه اين الگوها استفاده مي کنند. اين زير مجموعه در فهم الگوها به طور مشخص و طراحي شيء گراي خوب بطور عام کمک مي کنند.
قسمت بعدي : شروع فصل اول