مهندسی نیازمندی ها در مهندسی نرم افزار چیست؟
مستندسازی نرم‌افزار
مستندسازی نیازمندی‌ها به تشریح و توضیح اینکه یک نرم‌افزار خاص چه می‌کند یا از چه عملکردهایی برخوردار است می‌پردازد. این تشریح در طول توسعه نرم‌افزار مورد استفاده قرار می‌گیرد تا شاخصی باشد برای آنچه نرم‌افزار انجام می‌دهد یا باید انجام بدهد. همچنین این مستندسازی به عنوان یک توافقنامه یا اساسی برای توافقنامه بر آنچه که یک نرم‌افزار انجام می‌دهد یا باید انجام دهد مورد استفاده قرار می‌گیرد. نیازمندی‌ها توسط تمام کسانی که در تولید نرم‌افزار دست‌اندرکار بوده‌اند تولید و مصرف می‌گردد، که تعدادی از آن‌ها عبارتند از: کاربران نهایی، مشتریان، مدیران محصول، مدیران پروژه، فروش، بازاریابی، معماران نرم‌افزار، مهندسین قابلیت مصرف، طراحان تعامل، توسعه‌دهندگان و سنجش‌گران؛ بنابراین، مستندسازی محصول اهداف مختلف و فراوانی را دنبال می‌کند. نیازمندی‌ها به روش‌های گوناگونی ارائه می‌گردد. [نیازمندی]ها می‌توانند به روش: شبه‌هدف (مثلا [محیط کاری توزیع‌شده])، [نزدیک به طراحی] (مثلا ، builds می‌توان با راست‌کلیک کردن بر روی یک [فایل تنظیمات|فایل کانفیگیوریشن] و انتخاب گزینه «build» شروع گردد) یا هر روش دیگری ارائه شوند. آن‌ها همچنین می‌توانند به عنوان یک بیانیه به زبان طبیعی، اَشکال ، فرمول‌های ریاضی و ترکیبی از همه آن‌ها مشخص گردد. تنوع و پیچیدگی مستندسازی نیازمندی‌ها آن را تبدیل به چالشی حتمی نموده‌است. ممکن است نیازمندی‌ها تلویحی بوده و به‌سختی پیدا شود. درک این مسئله که هنگام مستندسازی نیازمندی‌ها تا چه اندازه باید پیش برویم و چه میزان را برای تیم‌های مستندسازی دیگر مانند مستندسازان طراحی و مستندسازان معماری واگذار نماییم بسیار دشوار است و دشوار تر از آن، پیاده‌سازی این مستند است بگونه‌ای که گسترهٔ مخاطبان آن که از طراحان و معماران سیستم تا ذینفعان را در بر می‌گیرد را اقناع کند. مستندسازی نیازمندی‌ها معمولا ناتمام است (یا حتا وجود ندارد). بدون مستندسازی نیازمندی‌ها، تغییرات نرم‌افزاری دشوارتر بوده و به تبع خطای بیشتر (کیفیت نرم‌افزاری کاهش‌یافته) و زمان بیشتری (پرهزینه‌تر) را بر پیاده سازان تحمیل خواهد کرد. اهمیت مستندسازی نیازمندی‌ها رابطه مستقیم با پیچیدگی محصول، تأثیر محصول، و امید به زندگی نرم‌افزار است. اگر نرم‌افزار بسیار پیچیده باشد یا توسط تعداد زیادی از افراد ساخته شده باشد، مستندسازی نیازمندی‌ها کمک می‌کند تا با آنچه که قصد داریم به آن برسیم بهتر ارتباط برقرار کنیم. به عبارت دیگر دورنمای بهتری از محصول نهایی خود داشته باشیم. اگر نرم‌افزار برای امنی تهدید باشد یا تأثیرات منفی برای زندگی بشر داشته باشد (برای مثال، سیستم‌های انرژی هسته‌ای، تجهیزات پزشکی)، مستندسازی نیازمندی‌های رسمی‌تری مورد نیاز خواهد بود. اگر بنابراین باشد که نرم‌افزار تنها یک یا دو ماه عمر کند (برای مثال، اپلیکیشن موبایلی که تنها برای یک کمپین خاص ساخته شده‌است)، به مستندسازی بسیار کمتری نیاز خواهد بود. اگر قرار است یک نرم‌افزار نسخه اولیه باشد که بعدتر نسخه‌های دیگری بر اساس آن ساخته شوند، مستندسازی نیازمندی‌ها در زمان مدیریت تغییر نرم‌افزار و تأیید اینکه هیچ چیزی در نرم‌افزار در زمان تعدیل شکسته نشده‌است، مفید خواهد بود. به‌طور سنتی، نیازمندی‌های نرم‌افزار در اسناد نیازمندی‌ها مشخص می‌گردند (برای مثال، کاربرد اپلیکیشن‌های پردازش واژه و اپلیکیشن‌های spreadsheet). برای مدیریت پیچیدگی روزافزون و ذات متغیر مستندسازی نیازمندی‌ها (و به‌طور کلی، مستندسازی نرم‌افزار)، سیستم‌های دیتابیس‌محور و ابزار مدیریت نیازمندی‌ها مبتنی بر اهداف خاص به وجود آمده‌اند که حامیان فراوانی دارند.
مشخصات کاربردی
درچرخه زندگی مهندسی نرم‌افزار صنعتی سامان یافته (مدل آبشاری)، مشخصات کاربردی توصیف می‌کند که چه چیزی باید اجراشود. سپس، سند معماری سیستمها توضیح می‌دهد که چگونه عملکردها با استفاده از یک محیط نرم‌افزاری انتخاب شده تحقق می‌یابد. در توسعهٔ سیستمهای غیر صنعتی طرح اصلی، مشخصات کاربردی معمولاً بعداً یا به‌عنوان بخشی از تجزیه و تحلیل الزامات نوشته می‌شوند. مهندسی کانسی
مهندسی کانسی همواره یک روش پیشرفته به لحاظ ریاضیات بوده‌است. بسیاری از انواع آن به دانش تخصصی خوب و مقدار معقولی از تجربه برای انجام مطالعات نیاز دارند. این مسئله همچنین مانع بزرگی برای کاربرد گسترده مهندسی کانسی بوده‌است. به منظور تسهیل کار برخی از بسته‌های نرم‌افزاری در سال‌های اخیر توسعه داده شده‌است که اغلب آن‌ها در ژاپن تولید شده‌اند. دو نوع مختلف از بسته‌های نرم‌افزاری وجود دارد: کنسول کاربران برنامه‌های نرم‌افزاری هستند که طراحی محصول براساس اولویت‌های ذهنی کاربران کانسی را محاسبه و ارائه می‌کنند. با این حال، این نرم‌افزار نیاز به یک پایگاه داده دارد که ارتباطات بین کانسی و ترکیب ویژگی‌های محصول را مورد بررسی قرار می‌دهد. برای ساخت چنین پایگاه‌های داده‌ای، ابزارهای جمع‌آوری داده‌ها و تجزیه و تحلیل داده‌ها را می‌توان مورد استفاده قرار داد. ابزارهای بیشتری مورد استفاده در شرکت‌ها و دانشگاه‌ها وجود دارد که ممکن است برای عموم در دسترس نباشد. معماری نرم‌افزار
این فرایند باید به شکلی انجام شود که معیارهای کیفی مانند بهره‌دهی، امنیت و قابلیت اطمینان و مدیریت‌پذیری، بهینه شده باشند. فیلیپ کرچن و گریدی بوش معماری نرم‌افزار را به صورت زیر تعریف می‌نمایند: «معماری نرم‌افزار شامل تصمیمات کلیدی راجع به ساختار یک سیستم نرم‌افزاری است که شامل انتخاب اجزای سازنده نرم‌افزار و رابطه‌های آنها است. همچنین رفتار این اجزا را به عنوان تعاملی که باهم برای ساختن یک زیر سیستم بزرگتر، انجام می‌دهند، مشخص می‌سازد. معماری نرم‌افزار همچنین، کارکردها، قابلیت استفاده، انعطاف پذیری، عملکرد، استفاده مجدد، قابل درک بودن، محدودیت‌های اقتصادی و فناوری، نحوه تبادل اطلاعات و جنبه‌های زیبایی سیستم نرم‌افزاری را شامل می‌شود.» نرم‌افزار کاربردی
نرم‌افزار کاربردی یا اَپ یا یک ،برنامه رایانه‌ای است؛ که برای اجرای گروهی از توابع هماهنگ، وظایف یا فعالیت‌هایی برای منفعت کاربر طراحی شده‌است. نمونه‌هایی از یک نرم‌افزار کاربردی عبارتند از: واژه‌پرداز ها، صفحات گسترده ها، نرم‌افزارهای حسابداری، مرورگرهای وب، رایانامه‌ خوان ها، مدیا پلیرها، مشاهده گر های پرونده، شبیه‌سازهای پرواز و ویرایشگرهای گرافیک. این عبارت نرم‌افزار سیستمی معنی پیدا می‌کند که عمدتاً شامل اجرا کردن رایانه می‌شود. نرم‌افزار سیستمی در مقابل در پس‌زمینه عمل می‌کند و خدماتی را فراهم می‌کند که دیگر نرم‌افزارها یا سیستم‌عامل می‌توانند برای انجام کارهای خود از آن استفاده کنند. اما در عوض معمولاً مستقیماً با کاربر عادی در تماس نیست و خدماتی را به او ارائه نمی‌دهد. موبایل ها(هوشمند) نیز همانند کامپیوترها نرم افزارها و برنامه های مختلفی دارند. که در بازار آنها را بیشتر با واژه اپلیکیشن یا به اختصار App میشناسند. که در واقع به معنی همان اپلیکیشن موبایل یا نرم افزار موبایل می باشد. نقشه نرم‌افزاری
کاربردهای اصلی آن شامل تحلیل ریسک و نظارت بر کیفیت کد، فعالیت تیم، یا پیشرفت توسعه نرم‌افزار است و به‌طور کلی، بهبود اثربخشی مهندسی نرم‌افزار با توجهبه همه مصنوعات، فرایندها، و سهامداران در سراسر فرایند مهندسی نرم‌افزار و نگهدارینرم‌افزار است. مهندسی نرم‌افزار
مهندسی نرم‌افزار ضمن اشاره به خصوصیات فوق، مشخصات معین طراحی و فنی را آماده می‌کند که اگر به‌درستی پیاده‌سازی شود، نرم‌افزاری را تولید خواهد کرد که می‌تواند بررسی شود که آیا این نیازمندی‌ها را تأمین می‌کند یا خیر. الگوی خلاقیت
الگوی خلاقیت () در مهندسی نرم‌افزار، به نوعی از الگوهای طراحی نرم‌افزاری اطلاق می‌گردد، که با مکانیسم‌های ایجاد و خلق اشیاء سروکار دارند و سعی دارند تا اشیاء را به روشی متناسب با موقعیت شیء مورد نظر، ایجاد نمایند. در این فرایند شکل اصلی ایجاد اشیاء می‌تواند منجر به بروز مشکلاتی در طراحی یا اعمال پیچیدگی بیشتر، در طراحی گردد، که الگوهای خلاقیت این مشکلات را با اعمال نوعی از کنترل بر فرایند ایجاد اشیاء حل می‌نمایند. الگوهای خلاقیت اغلب به الگوهای خلاقیت اشیاء و الگوهای کلاس-خلاقیت تفکیک می‌شوند. ۵ الگوی طراحی شناخته‌شده که جزئی از الگوهای خلاقیت محسوب می‌شوند، شامل: الگوی کارخانه انتزاعی، الگوی سازنده، الگوی متد کارخانه شیء، الگوی نمونه اولیه و الگوی یگانه می‌باشند. اجاره نرم‌افزار
دو راه اصلی برای سرویس نرم‌افزاری وجود دارد: نرم‌افزاری که نیازهای خاص یک شرکت را پاسخ می‌دهد (یه عنوان مثال: نرم‌افزاری برای مراقبت سلامتی، کشاورزی، مشاور املاک، صنایع اقتصادی) محصولاتی که بر دسته‌بندی نرم‌افزارها تمرکز می‌کند (بازاریابی، فروش‌ها، ابزار توسعه دهندگان، منابع انسانی) که با صنایع در تضاد هستند. نرم‌افزار سازمانی
نرم‌افزار سازمانی مجموعه‌ای از برنامه‌های رایانه‌ای را توصیف می‌کند که دارای ویژگی تجاری مشترکی هستند؛ ابزارهایی برای مدلسازی چگونگی کارکرد یک سازمان و نیز ابزارهای توسعه‌ایی برای ساخت برنامه‌هایی بی‌همتا برای آن سازمان. این نرم‌افزار به حل مشکلات سازمانی می‌پردازد(به جای مشکلات دپارتمانی). همچنین این نرم‌افزارها با استفاده از معماری نرم‌افزار سازمانی نوشته می‌شوند. نرم‌افزارهای سطح سازمانی با هدف پیشرفت و بهبود محصولات سازمانی برای پشتیبانی مطنقی از کارهاست. نیازمندی غیرعملکردی
نیازمندی‌های غیر عملیاتی نیازمندی‌هایی هستند که معیارهایی را مشخص می‌کنند تا بتوان بر اساس آن‌ها به جای رفتارهای خاص، در مورد بهره برداری از یک سیستم قضاوت کرد. این کار با نیازمندی‌های عملیاتی که رفتار خاص یا توابع یک نرم‌افزار را تعریف می‌کند در تضاد است. ساخت نرم‌افزار
مدیریت خطا به نوعی برنامه‌نویسی اطلاق می‌شود که در آن پیش‌بینی‌ها و کد نویسی‌هایی برای خطاهای حین اجرا یک برنامه صورت می‌گیرد. مدیریت استثنا ساختاری در برنامه‌نویسی است که با کمک آن می‌توان در صورت بروز پی در پی خطا (چه یکسان و چه متغیر) برنامه را مجاب کرد تا به روند عادی اجرا خود بپردازد. دامنه خطاها به مجموعه ای از تکنیک‌ها اطلاق می‌شود که به کمک آن‌ها می‌توان خطاهای یک برنامه را آشکار کرده و تمهیدات لازم را برای بازیابی مجدد برنامه فراهم کرد. این مجموعه تکنیک، اعتبار برنامه‌ها را افزایش می‌دهند. بدهی فنی
با شروع تغییر در یک کدبندی، اغلب نیاز به ایجاد تغییرات هماهنگ به‌طور هم‌زمان در سایر قسمتهای پایه کد یا مستندات وجود دارد. تغییرات مورد نیاز که تکمیل نشده‌اند بدهی در نظر گرفته می‌شوند که باید در مقطعی از آینده پرداخت شود. دقیقاً مانند بدهی مالی، این تغییرات ناتمام باعث روی هم انباشته شده و ساخت یک پروژه را دشوار می‌کند. اگرچه این اصطلاح در توسعه نرم‌افزار به‌طور عمده استفاده می‌شود، اما می‌تواند در سایر حرفه‌ها نیز کاربرد داشته باشد. چارچوب نرم‌افزاری
در برنامه‌نویسی کامپیوتر یک چهارچوب نرم‌افزاری یک انتزاع است که در آن نرم‌افزار فراهم کننده عملکردهای عمومی می‌تواند به صورت انتخابی توسط کدهای نوشته شده کاربران عوض شود، در تعریفی بهتر می‌توان گفت یک فراهم کننده طراحی‌های قابل استفاده برای نرم‌افزار است. در واقع یک چهارچوب یک راه استاندارد برای ساخت و گسترش برنامه‌ها است و یک محیط با قابلیت استفاده مجدد در محیط نرم‌افزاری است به صورتی که عملکردهای خاصی از بخش‌های یک پلتفرم بزرگ نرم‌افزاری را آماده می‌کند تا برنامه‌نویسی نرم‌افزارهای کاربردی و الگوریتم‌ها را آسان‌تر کند، چهارچوب‌های نرم‌افزاری ممکن است شامل برنامه‌های پشتیبانی، کامپایلرها، کتابخانه‌های کد، مجموعه ابزارها ورابط‌های برنامه‌نویسی برنامه (API) باشد که تمام اجزای مختلف را گرد هم آورده تا امکان توسعه یک پروژه یا سیستم فراهم کند. مهندسی نیازمندی‌ها
اصطلاح مهندسی نیازمندی‌ها برای اولین بار در سال 1979 میلادی در گزارش فنی منتشر شده توسط گروه ، استفاده شد، اما تا سال 1990 به صورت عمومی مورد استفاده قرار نگرفت. عمومی‌سازی این اصطلاح با انتشار مجموعه آموزشی توسط و آغاز کار مجموعه‌ای از کنفرانس‌ها در این حوزه صورت گرفته است. مهندسی نرم‌افزار بر پایه مؤلفه
پیکرپارها را برای ایجاد گرایش سرویسی (خدماتی) یا سرویس‌گرایی یا همان Service Orientation در سرتاسر مهندسی نرم‌افزار به عنوان بخشی از پلتفرم آغازین در نظر گرفته می‌شوند، به عنوان مثال سرویس‌های وب (Web Service) و به‌تازگی هم که معماری سرویس گرا یا Service-Oriented Architecture (به‌طور اختصار به آن SOA نیز گفته می‌شود) که توسط آن یک پیکرپار به عنوان یک سرویس در نظر گرفته می‌شود و در نتیجه دارای ویژگی‌های بیشتری و کاربری‌های بهتری نسبت به یک پیکرپار پیدا می‌کند. پیکرپارها توانایی ایجاد یا استفاده از رویدادها (Events) را بر اساس معماری رویداد محور (Event-Driven Architecture، به‌طور اختصار به آن EDA نیز گفته می‌شود) دارند. امنیت سیستم نرم‌افزار
ایمنی سیستم نرم‌افزار زیر مجموعه ای از امنیت سیستم و مهندسی سیستم و مترادف با جنبه‌های امنیت عملیاتی مهندسی نرم‌افزار است. به عنوان بخشی از کل برنامه ایمنی و توسعه نرم‌افزار، نرم‌افزار نمی‌تواند به‌طور مستقل عمل کند. سیستم‌های چندگانه ساده و بسیار یکپارچه هردو در حال رشد فوق‌العاده ای در استفاده از کامپیوترها و نرم‌افزار برای نظارت یا کنترل زیر سیستم‌ها یا عملکردهای ایمنی-بحرانی هستند. خطای مشخصات نرم‌افزار، نقص طراحی یا فقدان الزامات ایمنی-بحرانی عمومی می‌تواند موجب خرابی سیستم یا تصمیم اشتباه انسانی شود. برای دستیابی به سطح قابل قبول ایمنی برای نرم‌افزار مورد استفاده در برنامه‌های مهم، در ابتدا مهندسی ایمنی سیستم نرم‌افزار باید در تعریف نیاز و فرایند طراحی مفهومی سیستم مورد توجه قرار گیرد. سپس نرم‌افزار ایمنی-بحرانی باید مدام مورد توجه مدیریت و تجزیه و تحلیل مهندسی در طول توسعه و چرخه عملیاتی سیستم قرار گیرد. نرم‌افزارهای رشته مهندسی مکانیک شاخه CAM
یکی از اهداف علم مهندسی مکانیک تولید قطعات وابزارهای مورد نیازبرای صنایع مختلف می‌باشد ولازمهٔ انجام این کاراستفاده از ماشین ابزارهاودستگاه‌هایی است که محصولات مختلف را ساخته ودسته بندی کند. برای این منظور از نرم‌افزارهای cam که برای برقراری ارتباط با ماشین ابزارهای مختلف است استفاده می‌شود.نرم‌افزارMasterCam یکی از قدیمی‌ترین نرم‌افزارهای تهیه مسیر ماشین کاری جهت دستگاه‌های سی‌ان‌سی می‌باشد که ساخت شرکت CNC Software Inc است. این نرم‌افزار جهت نصب و استفاده نیاز به الزامات سخت‌افزاری کمتری نسبت به نرم‌افزارهای مشابه دارد و با داشتن postprocessor قوی امکان تعیین انواع مسیرهای حرکت ابزار جهت فرز و تراش CNC را فراهم می‌کند. نرم‌افزار مهندسی عمران
نرم‌افزارهای مختلفی برای تخصص‌های گوناگون رشته مهندسی عمران وجود دارند. بیشتر مهندسان عمران، در گرایش‌های مختلف ازقبیل مهندسی خاک و پی، مهندسی سازه، مهندسی ترابری، مهندسی هیدرولیک، مهندسی محیط، مدیریت پروژه و ساخت، مهندسی سواحل بنادر وسازه‌های دریایی و نقشه‌برداری فعالیت دارند. مدیریت پروژه نرم‌افزاری
در مهندسی نرم‌افزار، Issue (مشکل) بخشی از کار است که در صورت حل (مانند رفع یک اشکال نرم‌افزاری (باگ)، مستندسازی یک کامپوننت یا تحلیل نیازمندی تازه)، عملکرد سامانه نرم‌افزاری بهبود می‌یاد. issueها معمولاً بر پایه پارامتر "میزان شدت" یا "میزان اهمیت" دسته‌بندی می‌شوند. این دسته‌بندی معمولاً به صورت زیر است:در بسیاری از شرکت‌های نرم‌افزاری وظیفه استخراج و دسته‌بندی مشکلات نرم‌افزاری بر عهده تیم یا مسئول تضمین کیفیت است. کیفیت نرم‌افزار
کیفیت عملکردی نرم‌افزار به عنوان تطابق آن با الزامات کاربردی به صورت صریح بیان شده تعریف شده است ، به عنوان مثال با استفاده از تجزیه و تحلیل صدای مشتری (بخشی از طراحی جعبه ابزار Six Sigma و / یا مستند از طریق موارد استفاده ) و سطح رضایت کاربر نهایی استفاده می شود. مورد دوم قابلیت استفاده است اینکه چقدر رابط کاربری بصری و پاسخگو است ، چقدر عملیات ساده و پیچیده را می توان انجام داد و پیام های خطای مفید چقدر است. به طور معمول ، شیوه ها و ابزارهای آزمایش نرم‌افزار اطمینان حاصل می کنند که یک تکه از نرم‌افزار مطابق با طراحی اصلی ، تجربه کاربری برنامه ریزی شده و تست پذیری مطلوب رفتار می کند. نرم‌افزار کسب‌وکار
به‌طور کلی، نرم‌افزار کسب‌وکار احتمالاً برای نیازهای یک کسب و کار خاص طراحی شده‌است و بنابراین به راحتی قابل انتقال به یک محیط کاری دیگر نیست، مگر اینکه طبیعت و عمل آن یکسان باشد. با توجه به الزامات منحصر به فرد هر کسب و کار، بعید است یک نرم افراز آماده مصرف همهٔ نیازهای یک شرکت را برطرف کند. پس با این که یک راه حل آماده مصرف موجود است، با توجه به ملاحظات زمانی یا پولی، ممکن است تعدادی از موارد سفارشی سازی مورد نیاز باشد. بسته به نوع کسب و کار مورد نظر، استثنائات وجود دارد، و قبل از سفارشی سازی یا راه حل‌های آماده مصرف، همیشه باید تحقیق کامل انجام شود. اجاره نرم‌افزار
مهندسی شبیه‌سازی نرم‌افزار، قبلاً به عنوان یک راه حل محلی توسط رایانه شخصی کاربر ارائه شد که یک کاندید ایده‌آل برای تحویل ارائه سرویس نرم‌افزاری است. بازار برای مهندسی شبیه‌سازی نرم‌افزار سرویس اجاره‌ای در دوران بلوغ خود است، اما علاقه به این مفهوم در حال بزرگ شدن است به دلایل مشابه با علاقه به سرویس نرم‌افزاری که در صنایع دیگر در حال رشد است. دلیل پیشران اصلی این است که نرم‌افزار شبیه‌ساز مهندسی نیاز به سرمایه مقابل زیاد دارد تا به نرم‌افزار شبیه‌سازی دسترسی پیدا کرد. سرمایه‌گذاری زیاد، مهندسی شبیه‌سازی را برای استارت آپ‌ها و شرکت‌های بازاری میانه که بی میل یا نا توان در خطر هزینه پروژه‌های اثبات نشده یک نرم‌افزار بزرگ هستند خارج از دسترس نگه می‌دارد. اجاره نرم‌افزار
نرم‌افزار به عنوان یک سرویس () نرم‌افزاری و شیوه انتقالی است که بر پایه اجاره مجوز دهی می‌شود و متمرکز میزبانی می‌شود. گاهی به عنوان نرم‌افزار حاضر -آماده از آن یاد می‌شود (به آن مراجعه می‌شود). کاربران معمولاً با یک کلاینت سبک از طریق مرورگر وب به این سرویس نرم‌افزاری دسترسی می‌یابند. این سرویس به یک شیوه انتقالی برای بسیاری از برنامه‌های تجاری مبدل شده، شامل آفیس و نرم‌افزارهای پیام رسان، نرم‌افزارهای محاسبه گر حقوق، نرم‌افزارهای مدیریت پایگاه داده، نرم‌افزارهای مدیریتی، نرم‌افزارهای طراحی (CAD)، نرم‌افزارهای توسعه دهنده، بازی سازی، مجازی سازی، حسابداری، همکاری، مدیریت ارتباط مشتری، مدیریت سیستم‌های اطلاعاتی، طرح‌ریزی منابع سرمایه، فاکتور نویسی، مدیریت منابع انسانی، حصول نیروی مستعد، مدیریت محتوا، نرم‌افزارهای ضد ویروس و مدیریت میز خدمات. سرویس نرم‌افزاری (SaaS) به استراتژی تقریباً تمام شرکت‌های نرم‌افزاری گسترده آمیخته شده. معمار نرم‌افزار
معمار نرم‌افزار () یک کارشناس نرم‌افزار است که انتخاب‌های طراحی سطح بالا را انجام می‌دهد و استانداردهای فنی شامل: استانداردهای کدگذاری نرم‌افزار، ابزارها و سیستم عامل را دیکته می‌کند. کارشناس برجسته به عنوان رئیس معماری معرفی می‌شود. نیازمندی غیرعملکردی
نیازمندی‌های غیرعملکردی یا نیازهای غیرکارکردی با کوته‌نوشت NFR در مهندسی سامانه‌ها و مهندسی نیازمندی‌ها، نوعی نیازمندی است که تعیین کننده معیارهایی است که از آن برای قضاوت درمورد عملکرد یک سامانه (و نه رفتار خاص آن) استفاده می‌شود. این نیازمندی دربرابر نیازمندی عملکردی قرار دارد که رفتار یا تابع خاص را تعریف می‌کند. برنامه پیاده‌سازی نیازمندی عملکردی، در موقع طراحی سامانه، جزئی‌سازی می‌شود. اما برنامه پیاده‌سازی نیازمندی غیرعملکردی در موقع معماری سیستم جزئی‌سازی می‌شود، زیرا آن‌ها معمولا هستند. معماری نرم‌افزار
معماری نرم‌افزار در واقع انتخاب یک ساختار کلی برای پیاده‌سازی یک پروژه نرم‌افزاری بر مبنای مجموعه‌ای از نیازهای کاربری و تجاری یک سیستم نرم‌افزاری است تا هم بتوان کاربردهای مورد نظر را پیاده‌سازی کرد و هم بتوان کیفیت نرم‌افزار، تولید آن و نگهداری آن را نیز بهینه کرد و سرعت بخشید. به عبارتی دیگر: معماری نرم‌افزار یک برنامه یا سیستم محاسباتی، ساختار یا ساختارهای آن سیستم محاسباتی است که خصوصیات قابل رویت از بیرون، عناصر و ارتباطات بین آن‌ها را نشان می‌دهد. مشخصات مورد نیاز نرم‌افزار
مشخصات مورد نیاز نرم‌افزار (به انگلیسی: Software requirements specification) برای یک نرم‌افزار، شرح کامل رفتار سیستم در هنگام توسعه است و ممکن است شامل مجموعه‌ای از مورد استفاده باشد که تعامل کاربران با نرم‌افزار را توصیف می‌کند. علاوه بر آن نیز شامل نیازمندی های غیر عملیاتی است. نیازمندی‌های غیر عملیاتی محدودیت در طراحی و پیاده‌سازی را تحمیل کنند. وارونگی کنترل
در مهندسی نرم‌افزار، وارونگی کنترل (به انگلیسی: inversion of control (IoC)) گونه‌ای از طراحی را توصیف می‌کند که بخش‌های اختصاصی نوشته شده یک برنامه رایانه‌ای جریان کنترل را از یک کتابخانه با قابلیت بازاستفاده عمومی دریافت می‌کند. معماری نرم‌افزاری ای که از این طرح به وجود می‌آید در مقایسه با برنامه‌نویسی سنتی رویه‌ای کنترل را وارونه می‌سازد: در برنامه‌نویسی سنتی کد اختصاصی که هدف برنامه را بیان می‌کند، برای مراقبت از وظایف عمومی کتابخانه‌های بازقابل استفاده را فرا می‌خواند اما با وراونه سازی کنترل این کدهای دارای قابلیت باز استفاده هستند که کدهای اختصاصی یا کدهای مربوط به وظیفه خاص را فراخوانی می‌کنند. طراحی نرم‌افزار
طراحی نرم‌افزار فرایند پیش‌بینی و تعریف راه حل‌های نرم‌افزاری به یک یا تعدادی از مشکلات است. یکی از اجزای اصلی طراحی نرم‌افزار، نرم‌افزار مورد نیاز تجزیه و تحلیل software requirements analysis]]SRA]] است. SRA بخشی از فرایند توسعه نرم‌افزار است که مشخصات مورد استفاده در مهندسی نرم‌افزار را فهرست می‌کند. اگر نرم‌افزار به‌طور «کامل اتوماتیک» (به معنی بدون کاربر یا رابط کاربری) باشد، طراحی نرم‌افزاری ممکن است به اندازه یک فلوچارت یا متن توصیفی دنباله ای از رویدادهای برنامه‌ریزی شده ساده باشد. همچنین روش‌های نیمه استاندارد مانند زبان مدل‌سازی یکسان و مفاهیم مدل‌سازی اساسی وجود دارد. در هر صورت، بعضی مستندات این طرح معمولاً محصول طراحی است. علاوه بر این، طراحی نرم‌افزار ممکن است یک پلت فرم_مستقل(platform-independent)یا پلت فرم_مشخص(platform-specific) باشد که بسته به دسترسی به تکنولوژی مورد استفاده برای طراحی دارد. تفاوت اصلی بین تجزیه و تحلیل نرم‌افزار و طراحی نرم‌افزار این است که خروجی یک تجزیه و تحلیل نرم‌افزاری از مشکلات کوچکتر برای حل مسئله تشکیل شده‌است. علاوه بر این، تجزیه و تحلیل نباید با تفوت زیادی در میان اعضای تیم یا گروه‌های مختلف، طراحی شود. در مقابل، طراحی بر قابلیت‌ها متمرکز است و بنابراین طرح‌های متعددی برای یک مشکل مشابه می‌تواند وجود داشته باشد. بسته به محیط، طراحی اغلب متفاوت است، چه از طریق چارچوب (frameworks)های قابل اعتماد چه با الگوهای طراحی(design patterns) مناسب پیاده‌سازی شده باشد. نمونه‌های طراحی شامل سیستم‌های عملیاتی، صفحات وب، دستگاه‌های تلفن همراه یا حتی پارادایم ابری جدید است. نرم‌افزار مدیریت انرژی
تعهد می‌تواند به پاسخ‌های خودکار یا دستی برای داده‌های جمع‌آوری شده یا تحلیل شده، اطلاق می‌شود. سیستم‌های کنترل ساختمان می‌تواند به آسانی به نوسانات انرژی پاسخ دهند همانگونه که سیستم گرمایشی می‌تواند به تغییرات دما واکنش نشان دهد. Demand spikes می‌توانند فرایندهای کاهش قدرت تجهیزات را راه‌اندازی کنند. هدف دیگر تعهد مرتبط ساختن انتخاب‌های روزانهٔ ساکنین با مصرف انرژی ساختمان است. با به نمایش گذاردن اطلاعات مربوط به مصرف بلادرنگ، ساکنین تأثیر فوری اعمالشان را رویت خواهند کرد. این نرم‌افزار می‌تواند به منظور بهبود ابتکار عمل‌ها برای حفظ انرژی، ارائهٔ توصیه به ساکنین یا پیشنهاد فرومی برای بازخورد بقای آن‌ها به کار رود. برنامه‌های حفظ انرژی مربوط به انسان از قبیل آن‌هایی که از جانبEnergyEducationمی‌توانند در کاهش مصرف و هزینهٔ انرژی بسیار مؤثر عمل کنند. اینکه ساکنین این اجازه را داشته باشند که به تنهایی از مصرف بلادرنگ شان اطلاع داشته باشند می‌تواند مسئول ۷٪ کاهش مصرف انرژی باشد. مدیریت پروژه نرم‌افزاری
در این زمان، شرکت‌های تولیدکننده نرم‌افزار تلاش می‌کردند تا با استفاده از روش‌های کلاسیک مدیریتی، پروژه‌های نرم‌افزاری را رهبری کنند. اما به زودی و با کند شدن سرعت تولید نرم‌افزار و بروز مشکلات جدی در آزمایش و نیز تغییرات به‌وجودآمده در نیازمندی‌های مشتریان مشخص شد که روش‌های سنتی مدیریت پروژه برای رهبری تیم‌های نرم‌افزاری مناسب نیست. تحلیل و بررسی پروژه‌های نرم‌افزاری شکست خورده، عوامل زیر را به عنوان مهمترین دلایل شکست آن‌ها مشخص کرد:سه مورد نخست در فهرست بالا نشان می‌دهد که عدم بیان روشن و بدون ابهام نیازمندی‌های نرم‌افزاری توسط مشتریان منجر به اشتباه در هدف‌گذاری و تخصیص منابع مورد نیاز پروژه می‌شود. مهندسی نرم‌افزار به کمک کامپیوتر
ابزارهای Lower CASE جهت حمایت ازفعالیت‌های توسعه دهندگی مانند طراحی فیزیکی، اشکال یابی و رفع ان، ساخت و ایجاد، تست و آزمون برنامه، یکپارچه سازی اجزا، تعمیر و نگهداری و مهندسی معکوس بکار می‌روند. سایر فعالیت‌های در طول چرخه حیات نرم‌افزار ونحوه اعمال آن‌ها می‌تواند توسط ابزارهای Upper CASE یا Lower CASE انجام گیرد. مهندسی نرم‌افزار بر پایه مؤلفه
یکی از ویژگی‌های مهم دیگر پیکرپارها قابل تعویض بودن آن‌ها (substitutable) است، به این صورت که یک پیکرپار می‌تواند توسط پیکرپار دیگری جایگزین بشود (در زمان طراحی یا زمان اجرا) البته اگر نیازهای ابتدایی پیکرپار (که به وسیله واسط‌ها یا Interfaces بیان شده‌است) توسط پیکرپار جایگزین تامیین بشود. به این ترتیب پیکرپارها می‌توانند جایگزین یکدیگر بشوند یا با نسخه‌های جدیدترشان بروز شوند یا مثلاً با یک پیکرپار دومی جایگزین بشوند، بدون اینکه لحظه‌ای سیستمی که پیکرپار در آن عمل می‌کند از کار بیفتد. مدیریت پروژه نرم‌افزاری
مدیریت پروژه نرم‌افزاری (به انگلیسی: Software Project Management) هنر و دانش برنامه‌ریزی و رهبری پروژه‌های نرم‌افزاری است. مدیریت پروژه نرم‌افزاری شاخه‌ای از مدیریت پروژه است که با دانش تولید نرم‌افزار درهم آمیخته‌است و در حقیقت زیرمجموعه مهندسی نرم‌افزار به شمار می‌رود. برنامه‌نویسی مفرط
برای محقق شدن ارتباطات صحیح بین مهندسان نرم‌افزار و سایر ذی‌نفع‌ها(stakeholders) باید همکاری نزدیک و غیررسمی (گفتاری) بین مشتری‌ها و تولیدکنندگان صورت بگیرد. همچنین باید نیازها در قالبی قابل فهم برای تمام طرفین درگیر اعم از مهندسین نرم‌افزار و مشتری‌ها بیان شود (metaphor). علاوه بر این باید از مستندسازی به شکل افراطی و در حجم زیاد اجتناب شود. نرم‌افزارهای رشته مهندسی عمران
قابلیت‌ها و امکانات قابل فهم در حوزه سازه بتنی محکم ارائه می‌دهد و علاوه بر آن از ویژگی‌های تنش ستون بهره‌مند است.این نرم‌افزار تمامی نیازهای لازم برای طراح را یکجا فراهم آورده‌است و در ساخت سازه‌ها از این نرم‌افزار به‌طور عملی استفاده می‌شود. یادگیری این نرم‌افزار بسیار سریع است و به زمان طولانی برای یادگیری نیازی نیست. قالب‌های آماده‌ای که در نرم‌افزار پیش‌بینی شده‌است باعث می‌شود قادر به شبیه‌سازی طرح‌های بسیار پیچیده باشید. در این برنامه برای طراحان پل نیز امکانات ویژه‌ای در نظر گرفته شده‌است. نگارش جدید این نرم‌افزار در اواخر فروردین به بازار عرضه شد و گران‌ترین آن نسخه Advanced یا پیشرفته‌است. برنامه SAP آخرین و قوی‌ترین نسل از سری برنامه تحلیل سازه‌ها می‌باشد. مهندسی نرم‌افزار بر پایه مؤلفه
نظریهٔ «نرم‌افزار باید پیکرپارای باشد از پیکرپارهای از پیش‌ساخته شده» برای اولین بار در دستور داگلاس مکتوری در کنفرانس ناتو که موضوع آن مهندسی نرم‌افزار بود در سال ۱۹۶۸ به اسم تولید انبوه نرم‌افزار به چاپ رسید. این کنفرانس برای مقابله با مثلاً بحران نرم‌افزاری برگزار شد. فرمان و فیلترهای گنجایشی ثانویه او در سیستم‌عامل یونیکس اولین اجرا در پیدایش این نظر بود. مفهوم مدرن پیکرپار نرم‌افزار به‌طور گسترده با براد کوکس که آن‌ها را ای‌سی‌های نرم‌افزاری می‌نامید و شروع به تولید و فروش آن‌ها با اختراع برنامه ابجکتیو-سی کرد ارائه شد. آی‌بی‌ام در اوایل ۱۹۹۰ با سیستم مدل شی‌گرایی پیشرو این زمینه شد. بعضی‌ها می‌گویند که مایکروسافت با گسترش واقعی پیکرپارهای نرم‌افزاری با اوال‌ای و کام هموار کرده‌است که امروزه چندین مدل از پیکرپارهای نرم‌افزاری موفق موجود است. نقشه نرم‌افزاری
کاهش پیچیدگی‌ها که منجر به فرایندهای کنترل‌نشده در کاربرد می‌شوند. نرم‌افزار مالکیتی
نرم‌افزار مالکیتی یا نرم‌افزار انحصاری نرم‌افزاری است که در مالکیت انحصاری توسعه دهندگان و توزیع‌کنندگانش قرار دارد و مطابق با موافقت‌نامه‌های نرم‌افزاری نمی‌توان آن‌ها را تکثیر و توزیع کرد. در این نرم‌افزارها نمی‌توان مانند نرم‌افزارهای متن‌باز به کد مبدأ دسترسی داشت. محدودیت‌هایی که برای این دسته از نرم‌افزارها وجود دارد معمولاً توسط ناشران آن‌ها در موافقت نامه مجوز نرم‌افزار (End user license agreement) بیان می‌شود که شرط استفاده از این نرم‌افزارها منوط به پذیرش این موافقت نامه است. نرم‌افزارهای رشته مهندسی عمران
یکی از مشهورترین نرم‌افزارهای مهندسی می‌باشد که از آن برای طراحی پرژه‌های عظیم ساختمان‌سازی استفاده می‌کنند. این نرم‌افزار محصولی از شرکت Autodesk می‌باشد که یکی از بزرگترین شرکت‌های ساخت نرم‌افزارهای مهندسی در سراسر جهان بوده و حتی می‌توان آن را در این زمینه بی‌رقیب دانست زیرا بهترین نرم‌افزارهای مهندسی محصول این شرکت است مانند Maya و ۳DS Max که از حرفه‌ای‌ترین نرم‌افزارهای انیمیشن‌سازی و مدل ساز ی هستند. در نرم‌افزار اتوکد همه چیز برای یک مهندس رشته عمران فراهم است در واقع تمام ابزارهای نقشه‌کشی در این برنامه وجود دارد و کاربر در محیط شبیه‌سازی شده به آسانی قادر خواهد بود تا اقدام به طراحی نقشه مورد نظر خود نمایید. همچنین این برنامه یک محیط ۳ بعدی را در احتیار کاربر خود قرار می‌دهد تا بتواند نقشه‌های ۳ بعدی تولید کنید و در یک محیط سه بعدی به آنالیز ساختمان طراحی شده بپردازد. جالب است بدانید در رشته عمران و زیر شاخه‌های آن (معماری) نرم‌افزار اتوکد یک واحد عملی به‌شمار می‌رود و دانشجویان این رشته‌ها باید کار با این نرم‌افزار را به صورت حرفه‌ای آموخته باشند تا بتوانند در امتحان عملی که از آن‌ها گرفته می‌شود با این برنامه کار کنند. هوش نرم‌افزاری
هوش نرم افزاری دیدگاهی از شرایط ساختاری دارایی‌های نرم افزاری است که توسط نرم افزاری طراحی شده‌است که برای تجزیه و تحلیل ساختار پایگاه داده، چارچوب نرم افزار و کد منبع برای درک و کنترل بهتر سیستم‌های نرم افزاری پیچیده در محیط‌های فناوری اطلاعات طراحی شده است. مشابه هوش تجاری (BI)، هوش نرم افزاری توسط مجموعه ای از ابزارها و تکنیک‌های نرم افزاری برای استخراج داده‌ها و ساختار داخلی نرم افزار تولید می‌شود. نتایج نهایی اطلاعاتی است که ذینفعان مشاغل و نرم افزارها برای تصمیم‌گیری آگاهانه از آنها استفاده کرده و میزان کارایی سازمان‌های توسعه دهنده نرم افزار اندازه‌گیری می‌کنند و در مورد سلامت نرم افزار ارتباط برقرار می‌کنند تا از فجایع نرم افزاری جلوگیری کنند. تحلیل نیازمندی‌ها
تحلیل نیازمندی‌ها در مهندسی سیستم‌ها و مهندسی نرم‌افزار، تحلیل و تعیین نیازها یا شرایط لازم برای انجام یک پروژه نو را دربرمی‌گیرد. تحلیل سیستماتیک نیازمندی‌ها را مهندسی نیازمندی‌ها می‌گویند. تحلیل نیازمندی‌ها از ملزومات مهم موفقیت در یک پروژه محسوب می‌گردد. نیازمندی‌های تحلیل شده باید: مستند، عملی، قابل اندازه‌گیری، قابل تست و ارزیابی، قابل ردیابی، مربوط به نیازها یا فرصت‌های همان کسب و کار باشند که به صورت مشروح با جزیئیات کافی بیان شده باشند. مهندس نرم‌افزار
یک مهندس نرم‌افزار کسی است که مشغول به مهندسی نرم‌افزار است. مهندسین نرم‌افزار اصول مهندسی طراحی، توسعه، نگه‌داری، آزمایش و ارزیابی نرم‌افزار و سامانه‌هایی که اجازه می‌دهند رایانه‌ها یا هر چیزی که شامل نرم‌افزار باشد کار کند را به کار می‌گیرند. نرم‌افزارهای رشته مهندسی عمران
نرم‌افزارهای رشته مهندسی عمران نرم‌افزارهایی هستند که برای رشته دانشگاهی عمران در مقاطع مختلف به‌کار می‌رود. با توجه به پیشرفت علم و تکنولوژی‌های روز جهان دانش نرم‌افزارهای هر رشته نیاز امروز بازار کار جهان است. مدیریت مستندات
برنامه‌ریزی نیازهای اطلاعات یک سازمان طراحی نرم‌افزار
طراحی نرم‌افزار هم یک فرایند و هم یک مدل است. فرایند طراحی یک دنباله ای از مراحل است که طراح را قادر می‌سازد که تمام جنبه‌های ساخت نرم‌افزار را توصیف کند. مهارت خلاقیت، تجربیات گذشته، حس اینکه چه چیزی نرم‌افزار «خوب» را می‌سازد و تعهد کلی به کیفیت، نمونه‌هایی از عوامل موفقیت قطعی برای یک طراحی مناسب است. با این وجود مهم است که توجه داشته باشید که فرایند طراحی همیشه یک روش ساده نیست؛ مدل طراحی را می‌توان با طراحی معماری خانه مقایسه کرد. با نشان دادن کلییت چیزی که باید ساخته شود آغاز می‌شود (به عنوان مثال، ارائه سه بعدی خانه)؛ و به آرامی، این برای ساخت هر جزئی (به عنوان مثال، نصب لوله‌کشی) اراِیه شده. است به‌طور مشابه، مدل طراحی که برای نرم‌افزار ایجاد شده‌است، دیدگاه‌های مختلفی از نرم‌افزارهای کامپیوتری را فراهم می‌کند. اصول طراحی اولیه، مهندس نرم‌افزار را قادر می‌سازد تا در فرایند طراحی حرکت کند. دیویس مجموعه ای از اصول طراحی نرم‌افزار را پیشنهاد می‌کند که در لیست زیر ارائه شده و گسترش یافته‌است: مهندسی نرم‌افزار به کمک کامپیوتر
این ابزارها برای توسعه نرم‌افزار با کیفیت بالا، بدون نقص و قابل نگهداری بکار برده می‌شوند. این ابزارهای نرم‌افزاری اغلب با روش‌های توسعه سیستم‌های اطلاعاتی با کمک ابزارهای خودکار که در فرایند توسعه نرم‌افزار می‌توانند مورد استفاده قرار بگیرند استفاده می‌شوند. نیازمندی‌های نرم‌افزار
استخراج جمع‌آوری و کشف نیازهای ذینفعان و منابع دیگر می‌باشد.. انواع تکنیک می‌تواند مورد استفاده قرار گیرد مانند طراحی مشترک نرم‌افزار (JAD) جلسات و انجام مصاحبه و تجزیه و تحلیل سند، گروه تمرکز، استخراج اولین گام در توسعه است. مهندسی نرم‌افزار به کمک کامپیوتر
ابزارهای CASE در طول توسعه چرخه زندگی نرم‌افزار از وظایف خاصی پشتیبانی می‌کنند؛ که آن‌ها را می‌توان به دسته‌های ۶گانه زیر تقسیم کرد: یکی دیگر از راه‌های معمول برای تشخیص ابزار CASE قائل به تمایز بین Upper CASE and Lower CASE بودن، هست. ابزارهای Upper CASE کار پشتیبانی از تجارت و کسب و کار و تجزیه و تحلیل مدل‌سازی را انجام می‌دهند. زبان‌های تصویری و نموداری سنتی و قدیمی همچون نمودارهای ER Data flow diagram, Structure charts, Decision Trees, Decision tables و غیره برای ابزارهای Upper CASE بکار می‌روند. معماری نرم‌افزار
معماری نرم‌افزار فرایند تعریف یا راه حل نرم‌افزاری ساختار منداست به شکلی که بتواند کلیه نیازمندی‌های فنی و عملیاتی مورد انتظار را، پوشش دهد. مهندسی نرم‌افزار بر پایه مؤلفه
Clemens Szyperski و David Messerschmitt ۵ شرط‌های زیر را برای یک پیکرپار نرم‌افزاری تعیین می‌کنند: مهندسی نرم‌افزار
فناوری‌ها و خدمات مهندسی نرم‌افزار به کاربران برای بهبود بهره‌وری و کیفیت یاری می‌رساند. نمونه‌هایی از زمینه‌های بهبود: پایگاه داده‌ها، زبان‌ها، کتابخانه‌ها، الگوها، فرایندها و ابزار. نرم‌افزارهای رشته مهندسی مکانیک شاخه CAD و CAE
این دو نرم‌افزار که عموماً به عنوان مکمل یکدیگر استفاده می‌شوند در شاخهٔ مهمی از علم مکانیک به نام CFD کاربرد دارد به همین منظور ابتدای کار توضیح مختصری در رابطه با CFD ارائه می‌دهیم: طراحی نرم‌افزار
طراحی نرم‌افزار فرایند حل مسئله و برنامه‌ریزی در راستای ساختن یک نرم‌افزار است. طراحی نرم‌افزار فرایندی است که توسط آن یک عامل، مشخصه ای از نرم‌افزار را طراحی می‌کند که هدف آن، به انجام رساندن اهداف از پیش تعیین شده با استفاده از مجموعه ای از اجزای اولیه و با توجه به محدودیت‌ها است. طراحی نرم‌افزار می‌تواند به عنوان "تمام فعالیت‌های مربوط به مفهوم سازی، طراحی، اجرا، راه اندازی و در نهایت اصلاح سیستم‌های پیچیده" یا "فعالیت‌های مشخص مورد نیاز و قبل از برنامه‌نویسی و … [در] یک پروسه مهندسی نرم‌افزار. طراحی نرم‌افزار معمولاً شامل حل مسئله و برنامه‌ریزی یک راه حل نرم‌افزاری است که شامل طراحی جزئی اجزا و طراحی الگوریتم و طراحی معماری سطح بالا می‌باشد." تحلیل نیازمندی‌ها
انجمن خبرگی در مهندسی نیازمندی‌ها هوش نرم‌افزاری
هوش نرم افزاری در کلیه مشاغل مربوط به محیط نرم افزار کاربردهای بسیاری دارد، خواه نرم افزاری برای افراد حرفه ای باشد، یا نرم افزارهای جاسازی شده. بسته به ارتباط و استفاده از اجزا، برنامه‌ها به موارد زیر مربوط می‌شوند: تحلیل نیازمندی‌ها
نیازمندی‌های عملکردی که شامل عملکردهای مورد نیاز سیستم می‌باشد. نیازمندی‌های غیر عملکردی که شامل معیارهای کیفی، محدودیت و قیود سیستم می‌باشدآکادمی نرم‌افزار مهندسی نرم‌افزار
مهندسی نرم‌افزار به مفهوم توسعه و بازبینی یک سامانه نرم‌افزاری مربوط می‌باشد. این رشته علمی با شناسایی، تعریف، فهمیدن و بازبینی خصوصیات مورد نیاز نرم‌افزار حاصل سر و کار دارد. این خصوصیات نرم‌افزاری ممکن است شامل پاسخ‌گویی به نیازها، اطمینان‌پذیری، قابلیت نگهداری، در دسترس بودن، آزمون‌پذیری، استفاده آسان، قابلیت حمل و سایر ویژگی‌ها باشد. دانشگاه علوم و فنون هوایی شهید ستاری
رشته مهندسی رایانه با گرایش نرم‌افزار به تربیت افسران کارشناسی به منظور طراحی، ساخت و راه‌اندازی سامانه‌های نرم‌افزاری برای تجهیزات و شبکه‌های رایانه‌ای موجود در نیروی هوایی ارتش، ارائه روش‌های بهره‌برداری، نگهداری، عیب‌یابی، اصلاح و توسعه آن‌ها در راستای تأمین نیازمندی‌های نیروی هوایی ایران است. هوش نرم‌افزاری
هوش نرم افزاری یک نظم سطح بالا است و به تدریج در حال گسترش برنامه‌های کاربردی ای است که در بالا ذکر شده‌است. چندین بازار مختلف هستند که نیاز به آن را ایجاد می‌کنند: ساخت نرم‌افزار
ساخت نرم‌افزار شاخه ای از مهندسی نرم‌افزار است. در این شاخه از ترکیبی از کد نویسی، بازبینی، آزمون واحد، آزمون یکپارچگی، و اشکال زدایی بهره برده شده تا نرم‌افزاری دقیق، معنادار و حاوی جزئیات فراوان خلق شود. ساخت نرم‌افزار شاخه ای است که به صورت بسیار نزدیکی به دیگر شاخه‌های مهندسی نرم‌افزار (همانند طراحی نرم‌افزار و تست نرم‌افزار) متصل می‌باشد. مهندسی وب
مهندسی وب به شاخه‌های زیادی منشعب می‌شود و شامل بخش‌هایی از نواحی مختلف علم می‌گردد: طراحی و آنالیز سیستم، منهدسی نرم‌افزار، مهندسی مافوق رسانه/مافوق متن، مهندسی نیازها، تعامل کامپیوتر با انسان، واسط کاربری، منهدسی اطلاعات، فهرست بندی و بازیابی اطلاعات، تست کردن، مدل‌سازی و شبیه سازی، مدیریت پروژه و طراحی گرافیکی و ارائه. مهندسی وب یک کپی یا زیرمجموعه‌ای از مهندسی نرم‌افزار نیست هر چند هردو شامل برنامه‌نویسی و توسعه نرم‌افزارند. هنگامیکه مهندسی وب رشته‌های مهندسی نرم‌افزار را استفاده می‌کند، این استفاده، اهداف جدید، روش‌شناسی‌ها، ابزارها، تکنیک‌ها و رهنمودهایی را برای دستیابی به نیاز منحصر به فرد برنامه‌های مبتنی بر وب شامل می‌شود. توسعه نرم‌افزاری چابک
این قابل تصور است که مدیران شرکت به اعضای تیم توسعه بگویند که نیازهای آن‌ها چیست، سپس اعضای تیم بروند و بعد از مدتی برگردند و یک سیستمی که نیازهای آن‌ها را برآورده می‌کند بسازند. اما این تعامل به کیفیت پایین نرم‌افزار و در نهایت شکست آن می‌انجامد. پروژه‌های موفق بر اساس دریافت بازخورد مشتری در بازه‌های زمانی کوتاه و مداوم است. به جای وابستگی به قرارداد یا دستور کار، مشتری به‌طور تنگاتنگ با تیم توسعه کار کرده و مرتباً اعمال نظر می‌کند. توسعه نرم‌افزار
توسعه نرم‌افزار یا تولید نرم‌افزار برگردان نیاز کاربران یا مشتریان در قالب یک محصول نرم‌افزاری است. توسعهٔ نرم‌افزار از مرحله طرح یک راه حل مفهومی برای مسئلهٔ خواسته‌شده (امکان‌سنجی) آغاز شده، پس از دریافت خواسته‌ها و تحلیل سیستم طراحی صورت گرفته و در نهایت این طراحی با کمک ابزارهای پیاده‌سازی تبدیل به یک سیستم واقعی می‌شود. هدف این فرایند آن است که از یک سو برآورده ساختن نیازهای کاربران و از سوی دیگر کیفیت مناسب عملکرد سیستم تضمین گردد؛ بنابراین بایستی حاوی سازوکارهایی برای اعتبارسنجی یعنی خروجی مطابق با خواسته‌ها (Validation) و وارسی‌پذیری یعنی صحت عملکرد خروجی (Verification) باشد. فرایند توسعه ضمن دادن آزادی به تحلیل‌گر باید تضمین کند که زمان‌بندی اجرای پروژه رعایت می‌شود. مهندسی نیازمندی‌ها
ابزارهای مهندسی نیازمندی‌ها باید قابلیت‌های زیر را فراهم نمایند . مهندسی نرم‌افزار
مهندسی نرم‌افزار عبارت است از کاربرد مهندسی برای طراحی نرم‌افزار، توسعه، پیاده‌سازی و نگهداری از نرم‌افزار در یک روش سیستماتیک. طرح اولیه نرم‌افزار
کلاسها به عنوان بلوکهای سازنده توسط طراحان نرم افزار برای مدل‌سازی ساختارهای پیچیده‌تر استفاده می‌شوند. در معماری نرم افزار، زبان مدل‌سازی یکپارچه(UML) یک استاندارد صنعتی است که برای مدل‌سازی نقشه اولیه نرم افزار استفاده می‌شود. UML نشان دهنده ساختار، ارتباطات و تعاملات بین عناصر مختلف نرم افزار، مانند کلاس‌ها، اشیا or یا اجزا است. این به طراح نرم افزار کمک می‌کند تا ایده‌ها را با سایر اعضای جامعه نرم افزار طراحی، تحلیل و ارتباط برقرار کند. نرم‌افزارهای رشته مهندسی عمران
قابلیت گزارش دهی جامع از نتایج و اطلاعات اولیه سازه، که کاربر می‌تواند بنا به نیاز قسمت‌های مورد نظر را جهت گزارش‌گیری انتخاب نماید. تحلیل ساختمند
تحلیل ساختمند در مهندسی نرم‌افزار روشی برای تحلیل و تبدیل نیازمندیهای حرفه‌ای به مشخصات و در نهایت به برنامه‌های نرم‌افزاری یا پیکربندی‌های سخت افزاری و فرایندهای دستی مرتبط می‌باشد . نیازمندی عملکردی
نیازمندی عملکردی یا نیاز کارکردی در مهندسی نرم‌افزار و مهندسی سامانه‌ها، تعریف‌کننده یک «تابع» برای یک سامانه یا مولفه‌های آن است، که این تابع به صورت «مشخصات رفتار» بین ورودی‌ها و خروجی‌ها توصیف می‌شود. نیازمندی
نیازمندی یا نیاز در توسعه محصول و بهینه‌سازی فرایند، یک نیاز «فیزیکی یا تابعی» به صورت «سندسازی‌شدهٔ یکتا» است و یک طراحی، محصول یا فرایند خاص، قصد برآورده‌سازی آن را دارد. نیازمندی اغلب در معنی صوری‌اش در طراحی مهندسی استفاده می‌شود، که شامل مهندسی سیستم‌ها، مهندسی نرم‌افزار، یا مهندسی سازمانی است. نرم‌افزارهای رشته مهندسی مکانیک شاخه CAD و CAE
نرم‌افزار سه بعدی کامل است که به منظور طراحی، شبیه‌سازی و گردآوری اطلاعات طراحی شده‌است. امکانات این محصول این شرایط را ایجاد می‌کند تا قطعه هرچه راحت‌تر و سریعتر طراحی شود و با همکاری قسمت‌های مختلف با سرعت و دقت محصولی مقرون به صرفه ارائه گردد. یکی از نرم‌افزارهای مطرح که تقریباً به تمامی نیازهای یک مهندس طراح جامهٔ عمل پوشانده است. سالیدورکس (SolidWorks) ساخت شرکتی به همین نام است که البته چند سالی است که زیر مجموعه Dassault System ,سازنده CATIA قرار گرفته‌است. این نرم‌افزار شامل سه بخش اساسی و مهم است که هر یک وظیفه خاص به خود را دارا می‌باشد این بخش‌ها عبارتند از: ماتریس و طراحی قالبهای مختلف معمار سخت افزار
از آنجایی که نیازمندی‌ها در طول یک پروژه، به ویژه پروژه طولانی، تکامل می‌یابند، تا زمانی که سیستم سخت‌افزاری توسط کاربر پذیرفته شود، به یک معمار نیاز است: معمار بهترین بیمه است که هیچ تغییر و تفسیری در طول توسعه، دیدگاه کاربر را به خطر نمی‌اندازد. اکثر مهندسان سخت افزار متخصص هستند. آنها کاربردهای طراحی و توسعه سخت افزار را از نزدیک می‌دانند، دانش خود را در موقعیت‌های عملی به کار می‌گیرند؛ یعنی مشکلات دنیای واقعی را حل می‌کنند، هزینه مزایای راه حل‌های مختلف را در تخصص سخت افزار خود ارزیابی می‌کنند و از عملکرد صحیح هر آنچه طراحی می‌کنند اطمینان حاصل می‌کنند. معماران سخت افزار عمومی هستند. از آنها انتظار نمی‌رود در هیچ‌یک از فناوری‌ها یا رویکردهای سخت افزاری متخصص باشند، اما انتظار می‌رود که از بسیاری از آنها آگاه باشند و بتوانند کاربرد آنها را در موقعیت‌های خاص قضاوت کنند. آن‌ها همچنین دانش خود را در موقعیت‌های عملی به کار می‌گیرند، اما هزینه یا مزایای راه‌حل‌های مختلف را با استفاده از فن‌آوری‌های سخت‌افزاری مختلف، به‌عنوان مثال، به‌خصوص توسعه‌یافته در مقابل اجزای سخت‌افزاری موجود تجاری، ارزیابی می‌کنند و اطمینان می‌دهند که سیستم به‌طور کلی مطابق انتظارات کاربر عمل می‌کند. نیازمندی‌های نرم‌افزار
تجزیه و تحلیل یک تفکیک منطقی است که بر روی خروجی استخراج نیازمندی‌ها انجام می‌شود. تجزیه و تحلیل شامل رسیدن به درک غنی تر و دقیق تر هر یک از نیازمندی‌ها و بازنمایی از مجموعه‌ای از نیازمندی‌های مورد نیاز در دیدگاه‌های مختلف می‌باشد. نرم‌افزارهای رشته مهندسی مکانیک شاخه CAD و CAE
این بخش شامل مدلسازی سه بعدی، تعریف قیدها و مفصل‌های مختلف، انیمشن سه بعدی، نمایش نیروها، جابه جایی‌ها و تنش‌های مدل، Export نتایج به شکل‌های استاندارد Fatige, FEA و… می‌باشد. معمار سخت افزار
توسعه سطح اول الزامات مهندسی سخت افزار یک تمرین صرفاً تحلیلی نیست و باید معمار و مهندس سخت افزار را نیز درگیر کند. اگر قرار است مصالحه‌ای صورت گیرد، برای برآورده کردن محدودیت‌هایی مانند هزینه، برنامه، قدرت یا فضا، معمار باید اطمینان حاصل کند که محصول نهایی و ظاهر و احساس کلی از هدف کاربر دور نمی‌شود. مهندس باید روی توسعه طرحی تمرکز کند که محدودیت‌ها را بهینه کند اما محصولی قابل اجرا و قابل اعتماد را تضمین کند. معمار در درجه اول به راحتی و قابلیت استفاده محصول می‌پردازد. مهندس در درجه اول به تولید و سودمندی محصول می‌پردازد. مهندسی نرم‌افزار
مهندسی نرم‌افزار یک روش سیستماتیک، منظم و دقیق برای ساخت و ارائه محصولی نرم‌افزاری با کیفیت است. توسعه نرم‌افزاری چابک
قراردادی که مشخص‌کننده نیازمندیها، زمانبندی و قیمت پروژه است، اساساً نقص دارد. بهترین قرارداد این است که مشتری در ازای اینکه زودتر به نرم‌افزار سفارش داده شده خود برسد متعهد شود دفعات بیشتری به‌طور تنگاتنگ با تیم توسعه تعامل داشته باشد. مهندسی نرم‌افزار بر پایه مؤلفه
پیکرپارهای سازنده یک نرم‌افزار غالباً به صورت اشیاء یا مجموعه‌هایی از اشیاء (در برنامه‌نویسی شیء گرا یا Object-Oriented Porgramming)، در برخی موارد به شکل کدهای باینری یا دودویی یا به صورت متون، که در این صورت به یک زبان توصیفی میانی یا Interface Description Language نیاز دارند به این ترتیب ممکن است پیکرپارها به صورت خودکار از پیکرپارهای دیگر م. جود در رایانه به وجود بیایند. نرم‌افزارهای رشته مهندسی مکانیک شاخه CAM
این برنامه ساخت شرکت فناوری و تولید Surfware می‌باشد که بر پایه بیش از یک سال تجربه و آزمایش در ساخت و تولید این شرکت تهیه گردیده است. این نرم‌افزار تجربه موفقی در طراحی و ساخت قالب‌های تزریق پلاستیک و ریخته‌گری دقیق و پیشرفته از خود بجا گذاشته است. این برنامه کاربرد در پزشکی طراحی و ساخت، تراشکاری قطعات بدن برای معلولین ساخت دست، پا و.. مصنوعی برای معلولین و افراد نقص عضو دارد. این برنامه برای طراحی مکانیک و مدل نمودن و آماده‌سازی طرح تأیید و اصلاح شده جهت ساخت و تولید به این طریق که این برنامه بر اساس طرح ایجاد شده فرامین و دستورات لازم کنترلی برای ماشین‌های تراشکاری و ماشین کاری تهیه می‌کند و قابلیت دستور دادن مستقیم به ماشین‌های سی‌ان‌سی و NC و کنترل عددی دیگر را دارا است. این نرم‌افزار باعث توانایی و قدرتمندی فوق‌العاده در ماشین کاری به روشی بسیار ساده و آسان می‌شود. همچنین دارای ابزارهای بررسی بوده و در شبیه‌سازی و آزمایش برنامه‌های کنترل در نقطه خطا توقف می‌کند و همچنین جزئیات را مانند سرعت و دور مته به سختی جسم ماشین کاری را نمایش و بررسی می‌کند. دارای جداول استاندارد عملیاتی نیز می‌باشد. این نرم‌افزار باعث بهینه شدن ماشین کاری با کاهش سرعت تغییرات ساخت چندین مدل هم‌زمان یا تغییر سریع مدل و خط تولید به آسانی و با تغییر سریع برنامه می‌گردد که تولید به هنگام سریع انبوه و سفارشی را در کمترین هزینه و بدون توقف طولانی دستگاه مقدور می‌سازد. این برنامه همراه راهنمای استفاده و همچنین پشتیبانی و تبادل اطلاعات در دنیای اینترنت می‌باشد. این برنامه را می‌توان در کنار سالیدورکس استفاده نمود. نیازمندی‌های نرم‌افزار
نیازمندی‌ها در طول پروژه و اغلب بسیاری از آنها را تغییر می‌کنند. مدیریت این تغییربرای حصول اطمینان از صحت نرم‌افزار ساخته شده است برای ذینفعان اهمیت بسیاری دارد. مدل نما
مدل نما () در مهندسی سیستم‌ها، مهندسی نرم‌افزار و مهندسی سازمانی، چارچوبی است که با تعریف مجموعه‌ای منسجم از دیدگاه‌ها، امکان استفاده از آنها را در ساخت مدل معماری سیستم یا معماری نرم‌افزار فراهم می‌سازد. در دهه ۱۹۷۰ روش‌هایی در حوزه مهندسی نرم‌افزار، با هدف مدل‌سازی دیدگاه‌های مختلف ظاهر شد. در سال ۱۹۷۷ نخستین مدل نما توسط داگلاس تی. راس و کی.ای. شومان، بمنظور سازماندهی فرایندهای مدل‌سازی و تعریف شرایط سیستم، معرفی گردید. برنامه‌نویسی مفرط
روشی که در برنامه‌سازی مفرط برای جمع‌آوری نیازمندی‌ها وجود دارد شنیدن نام دارد. فعالیت برنامه‌ریزی در برنامه‌سازی مفرط نیز با شنیدن آغاز می‌شود. طی این فعالیت شنیدن چندین داستان کاربری(user story) ایجاد می‌شود که در آن‌ها خروجی‌ها، ویژگی‌ها و کارایی‌های سیستم توصیف می‌شود. هر داستان (مانند مورد استفاده) توسط مشتری نگاشته می‌شود و جزئیاتش روی یک کارت درج می‌شود. مشتری به هر یک از داستان‌های کاربری اولویتی اختصاص می‌دهد که این اولویت با توجه به میزان حیاتی بودن نقش آن داستان در کسب‌وکار تعیین می‌شود. استخراج نیازمندی‌ها
این فرایند با یک مجموعه‌ از نیازمندی‌های مورد تقاضای کاربران که در واقع مجموعه‌ای از آرزوهای کاربران در خصوص سیستم تحت توسعه‌ می‌‎باشد، شروع می‌شود. نکته مهم در خصوص همه آروزها این است که قابلیت اجرایی ندارند. بعبارتی تکنولوژی لازم برای اجرای آن‌ها وجود ندارد. در واقع وقتی این لیست آرزوها تحت فرایند مهندسی قرار می‌گیرد و هر یک از آرزوها معیارهای صلاحیت و عدم صلاحیت را برآورده می‌کند به فرم "نیاز" تبدیل می‌شوند. نیازها آن دسته از آرزوهای کاربران هستند که تحت فرایندهای مهندسی نیازمندی در قالب نیاز تهیه شده‌اند. اصولا نیازها در اولویت اجرای نیازمندی‌های سیستم کاربردی (+URPS) قرار نمی‌گیرند. بعبارتی نیازها به خودی خود به صرفه نیستند. برای تبدیل نیازها به نیازمندی‌های کاربر، بایستی تغییراتی بر روی این لیست نیازها در فرایند مهندسی نیازمندی‌ها صورت گیرد تا ساختار نیاز به ساختار نیازمندی تبدیل شود. کلیه موارد فوق در فاز دامنه مساله از فرایند مهندسی نیازمندی‌ها قرار می‌گیرد. سپس در فاز دامنه راه‌حل، ابتدا چگونگی برآورده شدن نیازمند‌ی‌های کاربر توسط سیستم مورد نظر و سپس چگونگی برآورده شدن نیازمندی‌های سیستم توسط یک طراحی خاص مورد توجه قرار می‌گیرد. بدین ترتیب کلیه نیازمندی‌های استخراج شده در طی این فاز به عنوان نیازمندی‌های سیستم در نظر گرفته می‌شوند . معیارهای نرم‌افزارسنجی
معیارهای نرم افزار سنجی (یک سری) اطلاعات عددی مرتبط با فرآیند توسعه نرم افزار (شناخت، طراحی، تولید، تست، نگهداری و...)است. این معیارها به صورت جدی فعالیت‌های مدیریت پروژه را پشتیبانی می‌کنند{در بر دارند}. آن (معیارها)‌با چهار روش، عملیات مدیریت (پروژه) به شکل زیر ‌مرتبط هستند (و به ما کمک می‌کنند):کمیت این معیارهای (عددی) ویژگی میزان فرآیند یا محصول ما را نشان می‌دهند. معیارها می‌توانند به صورت مستقیم با کمیت‌های عددی نشان داده شوند یا اینکه از یک یا چند معیار واضح (که مقدار مشخصی دارند) دیگر بدست آیند (برگرفته شوند یا نتیجه‌گیری شوند). برای مثال معیارهای خام شامل تعداد خط‌های برنامه نویسی، تعداد صفحات مستندات، ‌تعداد نفر ساعت، ‌تعداد آزمون و تست برنامه، تعداد نیازمندیها، وغیره... و معیارهای نتیجه‌گیری شده (بدست آمده از طریق فرمول)‌شامل نسبت تعداد خطهای برنامه‌نویسی به نفر ساعت کار شده، مقدار ایرادات در هر هزار خط برنامه نویسی، یا شاخص عملکرد هزینه (شاخص بازدهی). بن‌سازه رایانش
چارچوب‌های نرم‌افزاری با فراهم کردن بستر توسعه و اجرا برای نرم‌افزارها، نقش مهمی در سکوهای اجرایی ایفا می‌کنند. از میان چارچوب‌های نرم‌افزاری می‌توان موارد زیر را نام برد: نقشه نرم‌افزاری
استعاره لازم است "چون که نرم‌افزار هیچ شکل فیزیکی ندارد، هیچ نقشه‌برداری طبیعی از نرم‌افزار به فضای دو بعدی وجود ندارد ." نقشه‌های نرم‌افزار نقشه‌هایی غیر فضایی هستند که باید داده‌های سلسله‌مراتب و ویژگی‌های آن را به یک نمایش فضایی تبدیل کند. مهندسی نرم‌افزار بر پایه مؤلفه
به عبارتی ساده‌تر یک پیکرپار چیزی است که به صورت خاص نوشته شده باشد و مهم هم نیست که چه خصوصیاتی داشته باشد. چارچوب نرم‌افزاری
چهارچوب نرم‌افزار (به انگلیسی: Software framework) یک طراحی قابل استفاده برای سیستم یا زیرسیستم‌های نرم‌افزاری است. مهندسی نرم‌افزار
مهندسی نرم‌افزار اغلب شامل فرایند خطی تحلیل، طراحی، پیاده‌سازی و آزمون است؛ که با به‌کارگیری روش‌های فنی و علمی از علوم مهندسی موجب تولید نرم‌افزاری با کیفیت مطلوب در طول یک فرایند انتخابی مناسب پروژه می‌شود. مدیریت پیکربندی نرم‌افزار
مدیریت پیکربندی نرم‌افزار () در مهندسی نرم‌افزار، بخشی از وظیفه مدیریت پیکربندی، رهگیری و کنترل تغییرات در حوزه نرم‌افزار را برعهده دارد. شیوه‌های مدیریت پیکربندی نرم‌افزار شامل کنترل نسخه و ایجاد مبنای پایه می‌باشد. تشخیص، سازمان‌دهی و کنترل اصلاحات نرم‌افزاری که توسط تیم برنامه‌ساز با هدف بهینه‌سازی عملکرد تولید و کاهش اشتباهات انجام می‌پذیرد نیز، پیکربندی نرم‌افزار نامیده می‌شود. به‌طور کلی مدیریت پیکربندی، تغییراتی که اغلب توسط مدیر سیستم انجام می‌شود را، پشتیبانی و مدیریت می‌نماید. نیازمندی‌های نرم‌افزار
اعتبار سنجی شامل تکنیک‌های است که صحت مجموعه‌ای از نیازمندی‌های مشخص شده برای ساخت یک راه حل که اهداف کسب و کار پروژه می‌انجامد را تأیید می‌کند. مهندسی نرم‌افزار
مهم‌ترین شاخص در مهندسی نرم‌افزار تولید (طراحی و پیاده‌سازی) نرم‌افزار با کیفیت متناسب با «نیازهای مشتری» است. مدیریت پروژه نرم‌افزاری
هدف از برنامه‌ریزی پروژه نرم‌افزاری، مشخص نمودن محدوده (Scope) پروژه، تخمین حجم کاری مورد نیاز، تعيين گام‌هاي لازم جهت رسيدن به اهداف و در نتیجه تدوین یک برنامه زمان‌بندی جهت اجرای پروژه است. برنامه‌نویسی استقرایی
اولین کارگاه‌های آموزشی رویکرد هاو اپلیکیشن‌های برنامه‌نویسی‌استقرایی که همراه با ICML 2005 برگزار شد اپلیکیشن‌های کاربردی را شناسایی کرد که «فراگیری برنامه‌ها یا قوانین بازگشتی فراخوانده می‌شود، ابتدا در حوزه مهندسی نرم‌افزار که در ان یادگیری ساختاری، دستیاران نرم‌افزار و عوامل نرم‌افزار می‌توانند به راحتی برنامه نویسان از کارهای پیش پا افتاده، پشتیبانی برنامه‌نویسی برای کاربران نهایی، یا پشتیبانی از برنامه نویسان تازه‌کار و سیستم‌های آموزش برنامه‌نویسی کمک کنند. حوزه‌های بیشتر کاربرد عبارت اند: از یادگیری قوانین کنترل بازگشتی برای برنامه ریزی هوش مصنوعی، یادگیری مفاهیم بازگشتی در وب کاوی یا برای دگرگونی قالب‌های داده.» مهندسی مایکروسافت
تخصص یک مهندس مایکروسافت در طراحی، برنامه‌ریزی، هدایت و اشکال‌یابی شبکه‌های کامپیوتری مبتنی بر سیستم‌عامل ویندوز است. یک مهندس سیستمهای مایکروسافت می‌بایست تمامی زیرساختهای لازمه برای ایجاد یک شبکهٔ رایانه‌ای را بداند و با توجه به نیازهای شرکت متبوع بهترین راه حل را برای بهینه‌کردن امور در اختیار آن شرکت قراردهد. طبق اعلام از سایت مایکروسافت30 jun 2020 آخرین فرصت اخذ مدرک Mcse-Mcsd-mcsa می‌باشد. و پس از آن دیگر هیچکدام از آزمونهای سری 000-70 برگزار نخواهد شد تست‌افزار
به‌طور کلی، تست‌افزار زیرمجموعه‌ای از مهندسی نرم‌افزار با هدف خاص می‌باشد که به منظور تست اتوماسیون نرم‌افزار استفاده می‌شود. اتوماسیون تست‌افزار به عنوان مثل برای اجرا شدن بر روی چارچوب‌های اتوماسیون طراحی می‌شوند. تست‌افزار یک اصطلاح چتری است که در بر گیرنده تمامی نرم‌افزارهای کاربردی است که در تست یک بسته نرم‌افزاری مورد استفاده قرار می‌گیرد و لزوماً به اهداف عملیاتی کمک نمی‌کند. به همین ترتیب، تست‌افزار یک پیکربندی ایستا نیست، بلکه صرفاً یک محیط کاری برای نرم‌افزار کاربردی یا زیر مجموعه‌های آن است. اطمینان‌پذیری
در مهندسی سیستم، اطمینان‌پذیری معیار اندازه‌گیری در دسترس بودن سیستم، قابلیت اطمینان، و قابلیت نگهداری آن و عملکرد پشتیبانی نگهداری و در برخی موارد، سایر ویژگی‌ها مانند دوام، ایمنی و امنیت است. در مهندسی نرم‌افزار، قابلیت اطمینان توانایی ارائه خدماتی است که به‌طور قابل دفاع در یک بازه زمانی قابل اعتماد است. این ممکن است شامل مکانیسم‌هایی باشد که برای افزایش و حفظ قابلیت اطمینان یک سیستم یا نرم‌افزار طراحی شده‌اند. نرم‌افزارهای رشته مهندسی مکانیک شاخه CAD و CAE
دنیای امروز دنیای گستردهٔ نرم‌افزارهاست دنیایی که مبتنی بر سرعت محاسبات می‌باشد و برای این هدف استفاده از نرم‌افزارها بهترین گزینه می‌باشد. نرم‌افزار
نرم‌افزار گردآوردی از دستورالعمل‌‌ها است که به رایانه می‌گوید «چگونه کار کن». این مفهوم در برابر سخت‌افزار فیزیکی قرار دارد، که توسط آن سامانه ساخته شده است، و «در واقعیت کار را انجام می‌دهد». در علوم رایانه و مهندسی نرم‌افزار، یک نرم‌افزار رایانه‌ای همه اطلاعاتی است که توسط سامانه رایانه‌ای پردازش می‌شود، که شامل برنامه‌ها و داده است. نرم‌افزار رایانه‌ای شامل برنامه‌های رایانه‌ای، کتابخانه‌ها، و داده‌های مرتبط غیرقابل‌اجرا (مثل مستندات برخط و رسانه‌های دیجیتالی) است. سخت‌افزار و نرم‌افزار رایانه‌ای به هم احتیاج دارند، و هیچ‌کدام به صورت واقعی قابل استفاده به خودی خود نیست.