در این مستند قصد بر آن است تا الگوها و پادالگوها در مهندسی نرم افزار و آموزش جاوا شرح داده شود. پیش از هر چیز نیاز داریم بدانیم الگو و پادالگو چیست؟
الگو
الگو راه حلی است تکرارشونده برای یک مسئله در حوزه های خاص، که در عمل موفق بوده است. الگو یک سه تایی متشکل از «مسئله – راه حل – حوزه» است. الگوها برای استفاده مجدد در مهندسی نرم افزار، از سیستمهای موجود کشف می شوند.
پادالگو
پادالگو راه حلی است تکرارشونده برای یک مسئله در حوزه های خاص، که در عمل موفق نبوده است. پادالگوها در مهندسی نرم افزار برای تکرار نکردن اشتباهات گذشتگان کشف می شوند. اگر یک الگو در حوزه مورد نظر اعمال نشود ممکن است به پادالگو تبدیل شود.
هر الگو برای یک حوزه (Context) خاص کاربرد دارد. منظور از حوزه دو مورد زیر است:
1- یک سیستم و یا مجموعه سیستمها، مثلاً سیستمهای داده محور مبتنی بر وب، یا سیستمهای خبره
2- یک فاز از فرایند ایجاد نرم افزار مانند تحلیل، طراحی، برنامه نویسی، معماری نرم افزار و … . به عنوان مثال الگو برای طراحی وجود دارد و الگو برای معماری نیز وجود دارد و نمیتوان الگوهای طراحی را برای معماری به کار برد چون حوزه آنها طراحی است و ممکن است در معماری به پادالگو تبدیل شوند.
رخ دادن پادالگوها یا ناشی از عدم آگاهی است و یا در اثر به کار بردن یک الگوی مناسب در محیطی اشتباه.
چرا الگوها و پادالگوها را مطالعه کنیم؟
در زمانهای دور که اولین نرم افزارها نوشته می شد افراد همه چیز را از صفر (From Scratch) می ساختند، چون تجارب نرم افزاری وجود نداشت و مجبور بودند ایده های جدید برای ایجاد نرم افزار تولید کنند. پس از چند سال از قوت گرفتن شرکت های نرم افزاری در اواخر دهه 1980 کم کم مهندسین نرم افزار به این فکر افتادند که به جای «اختراع دوباره چرخ[1]»، از تجارب قبلی خود استفاده کنند.
همانگونه که در برنامه نویسی کتابخانه هایی از کلاسها، ماژولها و مؤلفه ها ایجاد شدند تا چرخ دوباره اختراع نشود، الگوها نیز از دل تجارب قبلی بیرون کشیده شدند تا همانند «کتابخانه ای از تجارب مفید» در دسترس همگان باشند و افراد آنها را نخواهند دوباره آنها را کشف کنند. پادالگوها نیز مانند «کتابخانه ای از تجارب غیرمفید» ثبت می شوند تا همه بدانند که نباید این تجارب را دوباره تکرار کنند.
امروزه در اکثر دانشگاههای مطرح دنیا، الگوهای طراحی را در درس برنامه نویسی پیشرفته میگویند تا ذهنیت الگو را در برنامه نویسی از همان ترمهای ابتدایی دانشگاه جا بیاندازند. در بسیاری از دانشگاههای دنیا انواع الگوها در حوزه مهندسی نرم افزار تدریس میشوند تا دید الگوشناسی به افراد داده شود. پس از اینکه افراد این دید را پیدا کنند در برخورد با چند مسئله خاص در یک حوزه، سعی می کنند آنها را عمومی کنند[2] و به یک الگو تبدیل کنند.
آنچه در این مستند می یابید
در بخشهای مختلف این مستند، انواع الگوها و پادالگوهای فرایند، تحلیل، طراحی، اصلاح[3] کد، معماری و … شرح داده میشوند. در نسخه فعلی، الگوها و پادالگوهای «فرایند» ایجاد نرم افزار شرح داده شده اند. توجه داشته باشید که این مستند در حال تکمیل است.