জোর দেওয়া বাস্তবতা টিকে না
সাধারণত দাবিগুলি বাস্তব বিশ্বের ডেটার সাথে যোগাযোগকে টিকিয়ে রাখে না। আপনি কোন ডেটা নিয়ে ডিল করতে চান এবং কোনটি সুযোগের বাইরে রয়েছে তা নির্ধারণ করা সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের প্রক্রিয়ার অংশ।
চক্রীয় পরিবারের গ্রাফ
পরিবার "গাছ" সম্পর্কিত (বাস্তবে এটি চক্র সহ পুরো অঙ্কিত গ্রাফ), একটি সুন্দর উপাখ্যান রয়েছে:
আমি একটি বিধবা বিবাহিত যার একটি বড় মেয়ে ছিল। আমার বাবা, যিনি প্রায়শই আমাদের দেখতে যেতেন, আমার সৎ-কন্যার প্রেমে পড়েছিলেন এবং তাকে বিয়ে করেছিলেন। ফলস্বরূপ, আমার বাবা আমার পুত্র হন, এবং আমার কন্যা আমার মা হন। কিছু সময় পরে, আমি আমার স্ত্রীকে একটি ছেলে দিয়েছিলাম, যে আমার বাবার ভাই এবং আমার মামার ভাই। আমার বাবার স্ত্রী (তিনিও আমার মেয়ে এবং আমার মা) একটি ছেলে পেয়েছিলেন got ফলস্বরূপ, আমি একই ব্যক্তি একটি ভাই এবং একটি নাতি পেয়েছিলাম। আমার স্ত্রী এখন আমার নানী, কারণ তিনি আমার মায়ের মা। সুতরাং আমি আমার স্ত্রীর স্বামী এবং একই সাথে আমার স্ত্রীর ধনতন্ত্র। অন্য কথায়, আমি আমার নিজের দাদা।
জিনিসগুলি আরও অদ্ভুত হয়ে ওঠে , যখন আপনি সার্গেটস বা "ফাজি পিতৃত্ব" কে বিবেচনা করেন।
কীভাবে মোকাবেলা করতে হয়
চক্রকে বহির্মুখী হিসাবে সংজ্ঞায়িত করুন
আপনি সিদ্ধান্ত নিতে পারেন যে আপনার সফ্টওয়্যারটি এ জাতীয় বিরল ক্ষেত্রে মোকাবেলা করা উচিত নয়। যদি এরকম কেস দেখা দেয় তবে ব্যবহারকারীর একটি আলাদা পণ্য ব্যবহার করা উচিত। এটি আরও সাধারণ ক্ষেত্রে আরও দৃust়তার সাথে মোকাবেলা করে, কারণ আপনি আরও দৃser়তা এবং একটি সহজ ডেটা মডেল রাখতে পারেন।
এই ক্ষেত্রে, আপনার সফ্টওয়্যারটিতে কিছু ভাল আমদানি এবং রফতানি বৈশিষ্ট্য যুক্ত করুন, যাতে ব্যবহারকারী প্রয়োজনে সহজেই একটি অন্য পণ্যতে স্থানান্তর করতে পারেন।
ম্যানুয়াল সম্পর্কের অনুমতি দিন
আপনি ব্যবহারকারীকে ম্যানুয়াল সম্পর্ক যুক্ত করার অনুমতি দিতে পারেন। এই সম্পর্কগুলি "প্রথম শ্রেণির নাগরিক" নয়, অর্থাৎ সফ্টওয়্যারগুলি সেগুলি যেমন হয় তেমন গ্রহণ করে, তাদের পরীক্ষা করে না এবং মূল ডেটা মডেলটিতে তাদের পরিচালনা করে না।
তারপরে ব্যবহারকারীরা বিরল কেসগুলি হাত দ্বারা পরিচালনা করতে পারেন। আপনার ডেটা মডেলটি এখনও বেশ সহজ থাকবে এবং আপনার দৃser়তাগুলি টিকে থাকবে।
ম্যানুয়াল সম্পর্কের বিষয়ে সাবধানতা অবলম্বন করুন। এগুলিকে সম্পূর্ণরূপে কনফিগারযোগ্য করে তোলা এবং তাই সম্পূর্ণরূপে কনফিগারযোগ্য ডেটা মডেল তৈরি করার লোভ রয়েছে। এটি কাজ করবে না: আপনার সফ্টওয়্যারটি স্কেল করবে না, আপনি অদ্ভুত বাগ পাবেন এবং শেষ পর্যন্ত ব্যবহারকারীর ইন্টারফেসটি অকেজো হয়ে যাবে। এই অ্যান্টি-প্যাটার্নটিকে "সফট কোডিং" বলা হয় এবং "দৈনিক ডাব্লুটিএফ" এর জন্য উদাহরণগুলিতে পূর্ণ।
আপনার ডেটা মডেলটিকে আরও নমনীয় করুন, জোর ছাড়ুন, পরীক্ষার আক্রমণকারী arian
শেষ অবলম্বনটি আপনার ডেটা মডেলটিকে আরও নমনীয় করে তুলবে। আপনাকে প্রায় সমস্ত দাবি ছেড়ে যেতে হবে এবং আপনার ডেটা মডেলটি একটি সম্পূর্ণ ফুটিয়ে তোলা গ্রাফের উপর ভিত্তি করে করতে হবে। উপরের উদাহরণটি দেখায় যে, আপনার নিজের দাদা হওয়া সহজেই সম্ভব, তাই আপনি চক্রও রাখতে পারেন।
এক্ষেত্রে আপনার সফ্টওয়্যারটি আপনার ব্যাপকভাবে পরীক্ষা করা উচিত। আপনাকে প্রায় সমস্ত দাবি বাদ দিতে হয়েছিল, তাই অতিরিক্ত বাগের জন্য খুব ভাল সুযোগ রয়েছে।
অস্বাভাবিক পরীক্ষার কেসগুলি পরীক্ষা করতে একটি পরীক্ষার ডেটা জেনারেটর ব্যবহার করুন। হাস্কেল , এরলং বা সি এর জন্য দ্রুত চেক গ্রন্থাগার রয়েছে । জাভা / Scala জন্য আছে ScalaCheck এবং ন্যায় । একটি পরীক্ষার ধারণাটি একটি এলোমেলো জনসংখ্যার অনুকরণ করা হবে, এলোমেলোভাবে এটিকে প্রজনন করতে দিন, তারপরে আপনার সফ্টওয়্যারটিকে প্রথমে আমদানি করুন এবং তারপরে ফলাফলটি রফতানি করুন। প্রত্যাশাটি হ'ল, আউটপুটে সমস্ত সংযোগগুলি ইনপুট এবং ভাইস শ্লোকেও রয়েছে।
একটি মামলা, যেখানে সম্পত্তি একই থাকে stay তাকে আক্রমণকারী বলা হয়। এই ক্ষেত্রে, আক্রমণকারী হ'ল নকল জনগোষ্ঠীর ব্যক্তিদের মধ্যে "রোমান্টিক সম্পর্কের" সেট। যতটা সম্ভব আক্রমণের সন্ধান করার চেষ্টা করুন এবং এলোমেলোভাবে উত্পন্ন ডেটা দিয়ে তাদের পরীক্ষা করুন। আক্রমণকারীরা কার্যকরী হতে পারে, যেমন:
- আপনি আরও "রোমান্টিক সম্পর্ক" যুক্ত করলেও একটি চাচা চাচা থাকেন
- প্রত্যেক সন্তানের বাবা-মা থাকে has
- দুই প্রজন্মের জনসংখ্যার কমপক্ষে একজন গ্র্যান্ড-প্যারেন্ট থাকে
বা এগুলি প্রযুক্তিগত হতে পারে:
- আপনার সফ্টওয়্যারটি 10 বিলিয়ন সদস্যের গ্রাফে ক্রাশ হবে না (যতগুলি আন্তঃসংযোগই হোক না কেন)
- আপনার সফটওয়্যার ও (ও নোডের সংখ্যা) এবং হে (প্রান্তের সংখ্যা (2) এর সাথে স্কেল করে
- আপনার সফ্টওয়্যারটি 10 বিলিয়ন সদস্যের প্রতিটি পরিবারের গ্রাফ সংরক্ষণ এবং পুনরায় লোড করতে পারে
সিমুলেটেড পরীক্ষা চালিয়ে, আপনি প্রচুর অদ্ভুত কোণার কেস পাবেন। সেগুলি ঠিক করতে অনেক সময় লাগবে। এছাড়াও আপনি প্রচুর অপ্টিমাইজেশন হারাবেন, আপনার সফ্টওয়্যারটি অনেক ধীর গতিতে চলবে। আপনাকে সিদ্ধান্ত নিতে হবে, যদি এটির মূল্য হয় এবং এটি যদি আপনার সফ্টওয়্যারটির আওতায় থাকে।