Yazılım, değişik ve çeşitli görevler yapma amaçlı tasarlanmış elektronik aygıtların birbirleriyle haberleşebilmesini ve uyumunu sağlayarak görevlerini ya da kullanılabilirliklerini geliştirmeye yarayan makine komutlarıdır.
ইলেক্ট্রনীয় গণকযন্ত্র বা কম্পিউটারের বিভিন্ন অংশকে কর্মোপযোগী করা, একে পরিচালনা করা এবং একে দিয়ে কোনও বিশেষ ব্যবহারিক কাজ সম্পন্ন করার উদ্দেশ্যে যে বিভিন্ন নির্দেশনাক্রম তথা প্রোগ্রাম এবং পুনর্ব্যবহারযোগ্য নির্দেশনাক্রম তথা রুটিন বা ফাংশন ব্যবহার করা হয়, তাদের সবগুলিকে একত্রে সাধারণভাবে কম্পিউটার সফটওয়্যার বা কম্পিউটার নির্দেশনাসামগ্রী বলা হয়। এর বিপরীতে কম্পিউটারের ইলেকট্রনীয়, বৈদ্যুতিক, চৌম্বক ও অন্যান্য সমস্ত দৃশ্যমান ও স্পর্শনীয় ভৌত যন্ত্রাংশগুলিকে একত্রে কম্পিউটার যন্ত্রাংশসামগ্রী বা কম্পিউটার হার্ডওয়্যার বলে। কম্পিউটার সফটওয়্যার বা নির্দেশনাসামগ্রীকে দুইটি প্রধান শ্রেণীতে ভাগ করা যায়। একটি হল কম্পিউটারের পরিচালক ব্যবস্থা নির্দেশনাসামগ্রী বা সিস্টেম সফটওয়্যার, যা গণকযন্ত্রের অভ্যন্তরীণ এবং পারিপার্শ্বিক যন্ত্রাংশগুলির ক্রিয়াকলাপের মধ্যে সমন্বয় সাধন করে এগুলিকে কর্মোপযোগী করে। দ্বিতীয়টি হল ব্যবহারিক নির্দেশনাসামগ্রী বা আ্যপ্লিকেশন সফটওয়্যার, যেগুলিতে গণকযন্ত্র বা কম্পিউটারকে এমন সব নির্দেশনা বা আদেশ পালন করতে দেওয়া হয়, যাতে সেটি ব্যবহারকারীর প্রদত্ত উপাত্ত প্রক্রিয়াজাত করে কোনও ব্যবহারিক সমস্যার সমাধান করতে পারে। যেমন রচনা প্রক্রিয়াজাতকরণ বা ওয়ার্ড প্রসেসিং, সারণিবদ্ধ উপাত্ত হিসাবনিকাশ বা স্প্রেডশিট, তথ্যভাণ্ডার বা ডাটাবেস, ইত্যাদি। এছাড়াও তৃতীয় এক শ্রেণীর নির্দেশনাসামগ্রী বা সফটওয়্যার আছে, যার নাম কম্পিউটার জাল-ব্যবস্থা নির্দেশনাসামগ্রী তথা নেটওয়ার্ক সফটওয়্যার, যেগুলি একটি জালসদৃশ ব্যবস্থা বা নেটওয়ার্ক গঠনকারী গণকযন্ত্র বা কম্পিউটারগুলির মধ্যকার যোগাযোগে সমন্বয় সাধন করে। আরও এক ধরনের নির্দেশনাসামগ্রী আছে যেগুলির কাজ হল মানুষকে বিভিন্ন ধরনের নির্দেশনাক্রম বা প্রোগ্রাম রচনা করতে সাহায্য করা। এগুলিকে নির্দেশনাক্রম রচনা সরঞ্জাম বা প্রোগ্রামিং টুল বলা হয়। অনেক সময় এগুলিকে একত্রে প্রোগ্রাম রচনামূলক নির্দেশনাসামগ্রী বা প্রোগ্রামিং সফটওয়্যার নামেও ডাকা হয়। কম্পিউটার নির্দেশনাক্রমগুলি তথা প্রোগ্রামগুলি মানুষের স্বাভাবিক মুখের ভাষার লিখিত রূপে লেখা হয় না। বরং এগুলিকে বিশেষ ধরনের কৃত্রিম সাংকেতিক এক ধরনের ভাষায় রচনা করা হয়, যে ভাষাগুলিকে নির্দেশনাক্রম ভাষা বা প্রোগ্রামিং ভাষা নামে ডাকা হয়। প্রোগ্রামিং ভাষাতে লেখা সাঙ্কেতিক নির্দেশনাগুলিকে উৎস সঙ্কেত বা সোর্স কোড বলা হয়। কিন্তু গণকযন্ত্র বা কম্পিউটার এই উৎস সঙ্কেতের ভাষা প্রক্রিয়াজাত করতে পারে না। তাই উৎস সঙ্কেতকে কম্পাইলার বা সঙ্কলক নামক আরেকটি প্রোগ্রামের সাহায্যে যান্ত্রিক ভাষা নামের কৃত্রিম ভাষাতে ভাষান্তরিত করা হয়, এবং এই ভাষান্তরের ফলে উৎপন্ন যান্ত্রিক সঙ্কেত গণকযন্ত্র বা কম্পিউটার "বুঝতে" বা প্রক্রিয়াজাত করতে পারে ও এতে অবস্থিত নির্দেশনাগুলি নির্বাহ করতে পারে। নির্দেশনাসামগ্রী বা সফটওয়্যার সাধারণত দীর্ঘস্থায়ী স্মৃতির শক্ত চাকতি বা হার্ড ডিস্কে চৌম্বকীয় সঙ্কেত হিসেবে সংরক্ষিত থাকে। যখন কোনও নির্দেশনাক্রম বা প্রোগ্রাম নির্বাহ করতে হয়, তখন কম্পিউটার বা গণকযন্ত্রের মূল প্রক্রিয়াকারক অংশ সেটিকে সংরক্ষিত দীর্ঘস্থায়ী স্মৃতি থেকে "পড়ে" নেয় এবং ঐ নির্দেশনাক্রমের একটি অনুলিপি বা কপি কম্পিউটারের ক্ষণস্থায়ী স্মৃতি বা র‍্যান্ডম অ্যাক্সেস মেমরি-তে স্থাপন করে। সেখান থেকে নির্দেশনাক্রম বা প্রোগ্রামটিকে চালানো বা "রান" করানো হয়। প্রোগ্রামের কাজ শেষ হয়ে গেলে ক্ষণস্থায়ী স্মৃতি থেকে এগুলি মুছে দেওয়া হয়। তবে কিছু কিছু নির্দেশনাসামগ্রী স্থায়ীভাবে এক বিশেষ ধরনের স্মৃতিতে বিরাজ করে, যাকে শুধুমাত্র পাঠ্য স্মৃতি বা রিড-ওনলি মেমরি বলে। এই ধরনের নির্দেশনাসামগ্রীকে "স্থির নির্দেশনাসামগ্রী" তথা ফার্মওয়্যার বা হার্ড সফটওয়্যার বলে। == প্রধান প্রকারভেদ == সফটওয়্যার প্রধানত ৩ প্রকারঃ- ১.