مهندسی نیازمندیهای نرمافزار
| مدرس: دکتر مهران ریواده | پیشنیاز: – |
| ترم: | محل برگزاری: کلاس مجازی |
| زمان ارائه: شنبه ۱۵:۰۰ تا ۱۸:۰۰ | مشاهده: دریافت لایسنس |
معرفی درس
نیازمندیهای نرمافزار؛ از شناخت نیازهای کاربران تا مدلسازی و اعتبارسنجی سیستم
موفقیت یک سیستم نرمافزاری تنها به کیفیت پیادهسازی آن وابسته نیست؛ بلکه پیش از هر چیز، به این بستگی دارد که نیازهای واقعی کاربران و اهداف سیستم تا چه اندازه درست شناسایی و درک شده باشند. بسیاری از مشکلات و شکستهای پروژههای نرمافزاری از جایی آغاز میشوند که نیازمندیها بهدرستی استخراج نشدهاند، ابهام دارند یا در طول توسعه بهدرستی مدیریت نمیشوند. با افزایش ابعاد و پیچیدگی سیستمها، شناسایی و تحلیل این نیازمندیها نیز به فعالیتی تخصصی و نظاممند تبدیل شده است.
مهندسی نیازمندیها مجموعهای از روشها و تکنیکها برای شناخت، تحلیل، توصیف، مستندسازی و اعتبارسنجی نیازهای یک سیستم است. در این درس، با اصول و مراحل اصلی این حوزه آشنا میشوید؛ از درک دامنه مسئله و استخراج نیازمندیهای وظیفهمندی و غیروظیفهمندی گرفته تا ارزیابی، اولویتبندی، مستندسازی و تضمین کیفیت آنها. همچنین با روشهای مدلسازی نیازمندیها آشنا خواهید شد تا بتوانید اهداف، سناریوها، عملیات و رفتارهای مورد انتظار سیستم را به شکلی روشن و قابل تحلیل توصیف کنید.
در ادامه، موضوعاتی مانند مقصودگرایی در مهندسی نیازمندیها، مدلسازی اهداف سیستم، تحلیل خطر، نمودارهای سناریوگرا و نمودارهای UML بررسی میشوند. همچنین تکنیکهای وارسی و اعتبارسنجی، مدیریت تغییرات و ردیابی نیازمندیها مورد توجه قرار میگیرند. این مباحث به شما کمک میکنند تا نیازمندیهای یک سیستم را نه صرفاً بهصورت فهرستی از خواستهها، بلکه بهعنوان مجموعهای منسجم، قابل ارزیابی و قابل پیگیری در فرآیند توسعه نرمافزار درک کنید.
در پایان این درس چه تواناییهایی کسب میکنید؟
- درک اصول و مفاهیم پایه مهندسی نیازمندیها و نقش آن در موفقیت پروژههای نرمافزاری
- شناسایی نیازمندیهای وظیفهمندی و غیروظیفهمندی با توجه به دامنه مسئله و نیازهای ذینفعان
- ارزیابی، سازماندهی و اولویتبندی نیازمندیها
- توصیف و مستندسازی نیازمندیها به شکلی روشن، منسجم و قابل بررسی
- استفاده از مدلهای مقصود برای نمایش اهداف سیستم و تحلیل خطرهای مرتبط با آنها
- مدلسازی نیازمندیها با استفاده از سناریوها و نمودارهای UML
- تحلیل و مدلسازی عملیات و رفتار مورد انتظار سیستم
- بهکارگیری روشهای وارسی و اعتبارسنجی برای ارزیابی کیفیت و درستی نیازمندیها
- درک اصول مدیریت نیازمندیها، ردیابی آنها و مدیریت تغییرات در طول چرخه عمر سیستم
این درس برای دانشجویان مهندسی کامپیوتر و علوم کامپیوتر، بهویژه علاقهمندان به مهندسی نرمافزار، تحلیل و طراحی سیستمها و مدیریت پروژههای نرمافزاری، مناسب است. همچنین میتواند برای توسعهدهندگان و تحلیلگرانی مفید باشد که میخواهند توانایی خود را در فهم مسئله، تعامل با ذینفعان و تبدیل نیازهای اولیه به توصیفی دقیق و قابل اتکا از سیستم بهبود دهند.
پیشنیاز
آشنایی مقدماتی با مفاهیم توسعه نرمافزار و مراحل کلی چرخه عمر آن برای بهرهگیری بهتر از این درس مفید است. آشنایی قبلی با تحلیل و طراحی نرمافزار میتواند در درک برخی مباحث مدلسازی کمککننده باشد، اما تسلط بر ابزار یا روش خاصی از مهندسی نیازمندیها پیششرط اصلی درس نیست.
سرفصلها
- مبانی مهندسی نیازمندیها (Basics of Requirements Engineering) (۲ جلسه)
- درک دامنه مسئله و استخراج نیازمندیها (Domain Understanding & Requirements Elicitation) (۲ جلسه)
- ارزیابی نیازمندیها (Requirements Evaluation) (۲ جلسه)
- توصیف و مستندسازی نیازمندیها (Requirements Specification and Documentation) (۲ جلسه)
- تضمین کیفی نیازمندیها (Requirements Quality Assurance) (۱ جلسه)
- تکامل نیازمندیها و ردیابی (Requirements Evolution and Traceability) (۱ جلسه)
- مقصودگرایی در مهندسی نیازمندیها (Goal Orientation in Requirements Engineering) (۲ جلسه)
- مدلسازی اهداف سیستم با استفاده از مدلهای مقصود (Modeling System Objectives with Goal Diagrams) (۳ جلسه)
- تحلیل خطر با استفاده از مدلهای مقصود (Risk Analysis on Goal Models) (۲ جلسه)
- مدلسازی نیازمندیها با استفاده از نمودارهای سناریوگرا (Modeling Requirements with Scenario-Oriented Modeling) (۲ جلسه)
- مدلسازی نیازمندیها با استفاده از نمودارهای UML (Modeling System Requirements with UML Diagrams) (۲ جلسه)
- مدلسازی عملیات سیستم (Modeling System Operations) (۱ جلسه)
- مدلسازی رفتار سیستم (Modeling System Behaviors) (۲ جلسه)
- وارسی و اعتبارسنجی نیازمندیها (Requirements Verification and Validation) (۲ جلسه)
- مدیریت نیازمندیها (Requirements Management) (۱ جلسه)
ارزیابی
- تمرین و پروژه: ۶ نمره
- آزمونهای پایانی: ۱۴ نمره
منابع
- A. van Lamsweerde. Requirements Engineering: From System Goals to UML Models to Software Specifications. Wiley, 2009.
- K. Pohl. Requirements Engineering: Fundamentals, Principles, and Techniques. Springer, 2010.
- G. Kotonya and I. Sommerville. Requirements Engineering: Processes and Techniques. Wiley, 1998.
- S. Robertson and J. C. Robertson. Mastering the Requirements Process 2nd Edition, Addison-Wesley, 2006.
- B. Berenbach, D. Paulish, J. Kazmeier, and A. Rudorfer. Software & Systems Requirements Engineering: In Practice. McGraw-Hill, 2009.
- E. Hull, K. Jackson, and J. Dick. Requirements Engineering. 3rd Edition, Springer, 2010.
- J. Holt, S. Perry, and M. Brownsword. Model-Based Requirements Engineering. The Institution of Engineering and Technology (IET), 2011.
- D. Leffingwell. Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise. Addison-Wesley, 2011.
- M. Chemuturi. Requirements Engineering and Management for Software Development Projects. Springer, 2012.