ধাপে ধাপে নিচে দেখুন

সফটওয়্যার সম্পর্কে বিস্তারিত

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

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

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

প্রারম্ভিক সফ্টওয়্যার নির্দিষ্ট কম্পিউটারের জন্য লেখা হয়েছিল এবং এটি যে হার্ডওয়্যারটিতে চলেছিল তার সাথে বিক্রি হয়েছিল। 1980-এর দশকে, সফ্টওয়্যারগুলি ফ্লপি ডিস্কে এবং পরে সিডি এবং ডিভিডিতে বিক্রি হতে শুরু করে। আজ, বেশিরভাগ সফ্টওয়্যার কেনা হয় এবং সরাসরি ইন্টারনেটে ডাউনলোড করা হয়। সফ্টওয়্যার বিক্রেতা ওয়েবসাইট বা অ্যাপ্লিকেশন পরিষেবা প্রদানকারী ওয়েবসাইট পাওয়া যাবে.

উদাহরণ এবং সফ্টওয়্যার প্রকার

সফ্টওয়্যারের বিভিন্ন বিভাগের মধ্যে, সবচেয়ে সাধারণ প্রকারগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

  • অ্যাপ্লিকেশন সফ্টওয়্যার। সফ্টওয়্যারের সবচেয়ে সাধারণ প্রকার, অ্যাপ্লিকেশন সফ্টওয়্যার হল একটি কম্পিউটার সফ্টওয়্যার প্যাকেজ যা ব্যবহারকারীর জন্য বা কিছু ক্ষেত্রে অন্য অ্যাপ্লিকেশনের জন্য একটি নির্দিষ্ট ফাংশন সম্পাদন করে। একটি অ্যাপ্লিকেশন স্বয়ংসম্পূর্ণ হতে পারে, অথবা এটি প্রোগ্রামগুলির একটি গ্রুপ হতে পারে যা ব্যবহারকারীর জন্য অ্যাপ্লিকেশনটি চালায়। আধুনিক অ্যাপ্লিকেশনগুলির উদাহরণগুলির মধ্যে রয়েছে অফিস স্যুট, গ্রাফিক্স সফ্টওয়্যার, ডেটাবেস এবং ডাটাবেস ম্যানেজমেন্ট প্রোগ্রাম, ওয়েব ব্রাউজার, ওয়ার্ড প্রসেসর, সফ্টওয়্যার ডেভেলপমেন্ট টুল, ইমেজ এডিটর এবং যোগাযোগ প্ল্যাটফর্ম।
  • অস্ত্রোপচার. এই সফ্টওয়্যার প্রোগ্রামগুলি কম্পিউটারের অ্যাপ্লিকেশন প্রোগ্রাম এবং হার্ডওয়্যার চালানোর জন্য ডিজাইন করা হয়েছে। সিস্টেম সফ্টওয়্যার হার্ডওয়্যার এবং সফ্টওয়্যারের কার্যক্রম এবং ফাংশন সমন্বয় করে। উপরন্তু, এটি কম্পিউটার হার্ডওয়্যারের ক্রিয়াকলাপ নিয়ন্ত্রণ করে এবং অন্য সব ধরনের সফ্টওয়্যার কাজ করার জন্য একটি পরিবেশ বা প্ল্যাটফর্ম প্রদান করে। ওএস হল সিস্টেম সফ্টওয়্যারের সেরা উদাহরণ; এটি অন্যান্য সমস্ত কম্পিউটার প্রোগ্রাম পরিচালনা করে। সিস্টেম সফ্টওয়্যারের অন্যান্য উদাহরণগুলির মধ্যে রয়েছে ফার্মওয়্যার , কম্পিউটার ভাষা অনুবাদক এবং সিস্টেম ইউটিলিটিগুলি ।
  • ড্রাইভার সফটওয়্যার। ডিভাইস ড্রাইভার হিসাবেও পরিচিত, এই সফ্টওয়্যারটিকে প্রায়শই এক ধরণের সিস্টেম সফ্টওয়্যার হিসাবে বিবেচনা করা হয়। ডিভাইস ড্রাইভাররা একটি কম্পিউটারের সাথে সংযুক্ত ডিভাইস এবং পেরিফেরালগুলিকে নিয়ন্ত্রণ করে, তাদের নির্দিষ্ট কাজগুলি সম্পাদন করতে সক্ষম করে। একটি কম্পিউটারের সাথে সংযুক্ত প্রতিটি ডিভাইসের কাজ করার জন্য কমপক্ষে একটি ডিভাইস ড্রাইভার প্রয়োজন। উদাহরণগুলির মধ্যে রয়েছে এমন সফ্টওয়্যার যা বিশেষ গেম কন্ট্রোলার সহ যেকোন অমানক হার্ডওয়্যারের সাথে আসে, সেইসাথে এমন সফ্টওয়্যার যা স্ট্যান্ডার্ড হার্ডওয়্যারকে সক্ষম করে, যেমন USB স্টোরেজ ডিভাইস, কীবোর্ড, হেডফোন এবং প্রিন্টার।
  • মিডলওয়্যার মিডলওয়্যার শব্দটি এমন সফ্টওয়্যারকে বর্ণনা করে যা অ্যাপ্লিকেশন এবং সিস্টেম সফ্টওয়্যার বা দুটি ভিন্ন ধরণের অ্যাপ্লিকেশন সফ্টওয়্যারের মধ্যে মধ্যস্থতা করে। উদাহরণস্বরূপ, মিডলওয়্যার মাইক্রোসফ্ট উইন্ডোজকে এক্সেল এবং ওয়ার্ডের সাথে কথা বলতে সক্ষম করে। এটি একটি কম্পিউটারে একটি অ্যাপ্লিকেশন থেকে একটি দূরবর্তী কাজের অনুরোধ পাঠাতেও ব্যবহৃত হয় যার এক ধরণের OS আছে, একটি ভিন্ন OS সহ একটি কম্পিউটারে একটি অ্যাপ্লিকেশনে। এটি নতুন অ্যাপ্লিকেশনগুলিকে উত্তরাধিকারের সাথে কাজ করতে সক্ষম করে৷
  • প্রোগ্রামিং সফটওয়্যার। কম্পিউটার প্রোগ্রামাররা কোড লেখার জন্য প্রোগ্রামিং সফটওয়্যার ব্যবহার করে। প্রোগ্রামিং সফ্টওয়্যার এবং প্রোগ্রামিং সরঞ্জামগুলি বিকাশকারীদের অন্যান্য সফ্টওয়্যার প্রোগ্রামগুলি বিকাশ, লিখতে, পরীক্ষা করতে এবং ডিবাগ করতে সক্ষম করে। প্রোগ্রামিং সফ্টওয়্যারের উদাহরণগুলির মধ্যে রয়েছে অ্যাসেম্বলার, কম্পাইলার, ডিবাগার এবং ইন্টারপ্রেটার।
সফ্টওয়্যার স্ট্যাকের ডায়াগ্রাম
এখানে সম্পূর্ণ সফ্টওয়্যার স্ট্যাকের একটি সম্পূর্ণ ছবি।

সফটওয়্যার কিভাবে কাজ করে?

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

অ্যাপ্লিকেশন সফ্টওয়্যার

অ্যাপ্লিকেশন সফ্টওয়্যার অনেকগুলি প্রোগ্রাম নিয়ে গঠিত যা শেষ ব্যবহারকারীদের জন্য নির্দিষ্ট ফাংশন সম্পাদন করে, যেমন রিপোর্ট লেখা এবং ওয়েবসাইট নেভিগেট করা। অ্যাপ্লিকেশনগুলি অন্যান্য অ্যাপ্লিকেশনের জন্য কাজগুলিও সম্পাদন করতে পারে। একটি কম্পিউটারে অ্যাপ্লিকেশনগুলি নিজেরাই চলতে পারে না; তাদের কাজ করার জন্য অন্যান্য সহায়ক সিস্টেম সফ্টওয়্যার প্রোগ্রামগুলির সাথে একটি কম্পিউটারের ওএস প্রয়োজন।

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

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

অস্ত্রোপচার

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

টেবিল তুলনা সিস্টেম এবং অ্যাপ্লিকেশন সফ্টওয়্যার
এখানে সিস্টেম এবং অ্যাপ্লিকেশন সফ্টওয়্যার মধ্যে মূল পার্থক্য আছে.

নকশা ও বাস্তবায়ন

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

পরবর্তী ধাপ হল বাস্তবায়ন, যেখানে উন্নয়ন কাজ সম্পন্ন হয়, এবং তারপর সফ্টওয়্যার পরীক্ষা হয়। রক্ষণাবেক্ষণ পর্বে সিস্টেম চালু রাখার জন্য প্রয়োজনীয় যেকোনো কাজ জড়িত।

সফ্টওয়্যার ডিজাইনে সফ্টওয়্যারের কাঠামোর একটি বিবরণ অন্তর্ভুক্ত রয়েছে যা প্রয়োগ করা হবে, ডেটা মডেল, সিস্টেম উপাদানগুলির মধ্যে ইন্টারফেস এবং সম্ভাব্য অ্যালগরিদমগুলি সফ্টওয়্যার ইঞ্জিনিয়ার ব্যবহার করবেন৷

সফ্টওয়্যার ডিজাইন প্রক্রিয়া ব্যবহারকারীর প্রয়োজনীয়তাকে একটি ফর্মে রূপান্তরিত করে যা কম্পিউটার প্রোগ্রামাররা সফ্টওয়্যার কোডিং এবং বাস্তবায়ন করতে ব্যবহার করতে পারে। সফ্টওয়্যার ইঞ্জিনিয়াররা সফ্টওয়্যার ডিজাইনটি পুনরাবৃত্তভাবে বিকাশ করে, বিশদ যোগ করে এবং নকশাটি বিকাশের সাথে সাথে সংশোধন করে।

বিভিন্ন ধরণের সফ্টওয়্যার ডিজাইনের মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

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

কিভাবে সফটওয়্যারের মান বজায় রাখা যায়

সফ্টওয়্যার গুণমান পরিমাপ করে যদি সফ্টওয়্যারটি তার কার্যকরী এবং অকার্যকর উভয় প্রয়োজনীয়তা পূরণ করে।

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

অকার্যকর প্রয়োজনীয়তা - যা গুণগত বৈশিষ্ট্য হিসাবেও পরিচিত - সিস্টেমটি কীভাবে কাজ করবে তা নির্ধারণ করে। অকার্যকর প্রয়োজনীয়তার মধ্যে রয়েছে বহনযোগ্যতা, দুর্যোগ পুনরুদ্ধার, নিরাপত্তা, গোপনীয়তা এবং ব্যবহারযোগ্যতা।

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

সফ্টওয়্যার মানের মাত্রা নিম্নলিখিত বৈশিষ্ট্য অন্তর্ভুক্ত:

  • অ্যাক্সেসযোগ্যতা ভয়েস রিকগনিশন এবং স্ক্রিন ম্যাগনিফায়ারের মতো অভিযোজিত প্রযুক্তির প্রয়োজন এমন ব্যক্তিদের সহ একটি বিচিত্র গোষ্ঠীর লোকেরা স্বাচ্ছন্দ্যে সফ্টওয়্যারটি ব্যবহার করতে পারে।
  • সামঞ্জস্য _ বিভিন্ন পরিবেশে ব্যবহারের জন্য সফ্টওয়্যারটির উপযুক্ততা, যেমন বিভিন্ন OS, ডিভাইস এবং ব্রাউজারে।
  • দক্ষতা. শক্তি, সম্পদ, প্রচেষ্টা, সময় বা অর্থ অপচয় না করে সফ্টওয়্যারটির ভাল কার্য সম্পাদন করার ক্ষমতা।
  • কার্যকারিতা সফ্টওয়্যার এর নির্দিষ্ট কার্য সম্পাদন করার ক্ষমতা।
  • ইনস্টলেবিলিটি। একটি নির্দিষ্ট পরিবেশে সফ্টওয়্যার ইনস্টল করার ক্ষমতা।
  • স্থানীয়করণ । একটি সফ্টওয়্যার বিভিন্ন ভাষা, সময় অঞ্চল এবং এই জাতীয় অন্যান্য বৈশিষ্ট্যগুলি কাজ করতে পারে।
  • বজায় রাখার ক্ষমতা সফ্টওয়্যারটি কত সহজে পরিবর্তন করা যেতে পারে বৈশিষ্ট্য যোগ করতে এবং উন্নত করতে, বাগগুলি ঠিক করতে ইত্যাদি।
  • কর্মক্ষমতা. একটি নির্দিষ্ট লোডের অধীনে সফ্টওয়্যারটি কত দ্রুত কাজ করে।
  • বহনযোগ্যতা। সফ্টওয়্যারটির ক্ষমতা সহজেই এক স্থান থেকে অন্য স্থানে স্থানান্তর করা যায়।
  • নির্ভরযোগ্যতা সফ্টওয়্যার কোনো ত্রুটি ছাড়া একটি নির্দিষ্ট সময়ের জন্য নির্দিষ্ট অবস্থার অধীনে একটি প্রয়োজনীয় ফাংশন সঞ্চালন করার ক্ষমতা.
  • মাপযোগ্যতা সফ্টওয়্যার এর প্রক্রিয়াকরণ চাহিদার পরিবর্তনের প্রতিক্রিয়া হিসাবে কর্মক্ষমতা বৃদ্ধি বা হ্রাস করার ক্ষমতার পরিমাপ।
  • নিরাপত্তা অননুমোদিত অ্যাক্সেস, গোপনীয়তা আক্রমণ, চুরি, ডেটা ক্ষতি, দূষিত সফ্টওয়্যার ইত্যাদির বিরুদ্ধে রক্ষা করার সফ্টওয়্যারটির ক্ষমতা।
  • পরীক্ষাযোগ্যতা সফটওয়্যারটি পরীক্ষা করা কত সহজ।
  • ব্যবহারযোগ্যতা. সফটওয়্যারটি ব্যবহার করা কত সহজ।

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

রক্ষণাবেক্ষণ করার ক্ষেত্রে, বিকাশকারীরা চার ধরনের পরিবর্তন করতে পারেন, যার মধ্যে রয়েছে:

  1. সংশোধনমূলক ব্যবহারকারীরা প্রায়শই বাগগুলি সনাক্ত করে এবং রিপোর্ট করে যা ডেভেলপারদের অবশ্যই ঠিক করতে হবে, কোডিং ত্রুটি এবং অন্যান্য সমস্যাগুলি সহ যা সফ্টওয়্যারটিকে তার প্রয়োজনীয়তাগুলি পূরণ করতে বাধা দেয়৷
  2. অভিযোজিত হার্ডওয়্যার এবং সফ্টওয়্যার পরিবেশ পরিবর্তনের সাথে সামঞ্জস্যপূর্ণ তা নিশ্চিত করতে বিকাশকারীদের নিয়মিত তাদের সফ্টওয়্যারে পরিবর্তন করতে হবে, যেমন OS এর একটি নতুন সংস্করণ বের হলে।
  3. নিখুঁত এগুলি এমন পরিবর্তন যা সিস্টেম কার্যকারিতা উন্নত করে, যেমন ব্যবহারকারীর ইন্টারফেস উন্নত করা বা কর্মক্ষমতা বাড়াতে সফ্টওয়্যার কোড সামঞ্জস্য করা।
  4. প্রতিরোধমূলক এই পরিবর্তনগুলি সফ্টওয়্যারকে ব্যর্থ হওয়া থেকে বাঁচাতে এবং পুনর্গঠন এবং কোড অপ্টিমাইজ করার মতো কাজগুলিকে অন্তর্ভুক্ত করার জন্য করা হয়।

আধুনিক সফটওয়্যার উন্নয়ন

DevOps হল একটি সাংগঠনিক পদ্ধতি যা সফ্টওয়্যার ডেভেলপমেন্ট এবং IT অপারেশন দলকে একত্রিত করে। এটি এই দুটি গ্রুপের মধ্যে যোগাযোগ এবং সহযোগিতার প্রচার করে। শব্দটি পুনরাবৃত্তিমূলক সফ্টওয়্যার উন্নয়ন অনুশীলনের ব্যবহারকেও বর্ণনা করে যা অটোমেশন এবং প্রোগ্রামেবল অবকাঠামো ব্যবহার করে। DevOps-এ আমাদের চূড়ান্ত গাইডে সম্পূর্ণ ছবি পান 

সফটওয়্যার লাইসেন্সিং এবং পেটেন্ট

একটি সফ্টওয়্যার লাইসেন্স একটি আইনত বাধ্যতামূলক নথি যা সফ্টওয়্যার ব্যবহার এবং বিতরণকে সীমাবদ্ধ করে।

সাধারণত, সফ্টওয়্যার লাইসেন্সগুলি কপিরাইট লঙ্ঘন না করে ব্যবহারকারীদের সফ্টওয়্যারের এক বা একাধিক কপি করার অধিকার প্রদান করে। লাইসেন্সটি চুক্তিতে প্রবেশকারী পক্ষগুলির দায়িত্বের রূপরেখা দেয় এবং সফ্টওয়্যারটি কীভাবে ব্যবহার করা যেতে পারে তার উপর সীমাবদ্ধতা স্থাপন করতে পারে।

সফ্টওয়্যার লাইসেন্সিং শর্তাবলীর মধ্যে সাধারণত সফ্টওয়্যারটির ন্যায্য ব্যবহার, দায়বদ্ধতার সীমাবদ্ধতা, ওয়ারেন্টি, দাবিত্যাগ এবং সুরক্ষা অন্তর্ভুক্ত থাকে যদি সফ্টওয়্যার বা এটির ব্যবহার অন্যের মেধা সম্পত্তি অধিকার লঙ্ঘন করে।

লাইসেন্সগুলি সাধারণত মালিকানাধীন সফ্টওয়্যারের জন্য হয় , যা এটি তৈরি করা সংস্থা, গোষ্ঠী বা ব্যক্তির সম্পত্তি থেকে যায়; অথবা বিনামূল্যের সফ্টওয়্যারের জন্য, যেখানে ব্যবহারকারীরা সফ্টওয়্যার চালাতে, অধ্যয়ন করতে, পরিবর্তন করতে এবং বিতরণ করতে পারেন৷ ওপেন সোর্স হল এক ধরনের সফ্টওয়্যার যেখানে সফ্টওয়্যারটি সহযোগিতামূলকভাবে তৈরি করা হয় এবং সোর্স কোড অবাধে পাওয়া যায়। ওপেন সোর্স সফ্টওয়্যার লাইসেন্সের মাধ্যমে , ব্যবহারকারীরা বিনামূল্যে সফ্টওয়্যারের মতো সফ্টওয়্যার চালাতে, অনুলিপি করতে, ভাগ করতে এবং পরিবর্তন করতে পারেন৷

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

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

সাধারণভাবে, যত বেশি প্রযুক্তিগত সফ্টওয়্যার, এটির পেটেন্ট হওয়ার সম্ভাবনা তত বেশি। উদাহরণস্বরূপ, একটি সফ্টওয়্যার পণ্য একটি পেটেন্ট মঞ্জুর করা যেতে পারে যদি এটি একটি নতুন ধরনের ডাটাবেস গঠন তৈরি করে বা একটি কম্পিউটারের সামগ্রিক কর্মক্ষমতা এবং কার্যকারিতা বাড়ায়।

সফটওয়্যারের ইতিহাস

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

নিম্নলিখিত সফ্টওয়্যার ইতিহাসের একটি সংক্ষিপ্ত সময়রেখা আছে:

  • জুন 21, 1948। টম কিলবার্ন, একজন কম্পিউটার বিজ্ঞানী, ইংল্যান্ডের ম্যানচেস্টার বিশ্ববিদ্যালয়ে ম্যানচেস্টার বেবি কম্পিউটারের জন্য বিশ্বের প্রথম সফ্টওয়্যারটি লিখেছেন।
  • 1950 এর দশকের গোড়ার দিকে। জেনারেল মোটর IBM 701 ইলেকট্রনিক ডেটা প্রসেসিং মেশিনের জন্য প্রথম OS তৈরি করে। এটিকে জেনারেল মোটর অপারেটিং সিস্টেম বা জিএম ওএস বলা হয়।
  • 1958. পরিসংখ্যানবিদ জন টুকি কম্পিউটার প্রোগ্রামিং সম্পর্কে একটি নিবন্ধে সফ্টওয়্যার শব্দটি তৈরি করেছেন।
  • 1960 এর দশকের শেষের দিকে। ফ্লপি ডিস্ক চালু করা হয় এবং 1980 এবং 1990 এর দশকে সফ্টওয়্যার বিতরণের জন্য ব্যবহৃত হয়।
  • 3 নভেম্বর, 1971। AT&T ইউনিক্স ওএস -এর প্রথম সংস্করণ প্রকাশ করে ।
  • 1977. অ্যাপল অ্যাপল II প্রকাশ করে এবং ভোক্তা সফ্টওয়্যার বন্ধ করে দেয়।
  • 1979. VisiCorp অ্যাপল II-এর জন্য VisiCalc প্রকাশ করে, ব্যক্তিগত কম্পিউটারের জন্য প্রথম স্প্রেডশীট সফ্টওয়্যার।
  • 1981. মাইক্রোসফ্ট MS-DOS প্রকাশ করে, যে OSটির উপর প্রাথমিক অনেক IBM কম্পিউটার চলত। আইবিএম সফ্টওয়্যার বিক্রি শুরু করে, এবং বাণিজ্যিক সফ্টওয়্যার গড় ভোক্তাদের কাছে উপলব্ধ হয়।
  • 1980 এর দশক। হার্ড ড্রাইভগুলি পিসিতে স্ট্যান্ডার্ড হয়ে যায় এবং নির্মাতারা কম্পিউটারে সফ্টওয়্যার বান্ডিল করা শুরু করে।
  • 1983. রিচার্ড স্টলম্যানের জিএনইউ (জিএনইউ ইউনিক্স নয়) লিনাক্স প্রজেক্টের মাধ্যমে ফ্রি সফ্টওয়্যার আন্দোলন শুরু হয় সোর্স কোড সহ একটি ইউনিক্স-সদৃশ ওএস তৈরি করতে যা অবাধে অনুলিপি, পরিবর্তন এবং বিতরণ করা যেতে পারে।
  • 1984. অ্যাপলের ম্যাকিনটোশ লাইন চালানোর জন্য ম্যাক ওএস প্রকাশ করা হয়।
  • 1980 এর দশকের মাঝামাঝি। অটোডেস্ক অটোক্যাড, মাইক্রোসফ্ট ওয়ার্ড এবং মাইক্রোসফ্ট এক্সেল সহ মূল সফ্টওয়্যার অ্যাপ্লিকেশনগুলি প্রকাশিত হয়েছে।
  • 1985. মাইক্রোসফ্ট উইন্ডোজ 1.0 প্রকাশিত হয়।
  • 1989. সিডি-রমগুলি স্ট্যান্ডার্ড হয়ে ওঠে এবং ফ্লপি ডিস্কের তুলনায় অনেক বেশি ডেটা ধারণ করে। বড় সফ্টওয়্যার প্রোগ্রামগুলি দ্রুত, সহজে এবং তুলনামূলকভাবে সস্তায় বিতরণ করা যেতে পারে।
  • 1991. লিনাক্স কার্নেল , ওপেন সোর্স লিনাক্স ওএসের ভিত্তি, প্রকাশিত হয়েছে।
  • 1997. ডিভিডি চালু হয়েছে এবং সিডির চেয়ে বেশি ডেটা ধারণ করতে সক্ষম হয়েছে, যার ফলে মাইক্রোসফ্ট অফিস স্যুটের মতো প্রোগ্রামগুলির বান্ডিলগুলিকে একটি ডিস্কে রাখা সম্ভব হয়েছে৷
  • 1999. Salesforce.com ইন্টারনেটে অগ্রগামী সফ্টওয়্যার সরবরাহ করতে ক্লাউড কম্পিউটিং ব্যবহার করে।
  • 2000. একটি পরিষেবা হিসাবে সফ্টওয়্যার শব্দটি (SaaS) প্রচলিত হয়৷
  • 2007. আইফোন চালু হয় এবং মোবাইল অ্যাপ্লিকেশনগুলি ধরে রাখতে শুরু করে৷
  • 2010 থেকে বর্তমান পর্যন্ত। ব্যবহারকারীরা ইন্টারনেট এবং ক্লাউড থেকে সফ্টওয়্যার ক্রয় এবং ডাউনলোড করার কারণে ডিভিডিগুলি অপ্রচলিত হয়ে উঠছে৷ বিক্রেতারা সাবস্ক্রিপশন-ভিত্তিক মডেলগুলিতে চলে যায় এবং SaaS সাধারণ হয়ে উঠেছে।