Design Representations (ဒီဇိုင်းကို ဖော်ပြတဲ့ နည်းလမ်းများ)

ဘယ်မှာ အသုံးဝင်လဲ: code မရေးခင် ဖြေရှင်းချက်ကို ဒီဇိုင်းဆွဲတဲ့အခါ အသုံးဝင်ပါတယ်။ IB Computer Science (နိုင်ငံတကာ ကျောင်းတွေမှာ သင်တဲ့ ကွန်ပျူတာသိပ္ပံ သင်ရိုး) ရဲ့ Internal Assessment (IA၊ IB သင်တန်းမှာ ကျောင်းသားတစ်ယောက်ချင်း ကိုယ်တိုင် တည်ဆောက်ရပြီး ကျောင်းက ဆရာက အမှတ်ပေးတဲ့ အပိုင်း) မှာ Criterion B: Planning (အမှတ်ပေး စံနှုန်း B: စီမံကိန်း ရေးဆွဲခြင်း) က ပြဿနာရဲ့ decomposition (ပြဿနာကို အပိုင်းငယ်တွေ ခွဲခြင်း) ကို တောင်းပါတယ်။ အဲဒါကို diagram (ပုံ) တစ်ခုအဖြစ် ဆွဲပြလို့ ရပါတယ်။ Criterion C: System overview (အမှတ်ပေး စံနှုန်း C: စနစ်ရဲ့ ခြုံငုံ ဖော်ပြချက်) က system model (system ရဲ့ component (အစိတ်အပိုင်း) တွေနဲ့ အဲဒါတွေ ချိတ်ဆက်ပုံကို ပြတဲ့ ပုံတွေ၊ user interface (user နဲ့ program ကြားက မြင်ကွင်း) ရဲ့ ဒီဇိုင်းလည်း ပါပါတယ်) နဲ့ အဲဒီ component တွေအတွက် algorithm (အယ်လ်ဂိုရီသမ်၊ ပြဿနာကို အဆင့်ဆင့် ဖြေရှင်းတဲ့ နည်းလမ်း) တွေကို တောင်းပါတယ်။ Algorithm တွေကို natural language (သာမန် စာကြောင်းတွေ)၊ flowchart (လုပ်ငန်းစဉ်ကို သင်္ကေတတွေနဲ့ ဆွဲပြတဲ့ ပုံ) ဒါမှမဟုတ် pseudocode (program ပုံစံ ရိုးရိုးစာနဲ့ ရေးတဲ့ algorithm၊ အဆင့်တွေကို စနစ်တကျ ချရေးတဲ့ စာသား) နဲ့ ရေးလို့ ရပါတယ်။ မှန်ကန်တဲ့ representation (ဒီဇိုင်းကို ဖော်ပြတဲ့ ပုံစံ၊ ဥပမာ diagram ဒါမှမဟုတ် ဇယား) ကို ရွေးတတ်တာက တခြား software project တွေမှာလည်း အသုံးဝင်ပါတယ်။

မာတိကာ

  1. ခြုံငုံ မိတ်ဆက်
  2. Representation ငါးမျိုး
    1. 1. Flowchart (လုပ်ငန်းစဉ်ကို သင်္ကေတတွေနဲ့ ဆွဲပြတဲ့ ပုံ): process တစ်ခုရဲ့ logic
    2. 2. Data Flow Diagram (DFD၊ system ထဲမှာ ဒေတာ စီးဆင်းပုံကို ပြတဲ့ ပုံ): ဒေတာ ဘယ်လို ရွေ့လျားလဲ
    3. 3. Structure chart (program ကို အပိုင်းငယ်တွေ အဆင့်ဆင့် ခွဲထားပုံ ပြတဲ့ ပုံ): program ကို အပိုင်းတွေ ခွဲပုံ
    4. 4. Data dictionary (ဒေတာ item တစ်ခုချင်းရဲ့ type နဲ့ စည်းမျဉ်းတွေကို စာရင်းပြုစုထားတဲ့ ဇယား): ဒေတာ item တစ်ခုချင်းစီရဲ့ တိကျတဲ့ သတ်မှတ်ချက်
    5. 5. UML class diagram (class တစ်ခုကို အကွက် သုံးကွက်နဲ့ ပြတဲ့ ပုံ): object တွေ ဘယ်လို ဆက်နွယ်လဲ
  3. Pseudocode နဲ့ Interface Sketch (screen ပုံကြမ်း) များ
  4. မှန်ကန်တဲ့ Representation ကို ရွေးခြင်း
  5. ဖြေရှင်းပြထားတဲ့ ဥပမာ: ရေခဲသေတ္တာ app အတွက် Representation တွေ ရွေးခြင်း
  6. Quick Check (အမြန် စစ်ဆေးမေးခွန်း)
  7. Representation တွဲဖက်ခြင်း
  8. Practice Exercises (လေ့ကျင့်ခန်းများ)
    1. Core (အခြေခံ အဆင့်)
    2. Extension (တိုးချဲ့ အဆင့်)
    3. Challenge (စိန်ခေါ်မှု အဆင့်)
  9. ဆက်စပ် ခေါင်းစဉ်များ

ခြုံငုံ မိတ်ဆက်

ဘာကို တည်ဆောက်ရမလဲ ဆိုတာ သိပြီးရင် မတည်ဆောက်ခင် အရင် ဒီဇိုင်းဆွဲပါတယ်။ Program ရဲ့ ဖွဲ့စည်းပုံကို ပြောင်းကြည့်တာက code တစ်ကြောင်းမှ မရေးရသေးခင် စာရွက်ပေါ်မှာ စမ်းကြည့်ရင် များသောအားဖြင့် ပိုမြန်ပါတယ်: diagram တစ်ခုကို မိနစ်ပိုင်းအတွင်း ပြန်ဆွဲလို့ ရပေမယ့် တစ်ဝက်လောက် ရေးပြီးသား program တစ်ခုရဲ့ ဖွဲ့စည်းပုံကို ပြောင်းရတာက နာရီချီ ကြာနိုင်ပြီး bug (code ထဲက အမှား) အသစ်တွေလည်း ဝင်လာနိုင်ပါတယ်။

ဒီဇိုင်း တစ်ခုမှာ များသောအားဖြင့် diagram တစ်ခုထက် ပိုပါပါတယ်။ Representation တစ်ခုစီက system တစ်ခုရဲ့ ရှုထောင့် တစ်ခုကို ပြပါတယ်: flowchart က process (လုပ်ငန်းစဉ်) တစ်ခုရဲ့ logic (အဆင့်တွေနဲ့ ဆုံးဖြတ်ချက်တွေရဲ့ အစီအစဉ်) ကို ပြတယ်၊ data flow diagram (system ထဲမှာ ဒေတာ စီးဆင်းပုံကို ပြတဲ့ ပုံ) က အချက်အလက်တွေ ဘယ်လို ရွေ့လျားလဲ ပြတယ်၊ class diagram (class တွေနဲ့ သူတို့ကြား ဆက်နွယ်မှုကို ပြတဲ့ ပုံ) က class (object တွေ ဖန်တီးဖို့ ပုံစံခွက်) တွေ အချင်းချင်း ဘယ်လို ဆက်နွယ်လဲ ပြတယ်။ ဒီစာမျက်နှာက အသုံးများတဲ့ representation ငါးမျိုးက ဘာအတွက်လဲ၊ ကိုယ့် ဒီဇိုင်း မေးခွန်းကို ဖြေပေးမယ့် representation ကို ဘယ်လို ရွေးမလဲ ဆိုတာ ပြပါတယ်။


Representation ငါးမျိုး

ဒီစာမျက်နှာက ဥပမာ အားလုံးက system အသေးလေး တစ်ခုတည်းအတွက် ဒီဇိုင်းတွေကို ပြတာပါ။

ဥပမာ system: ရပ်ကွက် အသိုင်းအဝိုင်း စင်တာ တစ်ခုမှာ အားလုံး မျှသုံးတဲ့ ရေခဲသေတ္တာ တစ်လုံး ရှိပါတယ်: လူတွေက ပိုနေတဲ့ အစားအစာတွေကို အဲဒီမှာ ထားခဲ့ပြီး လိုအပ်တဲ့သူ မည်သူမဆို ယူသွားလို့ ရပါတယ်။ စင်တာက app တစ်ခု လိုချင်ပါတယ်: အဲဒီ app မှာ လှူဒါန်းသူတွေက သူတို့ ထားခဲ့တဲ့ item (ပစ္စည်း) တစ်ခုချင်းစီကို မှတ်တမ်းတင်ရမယ်၊ လာယူသူတွေက ရေခဲသေတ္တာထဲမှာ ဘာရှိလဲ ကြည့်လို့ ရရမယ်၊ ရေခဲသေတ္တာကို စောင့်ရှောက်တဲ့ စေတနာ့ဝန်ထမ်းတွေက သက်တမ်းကုန်ရက် ကျော်သွားလို့ ဖယ်ရှားရမယ့် အစားအစာ စာရင်းကို နေ့တိုင်း ရရမယ်။ သက်တမ်းကုန်ရက် ကျော်ပြီးသား အစားအစာကို လက်မခံပါဘူး။

1. Flowchart (လုပ်ငန်းစဉ်ကို သင်္ကေတတွေနဲ့ ဆွဲပြတဲ့ ပုံ): process တစ်ခုရဲ့ logic

Flowchart က process ဒါမှမဟုတ် algorithm တစ်ခုတည်းရဲ့ အဆင့်ဆင့် logic ကို ပြပါတယ်: အဆင့်တွေရဲ့ အစဉ်၊ ဆုံးဖြတ်ချက်တွေနဲ့ loop (ထပ်ခါထပ်ခါ run တဲ့ code အပိုင်း) တွေပါ။ “ဘာဖြစ်လဲ၊ ဘယ်အစဉ်နဲ့ ဖြစ်လဲ၊ branch (လမ်းခွဲ) တွေက ဘယ်ကို သွားလဲ” ဆိုတဲ့ မေးခွန်းကို ဖြေပေးပါတယ်။ Flowcharts စာမျက်နှာက စံ သင်္ကေတတွေကို သုံးပါတယ်: Start နဲ့ End အတွက် oval (ဘဲဥပုံ၊ ဒီမှာ အစွန်း ဝိုင်းနေတဲ့ အကွက်အဖြစ် ဆွဲထားပါတယ်)၊ input (program ထဲ ထည့်ပေးတဲ့ ဒေတာ) နဲ့ output (program က ထုတ်ပြတဲ့ ရလဒ်) အတွက် parallelogram (အနားပြိုင် စတုဂံ)၊ process အတွက် rectangle (စတုဂံ)၊ ဆုံးဖြတ်ချက် အတွက် diamond (စိန်ပုံ) ပါ။ Diamond ရဲ့ ထွက်ပေါက် နှစ်ခုလုံးမှာ label တပ်ထားပါတယ်။ ဒီ flowchart က လှူထားတဲ့ item တစ်ခုကို မှတ်တမ်းတင်တဲ့ လုပ်ငန်းထဲက သက်တမ်းကုန်ရက် စစ်ဆေးချက်ကို ပြပါတယ်။ တိုတိုလေး ဖြစ်အောင် တခြား input တွေ (အမျိုးအစားနဲ့ အပွဲ အရေအတွက်) နဲ့ အဲဒီ input တွေကို စစ်တာတွေကို ချန်ထားပါတယ်။

flowchart TD
    A([Start]) --> B[/"Read description and expiry date"/]
    B --> C{"Expiry date before today?"}
    C -- Yes --> D[/"Show 'Past expiry date: not accepted'"/]
    C -- No --> E["Add item to the food list"]
    E --> F[/"Show 'Item added'"/]
    D --> G([End])
    F --> G

ပုံထဲက English စာတွေက Start (အစ)၊ Read description and expiry date (အစားအစာ ဖော်ပြချက်နဲ့ သက်တမ်းကုန်ရက်ကို ဖတ်)၊ Expiry date before today? (သက်တမ်းကုန်ရက်က ဒီနေ့ မတိုင်ခင်လား)၊ Yes (ဟုတ်)၊ No (မဟုတ်)၊ Show ‘Past expiry date: not accepted’ (“သက်တမ်းကုန်ရက် ကျော်ပြီ: လက်မခံပါ” လို့ ပြ)၊ Add item to the food list (item ကို အစားအစာ စာရင်းထဲ ထည့်)၊ Show ‘Item added’ (“Item ထည့်ပြီးပါပြီ” လို့ ပြ) နဲ့ End (အဆုံး) လို့ ဆိုလိုပါတယ်။

ဘယ်အချိန် သုံးမလဲ: လုပ်ငန်း တစ်ခုရဲ့ logic ကို ဒီဇိုင်းဆွဲဖို့ ဒါမှမဟုတ် ရှင်းပြဖို့ လိုတဲ့အခါ သုံးပါ: sign-in (အကောင့်ဝင်ခြင်း) စစ်ဆေးချက် ဘယ်လို အလုပ်လုပ်လဲ၊ ရှာဖွေမှု တစ်ခု ဘယ်လို run လဲ၊ button တစ်ခုကို နှိပ်လိုက်ရင် ဘာဖြစ်လဲ စသဖြင့်ပါ။ Pseudocode က အဲဒီလို logic မျိုးကိုပဲ စာသားနဲ့ ဖော်ပြပါတယ် (Pseudocode နဲ့ Interface Sketch များ ကို ကြည့်ပါ)။

2. Data Flow Diagram (DFD၊ system ထဲမှာ ဒေတာ စီးဆင်းပုံကို ပြတဲ့ ပုံ): ဒေတာ ဘယ်လို ရွေ့လျားလဲ

Data flow diagram က system တစ်ခုလုံးထဲမှာ အချက်အလက်တွေ ဘယ်လို ရွေ့လျားလဲ ပြပါတယ်: ဘယ်ကနေ လာလဲ၊ ဘယ် process တွေက အဲဒါကို ပြောင်းသလဲ ဒါမှမဟုတ် သုံးသလဲ၊ ဘယ်မှာ သိမ်းထားလဲ၊ ဘယ်ကို သွားလဲ ဆိုတာပါ။ Element (အစိတ်အပိုင်း) လေးမျိုး ပါပါတယ်:

  • External entities (system ပြင်ပက ဒေတာ ပေးသူ ဒါမှမဟုတ် ယူသူ): system ကို ဒေတာ ပို့ပေးတဲ့ ဒါမှမဟုတ် system ဆီက ဒေတာ လက်ခံတဲ့ system ပြင်ပက လူတွေ ဒါမှမဟုတ် တခြား system တွေပါ။ ဒီမှာ rectangle (စတုဂံ) တွေနဲ့ ဆွဲထားပါတယ်။
  • Processes: system က ဒေတာနဲ့ လုပ်တဲ့ လုပ်ငန်းတွေပါ။ ဒီမှာ circle (စက်ဝိုင်း) တွေနဲ့ ဆွဲထားပါတယ်။
  • Data stores (ဒေတာ သိမ်းဆည်းရာ): ဒေတာကို သိမ်းထားတဲ့ နေရာတွေပါ။ ဒီမှာ တစ်ဖက်စွန်း ပွင့်နေတဲ့ အကွက်တွေနဲ့ ဆွဲထားပါတယ်။
  • Data flows (ဒေတာ စီးဆင်းမှု): ရွေ့လျားတဲ့ ဒေတာရဲ့ နာမည်ကို label တပ်ထားပြီး ဒေတာ သွားတဲ့ ဘက်ကို ညွှန်ပြတဲ့ မြှားတွေပါ။

Data flow တိုင်းက process တစ်ခုမှာ စတာ ဒါမှမဟုတ် ဆုံးတာ ဖြစ်ရပါတယ်: ဒေတာကို ကိုင်တွယ်ပေးမယ့် process မပါဘဲ external entity ကနေ data store ကို တိုက်ရိုက် မသွားပါဘူး၊ store တစ်ခုကနေ နောက် store တစ်ခုကိုလည်း တိုက်ရိုက် မသွားပါဘူး။ သင်္ကေတတွေက စာအုပ်တွေနဲ့ tool (ကိရိယာ) တွေပေါ် မူတည်ပြီး ကွဲပြားပါတယ် (တချို့က process တွေကို ထောင့်ဝိုင်း စတုဂံတွေနဲ့ ဆွဲပြီး တချို့က data store တွေကို မျဉ်းပြိုင် နှစ်ကြောင်းနဲ့ ဆွဲပါတယ်)။ ဒါကြောင့် diagram တစ်ခုလုံးမှာ သင်္ကေတ အစု တစ်မျိုးတည်းကိုပဲ သုံးပါ။ ဖတ်တဲ့သူက အဲဒီ သင်္ကေတတွေကို မသိနိုင်ရင် key (သင်္ကေတ တစ်ခုစီ ဘာကို ဆိုလိုလဲ ပြတဲ့ ဇယားလေး) တစ်ခု ထည့်ပါ။

ရေခဲသေတ္တာ app တစ်ခုလုံးရဲ့ data flow diagram ပါ။ ဘယ်ဘက်မှာ rectangle တွေနဲ့ ဆွဲထားတဲ့ external entity သုံးခု ရှိပါတယ်: Donor (လှူဒါန်းသူ)၊ Visitor (လာယူသူ) နဲ့ Volunteer (စေတနာ့ဝန်ထမ်း)။ အလယ်မှာ circle တွေနဲ့ ဆွဲထားတဲ့ process သုံးခု ရှိပါတယ်: Log donation (လှူဒါန်းမှုကို မှတ်တမ်းတင်ခြင်း)၊ List and take food (အစားအစာ စာရင်းကို ပြပြီး ယူခြင်း) နဲ့ Run daily checklist (နေ့စဉ် စစ်ဆေးစာရင်းကို လုပ်ခြင်း)။ ညာဘက်မှာ ညာဘက်စွန်း ပွင့်နေတဲ့ အကွက်နဲ့ ဆွဲထားပြီး D1 Food items (အစားအစာ item များ) လို့ label တပ်ထားတဲ့ data store တစ်ခု ရှိပါတယ်။ Donor က food details (အစားအစာ အသေးစိတ်) ကို Log donation ဆီ ပို့ပြီး Log donation က new item (item အသစ်) ကို Food items store ဆီ ပို့ပါတယ်။ Store က available items (ယူလို့ရတဲ့ item များ) ကို List and take food ဆီ ပို့ပြီး List and take food က list of food (အစားအစာ စာရင်း) ကို Visitor ဆီ ပို့ပါတယ်။ Visitor က portions taken (ယူသွားတဲ့ အပွဲ) ကို List and take food ဆီ ပို့ပြီး List and take food က new portion count (အပွဲ အရေအတွက် အသစ်) ကို store ဆီ ပို့ပါတယ်။ Store က items and expiry dates (item များနဲ့ သူတို့ရဲ့ သက်တမ်းကုန်ရက်များ) ကို Run daily checklist ဆီ ပို့ပြီး Run daily checklist က items to remove (ဖယ်ရှားရမယ့် item များ) ကို Volunteer ဆီ ပို့ပါတယ်။ Volunteer က items removed (ဖယ်ရှားပြီးသား item များ) ကို Run daily checklist ဆီ ပို့ပြီး Run daily checklist က removed items (ဖယ်ရှားလိုက်တဲ့ item များ) ကို store ဆီ ပို့ပါတယ်။ Donor Visitor Volunteer Log donation List and take food Run daily checklist D1 Food items food details new item available items new portion count list of food portions taken items and expiry dates removed items items to remove items removed

ပုံထဲက English စာတွေက Donor (လှူဒါန်းသူ)၊ Visitor (လာယူသူ)၊ Volunteer (စေတနာ့ဝန်ထမ်း)၊ Log donation (လှူဒါန်းမှုကို မှတ်တမ်းတင်ခြင်း)၊ List and take food (အစားအစာ စာရင်းကို ပြပြီး ယူခြင်း)၊ Run daily checklist (နေ့စဉ် စစ်ဆေးစာရင်းကို လုပ်ခြင်း)၊ D1 Food items (data store နံပါတ် 1: အစားအစာ item များ)၊ food details (အစားအစာ အသေးစိတ်)၊ new item (item အသစ်)၊ available items (ယူလို့ရတဲ့ item များ)၊ list of food (အစားအစာ စာရင်း)၊ portions taken (ယူသွားတဲ့ အပွဲ)၊ new portion count (အပွဲ အရေအတွက် အသစ်)၊ items and expiry dates (item များနဲ့ သူတို့ရဲ့ သက်တမ်းကုန်ရက်များ)၊ items to remove (ဖယ်ရှားရမယ့် item များ)၊ items removed (ဖယ်ရှားပြီးသား item များ) နဲ့ removed items (ဖယ်ရှားလိုက်တဲ့ item များ) လို့ ဆိုလိုပါတယ်။

ဘယ်ကနေ ညာကို ဖတ်ပါ: လှူဒါန်းသူရဲ့ အစားအစာ အသေးစိတ်က Log donation process ဆီ ရောက်သွားပြီး အဲဒီ process က item အသစ် တစ်ခုကို Food items store ထဲ ထည့်ပါတယ်။ List and take food က လာယူသူတွေကို ဘာတွေ ရနိုင်လဲ ပြဖို့ store ကို ဖတ်ပါတယ်။ လာယူသူ တစ်ယောက်က အပွဲ အချို့ ယူသွားတဲ့အခါ အပွဲ အရေအတွက် အသစ်ကို store ထဲ ပြန်ရေးပါတယ်။ Run daily checklist က သက်တမ်းကုန်ရက်တွေကို ဖတ်ပြီး ဖယ်ရှားရမယ့် item စာရင်းကို စေတနာ့ဝန်ထမ်းတွေဆီ ပို့ပါတယ်။ သူတို့ ဖယ်ရှားလိုက်တဲ့ item တွေကိုလည်း မှတ်တမ်းတင်ပါတယ်။

ဘယ်အချိန် သုံးမလဲ: ဒေတာ ကို ခြုံငုံ ကြည့်ချင်တဲ့အခါ သုံးပါ: system က ဘယ်လို အချက်အလက်တွေကို သိမ်းထားလဲ၊ အဲဒါတွေ ဘယ်ကနေ လာပြီး ဘယ်ကို သွားလဲ၊ ဘယ် process တွေက သုံးလဲ ဆိုတာပါ။ DFD က process တစ်ခုချင်းစီ ဘယ်လို အလုပ်လုပ်လဲ ဆိုတာနဲ့ အရာတွေ ဖြစ်တဲ့ အစဉ်ကို ချန်ထားပါတယ်။ အဲဒီလို ချန်ထားလို့ပဲ ဒီ diagram လိုပဲ system တစ်ခုလုံးကို diagram တစ်ခုတည်းမှာ ဆံ့အောင် ဆွဲနိုင်တာပါ။

3. Structure chart (program ကို အပိုင်းငယ်တွေ အဆင့်ဆင့် ခွဲထားပုံ ပြတဲ့ ပုံ): program ကို အပိုင်းတွေ ခွဲပုံ

Structure chart က program တစ်ခုကို module (သီးခြား လုပ်ဆောင်ချက် တစ်ခုအတွက် ခွဲထားတဲ့ program အပိုင်း) တွေနဲ့ ပိုသေးတဲ့ sub-module (module အောက်က ပိုသေးတဲ့ အပိုင်း) တွေအဖြစ် ဘယ်လို ခွဲထားလဲ ပြပါတယ်။ Tree (သစ်ပင်လို အဆင့်ဆင့် ခွဲထွက်တဲ့ ပုံစံ) အဖြစ် ဆွဲပြီး program တစ်ခုလုံးက အပေါ်ဆုံးမှာ ရှိပါတယ်။ Module တစ်ခုစီက သူ သုံးတဲ့ (call လုပ်တဲ့၊ ဆိုလိုတာက ခေါ်သုံးတဲ့) ပိုသေးတဲ့ module တွေရဲ့ အပေါ်မှာ ရှိပါတယ်။ Diagram အဖြစ် ဆွဲထားတဲ့ decomposition ပါပဲ။

%%{init: {"flowchart": {"nodeSpacing": 14}}}%%
flowchart TD
    A["Fridge App"] --> B["Donations"]
    A --> C["Food List"]
    A --> D["Volunteer Tasks"]
    B --> B1["Enter Details"]
    B --> B2["Check Expiry Date"]
    C --> C1["Search Food"]
    C --> C2["Take Portions"]
    D --> D1["Make Daily Checklist"]
    D --> D2["Record Removals"]

ပုံထဲက English စာတွေက Fridge App (ရေခဲသေတ္တာ app)၊ Donations (လှူဒါန်းမှုများ)၊ Food List (အစားအစာ စာရင်း)၊ Volunteer Tasks (စေတနာ့ဝန်ထမ်း လုပ်ငန်းများ)၊ Enter Details (အသေးစိတ် ထည့်)၊ Check Expiry Date (သက်တမ်းကုန်ရက် စစ်)၊ Search Food (အစားအစာ ရှာ)၊ Take Portions (အပွဲ ယူ)၊ Make Daily Checklist (နေ့စဉ် စစ်ဆေးစာရင်း လုပ်) နဲ့ Record Removals (ဖယ်ရှားတာတွေကို မှတ်တမ်းတင်) လို့ ဆိုလိုပါတယ်။

ဘယ်အချိန် သုံးမလဲ: program ကို တစ်ခုပြီးတစ်ခု တည်ဆောက်ပြီး test (မှန်မမှန် စမ်းစစ်) လုပ်လို့ရတဲ့ အပိုင်းတွေအဖြစ် ဘယ်လို ခွဲမလဲ စီစဉ်နေတဲ့အခါ၊ အပိုင်း တစ်ခုခုကို မရေးခင် program တစ်ခုလုံးရဲ့ ဖွဲ့စည်းပုံကို မြင်ချင်တဲ့အခါ သုံးပါ။ ဒီလို ရိုးရှင်းတဲ့ structure chart က ဘယ် module က ဘယ် module အောက်မှာ ရှိလဲ ပြပါတယ်။ ပိုပြည့်စုံတဲ့ structure chart တွေမှာ module တွေကြား ပို့တဲ့ ဒေတာကိုလည်း label တပ်ထားတဲ့ မြှားလေးတွေနဲ့ ပြပါတယ်။ Structure chart ကို အဆင့်တွေရဲ့ အစဉ် ဒါမှမဟုတ် ဒေတာ သိမ်းထားတဲ့ နေရာကို ပြဖို့ ဒီဇိုင်းလုပ်ထားတာ မဟုတ်ပါဘူး။

4. Data dictionary (ဒေတာ item တစ်ခုချင်းရဲ့ type နဲ့ စည်းမျဉ်းတွေကို စာရင်းပြုစုထားတဲ့ ဇယား): ဒေတာ item တစ်ခုချင်းစီရဲ့ တိကျတဲ့ သတ်မှတ်ချက်

Data dictionary က diagram မဟုတ်ဘဲ ဇယား တစ်ခုပါ။ System က သိမ်းတဲ့ ဒေတာ item တစ်ခုချင်းစီ (field (record တစ်ခုထဲက အချက်အလက် တစ်ကွက်) တစ်ခုချင်းစီ) ကို သတ်မှတ်ပေးပါတယ်: သူ့နာမည်၊ သူ့ type (တန်ဖိုး အမျိုးအစား: ကိန်းပြည့်အတွက် integer၊ စာသားအတွက် string ဒါမှမဟုတ် ရက်စွဲအတွက် date)၊ သူ့ size (အရွယ်အစား)၊ မှန်ကန်တဲ့ တန်ဖိုး တစ်ခု လိုက်နာရမယ့် စည်းမျဉ်းတွေ (သူ့ validation (တန်ဖိုး မှန်မမှန် စစ်ခြင်း)) နဲ့ သူ့ အဓိပ္ပာယ်တို့ပါ။ Project ထဲက လူတိုင်းနဲ့ code ရဲ့ အပိုင်းတိုင်းက “သက်တမ်းကုန်ရက်” ဒါမှမဟုတ် “အမျိုးအစား” ကို အဓိပ္ပာယ် အတူတူ အတိအကျနဲ့ သုံးနိုင်အောင် ကူညီပေးပါတယ်။

Field Type Size (အရွယ်အစား) Validation Description (ဖော်ပြချက်)
item_id integer   app က ပေးတဲ့ ကိန်းပြည့်၊ item နှစ်ခုက နံပါတ် တစ်ခုတည်းကို မျှမသုံးရ လှူထားတဲ့ item တစ်ခုချင်းစီကို ခွဲခြားသိစေတယ်
description string 50 ဗလာ မဖြစ်ရ ဘာ အစားအစာလဲ၊ ဥပမာ “6 bread rolls” (ပေါင်မုန့်လုံး 6 လုံး)
category string 10 bakery၊ fruit၊ vegetables၊ dairy၊ tins၊ other ထဲက တစ်ခု ဖြစ်ရမယ် (မုန့်၊ သစ်သီး၊ ဟင်းသီးဟင်းရွက်၊ နို့ထွက်ပစ္စည်း၊ စည်သွတ်ဘူး၊ အခြား) လာယူသူတွေ အစားအစာ ရှာရ လွယ်အောင် ကူညီတယ်
expiry_date date   item ကို မှတ်တမ်းတင်တဲ့ ရက်ထက် စောလို့ မရ အစားအစာကို စားသင့်တဲ့ နောက်ဆုံးရက်
portions integer   0 ကနေ 20 အထိ ကိန်းပြည့်၊ item ကို မှတ်တမ်းတင်တဲ့အခါ အနည်းဆုံး 1 ဖြစ်ရမယ် ကျန်နေတဲ့ အပွဲ အရေအတွက်

ဒီဇယားမှာ Size ဆိုတာ စာသား field တစ်ခုမှာ ထည့်လို့ရတဲ့ character (စာလုံး) အရေအတွက် အများဆုံးကို ဆိုလိုတာပါ။ ဒါကြောင့် ဂဏန်းတွေနဲ့ ရက်စွဲတွေအတွက် ဗလာ ထားခဲ့ပါတယ်။ တခြား data dictionary တွေမှာ ဒီ column (ကော်လံ) ကို မတူတဲ့ ပုံစံနဲ့ သုံးပါတယ်: တချို့က field တစ်ခုစီ ယူတဲ့ သိမ်းဆည်းရာ နေရာ ပမာဏကို မှတ်ပြီး တချို့က ဂဏန်း တစ်ခုမှာ digit (ဂဏန်းလုံး) ဘယ်နှစ်လုံး ပါနိုင်လဲ မှတ်ပါတယ်။

ဘယ်အချိန် သုံးမလဲ: ဒေတာ ကို တိတိကျကျ သတ်မှတ်ဖို့ လိုတဲ့အခါ သုံးပါ: field တွေ အတိအကျ၊ သူတို့ရဲ့ type တွေနဲ့ validation စည်းမျဉ်းတွေပါ။ “အစားအစာ အသေးစိတ်ကို သိမ်းပါ” ဆိုတဲ့ မရေမရာ လိုအပ်ချက်ကို တကယ် တည်ဆောက်လို့ရတဲ့ အရာ ဖြစ်အောင် ပြောင်းပေးပါတယ်။ သူ့ရဲ့ validation စည်းမျဉ်းတွေကနေ နောက်ပိုင်းမှာ စမ်းကြည့်ရမယ့် test data (စမ်းစစ်တဲ့အခါ ထည့်ပေးတဲ့ တန်ဖိုးများ) ကိုလည်း စဉ်းစားလို့ ရပါတယ် (Testing Strategy (စမ်းသပ်ပုံ အစီအစဉ်) ကို ကြည့်ပါ)။

5. UML class diagram (class တစ်ခုကို အကွက် သုံးကွက်နဲ့ ပြတဲ့ ပုံ): object တွေ ဘယ်လို ဆက်နွယ်လဲ

UML class diagram က object-oriented design (object တွေနဲ့ တည်ဆောက်ထားတဲ့ program ဒီဇိုင်း၊ class တစ်ခုစီက object အမျိုးအစား တစ်ခုအတွက် ပုံစံခွက် ဖြစ်ပါတယ်) ထဲက class တွေကို ပြပါတယ်။ UML (Unified Modeling Language) ဆိုတာ software ဒီဇိုင်းတွေကို ဆွဲဖို့ စံသတ်မှတ်ထားတဲ့ သင်္ကေတ အစု တစ်ခုပါ။ Diagram က class တစ်ခုချင်းစီကို သူ့ရဲ့ attribute (object တစ်ခုစီ သိမ်းထားတဲ့ ဒေတာ) တွေ၊ method (object တစ်ခုစီ လုပ်နိုင်တဲ့ လုပ်ဆောင်ချက်) တွေနဲ့အတူ ပြပြီး class တွေကြားက relationship (ဆက်နွယ်မှု) တွေကိုလည်း ပြပါတယ် (ဥပမာ တခြား class တစ်ခုရဲ့ object တွေကို ကိုင်ထားတဲ့ class၊ ဒါမှမဟုတ် တခြား class တစ်ခုကနေ inherit (အမွေဆက်ခံ) လုပ်လို့ အဲဒီ class ရဲ့ attribute တွေနဲ့ method တွေကို ရယူတဲ့ class)။ UML Class Diagrams စာမျက်နှာမှာ notation (UML ပုံထဲမှာ ပြပုံ) ကို အပြည့်အစုံ ဖော်ပြထားပါတယ်: - က private (class အပြင်ကနေ တိုက်ရိုက် သုံးလို့ မရတဲ့) member ကို ပြပါတယ်၊ ဆိုလိုတာက class ကိုယ်တိုင်ပဲ သုံးလို့ရတဲ့ attribute ဒါမှမဟုတ် method ပါ။ + က public (ဘယ်ကနေမဆို သုံးလို့ရတဲ့) member ကို ပြပါတယ်၊ ဆိုလိုတာက တခြား class တွေကလည်း သုံးလို့ရတဲ့ member ပါ။ Type ကို နာမည်ရဲ့ နောက်မှာ ရေးပါတယ်၊ ဥပမာ portions : int။

classDiagram
    class Fridge {
        -location : String
        -items : FoodItem[]
        +addItem(FoodItem) boolean
        +countItems() int
    }
    class FoodItem {
        -description : String
        -category : String
        -expiryDate : String
        -portions : int
        +FoodItem(String, String, String, int)
        +getExpiryDate() String
        +takePortions(int) void
    }
    Fridge o-- FoodItem

ပုံထဲမှာ Fridge (ရေခဲသေတ္တာ) class မှာ location (တည်နေရာ) နဲ့ items (item များ) attribute တွေ၊ addItem (item ထည့်) နဲ့ countItems (item ရေတွက်) method တွေ ပါပါတယ်။ FoodItem (အစားအစာ item) class မှာ description၊ category၊ expiryDate နဲ့ portions attribute တွေ၊ class နဲ့ နာမည်တူတဲ့ constructor (object ဖန်တီးချိန် attribute တွေကို စတင် သတ်မှတ်ပေးတဲ့ method)၊ getExpiryDate (သက်တမ်းကုန်ရက်ကို ပြန်ပေး) နဲ့ takePortions (အပွဲ ယူ) method တွေ ပါပါတယ်။

Fridge ဘက်စွန်းက အတွင်း ဖြည့်မထားတဲ့ diamond (စိန်ပုံ) က aggregation (သီးခြား ရှိနေနိုင်တဲ့ has-a ဆက်နွယ်မှု) ကို ပြပါတယ်၊ ဆိုလိုတာက အစိတ်အပိုင်းတွေက သူတို့ဘာသာ သီးခြားလည်း ရှိနေနိုင်တဲ့ “has-a” (တစ်ခုထဲမှာ နောက်တစ်ခု ပါဝင်တဲ့) relationship ပါ: Fridge တစ်ခုမှာ FoodItem object တွေ ရှိပါတယ်။

ဘယ်အချိန် သုံးမလဲ: ကိုယ့် ဖြေရှင်းချက်ကို object တွေနဲ့ တည်ဆောက်ထားပြီး သူတို့ရဲ့ attribute တွေ၊ method တွေနဲ့ relationship တွေကို ပြဖို့ လိုတဲ့အခါ သုံးပါ။


Pseudocode နဲ့ Interface Sketch (screen ပုံကြမ်း) များ

ဒီဇိုင်းတွေမှာ ဒီ ငါးမျိုးနဲ့အတူ နောက်ထပ် representation နှစ်မျိုးကို မကြာခဏ သုံးပါတယ်။

  • Pseudocode က process တစ်ခုရဲ့ အဆင့်တွေကို စနစ်တကျ ဖွဲ့စည်းထားတဲ့ စာသားအဖြစ် ရေးပါတယ်: ရိုးရိုး English နဲ့ ရေးတဲ့ စာကြောင်း တိုတိုလေးတွေ ဖြစ်ပြီး input၊ output၊ ဆုံးဖြတ်ချက်တွေနဲ့ loop တွေအတွက် keyword (အထူး အဓိပ္ပာယ်ရှိတဲ့ စကားလုံး) တွေ ပါပါတယ်။ Flowchart နဲ့ အလုပ်တူ လုပ်ပေးပြီး algorithm ရှည်ရှည် တစ်ခုအတွက်ဆိုရင် ရေးရတာ၊ ပြင်ရတာ များသောအားဖြင့် ပိုမြန်ပါတယ်။
  • Interface sketch ကို wireframe (screen ပုံစံ ကြမ်း) လို့လည်း မကြာခဏ ခေါ်ပါတယ်။ Screen တစ်ခုချင်းစီကို label တပ်ပြီး ရိုးရိုးရှင်းရှင်း ဆွဲထားတဲ့ ပုံပါ: input တွေ၊ button တွေ၊ list (စာရင်း) တွေ ဘယ်နေရာမှာ ရှိမလဲ၊ control (button၊ box ဒါမှမဟုတ် list လို user သုံးတဲ့ အစိတ်အပိုင်း) တစ်ခုစီက ဘာလုပ်လဲ ဆိုတာ ပြပါတယ်။ Interface code တစ်ကြောင်းမှ မရေးခင် layout (control တွေကို screen ပေါ်မှာ စီစဉ်ထားပုံ) ကို user တွေနဲ့ စစ်ကြည့်လို့ ရပါတယ်။ Interface (user မြင်ပြီး သုံးရတဲ့ မျက်နှာပြင်) တစ်ခုကို သုံးရ လွယ်အောင် ဘာတွေက လုပ်ပေးလဲ ဆိုတာ UI/UX and Accessibility (user interface၊ user experience နဲ့ လူတိုင်း သုံးနိုင်မှု) မှာ ဖော်ပြထားပါတယ်။

ရေခဲသေတ္တာ app အတွက်ဆိုရင် item တစ်ခု မှတ်တမ်းတင်တဲ့ screen ရဲ့ sketch မှာ ဖော်ပြချက်အတွက် text box (စာရိုက်ထည့်တဲ့ အကွက်) တစ်ခု၊ အမျိုးအစား ရွေးဖို့ list တစ်ခု၊ သက်တမ်းကုန်ရက်အတွက် date picker (ပြက္ခဒိန်ကနေ ရက်စွဲ ရွေးတဲ့ control) တစ်ခု၊ အပွဲ အရေအတွက်အတွက် number box (ဂဏန်း ထည့်တဲ့ အကွက်) တစ်ခုနဲ့ Save (သိမ်း) button တစ်ခု ပါပါလိမ့်မယ်။


မှန်ကန်တဲ့ Representation ကို ရွေးခြင်း

ဒီဇိုင်းအကြောင်း ကိုယ် ဖြေချင်တဲ့ မေးခွန်း ကို အဲဒီ မေးခွန်းကို ဖြေပေးတဲ့ representation နဲ့ တွဲပါ:

ဒါကို ပြဖို့ လိုရင်… ဒါကို သုံးပါ…
Process ဒါမှမဟုတ် algorithm တစ်ခုရဲ့ အဆင့်ဆင့် logic Flowchart (ဒါမှမဟုတ် pseudocode)
System တစ်ခုလုံးထဲမှာ ဒေတာ ဘယ်လို ရွေ့လျားလဲ Data flow diagram
Program ကို module တွေနဲ့ sub-module တွေ ဘယ်လို ခွဲထားလဲ Structure chart
သိမ်းထားတဲ့ ဒေတာရဲ့ field တွေ၊ type တွေနဲ့ validation အတိအကျ Data dictionary
Class တွေ၊ သူတို့ရဲ့ attribute တွေ၊ method တွေနဲ့ object တွေ ဘယ်လို ဆက်နွယ်လဲ UML class diagram
Screen တစ်ခုချင်းစီရဲ့ layout Interface sketch (wireframe)

တကယ့် ဒီဇိုင်းတွေမှာ representation အများ ကို တွဲသုံးလေ့ ရှိပါတယ်၊ ဘာလို့လဲဆိုတော့ system တစ်ခုမှာ ပြသင့်တဲ့ အရာ တစ်ခုထက် ပိုရှိလို့ပါ။ ရေခဲသေတ္တာ app အတွက်ဆိုရင် system တစ်ခုလုံးအတွက် DFD၊ လှူဒါန်းမှု မှတ်တမ်းတင်ခြင်းအတွက် flowchart၊ အစားအစာ item record (အချက်အလက် အများကြီး စုထားတဲ့ ဒေတာ တစ်ခု) အတွက် data dictionary၊ screen တစ်ခုစီရဲ့ sketch နဲ့ code က object-oriented ဖြစ်ရင် class diagram ကို သုံးနိုင်ပါတယ်။ ဒီဇိုင်းရဲ့ အပိုင်းတိုင်းကို ရှင်းလင်းစေမယ့် representation ကို ရွေးပါ။

အဖြစ်များတဲ့ အမှားက မေးခွန်းနဲ့ မကိုက်တဲ့ representation ကို သုံးတာပါ။ Flowchart မှာ အဆင့် တစ်ခုက ဖတ်တဲ့ ဒါမှမဟုတ် သိမ်းတဲ့ ဒေတာရဲ့ နာမည်ကို ရေးပြလို့ ရပေမယ့် flowchart က process တစ်ခုရဲ့ အဆင့်တွေကို ပြတာပါ။ ဒါကြောင့် system တစ်ခုလုံးမှာ ဒေတာကို ဘယ်နေရာတွေမှာ သိမ်းထားလဲ ခြုံငုံ ပြဖို့ မသင့်တော်ပါဘူး၊ အဲဒါကို DFD က ပြပါတယ်။ Data dictionary က field တစ်ခုချင်းစီကို သတ်မှတ်ပေးပေမယ့် အဆင့် တစ်ခုမှ မပြလို့ sign-in စစ်ဆေးချက် ဘယ်လို အလုပ်လုပ်လဲ မပြပါဘူး၊ အဲဒါကို flowchart ဒါမှမဟုတ် pseudocode က ပြပါတယ်။ မဆွဲခင် ဒီ diagram က ဘယ်မေးခွန်းကို ဖြေဖို့လဲ ဆိုတာ ကိုယ့်ကိုယ်ကို မေးပါ။


ဖြေရှင်းပြထားတဲ့ ဥပမာ: ရေခဲသေတ္တာ app အတွက် Representation တွေ ရွေးခြင်း

အခြေအနေ: ရေခဲသေတ္တာ app ကို မတည်ဆောက်ခင် ဒီဇိုင်းဆွဲသူက ဒီဇိုင်းက ဖြေပေးရမယ့် မေးခွန်းတွေကို စာရင်းပြုစုပြီး မေးခွန်း တစ်ခုစီအတွက် representation တစ်ခုစီ ရွေးပါတယ်။

ဒီဇိုင်း မေးခွန်း Representation ဘာကြောင့် ဒါကို ရွေးလဲ
App က ဘယ်လို အချက်အလက်တွေကို သိမ်းထားလဲ၊ အဲဒါတွေ ဘယ်ကနေ လာပြီး ဘယ်ကို သွားလဲ။ DFD လှူဒါန်းသူ၊ လာယူသူနဲ့ စေတနာ့ဝန်ထမ်းတွေကို external entity တွေအဖြစ်၊ process သုံးခုနဲ့ food items store ကို process တစ်ခုချင်းရဲ့ အသေးစိတ် မပါဘဲ ပြပါတယ်
အစားအစာ item record တစ်ခုမှာ အတိအကျ ဘာတွေ ပါလဲ။ Data dictionary Field တစ်ခုချင်းစီရဲ့ type၊ size နဲ့ validation ကို ဖော်ပြပါတယ်၊ ဥပမာ သက်တမ်းကုန်ရက်အတွက် “item ကို မှတ်တမ်းတင်တဲ့ ရက်ထက် စောလို့ မရ” ဆိုတာမျိုးပါ
လှူဒါန်းမှု တစ်ခုကို မှတ်တမ်းတင်တာ အဆင့်ဆင့် ဘယ်လို အလုပ်လုပ်လဲ။ Flowchart သက်တမ်းကုန်ရက် စစ်ဆေးချက်က process တစ်ခုထဲက ဆုံးဖြတ်ချက် တစ်ခုဖြစ်ပြီး branch တစ်ခုစီမှာ ရလဒ် မတူပါဘူး
Program ကို တစ်ခုပြီးတစ်ခု တည်ဆောက်လို့ရတဲ့ အပိုင်းတွေအဖြစ် ဘယ်လို ခွဲမလဲ။ Structure chart Donations၊ Food List နဲ့ Volunteer Tasks နဲ့ တစ်ခုစီရဲ့ အောက်က module တွေကို ပြပါတယ်
App ကို object တွေနဲ့ တည်ဆောက်မယ်ဆိုရင် ဘယ် class တွေ ပါမလဲ၊ သူတို့ ဘယ်လို ဆက်နွယ်လဲ။ UML class diagram Fridge နဲ့ FoodItem၊ သူတို့ရဲ့ attribute တွေနဲ့ method တွေ၊ ပြီးတော့ Fridge တစ်ခုမှာ FoodItem object တွေ ရှိတယ်ဆိုတာကို ပြပါတယ်
လှူဒါန်းသူက item တစ်ခုကို မှတ်တမ်းတင်တဲ့အခါ ဘာကို မြင်ရလဲ။ Interface sketch Screen ရဲ့ layout နဲ့ control တစ်ခုစီ ဘာလုပ်လဲ ဆိုတာကို ပြပါတယ်

Diagram တစ်ခုတည်းက မေးခွန်း ခြောက်ခုလုံးကို မဖြေနိုင်ပါဘူး။ မေးခွန်း တစ်ခုစီအတွက် မှန်ကန်တဲ့ representation ကို ရွေးတတ်တာက ဒီစာမျက်နှာ သင်ပေးတဲ့ ကျွမ်းကျင်မှုပါ။


Quick Check (အမြန် စစ်ဆေးမေးခွန်း)

Q1. System တစ်ခုလုံးထဲမှာ ဒေတာ ဘယ်လို ရွေ့လျားလဲ ပြဖို့ ဒီဇိုင်းလုပ်ထားတဲ့ representation က ဘယ်ဟာလဲ။

Q2. အသင်းဝင် record တစ်ခုမှာ ဘာတွေ ပါလဲ ဆိုတာကို အတိအကျ သတ်မှတ်ဖို့ လိုပါတယ်: field တစ်ခုစီ၊ သူ့ type၊ size နဲ့ validation စည်းမျဉ်းပါ။ ဘယ် representation က အသင့်တော်ဆုံးလဲ။

Q3. လာယူသူ တစ်ယောက်က item တစ်ခုထဲက အပွဲ အချို့ကို ယူတဲ့အခါ ရေခဲသေတ္တာ app လိုက်လုပ်ရမယ့် logic ကို ဒီဇိုင်းဆွဲချင်ပါတယ်။ အဲဒီ logic ထဲမှာ “ကျန်တဲ့ အပွဲ လုံလောက်လား” ဆိုတဲ့ စစ်ဆေးချက်လည်း ပါပါတယ်။ ဘယ် representation က အသင့်တော်ဆုံးလဲ။

Q4. Structure chart ကို ဘာကို ပြဖို့ သုံးသလဲ။

Q5. Class ဒါမှမဟုတ် object တစ်ခုမှ မသုံးတဲ့ script (code တိုတို) တစ်ခုအတွက် UML class diagram က ဘာကြောင့် မသင့်တော်တဲ့ ရွေးချယ်မှု ဖြစ်သလဲ။

Q6. တကယ့် system တစ်ခုရဲ့ ဒီဇိုင်းကို ဖော်ပြဖို့ အကောင်းဆုံး နည်းက ဘာလဲ။


Representation တွဲဖက်ခြင်း

ဒီဇိုင်း မေးခွန်း တစ်ခုစီအတွက် ကိုယ်သုံးမယ့် representation ရဲ့ နာမည်ကို ရေးပါ။

flowchart၊ DFD၊ structure chart၊ data dictionary၊ class diagram ထဲက တစ်ခုနဲ့ ကွက်လပ်တွေကို ဖြည့်ပါ။ အဖြေတွေကို English လို ရိုက်ထည့်ပါ။

// Show the exact fields and validation of a "product" record
// Use a: 

// Show how an order's data moves from customer to warehouse to invoice
// Use a: 

// Show the decision logic for validating a password
// Use a: 

// Show how the Order, Customer, and Product classes relate
// Use a: 

// Show how the program splits into modules and sub-modules
// Use a: 

Comment စာကြောင်းတွေရဲ့ အဓိပ္ပာယ် (Use a: က “ဒါကို သုံးပါ:” လို့ ဆိုလိုပါတယ်):
1. “product” (ကုန်ပစ္စည်း) record တစ်ခုရဲ့ field တွေနဲ့ validation ကို အတိအကျ ပြပါ
2. Order (မှာယူမှု) တစ်ခုရဲ့ ဒေတာက customer (ဝယ်သူ) ဆီကနေ warehouse (ကုန်လှောင်ရုံ) ကို၊ ပြီးတော့ invoice (ငွေတောင်းခံလွှာ) ဆီ ဘယ်လို ရွေ့လျားလဲ ပြပါ
3. Password တစ်ခု မှန်မမှန် စစ်ဖို့ ဆုံးဖြတ်ချက် logic ကို ပြပါ
4. Order၊ Customer နဲ့ Product class တွေ ဘယ်လို ဆက်နွယ်လဲ ပြပါ
5. Program ကို module နဲ့ sub-module တွေ ဘယ်လို ခွဲထားလဲ ပြပါ


Practice Exercises (လေ့ကျင့်ခန်းများ)

IB CS သင်တန်း တက်နေသူတွေအတွက် မှတ်ချက်: ဒီလေ့ကျင့်ခန်းတွေမှာ Internal Assessment ရဲ့ Criterion B ထဲက decomposition နဲ့ Criterion C ထဲက system overview မှာ သုံးရတဲ့ ဒီဇိုင်း ကျွမ်းကျင်မှုတွေကိုပဲ သုံးရပါတယ်။

State နဲ့ Construct လို English စကားလုံးတွေက IB command term (မေးခွန်းမှာ ဘာလုပ်ရမလဲ ပြတဲ့ ညွှန်ကြားချက် စကားလုံး) တွေပါ။ (5 marks) လို mark allocation (မေးခွန်း တစ်ခုစီအတွက် ပေးတဲ့ အမှတ်) တွေက IB Computer Science စာမေးပွဲ ပုံစံအတိုင်း ပေးထားတာပါ၊ ဥပမာ (5 marks) ဆိုတာ 5 မှတ်ပါ။ IB သင်တန်း မတက်တဲ့သူတွေကတော့ အဖြေ ဘယ်လောက် အသေးစိတ် ရေးရမလဲ ချိန်ကြည့်ဖို့ လမ်းညွှန်အဖြစ် သုံးနိုင်ပါတယ်။

Core (အခြေခံ အဆင့်)

  1. State (ဖော်ပြပါ) (5 marks): Representation တစ်ခုစီ (flowchart၊ DFD၊ structure chart၊ data dictionary၊ class diagram) က ဘာကို ပြဖို့ အကောင်းဆုံးလဲ ဆိုတာကို စာကြောင်း တစ်ကြောင်းစီနဲ့ state လုပ်ပါ။

  2. Identify (ဖြစ်နိုင်တဲ့ အဖြေတွေထဲက ရွေးပြီး ဖော်ပြပါ) (4 marks): ရုပ်ရှင်ရုံ လက်မှတ် ကြိုတင်ဝယ်တဲ့ app တစ်ခုအတွက် မေးခွန်း တစ်ခုစီကို ဖြေဖို့ ကိုယ်သုံးမယ့် representation ကို identify လုပ်ပြီး ရွေးချယ်မှု တစ်ခုစီအတွက် အကြောင်းပြချက် ပေးပါ: (a) ထိုင်ခုံ ရွေးတာ အဆင့်ဆင့် ဘယ်လို အလုပ်လုပ်လဲ။ (b) Booking (ကြိုတင် စာရင်းပေးမှု) record တစ်ခုရဲ့ field တစ်ခုစီမှာ အတိအကျ ဘာ ပါလဲ: သူ့ type၊ size နဲ့ ခွင့်ပြုထားတဲ့ တန်ဖိုးတွေပါ။

  3. Construct (ကိုယ်တိုင် တည်ဆောက်ပါ) (4 marks): အိမ်စာတွေကို မှတ်တမ်းတင် စောင့်ကြည့်တဲ့ app တစ်ခုထဲက အိမ်စာ task record တစ်ခုအတွက် field အနည်းဆုံး လေးခု ပါတဲ့ data dictionary တစ်ခုကို construct လုပ်ပါ။ Field တစ်ခုစီကို type တစ်ခုနဲ့ validation စည်းမျဉ်း တစ်ခု ပေးပါ။

Extension (တိုးချဲ့ အဆင့်)

  1. Construct (6 marks): ရေခဲသေတ္တာ app ထဲက စေတနာ့ဝန်ထမ်းတွေရဲ့ နေ့စဉ် စစ်ဆေးမှုအတွက် flowchart တစ်ခုကို construct လုပ်ပါ။ စေတနာ့ဝန်ထမ်းက ဒီနေ့ ရက်စွဲကို ထည့်ပြီး ရေခဲသေတ္တာထဲက item တစ်ခုချင်းစီရဲ့ သက်တမ်းကုန်ရက်ကို အစဉ်လိုက် ထည့်ပါတယ်။ နောက်ဆုံး item ပြီးရင် “done” (ပြီးပြီ) လို့ ထည့်ပါတယ်။ Flowchart က သက်တမ်းကုန်ရက် ကျော်သွားတဲ့ item ဘယ်နှစ်ခု ရှိလဲ ရေတွက်ပြီး အဆုံးမှာ အဲဒီ အရေအတွက်ကို output ထုတ်ပါတယ်။

  2. Explain (ရှင်းပြပါ) (6 marks): Online ကနေ အစားအစာ မှာတဲ့ app တစ်ခုအတွက် မတူတဲ့ representation သုံးမျိုးကို ရွေးပါ။ တစ်ခုစီအတွက် ကျန်တဲ့ နှစ်ခုက မဖြေနိုင်ဘဲ အဲဒီ representation က ဖြေပေးနိုင်တဲ့ ဒီဇိုင်း မေးခွန်းကို explain လုပ်ပါ။

Challenge (စိန်ခေါ်မှု အဆင့်)

  1. Justify (ဘာကြောင့် ရွေးတာလဲ အကြောင်းပြချက်နဲ့ ပြပါ) (8 marks): ကျောင်းသား တစ်ယောက်က system တစ်ခုလုံးကို flowchart တွေနဲ့ပဲ ဒီဇိုင်းဆွဲပါတယ်။ ဒီလို လုပ်တာက ဘယ် အရေးကြီးတဲ့ ဒီဇိုင်း အချက်အလက်တွေကို ချန်ထားလဲ ဆိုတာ Explain လုပ်ပါ။ ပြီးရင် ဘယ် representation တွေကို ထပ်ထည့်ရင် ဒီဇိုင်း ပိုခိုင်မာလာမလဲ၊ ဘာကြောင့်လဲ ဆိုတာ justify လုပ်ပါ။ (စာပိုဒ်တွေထဲမှာ စာကြောင်း အပြည့်အစုံနဲ့ ရေးပါ။)

ဆက်စပ် ခေါင်းစဉ်များ

  • ဒီအပိုင်းမှာ အရင် လေ့လာခဲ့တဲ့ ခေါင်းစဉ်: Requirements Gathering (requirement တွေ စုဆောင်းခြင်း): ကိုယ့် ဒီဇိုင်းက ကိုယ် စုဆောင်းထားတဲ့ requirement (software က ဘာလုပ်ရမလဲ ဆိုတဲ့ သတ်မှတ်ချက်) တွေနဲ့ ကိုက်ညီရပါမယ်
  • ဆက်စပ် ခေါင်းစဉ်: Flowcharts: စံ သင်္ကေတတွေနဲ့ flowchart တစ်ခုကို trace (တစ်ဆင့်ချင်း လိုက်ပြီး မှတ်) လုပ်နည်း
  • ဆက်စပ် ခေါင်းစဉ်: Pseudocode: process တစ်ခုရဲ့ logic ကို စနစ်တကျ ဖွဲ့စည်းထားတဲ့ စာသားနဲ့ ရေးခြင်း
  • ဆက်စပ် ခေါင်းစဉ်: UML Class Diagrams: class diagram တွေအတွက် notation အပြည့်အစုံ
  • ဆက်စပ် ခေါင်းစဉ်: UI/UX and Accessibility: ကိုယ် sketch ဆွဲထားတဲ့ interface ကို ဒီဇိုင်းဆွဲခြင်း
  • နောက်ထပ် လေ့လာမယ့် ခေါင်းစဉ်: Testing Strategy: ဖြေရှင်းချက်ကို ဒီဇိုင်းဆွဲပြီး တည်ဆောက်ပြီးတဲ့အခါ အစီအစဉ် တစ်ခုနဲ့ test လုပ်ပါတယ်
  • ဆက်စပ် ခေါင်းစဉ်: Internal Assessment: Criterion B: Planning ထဲက decomposition နဲ့ Criterion C: System overview ထဲက system model နဲ့ algorithm တွေ

© EduCS.me. ကွန်ပျူတာသိပ္ပံ ပညာရေးအတွက် အရင်းအမြစ်တွေ စုထားတဲ့ နေရာပါ။ EduCS is an independent educational resource. It is not affiliated with, or endorsed by, the International Baccalaureate Organization. (EduCS ဟာ သီးခြား ပညာရေး အရင်းအမြစ်တစ်ခုပါ။ International Baccalaureate Organization နဲ့ ဆက်စပ်မှု မရှိသလို သူတို့ရဲ့ ထောက်ခံချက်လည်း မရှိပါဘူး။) ဆက်သွယ်ရန်