"අවශ්යතා" යනු ඇයි මෙතරම් වැදගත්?
පෙර මොඩියුලයේදී, මෘදුකාංගයක් නිර්මාණය කිරීම සඳහා විවිධ SDLC ආකෘති ඇති බව අපි ඉගෙන ගත්තෙමු. ඔබ කුමන ආකෘතිය තෝරා ගත්තත්, සෑම ව්යාපෘතියක්ම ආරම්භ වන්නේ එකම තැනකිනි: අවශ්යතා (Requirements) හඳුනා ගැනීම. සරලවම කිවහොත්, ඔබ නිවසක් තැනීමට පෙර එහි කාමර කීයක් තිබිය යුතුද, කුස්සිය කොතැනද, නාන කාමර කීයක් අවශ්යද යන්න නොදන්නේ නම්, ඔබට එම නිවස තැනිය නොහැක. මෘදුකාංගයක් නිර්මාණය කිරීමද එසේමය. "මෘදුකාංගයෙන් ඉටු විය යුත්තේ කුමක්ද?" සහ "එය ක්රියා කළ යුත්තේ කෙසේද?" යන්න පැහැදිලිව නිර්වචනය කර ගැනීම අවශ්යතා විශ්ලේෂණයේදී සිදුවේ.
මෙය මෘදුකාංග සංවර්ධන ජීවන චක්රයේ වඩාත්ම තීරණාත්මක අදියරයි. මෙම අදියරේදී සිදුවන කුඩා වැරැද්දක් හෝ වරදවා වටහා ගැනීමක්, පසුව නිවැරදි කිරීමට යන විට විශාල කාලයක් සහ මුදලක් වැය වීමට හේතු විය හැක. එබැවින්, ශක්තිමත් අත්තිවාරමක් දැමීම මෙම අදියරේ ප්රධාන අරමුණයි.
අවශ්යතා වර්ග (Types of Requirements)
මෘදුකාංගයක අවශ්යතා ප්රධාන කාණ්ඩ දෙකකට බෙදිය හැක. මෙම වෙනස තේරුම් ගැනීම ඉංජිනේරුවෙකුට ඉතා වැදගත් වේ.
1. ක්රියාකාරී අවශ්යතා (Functional Requirements)
"මෘදුකාංගය කළ යුත්තේ කුමක්ද?" (What the system should DO?) යන ප්රශ්නයට පිළිතුරු සපයයි. මේවා මෘදුකාංගයේ මූලික ක්රියාකාරීත්වයන් සහ විශේෂාංග (features) වේ.
උදාහරණ:- පරිශීලකයෙකුට පරිශීලක නාමය (username) සහ මුරපදය (password) යොදා පද්ධතියට පිවිසීමට (login) හැකි විය යුතුය.
- පද්ධතිය මගින් පාරිභෝගිකයෙකුගේ සාප්පු කරත්තයේ (shopping cart) ඇති භාණ්ඩවල මුළු වටිනාකම ගණනය කළ යුතුය.
- ශිෂ්යයෙකුට පාඨමාලා සඳහා මාර්ගගතව (online) ලියාපදිංචි වීමට හැකි විය යුතුය.
- පරිපාලකයෙකුට (admin) නව පරිශීලක ගිණුම් සෑදීමට හැකි විය යුතුය.
2. ක්රියාකාරී නොවන අවශ්යතා (Non-Functional Requirements)
"මෘදුකාංගය තම කාර්යයන් ඉටු කළ යුත්තේ කෙසේද?" (How the system should BE?) යන ප්රශ්නයට පිළිතුරු සපයයි. මේවා මෘදුකාංගයේ ගුණාත්මකභාවය, කාර්යසාධනය සහ ආරක්ෂාව වැනි ලක්ෂණ නිර්වචනය කරයි.
උදාහරණ:- කාර්යසාධනය (Performance): වෙබ් අඩවියේ මුල් පිටුව තත්පර 2ක් ඇතුළත load විය යුතුය.
- ආරක්ෂාව (Security): සියලුම පරිශීලක මුරපද දත්ත සමුදායේ (database) සංකේතනය (encrypt) කර ගබඩා කළ යුතුය.
- විශ්වසනීයත්වය (Reliability): පද්ධතිය 99.9% ක කාලයක් බිඳ වැටීමකින් තොරව ක්රියාත්මක විය යුතුය (high availability).
- පරිශීලක-හිතකාමී බව (Usability): පරිශීලකයෙකුට කිසිදු පුහුණුවකින් තොරව මිනිත්තු 10ක් ඇතුළත භාණ්ඩයක් මිලදී ගැනීමේ ක්රියාවලිය සම්පූර්ණ කිරීමට හැකි විය යුතුය.
අවශ්යතා ඉංජිනේරු ක්රියාවලිය
අවශ්යතා හඳුනාගෙන, ඒවා විශ්ලේෂණය කර, ලේඛනගත කිරීමේ ක්රමානුකූල ක්රියාවලිය "අවශ්යතා ඉංජිනේරු විද්යාව" (Requirements Engineering) ලෙස හැඳින්වේ. එහි ප්රධාන පියවර කිහිපයකි:
- අවශ්යතා හඳුනා ගැනීම (Elicitation): පාර්ශවකරුවන් (stakeholders - එනම්, පාරිභෝගිකයන්, කළමනාකරුවන්, පරිශීලකයන්) සමග සාකච්ඡා කිරීම, සම්මුඛ සාකච්ඡා පැවැත්වීම, සහ සමීක්ෂණ හරහා අවශ්යතා එක් රැස් කිරීම.
- අවශ්යතා විශ්ලේෂණය (Analysis): එකතු කරගත් තොරතුරු විශ්ලේෂණය කර, ඒවායේ ඇති ගැටුම්, අපැහැදිලි තැන් සහ අඩුපාඩු හඳුනා ගැනීම.
- අවශ්යතා පිරිවිතර කිරීම (Specification): විශ්ලේෂණය කර, දෙපාර්ශවයම එකඟ වූ අවශ්යතා, පැහැදිලිව සහ නිශ්චිතව ලේඛනගත කිරීම. මේ සඳහා සකසන ලියවිල්ල මෘදුකාංග අවශ්යතා පිරිවිතරය (Software Requirements Specification - SRS) ලෙස හැඳින්වේ. මෙය සංවර්ධන කණ්ඩායම සහ පාරිභෝගිකයා අතර ඇතිවන ගිවිසුමක් වැනිය.
- අවශ්යතා වලංගුකරණය (Validation): SRS ලේඛනයේ ඇති අවශ්යතා, පාරිභෝගිකයාගේ සැබෑ අවශ්යතාම දැයි නැවත තහවුරු කර ගැනීම.
අවසාන වශයෙන්
හොඳින් ලියන ලද, පැහැදිලි අවශ්යතා මාලාවක් යනු සාර්ථක මෘදුකාංග ව්යාපෘතියක කොඳු නාරටියයි. එය සංවර්ධන කණ්ඩායමට නිවැරදි මග පෙන්වීමක් ලබා දෙන අතර, ව්යාපෘතිය අතරමගදී සිදුවන අනවශ්ය වෙනස්කම් සහ වරදවා වටහා ගැනීම් අවම කරයි.
දැන් අපි මෘදුකාංගයෙන් ඉටු විය යුතු දේ (WHAT) පිළිබඳව පැහැදිලිව දන්නා නිසා, අපගේ මීළඟ පියවර වන්නේ එම අවශ්යතාවලට අනුව මෘදුකාංගය ක්රියාත්මක වන ආකාරය (HOW) පිළිබඳව දෘශ්ය ආකෘතියක් (visual model) නිර්මාණය කිරීමයි. ඒ සඳහා අප ඊළඟ මොඩියුලයේදී, "UML භාවිතයෙන් පද්ධති ආකෘති නිර්මාණය" පිළිබඳව ඉගෙන ගනිමු.