اهداف درس مهندسی نرم افزار
هدف از این درس پرداختن به نکات مهندسی است که در کلیه مراحل تولید نرم افزار باید رعایت گردد. دانشجویان با مباحث ساخت نرم افزار(برنامه سازی)، تجزیه و تحلیل نیازمندی ها و طراحی نرم افزار در مقاطمع کاردانی آشنا می شوند . در دوره لیسانس نرم افزار و این درس ، هدف آموزش روش جدیدی برای تجزیه و تحلیل نیازها و یا طراحی نرم افزار نیست، بلکه هدف آموزش تولید نرم افزار به صورت یک محصول مهندسی است، مانند سایر محصولاتی که در سایر رشته های مهندسی تولید می گردد. در این درس ابتدا تفاوت محصولی که به روش مهندسی تولید می گردد با محصولی که به روش هنری تولید می شود بیان می شود، سپس انتظاراتی که یک محصول مهندسی باید برآورده سازد تشریح می گردد. در ادامه درس با تاکید بر روش های مهندسی تولید از جمله مدل سازی، قابل اندازه گیری و ارزیابی بودن، درستی یابی و اعتبارسنجی محصولات بینابینی، مروری بر دست آوردهای علمی در این زمینه در کلیه مراحل تولید نرم افزار انجام می شود. در انتها فعالیت های حمایتی از جمله مدیریت پروژه، زمان بندی، مدیریت ریسک ،مدیریت پیکربندی و تضمین کیفیت با تاکید بر تاثیر آن ها در تولید نرم افزار به صورت مهندسی مرور می شود.
سرفصل های درس مهندسی نرم افزار
- مقدمه
- فرایند‐مدل
- تولید چابک
- درک نیازها
- روش های صوری
- مفاهیم طراحی
- طراحی معماری
- طراحی واسط
- طراحی مبتنی بر الگو
- استراتژی های آزمون
- روش های آزمون
- اندازه گیری محصول
- اندازه گیری فرایند و پروژه
- برآورد
- مفاهیم کیفیت
- روش های مرور
- تضمین کیفیت
- مدیریت پیکربندی
- مدیریت پروژه
- زمانبندی
- مدیریت ریسک
مهندسی نرمافزار یک روش سیستماتیک، منظم و دقیق برای ساخت و ارائه محصولی نرمافزاری با کیفیت است.
مهندسی نرمافزار اغلب شامل فرایند خطی تحلیل، طراحی، پیادهسازی و آزمون است؛ که با بهکارگیری روشهای فنی و علمی از علوم مهندسی موجب تولید نرمافزاری با کیفیت مطلوب در طول یک فرایند انتخابی مناسب پروژه میشود.
کاربردهای مهندسی نرمافزار دارای ارزشهای اجتماعی و اقتصادی هستند، زیرا بهرهوری مردم را بالا برده، چند و چون زندگی آنان را بهتر میکنند. مردم با بهرهگیری از نرمافزار، توانایی انجام کارهایی را دارند که قبل از آن برایشان شدنی نبود. نمونههایی از این دست نرمافزارها عبارتاند از: سامانههای توکار، نرمافزار اداری، بازیهای رایانهای و اینترنت.
فناوریها و خدمات مهندسی نرمافزار به کاربران برای بهبود بهرهوری و کیفیت یاری میرساند. نمونههایی از زمینههای بهبود: پایگاه دادهها، زبانها، کتابخانهها، الگوها، فرایندها و ابزار هستند
حوزه تمرکز مهندسی نرمافزار
مهندسی نرمافزار به مفهوم توسعه و بازبینی یک سامانه نرمافزاری مربوط میباشد. این رشته علمی با شناسایی، تعریف، فهمیدن و بازبینی خصوصیات مورد نیاز نرمافزار حاصل سر و کار دارد. این خصوصیات نرمافزاری ممکن است شامل پاسخگویی به نیازها، اطمینانپذیری، قابلیت نگهداری، در دسترس بودن، آزمونپذیری، استفاده آسان، قابلیت حمل و سایر ویژگیها باشد.
مهندسی نرمافزار ضمن اشاره به خصوصیات فوق، مشخصات معین طراحی و فنی را آماده میکند که اگر بهدرستی پیادهسازی شود، نرمافزاری را تولید خواهد کرد که میتواند بررسی شود که آیا این نیازمندیها را تأمین میکند یا خیر.
مهندسی نرمافزار همچنین با خصوصیات پروسه توسعه نرمافزاری در ارتباط است. در این رابطه، با خصوصیاتی مانند هزینه توسعه نرمافزار، طول مدت توسعه نرمافزار و ریسکهای توسعه نرمافزار درگیر است.
زیر شاخههای مهندسی نرمافزار
مهندسی نرمافزار را میتوان به ۱۵ زیر رشته تقسیم کرد:
- شناخت: بررسی و استخراج نیازمندیهای نرمافزار که شامل استخراج، تحلیل و اعتبارسنجی خواستهها و تهیه مستندات مربوط جهت طراحی نرمافزار میباشد.
- طراحی نرمافزار: فرایند تعریف معماری، اجزا، واسط و دیگر مشخصههای سیستم یا اجزا را گویند. همچنین این زیر بخش به عنوان خروجی فرایند نیز تعریف میشود.
- طراحی نرمافزار : توجهات طراحی ،سازگاری، توسعه پذیری، تحمل خطا، قابلیت نگهداری، ماژولار بودن، قابلیت اطمینان، قابلیت استفاده مجدد، استحکام، امنیت، قابلیت استفاده، کارایی، قابلیت حمل، مقیاس پذیری.
- ساخت نرمافزار:جزئیات مربوط به ایجاد کار با معنی برای نرمافزار از طریق برنامهنویسی، بازنویسی و تأیید، تست واحدها و اجزا، تست یکپارچگی، و اشکال یابی.
- تست نرمافزار: بررسی فنی -تجربی، برای ارائه به سهامداران و ذی نفعان که اطلاعاتی در مورد کیفیت محصول یا خدمات تحت تست بیا ن میکند.
- تعمیر و نگهداری نرمافزار: کلیه فعالیتهای مورد نیاز برای ارائه پشتیبانی مقرون به صرفه در نرمافزار است.
- مدیریت پیکربندی نرمافزار:شناسایی پیکربندی یک سیستم در نقاط مشخصی از زمان به منظور کنترل سیستماتیک تغییرات پیکربندی و حفظ و نگهداری یکپارچگی برنامه و ردیابی پیکربندی در طول چرخه عمر سیستم را گویند.
- مدیریت نرمافزارهای مهندسی: نرمافزار مدیریت فعالیتها و برنامهریزی، هماهنگی، اندازهگیری، نظارت، کنترل و گزارشگیری به منظور حصول اطمینان از توسعه و نگهداری سیستماتیک، منضبط و اندازهگیری شونده نرمافزار است.
- فرایند نرمافزار: تعریف، اجرا و پیادهسازی، ارزیابی، اندازهگیری، مدیریت، ایجاد تغییر و بهبود فرایند چرخه حیات خود نرمافزار را گویند.
- روشهای مهندسی نرمافزار و مدلهای تحمیل ساختار در مهندسی نرمافزار با هدف سیستماتیک و منظم کردن فعالیت، قابل تکرار بودن و در نهایت افزایش کیفیت نرمافزار و موفقیت امیزتر بودن ان ایجاد میشود.
- تمرین مهندسی نرمافزار حرفهای دربارهٔ دانش، مهارت و نگرشهای مهندسی نرمافزار است که مهندسان نرمافزار باید تمرین مهندسی نرمافزار را به صورت حرفهای، مسئولانه و اخلاقی بکنند.
- اقتصاد مهندسی نرمافزار در مورد تصمیمگیری در زمینه کسب و کار تجاری مهندسی نرمافزار است.
- مبانی ریاضی و محاسباتی
- مبانی مهندسی
- ابزار مهندسی نرمافزار و روشها: ابزارهایی مبتنی بر کامپیوتر برای مهندسی نرمافزار ایجاد شدهاند تا به فرایندهای چرخه حیات نرمافزار و روشهایی که ساختاری را بر فعالیتهای مهندسی نرمافزار اعمال میکنند کمک کند تا به هدف ساخت فعالیتهای سیستماتیک و در نهایت به موفقیت بتوان رسید.
تست نرمافزار
تست نرمافزار یکی از بخشهای مهم و تأثیرگذار در مهندسی نرمافزار است. بالابردن کیفیت نرمافزارهای تولیدی بدون توجه به فرایند تست و تضمین کیفیت نرمافزار ممکن نخواهد بود. امروزه پیشگامان صنعت نرمافزار به این نتیجه رسیدند که توسعه و تست نرمافزار باید به صورت موازی با هم پیش روند. این امر سبب میشود که همراه با توسعه نرمافزار کیفی آن نیز تضمین شود. توجه به تست نرمافزار نکته متمایزکننده شرکتهای موفق آی تی و شرکتهای شکست خوردهاست.