ডিডাব্লু এর উত্তর দুর্দান্ত , তবে আমি একটি পয়েন্টে প্রসারিত করতে চাই। একটি স্পেসিফিকেশন কেবল একটি রেফারেন্স নয় যার বিরুদ্ধে কোড যাচাই করা হয়। আনুষ্ঠানিক নির্দিষ্টকরণের অন্যতম কারণ হ'ল কিছু মৌলিক বৈশিষ্ট্য প্রমাণ করে এটি যাচাই করা। অবশ্যই, স্পেসিফিকেশন সম্পূর্ণরূপে যাচাই করা যায় না - বৈধকরণটি স্পেসিফিকেশনের মতোই জটিল হবে, সুতরাং এটি একটি অন্তহীন প্রক্রিয়া হবে। তবে বৈধতা কিছু সমালোচিত বৈশিষ্ট্যের উপর আমাদের আরও শক্তিশালী গ্যারান্টি পেতে দেয়।
উদাহরণস্বরূপ, ধরুন আপনি একটি গাড়ী অটোপাইলট ডিজাইন করছেন। এটি অনেকগুলি পরামিতিগুলিতে জড়িত একটি খুব জটিল জিনিস। অটোপাইলটের যথাযথ বৈশিষ্ট্যগুলির মধ্যে "গাড়ি কোনও দেয়ালের সাথে ক্র্যাশ হবে না" এবং "গাড়ি যেখানে যেতে বলা হবে সেখানে চালিত হবে" এর মতো জিনিসগুলি অন্তর্ভুক্ত করে। "গাড়ি কোনও দেয়ালের সাথে ক্র্যাশ হবে না" এর মতো একটি সম্পত্তি সত্যই গুরুত্বপূর্ণ, তাই আমরা এটি প্রমাণ করতে চাই। যেহেতু সিস্টেমটি শারীরিক বিশ্বে পরিচালনা করে, তাই আপনাকে কিছু শারীরিক বাধা যুক্ত করতে হবে; কম্পিউটেশনাল সিস্টেমের আসল সম্পত্তি হ'ল কিছু হবে "উপাদান বিজ্ঞান সম্পর্কিত এই অনুমানের অধীনে, এবং গাড়ির সেন্সরগুলির দ্বারা প্রতিবন্ধকতাগুলির উপলব্ধি সম্পর্কে এই অনুমানগুলি, গাড়ি কোনও দেয়ালের সাথে ক্র্যাশ করবে না"। তবে তবুও, ফলাফলটি তুলনামূলকভাবে সহজ সম্পত্তি যা স্পষ্টভাবে কাম্য।
আপনি কোড থেকে এই সম্পত্তি প্রমাণ করতে পারেন? আপনি যদি পুরোপুরি একটি আনুষ্ঠানিক পদ্ধতির অনুসরণ করেন তবে শেষ পর্যন্ত তা হচ্ছে ¹ তবে কোডটির বিভিন্ন অংশ রয়েছে; ব্রেক, ক্যামেরা, ইঞ্জিন ইত্যাদি সমস্ত স্বায়ত্তশাসিতভাবে নিয়ন্ত্রণ করা হয়। ব্রেকগুলির একটি নির্ভুলতা সম্পত্তি হ'ল এমন কিছু হবে "যদি 'ব্রেক প্রয়োগ' সংকেত চালু থাকে তবে ব্রেক প্রয়োগ করা হয়"। ইঞ্জিনের একটি নির্ভুলতা সম্পত্তি হবে "যদি ক্লাচ সিগন্যালটি বন্ধ থাকে তবে ইঞ্জিন চাকাগুলি চালাচ্ছে না"। এগুলি একসাথে রাখার জন্য এটি খুব উচ্চ-স্তরের মতামত নেয়। একটি স্পেসিফিকেশন একটি মধ্যবর্তী স্তর তৈরি করে যেখানে সিস্টেমের বিভিন্ন উপাদান এক সাথে যুক্ত করা যায়।
প্রকৃতপক্ষে, গাড়ী অটোপাইলট হিসাবে এ জাতীয় জটিল ব্যবস্থায় বিভিন্ন পরিমাণের পরিশোধনগুলির সাথে বিভিন্ন স্তরের স্পেসিফিকেশন থাকবে। একটি পরিশোধন পদ্ধতির প্রায়শই নকশায় ব্যবহৃত হয়: কিছু উচ্চ-স্তরের বৈশিষ্ট্য যেমন "গাড়ি কোনও দেয়ালের সাথে ক্র্যাশ হবে না" দিয়ে শুরু করুন, তারপরে এটি সেন্সর এবং ব্রেক প্রয়োজন এবং সেন্সরগুলির জন্য কিছু প্রাথমিক প্রয়োজনীয়তা, ব্রেকগুলি তৈরি করে এবং পাইলট সফ্টওয়্যার, তারপরে সেই মৌলিক প্রয়োজনীয়তাগুলিকে উপাদানটির নকশায় পুনরায় পরিমার্জন করুন (সেন্সরের জন্য, আমি একটি রাডার, একটি ডিএসপি, একটি চিত্র প্রসেসিং লাইব্রেরি,…) ইত্যাদি আনুষ্ঠানিক বিকাশ প্রক্রিয়াতে, প্রতিটি স্তরের স্পেসিফিকেশন তার উপরের স্তরের দ্বারা নির্ধারিত প্রয়োজনীয়তা মেটাতে প্রমাণিত হয়, সর্বোচ্চ স্তরের বৈশিষ্ট্য থেকে শুরু করে কোড পর্যন্ত সমস্ত উপায়।
স্পেসিফিকেশনটি সঠিক কিনা তা নিশ্চিত হওয়া অসম্ভব। উদাহরণস্বরূপ, যদি আপনি পদার্থবিজ্ঞান ভুল করে থাকেন তবে ব্রেকগুলি আনুষ্ঠানিক প্রয়োজনীয়তার সাথে ব্রেক কোড সম্পর্কিত গণিতটি সঠিক হলেও ব্রেকগুলি কার্যকর নাও হতে পারে। আপনার যদি 5000,000 কেজি থাকে তবে ব্রেকগুলি 500 কেজি লোডের সাথে কার্যকর তা প্রমাণ করার পক্ষে ভাল নয়। তবে এটি দেখতে আরও সহজ যে 500 কেজিটি ভুল কোডের ভিতরে দেখার চেয়ে ভুল যে তারা গাড়ির শারীরিক পরামিতিগুলির পক্ষে যথেষ্ট ভাল হবে না।
Fully সম্পূর্ণ আনুষ্ঠানিক পদ্ধতির বিপরীতটি হল "আমি অনুমান করি এটি কাজ করে তবে আমি নিশ্চিত হতে পারি না"। আপনি যখন নিজের জীবন বাজি ধরছেন তখন তা এত দুর্দান্ত বলে মনে হয় না।