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

চিত্র: সফটওয়্যারের কোড যেভাবে ম্যানেজমেন্ট করা হয়।
সোর্সকোড ম্যানেজমেন্ট ব্যবহার করে আমরা নিম্নের সুবিধাগুলি পাই:
-
যৌথভাবে সফটওয়্যার তৈরী সম্ভব হয়। একটি কোড ফাইল অনেকজন মিলে লিখে তা পরিশেষে সংযোগ করা সম্ভব হয়। একে merge বলা হয়।
-
ফাইলের ইতিহাস: কোন প্রোগ্রামার কখন কোন স্থানটির পরিবর্তন করলেন তা সহজেই বের করা সম্ভব।
-
পরিবর্তনের রিপোর্ট: খুব সহজেই নতুন পরিবর্তনের রিপোর্ট তৈরী করা সম্ভব।
-
ডকুমেন্ট: একটি সফটওয়্যারের কোড লিখবার সময় কী কারণে কোন জায়গাটি পরিবর্তন করা হচ্ছে তা সহজেই ডকুমেন্টে লিখে রাখা হয়।
-
পরিবর্তন: নতুন পরিবর্তনের ব্যাপারে রিপোর্ট বা নোটিফিকেশন সহজে প্রযুক্তিবিদদের কাছে ইমেইল বা অন্যান্য মাধ্যমে জানানো সম্ভব হয়।
কোড ম্যানেজমেন্টের সিস্টেমগুলির পরিচয় ও ইতিহাস:
বর্তমানে নিম্নের সিস্টেমগুলি কোড ম্যানেজমেন্টের জন্য বহুলভাবে ব্যবহৃত হচ্ছে।
-
CVS
-
Subversion
-
Git
-
Mercurial
-
Bazaar
কোড ম্যানেজমেন্ট তার যাত্রা শুরু করে Concurrent Versions System (CVS) এর মাধ্যমে। ১৯৮৬ এর দিকে ডিক গ্রুন নামে একজন প্রোগ্রামার এটি তৈরী করেন এবং পরবর্তীতে আরও অনেকে এটির জন্য কাজ করেন। কিন্তু CVS সিস্টেম খুব বেশি মাত্রায় কমান্ড (অনেকটা ডস এর কমান্ডের মতো; বর্তমানে লিনাক্স বহুল পরিমাণে যে ধরনের কমান্ড ব্যবহার করে) নির্ভর ছিল। তাই সবাই নতুন ধরনের সিস্টেমের কথা ভাবছিল যা শুধুমাত্র কমান্ড নির্ভর নয়, কিছুটা ভিজুয়ালাইজ বা সহজে দৃশ্যমান হবে।

চিত্র: CVS এর কমান্ড উইন্ডো
এমন সময় সাবভার্সন তার যাত্রা শুরু করেছিল Apache সিস্টেম তৈরী করার সময়। আপনারা অনেকেই জানেন যে, পৃথিবীর প্রায় ৬৪% ওয়েবসার্ভার এই অ্যাপাচি-র মাধ্যমে চলে। এই সিস্টেম একটি উন্মুক্ত সফটওয়্যার এবং অসংখ্য প্রযুক্তিবিদের সমন্বয়ে এটির উন্নয়ন সাধন হয়। এর উন্নয়নের জন্য একটি ভালো ভার্সন ম্যানেজমেন্টের খুব প্রয়োজন হয়ে উঠেছিল এবং তখন অ্যাপাচি এর প্রযুক্তিবিদগণ তৈরী করেন সাবভার্সন।

চিত্র: সাবভার্সনের ইউজার ইন্টারফেস
পরবর্তীতে অন্যান্য সিস্টেমগুলি আসে। এর মধ্যে গিট বেশ জনপ্রিয় হয়। বর্তমানে গিট কিংবা সাবভার্সন বহুল পরিমাণে ব্যবহৃত হয়। গিট তৈরী করেন লিনাক্স এর কার্নেলের ডেভেলপার লিনাস টরভাল্ডস। অন্যান্য সিস্টেমের থেকে গিটের সুবিধা হলো, এর বিভিন্ন ইতিহাস ও রিপোজিটরি এর মধ্যেই থাকে, আলাদাভাবে কোনো কেন্দ্রীয় সার্ভারের উপর নির্ভর করতে হয় না।
-
কোড রিপোজিটরি: যেখানে মূল সোর্স কোডগুলি সংরক্ষণ করা হয় তাকে রিপোজিটরি বলে। এটি আপনার কম্পিউটার, বা লোকাল সার্ভার হতে পারে, কিংবা অনলাইনের কোনো হোস্টিং কোম্পানিও হতে পারে।
-
**কোড হোস্টিং: **এই সিস্টেমগুলি ব্যবহার করার জন্য এগুলি কোথাও হোস্টিং করানো প্রয়োজন। নিম্নের হোস্টিং প্রতিষ্ঠানগুলি বর্তমানে বেশ জনপ্রিয়।
-
ফ্রি হোস্টিং Sourceforge, Google Code, Codeplex বেশ ব্যবহৃত হয়। এছাড়া বাণিজ্যিকভাবে কেনার জন্য Beanstalk, GitHub, Assembla, Unfuddle, CVSDude, ProjectLocker, এবং Springloops প্রচলিত।
SVN সিস্টেমের হোস্টিং এর একটি তুলনামূলক চার্ট পাবেন নিম্নের সাইটগুলি থেকে: http://www.svnhostingcomparison.com/ http://en.wikipedia.org/wiki/Comparison\_of\_open\_source\_software\_hosting\_facilities

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