প্রোগ্রাম করতে না প্রোগ্রাম করতে?
একটি সফটওয়্যার পণ্যের সঙ্গে একটি সমস্যা সমাধানের জন্য, প্রয়োজনীয়তা একটি বোঝার পরে, আপনি পারেন উভয় একটি প্রোগ্রাম প্রোগ্রামিং ভাষার ব্যবহার লিখতে বা একটি আনুষ্ঠানিক ভাষা ও ব্যবহার কোড প্রজন্ম সরঞ্জাম ব্যবহার প্রোগ্রাম উল্লেখ করুন। পরেরটি কেবল বিমূর্ততার স্তর যোগ করে।
জিনিসগুলি সঠিকভাবে করা বা সঠিক জিনিসগুলি করা?
আনুষ্ঠানিক পদ্ধতির সাহায্যে আপনাকে একটি প্রমাণ দেয় যে আপনার সফ্টওয়্যার স্পেসিফিকেশন অনুযায়ী কাজ করে। সুতরাং আপনার পণ্য জিনিস সঠিকভাবে না। তবে এটি কি সঠিক কাজ করে?
আপনি যে প্রয়োজনীয়তার উপর কাজ করছেন তা অসম্পূর্ণ বা অস্পষ্ট হতে পারে। তারা এমনকি বগি হতে পারে। সবচেয়ে খারাপ ক্ষেত্রে, আসল চাহিদা এমনকি প্রকাশ করা হয় না। তবে একটি চিত্র হাজার হাজার শব্দের, কেবল "গ্রাহক কী চান" এর জন্য গুগল চিত্রগুলির উদাহরণস্বরূপ, এই নিবন্ধ থেকে :
আনুষ্ঠানিকতা ব্যয়
একটি নিখুঁত বিশ্বে আপনার প্রথম থেকেই সম্পূর্ণ বিশদ এবং নিখুঁত প্রয়োজনীয়তা থাকবে। এরপরে আপনি আপনার সফ্টওয়্যারটি সম্পূর্ণরূপে নির্দিষ্ট করতে পারেন। আপনি যদি আনুষ্ঠানিকভাবে যেতে চান তবে আপনার কোডটি স্বয়ংক্রিয়ভাবে উত্পন্ন হবে যাতে আপনি আরও উত্পাদনশীল হন। উত্পাদনশীলতা লাভগুলি আনুষ্ঠানিক সরঞ্জামগুলির ব্যয়কে অফসেট করে। এবং প্রত্যেকে এখন আনুষ্ঠানিক পদ্ধতি ব্যবহার করবে। তাহলে কেন হয় না?
বাস্তবে বাস্তবে এটাই কদাচিৎ! এ কারণেই এতগুলি জলপ্রপাতের প্রকল্প ব্যর্থ হয়েছে এবং পুনরাবৃত্তির বিকাশের পদ্ধতিগুলি (চতুর, আরএডি, ইত্যাদি) কেন নেতৃত্ব নিয়েছিল: তারা অসম্পূর্ণ এবং অসম্পূর্ণ প্রয়োজনীয়তা, নকশা এবং বাস্তবায়ন পরিচালনা করতে পারে এবং ঠিক না হওয়া পর্যন্ত এগুলিকে পরিমার্জন করতে পারে।
এবং এখানে পয়েন্ট আসে। আনুষ্ঠানিক পদ্ধতি সহ, প্রতিটি পুনরাবৃত্তির একটি সম্পূর্ণ সুসংগত আনুষ্ঠানিক বৈশিষ্ট থাকতে হবে। এর জন্য যত্ন সহকারে চিন্তাভাবনা এবং অতিরিক্ত কাজ প্রয়োজন, কারণ আনুষ্ঠানিক যুক্তি ক্ষমা করে না এবং অসম্পূর্ণ চিন্তা পছন্দ করে না। সরল নিক্ষেপ-সংক্রান্ত পরীক্ষাগুলি এই সীমাবদ্ধতার অধীনে ব্যয়বহুল হয়ে ওঠে। এবং তাই প্রতিটি পুনরাবৃত্তি যা ব্যাকট্র্যাকিংয়ের দিকে পরিচালিত করে (যেমন একটি ধারণা যা কাজ করে না, বা এমন কোনও প্রয়োজন যা ভুল বোঝানো হয়েছিল)।
প্রস্তুতিতে
আইনী বা চুক্তিভিত্তিক কারণে আনুষ্ঠানিক পদ্ধতি ব্যবহার করতে বাধ্য না হলে, আপনি আনুষ্ঠানিক ব্যবস্থা ছাড়াই খুব উচ্চমান অর্জন করতে পারেন, উদাহরণস্বরূপ চুক্তি ভিত্তিক প্রোগ্রামিং এবং অন্যান্য ভাল অভ্যাসগুলি ব্যবহার করে (যেমন কোড পর্যালোচনা, টিডিডি ইত্যাদি)) আপনি আপনার সফ্টওয়্যারটি কাজ করে তা প্রমাণ করতে সক্ষম হবেন না, তবে আপনার ব্যবহারকারীরা শীঘ্রই কাজের সফ্টওয়্যারটি উপভোগ করবেন।
আপডেট: পরিমাপ প্রচেষ্টা
এসিএমের যোগাযোগের অক্টোবর 2018 ইস্যুতে প্রচেষ্টার কিছু অনুমান সহ বাস্তব বিশ্বে ফর্মালালি যাচাই করা সফ্টওয়্যার সম্পর্কে একটি আকর্ষণীয় নিবন্ধ রয়েছে ।
মজার বিষয় (সামরিক সরঞ্জামের জন্য ওএস বিকাশের উপর ভিত্তি করে), মনে হচ্ছে আনুষ্ঠানিকভাবে প্রমাণিত সফ্টওয়্যার উত্পাদন করতে traditionalতিহ্যবাহী ইঞ্জিনিয়ারিং কৌশলগুলির চেয়ে 3.3 গুণ বেশি প্রচেষ্টা প্রয়োজন । সুতরাং এটি সত্যিই ব্যয়বহুল।
অন্যদিকে, যদি আপনি উচ্চতর সুরক্ষা স্তরে (EAL 7) এ জাতীয় সফ্টওয়্যারকে প্রত্যয়িত করার প্রচেষ্টা যোগ করেন তবে traditionতিহ্যগতভাবে ইঞ্জিনিয়ারড সফ্টওয়্যারগুলির চেয়ে এইভাবে উচ্চ সুরক্ষা সফ্টওয়্যার পেতে 2.3 গুণ কম প্রচেষ্টা দরকার requires সুতরাং আপনার যদি উচ্চ নির্ভরযোগ্যতা বা সুরক্ষা প্রয়োজনীয়তা থাকে তবে আনুষ্ঠানিকভাবে যাওয়ার জন্য অবশ্যই একটি ব্যবসায়িক কেস রয়েছে।
SEL4 ডিজাইন এবং কোড বিকাশ দুটি ব্যক্তি-বছর সময় নিয়েছে। বছরের পর বছর ধরে সমস্ত সেরোস্পেসিফিক প্রমাণ যুক্ত করা সি কোডের 8,700 লাইনের জন্য মোট 18 ব্যক্তি-বছর আসে। তুলনায়, এল 4 কেএ :: পিস্তাদিও, এল 4 পরিবারের আরেকটি মাইক্রোকার্নেল, আকারে তুলনীয়ভাবে এসএল 4, বিকাশে ছয় ব্যক্তি-বছর সময় নিয়েছে এবং কোনও উল্লেখযোগ্য স্তরের আশ্বাস দেয় না। এর অর্থ যাচাই করা সফ্টওয়্যার এবং traditionতিহ্যগতভাবে ইঞ্জিনিয়ারড সফ্টওয়্যার মধ্যে কেবলমাত্র 3.3 ফ্যাক্টর রয়েছে। কলবার্ট এবং বোহেমের অনুমান পদ্ধতি অনুসারে, 8 টি ,,০০০ লাইনের সি কোডের জন্য একটি traditionalতিহ্যবাহী প্রচলিত সাধারণ মাপদণ্ড EAL7 শংসাপত্রটি 45.9 ব্যক্তির-বয়সের বেশি সময় নিতে পারে। তার মানে আনুষ্ঠানিক বাইনারি-স্তরের বাস্তবায়ন যাচাইকরণ ইতিমধ্যে ২.৩ এর ফ্যাক্টরের চেয়ে বেশি সাধারণ মানদণ্ডের সর্বোচ্চ শংসাপত্র স্তরের চেয়ে কম ব্যয়বহুল এখনও উল্লেখযোগ্যভাবে দৃ stronger় নিশ্চয়তা প্রদান করে।