মিশন ক্রিটিকাল সফটওয়্যার কীভাবে তৈরি করবেন?


15

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

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

তবে কীভাবে যাচাই করবেন যে সফ্টওয়্যারটি (কেবলমাত্র স্পেসিফিকেশন নয়) সত্যই সঠিক?

দাবি অস্বীকার: তাত্ত্বিক কম্পিউটার বিজ্ঞানের কথা বলতে গেলে আমি একজন 90% বোকা। সুতরাং দয়া করে উত্তর দেওয়ার সময় দয়াবান হন।


2
"... যে সফ্টওয়্যারটি সত্যই সঠিক ..." এর সাথে আপনার সঠিক অর্থ কী ? নিম্নলিখিত 2 টির মধ্যে আপনার অর্থ কী: 1) সফ্টওয়্যারটি স্পেসিফিকেশনটির সাথে অনুগত 2) কোডের নির্দিষ্ট ব্লকগুলি কিছু প্রদত্ত সম্পত্তি বা কিছু ইনপুট - আউটপুট সম্পর্ককে সম্মান করে।
জর্জিও ক্যামেরানি

@ জর্জিও ক্যামেরানী: প্রথমটি
ফিজরিয়ান

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

@ রাদুগ্রিগোর: আসলে "মডেল" কী তা আমি বুঝতে পারি না। তবে আমি মনে করি আপনি আমার প্রশ্নটি বেশ কাছাকাছিভাবে সমাধান করেছেন। মূলত, আমি যা ভাবছি তা হ'ল স্পেসিফিকেশন এবং প্রোগ্রাম উত্স কোডের মধ্যে ফাঁক। প্রোগ্রামাররা (আমার মত) স্পেসিফিকেশনটি প্রয়োগ করার সময় অনেক বোকা জিনিস ঘটতে পারে।
ফিজরিয়ান

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

উত্তর:


11

প্রশ্ন বরং বিস্তৃত। যুক্তিসঙ্গত জায়গায় এর উত্তর দেওয়ার জন্য আমি অনেকগুলি ওভারসিম্প্লিফিকেশন করব।

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

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

  • (ছোট পদক্ষেপ) অপারেশনাল শব্দার্থক শব্দসমূহ : এটি অনেকটা এর জন্য দোভাষী লিখে একটি প্রোগ্রামিং ভাষার সংজ্ঞা দেওয়ার মতো। এর জন্য আপনাকে রাষ্ট্রটি কী তা বলতে হবে এবং ভাষাতে প্রতিটি বিবৃতি দ্বারা এটি প্রভাবিত হয়। (আপনি ভাবতে পারেন যে আপনি কোন ভাষায় অনুবাদক লিখেছেন, তবে আমি ভান করছি আপনি নন))
  • অ্যাকজিওমেটিক সিঁটমিকস : এখানে প্রতিটি স্টেটমেন্ট টাইপ একটি অ্যাকিয়োম স্কিমা সহ আসে। সুতরাং, মোটামুটি, যখনই এই ধরণের একটি নির্দিষ্ট বিবৃতি ব্যবহৃত হয়, এটি নির্দিষ্ট অক্ষ ব্যবহার করতে সক্ষম হয়ে অনুবাদ করে। উদাহরণস্বরূপ, অ্যাসাইনমেন্ট স্কিমা নিয়ে আসে { পি [ এক্স / ] }এক্স: = ; নির্দিষ্ট অ্যাসাইনমেন্ট x : = x + 1 অক্ষর সাথে আসে { x + 1 = 1 }{পি[এক্স/]}এক্স: ={পি}এক্স: =এক্স+ +1 যদি আমরা সঙ্গে স্কিমা instantiate পি = ( x এর = 1 ){এক্স+ +1=1}এক্স: =এক্স+ +1{এক্স=1}পি=(এক্স=1)

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

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

সংক্ষেপে, আমি তিনটি কারণ সম্পর্কে ভাবতে পারি যা আপনার প্রশ্নের দিকে পরিচালিত করেছিল:

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

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


8

একটি প্রোগ্রাম এবং এর স্পেসিফিকেশনের মধ্যে ব্যবধান হ্রাস করার একটি পদ্ধতিকে একটি আনুষ্ঠানিক শব্দার্থবিজ্ঞান সহ একটি ভাষা ব্যবহার করা। এখানে একটি আকর্ষণীয় উদাহরণ এস্টেরেল হবে । গারার্ড বেরির ওয়েবপৃষ্ঠায় তার কাজটি বাস্তব বিশ্বে আনুষ্ঠানিক পদ্ধতি আনার বিষয়ে কিছু আকর্ষণীয় আলোচনার জন্য একবার দেখুন। http://www-sop.inria.fr/members/Gerard.Berry/

PS একটি এয়ারবাসে হয়েছে? আপনি আনুষ্ঠানিক পদ্ধতিতে উড়ে এসেছেন!


1
এয়ারবাস কীভাবে আনুষ্ঠানিক পদ্ধতি ব্যবহার করে সে সম্পর্কে কোনও রেফাই সহায়ক হবে। (বুঝতে পারেন যে এটির সম্ভাব্য মালিকানা সম্পর্কিত তথ্য।)
ভিজএন

@ রোসডানকান বেরির ওয়েব পৃষ্ঠায় যাওয়ার পরে এবং কয়েকটি অনুসন্ধানের পরে আমি এই ওয়েব পৃষ্ঠাটি পেয়েছি । এটিই কি এয়ারবাস যে আনুষ্ঠানিক পদ্ধতিগুলি ব্যবহার করছেন তা আপনি উল্লেখ করছেন?
scaaahu

আমার কাছে এস্তেরেলের এয়ারবাস ব্যবহার সম্পর্কিত কোনও অভ্যন্তরীণ তথ্য নেই; আমার মন্তব্যটি কেবল বক্তৃতা চলাকালীন বেরি যে মন্তব্য করেছিল তার পুনরাবৃত্তি করে। তবে এই পৃষ্ঠাটি এয়ারবাসের সাথে এসসিএডিই পণ্যটির সফল ব্যবহারকে তুরস্ক করেছে। আপনি যদি এস্টেরেলের ইতিহাসের দিকে তাকান তবে এটি ডাসল্ট মোটামুটি প্রথমদিকে গ্রহণ করেছিলেন। গুগল আপনার বন্ধু।
রস ডানকান

2
এয়ারবাসও astree.ens.fr
রাদু GRigore

7

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

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

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

  • পরীক্ষা । সমস্ত ধরণের — ইউনিট পরীক্ষা, একীকরণ পরীক্ষা, ব্যবহারকারীর গ্রহণযোগ্যতা পরীক্ষা, রিগ্রেশন টেস্টিং ইত্যাদি

  • আজকাল পরীক্ষামূলক স্যুটগুলির মাধ্যমে স্বয়ংক্রিয় পরীক্ষার যা অপরিকল্পিতভাবে চালানো যেতে পারে আরও বিকাশ / গুরুত্বপূর্ণ। চলমান টেস্ট স্যুটগুলি প্রায়শই বিল্ড সরঞ্জামের সাথে মিলিত হয়।

  • পরীক্ষার ক্ষেত্রে একটি গুরুত্বপূর্ণ ধারণা হ'ল কোড কভারেজ । অর্থাত্ কী কোডটি ব্যবহার করা হয় পরীক্ষা দ্বারা করা হয়। একটি পরীক্ষা কোডে একটি বাগ খুঁজে পায় না যা পরীক্ষার মাধ্যমে "ছোঁয়া" নয়।

  • পরীক্ষার ক্ষেত্রে আরেকটি মূল ধারণাটি হ'ল টেস্ট হারনেসেস যে অনুশীলন কোড যা সহজেই সরাসরি অ্যাক্সেস হয় না।

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

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

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

  • এক পরীক্ষা দিয়ে বহন করতে পারেন! খুব অল্প বা খুব বেশি পরীক্ষার ক্ষেত্রে উভয়ই সমস্যা রয়েছে । একটি "মিষ্টি স্পট" আছে। সফ্টওয়্যারটি চূড়ান্তভাবে কোনওভাবেই তৈরি করা যায় না।

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

  • এসসিএম, সোর্স কোড ম্যানেজমেন্ট এবং শাখা প্রশাখার কৌশলগুলির সাবধানতা অবলম্বন এড়ানো, বিচ্ছিন্নকরণ এবং অগ্রগতি সংশোধন ইত্যাদিতে গুরুত্বপূর্ণ etc

  • এন-সংস্করণ প্রোগ্রামিং : মিশন ক্রিটিকাল সফ্টওয়্যার বিকাশের জন্য প্রায়শই ব্যবহৃত একটি অনুশীলন। এই অনুশীলনের ভিত্তি হ'ল এন স্বতঃ বিকাশিত প্রোগ্রামগুলির একই সাধারণ বাগ / ত্রুটি হওয়ার সম্ভাবনা কম। কয়েকটি গবেষণাপত্রে এটি সমালোচিত হয়েছে। এনভিপি অবশ্য একটি অনুশীলন তাত্ত্বিক ধারণা নয়।

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

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


8
শিফট কী এবং চিঠিটি চাপলে একটি মূলধন চিঠি উত্পন্ন হয় সেই স্পেসিফিকেশনটির প্রতি শ্রদ্ধার সাথে কারও আপনার ওএস পরীক্ষা করা উচিত।
আন্দ্রেজ বাউয়ার

1
সংযোজন: সময়সূচির সীমাবদ্ধতা গুণমানকে প্রভাবিত করতে পারে। সুযোগ দ্বারা স্কোপ, ব্যয়, সময়সূচী সমন্বিত প্রকল্পের মিলিগ্রেট ত্রিভুজটিও দেখুন "সমস্ত অঞ্চল" দ্বারা প্রভাবিত 3.. আরও দেখুন "আইটি শিল্প অন্যান্য শিল্পের মতো বড়, ত্রুটিহীন প্রকল্পগুলি কেন দ্রুত সরবরাহ করতে পারে না?" । এন-ভার্সন আইটেমটি আমি নিজেই যোগ করি নি [এর অন্যান্য আচ্ছাদনযুক্ত উত্তর] তবে নোট ফেনম্যান উল্লেখ করেছেন যে নাসা এটি স্পেস শাটল ডিজাইনেও ব্যবহার করেছিল।
vzn


1
আরেকটি আকর্ষণীয় কেস স্টাডি হচ্ছে মার্স রোভার, যার কোডের বড় বড় এমট রয়েছে, এর বেশিরভাগ অংশ স্বয়ংক্রিয়ভাবে তৈরি। সেক্ষেত্রে পূর্ববর্তী রোভার্স ক্ষেত্রটি বেশিরভাগ সফ্টওয়্যার পরীক্ষা করেছিল এবং এটি পুনরায় ব্যবহৃত হয়েছিল।
vzn

6

একটি পুরানো পদ্ধতির (তবে এটি এখনও কিছু অ্যাপ্লিকেশনে ব্যবহৃত হয়) হ'ল এন-সংস্করণ প্রোগ্রামিং

উইকিপিডিয়া থেকে:

এন-সংস্করণ প্রোগ্রামিং ( NVP ), এছাড়াও হিসাবে পরিচিত multiversion প্রোগ্রামিং , একটি পদ্ধতি বা সফটওয়্যার ইঞ্জিনিয়ারিং প্রক্রিয়া যেখানে একাধিক বৈশিষ্ট্যগুলি সমতুল্য প্রোগ্রাম স্বাধীনভাবে একই প্রাথমিক নির্দিষ্টকরণের থেকে উত্পন্ন হয়। এন-সংস্করণ প্রোগ্রামিংয়ের ধারণাটি ১৯ con in সালে লিমিং চেন এবং আলগার্ডাস আভিজনিয়াস কেন্দ্রীয় অনুমানের সাথে প্রবর্তন করেছিলেন যে "প্রোগ্রামিংয়ের প্রচেষ্টার স্বাধীনতা প্রোগ্রামের দুটি বা ততোধিক সংস্করণের ক্ষেত্রে অভিন্ন সফ্টওয়্যার ত্রুটিগুলির সম্ভাবনা ব্যাপকভাবে হ্রাস করবে"। লক্ষ্য এনভিপি-র হ'ল ফল্ট সহনশীলতা বা অপ্রয়োজনীয়তা তৈরি করে সফ্টওয়্যার পরিচালনার নির্ভরযোগ্যতা উন্নত করা।
....

উদাহরণস্বরূপ দেখুন: " বিল্ডিং ফল্টে চ্যালেঞ্জগুলি - একটি সিভিল এয়ারক্রাফ্টের জন্য সহনশীল ফ্লাইট কন্ট্রোল সিস্টেম "


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

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

4

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

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

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

কেবল পরীক্ষা করা কোনও আনুষ্ঠানিক পদ্ধতির পদ্ধতি নয়, এটি করা নির্ভরযোগ্যতার উন্নতি করে তবে সঠিকতা পরীক্ষা করে না।


3

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

কিছু টুলস (z, বি, VHDL এবং Estelle) চেষ্টা করার পরে কোয়েস্ট এই মুহুর্তে, আমি ব্যবহার করছি Tla + + । এটি মডেল চেকিং এবং মেকানিক প্রমাণের জন্য সফ্টওয়্যার সরঞ্জামগুলি সহ অস্থায়ী যুক্তির বৈকল্পিক। আমি মনে করি যে আমি এই পদ্ধতিটি বেছে নিয়েছি কারণ এল। ল্যাম্পোর্ট এর পিছনে ছিল, বাক্য গঠনটি ছিল সহজ, প্রচুর উদাহরণ ছিল, একটি সম্প্রদায় ছিল যার যত্ন নিচ্ছিল এবং ভাষা এবং সরঞ্জামগুলি মোটামুটিভাবে নথিভুক্ত ছিল।

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

সংক্ষেপে, আমি মনে করি যে নিম্নলিখিত রূপকটি (ল্যাম্পোর্ট থেকে) সত্যই শক্তিশালী: "আপনি কী নীলনকশা থেকে স্বয়ংক্রিয়ভাবে কোনও বাড়ি তৈরির প্রত্যাশা করছেন? আপনি এখনও এমন কোনও বাড়ি কিনবেন যা এখনও নির্মিত হয়নি এবং এটিতে নীলনকশা নেই?" ।

এই অনুসন্ধানের সময়, আমি নিম্নলিখিত সংস্থানগুলি দরকারী বলে মনে করেছি:

শুভকামনা!


1

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

মিশন সমালোচনা সফ্টওয়্যার তৈরি কিভাবে?

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

http://www.altdevblogaday.com/2011/12/24/static-code-analysis/


জাভা সহ উদাহরণস্বরূপ বাস্তবায়ন, ওপেন সোর্স অ্যাপাচি— ফাইন্ডব্যাগগুলি
vzn

0

মিশন সমালোচনামূলক সফ্টওয়্যার তৈরি করার সময় অ্যালগরিদমগুলি প্রমাণীকরণ কার্যকর হতে পারে।

একটি প্রত্যয়িত অ্যালগরিদম হ'ল একটি অ্যালগরিদম যা প্রতিটি আউটপুট সহ একটি প্রত্যয়-ক্যাট বা সাক্ষী (সহজেই যাচাই করার প্রমাণ) দেয় যে নির্দিষ্ট আউটপুট কোনও বাগ দ্বারা আপোস করা হয়নি।

এই সমীক্ষার কাগজে আরও পড়ুন ম্যাককনেল, আরএম এবং মেহলহর্ন, কে। এবং নাহার, এস এবং শোয়েইজার, পি।


1998 সালে, পুনুয়ালি, সিগেল এবং সিঙ্গারম্যান অনুবাদ ধারণা যাচাইকরণ নামটি অনুসারে এই ধারণাটি সংকলকদের ক্ষেত্রে প্রযোজ্য বলে বর্ণনা করেছিলেন সংকলকগুলি সহজাতভাবে উচ্চতর অর্ডার হয় (ইনপুট একটি প্রোগ্রাম, আউটপুট একটি প্রোগ্রাম), তাই তাদের যাচাই করা শক্ত হয়। তবে এক্স। লিরয়ের মতো পাগল ব্যক্তিরা যারা যাইহোক যাচাই করা সংকলক বিকাশ করে। (সেরা সম্ভাব্য অর্থে ক্রেজি!)
রাদু GRIGore

-2

তবে কীভাবে যাচাই করবেন যে সফ্টওয়্যারটি (কেবলমাত্র স্পেসিফিকেশন নয়) সত্যই সঠিক?

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

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


5
যে কোনও যুক্তিসঙ্গত জটিল প্রোগ্রামের জন্য, কোড কভারেজ (পরীক্ষা করে) সঠিকতা নিশ্চিত করতে পারে না। আপনাকে সম্ভাব্য সকল ফাঁসি কার্যকর করতে হবে; কোডের সমস্ত লাইনই যথেষ্ট নয়
রাদু গ্রেগোর

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

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

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

1
@ ভিজেএন: আমি কি বলেছি আপনি অন্যথায় বলেছেন? আমি কেবল ব্যাখ্যা করার চেষ্টা করছিলাম কেন আমি বিশ্বাস করি যে অন্যরা এই উত্তরটিকে সমর্থন করে না। এই মুহুর্তে আমি এই প্রশ্নের উত্তর দিতে পারি না, কারণ আমি এটি বুঝতে পারি না।
রাদু গ্রেগোর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.