সফটওয়ার ইঞ্জিনিয়ারিংঃ সারসংক্ষেপ (What is Software Engineering)

সফটওয়ার ইঞ্জিনিয়ারিং

সারসংক্ষেপ

রিদওয়ান বিন শামীম

 

সফটওয়ার ইঞ্জিনিয়ারিং শব্দটি দুটি শব্দ মিলে হয়েছে, সফটওয়ার ও ইঞ্জিনিয়ারিং।

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

অন্যদিকে প্রকৌশল হল সংজ্ঞায়িত ও বৈজ্ঞানিক সুত্রে ও পন্থায় পণ্যের মান বৃদ্ধি করা।

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

IEEE সফটওয়ার ইঞ্জিনিয়ারিংকে যেভাবে প্রকাশ করেছে তা হল, সফটওয়ার উন্নয়ন পরিকল্পনা ও ব্যবস্থাপনার জন্য নিয়মতান্ত্রিক, পরিকল্পনাপ্রসুত কার্যপ্রণালী বা এপ্লিকেশন যা প্রকৌশল এপ্লিকেশন, এবং সফটওয়ার উন্নয়ন নিশ্চিত করে এই প্রক্রিয়া সাধনের প্রবণতাই সফটওয়ার ইঞ্জিনিয়ারিং।

Fritz Bauer নামক জার্মান কম্পিউটার প্রকৌশলী সফটওয়ার ইঞ্জিনিয়ারিংকে যেভাবে প্রকাশ করেছেন তা হল, সফটওয়ার ইঞ্জিনিয়ারিং হল একপ্রকার প্রকৌশল সংস্থাপন যেখানে বাণিজ্যিকভাবে এমন সফটওয়ার উৎপাদন নিশ্চিত করা হয় যা বাস্তব যন্ত্রকাঠামোয় নির্ভরযোগ্য এবং সফলভাবে কাজ করতে সক্ষম।

সফটওয়ার ইঞ্জিনিয়ারিং ব্যবহার করে কোনও সফটওয়ার তৈরি, উন্নয়ন ও উৎপাদন সম্পন্ন করার প্রক্রিয়াকে সফটওয়ার বিবর্তন (software evolution) বলা হয়। এটি একদম সফটওয়ার তৈরি থেকে শুরু করে উৎপাদন প্রক্রিয়া, রক্ষনাবেক্ষন করা ও আপডেট ইত্যাদি এবং প্রারম্ভিক শর্তাবলী অনুযায়ী চূড়ান্ত উৎপাদন পর্যন্ত সবকিছু মিলে সম্পন্ন হয়।

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

সফটওয়ার বিবর্তন আইনঃ লেম্যানের(Lehman) দেয়া সফটওয়ার বিবর্তন সূত্র আছে। লেম্যান সফটওয়ারকে তিন ভাগে ভাগ করেন,

S-type (static-type) নির্ধারিত স্পেসিফিকেসন ও সমাধান অনুসারে কাজ করে। কোডিঙের আগে স্পেসিফিকেসন ও সমাধান ঠিক করে দিতে হয়। সরল ধরনের এবং ক্ষুদ্র পরিবর্তনেও সংবেদনশীল, যেমন গাণিতিক গননা করার প্রোগ্রাম।

P-type (practical-type) এ ধরনের সফটওয়ারে নির্ধারিত প্রক্রিয়া অনুসারে কাজ করে, কয়েকটি প্রক্রিয়া ঠিক করে দেয়া থাকে। প্রারম্ভিক শর্তাবলী নির্ণীত কিন্তু ফলাফল সবসময় পুঙ্খানুপুঙ্খ নাও হতে পারে। যেমন, গেমিং সফটওয়ার।

E-type (embedded-type) বাস্তব ক্ষেত্রে প্রয়োগবান্ধব সফটওয়ার, আইন, শুল্ক ইত্যাদি ছাড়াও অন্যান্য আরও অনেক কারণে দ্রুত পরিবর্তিত হয়, যেমন, অনলাইন বাণিজ্য সফটওয়ার।

E-type (embedded-type) সফটওয়ারের বিবর্তনঃ লেম্যান E-type সফটওয়ারের বিবর্তনে আটটি আইন বা নিয়ম বর্ণনা করেছেন,
নিয়ত পরিবর্তনশীলতাঃ সময়ের সাথে এই ধরনের সফটওয়ারের পরিবর্তন হয়, না হলে এগুলো সর্বাধিক কার্যক্ষমতা ধরে রাখতে পারবে না।

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

মানের নিম্নমুখিতাঃ যেহেতু পরিবর্তনশীল প্রেক্ষাপটে কাজ করতে হচ্ছে তাই অনেক ক্ষেত্রে মানের সাথে আপোষ করতে হয় E-type সফটওয়ারের।

ফিডব্যাক সিস্টেমসঃ E-type সফটওয়ার মাল্টিলেভেল ও মাল্টিলুপ ফিডব্যাক সিস্টেম অনুসরণ করে এবং তা অনুসারে সফলভাবে পরিবর্তন বা উন্নয়ন নিশ্চিত করে।
স্ব-প্রবিধান অর্থাৎ নিজের রেগুলেসন নিয়ন্ত্রণ করাঃ E-type সফটওয়ারের বিবর্তন নিজের রেগুলেসন নিয়ন্ত্রণ করে ও পণ্যের বণ্টন ও প্রক্রিয়া স্বাভাবিকের কাছাকাছি রাখার চেষ্টা করে।

সাংগঠনিক স্থিতিঃ বিশ্বব্যপী কার্যক্রমের হার E-type সফটওয়ারের বিবর্তনের ক্ষেত্রে পণ্যের লাইফটাইমের সাথে সাথে পরিবর্তিত হয়।

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

সফটওয়ার ডেভলপমেন্ট মডেলঃ এটি সফটওয়ার ডেভলপমেন্টের প্রকৌশল মডেল হিসেবেও ধরা যায় কারণ এতে প্রকৌশলগত ধারনাও প্রয়োগ করা হয়। এতে বিভিন্ন গবেষণা ও শর্ত আরোপিত থাকে সফটওয়ার পণ্য উৎপাদনের জন্য, যেগুলো মূলত নিম্নরূপ,

• শর্ত আরোপণ
• সফটওয়ার ডিজাইন
• প্রোগ্রামিং

সফটওয়ার ডিজাইন মডেলঃ এটি সফটওয়ার ডেভলপমেন্টের একটি অংশ, এটিতে যে অংশগুলো থাকে তা হল,

• ডিজাইন
• রক্ষণাবেক্ষণ
• প্রোগ্রামিং

প্রোগ্রামিং মডেলঃ এই অংশটি প্রোগ্রামিং এর সাথে তুলনামুলকভাবে বেশি জড়িত, এতে থাকে,

• কোডিং
• টেস্টিং
• ইন্টিগ্রেশন

সফটওয়ার প্রকৌশলের প্রয়োজনীয়তাঃ সফটওয়ার প্রকৌশলের প্রয়োজনীয়তা বৃদ্ধি পেয়েছে এর উপযুক্ত পরিবেশ গ্রাহক চাহিদা পরিবর্তন ও কার্যকর ক্ষেত্রের বৃদ্ধি পাওয়ার ফলে।

বৃহৎ সফটওয়ারঃ বাড়ি তৈরির আগে তার দেয়াল তৈরি সুবিধাজনক, একই ভাবে সফটওয়ারের আকার বাড়লে তাতে বিজ্ঞানভিত্তিক প্রক্রিয়া প্রয়োগের সুযোগ বাড়ে।

কর্মপরিধিঃ বিজ্ঞানভিত্তিক প্রক্রিয়া ব্যবহার না করলে অন্য কোনও মডেলের অনুকরণে নতুন সফটওয়ার তৈরি করা যায়।

মূল্যঃ হার্ডওয়ার কোম্পানির দক্ষতা ও উৎপাদন বৃদ্ধির ফলে কম্পিউটারের দাম কমলেও সঠিক প্রক্রিয়া মেনে না চললে সফটওয়ারের মূল্য বেশিই থাকে।

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

মান নিয়ন্ত্রণঃ মান নিয়ন্ত্রণ ভাল হলে উৎপাদন ও সেবা মানসম্মত হবে।

ভাল সফটওয়ারের বৈশিষ্ট্যঃ একটি সফটওয়ার কি সেবা দিচ্ছে আর কতটা ভাল সেবা দিচ্ছে তাই পণ্য হিসাবে তার গুরুত্ব নিশ্চিত করবে, এজন্য নিচের এই শর্তগুলো পূরণ করতেই হবে,

• কর্মক্ষমতা,
• পরিবর্তনযোগ্যতা ও
• রক্ষণাবেক্ষণ

সঠিক প্রকৌশলগত ও আদর্শ সফটওয়ারে নিচের বৈশিষ্ট্যগুলো থাকা উচিৎ,

কর্মক্ষমতাঃ কাজের ক্ষেত্রে সফটওয়ারটি কতটুকু ভাল তা নির্দেশ করে, এক্ষেত্রে যে বৈশিষ্ট্যগুলো থাকে তা হল,

• বাজেট,
• ব্যবহারযোগ্যতা,
• দক্ষতা,
• নির্ভুলতা,
• ফাংশনালিটি,
• নির্ভরতা,
• প্রতিরক্ষা,
• নিরাপত্তা

পরিবর্তনযোগ্যতাঃ সফটওয়ারটি এক প্লাটফর্ম থেকে অন্য প্লাটফর্মে চালানোর ক্ষেত্রে এই বিষয়টি কাজে লাগে। এর অন্তর্গত বিষয় হল,

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

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

Permanent link to this article: http://bangla.sitestree.com/%e0%a6%b8%e0%a6%ab%e0%a6%9f%e0%a6%93%e0%a7%9f%e0%a6%be%e0%a6%b0-%e0%a6%87%e0%a6%9e%e0%a7%8d%e0%a6%9c%e0%a6%bf%e0%a6%a8%e0%a6%bf%e0%a7%9f%e0%a6%be%e0%a6%b0%e0%a6%bf%e0%a6%82%e0%a6%83-%e0%a6%b8%e0%a6%be/