පාඨමාලාවට ඔබව සාදරයෙන් පිළිගනිමු!
මෘදුකාංග සංවර්ධකයෙකු වීමේ ඔබේ සිහිනයට පණ පොවන මෙම පාඨමාලාවේ පළමු මොඩියුලය වෙත ඔබව සාදරයෙන් පිළිගනිමු. බොහෝ දෙනා සිතන්නේ මෘදුකාංග සංවර්ධනය යනු හුදෙක් පරිගණක භාෂාවකින් කේත (code) ලිවීම පමණක් කියායි. නමුත් එය සත්යයෙන් බොහෝ ඈතයි. සාර්ථක, විශ්වාසනීය සහ පරිශීලකයාට පහසු මෘදුකාංගයක් නිර්මාණය කිරීම යනු කලාවක් මෙන්ම විද්යාවකි. එම විද්යාව සහ විනයානුකූල ක්රමවේදය "මෘදුකාංග ඉංජිනේරු ශිල්පය" (Software Engineering) ලෙස හැඳින්වේ. මෙම මූලික මොඩියුලය තුළදී, අපි මෘදුකාංග සංවර්ධනයේ හදවත වන මෙම ඉංජිනේරු මූලධර්ම පිළිබඳව ගැඹුරින් අධ්යයනය කරන්නෙමු. ඔබ කේත රචනයට පිවිසීමට පෙර, ශක්තිමත් අත්තිවාරමක් දමා ගැනීම අත්යවශ්ය වන්නේ ඇයිද යන්න ඔබට මෙහිදී පැහැදිලි වනු ඇත.
"වැඩසටහන්කරණය" (Programming) සහ "මෘදුකාංග ඉංජිනේරු ශිල්පය" (Software Engineering) අතර වෙනස
මෙම ක්ෂේත්රයට පිවිසෙන බොහෝ දෙනෙකුට ඇතිවන මූලිකම ගැටළුවක් නම් මේ දෙකෙහි වෙනස හඳුනා නොගැනීමයි. සරලවම කිවහොත්, වැඩසටහන්කරණය යනු මෘදුකාංග ඉංජිනේරු ශිල්පයේ එක් කුඩා, නමුත් ඉතා වැදගත් කොටසක් පමණි.
- වැඩසටහන්කරණය (Programming): මෙය නිශ්චිත කාර්යයක් ඉටු කිරීම සඳහා පරිගණකයට තේරුම් ගත හැකි භාෂාවකින් (උදා: Java, Python) උපදෙස් මාලාවක් ලිවීමේ ක්රියාවලියයි. එය තනි පුද්ගල ක්රියාකාරකමක් විය හැකිය. උදාහරණයක් ලෙස, අංක දෙකක් එකතු කරන කුඩා වැඩසටහනක් ලිවීම.
- මෘදුකාංග ඉංජිනේරු ශිල්පය (Software Engineering): මෙය මහා පරිමාණ, සංකීර්ණ මෘදුකාංග පද්ධති නිර්මාණය කිරීම, සංවර්ධනය කිරීම, පරීක්ෂා කිරීම, ක්රියාත්මක කිරීම සහ නඩත්තු කිරීම සඳහා යොදාගනු ලබන විධිමත්, විනයානුකූල සහ මැනිය හැකි ප්රවේශයකි. එය කණ්ඩායම් ක්රියාකාරකමකි. මෙහිදී පරිශීලක අවශ්යතා විශ්ලේෂණය කිරීමේ සිට, පද්ධතිය සැලසුම් කිරීම, කේතනය කිරීම, ගුණාත්මකභාවය තහවුරු කිරීම, සහ වසර ගණනාවක් පුරා එය නඩත්තු කිරීම දක්වා වූ සම්පූර්ණ ජීවන චක්රයම (Software Development Life Cycle - SDLC) අන්තර්ගත වේ.
හොඳ මෘදුකාංගයක ලක්ෂණ මොනවාද?
ඕනෑම මෘදුකාංගයක් සාර්ථක වීමට නම් එය තාක්ෂණිකව නිවැරදි වීම පමණක් ප්රමාණවත් නොවේ. එය පහත සඳහන් ගුණාංගවලින්ද සමන්විත විය යුතුය. මෘදුකාංග ඉංජිනේරුවෙකු ලෙස, ඔබ සැමවිටම මෙම ලක්ෂණ ඉලක්ක කර ගත යුතුය.
- නඩත්තු කිරීමේ හැකියාව (Maintainability): මෘදුකාංගය නිර්මාණය කර අවසන් වූ පසු, කාලයත් සමග එයට නව විශේෂාංග (features) එකතු කිරීමට, දෝෂ (bugs) නිවැරදි කිරීමට, හෝ වෙනස්වන අවශ්යතාවලට අනුව හැඩගැස්වීමට සිදුවේ. හොඳින් සැලසුම් කළ මෘදුකාංගයක් මෙවැනි වෙනස්කම් සඳහා පහසුවෙන් ඉඩ ලබා දිය යුතුය.
- විශ්වසනීයත්වය සහ ආරක්ෂාව (Dependability and Security): මෘදුකාංගය බලාපොරොත්තු වන පරිදි, බිඳ වැටීම්වලින් තොරව (without crashing) ක්රියාත්මක විය යුතුය. එමෙන්ම, පරිශීලක දත්ත සහ පද්ධතිය බාහිර තර්ජනවලින් ආරක්ෂා කිරීමට අවශ්ය ආරක්ෂක විධිවිධාන යොදා තිබිය යුතුය.
- කාර්යක්ෂමතාව (Efficiency): මෘදුකාංගය පරිගණකයේ සම්පත් (මතකය - RAM, සකසනය - CPU) අනවශ්ය ලෙස භාවිතා නොකළ යුතුය. එය වේගවත්ව සහ සුමටව ක්රියාත්මක වීම ඉතා වැදගත් වේ.
- පරිශීලක-හිතකාමී බව (Usability): මෘදුකාංගය භාවිතා කරන අවසන් පරිශීලකයාට (end-user) එය පහසුවෙන්, පැටලීම්වලින් තොරව අවබෝධ කරගෙන භාවිතා කිරීමට හැකි විය යුතුය. මෙහිදී හොඳ පරිශීලක අතුරුමුහුණතක් (User Interface - UI) සහ පරිශීලක අත්දැකීමක් (User Experience - UX) තිබීම තීරණාත්මක වේ.
මෘදුකාංග ඉංජිනේරුවෙකුගේ භූමිකාව
මෙම පාඨමාලාවේ අපගේ අරමුණ ඔබව හුදෙක් කේත ලියන්නෙකු (Coder) බවට පත් කිරීම නොවේ. අපගේ අරමුණ ඔබව ගැටළු විසඳන්නෙකු, එනම් මෘදුකාංග ඉංජිනේරුවෙකු බවට පත් කිරීමයි. මෘදුකාංග ඉංජිනේරුවෙකු යනු:
- ගැටළු විශ්ලේෂකයෙකි: සැබෑ ලෝකයේ පවතින ගැටළුවක් තේරුම් ගෙන, එයට තාක්ෂණික විසඳුමක් ලබා දීමට අවශ්ය අවශ්යතා (requirements) හඳුනා ගනී.
- නිර්මාණකරුවෙකි (Designer/Architect): හඳුනාගත් අවශ්යතාවලට ගැලපෙන පරිදි, මෘදුකාංගයේ සමස්ත ව්යුහය සහ සැලැස්ම නිර්මාණය කරයි.
- කණ්ඩායම් ක්රීඩකයෙකි: අනෙකුත් ඉංජිනේරුවන්, ව්යාපෘති කළමනාකරුවන්, සහ ගුණාත්මකභාවය තහවුරු කරන නිලධාරීන් (QA Engineers) සමග සහයෝගයෙන් කටයුතු කරයි.
- සන්නිවේදකයෙකි: තාක්ෂණික නොවන පාර්ශවකරුවන්ට (stakeholders) වුවද, සංකීර්ණ තාක්ෂණික කරුණු සරලව පැහැදිලි කිරීමේ හැකියාව ඇත.
මෙම පළමු මොඩියුලය මගින් ඔබ මෘදුකාංග ඉංජිනේරු ශිල්පයේ මූලික සිද්ධාන්ත පිළිබඳව පැහැදිලි අවබෝධයක් ලබා ගන්නට ඇතැයි අපි විශ්වාස කරමු. මෙම ශක්තිමත් අත්තිවාරම මත පිහිටා, මීළඟ මොඩියුලයේදී අපි මෘදුකාංගයක් නිර්මාණය කිරීමේදී අනුගමනය කරන විධිමත් ක්රමවේදයන්, එනම් "මෘදුකාංග සංවර්ධන ජීවන චක්ර (SDLC) ආකෘති" පිළිබඳව ඉගෙන ගනිමු.