অনুশীলনে আনুষ্ঠানিক প্রোগ্রাম যাচাইকরণ


66

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

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

ফর্মাল প্রুফ সরঞ্জামগুলির আরও অভিজ্ঞতার সাথে মন্তব্য করতে পারে? আবার - আমি চাই ভালোবাসেন আমি মনে করি তারা মহান একটি আনুষ্ঠানিক prover টুল ব্যবহার করার জন্য, কিন্তু আমি ছাপ তারা একটি হাতির দাঁত টাওয়ার যে আমি জাভা / সি ++ ... (দ্রষ্টব্য এর অকুল খাদে থেকে পৌঁছতে পারে না হয় আছে: আমি এছাড়াও ভালোবাসেন Haskell,, OCaml ... ভুল ধারণা পাবেন না: আমি ঘোষণামূলক ভাষা এবং আনুষ্ঠানিক প্রমাণের একজন ভক্ত, আমি শুধু দেখতে আমি বাস্তবানুগভাবে সফটওয়্যার ইঞ্জিনিয়ারিং যে দরকারী বানাতে পারে চেষ্টা করছি)

আপডেট: যেহেতু এটি মোটামুটি বিস্তৃত, তাই আসুন নিম্নলিখিত আরও নির্দিষ্ট প্রশ্নগুলির চেষ্টা করুন: 1) শিল্প জাভা / সি ++ প্রোগ্রামগুলির যথার্থতা প্রমাণ করতে প্রভারগুলি ব্যবহারের উদাহরণ রয়েছে? 2) কোক কি সেই কাজের জন্য উপযুক্ত হবে? ৩) কক উপযুক্ত হলে, আমি কি প্রথমে কোক-তে প্রোগ্রামটি লিখি, তারপর কোক থেকে সি ++ / জাভা তৈরি করব? 4) এই পদ্ধতির থ্রেডিং এবং কর্মক্ষমতা অপ্টিমাইজেশান পরিচালনা করতে পারে?


3
আমি আপনার সমস্যাটি পেয়েছি এবং প্রশংসা করি, তবে এই প্রশ্নটি (এসই পোস্ট হিসাবে) পরে কী তা আমি বুঝতে পারি না। আলোচনা? অভিজ্ঞতা? এসই এর জন্যও উপযুক্ত নয়। "আমি যা করতে পারি?" সুর ​​আমাকে অনুভব করে যে এটি খুব বিস্তৃত প্রশ্ন।
রাফেল

3
আমি দেখছি ... আমি সম্মত এই প্রশ্নটি পরিষ্কারভাবে তৈরি করা হয়নি। সুতরাং, আসুন বলা যাক: 1) শিল্প জাভা / সি ++ প্রোগ্রামগুলির সঠিকতা প্রমাণের জন্য প্রভারগুলি ব্যবহারের উদাহরণ রয়েছে? 2) কোক কি সেই কাজের জন্য উপযুক্ত হবে? ৩) কক উপযুক্ত হলে, আমি কি প্রথমে কোক-তে প্রোগ্রাম লিখি, তাহলে কোক থেকে সি ++ / জাভা তৈরি করা উচিত? 4) এই পদ্ধতির থ্রেডিং এবং কর্মক্ষমতা অপ্টিমাইজেশান সঙ্গে মানিয়ে নিতে পারে?
ফ্রাঙ্ক

2
সুতরাং যে চারটি প্রশ্ন, তারপর। 1) সম্ভবত সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের থেকে ভাল কারণ আপনি এখানে (অনেক) শিল্প পেশাদারদের দিকে ঝুঁকির সম্ভাবনা নেই। 2) কিছুটা বিষয়গত স্বাদযুক্ত, তবে আমাদের এখানে এমন লোক থাকতে পারে যারা একটি উদ্দেশ্যগত দৃষ্টিকোণ সরবরাহ করতে পারে। 3), যতদূর আমি বলতে পারি, সম্পূর্ণ ব্যক্তিগত। 4) এই সাইটের জন্য একটি দুর্দান্ত প্রশ্ন। সংক্ষেপে: দয়া করে আপনার প্রশ্নগুলি পৃথক করুন, প্রথমটির সাথে সফ্টওয়্যার ইঞ্জিনিয়ারিং এ যান এবং 2 পোস্ট করার আগে আপনি এখানে কোনও উদ্দেশ্য (!) উত্তর আশা করতে পারেন কিনা তা নিয়ে কঠোর চিন্তা করুন ()!
রাফেল

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

9
সি ++ প্রোগ্রাম যাচাই করার ক্ষেত্রে সমস্যাটি হ'ল সি ++ একটি ভাল-সংজ্ঞায়িত ভাষা নয়। আমি মনে করি না যতক্ষণ না সফ্টওয়্যার সিস্টেমের অনেকগুলি অংশ (ওএস, গ্রন্থাগার, প্রোগ্রামিং ল্যাঙ্গুয়েজ) যাচাইকরণের পক্ষে সমর্থন করার জন্য পুনরায় নকশাকৃত না হয় ততক্ষণ বড় আকারের যাচাইকরণ সম্ভব হয় না। যেমনটি সুপরিচিত, আপনি কেবল 200000 কোডের লাইন কারও উপর ফেলে দিতে পারবেন না এবং "যাচাই করুন!" বলতে পারেন। আপনার একসাথে কোড যাচাই করা এবং লিখতে হবে এবং আপনার প্রোগ্রামিং অভ্যাসটিও যাচাই করে যাচ্ছেন তা আপনাকে খাপ খাইয়ে নিতে হবে।
আন্দ্রেজ বাউর

উত্তর:


35

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

  1. এমন অনেক সরঞ্জাম রয়েছে যা জাভা এবং সি ++ এর বৈশিষ্ট্যগুলি আনুষ্ঠানিকভাবে প্রমাণ করার জন্য ডিজাইন করা হয়েছে।

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

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

  2. আপনার স্পেসিফিকেশনগুলি একবার হয়ে গেলে, আপনাকে প্রমাণ করতে হবে যে প্রোগ্রামটি সেই স্পেসিফিকেশনের সাথে সামঞ্জস্য করে।

    এর জন্য আপনার প্রয়োজন এমন একটি সরঞ্জাম যা আপনার স্পেসিফিকেশন এবং আপনার ভাষার অপারেশনাল শব্দার্থক (জাভা বা সি ++) উভয়ের সম্পর্কে একটি আনুষ্ঠানিক বোঝাপড়া রাখে যাতে পর্যাপ্তত্বের উপপাদ্যটি প্রকাশ করা যায় , যথা: প্রোগ্রামটির প্রয়োগটি নির্দিষ্টকরণটিকে সম্মান করে।

    এই সরঞ্জামটি আপনাকে সেই উপপাদ্যের প্রমাণ তৈরি বা উত্পন্ন করার অনুমতি দেয়। এখন এই দুটি কাজই (নির্দিষ্টকরণ এবং প্রমাণ করা) বেশ কঠিন, তাই এগুলি প্রায়শই দুটি ক্ষেত্রে পৃথক করা হয়:

    • একটি সরঞ্জাম যা কোড, স্পেসিফিকেশন এবং পর্যাপ্তি উপপাদ তৈরি করে। ফ্রাঙ্ক যেমন উল্লেখ করেছেন, ক্রাকাতোয়া এমন একটি সরঞ্জামের উদাহরণ।

    • একটি সরঞ্জাম যা উপপাদ (গুলি) স্বয়ংক্রিয়ভাবে বা ইন্টারেক্টিভভাবে প্রমাণ করে। কোক ক্রাকাতোয়া সাথে এই পদ্ধতিতে যোগাযোগ করে এবং কিছু জেড 3 এর মতো শক্তিশালী স্বয়ংক্রিয় সরঞ্জাম রয়েছে যা ব্যবহার করা যায়।

    একটি (মাইনর) পয়েন্ট: এমন কিছু উপপাদ্য রয়েছে যা স্বয়ংক্রিয় পদ্ধতি দ্বারা প্রমাণিত হওয়া খুব শক্ত এবং স্বয়ংক্রিয় উপপাদ্য প্রবাদের মাঝে মাঝে সাউন্ডনেস বাগ রয়েছে যা তাদেরকে কম বিশ্বাসযোগ্য করে তোলে। এটি এমন একটি অঞ্চল যেখানে তুলনার তুলনায় কক জ্বলজ্বল করে (তবে এটি স্বয়ংক্রিয় নয়!)।

  3. যদি আপনি ওক্যামল কোড উত্পন্ন করতে চান তবে অবশ্যই অবশ্যই প্রথমে কক (গ্যালিনা) এ লিখুন, তারপরে কোডটি বের করুন। তবে, যদি সম্ভব হয় তবে কক সি ++ বা জাভা তৈরিতে ভয়ানক।

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

উপসংহারে: "রিয়েল ওয়ার্ল্ড" জাভা এবং সি ++ প্রোগ্রামগুলির আনুষ্ঠানিক যাচাইকরণ একটি বৃহত এবং উন্নত ক্ষেত্র এবং কোক সেই কাজের অংশগুলির জন্য উপযুক্ত। উদাহরণস্বরূপ আপনি এখানে একটি উচ্চ-স্তরের ওভারভিউ খুঁজে পেতে পারেন ।


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

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

হ্যাঁ অবশ্যই - আমি সর্বদা উপলব্ধি করেছিলাম যে আনুষ্ঠানিক পদ্ধতিগুলি কেবল একটি ভাল সংজ্ঞায়িত বিন্দু থেকে শুরু হতে পারে। যদি সেই স্পেসিফিকেশন বাস্তব জীবনের ব্যবহারকারীদের সচেতন / অচেতন / অনাবৃত প্রয়োজনের সাথে সামঞ্জস্য হয় বা না হয় তবে অন্য একটি সমস্যা, আনুষ্ঠানিক পদ্ধতিগুলির সাথে সম্বোধনযোগ্য নয় (তবে প্রকৌশলীগুলির জন্য অবশ্যই সমস্যা)।
ফ্রাঙ্ক

একটি উপপাদ্য সংজ্ঞা দ্বারা একটি প্রমাণিত প্রস্তাব। সুতরাং, আপনি সম্ভবত "উপপাদ্য প্রমাণ করা" বলতে চাইছেন না।
nbro

@nbro উইকিপিডিয়া আপনার সাথে একমত বলে মনে হচ্ছে না। Mathworld, তবে, একটি উপপাদ্য সংজ্ঞায়িত একটি প্রস্তাব যা "বলে যাবে গাণিতিক অপারেশন গৃহীত দ্বারা সত্য হতে পারে প্রদর্শিত"। এক্ষেত্রে, উপপাদ্যগুলির প্রমাণ প্রদান করা কেবল সম্ভবই নয়, তবে তাদের এটিকে ডাকার পক্ষে ন্যায়সঙ্গত হওয়াও প্রয়োজনীয়! :) (এটি অবশ্যই একটি পাল্টে দেওয়া)
কোডি

15

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

  1. ২০০৫ সালে নাসা দ্বারা প্রকাশিত ওপেন-সোর্স সরঞ্জাম জাভা প্যাথফাইন্ডার (সংক্ষেপে জেপিএফ) এক্সিকিউটেবল জাভা বাইটকোড প্রোগ্রামগুলি যাচাই করার ব্যবস্থা ( জাভা পাথফাইন্ডার @ উইকি দেখুন ) system এটি নাসা অ্যামেসের কে 9 রোভারের এক্সিকিউটিভ সফ্টওয়্যারটিতে অসঙ্গতিগুলি সনাক্ত করতে ব্যবহৃত হয়েছে।

  2. এই কাগজটি: গুরুতর ফাইল সিস্টেম ত্রুটিগুলি অনুসন্ধান করতে মডেল চেকিং ব্যবহার করে @ ওএসডিআই'04 দেখায় যে ফাইল সিস্টেমে গুরুতর ত্রুটিগুলি খুঁজতে মডেল চেকিং কীভাবে ব্যবহার করতে হয়। FiSC নামক একটি সিস্টেম তিনটি বহুল ব্যবহৃত, ভারী-পরীক্ষিত ফাইল সিস্টেমে প্রয়োগ করা হয়: ext3, JFS, এবং ReiserFS এবং 32 টি গুরুতর বাগ পাওয়া যায়। এটি সেরা কাগজ পুরষ্কার জিতেছে।

  3. এই কাগজটি: অ্যামাজন ওয়েব সার্ভিসেস কীভাবে আনুষ্ঠানিক পদ্ধতিগুলি ব্যবহার করে @ সিএসিএম'15 বর্ণনা করে যে কীভাবে এডাব্লুএস তার পণ্যগুলিতে S3, ডায়নামোডিবি, ইবিএস এবং অভ্যন্তরীণ বিতরণ লক ম্যানেজারের ক্ষেত্রে আনুষ্ঠানিক পদ্ধতি প্রয়োগ করে। এটি ল্যাম্পোর্টের টিএলএ + সরঞ্জামকে কেন্দ্র করে । যাইহোক, ল্যাম্পোর্ট নিবিড়ভাবে নিজের নিজস্ব টিএলএ টুলবক্স ব্যবহার করেছে। তিনি প্রায়শই কাগজপত্রের পরিশিষ্টগুলিতে নিজের দ্বারা প্রস্তাবিত অ্যালগরিদম / উপপাদ্যের টিএলএতে একটি (বেশ সম্পূর্ণ) আনুষ্ঠানিক যাচাই করেন।


4

কোনও প্রোগ্রামের একটি আনুষ্ঠানিক স্পেসিফিকেশন হ'ল (কম-বেশি) অন্য প্রোগ্রামিং ভাষায় রচিত একটি প্রোগ্রাম। ফলস্বরূপ, স্পেসিফিকেশনটিতে অবশ্যই এর নিজস্ব বাগগুলি অন্তর্ভুক্ত থাকবে।

আনুষ্ঠানিক যাচাইয়ের সুবিধা হ'ল প্রোগ্রাম এবং স্পেসিফিকেশন দুটি পৃথক বাস্তবায়ন হওয়ায় তাদের বাগগুলি পৃথক হবে। তবে সবসময় নয়: বাগগুলির একটি সাধারণ উত্স, উপেক্ষিত কেসগুলি প্রায়শই মিলবে। সুতরাং, আনুষ্ঠানিক যাচাইকরণ কোনও চঞ্চলতা নয়: এটি এখনও তুচ্ছ সংখ্যক বাগ মিস করতে পারে।

আনুষ্ঠানিক যাচাইয়ের একটি অসুবিধা হ'ল এটি বাস্তবায়ন ব্যয়ের দ্বিগুণ মতো কিছু আরোপ করতে পারে, সম্ভবত আরও বেশি (আপনার আনুষ্ঠানিক নির্দিষ্টকরণের বিশেষজ্ঞের প্রয়োজন, এবং এর সাথে আসা আরও কম-বেশি পরীক্ষামূলক সরঞ্জামগুলি ব্যবহার করতে হবে; যা সস্তা আসবে না won't )।

আমি অনুমান করি যে পরীক্ষার কেসগুলি সেট আপ করা হবে এবং এগুলি স্বয়ংক্রিয়ভাবে চালানোর জন্য ভারাটি আপনার সময়ের আরও ভাল ব্যবহার হবে।


সুবিধা আনুষ্ঠানিক যাচাই যে .... দ্বিতীয় হয় অসুবিধা আনুষ্ঠানিক যাচাই যে ... এই বিভ্রান্তিকর হয়।
হেংজিন

আমি মনে করি স্পেসিফিকেশন এবং অনানুষ্ঠানিক টাস্কের মধ্যে মিল নেই কোনও সফ্টওয়্যার প্রয়োজনীয়তা বিশ্লেষণ ইস্যু কোনও প্রোগ্রামিং সমস্যা নয়।
কাভেহ

3

সুরক্ষা-সমালোচনামূলক এম্বেড থাকা সিস্টেমগুলির জন্য ডিজিটাল সি ++ এর একটি উপসেট রচনা করা প্রোগ্রামগুলির জন্য এখন আনুষ্ঠানিক যাচাইকরণ সম্ভব। দেখুন http://eschertech.com/papers/CanCPlusPlusBeMadeAsSafeAsSpark.ppt একটি সংক্ষিপ্ত উপস্থাপনার জন্য, এবং http://eschertech.com/papers/CanCPlusPlusBeMadeAsSafeAsSpark.pdf পূর্ণ পত্রিকাটির জন্য।


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

2

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

আপনি বলছেন "আমি পরীক্ষায় ক্লান্ত হয়ে পড়েছি" তবে আনুষ্ঠানিক যাচাইকরণ আসলেই পরীক্ষার বিকল্প নয়। একটি উপায় তার একটি মধ্যে ভেরিয়েশন পরীক্ষার উপর।

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

আপনি "শিল্প" বাদে আপনার নির্দিষ্ট অ্যাপ্লিকেশনটির আর কোনও উল্লেখ করবেন না mention অনুশীলনে আনুষ্ঠানিক যাচাইকরণ নির্দিষ্ট প্রয়োগের উপর নির্ভর করে।

আনুষ্ঠানিক যাচাইকরণের কৌশলগুলি সার্কিটের নির্ভুলতা প্রমাণ করতে যেমন মাইক্রোপ্রসেসরের ডিজাইনে EE তে ব্যাপকভাবে ব্যবহৃত হয় বলে মনে হয়।

লার্স ফিলিপসনের ইই ক্ষেত্রের আনুষ্ঠানিক যাচাইকরণ সরঞ্জামগুলির সমীক্ষার উদাহরণ এখানে ।


2
এটা বলা বিভ্রান্তিমূলক যে প্রোগ্রামের যথার্থতা নির্ধারণ করতে "প্রচুর" আনুষ্ঠানিক যাচাইকরণ "নীতিগুলি সংকলকগুলিতে তৈরি করা হয়"। আপনি যে বিষয়টি উল্লেখ করছেন তা হ'ল স্থিতিশীল টাইপ-চেকিং যা কিছু সংকলকরা করেন তবে বৈশিষ্ট্যগুলি সেইভাবে যাচাই করা হয়েছে বরং সরল, যেমন একটি সংখ্যা এবং স্ট্রিং যুক্ত করা এড়ানো। এটি সহায়ক, তবে সাধারণত "আনুষ্ঠানিক যাচাইকরণ" দ্বারা আন্ডারস্টড করা থেকে দূরে চিৎকার।
মার্টিন বার্গার

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

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


3
xy

1

সম্ভবত, কোনও মডেল চেকার সহায়ক হতে পারে।

http://alloytools.org/docamentation.html অ্যালোই একটি মডেল পরীক্ষক।

অ্যালোয় ব্যবহার করে মডেল চেকিংয়ের ধারণাটি ব্যাখ্যা করার জন্য একটি দুর্দান্ত উপস্থাপনা: https://www.youtube.com/watch?v=FvNRlE4E9QQ

সরঞ্জামগুলির একই পরিবারে 'সম্পত্তি-ভিত্তিক পরীক্ষা' আসে, তারা সকলেই আপনার সফ্টওয়্যারটির প্রদত্ত স্পেসিফিকেশন মডেলের জন্য একটি পাল্টা উদাহরণ খুঁজে পাওয়ার চেষ্টা করে।

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