مهندسی نرمافزار پیشرفته
اطلاعات کلی
- نام درس به فارسی: مهندسی نرمافزار پیشرفته
- نام درس به انگلیسی: Advanced Software Engineering
- رشته، گرایش، نوع و واحد درس: مهندسی کامپیوتر – نرمافزار، اختصاصی، 3 واحد
- مقطع: تحصیلات تکمیلی ( کارشناسی ارشد و دکتری)
- پیش نیازها: مبانی مهندسی نرمافزار
- مطالب پیش نیاز: مفاهیم اولیه مهندسی نرمافزار، آشنایی با متدولوژیهای توسعه نرمافزار
توضیح کوتاه درس
این درس به بررسی مباحث پیشرفته مهندسی نرمافزار میپردازد و دانشجویان را با چالشها و راهکارهای مدرن در توسعه، طراحی، معماری، تضمین کیفیت و مدیریت پروژههای نرمافزاری آشنا میسازد. با استفاده از کتابهای مرجع مانند Software Engineering از Sommerville و Software Engineering: A Practitioner's Approach از Pressman، دانشجویان شیوههای بهبود فرآیندهای نرمافزاری و مدیریت تغییرات پیچیده در پروژههای بزرگ را فرا خواهند گرفت.
اهداف و نتایج درس
- آشنایی با مدلها و متدولوژیهای پیشرفته توسعه نرمافزار (Agile, Scrum, DevOps و ...)
- درک عمیق از فرآیند مهندسی نیازمندیها و مدیریت تغییرات در سیستمهای پیچیده
- تسلط بر اصول طراحی و معماری نرمافزار شامل انتخاب الگوهای طراحی و سبکهای معماری مناسب
- بررسی روشهای تضمین کیفیت و بهبود مستمر فرایندهای توسعه نرمافزار
- کسب مهارت در مدیریت پروژههای نرمافزاری پیشرفته و ارزیابی ریسکهای مرتبط
- تحلیل و بهبود فرآیند نگهداری و توسعه نرمافزار در دوره طولانی
مخاطبین
- دانشجویان مهندسی و علوم کامپیوتر علاقهمند به فرایندهای پیشرفته توسعه نرمافزار
- مهندسین نرمافزار و مدیران پروژههای نرمافزاری
- پژوهشگران حوزه نرمافزار و فناوری اطلاعات
سطح دوره
- پیشرفته
طول و زمانبندی دوره
- مدت دوره: ۴ ماه (۳۰ جلسه)
- جلسات کلاس: ۲۴ جلسه (فعالیتهای تئوری و عملی)
- جلسات جبرانی: ۴ جلسه
- جلسات ارزیابی: ۲ جلسه
سرفصلها و مباحث
-
مقدمه و مرور کلی مهندسی نرمافزار پیشرفته (3 جلسه)
- مرور مبانی و تاریخچه مهندسی نرمافزار
- معرفی چالشها و روندهای نوین در پروژههای نرمافزاری
- اصول و اهمیت مدیریت پروژههای نرمافزاری پیشرفته
-
تحلیل نیازمندیهای پیچیده و مهندسی نیازمندیها (4 جلسه)
- فرآیند جمعآوری و تحلیل نیازمندیها
- مدیریت تغییرات و نیازمندیهای پویا
- تکنیکهای مدلسازی نیازمندیها (UML, Use Case, Gherkin)
-
طراحی و معماری نرمافزار (5 جلسه)
- بررسی الگوهای طراحی و سبکهای معماری نرمافزار
- معماری چندلایه، MVC و میکروسرویسها
- مستندسازی و انتخاب معماری مناسب برای سیستمهای بزرگ
-
مدیریت پروژههای نرمافزاری پیشرفته (4 جلسه)
- متدولوژیهای نوین مدیریت پروژه: Agile, Scrum, Kanban
- ارزیابی و مدیریت ریسک در پروژههای نرمافزاری
- بودجهبندی، زمانبندی و کنترل پروژه
-
تضمین کیفیت و بهبود مستمر نرمافزار (4 جلسه)
- استراتژیها و روشهای تضمین کیفیت (QA) و آزمون نرمافزار
- بهرهگیری از استانداردهای کیفیت (ISO, CMMI)
- ارزیابی عملکرد و بهبود مستمر فرآیندهای نرمافزاری
-
مدیریت تغییر و نگهداری نرمافزار (4 جلسه)
- چالشهای نگهداری نرمافزار و استراتژیهای بهروزرسانی
- مدیریت تغییرات سیستم و استفاده از سیستمهای کنترل نسخه (Git)
- معیارهای ارزیابی نگهداری و پایداری نرمافزار
-
فرآیندهای نوین توسعه نرمافزار و فناوریهای روز (4 جلسه)
- DevOps و کاربردهای CI/CD در توسعه نرمافزار
- نرمافزار به عنوان سرویس (SaaS) و معماری ابری
- بررسی روندهای نوین مانند هوش مصنوعی در توسعه نرمافزار، اینترنت اشیاء (IoT) و مفاهیم مرتبط
-
پروژه نهایی و مطالعات موردی (2 جلسه)
- ارائه پروژه نهایی بر اساس یک مطالعه موردی عملی از یک پروژه نرمافزاری موفق
- تحلیل چالشها، روشهای بهبود و درسهای آماری استخراج شده از پروژه
نرمافزارها و ابزارهای مورد استفاده
- ابزارهای مدلسازی و طراحی (UML Tools، Enterprise Architect, PlantUML)
- سیستمهای مدیریت پروژه (JIRA، Trello)
- سیستمهای کنترل نسخه (Git)
- محیطهای توسعه یکپارچه (Visual Studio، Eclipse)
- ابزارهای تحلیل و تضمین کیفیت نرمافزار (SonarQube، ابزارهای CI/CD)
تکالیف و ارزیابی
- تکالیف تئوری و مطالعات موردی: 20%
- تکالیف عملی و پروژههای میانی: 30%
- پروژه نهایی و ارائه مطالعات موردی: 20%
- آزمونها و ارزیابیهای دورهای: 30%
مراجع درس
- Sommerville, I. Software Engineering – آخرین ویرایش
- Pressman, R. S. & Maxim, B. Software Engineering: A Practitioner's Approach – آخرین ویرایش
- سایر منابع و مقالات علمی مرتبط با مباحث پیشرفته مهندسی نرمافزار
تهیهکننده
- نام: مرتضی ذاکری
- نگارش: 1.0