دوره معماری نرمافزار مقدماتی فرصتی عالی برای برنامهنویسان و توسعهدهندگانی است که میخواهند با مفاهیم کلیدی معماری نرمافزار آشنا شوند. در این دوره، شما اصول طراحی سیستمهای مقیاسپذیر، الگوهای معماری پرکاربرد و بهترین روشهای توسعه نرمافزار را یاد میگیرید. با تدریس یکی از برترین متخصصان این حوزه، شما مهارتهای لازم برای ساخت نرمافزارهای قدرتمند و قابل توسعه را کسب خواهید کرد؛ پیشنیاز این دوره، حداقل ۴ سال سابقه کار برنامه نویسی حرفهای است.
11.000.000 تومان قیمت اصلی: 11.000.000 تومان بود.7.700.000 تومانقیمت فعلی: 7.700.000 تومان.
در انبار موجود نمی باشد
از دید یک توسعهدهنده، انجام کارهای عملی نسبت به یادگیری مباحث تئوری جدابتر است؛ بههمین دلیل، دوره با موضوع Clean Architecture آغاز خواهند شد. در این بخش، بررسی خواهند شد که چگونه طراحی صحیح لایهها، نحوه طراحی کلاسها و تخصیص وظایف به بخشهای مختلف یک نرمافزار، میتواند بر قابلیت توسعه و نگهداری آن تأثیرگذار باشد. برای درک بهتر مفاهیم این قسمت، دوره با یک پروژه عملی شروع خواهند شد.
در این دوره، توسعه یک برنامه در زمینه اجاره اقامتگاه بومگردی از ابتدا آغاز خواهد شد و مفاهیمی تدریس میشود که بتوان آن را بهصورت عملی در پروژه بهکار برود. قسمت اول دوره کاملاً عملی است و در کنار توضیح مباحث تئوری، به توسعه نرمافزاری خواهند پرداخت که در هر جلسه، بخشی از کار توسط مدرس در کلاس انجام خواهد شد و بخش دیگری از آن بهعنوان تمرین به دانشجویان واگذار خواهد شد.
پس از انجام تمرینها توسط دانشجویان، راهکار پیشنهادی مدرس نیز بررسی خواهد شد.
در این فصل، دانشجویان با اصول اولیه طراحی و معماری نرمافزار آشنا میشوند. اهمیت داشتن یک ساختار مشخص در برنامهها، اولین موضوعی است که بررسی میشود؛ سپس با معماریهای چندلایه و معرفی اولیه از Clean Architecture آشنا میشوند. این فصل اهمیت پایهای در درک معماری نرمافزار دارد و دانشجویان با یادگیری آن، آماده میشوند تا در فصلهای بعدی بتوانند تصمیمات معمارانه صحیحتری اتخاذ کنند:
در این فصل، به نقش و وظایف لایه Domain پرداخته میشود. دانشجویان یاد میگیرند که چگونه ساختار اصلی و قوانین تجاری نرمافزار در این لایه پیادهسازی میشود. آشنایی با مفاهیمی مانند Entity ،Value Object و Domain Event نیز از موضوعات کلیدی این بخش است. اهمیت این فصل در این است که دانشجویان یاد میگیرند که منطق اصلی برنامه باید در لایه Domain مدیریت شود که به حفظ پایداری و انعطافپذیری نرمافزار کمک میکند.
این فصل بر روی نقش و وظایف لایه Application تمرکز دارد. با یادگیری این فصل، دانشجویان با نحوه پیادهسازی Services نرمافزار آشنا میشوند؛ همچنین، الگوی CQRS و چگونگی پیادهسازی آن در نرمافزار مورد بررسی قرار میگیرد. اهمیت این فصل در فراهمسازی یک لایه برای مدیریت عملیات برنامه و جریان دادهها است. یادگیری این بخش به دانشجویان کمک میکند تا بتوانند برنامههایی با ساختاری منظم و قابل گسترش پیادهسازی کنند.
در این فصل، با مفهوم Infrastructure و نقشهای آن آشنا میشویم. بررسی Data Access Layer و آشنایی با الگوهای Repository و Unit of Work نیز از موضوعات کلیدی این فصل است. هدف اصلی این بخش، مدیریت ارتباطات با سیستمهای خارجی مانند دیتابیسها و سرویسها است. اهمیت یادگیری این فصل در این است که دانشجویان میآموزند چگونه ارتباطات خارجی نرمافزار را مدیریت و آنها را از منطق اصلی برنامه جدا کنند.
این فصل به نحوه تعامل نرمافزار با کاربران میپردازد. تفاوت بین ارائه UI یا API و چالشها و فرصتهای هر یک از این روشها بررسی میشود؛ همچنین، مفاهیمی مانند API Versioning و پیادهسازی Cache در این بخش معرفی میشوند. یادگیری این فصل به دانشجویان کمک میکند تا بتوانند یک لایه رابط کاربری یا API قابل اطمینان و انعطافپذیر پیادهسازی کنند که به بهبود تجربه کاربری کمک میکند.
این فصل بر روی مفاهیم امنیتی نرمافزار تمرکز دارد. موضوعاتی مانند AAA (Authentication ،Authorization ،Accounting) ،Identity Provider ،JWT و انواع مختلف Authorization بررسی میشوند. این بخش اهمیت بالایی در حفاظت از دادهها و اطمینان از دسترسیهای صحیح دارد. یادگیری این فصل به دانشجویان کمک میکند تا نرمافزارهایی امن و با قابلیتهای کنترل دسترسی کارآمد ایجاد کنند:
در این فصل، با روشهای Unit Testing برای لایههای مختلف نرمافزار آشنا میشویم؛ همچنین، مفهوم Architecture Test و اهمیت آن در تضمین کیفیت معماری نرمافزار بررسی میشود. یادگیری این فصل به دانشجویان امکان میدهد تا نرمافزارهای خود را به صورت خودکار تست کرده و از صحت عملکرد آنها در شرایط مختلف اطمینان حاصل کنند:
در بخش دوم معماری نرم افزار و ارائه تعاریف و ایجاد یک بنیان علمی برای معماری نرم افزار ارائه خواهد شد. در این قسمت به این موضوع پرداخته میشود: چه اتفاقی افتاده است که دهههای متوالی سیستمها بر پایه نیازمندیهای عملیاتی ساخته شده و چرا نیاز است که به مباحث غیرعملیاتی نیز پرداخته شود؛ مباحث بخش دوم تئوری است، اما مطالبی است که باید بدانیم تا هنگام پیاده سازی عملی، چراغ راه ما باشد.
در این فصل، دانشجویان با تاریخچه معماری نرمافزار آشنا میشوند و اهمیت وجود آن در دنیای توسعه نرمافزار را درک میکنند. این فصل به بیان تعاریف معماری نرمافزار، عوامل مؤثر در آن و چرخه کاری معماری میپردازد. اهمیت این فصل در آن است که دانشجویان درک پایهای از معماری نرمافزار به دست میآورند و یاد میگیرند که یک معماری خوب چگونه میتواند بر کیفیت و عملکرد نرمافزار تأثیر بگذارد:
این فصل با ارائه تعاریف و تحلیل آنها به شناخت کاملتری از معماری نرمافزار کمک میکند؛ همچنین به تفاوتهای میان معماری سیستم و معماری نرمافزار و ارتباط آن با ساختار نرمافزار پرداخته میشود. اهمیت این فصل در شناخت اصول و الگوهای معماری نرمافزار نهفته است که به دانشجویان کمک میکند تا اهمیت و نقش معماری در موفقیت پروژههای نرمافزاری را درک کنند:
در این فصل، دانشجویان با ویژگیهای کیفی نرمافزار مانند دسترسپذیری، کارایی، امنیت، قابلیت نگهداری و توسعه و تستپذیری آشنا میشوند. اهمیت این فصل در این است که یادگیری ویژگیهای کیفی به معماران نرمافزار کمک میکند تا بتوانند معماریهای پایدار، امن و قابل توسعه ایجاد کنند. دانشجویان در این فصل میآموزند که چگونه با اعمال این ویژگیها میتوانند کیفیت کلی نرمافزار را ارتقا دهند و از خرابیهای احتمالی جلوگیری کنند:
این فصل به بررسی اهمیت مستندسازی در فرآیند معماری نرمافزار میپردازد. انتخاب دیدهای مرتبط، مستندسازی رفتار سیستم و ابزارهای مرتبط برای این کار از موضوعات اصلی این فصل هستند. اهمیت این فصل در این است که دانشجویان یاد میگیرند چگونه معماری را بهصورت دقیق و کامل مستند کنند تا ارتباطات و تصمیمات طراحی در تیمهای توسعه قابل فهم و قابل پیگیری باشد:
در این فصل، دانشجویان با انواع الگوهای معماری نرمافزار مانند Layard Architecture ،Microkernel ،Microservice ،Event-Driven ،Service-Based و Space-Based Architecture آشنا میشوند. این فصل برای درک نحوه پیادهسازی ساختارهای مختلف نرمافزار و انتخاب مناسبترین الگو برای هر پروژه ضروری است. یادگیری این الگوها به دانشجویان کمک میکند تا نرمافزارهایی با کارایی و انعطافپذیری بالا طراحی کنند.
مدتی کلاس با مباحث تئوری معماری نرم افزار پیش رفت و در بخش سوم یک الگوی معماری نرم افزار به استم Modular monolith را با هم یاد خواهیم گرفت. این قسمت هم مانند بخش اول ترکیب تئوریهای مورد نیاز و کار عملی است که در حین اجرای یک پروژه مفاهیم مورد نیاز جهت پیاده سازی با این الگو را یاد خواهیم گرفت؛ اما این بار بنیه علمی معماری نرم افزار را نیز داریم و توقع داریم هنگامی که تصمیمی میگیریم آگاهانه بوده و بدانیم بر چه قسمتهایی از ویژگیهای کارکردی و غیر کارکردی اثر میگذارد.
در این فصل، دانشجویان با مفهوم “Modular Monolith” آشنا میشوند و آن را با معماری “Microservice” مقایسه میکنند؛ همچنین، با مثال عملی دوره و کارکردهایی که قرار است پیادهسازی شود، آشنا میشوند. اهمیت این فصل در این است که دانشجویان پایهای قوی از اصول معماری Modular Monolith کسب میکنند و میتوانند درک کنند که چرا انتخاب این معماری در برخی موارد بر Microservices اولویت دارد:
این فصل به معرفی مفاهیم Bounded Contextها و ارتباطشان با ماژولها پرداخته میشود. دانشجویان یاد میگیرند چگونه محدوده ماژولها را مشخص کنند و پیادهسازی یک ماژول را آغاز کنند. اهمیت این فصل در شناخت نحوه سازماندهی و تعیین حدود ماژولها است که به طراحی ساختار نرمافزار قابل نگهداری و توسعه کمک میکند.
در این فصل، دانشجویان با مفاهیم تزریق وابستگی، مدیریت لاگها، ثبت و ردیابی خطاها و دیگر موضوعات “Cross-Cutting Concerns” در معماری Modular Monolith آشنا میشوند. این موضوعات نقش مهمی در ارتقای کیفیت و عملکرد نرمافزار ایفا میکنند و اهمیت یادگیری آنها در این است که به برنامهنویسان کمک میکند تا ماژولهایی با قابلیت انعطافپذیری و پشتیبانی مناسب ایجاد کنند:
این فصل به بررسی الگوهای ارتباطی میان ماژولها میپردازد، از جمله ارتباطات Sync و Async، مدیریت دادههای مشترک و مفاهیمی مانند Eventual Consistency و Messaging Patterns. اهمیت این فصل در یادگیری نحوه برقراری ارتباطات مختلف میان ماژولها است که برای حفظ انسجام و عملکرد نرمافزار در سیستمهای بزرگ ضروری است:
در این فصل، دانشجویان با پیادهسازی هویت و احراز هویت در معماری Modular Monolith آشنا میشوند. از نصب Identity Provider گرفته تا پیادهسازی Token-Based Authentication. یادگیری این مباحث برای حفظ امنیت در نرمافزار و مدیریت کاربران اهمیت دارد و به معماران نرمافزار کمک میکند تا راهکارهای امن و پایداری برای مدیریت دسترسیها پیادهسازی کنند.
این فصل به موضوع تست در معماری Modular Monolith میپردازد و مباحثی مانند Unit Testing و Integration Testing را بررسی میکند. اهمیت این فصل در این است که دانشجویان میآموزند چگونه برنامههای خود را تست کنند تا از عملکرد صحیح و بدون خطا در تمامی بخشهای مختلف نرمافزار اطمینان حاصل کنند:
در این فصل، دانشجویان با مفاهیم Docker ،Dockerize کردن برنامه، انتشار در Docker Hub و پیادهسازی CI/CD آشنا میشوند. یادگیری این مباحث برای مدیریت و انتشار نرمافزار در محیطهای عملیاتی اهمیت دارد و به معماران و توسعهدهندگان کمک میکند تا فرآیندهای یکپارچهسازی، استقرار و تست را بهصورت خودکار انجام دهند:
علیرضا ارومند به عنوان Technical Manager شرکت داتین (وابسته به فناپ) در حوزه پروژههای بانکی فعال است.او همچنین مدرس و Technical Manager پروژههای نیک آموز می باشد از دیگر تخصص های او میتوان به: تولید فریمورک برنامه نویسی فوق العاده حرفهای با مدیریت بیش از ۱ میلیون تراکنش در ثانیه، همکاری با تیم توسعه شرکت ارتباط فردا (بانک آینده)، مشاور فنی شرکت توسعه رفاه پردیس (بانک رفاه)، مدیر فنی خبرگزاری نسیم، سخنران تنها همایش مورد تایید مایکروسافت در خاورمیانه در حوزه ASP.NET Core، مدیر فنی خبرگزاری بین المللی پیامکوتاه نسیم (برنده جشنواره وب ایران)، مدرس دوره های Dot Net ، ASP.NET در نیک آموز، همکاری با تیم توسعه شرکت ارتباط فردا (وابسته به بانک آینده)، کارشناس ارشد و معمار نرم افزار شرکت هایپرمدیا، کارشناس توسعه نرم افزارهای آنلاین بورس شرکت تدبیرپرداز، معمار نرم افزار و توسعه دهنده سیستم های اداری مرکزتحقیقات ساختمان و مسکن وزارت مسکن، مشاور IT معاون وزیر مسکن و شهرسازی در مرکزتحقیقات ساختمان و مسکن، برگزاری دوره آموزش برنامه نویسی وب برای تیم فنی خبرگزاری بین المللی نسیم.
ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم.
Δ