نرمافزار[۱] (به انگلیسی: software) گردآوردی از دستورالعملها است که به رایانه میگوید «چگونه کار کن». این مفهوم در برابر سختافزار فیزیکی قرار دارد، که توسط آن سامانه ساخته شده است، و «در واقعیت کار را انجام میدهد». در علوم رایانه و مهندسی نرمافزار، یک نرمافزار رایانهای همه اطلاعاتی است که توسط سامانه رایانهای پردازش میشود، که شامل برنامهها و داده است. نرمافزار رایانهای شامل برنامههای رایانهای، کتابخانهها، و دادههای مرتبط غیرقابلاجرا (مثل مستندات برخط و رسانههای دیجیتالی) است. سختافزار و نرمافزار رایانهای به هم احتیاج دارند، و هیچکدام به صورت واقعی قابل استفاده به خودی خود نیست.
نرمافزارهای کاربردی، برنامههای مورد استفاده کاربرند و نرمافزارهای سیستمی، مدیریت رایانه را برعهده دارند. مهمترین نرمافزار سیستم، سیستمعامل است.
وقتی برنامهای روی رایانه نصب میگردد، بعضی از اجزای سختافزاری رایانه به فرمان آن برنامه در میآیند. برای نمونه هنگامی که با یک برنامه اجرای موسیقی کار میکنید، کارت صدای رایانه با برنامه پخش موسیقی همکاری میکند و یک آهنگ یا پرونده (فایل) ارتباط بین این تنها قسمتی از کار سیستم عامل است. ارتباط بین نرمافزار و سختافزار به عهده برنامهنویسی است. سیستم عامل یک برنامه نرمافزاری است که چون تمام منابع و امکانات سختافزاری در اختیار وی میباشد دارای ویژگی منحصر به فردی میباشد بنابراین آن را در رده نرمافزارهای سطح پایین (زبان ماشین) میخوانیم با این ویژگی که از اهمیت خاصی برخوردار است. به بیان دیگر سیستم عامل یک برنامه جامع است که اجازه در اختیار قراردادن منابع و امکانات سختافزاری را برای نرمافزارها صادر میکند و این سیستم عامل است که مسئول صحت عملکرد سیستم و منابع آن است.
سیستم عامل شامل ۴ بخش مهم است:
واژه نرمافزار را در معناهایی به جز معنی برنامه رایانهای نیز بهکار میبرند. مثلاً در دانش برنامه نویسان برخی نرمافزارهای لینوکس. امروزه بیشتر کاربران تنها با ظاهر گرافیکی این برنامهها کار میکنند و اقدامات بسیاری از آنها از دید کاربر پنهان میماند به عبارتی هر نرمافزار مجموعهای از رمزها است که از الگوریتمی اجرا میکند.