دوره توسعه دهنده نرم افزار

نرم افزارهایت را حرفه ای و بدون باگ به مشتری تحویل بده

 

سرفصل های دوره توسعه دهنده نرم افزار

  • معماری نرم افزار (سه لایه)
  • مهندسی نرم افزار
  • تست نرم افزار
  • اسکرام

اگر بخواهم از اهمیت معماری نرم افزار برایت توضیح بدهم، مثال زیر به بهترین شکل این کار را خواهد کرد:

تصور کن افرادی در حال ساخت یک خانه باشند اما شخصی به نام معمار وجود ندارد تا از خوب و ایمن بودن زیرساخت ها  مطمئن شود .

در نهایت احتمالا خانه ای ساخته می شود که هیچکس حاظر در آن زندگی کند چرا که ممکن است هرلحظه روی سر آنها خراب شود.

در برنامه نویسی و تولید نرم افزار هم همین داستان وجود دارد، وجود نداشتن معماری به این معنا است که کدها درست سر جای خودشان قرار نگرفته اند، و معماری نداشتن عواقب خوبی ندارد.

شاید سوال برایت پیش بیاید که منظور از جای درست چیست ؟

جواب سوال این است که کدهایی که یک برنامه نویس می نویسد انواع متفاوتی دارد و باید هر کدام از آنها را در جای مشخصی قرار دهد.

برای جدا کردن کدها از معماری می توانیم استفاده کنیم.

تو برای اینکه نرم افزارت معماری داشته باشد یا نداشته باشد، حق انتخاب نخواهی داشت چرا که اگر نرم افزارت را بدون معماری بسازی ممکن است اتفاقات زیر برایت رخ بدهد:

  • توانایی اضافه کردن قابلیت های جدید به نرم افزارت را نخواهی داشت
  • امنیت پروژه ای که می سازی کاهش پیدا می کند
  • بدلیل درهم بودن کدها احتمال وجود باگ زیاد خواهد بود
  • توانایی مدیریت پروژه ات کاهش خواهد یافت

و نرم افزاری به این صورت شبیه به خانه ای است که در ابتدا به آن اشاره شد!

اما در صورتی که نرم افزارت معماری داشته باشد می توانی  به طور مستقیم بر روی هزینه، توسعه پذیری، کیفیت، امنیت و سرعت نرم افزارت اثر بگذاری .

 معماری سه لایه در دوره توسعه دهنده نرم افزار

در معماری سه لایه ، همانطور که از اسمش مشخص است کدها را به سه قسمت تقسیم می کنیم  یا به عبارتی هرکدام از آنها لایه می گوییم :

  • کدهای سازنده ظاهر نرم افزار : Presentation Layer
  • کدهای مربوط به قوانین تجاری : Business Logic
  • کدهای مربوط به ارتباط بانک اطلاعاتی : Data Access Layer

در بخش معماری متخصص توسعه نرم افزار مفاهیم هریک از این لایه ها و نحوه پیاده سازی آن بطوری توضیح داده شده است که پیچیدگی پیاده سازی معماری از بین برود.

پس از القای مطالب مربوط به معماری نرم افزار ، مفاهیم به صورت عملی بر روی یک پروژه واقعی اعمال می شود.

با یاد گرفتن معماری سه لایه به کجا خواهی رسید ؟

  • با استفاده از معماری پروژه می توانید کارهای هر بخش را بین اعضای تیم تقسیم کنی
  • هر زمان که لازم باشد به راحتی، بدون آنکه مشکلی در نرم افزارت پیش بیاید می توانی آن را آپدیت کنی
  • به دلیل اینکه کدها را جدا نوشته اید ، کدها به هم وابستگی نخواهد داشت و این موضوع باعث می شود با کاهش خطاها و باگ ها کیفیت نرم افزارت بالا برود
  • سرعتت ایجاد تغییرات و بروزرسانی بخش های مختلف بالا می رود
  • به دلیل جدا بودن کدها، توانایی پیدا کردن خطاها و اشتباهات بالا می رود و این موضوع باعث می شود به راحتی از کدها محافظت کنی
  • با وجود معماری می توانی امنیت پروژه ات را بالا ببری، مثلا نیازی نیست برنامه نویسی که کدنویسی کدهای مربوط به ساخت لایه presentation را انجام بدهد، به کدهای مربوط به ارتباط با بانک اطلاعاتی یا Business Logic دسترسی داشته باشد.
  • زمان توسعه نرم افزارت کوتاه تر خواهد بود.
  • زمانی که یک نرم افزار معماری داشته باشد، تیم توسعه می تواند با بررسی بخش های مختلف با ایجاد تغییرات، موجب کاهش هزینه ها شود

مهندسی نرم افزار در متخصص توسعه نرم افزار

مهندسی نرم افزار چیست ؟ علمی است که با استفاده از آن ساخت نرم افزار با اطمینان کامل جلو می رود و چیزی از قلم نخواهد افتاد.

کسی که مهندسی نرم افزار را یاد می گیرد می تواند بخش های مختلف ایجاد نرم افزار را مدیریت کند و با نظم جلو ببرد تا به یک نرم افزار کامل و سالم را ایجاد کند.

در علم مهندسی نرم افزار، ایجاد نرم افزار به بخش های زیر تقسیم می شود

  • Analysis  – تحلیل
  • Design – طراحی
  •   Implementation – پیاده سازی
  • Test – تست نرم افزار

و اگر نرم افزاری که می سازید بر اساس قوانین مهندسی نرم افزار جلو نرود اتفاقات مختلفی پیش خواهد آمد و یکی از آنها این است که ممکن است یک بخش از نرم افزار به فراموشی سپرده شود و باعث ناقص بودن نرم افزار شود، هزینه های مالی و زمانی تولید نرم افزار افزایش خواهد یافت، پیاده سازی بخش های مختلف نرم افزار پیچیده خواهد بود.

اما در صورتی که از مهندسی نرم افزار استفاده کنی، چه مزایایی خواهد داشت؟

  • پیاده سازی بخش های مختلف سریع تر و دقیق تر جلو خواهد رفت
  • مهندسی نرم افزار در تقسیم وظایف برای افراد تیم و زمانبندی ساخت بخش های مختلف نرم افزار به تو کمک خواهد کرد
  • پیاده سازی صحیح و دقیق بر اساس مراحل علم مهندسی نرم افزار توسعه پذیری نرم افزار را افزایش می دهد

بخش مهندسی نرم افزار در دوره توسعه دهنده نرم افزار چه چیزی یاد خواهی گرفت ؟

  • مفاهیم مهندسی نرم افزار (ADIT)
  • چرخه حیات نرم افزار
  • آموزش نگاه داخلی و نگاه خارجی پروژه محور
  • آشنایی با سیستم های کاری
  • آموزش نرم افزار ویژوال پارادایم
  • آموزش دیاگرام های فعالیت – کاری
  • آموزش نمودار UML
  • آموزش انواع مستندات
  • آموزش نوشتن مستندات  برای پروژه ها
  • آشنایی با متدولوژی RUP
  • مراحل و قوانین درخواست پروژه از سازمانهای دولتی

بخش تست نرم افزار در دوره توسعه دهنده نرم افزار

مفهوم تست نرم افزار بسیار واضح و هدف از تست نرم افزار به شدت روشن است که اگر مساله تست را جدی نگیری به جز اینکه ممکن است بخش های از نرم افزار از دستت در برود، اگر نرم افزار را با عیب و ایراد به مشتری تحویل بدهی باعث می شوی اعتماد مشتری به تو از بین برود.

از بین رفتن اعتماد یک مشتری به معنای از بین رفتن اعتبارت در بازار نرم افزار برای بلند مدت است. حتی ممکن است باعث بوجود آمدن ضررهای مالی هم بشود.

یکی از کارهایی که برنامه نویس ها مرتبا در مراحل پیاده سازی پروژه انجام می دهند، تست نرم افزار است. مثل تست کدی که برای عمل Login می نویسی.

اما زمانی که از تست نرم افزار صحبت می کنیم منظورمان چیست و دقیقا چه چیزی تست خواهد شد ؟

فعل هایی که نوشته ایم قسمت هایی هستند که باید از عملکرد آنها مطمئن باشیم. در واقع این function ها و متدها هستند که نرم افزار را می سازند و باید تست شوند.

تست ها به دو دسته تقسیم می شوند:

  • تست های دستی یا Manual
  • تست های Automatic

سرنوشت تست های دستی کاملا مشخص است، احتمال اینکه تست قسمتی از نرم افزار از چشمت دور بماند زیاد است و ادامه داستان برابر است با از دست دادن اعتبارت.

بنابراین بهتر است از تست های اتوماتیک که توسط ماشین انجام می شود استفاده کنی.

 

در بخش تست نرم افزار این محصول چه چیزی یادخواهی گرفت ؟

  • آموزش کار با Nunit
  • آموزش AUT  یا تست از طریق واسط کاربری با نرم افزار Ranorex

اما اگر بخش تست نرم افزار را یاد نگیری چه خواهد شد؟

برای اینکه عواقب تست نگرفتن از نرم افزار را ببینی بهتر است خودت را جای مشتری بگذاری:

یک نرم افزار بدون تست یعنی احتمال وجود ایراد و خطا در آن وجود دارد.

فرض کن این نرم افزار را خریده باشی و برای آن پول پرداخت کرده باشی.

احتمالا به این دلیل که کارت عقب می افتد شاکی خواهی شد و با خودت می گویی “این بار آخری است که با این تولید کننده نرم افزار کار می کنم”.. که این بازخورد به معنی از دست رفتن اعتبار آن تولید کننده نرم افزار است.

برای اینکه حق تو است که نرم افزارت درست کار کند تا هزینه ای که از نظر زمانی و مالی پرداخت کرده ای از بین نرود، از آن تولید کننده نرم افزار می خواهی تا نرم افزار را درست کند و نسخه جدیدی به تو بدهد که این به معنای خسارت مالی و زمانی برای  تولید کننده نرم افزار است.

و احتمالا از آن بعد اگر به نرم افزار نیاز داشته باشی از آن تولید کننده خرید نخواهی کرد، که این برای آن تولید کننده نرم افزار  به معنی از دست دادن یک مشتری است، و تصور کن همین نرم افزار را به ۱۰ نفر دیگر هم فروخته باشد، ۱۰ نرم افزار تست نشده و معیوب به معنی از دست دادن ۱۰ مشتری.

بنابراین خطراتی که از تست نکردن نرم افزار ممکن است دامن گیر یک تولید کننده نرم افزار باشد:

  • از دست رفتن اعتبار
  • خسارت مالی
  • خسارت زمانی
  • از دست دادن مشتری ها

بنابراین بخش تست نرم افزار نه تنها هزینه نیست بلکه به نوعی سرمایه گذاری است.

اسکرام (Scrum) : مدیریت تیم برنامه نویسی و پروژه نرم افزاری

آیا تو هم جزء افرادی هستی که تحت هیچ شرایطی دوست ندارند برای فرد دیگری کار کنند ؟ در این متن اسم این فرد را رئیس می گذارم .

اتفاقات مختلفی می تواند این حس نفرت را تحریک کند، طوری که حتی یک درخواست ساده از طرف رئیس باعث می شود که حس کنی یک دستور از سمت یک دیکتاتور است.

مثلا شاید  برای تو هم این اتفاق افتاده باشد که سنگینی نگاه رئیس را بخاطر پولی که به تو می دهد، حس کرده باشی یا به قول چند نفر از دوستان، هرچقدر کار کنی و وقت بگذاری به چشمش نیاد و حقی که باید بدهد را ندهد.

حتی در این بین افرادی هستند که حس می کنند رفتار شخصی که صاحب کار است طعم بی احترامی می دهد و این باعث می شود که شاکی بشوند.

در اینطور سیستم ها در اکثر مواقع رئیس تصمیم گیرنده است و بقیه فقط کار انجام می دهند. یعنی حتی اگر رئیس راهبرد اشتباهی هم بدهد ممکن است بقیه در آتش آن بسوزند.

یکی از اتفاقاتی که ممکن است بیفتد این است که شاید از سر لج و لجبازی یک نفر ناخواسته خیانتی انجام بدهد.

اما اتفاقی که حتما رخ خواهد داد این است که بازدهی تیم و کسب و کار و سرعت پیشرفت پایین خواهد آمد.

این سیستم سنتی رئیس و کارمندی است که حتی در کسب و کارهایی مثل برنامه نویسی و فروش نرم افزار هم دیده میشود.

اما تصور کن یک سیستم جدید داشته باشی که در آن بجای اینکه کسی رئیس باشد و دستور بدهد، رهبر باشد و از همفکری دیگران استفاده کند.

سیستم را طوری راه اندازی کند که بجای اینکه وظایف تقسیم شود، هر عضو از تیم بر اساس توانایی و علاقه اش انجام بخشی از کار را برعهده بگیرد.

یک مسیر درست برای انجام کارها تعریف کند تا هیچ بخشی از پروژه جا نماند .

آن وقت چه خواهد شد ؟

در سیستم جدیدی به نام اسکرام یا SCRUM تمام این شرایط برقرار است و شرایط “آقا بالاسر” در محیطی که اسکرام در آن اجرا می شود، برقرار نیست!

علاوه بر این، بر اساس ساختاری که متد اسکرام برای اجرای یک پروژه اجرا می کند کارهای لازم برای ساخت نرم افزار در همان ابتدا تقسیم بندی می شود.

تقسیم بندی قسمت های لازم برای ساخت نرم افزار به نوعی  مدیریت پروژه نرم افزاری و مدیریت تیم نرم افزاری کمک خواهد کرد.

این مدیریت به واسطه تابلو کنبانی Kanban که وظایف یا Task ها برروی آن تعریف شده اند و توسط شخصی به نام اسکرام مستر (Scrum Master) مدیریت می شود.

اگر از اسکرام برای مدیریت تیم و پروژه نرم افزاری استفاده کنی چه مشکلاتی حل می شود؟

  • می توانی تیم خلاق داشته باشی
  • پروژه را به درستی مدیریت کنی
  • پروژه بدون نقص و کامل خواهد بود
  • پروژه را سریع تر جلو خواهی برد
  • صمیمیت و احترام همه نگه داشته می شود
  • ایجاد تغییرات در پروژه ای که با استفاده از اسکرام مدیریت می شود، آسان خواهد بود
  • هزینه های توسعه نرم افزار کاهش پیدا خواهد کرد
  • با تقسیم بندی وظایف مسئولیت پذیری اعضای تیم بیشتر خواهد بود
  • زمان توسعه نرم افزار کاهش می یابد
  • پیشرفت پروژه قابل روئیت و بررسی است

متد اسکرام برای چه افرادی مناسب است؟

  • برنامه نویسانی که اجرای پروژه برای آنها کار دشواری است و به اصطلاح از دستشان در می رود
  • برنامه نویسانی که محیط های رئیس و کارمندی را دوست ندارند
  • برنامه نویسانی که به دنبال افزایش سرعت اجرای پروژه هستند
  • برنامه نویسانی که می خواهند از تمام توانایی و خلاقیت های اعضای تیمشان استفاده کنند
  • برنامه نویسانی که قصد دارند هزینه های توسعه نرم افزار را کاهش دهند

در محصول اسکرام چه چیزهایی خواهی آموخت ؟

  • آموزش مفهوم اسکرام
  • آموزش مفهوم اسکرام مستر (Scrum Master) و توانایی های آن
  • آموزش مفهوم Product owner و توانایی های آن
  • آموزش ساخت تابلوی کنبان Kanban
  • آموزش مفهوم User Story
  • آموزش مفهوم Product Backlog
  • آموزش مفهوم Task
  • آموزش مفهوم Sprint
  • آموزش مفهوم Artifact
  • چه شخصی برای نقش اسکرام مستر (Scrum Master) مناسب است بر اساس متد دیسک
  • چه شخصی برای نقش Product owner مناسب است بر اساس متد دیسک
  • نقش Scrum master در تیم چیست و چه کاری باید انجام بدهد
  • نقش Product owner در تیم چیست و چه کاری باید انجام بدهد
  • متد اسکرام باید چه خروجی برای یک تیم برنامه نویسی داشته باشد
  • آموزش طراحی To Do List  و اولویت گذاری و تخمین زدن زمان مورد نظر برای انجام یک کار
  • نمایش نمونه فارسی پیاده سازی یک سیستم اسکرام
  • مثال از یک سیستم اسکرام
  • معرفی و آموزش یک سیستم برای پیاده سازی اسکرام در رایانه

پیش نیاز این دوره

  • روانشناسی مشتری و تیم تولید نرم افزار
  • مهندسی نرم افزار

 دوره توسعه دهنده نرم افزار برای چه افرادی مناسب است ؟

  • برنامه نویسانی که قصد دارند با استفاده از معماری و مهندسی و تست نرم افزار طول عمر و کیفیت نرم افزار خود را بالا ببرند.
  • برنامه نویسانی که قصد دارند در طول حیات نرم افزار در زمان و هزینه های مالی صرفه جویی کنند.

 

معرفی دورهنمایش رایگان

توسعه دهنده نرم افزار - معماری - بخش اول

توسعه دهنده نرم افزار - معماری - بخش دوم

توسعه دهنده نرم افزار - معماری - بخش سوم

توسعه دهنده نرم افزار - معماری - بخش چهارم - ارائه

توسعه دهنده نرم افزار - معماری - بخش پنجم - ارائه

توسعه دهنده نرم افزار - معماری - بخش ششم

توسعه دهنده نرم افزار - معماری - بخش هفتم

توسعه دهنده نرم افزار - معماری - بخش هشتم

توسعه دهنده نرم افزار - معماری - بخش نهم

توسعه دهنده نرم افزار - معماری - بخش دهم

توسعه دهنده نرم افزار - معماری - بخش یازدهم

توسعه دهنده نرم افزار - معماری - بخش دوازدهم

توسعه دهنده نرم افزار - مهندسی نرم افزار - بخش اول

توسعه دهنده نرم افزار - مهندسی نرم افزار - بخش دوم

توسعه دهنده نرم افزار - مهندسی نرم افزار - بخش سوم

توسعه دهنده نرم افزار - مهندسی نرم افزار - بخش چهارم

توسعه دهنده نرم افزار - مهندسی نرم افزار - بخش پنجم

توسعه دهنده نرم افزار - مهندسی نرم افزار - بخش ششم

توسعه دهنده نرم افزار - مهندسی نرم افزار - بخش هفتم

توسعه دهنده نرم افزار - مهندسی نرم افزار - بخش هشتم

توسعه دهنده نرم افزار - مهندسی نرم افزار - بخش نهم

توسعه دهنده نرم افزار - مهندسی نرم افزار - بخش دهم

توسعه دهنده نرم افزار - مهندسی نرم افزار - بخش یازدهم

توسعه دهنده نرم افزار - مهندسی نرم افزار - بخش دوازدهم

توسعه دهنده نرم افزار - مهندسی نرم افزار - بخش سیزدهم

توسعه دهنده نرم افزار - مهندسی نرم افزار - بخش چهاردهم

توسعه دهنده نرم افزار - مهندسی نرم افزار - بخش پانزدهم

توسعه دهنده نرم افزار - تست نرم افزار - بخش اول

توسعه دهنده نرم افزار - تست نرم افزار - بخش دوم

توسعه دهنده نرم افزار - تست نرم افزار - بخش سوم

توسعه دهنده نرم افزار - تست نرم افزار - بخش چهارم

توسعه دهنده نرم افزار - تست نرم افزار - بخش پنجم

توسعه دهنده نرم افزار - تست نرم افزار - بخش ششم

توسعه دهنده نرم افزار - تست نرم افزار - بخش هفتم

توسعه دهنده نرم افزار - تست نرم افزار - بخش هشتم

توسعه دهنده نرم افزار - اسکرام - بخش اول

توسعه دهنده نرم افزار - اسکرام - بخش دوم

توسعه دهنده نرم افزار - اسکرام - بخش سوم

توسعه دهنده نرم افزار - اسکرام - بخش چهارم

توسعه دهنده نرم افزار - اسکرام - بخش پنجم

دیدگاهتان را با ما درمیان بگذارید
تعداد دیدگاه : 0
امتیاز کلی : 0.0
پیشنهاد شده توسط : 0 کاربر
بر اساس 0 فروش
0
0
0
0
0

هیچ دیدگاهی برای این محصول نوشته نشده است.

اولین نفری باشید که دیدگاهی را ارسال می کنید برای “دوره توسعه دهنده نرم افزار”

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

شهریه

975 هزار تومان

امتیازی ثبت نشده است
مدت دوره: 24:40
مزایای دوره های عمومی آکادمی

  • دسترسی به فایل محصول به صورت مادام‌العمر
  • تضمین کیفیت آموزش ها
  • فعال‌سازی آنی لینک دانلود، پس از ثبت سفارش
  • ثبت تیکت رفع اشکال و پاسخ از طرف استاد مدحج

مدرس

محسن مدحج

شهریه

975 هزار تومان