ဆော့ဖ်ဝဲဖွံ့ဖြိုးတိုးတက်မှု၏ရှုခင်း၏ရှုခင်းတွင်, ဆော့ဖ်ဝဲစနစ်များကိုအရည်အသွေး, Software Testability ကိုလွှမ်းမိုးသောအချက်များအနက်, ကုလသမဂ္ဂကဖြန့်ဖြူးသူအနေဖြင့်စမ်းသပ်မှုလုပ်ငန်းစဉ်ကိုမြှင့်တင်ရန်သို့မဟုတ်အဟန့်အတားဖြစ်စေနိုင်သည်ကိုကိုယ်တိုင်ကိုယ်ကျသက်သေခံခဲ့သည်။ ဤဘလော့ဂ်ပို့စ်တွင်၎င်း၏အမျိုးမျိုးသောရှုထောင့်များနှင့်သက်ရောက်မှုများကိုစူးစမ်းလေ့လာခြင်း,
နားကပ်နားလည်ခြင်း
ဆော့ (ဖ်) ဝဲကိုစစ်ဆေးခြင်း၏သက်ရောက်မှု၏သက်ရောက်မှုကိုကျွန်ုပ်တို့ဆန်းစစ်နိုင်မီ, ဆော့ဖ်ဝဲအင်ဂျင်နီယာတွင်စဖြောက်ချက်သည်ဆော့ဖ်ဝဲ module များအကြားအပြန်အလှန်မှီခိုမှုအတိုင်းအတာကိုရည်ညွှန်းသည်။ မြင့်မားသောချုပ်ကိုင်မှုဟုဆိုလိုသည်မှာ Module တစ်ခုတွင်ပြောင်းလဲခြင်းသည်အခြား module များအပေါ်ပြောင်းလဲမှုများသည်အခြား module များအပေါ်အကျိုးသက်ရောက်နိုင်သည်။
အစွမ်းသတ္တိကိုလျော့နည်းစေနိုင်ရန်အတွက်အကြောင်းအရာနားချင်းဆက်မပင်, ပြင်ပနားချင်းချိတ်ဆက်ခြင်း, ထိန်းချုပ်ခြင်း, Module တစ်ခု၏အတွင်းပိုင်းအချက်အလက်များ၏အတွင်းပိုင်းဒေတာများကိုပြုပြင်သည့်အခါအကြောင်းအရာကိုထိန်းချုပ်ခြင်း, အခြားတစ်ရောင်စဉ်၏အခြားအဆုံးတွင်ဒေတာနားကြပ်သည်အနိမ့်ဆုံးပုံစံဖြစ်သည်။
ဆော့ဖ်ဝဲစမ်းသပ်မှုကိုမြင့်မားသောနားချင်းသက်ဆိုင်မှု၏ဆိုးကျိုးသက်ရောက်မှု
ချို့ယွင်းချက် isolating အတွက်အခက်အခဲ
မြင့်မားသော coupled software module များသည်တင်းကျပ်စွာယက်စ်ဝက်ဘ်နှင့်တူသည်။ ဆော့ (ဖ်) ဝဲတွင်ချွတ်ယွင်းချက်တစ်ခုဖွင့်လှစ်သည့်အခါအမြစ်အကြောင်းရင်းကိုခွဲထုတ်ရန်အလွန်ခက်ခဲသည်။ Module တစ်ခုအနေဖြင့်အခြား module များအပေါ်ဂယက်ထနိုင်သောသက်ရောက်မှုများရှိနိုင်သည့်ကတည်းက၎င်းသည်မည်သည့် module ကိုချို့ယွင်းချက်အတွက်အမှန်တကယ်တာဝန်ရှိကြောင်းဆုံးဖြတ်ရန်ခဲယဉ်းသည်။ ဥပမာအားဖြင့်တစ် ဦး module တစ်ခုလျှင်တစ်စီးမြင့်မားသော module နှင့်အတူ coupled ဖြစ်ပါတယ်ခနှင့်ဂbug တစ်ခုနှင့် bug တစ်ခုအလုံးစုံစနစ်တွင်တွေ့ရှိနိုင်ပါသည်, ကပြ issue နာတစ်ခုကြောင့်ဖြစ်နိုင်သည်တစ်စီး,ခသို့မဟုတ်ဂသို့မဟုတ်၎င်းတို့ကိုပေါင်းစပ်။ ဤသည် debugging ဖြစ်စဉ်ကိုအချိန်ပေးသည် - စားသုံးခြင်းနှင့်အမှားအယွင်းများကိုဖြစ်ပေါ်စေသည်။
တစ် ဦး ချင်းစီ module တွေ၏အကန့်အသတ်ရှိသည့်ပြန်လည်သုံးသပ်ခြင်းနှင့်စစ်ဆေးခြင်း
မြင့်မားသောထိန်းချုပ်မှုသည် module များ၏ reusability ကိုကန့်သတ်ထားသည်။ အခြား module များနှင့်တင်းတင်းကျပ်ကျပ်ချိတ်ဆက်ထားသော module တစ်ခုသည်ကွဲပြားခြားနားသောအခြေအနေများတွင်အလွယ်တကူပြန်လည်အသုံးပြုခြင်းမပြုနိုင်ပါ, စမ်းသပ်မှုရှုထောင့်မှကြည့်လျှင်တစ် ဦး ချင်း module များသည်အထီးကျန်တွင်စမ်းသပ်ခြင်းမပြုနိုင်ဟုဆိုလိုသည်။ အလွန်အမင်းထောက်မပေးထားသော module တစ်ခုကိုစမ်းသပ်ရန်၎င်း၏မှီခိုသော module များကိုလည်းရှုပ်ထွေးပြီးအရင်းအမြစ်တစ်ခုဖြစ်သောအထူးကြပ်မတ်သောအလုပ်ဖြစ်နိုင်သည့်မှီခိုသော module များကိုလည်းတပ်ဆင်ပြီးစမ်းသပ်ရမည်။ ဥပမာအားဖြင့်, တစ် ဦး module တစ်ခုသည်ဒေတာဘေ့စ် schema (coupling ပုံစံ) နှင့်အထူးသဖြင့်အလုပ်လုပ်ရန်ဒီဇိုင်းပြုလုပ်ထားလျှင်၎င်းကိုတိကျသောဒေတာဘေ့စ်ကိုလက်လှမ်းမီခြင်းမရှိဘဲအလွယ်တကူစစ်ဆေးနိုင်မည်မဟုတ်ပါ။
တိုးမြှင့်စမ်းသပ်မှုရှုပ်ထွေး
ဆော့ဖ်ဝဲ module များသည်အလွန်အမင်းမွေစ်ဖြစ်သည့်အခါစမ်းသပ်မှုကိစ္စရပ်များသည်ပိုမိုရှုပ်ထွေးလာသည်။ စမ်းသပ်သူများသည်စာမေးပွဲမျိုးစုံအကြားအပြန်အလှန်ဆက်သွယ်မှုများကိုစဉ်းစားရန်လိုအပ်သည်။ ဥပမာသုံး module တွေရှိရင်x,yနှင့်z၎င်းသည်အလွန်အမင်းချုပ်ကိုင်ထားပြီး, module တစ်ခုစီတွင်ဖြစ်နိုင်ချေရှိသောပြည်နယ်များနှင့်စမ်းသပ်ရန်လိုအပ်သည့်ပြည်နယ်များနှင့်အပြန်အလှန်ဆက်သွယ်မှုအရေအတွက်တိုးလာသည်။ ၎င်းသည်စမ်းသပ်ဒီဇိုင်းလုပ်ငန်းစဉ်ကိုပိုမိုခက်ခဲစေရုံသာမကစမ်းသပ်ခြင်းအတွက်လိုအပ်သောအချိန်နှင့်အားထုတ်မှုများကိုလည်းတိုးပွားစေသည်။

ဆော့ဖ်ဝဲစမ်းသပ်မှုအပေါ်အနိမ့်နားချင်းသက်ဆိုင်မှု၏အပြုသဘောသက်ရောက်မှု
ပိုမိုလွယ်ကူဖယ်ရှားခြင်း
အနိမ့် - coupled module များသည်လွတ်လပ်သောအဆောက်အအုံများနှင့်တူသည်။ ချွတ်ယွင်းချက်တစ်ခုကိုရှာဖွေတွေ့ရှိသောအခါအရင်းအမြစ်ကိုရှာဖွေရန်ပိုမိုလွယ်ကူသည်။ Module တစ်ခုချင်းစီသည်အခြား module များအပေါ်အနည်းဆုံးမှီခိုမှုရှိသည့်အတွက်စုံစမ်းစစ်ဆေးမှုအတိုင်းအတာအကန့်အသတ်ရှိသည်။ ဥပမာအားဖြင့်တစ် ဦး module တစ်ခုလျှင်မီတာအခြား module များနှင့်အတူအနိမ့်နားကပ်နှိမ့်ချခြင်းနှင့် bug တစ်ခု၏လုပ်ဆောင်နိုင်စွမ်းအတွင်းရှိ bug ကိုတွေ့ရှိရသည်မီတာပြ the နာအတွင်းရှိပြ problem နာသည်ဖြစ်နိုင်သည်မီတာသူ့ဟာသူနှင့်စမ်းသပ်ခြင်းကြိုးပမ်းအားထုတ်မှုများကိုထိုတစ်ခုတည်းသော module ကိုအာရုံစိုက်နိုင်သည်။
တစ် ဦး ချင်းစီ၏ modulees ၏ reusability နှင့်စမ်းသပ်တိုးမြှင့်
အနိမ့် - coupled module များသည်အလွန်အမင်းပြန်လည်အသုံးပြုနိုင်သည်။ ၎င်းတို့ကိုမတူညီသော software စနစ်များနှင့်အလွယ်တကူပေါင်းစည်းနိုင်သည်သို့မဟုတ်အခြား module များအပေါ်တိကျသောအကောင်အထည်ဖော်မှုအပေါ်မှီခိုအားထားခြင်းမရှိသောကြောင့်စနစ်တကျကွဲပြားခြားနားသောအစိတ်အပိုင်းများတွင်အသုံးပြုနိုင်သည်။ ၎င်းသည်သူတို့ကိုအထီးကျန်ခြင်းဖြင့်စမ်းသပ်ရန်ပိုမိုလွယ်ကူစေသည်။ ယူနစ်စစ်ဆေးခြင်းသည်စမ်းသပ်သူများသည်၎င်း၏မှီခိုမှု၏အပြုအမူကိုစိတ်ပူစရာမလိုဘဲ module တစ်ခုတည်း၏လုပ်ဆောင်နိုင်စွမ်းကိုအာရုံစိုက်နိုင်သဖြင့်ပိုမိုထိရောက်လာသည်။ ဥပမာအားဖြင့်, နားကြပ်အနိမ့်နှင့်အတူဒေတာ - အပြောင်းအလဲနဲ့ module တစ်ခုမှာစမ်းသပ်ခြင်းလုပ်ငန်းစဉ်ကိုရိုးရှင်းအောင်လုပ်ဖော်ကိုင်ဖက် Mock Data Readical Moet Data Readsions ဖြင့်စမ်းသပ်နိုင်သည်။
လျှော့ချစမ်းသပ်မှုရှုပ်ထွေး
နားမြုပ်နေဖြင့်စမ်းသပ်မှုနံပါတ်သည်သိသိသာသာလျော့နည်းသွားသည်။ module များသည်တစ် ဦး နှင့်တစ် ဦး အပြန်အလှန်ကြိုတင်ခန့်မှန်းနိုင်သည့်နည်းဖြင့်တစ် ဦး နှင့်တစ် ဦး အပြန်အလှန်ဆက်သွယ်ကြသဖြင့်စာမေးပွဲများသည်ပြည်နယ်များနှင့်အပြန်အလှန်ဆက်သွယ်မှုများကိုပေါင်းစပ်ခြင်းများကိုစဉ်းစားစရာမလိုပါ။ ၎င်းသည်စမ်းသပ်ဒီဇိုင်းပြုလုပ်ရေးကိုပိုမိုရိုးရှင်းစေရန်နှင့်စမ်းသပ်မှုကိစ္စများကိုပိုမိုမြန်ဆန်စွာပြုလုပ်နိုင်သည်။ ဥပမာအားဖြင့်, module နှစ်ခုသည်ရိုးရှင်းသောအချက်အလက်များကိုသာဖလှယ်ခြင်းနှင့်သာလျှင်ရိုးရှင်းသောအချက်အလက်များကိုသာဖလှယ်လျှင်စမ်းသပ်မှုအမှုများသည်ရှုပ်ထွေးသော module intacate များထက်မှန်ကန်သောအချက်အလက်လွှဲပြောင်းခြင်းနှင့်ပြုပြင်ခြင်းများကိုအာရုံစိုက်ရန်ဒီဇိုင်းပြုလုပ်နိုင်သည်။
အစစ်အမှန် - ကမ္ဘာ့အကောင်းဆုံးဥပမာများနှင့်စမ်းသပ်ခြင်း၏ဥပမာများ
အင်ဂျင်နီယာစက်ယန္တရားအစိတ်အပိုင်းများအတွက်ဆော့ဖ်ဝဲစနစ်၏အခြေအနေတွင်တကယ့်ကမ္ဘာပုံသက်သေကိုစဉ်းစားကြည့်ရအောင်။ စနစ်သည်ထိုကဲ့သို့သောကဲ့သို့သောကွဲပြားသောအစိတ်အပိုင်းများကိုစီမံခန့်ခွဲရန် module များရှိသည်ဆိုပါစို့သော့ခတ်လက်ကိုင်,ကြီးမားသောခြံနှင့်core ကိုသော့ခတ်။
ဥပမာအားဖြင့် module များသည်အလွန်အမင်းချုပ်ကိုင်ထားလျှင်, သော့ခတ်လက်ကိုင်ကိုစီမံခန့်ခွဲရန် module သည်ကြီးမားသောခြံ module ၏အတွင်းပိုင်းပြည်နယ်နှင့်လုပ်ဆောင်ချက်များကိုမူတည်သည်။ ကြီးမားသောခြံ module တွင်မည်သည့်ပြောင်းလဲမှုသည်သော့ခတ်လက်ကိုင် module ကိုချိုးဖျက်နိုင်ပြီးအပြောင်းအလဲတစ်ခုဖြစ်သည့်အခါတိုင်းအပြောင်းအလဲများပြုလုပ်သောအခါစနစ်တစ်ခုလုံးကိုစစ်ဆေးရန်လိုအပ်သည်။
အခြားတစ်ဖက်တွင်, module များနိမ့်လျှင်, သော့ခတ်လက်ကိုင် module တစ်ခုသာအခြေခံဒေတာကိုကြီးမားသောခြံ module တစ်ခုနှင့်အတူအခြေခံဒေတာကိုလဲလှယ်ခြင်း, စဉ်းစားတွေးခေါ်တစ်ခုစီကိုသုံးနိုင်သည်။ သူတို့သည်စမ်းသပ်ခြင်းလုပ်ငန်းစဉ်ကိုရိုးရှင်းလွယ်ကူစေရန်နှင့်ပိုမိုထိရောက်သော module များအကြားအပြန်အလှန်ဆက်သွယ်မှုကိုတုပရန် Mock ဒေတာများကိုအသုံးပြုနိုင်သည်။
ပိုမိုကောင်းမွန်သောစမ်းသပ်မှုကိုထိန်းသိမ်းရန်အထောက်အကူပြုရန်မဟာဗျူဟာများ
ဖြန့်ဖြူးသောကုန်ပစ္စည်းပေးသွင်းသူအနေဖြင့်,
အနိမ့်နားချင်းချိတ်ဆက်ဘို့ဒီဇိုင်း
Software Design Phase တွင် developer များအနေဖြင့်နားမလည်နိုင်သော module များကိုဖန်တီးရန်ရည်ရွယ်သင့်သည်။ ဤအချက်ကိုဒီဇိုင်းရေးဆွဲခြင်းကဲ့သို့သောဒီဇိုင်းများကိုအောက်ပါအတိုင်းပြုလုပ်နိုင်သည်။ Module များအကြားမှီခိုမှုများနှင့်အငြင်းပွားမှုများကိုခွဲထုတ်ခြင်းနှင့်အနည်းဆုံး module များကိုခွဲထုတ်ခြင်းအားဖြင့်ဆော့ (ဖ်) ဝဲသည် Modular နှင့်စမ်းသပ်ရန်ပိုမိုလွယ်ကူလာသည်။
interfaces နှင့် abstraction ကိုအသုံးပြုခြင်း
module များအကြားနားချင်းဆက်မှီမှုကိုလျှော့ချရန် interfaces နှင့် abstraction များကိုအသုံးပြုနိုင်သည်။ အခြား module များအကောင်အထည်ဖော်မှုအပေါ်တိုက်ရိုက်မှီခိုမှုများရှိမည့်အစား, module တစ်ခုသည် interface ပေါ်တွင်မူတည်သည်။ ၎င်းသည်ပိုမိုပြောင်းလွယ်ပြင်လွယ်ရှိရန်ခွင့်ပြုထားပြီးစမ်းသပ်စဉ်အတွင်းအကောင်အထည်ဖော်မှုကိုရှောင်ရှားရန်ပိုမိုလွယ်ကူစေသည်။ ဥပမာအားဖြင့်အချက်အလက်များကိုရယူရန်လိုအပ်သည့် module တစ်ခုသည်ဒေတာ Access interface ပေါ်တွင်မူတည်သည်။
မှီခိုဆေးထိုး
မှီခိုမှုထိုးသွင်းဆေးထိုးခြင်းသည် module များအကြားမှီခိုမှုများကိုစီမံရန်အသုံးပြုနိုင်သည့်နည်းစနစ်တစ်ခုဖြစ်သည်။ ၎င်း၏ကိုယ်ပိုင်မှီခိုဖန်တီးခြင်းအတွက် module တစ်ခုအစားမှီခိုနေရသည်။ ၎င်းသည်စမ်းသပ်နေစဉ်အတွင်းမှီခိုမှုကိုထိန်းချုပ်ရန်နှင့်ဆော့ဖ်ဝဲ၏ဒီဇိုင်းတွင်ပိုမိုပြောင်းလွယ်ပြင်လွယ်ရှိရန်လွယ်ကူစေသည်။ ဥပမာအားဖြင့်, ဒေတာဘေ့စ်ဆက်သွယ်မှုအပေါ် မူတည်. module တစ်ခုသည်၎င်းကိုထည့်သွင်းထားသောဆက်သွယ်မှုအရာဝတ်ထုကိုစမ်းသပ်ရန်အတွက် 0 င်ရောက်ခြင်းကိုသုံးနိုင်သည်။
ကောက်ချက်
coupling ဆော့ဖ်ဝဲစမ်းသပ်မှုကိုအပေါ်အကြီးအကျယ်သက်ရောက်မှုရှိပါတယ်။ ချုပ်ကိုင်မှုသည်စမ်းသပ်ခြင်းလုပ်ငန်းစဉ်ကိုခက်ခဲစေနိုင်သည်, အချိန် - စားသုံးခြင်းနှင့်အမှားများကိုဖြစ်ပေါ်စေနိုင်သည်။ ဖြန့်ဖြူးသောကုန်ပစ္စည်းပေးသွင်းသူအနေဖြင့်ဆော့ဖ်ဝဲလ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ချုပ်ကိုင်ခြင်း၏အရေးကြီးမှုကိုကျွန်ုပ်နားလည်ပါသည်။ အနိမ့်ထိန်းချုပ်မှုနှင့် abstraction ကိုအသုံးပြုခြင်းကဲ့သို့သောမဟာဗျူဟာများကိုအကောင်အထည်ဖော်ခြင်းအားဖြင့်,
အကယ်. သင်သည်ဆော့ (ဖ်) ဝဲတီထွင်မှုလုပ်ငန်းစဉ်တွင်ရှိနေသည်ဆိုပါကပိုမိုကောင်းမွန်သောစီမံခန့်ခွဲမှုမှတစ်ဆင့်၎င်း၏စမ်းသပ်မှုကိုတိုးတက်စေရန်နည်းလမ်းများကိုရှာဖွေနေသည်ဆိုပါစို့။ သင်၏လိုအပ်ချက်များနှင့်သင်၏ဆော့ဖ်ဝဲဖွံ့ဖြိုးတိုးတက်မှုရည်မှန်းချက်များအောင်မြင်ရန်ကျွန်ုပ်တို့၏ covering solution များသည်သင့်အားဖြည့်ဆည်းပေးသည့်အဖြေများကမည်သို့ကူညီနိုင်မည်ကိုကျွန်ုပ်တို့ပိုမိုဆွေးနွေးနိုင်သည့်ဆွေးနွေးမှုများပြုလုပ်နိုင်သည်။
ကိုးကားခြင်း
- Sommerville, I. (2015) ။ ဆော့ဖ်ဝဲအင်ဂျင်နီယာ။ Pearson ။
- RS (2010) Pressman ။ ဆော့ဖ်ဝဲအင်ဂျင်နီယာ - Practitioner ရဲ့ချဉ်းကပ်မှု။ McGraw - Hill ။
- Gamma, E. , Helf, R. , Johnson, Johnson, R. , R. , Vlississes, J. (1994) ။ ဒီဇိုင်းပုံစံများ - ပြန်လည်သုံးသပ်နိုင်သောအရာဝတ်ထု၏ eleiented software ကို - Oriented Software ။ Addison - Wesley ။
