در این دوره آموزشی که به صورت رایگان از وبسایت پرووید منتشر می شود در رابطه با مهمترین اصول و نکات کلیدی توسعه و طراحی نرم افزارهای موفق صحبت خواهیم کرد. حقیقت تلخ این است که دلیل شکست بسیاری از پروژه های نرم افزاری عدم پیاده سازی اصولی است که در حوزه مهندسی نرم افزار مطرح شده اند. دلیل عدم پیاده سازی چنین اصولی اغلب عدم دانش کافی توسعه دهندگان و یا صرفه جویی در هزینه و زمان می باشد. کتاب های بسیار زیادی در این باره نوشته شده اند که شاید مطالعه کردن همه ی آنها برای تمامی دوستان امکان پذیر نباشد. از همین رو در این سری آموزشی چکیده ای از مطالب ارزشمند موجود در این کتاب ها را به زبان فارسی به شما ارائه می کنیم.
اصول و نکات طراحی در توسعه نرم افزارهای موفق
یکی از ویژگی های مهم یک نرم افزار موفق قابلیت تغییر آن می باشد. به عبارت دیگر نرم افزاری که نتواند بر اساس تغییرات معمول در نیازمندیها خود را تغییر بدهد و با نیازمندی های جدید وفق پیدا کند محکوم به شکست است. برای اینکه یک نرم افزار به صورت نرم پیاده سازی بشوند میبایست قابلیتهای متعددی داشته باشد و نکاتی در طراحی آن لحاظ به گردد. در غیر اینصورت امکان تبدیل شدن نرمافزار به تودهای از کدها که قابلیت نگهداری ندارند بسیار زیاد است. ایجاد تغییر در چنین توده ای از کد کاملاً از بین میرود و برنامه نویسان نهایتا مجبور به کنار گذاشتن چنین نرمافزاری خواهند بود.
اصول SOLID و Inversion of Control در توسعه نرم افزارهای موفق
الگوهای طراحی در توسعه نرم افزارهای موفق
اهمیت کدنویسی تمیز در توسعه نرم افزارهای موفق
اهمیت نوشتن تست در در توسعه نرم افزارهای موفق
یکی دیگر از موضوعات بسیار مهم که در رابطه به نرم افزارهای نرم مطرح می شود قابلیت تست پذیری و پوشش دادن کدهای نوشته شده با تست های مناسب می باشد. استفاده کردن از فریم ورک هایی از قبیل xUnit.NET و نوشتن Data Driven Test ها و بررسی Test Driven Development ها در این دوره آموزشی در دستور کار قرار گرفته اند. استفاده کردن از تکنیکهایی برای Mock کردن و مواردی از قبیل Mock ها و Stub ها و Fake ها و Dummy ها و Test Double ها در آموزش پیشرو لحاظ گردیده اند. برای یادگیری مفاهیم مربوط به Testing به صورت کاملاً عمیق تر توصیه میکنیم که از آموزش های مختلف وب سایت پرووید در این رابطه استفاده کنید. یک نقطه شروع مناسب میتواند آموزش توسعه تست محور Test Driven Development TDD پروژه محور برای برنامه نویسان سی شارپ باشد.

مخاطبین این دوره آموزشی
این دوره آموزشی برای تمامی مهندسین نرم افزاری تنظیم شده است که میخواهند مهمترین اصول و نکات طراحی و توسعه نرمافزار را فرا بگیرند. تمامی دانشجویان رشته مهندسی نرم افزار و افرادی که در حوزههای تجاری فعالیت میکنند میتوانند از مخاطبین این دوره آموزشی بسیار ارزشمند به حساب بیآیند. علاوه بر این اگر شما در حوزه برنامه نویسی فعالیت اندکی داشته اید و میخواهید مطالب تخصصی را فرا بگیرید می توانید از مطالب این دوره آموزشی استفاده کنید.
پیش نیازها
به منظور استفاده هر چه بهتر از مطالب مطرح شده در این دوره آموزشی می بایست دانش اندکی در رابطه با توسعه نرمافزار و یک زبان برنامه نویسی از قبیل سی شارپ داشته باشید. مفاهیمی که در این دوره آموزشی مطرح میشوند برای افرادی مناسب است که در سطح نسبتا پیشرفته برنامه نویسی قرار دارند و میخواهند با تکنیک های مناسب توسعه نرمافزارهای موفق آشنا بشود. تمامی افرادی که می بایست نرمافزارهای موفقی را تولید کرده و یا به عنوان مدیران پروژه فعالیت کنند میتوانند جز مخاطبین این دوره آموزشی به حساب بیایند. علاوه بر این، افرادی که اندکی با زبان برنامه نویسی سی شارپ آشنا هستند و میخواهند موارد اصلی مربوط به توسعه نرمافزارهای موفق را فرا بگیرند میتوانند از مطالب مطرح شده در این آموزش نهایت استفاده را ببرند. در پایان توصیه میکنیم از آموزش سی شارپ دات نت در ویژوال استادیو و آموزش شی گرایی OOP در سی شارپ استفاده کنید.
برنامه تحصیلی
- 5 Sections
- 40 Lessons
- 10 هفته
- اهمیت اصول SOLID در طراحی و توسعه نرم افزار6
- 2.1اهمیت اصول SOLID در طراحی و توسعه نرم افزار
- 2.2اهمیت اصل تک وظیفه ای و یا Single Responsibility Principle
- 2.3اهمیت اصل باز و بسته بودن و یا Open/Closed Principle
- 2.4اهمیت اصل Liskov Substitution Principle
- 2.5اهمیت اصل تفکیک اینترفیس ها و یا Interface Segregation Principle
- 2.6اهمیت اصل معکوس کردن وابستگی ها و یا Dependency Inversion Principle
- دیگر اصول مهم در طراحی و توسعه نرم افزار7
- 3.1اهمیت مفهوم KISS در توسعه و طراحی نرم افزار
- 3.2اهمیت مفهوم YAGNI در توسعه و طراحی نرم افزار
- 3.3اهمیت مفهوم چسبندگی و یا Cohesion در طراحی و توسعه نرم افزار
- 3.4اهمیت در هم تنیدگی و یا Coupling در طراحی و توسعه نرم افزار
- 3.5اهمیت اصل Law of Demeter در طراحی و توسعه نرم افزار
- 3.6اهمیت اصل معکوس سازی وابستگی (Dependency Inversion) در طراحی و توسعه نرم افزار
- 3.7پیاده سازی تزریق وابستگی (Dependency Injection) با Ninject
- الگوهای طراحی (Design Pattern) مفید در طراحی و توسعه نرم افزار17
- 4.1الگوی طراحی Gateway و پیاده سازی آن در سی شارپ
- 4.2الگوی طراحی Decorator و پیاده سازی آن در سی شارپ
- 4.3الگوی طراحی Strategy و پیاده سازی آن در سی شارپ
- 4.4روش نام گذاری مناسب متغیرهای Boolean در کدنویسی تمیز
- 4.5اهمیت دقت به طول متد (Method Length) در کدنویسی تمیز
- 4.6حذف کدهای بی استفاده (Dead Code) در کدنویسی تمیز
- 4.7اهمیت تو در تویی کد (Nesting) در کدنویسی تمیز
- 4.8روش های صحیح نام گذاری متغیرها و پارامترها در کدنویسی تمیز
- 4.9استفاده مناسب از فضای خالی (White Space) در کدنویسی تمیز
- 4.10استفاده مناسب از مناطق کد (Region ها) در کدنویسی تمیز
- 4.11استفاده کردن از Constant ها به جای Magic String ها در کدنویسی تمیز
- 4.12بررسی سبک معماری Client-Server
- 4.13بررسی سبک معماری Layered
- 4.14بررسی سبک معماری Message Bus
- 4.15سبک معماری سرویس گرا (Service Oriented Architecture)
- 4.16سبک معماری پیازی (Onion Architecture)
- 4.17سبک معماری Event Sourcing
- اهمیت تست نرم افزار6
- توسعه تست محور (Test Driven Development)4
دیدگاهها
0