কম্পিউটার সফটওয়্যার

থাম্ব|সফটওয়্যার

বৈদ্যুতিক গণনাযন্ত্র বা কম্পিউটারের বিভিন্ন অংশকে কর্মোপযোগী করা, পরিচালনা করা এবং কোনো বিশেষ ব্যবহারিক কাজ সম্পন্ন করার উদ্দেশ্যে যে বিভিন্ন নির্দেশনাক্রম তথা প্রোগ্রাম এবং পুনর্ব্যবহারযোগ্য নির্দেশনাক্রম তথা রুটিন বা ফাংশন ব্যবহার করা হয় (যাদের মধ্যে কম্পিউটারের পরিচালক ব্যবস্থা (অপারেটিং সিস্টেম), তাদের সবগুলিকে একত্রে সাধারণভাবে **কম্পিউটার সফটওয়্যার** (), **কম্পিউটার নির্দেশনাসামগ্রী** বা **কম্পিউটার তন্ত্রাংশসামগ্রী** বলা হয়। এর বিপরীতে কম্পিউটারের ইলেকট্রনীয়, বৈদ্যুতিক, চৌম্বক ও অন্যান্য সমস্ত দৃশ্যমান ও স্পর্শনীয় ভৌত যন্ত্রাংশগুলিকে একত্রে **কম্পিউটার যন্ত্রাংশসামগ্রী** বা **[[কম্পিউটার হার্ডওয়্যার]]** বলে।

কম্পিউটার সফটওয়্যার বা নির্দেশনাসামগ্রীকে দুইটি প্রধান শ্রেণীতে ভাগ করা যায়। একটি হল কম্পিউটারের পরিচালক ব্যবস্থা (অপারেটিং সিস্টেম) নির্দেশনাসামগ্রী বা সিস্টেম সফটওয়্যার, যা গণনাযন্ত্রের অভ্যন্তরীণ এবং পারিপার্শ্বিক (চাবিফলক বা কি-বোর্ড, মাউস, দৃশ্যপর্দা বা মনিটর, উপাত্ত সংরক্ষণাগার বা স্টোরেজ, মুদ্রণযন্ত্র বা প্রিন্টার ইত্যাদি) যন্ত্রাংশগুলির ক্রিয়াকলাপের মধ্যে সমন্বয় সাধন করে এগুলিকে কর্মোপযোগী করে।

দ্বিতীয়টি হল ব্যবহারিক নির্দেশনাসামগ্রী (বা তন্ত্রাংশসামগ্রী) বা অ্যাপ্লিকেশন সফটওয়্যার, যেগুলিতে গণনাযন্ত্র বা কম্পিউটারকে এমন সব নির্দেশনা বা আদেশ পালন করতে দেওয়া হয়, যাতে সেটি ব্যবহারকারীর প্রদত্ত উপাত্ত প্রক্রিয়াজাত করে কোনো ব্যবহারিক সমস্যার সমাধান করতে পারে। যেমন রচনা প্রক্রিয়াকরণ বা ওয়ার্ড প্রসেসিং, সারণিবদ্ধ উপাত্ত হিসাবনিকাশ বা স্প্রেডশিট, তথ্যভাণ্ডার বা ডাটাবেস, ইত্যাদি।

এছাড়াও তৃতীয় এক শ্রেণীর নির্দেশনাসামগ্রী বা সফটওয়্যার আছে, যার নাম কম্পিউটার জাল-ব্যবস্থা নির্দেশনাসামগ্রী তথা নেটওয়ার্ক সফটওয়্যার, যেগুলি একটি জালসদৃশ ব্যবস্থা বা নেটওয়ার্ক গঠনকারী গণনাযন্ত্র বা কম্পিউটারগুলির মধ্যকার যোগাযোগে সমন্বয় সাধন করে।

আরও এক ধরনের নির্দেশনাসামগ্রী আছে যেগুলির কাজ হল মানুষকে বিভিন্ন ধরনের নির্দেশনাক্রম বা প্রোগ্রাম রচনা করতে সাহায্য করা। এগুলিকে নির্দেশনাক্রম রচনা সরঞ্জাম বা প্রোগ্রামিং টুল বলা হয়। অনেক সময় এগুলিকে একত্রে প্রোগ্রাম রচনামূলক নির্দেশনাসামগ্রী বা প্রোগ্রামিং সফটওয়্যার নামেও ডাকা হয়।

কম্পিউটার নির্দেশনাক্রমগুলি তথা প্রোগ্রামগুলি মানুষের স্বাভাবিক মুখের ভাষার লিখিত রূপে লেখা হয় না। বরং এগুলিকে বিশেষ ধরনের কৃত্রিম সাংকেতিক (কিন্তু মানুষের বোধগম্য) এক ধরনের ভাষায় রচনা করা হয়, যে ভাষাগুলিকে নির্দেশনাক্রম ভাষা বা প্রোগ্রামিং ভাষা নামে ডাকা হয়। প্রোগ্রামিং ভাষাতে লেখা সাঙ্কেতিক নির্দেশনাগুলিকে উৎস সঙ্কেত বা সোর্স কোড বলা হয়। কিন্তু গণনাযন্ত্র বা কম্পিউটার এই উৎস সঙ্কেতের ভাষা প্রক্রিয়াজাত করতে পারে না। তাই উৎস সঙ্কেতকে কম্পাইলার বা সঙ্কলক নামক আরেকটি প্রোগ্রামের সাহায্যে যান্ত্রিক ভাষা নামের কৃত্রিম ভাষাতে ভাষান্তরিত করা হয়, এবং এই ভাষান্তরের ফলে উৎপন্ন যান্ত্রিক সঙ্কেত গণনাযন্ত্র বা কম্পিউটার "বুঝতে" বা প্রক্রিয়াজাত করতে পারে ও এতে অবস্থিত নির্দেশনাগুলি নির্বাহ করতে পারে।

নির্দেশনাসামগ্রী বা সফটওয়্যার সাধারণত দীর্ঘস্থায়ী স্মৃতির শক্ত চাকতি বা হার্ড ডিস্কে চৌম্বকীয় সঙ্কেত হিসেবে সংরক্ষিত থাকে। যখন কোনও নির্দেশনাক্রম বা প্রোগ্রাম নির্বাহ করতে হয়, তখন কম্পিউটার বা গণনাযন্ত্রের মূল প্রক্রিয়াকারক অংশ (সেন্ট্রাল প্রসেসিং ইউনিট) সেটিকে সংরক্ষিত দীর্ঘস্থায়ী স্মৃতি থেকে "পড়ে" নেয় এবং ঐ নির্দেশনাক্রমের একটি অনুলিপি বা কপি কম্পিউটারের ক্ষণস্থায়ী স্মৃতি বা র‍্যান্ডম অ্যাক্সেস মেমরি-তে (যথেচ্ছ অধিগম্য স্মৃতি) স্থাপন করে। সেখান থেকে নির্দেশনাক্রম বা প্রোগ্রামটিকে চালানো বা "রান" করানো হয়। প্রোগ্রামের কাজ শেষ হয়ে গেলে ক্ষণস্থায়ী স্মৃতি থেকে এগুলি মুছে যায়। তবে কিছু কিছু নির্দেশনাসামগ্রী স্থায়ীভাবে এক বিশেষ ধরনের স্মৃতিতে বিরাজ করে, যাকে শুধুমাত্র পাঠ্য স্মৃতি বা রিড-ওনলি মেমরি বলে। এই ধরনের নির্দেশনাসামগ্রীকে "স্থির নির্দেশনাসামগ্রী" তথা ফার্মওয়্যার বা হার্ড সফটওয়্যার বলে।

## সফটওয়্যারের ইতিহাস
সফটওয়্যারের ইতিহাস কম্পিউটারের আবিষ্কারের সাথে শুরু হয়। ১৯৪০-এর দশকে প্রথম ইলেকট্রনিক কম্পিউটার তৈরির সময় সরাসরি মেশিন ভাষায় প্রোগ্রামিং করা হতো। ১৯৫০-এর দশকে ফরট্রান ও লিস্প-এর মতো উচ্চ-স্তরের প্রোগ্রামিং ভাষা তৈরি হয়।

১৯৬০-এর দশকে সফটওয়্যার ডেভেলপমেন্ট একটি পেশা হিসেবে বিকাশ লাভ করে এবং বাণিজ্যিক সফটওয়্যার বাজারজাত শুরু হয়। ১৯৭০ ও ৮০-এর দশকে পার্সোনাল কম্পিউটারের প্রসার এবং মাইক্রোসফট ও অ্যাপল-এর মতো প্রতিষ্ঠানের ভূমিকা সফটওয়্যারকে সহজলভ্য করে তোলে।

১৯৯০-এর দশকে ইন্টারনেট এবং ওয়েবভিত্তিক সফটওয়্যার বিপ্লব ঘটায়। বর্তমানে AI, মেশিন লার্নিং ও ক্লাউড কম্পিউটিং -এর মতো আধুনিক প্রযুক্তিতে সফটওয়্যার অপরিহার্য ভূমিকা পালন করছে। নতুন যুগে সফটওয়্যার উন্নয়নের সাথে সাথে ওপেন সোর্স এবং মোবাইল অ্যাপ্লিকেশনের জনপ্রিয়তা ব্যাপকভাবে বৃদ্ধি পেয়েছে। ভবিষ্যতে কোয়ান্টাম কম্পিউটিং ও স্বয়ংক্রিয় সফটওয়্যার তৈরি আরও নতুন দিগন্ত উন্মোচন করবে।

## প্রধান প্রকারভেদ
থাম্ব|ওপেনঅফিস.ওর্গ কর্তৃক বাজারজাতকৃত মুক্ত ওয়ার্ড প্রসেসিং সফটওয়্যার 'ওপেন অফিস রাইটার'।
সফটওয়্যার প্রধানত ৩ প্রকারঃ-
১. সিস্টেম সফটওয়্যার 
২. প্রোগ্রামিং সফটওয়্যার 
৩. এপ্লিকেশন সফটওয়্যার

### সিস্টেম সফটওয়্যার
সিস্টেম সফটওয়্যার হার্ডওয়্যার চালনা করতে সহায়তা করে, এপ্লিকেশন সফটওয়্যার চালানোর জন্য প্লাটফর্ম গঠন করে। সিস্টেম সফটওয়্যারের মধ্যে আছে অপারেটিং সিস্টেম, হার্ডওয়্যার ড্রাইভার ইত্যাদি।
### এপ্লিকেশন সফটওয়্যার
এপ্লিকেশন সফটওয়্যার ব্যবহারকারীর নির্দিষ্ট কাজ সম্পাদনের জন্য ডিজাইন করা হয় এবং সেটা অবশ্যই সিস্টেম সফটওয়্যারের সিস্টেমের অধীনেই হতে হয়। আরো সহজ করে বললে, অ্যাপ্লিকেশন সফটওয়্যার হল ঐ সফটওয়্যার যা নির্দিষ্ট একটা সিস্টেম সফটওয়্যারের অধীনে কোনো একটা নির্দিষ্ট কাজ সম্পাদনের জন্য তৈরী করা হয়েছে।

এর মধ্যে রয়েছে অফিস সফটওয়্যার (যেমন মাইক্রোসফ্ট অফিস, গুগল ডকস), মিডিয়া প্লেয়ার, ডেটাবেস ম্যানেজমেন্ট সফটওয়্যার এবং গ্রাফিক্স সফটওয়্যার।

## সফটওয়্যার ডেভেলপমেন্ট প্রসেস

সফটওয়্যার ডেভেলপমেন্টের বিভিন্ন ধাপ রয়েছে:
# **প্রয়োজনীয়তা বিশ্লেষণ**: সফটওয়্যারের জন্য প্রয়োজনীয়তাগুলি চিহ্নিত করা।
# **ডিজাইন**: সফটওয়্যারের আর্কিটেকচার এবং মডিউল তৈরি করা।
# **ইমপ্লিমেন্টেশন**: কোডিং এবং প্রোগ্রামিং।
# **টেস্টিং**: বাগ শনাক্ত এবং সমাধান করা।
# **মেইনটেন্যান্স**: সফটওয়্যারের হালনাগাদ এবং উন্নয়ন।
## সফটওয়্যার তৈরীচক্র
সফটওয়্যার তৈরীচক্র হলো একটি প্রক্রিয়া, যার মাধ্যমে একটি সফটওয়্যার পরিকল্পনা, উন্নয়ন, পরীক্ষা ও বাস্তবায়নের মাধ্যমে সম্পন্ন করা হয়। এটি সফটওয়্যার উন্নয়নের একটি কাঠামোগত পদ্ধতি, যা সফটওয়্যারের গুণগত মান নিশ্চিত করতে সহায়তা করে।

এই প্রক্রিয়ায় বিভিন্ন ধাপ অনুসরণ করা হয়, যেমন:

1. চাহিদা নির্ধারণ ও বিশ্লেষণ

2. পরিকল্পনা ও নকশা

3. বাস্তবায়ন ও কোডিং

4. পরীক্ষা ও যাচাইকরণ

5. মোতায়েন ও রক্ষণাবেক্ষণ

সফটওয়্যার তৈরীচক্রের মূল লক্ষ্য হলো সময় ও বাজেটের মধ্যে একটি কার্যকরী এবং নির্ভরযোগ্য সফটওয়্যার তৈরি করা। এটি উন্নয়ন প্রক্রিয়াকে গুছিয়ে পরিচালনা করে এবং সম্ভাব্য ত্রুটি কমিয়ে আনে।

## আরও দেখুন
* সফটওয়্যার রিলিজ লাইফ সাইকল
* Independent software vendor
* List of software
* Software asset management
* উন্মুক্ত-উৎসের সফটওয়্যার

## তথ্যসূত্র

## পাদটীকা
* 

## বহিঃসংযোগ

* 

বিষয়শ্রেণী:সফটওয়্যার
বিষয়শ্রেণী:কম্পিউটার বিজ্ঞান
বিষয়শ্রেণী:গাণিতিক ও পরিমাণগত পদ্ধতি (অর্থশাস্ত্র)