شرح درس | این درس دانشجویان با اهداف مهندسی نرمافزار، فرآیند توسعه نرمافزار و روش تحلیل و طراحی سیستمهای اطلاعاتی به روش شیگرا آشنا خواهند شد. مباحث زیر در درس پوشش داده میشوند : 1. معرفی مهندسی نرمافزار و چالشهای آن 2. مدلهای فرآیند توسعه نرمافزار و تفاوت آنها : فرآیندهای آبشاری، تکراری ، مزایا و معایب هر روش، معرفی مراحل توسعه نرمافزار مشترک در فرآیندها (مهندسی نیازها، تحلیل، طراحی، پیادهسازی و آزمون) 3. مهندسی نیازمندیها: معرفی، مولفهها و ابزارهای آن (قصه کاربر و مورد کاربردی)، نوشتن مورد کاربردی و قصه کاربر، مدل مورد کاربردی در UML 4. تحلیل سیستم : مدلسازی دامنه (ساختار) ، شناسایی عملیات سیستم، قرارداد سیستم و توصیف آنها بهکمک زبان OCL 5. طراحی سیستم: تقسیم وظایف اشیا به کمک اصول پنجگانه GRASP، نمودارهای توالی، تعامل، کلاس در UML 6. معماری نرمافزار: تعریف، نیازمندی غیرکارکردی و معماری، نماهای مختلف معماری، سبکهای معماری : 3-لایه ، MVC ، C/S، نمودار استقرار، بسته و مولفه در UML 7. طراحی سیستم : تعیین اهداف طراحی، لایه بندی و تقسیم بندی کلاسها ، همروندیها، کنترل دسترسی ، جریان کنترل سراسری، مدیریت داده، شرایط مرزی سیستم (شروع / توقف سیستم) 8. الگوهای طراحی: Facade، Publisher/Subscriber، Proxy، Adaptor ، Factory (این الگوها در حین درس براساس نیاز تدریس میگردند) 9. آشنایی مقدماتی با مدیریت پروژه و برنامهریزی : وظایف مدیر در شروع ، اجرا و خاتمه پروژه ، تخمین پروژه و منابع ، دیاگرامهای Gantt و شبکه. |
اهداف درس | هدف این درس آشنایی دانشجویان با فرآیند، روش و ابزارهای توسعه نرمافزار به درد بخور است و دانشجویان را برای کار در حوزه مهندسی نرمافزار آماده میسازد. دانشجویانی که این درس را با موفقیت پشت سر بگذارند بینش مناسبی در موارد زیر خواهند داشت: 1- کاربرد فرآیند توسعه نرمافزار در تولید نرمافزار، 2- انتخاب و به کارگیری ابزارهای توسعه نرمافزار، 3- مستندسازی فرآوردههای نرمافزاری بهکمک زبان UML، 4- تحلیل و طراحی سیستمها به روش شیگرا. |
مراجع | [1] C. Larman, Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, Addison Wesley, 2004 [2] B. Bruegge and A. Dutoit: Object-Oriented Software Engineering: Using UML, Patterns and Java, Third Edition, Prentice Hall, 2010 [3] Ivan Marsic, Software Engineering, Rutgers University, 2011 [4] David L. Olson, Information System Project Management, McGrawHill, 2004 [5] Roger S. Pressman, Software Engineering: a Practitioner’s Approach, McGrawHill, fifth edition, 2001 |