مهندسی نرمافزار یعنی استفاده از اصول مهندسی بجا و مناسب برای تولید و ارائه محصول نرمافزاری با کیفیت که قابل اطمینان و با صرفه بوده و برروی ماشینهای واقعی به طور کارآمدی عمل کند.
مهندسی نرمافزار یک روش سیستماتیک، منظم و دقیق برای ساخت و ارائه محصولی نرمافزاری با کیفیت است.
مهندسی نرمافزار اغلب شامل فرایند خطی تحلیل، طراحی، پیادهسازی و آزمون است؛ که با به کارگیری روشهای فنی و علمی از علوم مهندسی موجب تولید نرمافزاری با کیفیت مطلوب در طول یک فرایند انتخابی مناسب پروژه میشود.
کاربردهای مهندسی نرمافزار دارای ارزشهای اجتماعی و اقتصادی هستند، زیرا بهرهوری مردم را بالا برده، چند و چون زندگی آنان را بهتر میکنند. مردم با بهرهگیری از نرمافزار، توانایی انجام کارهایی را دارند که قبل از آن برایشان شدنی نبود. نمونههایی از این دست نرمافزارها عبارتاند از: سامانههای توکار، نرمافزار اداری، بازیهای رایانهای و اینترنت.
فناوریها و خدمات مهندسی نرمافزار به کاربران برای بهبود بهرهوری و کیفیت یاری میرساند. نمونههایی از زمینههای بهبود: پایگاه دادهها، زبانها، کتابخانهها، الگوها، فرایندها و ابزار.
مهندسی نرمافزار عبارت است از کاربرد مهندسی برای طراحی، توسعه، پیادهسازی و نگهداری ازنرمافزار در یک روش سیستماتیک.
تعاریف رسمی مهندسی نرمافزار عبارتند از:
- «تحقیقات، طراحی، توسعه و تست سیستمهای عامل در سطح نرمافزار، کامپایلر، نرمافزار شبکه توزیع برای پزشکی، صنعتی، نظامی، ارتباطات، هوا فضا، کسب و کار، علمی و به طور کلی برنامههای کاربردی محاسباتی.»
- «برنامه سیستماتیک علمی و دانش فن آوری و روشها و تجربههایی برای طراحی، پیادهسازی و تست و مستندسازی نرمافزار»
- «برنامهای سیستماتیک و منظم با قابلیت سنجش توسعه و عملکرد و نگهداری از نرمافزار»
- "یک از رشتههای مهندسی است که در رابطه با تمام جنبههای تولید نرم افزار است "
- و «ایجاد و استفاده از اصول درست مهندسی برای بدست آوردن نرمافزاری که از لحاظ اقتصادی، قابل اعتماد و صرفه است ودر ماشینهای واقعی بصورت کارایی عمل میکند.»
- مهندسی نرمافزار (به انگلیسی: Software engineering) یعنی استفاده از اصول مهندسی بجا و مناسب برای تولید و ارائه محصول نرمافزاری با کیفیت که قابل اطمینان و با صرفه بوده و برروی ماشینهای واقعی به طور کارآمدی عمل کند. مهندسی نرمافزار یک روش سیستماتیک، منظم و دقیق برای ساخت و ارائه محصولی نرمافزاری با کیفیت است. مهندسی نرمافزار اغلب شامل فرایند خطی تحلیل، طراحی، پیادهسازی و آزمون است؛ که با به کارگیری روشهای فنی و علمی از علوم مهندسی موجب تولید نرمافزاری با کیفیت مطلوب در طول یک فرایند انتخابی مناسب پروژه میشود. کاربردهای مهندسی نرمافزار دارای ارزشهای اجتماعی و اقتصادی هستند، زیرا بهرهوری مردم را بالا برده، چند و چون زندگی آنان را بهتر میکنند. مردم با بهرهگیری از نرمافزار، توانایی انجام کارهایی را دارند که قبل از آن برایشان شدنی نبود. نمونههایی از این دست نرمافزارها عبارتاند از: سامانههای توکار، نرمافزار اداری، بازیهای رایانهای و اینترنت. فناوریها و خدمات مهندسی نرمافزار به کاربران برای بهبود بهرهوری و کیفیت یاری میرساند. نمونههایی از زمینههای بهبود: پایگاه دادهها، زبانها، کتابخانهها، الگوها، فرایندها و ابزار.
نیاز به مهندسی نرمافزار
نرمافزار عموماً از محصولات و موقعیتهایی شناخته میشود که قابلیت اطمینان زیادی از آن انتظار میرود، حتی در شرایط طاقت فرسا، مانند نظارت و کنترل نیروگاههای انرژی هستهای، یا هدایت یک هواپیمای مسافربری در هوا، چنین برنامههایی شامل هزاران خط کد هستند، که از نظر پیچیدگی با پیچیدهترین ماشینهای نوین قابل مقایسه هستند. بهعنوان مثال، یک هواپیمای مسافربری چند میلیون قطعه فیزیکی دارد (و یک شاتل فضایی حدود ده میلیون بخش دارد)، در حالی که نرمافزارِ هدایت چنین هواپیمایی میتواند تا ۴ میلیون خط کد داشته باشد.
با توجه به گسترش روزافزون دنیای رایانه امروزه بیش از هر زمان دیگری نیاز به متخصصان رایانه احساس میشود. متأسفانه این رشته در ایران بازار کار خوبی ندارد طبق آمارها ۶۳٫۲۷ درصد از فارغالتحصیلان در سال ۹۰ مشغول به کار در سایر مشاغل هستند. اما برای مهندسان سختافزار هم امکان کار در شرکتهای تولیدکننده قطعات و دستگاهها و مراکز صنعتی – تولیدی بسیار فراهم است و از نظر سطح درآمدی هم با توجه به دانش و پشتکار شخصی در حد متوسط قرار دارند. به طور کلی این رشته در ایران با استقبال چندانی رو به رو نیست؛ این نیز حاکی از نبود برخی از زیرساختها در ایران هست.
تکنولوژیها و روشهای عملی
مهندسان نرمافزار طرفدار تکنولوژیها و روشهای عملی بسیار متفاوت و مختلفی هستند، که با هم ناسازگار هستند. این بحث در سالهای دهه ۶۰ میلادی شروع شد و ممکن است برای همیشه ادامه پیدا کند. مهندسان نرمافزار از تکنولوژیها و روشهای عملی بسیار متنوعی استفاده میکنند. کسانی که کار عملی میکنند از تکنولوژیهای متنوعی استفاده میکنند: کامپایلرها، منابع کد، پردازشگرهای متن. کسانی که کار عملی میکنند از روشهای عملی بسیار متنوعی استفاده میکنند تا تلاشهایشان را اجرا و هماهنگ کنند: برنامهنویسی در دستههای دونفری، بازبینی کد، و جلسات روزانه. هدف هر مهندس نرمافزار بایستی رسیدن به ایدههای جدید خارج از الگوهای طراحی شده قبلی باشد، که باید شفاف بوده و بهخوبی مستند شده باشد.
با وجود رشد فزاینده اقتصادی و قابلیت تولید فزایندهای که توسط نرمافزار ایجاد شده، هنوز هم بحث و جدلهای ماندگار دربارهٔ کیفیت نرمافزار ادامه دارند.
فهرست مطالب:
فصل اول: طراحی نرم افزار بی درنگ
1- سیستم بی درنگ چیست
2- مدل سیستم بی درنگ با سنسور ومحرک
3- دو دسته ازتحریک ها درسیستم بی درنگ
4- مراحل فرآیندطراحی
5- طراحی سیستم چیست
6- تحریک وپردازش پاسخ درسیستم
7- قطعات سیستم های عامل بی درنگ
8- سیستم عامل بی درنگ
فصل دوم: طراحی واسط کاربر
1- اصول طراحی واسط کاربر
2- امکانات ترمیم خطا واسط های کاربر
3- پنج سبک تعامل باسیستم های نرم افزاری
4- روش نمایش اطلاعات چندگانه
5- نمونه هایی از مجسم سازی داده
6- نکاتی برای استفاده مؤثرازرنگ درواسط
7- عوامل طراحی درپیام های خطا
8- فرآیند طراحی واسط کاربر
فصل سوم: توسعه سریع نرم افزار
1- فایده توسعه سریع نرم افزار
2- مشکلات اساسی توسعه تدریجی
3- توسعه تدریجی که برطراحی معماری تاکید دارد
4- پنج اصول روش های فعال
5- برنامه نویسی کرانه ای چیست
6- شکل کلی برنامه نویسی کرانه ای
فصل چهارم: استفاده مجدد نرم افزار
1- فواید استفاده مجددنرم افزار
2- مشکلات استفاده مجدد
3- عوامل مهم برای برنامه ریزی استفاده مجدد
4- روشهایی که ازاستفاده مجددنرم افزارپشتیبانی می کنند
5- چهار عنصر اساسی الگوهای طراحی
6- محیط های کاری کاربرد
فصل پنجم: مهندسی نرم افزار براساس قطعه
1- مهندسی نرم افزار براساس قطعه(CBSE)
2- فرآیندCBSE چیست
3- مدل کلی فرآیندCBSE
4- مبانی مهندسی نرم افزاربراساس قطعه
5- مشکلات روش CBSE
6- ویژگی های قطعه
فصل ششم: توسعه سیستم های حیاتی
1- سه روش مکمل برای توسعه نرم افزار
2- ویژگی های فرآیندهای قابل اتکا
3- فعالیتهای فرآیندبرای اجتناب از عیب
4- تکنیک های مهندسی نرم افزار برای تولید نرمافزار عاری از عیب
5- چهارجنبه از تحمل عیب
فصل هفتم: تکامل نرم افزار
1- پویایی تکامل برنامه چیست
2- قوانین چندگانه لمان
3- سه نوع نگهداری نرم افزارعبارتند
4- عواملی که درنگهداری نرم افزارمنجربه هزینه بالامی شود
5- تعریف پیش بینی نگهداری
6- طرح جامع پیش بینی نگهداری
7- برای پی بردن روابط سیتم ومحیط بایدسه مورد را برآورد کرد
8- معیارهای برآوردقابلیت نگهداری
فصل هشتم: وارسی و اعتبارسنجی
1- هدف نهایی فرآیند وارسی و اعتبارسنجی
2- دو تکنیک بررسی و تحلیل سیستم در فرآیند v&v
3- بازرسی ها و تست های نرم افزار
4- فرآیند اشکال زدایی که نقص های موجود در سیستم را یافته و اصلاح می کند
5- تعریف فعالیت وارسی واعتبارسنجی
6- مشخصات جامع مدل
فصل نهم: تست نرم افزار
1- دو هدف فرآیند تست نرم افزار
2- مدل کلی فرآیند تست
3- دو فاز جداگانه برای تست سیستم
4- چهارنوع ازواسط های بین قطعات برنامه
5- سه روش برای طراحی موارد تست
6- تست براساس ساختاروپیاده سازی نرم افزار
7- مجموعه مجتمعی ازابزارها برای پشتیبانی ازفرآیند تست
فصل دهم: اعتبارسنجی سیستم های حیاتی
1- مراحل فرآیند اندازه گیری قابل اعتماد
2- تعریف سابقه عملیاتی نرم افزار
3- نمونه ای از سابقه عملیاتی براساس احتمال ورودی ها
4- فواید پیش بینی قابلیت اعتماد سیستم
5- فعالیت های تضمین امنیت درفرآیند توسعه
6- چهار روش مکمل برای بررسی حفاظت
7- تعریف مواردامنیت سیستم
8- مثالی ازموارد امنیتی درپمپ انسولین
فصل یازدهم: مدیریت بر افراد
1- چهارعامل مهم درمدیریت افراد
2- سه دسته ازمتخصصین درمطالعه روانشناختی انگیزش
3- عوامل مؤثردرکارگروهی
4- امتیازات گروه منسجم
5- عوامل مؤثربراثربخشی ارتباطات
6- پنج سطح مدل بلوغ قابلیت افراد
فصل دوازدهم: برآورد هزینه نرم افزار
1- عوامل مؤثردرتعیین قیمت نرم افزار
2- عوامل مؤثردربهره وری مهندسی نرم افزار
3- تکنیک های برآوردهزینه
4- تغییراتی که بر برآورد حاصل ازتجربه تأثیرمی گذارد
5- مدل های الگوریتمی تعیین هزینه کوکومو2
6- عوامل مقایسه درکوکومو2برای محاسبه توان
7- گزینه هایی که درتعیین هزینه نقش دارند
فصل سیزدهم: مدیریت کیفیت
1- کیفیت فرآیند توسعه چیست
2- مدل کلی کیفیت فرآیند و محصول
3- چگونگی محاسبه صفات برای نرم افزار
4- روابط بین صفات برای محاسبه صفات کیفیت
5- استانداردهای محصول و استانداردهای فرآیند
6- رابطه بین ایزو9000، مرجع کیفیت و برنامه های کیفیت پروژه
7- نمونه های از استانداردهای سند
8- ویژگی های استاندارد های کیفیت سند
فصل چهاردهم: بهبود فرآیند
1- سه مرحله اصلی بهبود فرآیند
2- چهار دسته فرآیند نرم افزاری
3- موقعیت ابزارها در پشتیبانی ازفرآیند
4- فرآیند تست یک پیمانه درسیستمی که از یک فرآیند مدیریت پیکربندی کنترل شده استفاده می کند
5- تغییر فرآیند چیست
فصل پانزدهم: مدیریت پیکربندی
1- سیستم ها با پیکربندی مختلف
2- سه تکنیک شناسایی قطعه نرم افزاری
3- موارد نگارش سیستم
4- فرآیند کامپایل کردن و پیوند دادن قطعات نرم افزاری
5- قابلیت های فراهم شده توسط سیستم مدیریت نسخه
6- تعریف سیستمهای مدیریت نسخه
7- تفاوت های بین نسخه هابه صورت دلتا
8- امکاناتی که توسط ابزارهای کیس آماده می شوند
پاورپوینت کامل و جامع با عنوان مهندسی نرم افزار 2 در 299 اسلاید