কোডের জন্য কীভাবে ডকুমেন্টেশন করবেন এবং সফ্টওয়্যার কেন (প্রায়শই) দুর্বল নথিভুক্ত হয়?


26

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

আমার সমস্ত সফ্টওয়্যার বিকাশ স্টিটে, আমাকে খারাপ নথিভুক্ত কোডটি মোকাবেলা করতে হয়েছে। আমি নিম্নলিখিত জিনিস লক্ষ্য করেছি -

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

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

আমি শিখেছি যে নীচের কারণে ডকুমেন্টেশনটির প্রাপ্য মনোযোগ দেওয়া হয় না:

  1. আলস্য।
  2. বিকাশকারীরা কোড ব্যতীত অন্য কিছু করতে পছন্দ করেন না।
  3. কাজের নিরাপত্তা. (যদি কেউ আপনার কোডটি সহজেই বুঝতে না পারে তবে আপনি সম্ভবত সহজেই প্রতিস্থাপনযোগ্য হতে পারবেন না))
  4. জটিল সময়সীমা ডকুমেন্ট করতে খুব কম সময় দেয়।

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

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

এই উন্মাদনার অবসান বা উপশমের কোনও উপায় আছে কি? "ডকুমেন্ট চালিত উন্নয়ন" সম্ভবত?


2
প্রায়শই যথাযথ ডকুমেন্টেশন না থাকার আরও একটি কারণ রয়েছে: ভাল ডকুমেন্টেশন লিখতে খুব কষ্ট হয় যা কেবলমাত্র ইংরেজীতে কোডটি প্যারাফ্রেস করে না, তবে কোডটি কেন সেভাবে ডিজাইন করা / লিখিত হয়েছে তা বর্ণনা করে। এই তথ্যটির প্রয়োজনীয়তা কেবল এটি লেখার পরে মাসের মধ্যে স্পষ্ট হয়ে যায়।
বার্ট ভ্যান ইনজেন শেেনা

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

উত্তর:


26

কোড কীভাবে ডকুমেন্ট করবেন?

আপনার ইতিমধ্যে একটি ইঙ্গিত রয়েছে: জাভা এপিআই কীভাবে ডকুমেন্ট করা আছে তা দেখুন।

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

কেন অনেক ওপেন সোর্স প্রকল্প ভাল ডকুমেন্টেড হয় না?

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

কেন অনেক বদ্ধ উত্স প্রকল্প ভাল নথিভুক্ত করা হয় না?

কারণ (1) ভাল ডকুমেন্টেশন লিখতে এবং (2) এটি বজায় রাখতে বিশাল অঙ্কের অর্থ ব্যয় হয়।

  1. তাত্ক্ষণিক ব্যয় (ডকুমেন্টেশন লেখার ব্যয়) অংশীদারদের কাছে স্পষ্টভাবে দৃশ্যমান: আপনার দল যদি প্রকল্পটির ডকুমেন্টিংয়ের পরবর্তী দুই মাস ব্যয় করতে বলে, তবে এটি প্রদানের জন্য অতিরিক্ত দুই মাসের মাসের ব্যয়।

  2. দীর্ঘমেয়াদী ব্যয় (ডকুমেন্টেশন বজায় রাখার ব্যয়) ম্যানেজারদের কাছে খুব সহজেই লক্ষণীয় হয়ে ওঠে এবং প্রায়শই প্রথম লক্ষ্য হয় যখন তাদের ব্যয়টি হ্রাস করতে হয় বা বিলম্বগুলি হ্রাস করতে হয়। এটি পুরানো ডকুমেন্টেশনের একটি অতিরিক্ত সমস্যা সৃষ্টি করে যা দ্রুত অকেজো হয়ে যায় এবং এটি আপডেট করা অত্যন্ত ব্যয়বহুল।

  3. দীর্ঘমেয়াদী সঞ্চয় (বহু বছর আগে নথিভুক্ত করা উচিত এমন একটি মৌলিক জিনিসটি বোঝার জন্য উত্তরাধিকারের কোডটি অন্বেষণ করতে কিছু দিন নষ্ট না করা থেকে সঞ্চয়গুলি) অন্যদিকে, পরিমাপ করা কঠিন, যা কিছু পরিচালকের অনুভূতির সত্যতা নিশ্চিত করে ডকুমেন্টেশন রচনা এবং রক্ষণাবেক্ষণ করা সময়ের অপচয় waste

আমি প্রায়শই যা পর্যবেক্ষণ করি তা হ'ল:

  1. শুরুতে, দলটি অনেকগুলি দলিল করতে রাজি।

  2. সময়ের সাথে সাথে, সময়সীমা চাপ এবং আগ্রহের অভাব ডকুমেন্টেশন বজায় রাখা আরও এবং আরও কঠিন করে তোলে।

  3. কয়েক মাস পরে, প্রকল্পের সাথে যুক্ত হওয়া একটি নতুন ব্যক্তি ডকুমেন্টেশন ব্যবহার করতে পারবেন না, কারণ এটি প্রকৃত সিস্টেমের সাথে মোটেই মিলছে না doesn't

  4. লক্ষ্য করে যে, ব্যবস্থাপনা ডকুমেন্টেশন রক্ষণ না করার জন্য বিকাশকারীদের দোষ দেয়; বিকাশকারীরা এটি আপডেট করে কয়েক সপ্তাহ ব্যয় করতে বলেন।

    • পরিচালন যদি এর জন্য কয়েক সপ্তাহ মঞ্জুরি দেয় তবে চক্রটি পুনরাবৃত্তি করে।

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

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

দলিল লেখার জন্য কীভাবে দলকে উত্সাহিত করবেন?

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

  • উদাহরণ দ্বারা নেতৃত্ব. আপনি যদি ভাল ডকুমেন্টেশন লিখেন তবে আপনার জোড়গুলি এটি করাও শুরু করতে পারে।

  • ডকুমেন্টেশন পরিদর্শন লক্ষ্যবস্তু আনুষ্ঠানিক কোড পর্যালোচনা সহ পদ্ধতিগত কোড পর্যালোচনা করুন।

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

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

  • গ্যামিফিকেশন ব্যবহার করুন। এটি পূর্ববর্তী পয়েন্টের সাথে একসাথে আসে।

  • ইতিবাচক / নেতিবাচক শক্তিবৃদ্ধি ব্যবহার করুন ।

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

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

    /// <summary>
    /// Gets or sets the PrimaryHandling.
    /// </summary>
    public Workflow PrimaryHandling { get; set; }

যেগুলি, এইচএম ..., বিশেষভাবে সহায়ক ছিল না।

মনে রাখবেন: প্রোগ্রামাররা যখন আপনার সাথে কথা বলতে চায় তখন স্বয়ংক্রিয় কিছুই আপনাকে খারাপ মন্তব্য চিহ্নিত করতে সহায়তা করতে পারে নাকেবল কোড পর্যালোচনা এবং অন্যান্য মানবিক কার্যগুলি সহায়তা করবে।

যখন ন্যূনতম বা কোনও ডকুমেন্টেশন প্রয়োজন হয় তার কোনও ভাল উদাহরণ রয়েছে?

আর্কিটেকচার এবং নকশা ব্যাখ্যা করে ডকুমেন্টেশন প্রয়োজন হয় না:

  • প্রোটোটাইপের জন্য,

  • কোনও কার্য সম্পাদনের জন্য কয়েক ঘন্টার মধ্যে লেখা একটি ব্যক্তিগত প্রকল্পের জন্য, যদিও এই প্রকল্পটি আর বজায় রাখা হবে না পুরোপুরি নিশ্চিত হয়ে,

  • যে কোনও প্রকল্পের জন্য এটি স্পষ্টরূপে, এর ছোট আকারকে দেওয়া, বিশেষত পরিষ্কার কোডের সাথে মিলিয়ে, আপনি কোডটি অন্বেষণে ভবিষ্যতের সমস্ত রক্ষণাবেক্ষণকারীদের চেয়ে ডকুমেন্টেশন লেখাতে বেশি সময় ব্যয় করবেন।

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

আমি মনে করি যে কোনও প্রকল্প বিতরণের পরে আমাদের একটি ডকুমেন্টেশন রিভিউ থাকা উচিত।

যদি আপনার প্রকল্পটি প্রতি সপ্তাহে অন্তত একবার বিতরণ করা হয় তবে এটি যাওয়ার উপায়। যদি আপনার প্রকল্পটি তাত্পর্যপূর্ণ না হয় এবং ছয় মাসের ব্যবধানে সরবরাহ করা হয়, তবে আরও নিয়মিত পর্যালোচনা করুন।


'কীভাবে উত্সাহিত করতে', আমি যুক্ত করব যে অনেক আইডিই সতর্কতা হিসাবে নথিভুক্ত ডকুমেন্টেশনের বিজ্ঞপ্তির অনুমতি দেয়। বিকল্পভাবে, সম্ভবত ওএসবিতে ডকুমেন্টেশনের একটি স্থিতিশীল বিশ্লেষণ করা যেতে পারে (অবশ্যই এটি একা যথেষ্ট হবে না)।
এসজেউন 76

@ এসজুয়ান 7676: আসলেই। ভিজ্যুয়াল স্টুডিও মন্তব্যগুলির অভাবকে একটি সংকলন-সময় ত্রুটি হিসাবেও আচরণ করতে পারে। আমি আমার উত্তর সম্পাদনা করেছি সে সম্পর্কে একটি নোট যুক্ত করতে।
আরসেনি মরজেনকো

@ আর্সেনি মৌরজেনকো - আমি পড়েছি যে আমরা ডকুমেন্টেশনের জন্য গল্প যুক্ত করে আগলে কিছু ডকুমেন্টেশনকে উত্সাহিত করতে পারি। তবে এগুলি অন্যান্য গল্পগুলি যেমন অন্য গল্পগুলির সংজ্ঞায়িত করা উচিত নয়, ডকুমেন্টেশন কাহিনী সম্পন্ন করার অন্তর্ভুক্ত নয়। শব্দটা কেমন ছিল ?
বোরাট সাগদিয়েভ

3

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

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

TL; ড

আপনি যদি প্রতিটি প্রকল্পের নথিভুক্ত হওয়ার জন্য জিজ্ঞাসা করেন তবে আপনি খুব বেশি জিজ্ঞাসা করছেন।


2
Fortunately software development is not scienceআপনি কেন এটি বিশ্বাস করেন তা সম্পর্কে দয়া করে আমাকে আরও বলুন।
বোরাট সাগদিয়েভ

3
@Borat - সফটওয়্যার উন্নয়ন একটি ইঞ্জিনিয়ারিং শৃঙ্খলা, যা বোঝা এটি প্রদান করা সরঞ্জাম ব্যবহার করে দ্বারা বিজ্ঞান।
লিওপল্ড Asperger

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

আপনি যদি উচ্চ স্তরের ওভারভিউ চান তবে সনাক্তকারী নামগুলি যথেষ্ট। ঠিক তেমনি আপনার টিভিতে বোতামটির একটি "অন" লেবেল থাকতে পারে। সুতরাং আপনি নিম্ন-স্তরের বিশদটি জিজ্ঞাসা করছেন।
লিওপোল্ড Asperger

2
@ লিওপোল্ডএস্পারগার: আমার মনে হয় বোরাট ক্লাসে পদ্ধতি নয়, আর্কিটেকচার এবং ডিজাইনের নথিপত্র নিয়ে কথা বলছেন।
আরসেনি মরজেনকো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.