গ্রাহক নির্দিষ্টকরণের ডকুমেন্ট লেখার ক্ষেত্রে অসুবিধার অংশটি হ'ল গ্রাহক প্রায়শই জানেন না যে গ্রাহক যে জিনিসগুলি গ্রাহক চান তার ভাষাগুলি কীভাবে অনুবাদ করতে হয় যা গ্রাহকের প্রয়োজনের বর্ণনা দেয়। যদিও গ্রাহক বলতে পারেন যে তারা কোনও সিস্টেমে একটি নির্দিষ্ট আচরণের উপস্থিতি চান, তবে তারা সাধারণত মিনিটটিয়ার সাথে এতটা উদ্বিগ্ন থাকেন না যতক্ষণ না তারা সফ্টওয়্যারটি এমনভাবে কাজ করে দেখে এবং ব্যবহার না করে যা গ্রাহক মনে করেন যে এটির সাথে মেলে না তাদের চাহিদা.
গ্রাহকরা যখন কোনও ব্যবসায়িক প্রক্রিয়া বর্ণনা করেন, তারা প্রায়শই প্রচুর প্রাসঙ্গিক তথ্য ছেড়ে যান। প্রায়শই এই তথ্যটি এমন কোনও প্রক্রিয়া সম্পর্কিত বিষয়গুলির সাথে সম্পর্কিত যা গ্রাহকের নির্দিষ্ট ডোমেনের মধ্যে সাধারণত বোঝা যায় এবং যা মঞ্জুর হয়ে নেওয়া হয় এবং প্রায়শই প্রোগ্রামারটির সাথে সম্পর্কিত হয় না। অন্যান্য সময়ে, গ্রাহক আসলে কোনও সিস্টেমের মধ্যে সীমাবদ্ধ অবস্থার সাথে কীভাবে ডিল করতে হয় তা জানেন না এবং নির্দেশিকার জন্য প্রোগ্রামারের দিকে তাকিয়ে আছেন। কখনও কখনও এটি ব্যবহারযোগ্যতার সমস্ত সাধারণ বিষয়, গ্রাহকরা ভেবে যে তারা এক উপায়ে কিছু কাজ করতে চান তবে পরে মন পরিবর্তন হয়ে যায় যখন বিষয়টি স্পষ্ট হয়ে যায় যে বিষয়গুলি আলাদাভাবে কাজ করা উচিত।
ঠিক আছে, "প্রোগ্রামারদের জন্য গ্রাহক-সম্পর্ক 101" যথেষ্ট। প্রশ্নটি হল যে গ্রাহক কীভাবে কোনও নির্দিষ্টকরণের সংজ্ঞা দিতে হয় তা নির্ধারণের জন্য ব্যবসায় পাঠযোগ্য ডিএসএল ব্যবহারের কী মূল্য রয়েছে? আমি বিশ্বাস করি যে গাইডেন্সের সাহায্যে উত্তরটি হ'ল 'হ্যাঁ', এবং আমি অস্থায়ী বলি কারণ পরবর্তী প্রশ্নটি মনে আসে, আপনি যখন কোনও প্রোগ্রামারকে আরও সহজেই সংজ্ঞায়িত করতে পারেন তখন আপনার কোনও গ্রাহক নৈপুণ্য কেন থাকবে? সিস্টেমকে কীভাবে কাজ করা দরকার তা নির্ধারণ করতে একটি গ্রাহককে একটি সহজ অথচ সমৃদ্ধ ভাষা সরবরাহ করুন?
আপনি যখন কোনও গ্রাহককে কোনও সিস্টেম কীভাবে কাজ করতে চান তা বর্ণনা করার জন্য একটি ভাষা সরবরাহ করেছেন, আপনি এমন বক্তব্য দিয়ে শেষ করতে যাবেন যা এর লাইনে কিছু বলে:
"for a given 'subsystem', as a 'business entity' I want 'some feature' so that I might achieve 'some result'".
এই ধরণের বিবৃতিটি একটি খুব পরিষ্কার উপায়ে একটি প্রয়োজনীয়তার বর্ণনা দিয়ে শেষ করে গ্রাহকটি সিস্টেমটি ধরে নিতে মূলত সিস্টেমটিকে ধরে নিতে চায় এমন সামগ্রিক আকার সরবরাহ করে বা এটি দেখার অন্য একটি উপায় হ'ল গ্রাহক সিস্টেমটি কী তা বর্ণনা করছেন। আপনি যদি নিজের গ্রাহককে আরও কিছুদূর নিয়ে চিন্তা করতে চান, তবে আপনি তাদের অনুরোধে অনুরূপ কয়েকটি বিবরণ ব্যবহার করে বৈশিষ্ট্যটির যে নিয়মগুলি মেনে চলতে হবে তা বর্ণনা করতে বলতে পারেন:
"Given 'some system state', When 'some action occurs', Then expect 'some result'
আবার খুব পরিষ্কার বিবরণ, এই সময় কিভাবেসিস্টেম আচরণ করা উচিত। জিনিসটি হ'ল এটি কোনও সফ্টওয়্যার বিকাশকারীকে সমস্ত শূন্যস্থান পূরণ করার প্রয়োজনের প্রতিস্থাপন করবে না এবং গ্রাহক কেবল পেরিফেরিয়ালি সচেতন হতে পারেন এমন আরও বিশদটি ছড়িয়ে দিতে। যদিও গ্রাহক একটি দুর্দান্ত প্রোগ্রামার-বান্ধব ফর্ম্যাটে বৈশিষ্ট্য এবং আচরণগুলি বর্ণনা করতে প্রোগ্রামার দ্বারা 'প্রশিক্ষিত' হতে সক্ষম হতে পারেন তবে গ্রাহকের কাছে অর্থপূর্ণ পরীক্ষার কেস উত্পন্ন করার দক্ষতা বা জ্ঞান থাকবে না এবং বাস্তবায়ন সরবরাহ করবে না কোড। এটি আমিই মনে করি মার্টিন ফাউলারের নিবন্ধটির মূল বিষয়টি ওপি উল্লেখ করেছে। সুতরাং হ্যাঁ, সফ্টওয়্যারটি নিজেই গ্রাহক দ্বারা লিখিত নয়, তবে সফ্টওয়্যারটির বিবরণ অবশ্যই - এবং আইএমএইচও-র গ্রাহক দ্বারা লেখা উচিত। এটির মূল্যের জন্য, আমি ফোলারের নিবন্ধটি গ্রাহককে বলা উচিত নয় বলে পড়িনি
আমি অনুভব করি যে আমরা প্রোগ্রামাররা মাঝে মাঝে ভুলে যেতে পারি যে আমাদের গ্রাহকরা তাদের ব্যবসা এবং ব্যবসায়িক প্রক্রিয়াগুলি সম্পর্কে তাদের বোঝার ক্ষেত্রে সাধারণত খুব স্মার্ট, আমাদের চেয়ে অবশ্যই আরও অনেক ভাল। যখন তাদের কাছে কোনও সফ্টওয়্যার সিস্টেম কীভাবে তৈরি করবেন তা বলার জন্য যখন তাদের কাছে কোনও প্রোগ্রামার নেই, গ্রাহকরা সাধারণত তাদের বিশেষ ব্যবসা পরিচালনার সমস্যাগুলি সমাধান করার জন্য অন্য - সম্ভবত কম দক্ষ - এর সাথে অবলম্বন করেন। এর মাধ্যমে আমার অর্থ সহজ ডাটাবেসগুলি (অ্যাক্সেস মনে করুন) বা স্প্রেডশিটগুলি, এমনকি হাতে লিখিত খাতায়ও রয়েছে এবং সেই প্রক্রিয়াগুলি পরিচালনা করার জন্য সুসংজ্ঞাত নিয়ম এবং পদ্ধতি রয়েছে। কি অনেক গ্রাহকদের অভাব একটি উপায় নির্ধারণ করতে নয় কিভাবে কাজ একটি সিস্টেম চাহিদা, কিন্তু এটা বরং কিভাবে এটি করা উচিত নির্মিত , এবং আরো গুরুত্বপূর্ণ কিভাবে দক্ষতার ব্যক্তিদের কাছেই একটি সিস্টেমের আচরণগত নিয়ম বর্ণনা যারানা দক্ষতা আসলে ব্যবস্থা গড়ে তুলতে হবে।
যদি লিখিততার অভাবের বিষয়ে সত্যই conক্যমত্য হয় তবে আপনি কি এমন একটি সরঞ্জাম নিয়ে সমস্যা দেখতে পাচ্ছেন যা পরিস্থিতিগুলি শুরু করার পরিবর্তে এবং সেগুলি চালিত না করে প্রকৃত পরীক্ষাগুলি থেকে ব্যবসায়-পঠনযোগ্য পরিস্থিতি তৈরি করতে পারে?
আমি মনে করি যে এটি সমস্যাটিকে চারপাশে ভুলভাবে দেখছে। আমি কোনও সরঞ্জামের সাথে একটি বৃহত সমস্যা দেখতে পাচ্ছি যা পরীক্ষাগুলি থেকে ডকুমেন্টেশন উত্পন্ন করে যদি সেই ডকুমেন্টেশনটি কোনওভাবে কোনও স্পেসিফিকেশন উপস্থাপনের উদ্দেশ্যে তৈরি করা হয়েছিল। কোনও দৃশ্যের পরীক্ষা করার জন্য, আপনার এটি বোঝা দরকার, সুতরাং উভয়ের পক্ষে এটির জন্য একটি পরীক্ষা সংজ্ঞায়িত করার জন্য আপনার কাছে ইতিমধ্যে পরিস্থিতি উপস্থিত থাকা প্রয়োজন। আপনি যদি কোনও বিডিডি-সিনট্যাক্সে দৃশ্যের বিবরণ দেন, তবে আপনি ইতিমধ্যে এটি নির্দিষ্ট করে দিয়েছেন, এবং আপনি কেবলমাত্র ঘটনার পরে পরিস্থিতি তৈরি করতে পারেন। অন্যদিকে যদি আপনার কাছে এমন একটি সরঞ্জাম থাকে যা গ্রাহককে একটি দুর্দান্ত প্রোগ্রামিং-বান্ধব ডিএসএল-তে একটি সিস্টেম বর্ণনা করার সুযোগ দেয় এবং যদি সেই সরঞ্জামটি কোড সারণী তৈরি করতে ব্যবহৃত হয় যা পরীক্ষার স্যুট হিসাবে ব্যবহৃত হত, তবে আমি ' ডি বলুন যে এই জাতীয় সরঞ্জামটিতে দুর্দান্ত মূল্য থাকবে। এটি গ্রাহককে প্রোগ্রামারগুলি সমীকরণের বাইরে নিয়ে যেতে দেখবে না এবং এটি গ্রাহকের ইচ্ছা গ্রহণ এবং বিডিডি ফ্যাশনে পরীক্ষার-এনকোডযুক্ত প্রয়োজনীয়তা তৈরির জন্য প্রয়োজনীয় প্রচেষ্টা হ্রাস করতে সহায়তা করবে এবং গ্রাহকের ইচ্ছাকে আরও সহজে বোঝা যাবে। তবে এটি কোনও অভিজ্ঞ সফটওয়্যার বিকাশকারীকে হাতে রেখে গ্রাহকের প্রয়োজনের থেকে গ্রাহকের চাহিদা পৃথক করতে সহায়তা করার বিকল্প হবে না।