پرش به محتویات

مهندسی نرم‌افزار پیشرفته

اطلاعات کلی

  • نام درس به فارسی: مهندسی نرم‌افزار پیشرفته
  • نام درس به انگلیسی: Advanced Software Engineering
  • رشته، گرایش، نوع و واحد درس: مهندسی کامپیوتر – نرم‌افزار، اختصاصی، 3 واحد
  • مقطع: تحصیلات تکمیلی ( کارشناسی ارشد و دکتری)
  • پیش نیازها: مبانی مهندسی نرم‌افزار
  • مطالب پیش نیاز: مفاهیم اولیه مهندسی نرم‌افزار، آشنایی با متدولوژی‌های توسعه نرم‌افزار

توضیح کوتاه درس

این درس به بررسی مباحث پیشرفته مهندسی نرم‌افزار می‌پردازد و دانشجویان را با چالش‌ها و راهکارهای مدرن در توسعه، طراحی، معماری، تضمین کیفیت و مدیریت پروژه‌های نرم‌افزاری آشنا می‌سازد. با استفاده از کتاب‌های مرجع مانند Software Engineering از Sommerville و Software Engineering: A Practitioner's Approach از Pressman، دانشجویان شیوه‌های بهبود فرآیند‌های نرم‌افزاری و مدیریت تغییرات پیچیده در پروژه‌های بزرگ را فرا خواهند گرفت.


اهداف و نتایج درس

  • آشنایی با مدل‌ها و متدولوژی‌های پیشرفته توسعه نرم‌افزار (Agile, Scrum, DevOps و ...)
  • درک عمیق از فرآیند مهندسی نیازمندی‌ها و مدیریت تغییرات در سیستم‌های پیچیده
  • تسلط بر اصول طراحی و معماری نرم‌افزار شامل انتخاب الگوهای طراحی و سبک‌های معماری مناسب
  • بررسی روش‌های تضمین کیفیت و بهبود مستمر فرایندهای توسعه نرم‌افزار
  • کسب مهارت در مدیریت پروژه‌های نرم‌افزاری پیشرفته و ارزیابی ریسک‌های مرتبط
  • تحلیل و بهبود فرآیند نگهداری و توسعه نرم‌افزار در دوره طولانی

مخاطبین

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

سطح دوره

  • پیشرفته

طول و زمان‌بندی دوره

  • مدت دوره: ۴ ماه (۳۰ جلسه)
  • جلسات کلاس: ۲۴ جلسه (فعالیت‌های تئوری و عملی)
  • جلسات جبرانی: ۴ جلسه
  • جلسات ارزیابی: ۲ جلسه

سرفصل‌ها و مباحث

  1. مقدمه و مرور کلی مهندسی نرم‌افزار پیشرفته (3 جلسه)

    • مرور مبانی و تاریخچه مهندسی نرم‌افزار
    • معرفی چالش‌ها و روندهای نوین در پروژه‌های نرم‌افزاری
    • اصول و اهمیت مدیریت پروژه‌های نرم‌افزاری پیشرفته
  2. تحلیل نیازمندی‌های پیچیده و مهندسی نیازمندی‌ها (4 جلسه)

    • فرآیند جمع‌آوری و تحلیل نیازمندی‌ها
    • مدیریت تغییرات و نیازمندی‌های پویا
    • تکنیک‌های مدل‌سازی نیازمندی‌ها (UML, Use Case, Gherkin)
  3. طراحی و معماری نرم‌افزار (5 جلسه)

    • بررسی الگوهای طراحی و سبک‌های معماری نرم‌افزار
    • معماری چندلایه، MVC و میکروسرویس‌ها
    • مستندسازی و انتخاب معماری مناسب برای سیستم‌های بزرگ
  4. مدیریت پروژه‌های نرم‌افزاری پیشرفته (4 جلسه)

    • متدولوژی‌های نوین مدیریت پروژه: Agile, Scrum, Kanban
    • ارزیابی و مدیریت ریسک در پروژه‌های نرم‌افزاری
    • بودجه‌بندی، زمان‌بندی و کنترل پروژه
  5. تضمین کیفیت و بهبود مستمر نرم‌افزار (4 جلسه)

    • استراتژی‌ها و روش‌های تضمین کیفیت (QA) و آزمون نرم‌افزار
    • بهره‌گیری از استانداردهای کیفیت (ISO, CMMI)
    • ارزیابی عملکرد و بهبود مستمر فرآیندهای نرم‌افزاری
  6. مدیریت تغییر و نگهداری نرم‌افزار (4 جلسه)

    • چالش‌های نگهداری نرم‌افزار و استراتژی‌های به‌روزرسانی
    • مدیریت تغییرات سیستم و استفاده از سیستم‌های کنترل نسخه (Git)
    • معیارهای ارزیابی نگهداری و پایداری نرم‌افزار
  7. فرآیندهای نوین توسعه نرم‌افزار و فناوری‌های روز (4 جلسه)

    • DevOps و کاربردهای CI/CD در توسعه نرم‌افزار
    • نرم‌افزار به عنوان سرویس (SaaS) و معماری ابری
    • بررسی روندهای نوین مانند هوش مصنوعی در توسعه نرم‌افزار، اینترنت اشیاء (IoT) و مفاهیم مرتبط
  8. پروژه نهایی و مطالعات موردی (2 جلسه)

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

نرم‌افزارها و ابزارهای مورد استفاده

  • ابزارهای مدل‌سازی و طراحی (UML Tools، Enterprise Architect, PlantUML)
  • سیستم‌های مدیریت پروژه (JIRA، Trello)
  • سیستم‌های کنترل نسخه (Git)
  • محیط‌های توسعه یکپارچه (Visual Studio، Eclipse)
  • ابزارهای تحلیل و تضمین کیفیت نرم‌افزار (SonarQube، ابزارهای CI/CD)

تکالیف و ارزیابی

  • تکالیف تئوری و مطالعات موردی: 20%
  • تکالیف عملی و پروژه‌های میانی: 30%
  • پروژه نهایی و ارائه مطالعات موردی: 20%
  • آزمون‌ها و ارزیابی‌های دوره‌ای: 30%

مراجع درس

  1. Sommerville, I. Software Engineering – آخرین ویرایش
  2. Pressman, R. S. & Maxim, B. Software Engineering: A Practitioner's Approach – آخرین ویرایش
  3. سایر منابع و مقالات علمی مرتبط با مباحث پیشرفته مهندسی نرم‌افزار

تهیه‌کننده

  • نام: مرتضی ذاکری
  • نگارش: 1.0