در این دوره، مهمترین و اساسیترین الگوهای طراحی در مهندسی نرمافزار مدرن در اکوسیستم جاوا را به طور کامل فرا خواهید گرفت.
آشنایی اولیه با زبان برنامهنویسی جاوا ضروری است. در صورت نیاز، یک دوره یادآوری مفاهیم OOP نیز در دسترس است.
همه ما میخواهیم توسعهدهندگان نرمافزار بهتری شویم و بتوانیم خود را "مهندس نرمافزار" یا "معمار نرمافزار" بنامیم، اما برای رسیدن به این هدف، ابتدا باید بر تعدادی از الگوهای طراحی مسلط شویم.
این دوره شما را در مسیر رسیدن به این هدف قرار میدهد.
ما به شما آموزش خواهیم داد که چگونه از الگوهای طراحی خاص برای ساخت سیستمهای پیچیده به روش تقسیم و حل (divide-and-conquer) استفاده کنید تا پیچیدگی کاهش یابد و انتزاع شود.
اما به جای یادگیری تمام الگوهای طراحی موجود، ما مهمترین و اساسیترین الگوهای طراحی GoF را برای شما انتخاب کردهایم.
همه اینها در بستر زبان برنامهنویسی جاوا ارائه میشوند.
ما با درک کامل اصول طراحی S.O.L.I.D و ارتباط آنها با الگوهای طراحی شروع میکنیم. همه چیز را در قالب مشکلات دنیای واقعی و مثالهای کدنویسی خاص توضیح میدهیم.
در پایان دوره، شما یک راه حل را با کدنویسی شبیهسازی بازی زندگی جان کانوی، که روی انواع دستگاهها اجرا میشود، معماری خواهید کرد.
این مشکلات به نوبه خود باعث ایجاد مشکل در نگهداری و انعطافپذیری کلی برای افزودن ویژگیهای جدید میشود. به طور کلی، این به معنای سیستمهای بد طراحی شدهای است که نگهداری از آنها دشوار است و سازگار نیستند.
یکی از پاسخها به تمام مشکلات فوق، داشتن یک طراحی و معماری مناسب است. به ساخت یک آسمانخراش فکر کنید. همیشه یک نقشه کلی وجود دارد. این نقشه برای نشان دادن به همه افراد درگیر (از معماران گرفته تا زنجیره تامین، کارگران ساختمانی، زمانبندی ماشینآلات و غیره) استفاده میشود که روی چه چیزی کار میشود.
همه یک دیدگاه را درک میکنند و از آن پیروی میکنند.
یک نقشه دارای تعدادی عناصر معمول است که در بسیاری از پروژهها تکرار میشوند. به عنوان مثال، همه ساختمانها به سیمکشی برق و لولهکشی نیاز دارند، ممکن است به آسانسور، سیستمهای خنککننده و پارکینگهای زیرزمینی و البته پلهها نیاز داشته باشند. آنها همچنین معمولاً به شبکه برق و تامین آب و همچنین جادهها متصل میشوند.
همه این عناصر مشترک از استانداردهای خاصی پیروی میکنند که در طول سالهای متمادی و در پروژههای بسیار بهبود یافتهاند. آنها به خوبی درک شدهاند و تقریباً مانند دستور العملها میتوانند مورد استفاده قرار گیرند.
در مهندسی نرمافزار نیز مجموعهای از عناصری داریم که در بسیاری از پروژهها تکرار میشوند. به عنوان مثال، همه برنامههای نرمافزاری نیاز به ایجاد اشیاء دارند، آنها باید تغییر وضعیت را در سراسر آن اشیاء منتقل کنند، آنها باید بتوانند بر روی مجموعههایی از آن اشیاء حرکت کنند. به عبارت دیگر، اگر میخواهید توسعهدهنده بهتری باشید، باید در آن عناصری که در طول زمان آزمایش شدهاند، ماهر شوید. در دنیای مهندسی نرمافزار این عناصر به عنوان "الگوهای طراحی" شناخته میشوند.
این دوره به دانشجویان آموزش میدهد که چگونه از الگوهای طراحی خاص برای ساخت سیستمهای پیچیده به روش تقسیم و حل (divide-and-conquer) استفاده کنند تا پیچیدگی کاهش یابد و انتزاع شود.
این به شما کمک میکند تا پروژهها را به صورت معماری قبل از وقوع هرگونه توسعه عمده طراحی کنید و میتوان از آن برای کوتاه کردن زمان توسعه و کاهش هزینههای نگهداری استفاده کرد.
الگوهای طراحی مهم هستند زیرا آنها دستور العملها یا راه حلهای آزمایش شده برای مشکلات شناخته شده مهندسی نرمافزار هستند. هنگام ایجاد برنامههای نرمافزاری، مشکلات خاصی به طور نسبتاً قابل پیشبینی تکرار میشوند، بنابراین به جای "اختراع مجدد" چرخ، مجموعهای از چرخها را برای انتخاب خواهیم داشت.
ما این را به روشی کمی متفاوت از آنچه احتمالاً قبلاً آموزش داده شدهاید به شما آموزش خواهیم داد. ما یک رویکرد عملی (به عنوان مثال، مثالهای خاص) اتخاذ خواهیم کرد، اما قدرت الگوهای طراحی از "مفهوم" آنها ناشی میشود و ما مفهوم آن الگوهای طراحی را به شما آموزش خواهیم داد تا بتوانید آنها را به طور کامل تغییر دهید و مطابق با نیازهای خود اصلاح کنید. علاوه بر این، ما به نحوه ترکیب همه این الگوها در چیزی بزرگتر نگاه خواهیم کرد: یک معماری.
یک معماری خوب طراحی شده این چیز جادویی است که در آن کل بزرگتر از مجموع اجزای آن است.
این همان چیزی است که ما برای آموزش آن به شما تلاش خواهیم کرد.
Piotr Paweska
مهندس نرم افزار
نمایش نظرات