Software Engineering မိတ်ဆက် (အပိုင်း-၂)

Published on January 3rd 2023

Post Image
1.1.2 Software Engineering ဆိုတာဘာလဲ။

အင်ဂျင်နီယာနယ်ပယ် များစွာရှိသည့် အလျောက် သက်ဆိုင်ရာ နယ်ပယ်များတွင် အင်ဂျင်နီယာ စည်းမျဉ်းစည်းကမ်းများ ရှိကြပါသည်။ Software Engineeringသည်လည်း ထိုကဲ့သို့သော အင်ဂျင်နီယာ စည်းမျဉ်းစည်းကမ်းများမှ တစ်ခုဖြစ်ပြီး system သတ်မှတ်ချက်(specification) များ၏ အစောပိုင်း အဆင့်များမှ စ၍ ထို systemကို အသုံးပြုနိုင်သည့်အခါ ထိန်းသိမ်းခြင်းများ ဆောင်ရွက်နိုင်သည်အထိ software ထုတ်လုပ်မှုပိုင်းဆိုင်ရာ ရှုထောင့်အားလုံးနှင့် သက်ဆိုင်ပါသည်။

SE အကြောင်းဆက်လက် အဓိပ္ပာယ်ဖွင့်လျှင် အချက်နှစ်ချက်ဖြင့် ဆက်လက်ဖွင့်ဆို နိုင်ပါသည်။

1. Engineering discipline: အင်ဂျင်နီယာများသည် သီအိုရီများ၊ method နည်းလမ်းများ နှင့် ကိရိယာ tool များကို သင့်လျော်သည့် နေရာများတွင် မှန်ကန်စွာ အသုံးပြုကြပါသည်။ အသင်းအဖွဲ့အစည်း များနှင့် အလုပ် လုပ်ဆောင်ခြင်း၊ ငွေကြေးဆိုင်ရာ ကန့်သတ်ချက် ဘောင်များအတွင်း အလုပ် လုပ်ဆောင်နိုင် ကြရပါမည်။

2. All aspects of software production: Software Engineering ဆိုသည်မှာ software development လုပ်ဆောင်သော နည်းပညာ process များ သက်သက်မဟုတ်ပါ။ Software project management ကဲ့သို့ activityများ၊ software productionကို ကူညီ ထောက်ပံ့သော ကိရိယာ tool development များ၊ method နည်းလမ်းများနှင့် သီအိုရီများကိုလည်း အသုံးချ လုပ်ဆောင် တတ်ကြ ရပါမည်။

ယေဘုယျအားဖြင့် software engineerများသည် အခြေအနေ အချိန်အခါများအပေါ် မူတည်၍ အသင့်တော်ဆုံး method နည်းလမ်းများ ကို ရွေးချယ်ကြရပါသည်။ ဒါမှသာလျှင် အရည်အသွေးကောင်း high-quality softwareများကို ထုတ်လုပ်နိုင်မှာ ဖြစ်ပါသည်။ တစ်ချို့ အခြေအနေ များတွင်မူ software engineerတစ်ဦးသည် စာအုပ်ကြီးတိုင်းမဟုတ်ဘဲ တီထွင်ဖန်တီးမှုများပိုမိုလုပ်ဆောင်နိုင်မှသာလျှင် မျှော်မှန်း ထားသော အကျိုး ထိရောက်မည် ဖြစ်ပါသည်။ ထိုကဲ့သို့လုပ်ဆောင်ခြင်းကို less formal development ဟုခေါ်ပါသည်။ ဉပမာ- web-based systemများကို develop လုပ်ရာတွင် အခြားsoftwareများကို အသုံးပြုနိုင်ရန်လည်း လိုအပ်ပါသည်။ User interface အပိုင်းအတွက် graphical design ရေးဆွဲရာတွင် လိုအပ်သော graphic design skill နှင့် graphical ပိုင်းနှင့် သက်ဆိုင်သော softwareများကိုလည်း အသုံးပြုနိုင်ရပါမည်။

1.1.3 Software Engineeringနှင့် Computer Science ကွာခြားမှု

Computer science သည် သီအိုရီများ၊ အခြေခံသဘောတရားများ နှင့် သက်ဆိုင်ပြီး software engineeringသည် softwareကောင်း များ ထွက်ပေါ်လာစေရန် developလုပ်ခြင်းနှင့် ဈေးကွက်သို့ ပို့ဆောင်ပေးခြင်း စသော လက်တွေ့သဘောတရား များနှင့် သက်ဆိုင်ပါသည်။ Physic ဘာသာ ရပ်သည် electrical engineerများအတွက် မရှိမဖြစ် လိုအပ်သော ဘာသာရပ်ဖြစ်သလို software engineering သည်လည်း software engineerများအတွက် လိုအပ်သော ဘာသာရပ် တစ်ခုဖြစ်ပါသည်။

Software engineerများသည် Computer science ၏ သီအိုရီများကို ကျောထောက်နောက်ခံ ပြုထားသင့်ပါသည်။ တကယ့်လက်တွေ့ ဘဝတွင် software များကို developလုပ်သောအခါ အခြေအနေပေါ်တွင် မူတည်၍ သင့်လျော်သော နည်းလမ်းများ (ad hoc approaches) ကို ကြုံသလို အသုံးပြု ကြရပါသည်။ ဆိုလို သည်မှာ software engineering နယ်ပယ်တွင် ပုံသေနည်းများ အတည်တကျ မရှိပါ။ မိမိ၏ computer science စွမ်းရည်နှင့် အခြား သင့်လျော်သော နည်းစနစ် များကို အသုံးပြုနိုင်မှသာ software နည်းပညာများ၏ ရှုပ်ထွေးသော အခက်အခဲများကို ဖြေရှင်းနိုင်မည်ဖြစ်ပါသည်။

1.1.4 Software engineering နှင့် system engineering ကွာခြားမှု

System engineeringသည် hardware engineering, software engineering နှင့် process engineeringတို့ ပါဝင်သော computer-based systemတစ်ခုလုံးကို developလုပ်ခြင်းနှင့် သက်ဆိုင်ပါသည်။ ထို့ကြောင့် software engineeringသည် system engineering၏ တစ်စိတ်တစ်ပိုင်း ဖြစ်ပါသည်။

System engineeringသည် software engineeringထက် ရှေးကျ သော နည်းပညာ စည်းစနစ်ဖြစ်ပါသည်။ Systemများ၏ software နည်းပညာများ တိုးတက် လာသည့် အခါမှ software engineeringဟူ၍ ပေါ်ပေါက်လာခြင်း ဖြစ်ပါသည်။

1.1.5 Software process ဆိုတာဘာလဲ။

Software processဆိုသည်မှာ activity များဖြစ်ပြီး software productများ ထုတ်လုပ်ရာတွင် ၎င်းactivityများနှင့် ဆက်စပ်သော ရလဒ်များကို ဆိုလိုပါသည်။

အခြေခံအားဖြင့် process activity လေးခု ရှိပါသည်။

1. Software specification: software ထုတ်လုပ်ရန် customerများနှင့် engineerတို့ ဆွေးနွေးတိုင်ပင်ကြခြင်းနှင့် software၏ operation များကို ကန့်သတ်မှုများ(constraints) ပြုလုပ်ခြင်း activity ဖြစ် ပါသည်။

2. Software development: software design ဆွဲခြင်း နှင့် program ရေးသား တည်ဆောက်သည့် activityဖြစ်သည်။

3. Software validation: software သည် customerများ၏ လိုအပ်ချက်များကို ဖြည့်ဆည်းပေး/မပေး သေချာအောင် စစ်ဆေး တည်ဆောက်သော activityဖြစ်သည်။

4. Software evolution: customerများနှင့် ဈေးကွက် လိုအပ်ချက် များအရ ပြောင်းလဲမှုများကို အလိုက်တသင့် ဖြစ်စေရန် softwareကို မွန်းမံပြင်ဆင်မှုများ ပြုလုပ်ရသော activity ဖြစ်ပါသည်။

ကွဲပြားသော systemများအတွက် ကွဲပြားခြားနားသော development processes များလိုအပ်ပါသည်။ ဉပမာ- လေကြောင်း ထိန်းချုပ်ရေး real-time software တစ်ခု၏ specification သတ်မှတ်မှုများ ကို development မစခင်အချိန်တွင် လုံးဝပြီးမြောက် ထားရမည်ဖြစ်ပါသည်။

E-commerce systemများတွင်မူ specification သတ်မှတ်မှုများနှင့် software program develop လုပ်ခြင်းကို ပြိုင်တူ လုပ်ဆောင် လေ့ရှိ ကြပါသည်။ မည်သို့ပင်ဖြစ်စေကာမူ မသင့်လျော်သော၊ အသုံးမပြုသင့်သော software process တစ်ခုကို အသုံးပြုမိလျှင် ထို software product၏ အရည်အသွေး(quality)နှင့် အသုံးဝင်မှု(usefulness)တို့ကို ထိခိုက်နိုင်သည့် အပြင် developmentကုန်ကျစရိတ်ကိုလည်း တိုးစေနိုင်ပါသည်။