Mehdi.A
عضو جدید
منابع:
مقدمه ای بر الگوهای نرم افزاری
""الگوهای نرم افزاری (Software Pattern) راه حلهای قابل تکراری اند برای مشکلاتی که به کرات در جریان ساخت و توسعه نرم افزارها با آنها مواجه می شویم. با توجه به اینکه مطلب [کتاب] حاظر سراسر پیرامون الگوهای نرم افزاریست، بطور خلاصه با نام الگو بدانها اشاره خواهد شد.
چه چیزی باعث می شود تا یک نفر را باهوش بدانیم؟ برنامه نویسان با تجربه خیلی بیشتر از یک فرد باهوش اند، اما برنامه نویسان بی تجربه چطور؟ تجربه برای برنامه نویسان، خردمندی را به همراه می آورد. برنامه نویسان رفته رفته با کسب تجربه، با مشکلات جدیدی مواجه می شوند که موارد مشابه آنها را قبلا حل کرده اند. همچنین با کسب تجربه بیشتر در می یابند که روش حل مشکلات مشابه از یک الگوی مشابه پیروی می کند. با آگاهی از این الگوها، برنامه نویسان با تجربه خیلی زود روش حل یک مشکل را تعیین نموده و دیگر منتظر تحلیل مشکل و یافتن راه حل آن نمی شوند.
هنگامی که برنامه نویسی یک الگو را کشف می کند، در واقع چیزی بیشتر از یک بینش (insight) نیست. در اکثر مواقع مسیری که یک ایده مطرح نشده تا یک ایده قابل قبول طی می کند، یعنی نقطه ای که برای همه برنامه نویسان قابل فهم باشد، مسیر پر فراز و نشیب و سختیست، اگرچه مرحله بسیار با ارزشی هم محسوب می شود. پس از آنکه درک ما از یک الگو به حد بیان و تعریف آن رسید، می توانیم خیلی هوشمندانه آن را با سایر الگوها ترکیب نماییم.
مهمتر اینکه، پس از تعریف یک الگو می توان آن را در جمعی از برنامه نویسان آشنا با الگوها به بحث گذاشت. چنین بحثهایی به برنامه نویسان اجازه می دهند تا ذکاوت و توانایی خود را در همکاری با یکدیگر مؤثرتر نمایند.
مزیت دیگر تعریف الگوها آن است که می توان آنها را به اطلاع برنامه نویسان کم تجربه تری که هنوز با آنها آشنایی ندارند رساند. با تعریف یک الگو، برنامه نویسان با تجربه تر می توانند آن را به سایر برنامه نویسان آموزش دهند... .""
برگرفته از کتاب:
Patterns in Java™ : Mark Grand : Wiley-dreamtech, Second Edition 2005
در حال حاضر تعداد زیادی الگو وجود دارد و دایما هم بر تعدادشان افزوده می شود. به دلیل تعدد الگوها، دسته بندیهایی بر آنها لحاظ شده که در اصطلاح به آنها کاتالوگ (Catalog) گفته می شود. معمولا الگوهایی که بر یک موضوع مشترک دلالت دارند را در یک کاتالوگ قرار می دهند. به عنوان مثال کاتالوگ Creational حاوی الگوهای Factory Method، Abstract Factory، Builder و... است که همگی در امر ساخت به کار گرفته می شوند.
در ادامه لیستی از کاتالوگهای موجود آورده شده است (لیست مذکور مبتنی بر فهرست کتابیست که پیش از این معرفی شد).
توضیحات الگوها
معمولا در تشریح الگوها از روشهای متفاوتی استفاده می شود که همگی حاوی اطلاعات زیر می باشند.
• یک نام جهت اشاره به الگو. البته برخی الگوها بیش از یک نام دارند.
• تشریح یک مشکل که شامل یک مثال قابل درک و ارایه یک راه حل مخصوص برای آن می باشد.
• توضیحات و نکاتی پیرامون جامعیت یک راه حل و یا خودداری از آن.
• یک راه حل عام.
• تبعات (خوب و بد) استفاده از راه حل ارایه شده در حل مشکلات.
• لیستی از الگوهای مرتبط.
Design Patterns Explained, A New Perspective on Object Oriented Design : Alan Shalloway, James R.Trott
Analysis Patterns, Reusable Object Models : Martin Fowler
Analysis Patterns, Reusable Object Models : Martin Fowler
مقدمه ای بر الگوهای نرم افزاری
""الگوهای نرم افزاری (Software Pattern) راه حلهای قابل تکراری اند برای مشکلاتی که به کرات در جریان ساخت و توسعه نرم افزارها با آنها مواجه می شویم. با توجه به اینکه مطلب [کتاب] حاظر سراسر پیرامون الگوهای نرم افزاریست، بطور خلاصه با نام الگو بدانها اشاره خواهد شد.
چه چیزی باعث می شود تا یک نفر را باهوش بدانیم؟ برنامه نویسان با تجربه خیلی بیشتر از یک فرد باهوش اند، اما برنامه نویسان بی تجربه چطور؟ تجربه برای برنامه نویسان، خردمندی را به همراه می آورد. برنامه نویسان رفته رفته با کسب تجربه، با مشکلات جدیدی مواجه می شوند که موارد مشابه آنها را قبلا حل کرده اند. همچنین با کسب تجربه بیشتر در می یابند که روش حل مشکلات مشابه از یک الگوی مشابه پیروی می کند. با آگاهی از این الگوها، برنامه نویسان با تجربه خیلی زود روش حل یک مشکل را تعیین نموده و دیگر منتظر تحلیل مشکل و یافتن راه حل آن نمی شوند.
هنگامی که برنامه نویسی یک الگو را کشف می کند، در واقع چیزی بیشتر از یک بینش (insight) نیست. در اکثر مواقع مسیری که یک ایده مطرح نشده تا یک ایده قابل قبول طی می کند، یعنی نقطه ای که برای همه برنامه نویسان قابل فهم باشد، مسیر پر فراز و نشیب و سختیست، اگرچه مرحله بسیار با ارزشی هم محسوب می شود. پس از آنکه درک ما از یک الگو به حد بیان و تعریف آن رسید، می توانیم خیلی هوشمندانه آن را با سایر الگوها ترکیب نماییم.
مهمتر اینکه، پس از تعریف یک الگو می توان آن را در جمعی از برنامه نویسان آشنا با الگوها به بحث گذاشت. چنین بحثهایی به برنامه نویسان اجازه می دهند تا ذکاوت و توانایی خود را در همکاری با یکدیگر مؤثرتر نمایند.
مزیت دیگر تعریف الگوها آن است که می توان آنها را به اطلاع برنامه نویسان کم تجربه تری که هنوز با آنها آشنایی ندارند رساند. با تعریف یک الگو، برنامه نویسان با تجربه تر می توانند آن را به سایر برنامه نویسان آموزش دهند... .""
برگرفته از کتاب:
Patterns in Java™ : Mark Grand : Wiley-dreamtech, Second Edition 2005
در حال حاضر تعداد زیادی الگو وجود دارد و دایما هم بر تعدادشان افزوده می شود. به دلیل تعدد الگوها، دسته بندیهایی بر آنها لحاظ شده که در اصطلاح به آنها کاتالوگ (Catalog) گفته می شود. معمولا الگوهایی که بر یک موضوع مشترک دلالت دارند را در یک کاتالوگ قرار می دهند. به عنوان مثال کاتالوگ Creational حاوی الگوهای Factory Method، Abstract Factory، Builder و... است که همگی در امر ساخت به کار گرفته می شوند.
در ادامه لیستی از کاتالوگهای موجود آورده شده است (لیست مذکور مبتنی بر فهرست کتابیست که پیش از این معرفی شد).
Fundamental
Creational
Partitioning
Structural
Behavioral
Concurrency
GRASP
GUI
Organizational Coding
Coding Optimization
Code Robustness
Testing
(Enterprise Patterns)
Transaction
Distributed Architecture
Destributed Computing
Concurrency
Temporal
Database
Creational
Partitioning
Structural
Behavioral
Concurrency
GRASP
GUI
Organizational Coding
Coding Optimization
Code Robustness
Testing
(Enterprise Patterns)
Transaction
Distributed Architecture
Destributed Computing
Concurrency
Temporal
Database
توضیحات الگوها
معمولا در تشریح الگوها از روشهای متفاوتی استفاده می شود که همگی حاوی اطلاعات زیر می باشند.
• یک نام جهت اشاره به الگو. البته برخی الگوها بیش از یک نام دارند.
• تشریح یک مشکل که شامل یک مثال قابل درک و ارایه یک راه حل مخصوص برای آن می باشد.
• توضیحات و نکاتی پیرامون جامعیت یک راه حل و یا خودداری از آن.
• یک راه حل عام.
• تبعات (خوب و بد) استفاده از راه حل ارایه شده در حل مشکلات.
• لیستی از الگوهای مرتبط.