نرم‌افزار مجموعه‌ای از دستورالعمل‌ها، داده‌ها یا برنامه‌هایی است که برای کار با رایانه و اجرای وظایف خاص استفاده می‌شود. این برعکس سخت‌افزار است که جنبه‌های فیزیکی یک کامپیوتر را توصیف می‌کند. نرم‌افزار یک اصطلاح عمومی است که برای اشاره به برنامه‌ها، اسکریپت‌ها و برنامه‌هایی که بر روی یک دستگاه اجرا می‌شوند، استفاده می‌شود. می‌توان آن را به عنوان بخش متغیر یک کامپیوتر در نظر گرفت، در حالی که سخت‌افزار بخش غیرقابل تغییر است. پس از فهمیدن نرم‌افزار، باید به مبحث طراحی نرم‌افزار پرداخت.

دو دسته اصلی نرم‌افزارها، نرم‌افزارهای کاربردی و نرم‌افزارهای سیستمی هستند. برنامه، نرم‌افزاری است که نیاز خاصی را برآورده می‌کند یا وظایفی را انجام می‌دهد. نرم‌افزار سیستم برای اجرای سخت‌افزار کامپیوتر طراحی شده است و بستری را برای اجرای برنامه‌ها در بالای آن فراهم می‌کند.

انواع دیگر نرم‌افزارها شامل نرم‌افزارهای برنامه‌نویسی است که ابزارهای برنامه‌نویسی موردنیاز توسعه‌دهندگان نرم‌افزار را فراهم می‌کند. میان‌افزار، که بین نرم‌افزار سیستم و برنامه‌های کاربردی قرار می‌گیرد. و نرم‌افزار درایور، که دستگاه‌های کامپیوتری و لوازم جانبی را کار می‌کند.

نرم‌افزارهای اولیه برای رایانه‌های خاصی نوشته شده بود و با سخت‌افزاری که روی آن کار می‌کرد فروخته می‌شد. در دهه 1980، نرم‌افزارها روی فلاپی دیسک و بعداً روی سی‌دی و دی‌وی‌دی فروخته می‌شدند. امروزه اکثر نرم‌افزارها به صورت مستقیم از طریق اینترنت خریداری و دانلود می‌شوند. نرم‌افزار را می‌توان در وب‌سایت‌های فروشنده یا وب‌سایت‌های ارائه‌دهنده خدمات کاربردی یافت.

نمونه‌ها و انواع نرم‌افزارها

از میان دسته‌های مختلف نرم‌افزار، رایج‌ترین انواع آن شامل موارد زیر است:

نرم‌افزار کاربردی

متداول‌ترین نوع نرم‌افزار، نرم‌افزار کاربردی، بسته نرم‌افزاری رایانه‌ای است که عملکرد خاصی را برای یک کاربر یا در برخی موارد برای برنامه دیگری انجام می‌دهد. یک برنامه می‌تواند مستقل باشد یا می‌تواند گروهی از برنامه‌ها باشد که برنامه را برای کاربر اجرا می‌کنند. نمونه‌هایی از برنامه‌های کاربردی مدرن عبارتند از: مجموعه‌های اداری، نرم‌افزارهای گرافیکی، پایگاه‌های داده و برنامه‌های مدیریت پایگاه داده، مرورگرهای وب، واژه‌پردازها، ابزارهای توسعه نرم‌افزار، ویرایشگرهای تصویر و پلتفرم‌های ارتباطی.

نرم‌افزار سیستمی

این نرم‌افزارها برای اجرای برنامه‌های کاربردی و سخت‌افزار کامپیوتر طراحی شده‌اند. نرم‌افزار سیستم، فعالیت‌ها و عملکردهای سخت‌افزار و نرم‌افزار را هماهنگ می‌کند. علاوه بر این، عملیات سخت‌افزار رایانه را کنترل می‌کند و محیط یا بستری را برای همه انواع نرم‌افزارهای دیگر فراهم می‌کند. سیستم‌عامل بهترین نمونه نرم‌افزار سیستم است. تمام برنامه‌های کامپیوتری دیگر را مدیریت می‌کند. نمونه‌های دیگر نرم‌افزار سیستم عبارتند از سیستم‌عامل، مترجم‌های زبان کامپیوتر و ابزارهای کمکی سیستم.

نرم‌افزار درایور

این نرم‌افزار که به عنوان درایورهای دستگاه نیز شناخته می‌شود، اغلب نوعی نرم‌افزار سیستمی محسوب می‌شود. درایورهای دستگاه، دستگاه‌ها و لوازم جانبی متصل به رایانه را کنترل می‌کنند و آنها را قادر می‌سازند تا وظایف خاص خود را انجام دهند. هر دستگاهی که به رایانه متصل است، حداقل به یک درایور دستگاه برای عملکرد نیاز دارد. مثال‌ها شامل نرم‌افزاری است که با هر سخت‌افزار غیراستاندارد، از جمله کنترل‌کننده‌های بازی ویژه و همچنین نرم‌افزاری که سخت‌افزار استاندارد را فعال می‌کند، مانند دستگاه‌های ذخیره‌سازی USB، صفحه کلید، هدفون و چاپگرها ارائه می‌شود.

میان‌افزار

اصطلاح میان‌افزار، نرم‌افزاری را توصیف می‌کند که بین نرم‌افزار برنامه و سیستم یا بین دو نوع مختلف نرم‌افزار کاربردی واسطه می‌شود. به عنوان مثال، میان‌افزار مایکروسافت ویندوز را قادر می‌سازد تا با Excel و Word صحبت کند. همچنین برای ارسال درخواست کار از راه دور از برنامه‌ای در رایانه‌ای که یک نوع سیستم‌عامل دارد، به برنامه‌ای در رایانه‌ای با سیستم‌عامل متفاوت استفاده می‌شود. همچنین برنامه‌های جدیدتر را قادر می‌سازد با برنامه‌های قدیمی کار کنند.

نرم‌افزار برنامه‌نویسی

برنامه‌نویسان کامپیوتر از نرم‌افزارهای برنامه‌نویسی برای نوشتن کد استفاده می‌کنند. نرم‌افزارهای برنامه‌نویسی و ابزارهای برنامه‌نویسی توسعه‌دهندگان را قادر می‌سازند تا برنامه‌های نرم‌افزاری دیگر را توسعه دهند، بنویسند، آزمایش کنند و اشکال‌زدایی کنند. نمونه‌هایی از نرم‌افزارهای برنامه‌نویسی شامل اسمبلر، کامپایلر، دیباگر و مفسر ‌است.

نرم‌افزار چگونه کار می‌کند؟

همه نرم‌افزارها، جهت‌ها و داده‌های موردنیاز رایانه‌ها را برای کار و رفع نیازهای کاربران فراهم می‌کنند. با این حال، دو نوع مختلف – نرم‌افزار کاربردی و نرم افزار سیستمی – به روش‌های متفاوتی کار می‌کنند.

نرم‌افزار کاربردی

نرم‌افزار کاربردی از برنامه‌های زیادی تشکیل شده است که عملکردهای خاصی را برای کاربران نهایی انجام می‌دهد، مانند نوشتن گزارش و مرور وب‌سایت‌ها. برنامه‌ها همچنین می‌توانند وظایفی را برای سایر برنامه‌ها انجام دهند. برنامه‌های کاربردی در رایانه نمی‌توانند به تنهایی اجرا شوند. آنها برای کار کردن به سیستم‌عامل کامپیوتر به همراه سایر برنامه‌های نرم‌افزاری سیستم پشتیبانی می‌کنند. این برنامه‌های دسکتاپ بر روی رایانه کاربر نصب می‌شوند و از حافظه رایانه برای انجام وظایف استفاده می‌کنند. آنها فضای روی هارد کامپیوتر را اشغال می‌کنند و برای کار نیازی به اتصال به اینترنت ندارند. با این حال، برنامه‌های دسکتاپ باید به الزامات دستگاه‌های سخت‌افزاری که روی آن اجرا می‌شوند، پایبند باشند. از سوی دیگر، برنامه‌های کاربردی وب برای کار فقط به دسترسی به اینترنت نیاز دارند. آنها برای اجرا به سخت‌افزار و نرم‌افزار سیستم متکی نیستند. در نتیجه، کاربران می‌توانند برنامه‌های کاربردی وب را از دستگاه‌هایی که دارای مرورگر وب هستند راه‌اندازی کنند. از آنجایی که اجزای مسئول عملکرد برنامه روی سرور هستند، کاربران می‌توانند برنامه را از ویندوز، مک، لینوکس یا هر سیستم‌عامل دیگری راه‌اندازی کنند.

نرم‌افزار سیستمی

نرم‌افزار سیستمی بین سخت‌افزار کامپیوتر و نرم‌افزار کاربردی قرار می‌گیرد. کاربران مستقیماً با نرم‌افزار سیستمی ارتباط برقرار نمی‌کنند، زیرا در پس‌زمینه اجرا می‌شود و عملکردهای اساسی رایانه را انجام می‌دهد. این نرم‌افزار، سخت‌افزار و نرم‌افزار یک سیستم را هماهنگ می‌کند تا کاربران بتوانند نرم‌افزارهای کاربردی سطح بالا را برای انجام اقدامات خاص اجرا کنند. نرم‌افزار سیستمی زمانی اجرا می‌شود که سیستم کامپیوتری بوت می‌شود و تا زمانی که سیستم روشن است، به کار خود ادامه می‌دهد.

طراحی و پیاده‌سازی

چرخه حیات توسعه نرم‌افزار چارچوبی است که مدیران پروژه از آن برای توصیف مراحل و وظایف مرتبط با طراحی نرم‌افزار استفاده می‌کنند. اولین گام در چرخه عمر طراحی، برنامه‌ریزی، تلاش و سپس تجزیه و تحلیل نیازهای افرادی است که از نرم‌افزار استفاده می‌کنند و ایجاد نیازهای دقیق. پس از تجزیه و تحلیل نیازهای اولیه، مرحله طراحی با هدف مشخص کردن چگونگی برآوردن آن نیازهای کاربر است. مرحله بعدی پیاده‌سازی است. جایی که کار توسعه تکمیل می‌شود و سپس تست نرم‌افزار اتفاق می‌افتد. مرحله تعمیر و نگهداری شامل هر گونه وظایفی است که برای فعال نگه‌داشتن سیستم لازم است. طراحی نرم‌افزار شامل توصیفی از ساختار نرم‌افزاری است که پیاده‌سازی می‌شود، مدل‌های داده، رابط‌های بین اجزای سیستم و احتمالاً الگوریتم‌هایی که مهندس نرم‌افزار از آنها استفاده خواهد کرد. فرآیند طراحی نرم‌افزار نیازمندی‌های کاربر را به شکلی تبدیل می‌کند که برنامه‌نویسان کامپیوتر می‌توانند از آن برای انجام کدگذاری و پیاده‌سازی نرم‌افزار استفاده کنند. مهندسان نرم‌افزار طراحی نرم‌افزار را به طور مکرر توسعه می‌دهند، جزئیات را اضافه می‌کنند و طرح را در حین توسعه اصلاح می‌کنند.
انواع مختلف طراحی نرم‌افزار شامل موارد زیر است:

طراحی معماری: این طرح پایه است که ساختار کلی سیستم، اجزای اصلی آن و روابط آنها با یکدیگر را با استفاده از ابزارهای طراحی معماری شناسایی می‌کند.

طراحی سطح بالا: این دومین لایه طراحی است که بر نحوه پیاده‌سازی سیستم به همراه تمام اجزای آن در قالب ماژول‌هایی که توسط یک پشته نرم‌افزاری پشتیبانی می‌شوند تمرکز دارد. یک طراحی سطح بالا، روابط بین جریان داده و ماژول‌ها و عملکردهای مختلف سیستم را توصیف می‌کند.

طراحی دقیق و با جزییات: این لایه سوم طراحی بر تمام جزئیات پیاده‌سازی لازم برای معماری مشخص شده تمرکز دارد.

نحوه حفظ کیفیت نرم‌افزار

کیفیت نرم‌افزار در صورتی اندازه‌گیری می‌شود که نرم‌افزار هم نیازهای عملکردی و هم غیرعملکردی خود را برآورده کند. الزامات عملکردی مشخص می‌کند که نرم‌افزار باید چه کاری انجام دهد. آنها شامل جزئیات فنی، دستکاری و پردازش داده‌ها، محاسبات یا هر عملکرد خاص دیگری هستند که مشخص می‌کند یک برنامه چه هدفی را انجام می‌دهد. الزامات غیرکاربردی – که به عنوان ویژگی‌های کیفیت نیز شناخته می‌شوند – تعیین می‌کنند که سیستم چگونه باید کار کند. الزامات غیرکاربردی شامل قابلیت حمل، بازیابی فاجعه، امنیت، حریم خصوصی و قابلیت استفاده است. تست نرم‌افزار مسائل فنی را در کد منبع نرم‌افزار شناسایی و حل می‌کند و قابلیت استفاده، عملکرد، امنیت و سازگاری کلی محصول را ارزیابی می‌کند تا اطمینان حاصل شود که الزامات آن را برآورده می‌کند.

ابعاد کیفیت نرم افزار شامل ویژگی های زیر است:

دسترسی: درجه‌ای که گروه متنوعی از مردم، از جمله افرادی که به فناوری‌های تطبیقی ​​مانند تشخیص صدا و ذره‌بین‌های صفحه نیاز دارند، می‌توانند به راحتی از نرم‌افزار استفاده کنند.

سازگاری: مناسب بودن نرم‌افزار برای استفاده در محیط‌های مختلف مانند سیستم‌عامل‌ها، دستگاه‌ها و مرورگرهای مختلف.

بهره‌وری: توانایی نرم‌افزار برای عملکرد خوب بدون اتلاف انرژی، منابع، تلاش، زمان یا پول.

عملکرد: توانایی نرم‌افزار برای انجام وظایف مشخص شده خود.

قابلیت نصب: قابلیت نصب نرم‌افزار در محیطی مشخص.

بومی‌سازی: زبان‌های مختلف، مناطق زمانی و سایر ویژگی‌هایی از این دست که یک نرم‌افزار می‌تواند در آنها کار کند.

قابلیت نگهداری: به راحتی می‌توان نرم‌افزار را برای افزودن و بهبود ویژگی‌ها، رفع اشکالات و غیره تغییر داد.

کارایی: سرعت عملکرد نرم‌افزار تحت یک بار خاص.

قابل حمل بودن: قابلیت انتقال آسان نرم‌افزار از مکانی به مکان دیگر.
قابلیت اطمینان: توانایی نرم‌افزار برای انجام یک عملکرد موردنیاز تحت شرایط خاص برای مدت زمان مشخص بدون هیچ‌گونه خطا.

مقیاس پذیری: اندازه‌گیری توانایی نرم‌افزار برای افزایش یا کاهش عملکرد در پاسخ به تغییرات در نیازهای پردازشی آن.

امنیت: توانایی نرم‌افزار برای محافظت در برابر دسترسی‌های غیرمجاز، تجاوز به حریم خصوصی، سرقت، از دست دادن داده‌ها، نرم‌افزارهای مخرب و غیره.

آزمایش پذیری: تست نرم‌افزار چقدر آسان است.

قابلیت استفاده: استفاده از نرم‌افزار چقدر آسان است.

برای حفظ کیفیت نرم‌افزار پس از استقرار، توسعه‌دهندگان باید دائماً آن را برای پاسخگویی به نیازهای مشتری جدید و رسیدگی به مشکلاتی که مشتریان شناسایی می‌کنند، تطبیق دهند. این کار شامل بهبود عملکرد، رفع اشکالات و تنظیم کد نرم‌افزار برای جلوگیری از مشکلات است. مدت زمان ماندگاری یک محصول در بازار به توانایی توسعه‌دهندگان برای همگام شدن با این الزامات نگهداری بستگی دارد.

لیندا روزنکرانس – Linda Rosencrance