header

header

Saturday, November 9, 2013

වස්තු පාදක පද්ධති සංවර්දනය-1

අපේ මාතෘකාව වස්තු පාදක පද්ධති සංවර්දනය(OOSD).පද්ධතියක් කිව්වම පරිගණක පාදක පද්දති(computer-based systems) වන හාඩ්වෙයාර් සොෆ්ට්වෙයාර් ප්‍රෝසේසස්(processes) කියන ඔක්කොම අයිති වෙනවා.නමුත් අපි මෘදුකාංග සංවර්දනය ,වස්තු පාදක ක්‍රමලේකනය(object-oriented programming) ඔස්සේ අද්‍යනය කිරීමටයි බලාපොරොත්තු වෙන්නේ.ඇත්තටම මේ පද්දති සංවර්දනය කියන මාතෘකාව අපේ පලවෙනි සිමෙස්ටර් එකේ තිබ්බේ සිස්ටම් ඇනලිසිස් ඇන්ඩ් ඩිසයිනින්ග්(SAD) කියලා.එතැනදී තොරතුරු පද්ධති ගැන හැදින්වීමක්,SDLC,ඉන්ට්‍රොඩක්ෂන් ටු ප්‍රොජෙක්ට් මැනේජ්මන්ට්(project management),රික්වයමන්ට්ස් අනලිසිස්(requirement analysis) ,මෝඩ්ලින්ග් විත් DFD(data flow diagrams) වගේ මාතෘකා ගැන ඉගෙනගත්තා.ඇත්තටම මේ සබ්ජෙක්ට් එක ඉගෙන ගනිද්දී මට දැනුනු දෙයක් තමයි මේක ඉතාම ප්‍රායෝගික විෂයක්.ටිකක් විතර බිස්නස් එන්වයමන්ට්(business envionment) වල වැඩ කෙරෙන හැටි ගැන දැනුමක් තියෙන්න ඕන.ඊට පස්සේ දෙවෙනි සිමෙස්ටර් එකේ තියෙන්නේ දැන් අපේ මාතෘකාව වන වස්තු පාදක පද්ධති සංවර්දනය.මේ ගැන ඇත්තටම මට ලොකු දැනුමක් නැහැ නමුත් මට වැටහෙන විදියට කරුණු ටිකක් දක්වන්නයි,මගේ බලාපොරොත්තුව.ඊලගට තවත් දෙයක්.මේ ලිපි වල අඩංගු කරුණු තේරුම් ගැනීමට කිහිපවරක් කියවන්න කියලා මුලින්ම කියන්න කැමතියි.ඒ මොකද මම මේවා ලියන්නේ නියම ශාස්ත්‍රීය වචන බාවිතා කරලා නෙවෙයි.උදාහරණයක් හැටියට දැන් මේ මාතෘකාවේ දක්වලා තියෙන්නේ object oriented system development කියන වචනයේ තේරුම ,එතනදී වස්තු පාදක කියලා යොදාගත්තත් එය වස්තු දිශානත කියන ඒකයි වඩා සුදුසු ඒ මොකද වස්තු පාදක(object based) කියලත් වෙනම සංකල්පයක්(concept) තියෙනවා .ඉදිරියේදී අපි ඒ ගැන කතා කරමු.ඔබට තොරතුරු පද්ධති පිලිබදව තව දුරටත් මුලික දැනුමක් මේ ලින්කුවෙන් ලබාගන්න පුලුවන්.ඔබට යම් කරුණක් ගැන ගැටළුවක් මතු වුනොත් ඒ ගැන කමෙන්ට් එකක් දාලා ඒ ගැන මම දැනුවත් කරන්න.යම් සංකල්පයක ස්වබාවය වැටහෙන වචනවලින් උදාහරණ ඇසුරෙන් තේරුම් කරන්න තමයි උත්සාහ කරන්නේ.හරි එහෙනම් දැන් වැඩේ පටන්ගනිමු. 
හැදින්වීම
ගැටළු වැඩ ඉක්මනින් හා නිවැරදිව(accurate) විසදගන්න පරිගණක වැඩසටහන්(computer programs) බාවිතා කරන බව ඔබ හොදටම දන්නා කරුණක්.මෙම ගැටළු විසදන ආකාරය පරිගණකයට ලබාදීම සදහා පරිගණක වැඩසටහන් බාවිතා කරනවා.සුවිශේෂ කාර්යක් ඉටුකර ගැනීමට එසේ ලියනු ලබන වැඩසටහන් සමුහයකට මෘදුකාංගයක් කියල කියනවා.පද්දති මෘදුකාංග කියල කියන්නේ මෙහෙයවීම ,පාලනය කිරීම,සැකසුම් ක්‍රියාවලින් කාර්යක්ෂමව ප්‍රයෝජනයට ගැනීම වැනි කාර්යන් කිරීම සදහා නිර්මාණය කරනු ලබන මෘදුකාංග.ඒ සදහා උදාහරණයක් තමයි මෙහෙයුම් පද්දති(operating systems).සැම මෙහෙයුම් පද්දතියක්ම පාහේ පරිශීලක කළමනාකරණය(user management),ගොනු පද්ධති කළමනාකරණය(file management),මතක කළමනාකරණය(memory management) වැනි කාර්යන් කරගත හැකි පරිගණක වැඩසටහන් අන්තර්ගත වෙනවා.
දෘඩාංග(hardware) කොටස් වලට හදුනා ගන්න පුළුවන් යාන්ත්‍රික කේත(machine codes) විතරයි.ඒ කියන්නේ 1 හා 0 සහිත කේත.ආරම්බයේ පවතී පහල මට්ටමේ පරිගණක බාශාවන්(low level computer languages) මෙම කේතයන් බාවිතයෙන් තමයි ලියුවේ.1,0  පමණක් බාවිතයෙන් ලියනු ලබන වැඩසටහන් අවබෝද කරගැනීමට අපහසු බැවින් ඉංග්‍රීසියට ආසන්න බාවිතයෙන් වැඩසටහන් කළහැකි පරිගණක බාෂ දියුණු වුන.ඒ වගේම මේ බශා  ගැටළු විසදීමට  අලෝගරිතමයක්(alogarithm) බාවිතා කරනවා.ඒ කියන්නේ පියවරෙන් පියවර(step by step) ඒ ගැටලුව විසදන ක්‍රමවේදයක්.අල්ගොරිතමයක් බාවිතයෙන් වඩාත් සංකීර්ණ ගැටළු විසදනවිට බොහෝ අපහසුතා මතුවුනා.මෙන්න මෙතනදී තමයි,සංකීර්ණ ගැටළු විසදන්න  වස්තු දිශානත පරිගණක ක්‍රමලේකනය(OOP) කියන සංකල්පය කලඑළි බැස්සේ.

ප්‍රශ්න වසම හා විසදුම් වසම(problem domain and solution domain)

ප්‍රශ්නයක් කියන්නේ කිසියම් අපේක්ෂිත ප්‍රතිපලයක් ලබා ගැනීම සදහා වන කාර්යාත්මක විශේෂීකරණයක්(functional specification).තව දුරටත් කිව්වොත් SDLC එකේ පළවෙනියට තියෙන්නේ අවශ්‍යතා විශේෂීකරණය හා විශ්ලේෂණය ,ඊට පස්සේ හදන ඩොකියුමන්ට් එක තමයි,SRS(Software Requirement Specification) කියන්නෙ.පහත උදාහරණය සලකා බලන්න.කොලබ ඉදලා මාතරට යන්න දුම්රිය ටිකට් එකක් ලබා ගැනීම ගැටලුව යැයි හිතුවොත් අදාළ දුම්රිය කවුන්ටරයට ගිහිල්ල ටිකට් පතක් මිලදී ගැනීම ඊට විසදුම ලෙසින් දක්වන්න පුළුවන්.මෙතන ප්‍රතිපලය(output) වෙන්නේ වෙන් කරන ලද ටිකට් පතක්.ප්‍රශ්නයට අදාළ වසම සලකද්දී දුම්රිය මාර්ග හා ගාස්තු පිළිබද දැනීමක් අවශ්‍ය වෙනවා.ප්‍රශ්නයක් මතුවෙන්නේ කිසියම් අවශ්‍යතාවයක් විශේෂීකරණය කර විටදී.ප්‍රශ්නයක් හා සම්බන්දව වසමක් පවතිනවා වගේම එහි විසදුම සදහාද යම් වසමක් පවතිනවා.එහි අන්තර්ගත වෙන්නේ අපේක්ෂිත ප්‍රතිපලය ලබා ගැනීම සදහා වන ක්‍රමවේද(procedures) හා උපක්‍රම(strategies).විසදුම හා සම්බන්ද වෙන පුද්ගලයෝ කව්ද කියලා දැන් සලකමු.තාර්කික විසදුම ලබා දෙන්නේ ඩොමේන් එක්ස්පර්ට්ලා(domain experts) .ඊලගට වැඩසටහන ඩිවෙලොප් කරන්නේ ඩිවෙලොපර්ස්ලා(developers) එහෙම නැත්තම් මේ අය සප්ලයර්(supplier), ප්රෝග්‍රමර්(programmer) ,ඉම්ප්ලිමන්ටර්(implementer) යන නම් වලින් හදුන්වනවා. ඒ අනුව ප්‍රශ්නයක් විසදීම කියන්නේ ප්‍රොබ්ලම් ඩොමේන් එක සොලුයුෂන් ඩොමේන් එකට මැප්කිරීම(mapping) ලෙස හදුන්වන්න පුළුවන්.සරල ගැටළුවක් විසදීමට මෙන් නෙවෙයි ගැටලුව සංකීර්ණ(complex) වෙනකොට එක විසදන්න යම් ක්‍රමානුකුල ප්‍රවේශයක් අවශ්‍ය වෙනවා. ගැටළුවක් විසදන්න තියෙන ප්‍රවේශයන් කිහිපයක් පහත දැක්වේ.
  • ප්‍රශ්න ඇසීම.(ask questions)
යම් ගැටළුවක් ගැන කුමක්ද,කොහොමද ඇයි වගේ ප්‍රශ්න ඇසීමෙන් ඊට විසදුම හොයා ගන්න පුළුවන්.
  • සමානතා සොයා බැලීම.(look for things similar)
යම් ගැටලුවකට අලුතෙන්ම විසදුමක් නොසොයා ඒ හා සමාන ගැටලුවකට ලද විසදුමක් ප්‍රයෝජනයට ගන්න පුළුවන්.උදාහරණක් හැටියට යම් සංක්‍යා කුලකයක වැඩිම අගය සෙවීම ,පන්තියේ සිසුන්ගෙන් ලබාගත් වැඩිම ලකුණ සෙවීම,දිනයේ උපරිම උෂ්ණත්වය සෙවීම කියන ගැටළු තුන සැලකුවහොත් ඒ තුනටම විසදුම් සොයන්න අවශ්‍ය වෙන්නේ එකම සංකල්පයක්.ඒ තමයි දී ඇති සංඛ්‍යා එකතුවක විශාලතම සංඛ්‍යාව සෙවීම කියන එක.
  • පසුපසට විසදාගෙන යාම හෙවත් බොටම්-අප් ඇප්රෝච්(work backwards or bottom-up approach)
ඒ කියන්නෙ අපි අපේ ගෝල්(goal) එකෙන් පටන් අරගෙන ස්ටාර්ටින්ග් පොයින්ට්(starting point) එකට විසදගෙන එනවා.උදාහරණයක් මතක් කලොත් අපි ගණිතයේදී සමහර ගැටළු දකුණෙන් පටන් අරගෙන වම් පෙත්තේ උත්තරේ දක්වා සුළු කරන්නේ,මේ අප්රෝච් එක අන්න ඒ වගේ.සමහර සංකීර්ණ ගැටළු විසදන්න ඇත්තටම මේක පහසු මගක්.නොදන්නා තෙනකින් පටන් අරගෙන දන්නා තෙනකොට මග සලකුණු කරගෙන යනඑක,දන්නා තෙනකින් පටන් අරගෙන නොදන්නතෙනකට එනවට වඩා පහසුයි.ඒකට හේතුව තමයි,දන්නා තැනක තියෙන සලකුණු වලින් අපට අවබෝදයක් ලැබෙනවා මේ ඇවිල්ල ඉන්නේ විසදුම කිට්ටුව කියලවත්.එහෙම නැති වුනොත් අපි නොදන්නා තැනක මග සලකුනුවත් අපි නොදන්නා නිසා ඒ කිට්ටුවට ආවත් අපි ඒ ගැන දන්නේ නැහැ.
  • ගැටලුව කොටස් වලට කඩා ගැනීම හෙවත් ටොප්-ඩව්න් අප්රෝච්(decomposition or top-down approach)
මෙහිදී ප්‍රශ්නය කුඩා කොටස් වලට කඩනවා.ඒ කොටස් තව දුරටත් කඩාගෙන යනවා,අන්තිමේදී හසුරවලියහැකි කුඩා එකක දක්වාම. දැන් සංකීර්ණ ප්‍රශ්නයක් වුනත් කුඩා පරශ්න ගොඩක් බවට පත්වෙනවා.මේකටම තමයි,ස්ටේප්වයිස් රිෆයින්මන්ට්(stepwise refinement),මොඩියුලර් ඩිකොම්පොසිෂන්(modular decomposition),ස්ට්‍රක්චර්ඩ් අප්රෝච්(structured approach)  නැත්තම් අලෝගරිතමික් අප්රෝච්(algorithmic approach) කියන්නෙත්.
ප.ලි.මෙහි අන්තර්ගත කරුණුවල නොගැලපෙන,සාවද්‍ය යමක් ඇත්නම් ඒ පිළිබද දැනුමැත්තෙකු විසින් පෙන්වාදෙනු ලබන නිවැරදිකිරීමක් කෘතඥපුර්වකව පිළිගන්නෙමි.
තවත් කොටසක් ඉදිරියේදී බලාපොරොත්තු වන්න.

No comments:

Post a Comment