সফটওয়্যার ডেভেলপমেন্ট@মাইক্রোসফট – ১

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

logo

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

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

মাইক্রোসফটে মূলত তিন ধরনের কামলা আছে যারা একটি সফটওয়্যারের ডেভেলপমেন্টের বিভিন্ন স্তরে যুক্ত থাকেন।

১। ডেভেলপার
২। টেস্টার
৩। পিএম(প্রোগ্রাম ম্যানেজার)

এর মধ্যে ডেভেলপারের কাজ হোল মূলত কোড লেখা। মানে একটা সফটওয়্যারের প্রোগ্রাম লেখা। মূল কাজ বলছি এই কারনে যে আরও কিছু কাজ আছে যা ডেভেলপারদের করতে হয় যেমন বিভিন্ন ফিচারের (ফিচার=একটা সফটওয়্যারের ছোট একটা অংশ) ডিজাইন করা, টেস্ট কোড লেখা। তবে আসল কাজ হোল সফটওয়্যারের প্রোগ্রাম লেখা। প্রোগ্রামিং ল্যাঙ্গুয়েজ হিসেবে সাধারনত সি শার্প (C#) ব্যাবহার করা হয়। তবে সেটা নির্ভর করে কি সফটওয়্যার বানানো হচ্ছে তার উপর। পুরানো প্রডাক্ট যেমন অফিস বা উইন্ডোজের প্রায় সকল কোড সি/সি++ দিয়ে লেখা। তবে নতুন প্রায় সব কিছুই সি শার্পে করা হয়।

আর টেস্টারের কাজ হোল একজন ডেভেলপার কোড লেখার পর সেই কোড টেস্ট করা। কিন্তু একটু আগেই বলেছি ডেভেলপারের কাজও টেস্ট কোড লেখা, তাহলে মানেটা কি হোল? টেস্টারের দরকারটা কি আর? উত্তরটা হোল টেস্ট কোড বিভিন্ন পর্যায়ে লেখা হয়। একটু উদাহরন দেই। ধরুন ক্যালকুলেটরের সফটওয়্যার বানানো হচ্ছে। কোন এক ডেভেলপারের কাঁধে দায়িত্ত্ব পড়ল যোগ করার ফিচারটা করার। খুব সহজভাবে নিলে নিচের প্রোগ্রামিং কোডটা হয়তবা সে লিখলো (নন-টেকিঃ অ্যান্টেনা বন করেন)

int Add( int a, int b )
{
return a + b;
}

এখন ডেভেলপারের পরের (কোন কোন ক্ষেত্রে আসল কোড লেখার পূর্বেই টেস্ট কোড লিখতে হয়) দায়িত্ত্ব হোল প্রথমে শুধুমাত্র এই ফাংশনটা (ফাংশন=প্রোগ্রামের একটি অংশ। উপরোক্ত ফাংশনে a এবং b নামক দুইটি পুর্ণ সংখ্যা বা int বা integer যোগ করা হচ্ছে) ঠিক আছে কিনা তা টেস্ট করা। সে জন্য সে নিচের টেস্ট কোডটা লিখতে পারেঃ

void TestAdd()
{
Assert.AreEqual( 4, Add( 2, 2 ) );
}

এটাকে বলে ইউনিট টেস্ট বা একক টেস্ট। একটা ফাংশন (যেমন Add) বিভিন্নভাবে ব্যাবহার (টেকি ভাষায় function call) করা যেতে পারে। ইউনিট টেস্টের উদ্দেশ্য হোল এই ফাংশনকে পুরো সফটয়্যারের অংশ হিসেবে না দেখে শুধুমাত্র ওই ফাংশনকে স্বাধীনভাবে কতভাবে ব্যাবহার করা যায় তার একটা টেস্ট। যেমন উপরোক্ত টেস্টে (TestAdd) টেস্ট করা হচ্ছে এই যোগ করার ফাংশনটা আসলেই ২ আর ২ সমান চার ফলাফল দেয় কিনা।

এখন গুনীজন আমার মাথায় এক পিস চটকনা মাইরা কইতে পারেন এইডা আবার টেস্টের কি হইল! হগলতেই জানে দুইয়ে দুইয়ে চাইর হয়। কিন্তু বুদ্ধিমান জনগন মাত্রেই জানেন দুইয়ে দুইয়ে মাঝে মাঝে পাঁচও হয়। সেটা কি রকম? ধরুন আপনি এবার আড়াই আর আড়াই যোগ করতে চান। তাহলে নিচের টেস্ট কোডটা লেখা যেতে পারেঃ

void TestAdd()
{
Assert.AreEqual( 4, Add( 2, 2 ) );
Assert.AreEqual( 5, Add( 2.5, 2.5 ) );
}

যারা প্রোগ্রামিংয়ের সাথে যুক্ত তারা জানবেন যে এই ক্ষেত্রে দ্বিতীয় টেস্ট (Assert.AreEqual( 5, Add( 2.5, 2.5 ) ) = আমি সাক্ষ্য দিতেছি যে ২.৫+২.৫=৫) ফেল করবে কারন ২.৫ একটি ভগ্নাংশ (সঠিক বাংলা ভুইলা গেছি) কিন্তু Add ফাংশন শুধুমাত্র পুর্ন সংখ্যা যোগ করে (নন টেকি ভাইদের প্রতি আমার সালাম, থুক্কু ক্ষমাপ্রার্থনা। এই অল্প পরিসরে সব ব্যাখ্যা করা যাচ্ছে না বলে)। তাহলে কি দাঁড়াল, যদি কোন ফাংশন লেখার সাথে সাথে এরকম ইউনিট টেস্ট লেখা হয় তাহলে মূল সফটওয়্যারের কোডে যদি কোন ভুল থাকে তাহলে তা ধরা পড়বে (এক্ষেত্রে ভুল্টা হোল ওই ডেভেলপারের উচিৎ হয়নি শুধুমাত্র পুর্ন সংখ্যা যোগ করতে পারে এমন ফাংশন লেখা)। ইউনিট টেস্টের সবচেয়ে বড় সুবিধা হোল যদি পরবর্তিতে অন্য কোন ডেভেলপার সোর্স কোডের (সফটওয়্যারের মূল কোড) কোন পরিবর্তন করে তাহলে এই ইউনিট টেস্ট সেটা ধরে ফেলবে।

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

তৃতীয় পদের কামলা হোল প্রজেক্ট ম্যানেজার। নাম শুনেই কিছুটা বোঝা যায় এদের কাজ কি। খুব সহজ করে বললে ডেভেলপার আর টেস্টারের কাজ বাদে বাকি সব কাজ পি এমদের। মাইক্রোসফটে পি এম দের সাধারনত দেখা হয় “এরা কিছু পারে না” হিসেবে, খালি আকাইম্মা কাম গুলা করে। এদের কাজের উদাহরন হিসেবে বলা যায় সফটওয়্যারে কি কি ফিচার যোগ হবে তা ঠিক করা, কাস্টমারদের কাছ থেকে ফিডব্যাক নেয়া। এছাড়া একটা সফটওয়্যার রিলিজ করতে গেলে নানা ধরনের ফর্মাল/অফিসিয়াল/আমলাতান্ত্রিক কাজ করতে হয়, যা করার দায়িত্ত্ব পি এমদের।

আপাতত অ্যান্টেনা বন। পরবর্তী পর্বে যা থাকার সম্ভাবনা আছেঃ (যদিনা যথারীতি আবার আইলসা হইয়া উৎসাহ হারায়া না ফেলি)

সফটওয়্যার ডেভেলপমেন্ট সাইকেলঃ
একটি সফটওয়্যারের জীবন উপাক্ষান।
১। CTP (Community Technology Preview)
২। বেটা
৩। RC (Release Candidate)
৪। V1 (Version 1.0)

ডেভেলপার লাইফঃ
সকালবেলা অফিসে আইসা যা করি।

টেস্টার লাইফঃ
সকালবেলা অফিসে আইসা টেস্টার যা করে।

ডেভেলপমেন্ট এনভায়রনমেন্টঃ
কিসে কোড লিখি আর কিভাবে কম্পাইল/বিল্ড/সোর্স ডিপো আপডেট হয়।

লাইফ সাইকেল অফ আ বাগঃ
একটি বাগের জীবন বৃত্তান্ত

৫৬ টি মন্তব্য : “সফটওয়্যার ডেভেলপমেন্ট@মাইক্রোসফট – ১”

  1. দিহান আহসান

    ভাইয়া, নতুন অ্যান্টেনা লাগিয়ে মন দিয়ে পড়লাম।সরল ভাষায় লিখেছেন। তাই বুঝতে তেমন কষ্ট হয়নি। শুধু প্রোগ্রামিং কোডটা মাথার উপর দিয়া গেছে।
    আমার মত নন-টেকিদের জন্য ভাল লিখছেন। :clap:

    জবাব দিন
  2. রকিব (০১-০৭)

    তারমানে ক্রিয়াচক্রটা খানিকটা এরকম-
    ডেভেলপার =>টেস্টার => প্র.ম্যানেজার।
    বাজারজাতকরণ পরবর্তী কোন রকম সংশোধনী কিংবা আপডেটের কাজটা কি ডেভেলপারই করে থাকে?

    😀 প্রজেক্ট ম্যানেজার মামার কাজটা আমার পছন্দ হইছে 😀 😀 ।


    আমি তবু বলি:
    এখনো যে কটা দিন বেঁচে আছি সূর্যে সূর্যে চলি ..

    জবাব দিন
    • মরতুজা (৯১-৯৭)

      কারেকশানঃ প্র.ম্যানেজার => ডেভেলপার =>টেস্টার

      বাজার জাতের সাথে এই তিন জনের কারোরই সম্পর্ক নেই। সেটার জন্য আলাদা মার্কেটিং ডিপার্টমেন্ট আছে। তবে সংশোধনী কিংবা আপডেটের কাজটা ডেভেলপাররাই করে থাকে।

      জবাব দিন
  3. তানভীর (৯৪-০০)

    মরতুজা ভাই, বেশ ইন্টারেস্টিং টপিক। আপনার লেখাটা পড়তেও ভালো লাগল।
    কিছু জিনিস জানার ছিল- যেমনঃ ডেভেলপার আর টেস্টারের অনুপাত কেমন, সফটওয়্যারের বেসিক প্যাটার্ণ কারা ঠিক করেন......
    পি এম হইতে কি যোগ্যতা লাগে? 😀

    জবাব দিন
    • মরতুজা (৯১-৯৭)

      ডেভ আর টেস্টে অনুপাত প্রায় এক। আর বেসিক প্যাটার্ন বা ইম্পলিমেন্টেশান ডিসিশন সাধারনত ডেভরাই নিয়ে থাকে। মানে ফিচার রিকোয়ারমেন্ট পি এম ঠিক করার পর কিভাবে ইম্পলিমেন্ট করা হবে কোডে সেটা ডেভের উপরই নির্ভর করে।

      জবাব দিন
  4. বস,

    সফটওয়্যার ইঞ্জিনিয়ারিং পড়তেছি 4/1 এ... পুরাই থিউরি :bash:

    কোডিং কইরা গাধার খাটুনি দিতে মঞ্চায় না :no: :no: 🙁 🙁
    পি এম হইবার মঞ্চায় :dreamy: :dreamy:
    কোন উপায় নাই ভাই??

    মাইক্রোসফট এর গল্প শুইন্না খুব শখ হইতাছে দেখতে 🙁

    জবাব দিন
  5. জিহাদ (৯৯-০৫)

    :thumbup: :thumbup:

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

    অ: ট: টেস্টারদের লাইফ ক্যান জানি আমার খুব বিরক্তিকর মনে হয়।

    ডেভেলপার :thumbup: 😛


    সাতেও নাই, পাঁচেও নাই

    জবাব দিন
    • মরতুজা (৯১-৯৭)

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

      আর তোমার যে অ্যান্টেনা লাগে না সেইটা সবাই জানে 😛

      জবাব দিন
  6. আন্দালিব (৯৬-০২)

    আমারও লেখাটা জোশ লাগছে।

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

    জবাব দিন
  7. কামরুল হাসান (৯৪-০০)

    ইন্টারেস্টিং টপিক।
    আপনাকে অনেকদিন পর লিখতে দেখে খুশি, ব্যতিক্রমী বিষয় লিয়ে লিখছেন দেখে আরো খুশি।

    পুরোটা হয়তো বুঝবো না, তবে পড়বো।
    চালিয়ে যান।


    ---------------------------------------------------------------------------
    বালক জানে না তো কতোটা হেঁটে এলে
    ফেরার পথ নেই, থাকে না কোনো কালে।।

    জবাব দিন
  8. মুহাম্মদ (৯৯-০৫)

    মাইক্রোসফটের কাছে আমরা সবাই ঋণী। এই ঋণ শোধ করারও কোন উপায় নাই, কারণ এদেশের সবকিছুই পাইরেটেড। ভবিষ্যতে নিশ্চয়ই এর সমাধান হবে।

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

    লেখা ভাল লাগছে। পরবর্তী পর্বের অপেক্ষায় থাকলাম।

    জবাব দিন
  9. MOJO kaku ee 1st digital bangladesh er kotha koisilo BCS er ekta seminar e. Kemne kemne sheita hasina maam er kane gelo ar bangladesh er shamne digital mula jhuila gelo.

    Mortuza vai, shunsilam microsoft e naki ekta software koyekta team banay. Jeta best hoy sheta ke naki further develop kora hoy and new feature add kora hoy. Ei competitive environment er jonno naki employee ra aro besi dedicated. Eita ki shotti?

    জবাব দিন
  10. শার্লী (১৯৯৯-২০০৫)

    আমি অত্যন্ত মানবিক(Humanities) হবার পরও এই পোস্ট বুইঝা ফালাইছি। ওরে মুই কি হনুরে B-) B-)

    আমার ভাই কম্পিউটার নিয়া পড়োতাছে দেইখা মনে হয় কিছু কিছু টার্ম নতুন মনে হয় নাই।

    জবাব দিন
  11. মো. তারিক মাহমুদ (২০০১-০৭)

    বস ... জটিল লিখছেন ... পরের পর্বের অপেক্ষায় ... ...

    অফটপিক:

    OOP এর প্রজেক্ট করলাম Network Pool Games, জাভাতে ...
    প্রজেক্ট সাবমিট করার সময় স্যার কয়, এগুলো কী কোড লিখছো ... ... !!! কোন সৌন্দর্য্য নাই ... ... তোমরা জানো না, "coding is poetry" ... ...???
    ২দিন সময় দিলাম, কোডগুলোকে আর্টিস্টিক করে নিয়া আসবা, আর গেমসের গ্রাফিক্স আরও সুন্দর করবা ... ...

    এই সব জাভা-টাভা আমার বাম হাতের কাজ,

    বুঝলা ???

    আসল ঘটনা হল, প্রজেক্টের কোথাও স্যারের নাম ইউজ করি নাই, তাই সে মাইন্ড খাইছে ... ইনি আবার বুয়েটে বেশ তেল খাওয়া স্যার নামে পরিচিত ... so আসল ঘটনা বুঝতে বাকি ছিল না .. ... ২দিন পর আবার গেলাম, ঐ একই কোড, শুধু একটা জায়গায় সামন্য Change ... সেটা হল, শুরুতেই গেমস লোড হওয়ার সময় (যেটাকে Splashing বলি) স্যারের একটা ইয়া বড় ছবি দেখায় ... ... সাথে বড় করে তার নাম, পদবি ইত্যাদি ...

    এবার আমাদের গেমস run করে স্যারেরহাসি আর থামেই না ... ... বলে কিনা, বাহ তোমরাতো জটিল সুন্দর poetry লিখছ ... ... আগের দিনতো কিছুই করো নাই ... ... মাত্র ২দিনে এত কারজ করলা কেমনে !!! !!!

    আমি মনে মনে বলি, স্যার ক্যাডেট কলেজে পড়ছি, আর কোন লোক কিসে খুশি হয়, সেট কি বুঝি না !!! !!!

    জবাব দিন
  12. তারেক (৯৪ - ০০)

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


    www.tareqnurulhasan.com

    জবাব দিন

মওন্তব্য করুন : মু. নূরুল হাসান (৯৪ - ০০)

জবাব দিতে না চাইলে এখানে ক্লিক করুন।

দয়া করে বাংলায় মন্তব্য করুন। ইংরেজীতে প্রদানকৃত মন্তব্য প্রকাশ অথবা প্রদর্শনের নিশ্চয়তা আপনাকে দেয়া হচ্ছেনা।