දැනට තිබෙන පාඩම්...

Sunday, December 25, 2016

මූලික කරුණු ඉගෙන ගනිමුද? - 2 පාඩම

කලින් පාඩමට ලැබුනු ප්‍රතිචාර නිසාම දෙවෙනි ලිපියත් ඉක්මනටම පළ කරන්නයි හිතුවේ. පළවෙනි ලිපියෙන් අපි කථා කළේ Memory නැත්නම් මතකය කියන කොටස ගැන.
දෙවැනි කොටසෙන් අපි කථා කරන්න හිතුවේ අැත්තටම අපි වැඩ කරනවා වගේ පෙනෙන වැඩසටහනක නැත්නම් programme ඒකක මොකද වෙන්නේ කියලා.
ගොඩක් ලොකු වැඩසටහනක පියවර ගණනත් වැඩි නිසා අපි කථා කරමු සරළ වැඩසටහනක් වැඩකරන්නේ කොහොමද කියලා.
අපි හැමෝම දන්න විදියට පරිගණකයක මූලික කාර්යය වෙන්නේ වැඩසටහන් ක්‍රියාත්මක කිරීම. වැඩසටහනක් ක්‍රියාත්මක වෙන්න නම් ඒ වැඩසටහනට අදාල Instruction Set නැත්නම් උපදෙස් මාලාවක් මතකය තුල අන්තර්ගත වෙන්න ඔින.
උපදෙස් මාලාවකින් උපදෙස් 1ක් ක්‍රියාවට නැංවීම ප්‍රධාන පියවර 2යි.

  1. Fetch කිරීම
  2. Execute කිරීම
Fetch කිරීම යන්නෙන් අදහස් වෙන්නේ, මතකයෙන් උපදෙස බැගින් ගන්නවා CPU විසින් වරකට ඒක බැගින්.
Execute කිරීම යන්නෙන් අදහස් වෙන්නේ, ඒ උපදෙස් ඒක බැගින් ක්‍රියාත්මක කරනවා.
මුලු වැඩසටහනක්ම Execute වෙනවා කියන්නේ කලින් කියපු කරුණු දෙක මාරුවෙන් මාරුවට චක්‍රයක් වගේ සිදුවීමට...
මේ තනි උපදෙසක් Fetch වෙන්න පටන් ගන්න තැන ඉදන් ඒක Execute වෙලා ඉවර වෙන තැන වෙනකන්ම වෙන ක්‍රියාවලියට අපි කියනවා Instruction Cycle කියලා. මේ Cycle ඒක ප්‍රධාන කොටස් 2යි , Fetch Cycle හා Execute Cycle .

 Execution වෙන වැඩසටහනක් නවත්වන්න පුලුවන් ක්‍රම කිහිපයක්ම තියෙනවා.
  1. පරිගණකය ක්‍රියා විරහිත වීම
  2. අායෙත් recover කරගන්න බැරි විදිහේ errors අාවට පස්සේ
  3. වැඩසටහනට අදාල උපදෙස් ප්‍රමාණය ඉවර වුනාට පස්සේ සාමාන්‍ය විදිහට වැඩසටහන අවසන් වීම
සාමාන්‍ය පරිගණකයක වැඩසටහනක් execute වෙද්දී Program Counter කියන කුඩා රෙජිස්තරය භාවිතා වෙනවා, ඊලගට execute වෙන්න තියෙන instruction ඒකේ address ඒක තියාගන්න. අපි කලින් ලිපියේ සදහන් කළා වගේම මතකයන් අවශ්‍ය වෙන ඒක් තැනක් තමයි මේක. 
යම් උපදෙසක් execute වෙලා ඉවර වුනාම pc නැත්නම් program counter විසින් ම ඒකකින් වැඩි කරගන්නවා අගය.

Fetch Cycle -  මේ cycle ඒක පටන් ගන්නේ program counter ඒක ඊලගට execute කරන්න තියෙන උපදෙස නැත්නම් instruction ඒකේ address ඒක  තියාගන්නවා. PC මගින් ඉලක්ක කරපු address ඒක processor ඒක මගින් සොයාගන්නවා. අදාල address ඒකට ගිහින් අදාල උපදෙස අරන් අැවිත් ඒක ගබඩා කරනවා උපදෙස් රෙජිස්තරය නැත්නම් instruction register(IR) තුල.
IRගේ ගබඩා කලාට පස්සේ ඒ instruction ඒක තවදුරටත් ඊලගට execute කරන්න තියෙන උපදෙස වෙන්නෙ නෑ. ඒ නිසා program counterයට ඒ address ඒක තියාගෙන වැඩක් නෑ.
මේ නිසා program counter තමන්ගේ අගය ඒකකයකින් වැඩිකරගෙන ඊලග අගය තියාගන්නවා අළුත් instruction address ඒක. ඊලගට processorය අදාල උපදෙස අරගෙන අදාල action ඒක ක්‍රියාවට නංවනවා.

Execute Cycle - CPU විසින් අදාල උපදෙස් විකේතනය කරලා අදාල ක්‍රියාවලි සිද්ධ කරනවා.
මේ ක්‍රියාවලි ප්‍රධාන පියවර 4ක් වෙනවා.

  • ප්‍රොසෙසරය හා මතකය අතර - දත්ත ප්‍රධාන මතකය වෙත හෝ ප්‍රධාන මතකයෙන් CPU වෙත හුවමාරු වෙන්න පුලුවන්.
  • ප්‍රොසෙසරය හා අාදාන ප්‍රතිදාන උපාංග අතර - පිටින් සවි කරලා තියෙන උපකරණයක හා CPU අතර දත්ත හුවමාරු කිරීමක් වෙන්න පුලුවන්.  
  • දත්ත සැකසීම - processorයට පුලුවන් Arithmetic and Logic Unit මගින් සිදුකරන ගණිත කර්ම වලින් දත්ත පද්ධතියට අවශ්‍ය විදියට නිර්මාණය කරගන්න.
  • පද්ධතිය පාලනය කිරීම - සමහර වෙලාවට execute වෙන උපදෙස් වලින් කියවෙන්නෙ execute කරන instructions ගැන වැදගත් කාරණාවක් වෙන්න පුලුවන්! අන්න ඒ කාරණාවට පුලුවන් වේවි execute වෙන පිළිවෙළ වෙනස් කරන්න.සමහරවිට ඊලග instruction ඒක නැතුව තව 5ක් ඉස්සරහින් තියෙන instruction ඒකක් execute කරන්න කියන්න. නැත්නම් මීට instructions 5කට කලින් තිබ්බ instruction ඒකක් අායෙත් execute කරන්න වගේ instructions වුනත් ලැබෙන්න පුලුවන්.
Instruction - අැත්තටම instruction කියන්නෙ මොකක්ද?  Instruction තමයි program ඒකක කෙරෙන වැඩ පිලිවෙල තේරුම් කරලා දෙන්නේ...
Instruction ඒකක් ප්‍රධාන කොටස් 2යි. Op Code හා Address ඒක.
සාමාන්‍ය 16 bits දිග instruction word ඒකක, 4 bits යනවා opcodeට, 12 bits යනවා address කියන කොටසට.
සාමාන්‍ය 16 bits දිග integer format word ඒකක 1 bit අයින් කරන්නෙ sign bit ඒක විදියට. ඒ කියන්නෙ +ද නැත්නම් - ද  කියන දේ නිවැරදිව සොයාගන්න. ඉතිරි 15 bits වලින් තමයි ඉලක්කම හාෙයාගන්නේ.

දැන් යාලුවන්ට පොඩි හරි අදහසක් අැතිනේ මෙතන මොකක්ද වෙන්නේ කියලා...
අපි ඊලග දවසේ කථා කරමු පොඩි උදාහරණයකුත් අරගෙනම...
කට්ටියටම සුබ නත්තලක් වේවා...


Tuesday, December 13, 2016

මූලික කරුණු ටිකක් ඉගෙන ගමුද? - 1 පාඩම

අපි හුගක් වෙලාවට IT පැත්තෙන් ඉගෙන ගන්නවානම් යම් විශේෂ පැත්තක් ගැන අවධානය යොමු කරනවා. නමුත් පරිගණකයක් කියන්නෙ මොකක්ද? ඒකෙ තියෙන සේරම කොටස් ගැන ඔබ කොච්චරක් දුරට දන්නවාද?
අපි හිතුවා අපි දන්න දන්න මාතෘකා ගැන පුලුවන් විදියට තේරුම් කරලා දෙන්න.
පරිගණක වැඩසටහනක් නැත්නම් Software කියන්නෙ මොකක්ද?
මේවා වෙන වෙනම වර්ග කරන්න පුලුවන්ද?
පරිගණකයක් කියන්නෙ මොකක්ද?
අැත්තටම පරිගණකයකට විදුලිය ලැබුන පමණින් මේ තරම් වැඩ ගොඩක් කරන්නෙ කොහොමද?
අද කාලේ වෙනකොට අැතිවෙන සාමාන්‍ය ප්‍රශ්න තමයි මේවා...
පරිගණකයක් හැදිලා තියෙන්නේ පරිපථ ගණනාවක සංකලනයක් විදිහට.මේවාට උපදෙස් ලබා දෙන්න තමයි වැඩසටහන් ලිවීම නැත්නම් programming හදුන්වලා දීලා තියෙන්නේ.

  • මතකය - Memory
 ඔයාලා වොන් නියොමාන් අාකෘතිය ගැන අහලා තියෙනවානම් දන්නවා අැති ඔහුගේ මූලික අදහස් කිහිපය ගැන...
ඒ අතරින් ප්‍රධාන කරුණක් තමයි පරිගණකයකට ලැබෙන දත්ත හා උපදෙස් ගබඩා කරලා තියාගන්න උපාංගයක් තියෙන්න ඔින කියන දේ. අන්න ඒකයි අපට මතකය වැදගත් වෙන්නේ.
පරිගණකයක මතක මොඩියුලය හැදිලා තියෙන්නේ ස්ථාන කිහිපයක ඒකතුවකින්. තවත් පැහැදිලිව කියනවානම් set of locations  වලින් තමයි මේක නිර්මාණය වෙන්නෙ!
මේ location වලින් අදාල වන දත්ත ද්විතියික අංකයක් විදියට තියාගන්නවා. නැත්නම් binary number විදිහට.
මතකය ප්‍රධාන කොටස් 2යි. ප්‍රධාන මතකය හා ද්විතියික මතකය. Main Memory හා Secondary Memory.
 ප්‍රධාන මතකය, දත්ත තියාගන්නෙ තාවකාලිකව. බැරි වෙලාවත් මේ වෙලාවෙ විදුලිය නැතිව ගිහින් පරිගණකය ක්‍රියා විරහිත වුනොත් දත්ත සේරම මැකිලා යනවා. මේ මැකෙන දත්ත අායෙ හොයාගන්න බෑ.
උදාහරණයක් කියනවානම් අපි save කරන්නෙ නැතුව වැඩකරන Word Document ඒකක් ගැන හිතන්න.
අපි ඒකේ පිටු 100ක් type කරලා තිබ්බත් වැඩක් නෑ පරිගණකය off වුනොත් අපේ ලියවිල්ලේ මුකුත්ම අායෙ හොයාගන්නවත් නෑ. අන්න ඒ වගේ තමයි main memoryය වැඩ කරන්නේ.
Secondary Memory ඒක main ඒක තරම්ම දුර්වල නෑ. මෙයා තමයි දත්ත හා තොරතුරු ස්ථිරවම තියාගන්න කෙනා. Hard Disk, CD rom තමයි මේකට උදාහරණ වෙන්නේ.
පරිගණකයක තියෙන මතක පද්ධතිය යම් වර්ගීකරණයන්ට ලක් කරන්න පුලුවන්.

  • ස්ථානය අනුව - ප්‍රධාන කොටස් 2යි.

    1. අැතුලත මතකය
    2. පිටත මතකය
  1.  අැතුලත මතකය - ප්‍රධාන මතකය ගැන තමයි මේ කියන්නේ! තව Central Processing Unit ඒක ගාව තියෙන Registers, Cache memory ඒකත් මේවට තමයි අයිති වෙන්නේ. 
  2. පිටත මතකය - මේකෙන් කියන්නෙ Input/Output devices වලින් සම්බන්ධ වෙන memory parts ගැන.උදාහරණ වෙන්නේ Hard disks, Floppy disks, Tapes වගේ දේවල්.
  • Access කරන ක්‍රමය අනුව කොටස් 4කට බෙදන්න පුලුවන්.
  1. Sequential Access
  2. Direct Access
  3. Random Access
  4. Associative Access
  1. Sequential Access - මේ වචනය කියවද්දීම ඔයාලට තේරෙන්න අැති මොකක් ගැනද මේ කියලා තියෙන්නේ කියලා. මේ Access Method ඒකේදි අපි දත්ත හදුන්වනවා records කියලා. Acess වෙන්නේ රේඛීය පිලිවෙලකට. ඒකයි Sequential කියන්නේ. අාරම්භයෙන් පටන් ගන්න ඔින අවසානය වෙනකන්ම පිලිවෙලට කියවගෙන යන්න ඔින. Access කරන කාලය විචල්‍යයක්. ඒ කියන්නේ වෙනස් වෙන්න පුලුවන්. හොදම උදාහරණය තමයි Tape. අතීතයේ නැත්නම් මේ අපිත් දන්න කාලේ සින්දු, කවි වගේ දේවල් වලට පාවිච්චි වුන කැසට් පීස් ගැන තමයි මේ කියන්නෙ. අනික මේ වර්ගයේදී අපි යම් තැනක් හොයනවානම් හිතන්නකෝ සින්දුවක පදයක් කියලා, මුල ඉදන්ම හෙමින් හෙමින් බලන්න වෙනවාමයි
  2. Direct Access -  මේකෙදි වෙන්නේ සෘජුවම Acess කරනවා මතකය. මේක හුගක් වෙලාවට දෘඩ මතකයට පාවිච්චි කරනවා. දෘඩ මතකය නැත්නම් අපි කියන Hard Disks, දත්ත තියාගන්න sectors භාවිතා කරනවා. Sectors දෙකක් තමන්ගෙ පරතරය තියාගන්න  Inter sector gap තියාගන්නවා. අදාල වෙන ප්‍රදේශයට ළගා වෙන්න Direct Access Method පාවිච්චි කරලා ඒ ප්‍රදේශය ලැබුනාට පස්සේ Sequental Access Method පාවිච්චියෙන් අදාල ප්‍රදේශය තුල සොයාගන්නවා ඔින කරන දත්තය.
  3. Random Access - නමේ විදිහටම මේක random. තවත් විදියකට කියනවා නම් අහඹු ලෙස තමයි මෙයා access කරන්නේ! , මේ නම කියද්දිම ඔයාට පරිගණකයේ වැදගත්ම කොටසක් මතක් වෙන්න ඔින , ඒ තමයි Random Access Memory. නැත්නම් අපි ප්‍රධාන මතකය කියනවා මෙයාට. මේක මතකය ගබඩා වෙන තැන අල්ල ගන්නේ අහඹු ලෙස. Access කරන්නේ directly. 
  4. Associative Access - මේ ක්‍රමයේදි දත්ත access කරනවා වගේ පෙනුනට අැත්තටම දත්ත වලින් කුඩා කොටසක් තමයි access වෙන්නේ.මේ ක්‍රමයේ හොදම උදාහරණය තමයි cache memory. කෑෂ් මතකය ගැන කිව්වොත් අපේ අනික් මතකයන්ට වඩා අපිට පාවිච්චි වෙද්දි දැනෙන මතකයක්. Browserයක සාමාන්‍යයෙන් අපි cache cookies clear කරනවා. මේවා clear කරන්න හේතුව වෙන්නේ cache මතකය අපි කලින් බ්‍රවුසරය භාවිතා කරලා ගිය වෙබ් අඩවි සම්බන්ධ තොරතුරු තියාගන්නවා. තොරතුරු කිවුවට තොරතුරු වල පොඩි ලින්කුවක් වගේ. අදාල ලින්කුවෙන් අපිටම හෝ වෙන කෙනෙක්ට අදාල වෙබ් අඩවියට ලගා වෙන්න පුලුවන්.
අනෙක් ප්‍රධාන කාරණාව තමයි මතක ධූරාවලිය නැත්නම් Memory Hierarchy කියන්නේ.

රූපයෙන් පෙන්වනවා වගේම උඩින්ම තියෙන්නෙ ධාරිතාවයෙන් අඩුම, හැකියාවෙන් උපරිම, මිළ ගණන් වලින් උපරිම, වැයකරන කාලය අඩුම මතක උපාංග. පහළට යන්න යන්න ඒවාගේ අගයන් වැඩි ඒවා අඩු වෙනවා. අඩු දේවල් වැඩි වෙනවා.
රෙජිස්ටර් මතකය
1 මට්ටම් කෑෂ් මතකය
2 මට්ටම් කෑෂ් මතකය
ප්‍රධාන මතකය
දෘඩ මතකය

මෙන්න මේ විදිහටයි ඒ ධුරාවලිය පැවතුනේ...
අද අපි කථා කළේ මතක මොඩියුලය ගැන, ඊලග පාඩමෙන් තවත් මොඩියුලයක් ගැන අපි කථා කරමු.


Tuesday, September 13, 2016

පැස්කල් ඉගෙන ගනිමු - 2 පාඩම

පසුගිය සටහන ගැන කථා කරනවානම් ඒ ගැන පලවුන අදහසක් තමයි පයිතන්, ජාවා වගේ භාෂා පාවිච්චි වෙන තැන් දැනගෙන උන්නත් පැස්කල් පාවිච්චි වෙන්නෙ මොනවගේ වෙලාවටද කියන කාරණාව. මේක පාවිච්චි වෙන තැන් කථා කරනවානම් ප්‍රධාන තැන් කිහිපයක්ම දකින්න පුලුවන්.
  1. Skype
  2. Total Commander - Shareware file manager for Windows for 95/98/ME/NT/2000/XP/Vista/7/8/8.1/10 
  3. TeX - Typesetting System
  4. Embedded Systems
Pascal මුලින්ම හදුන්වා දෙන්නෙ 1970දි  Niklaus Wirth විසින්. පරිගණක සංවර්ධනයට බ්ලේස් පැස්කල්ට කරන ගෞරවයක් විදියට තමයි මේ භාෂාව ඒ විදියට නම් කෙරුවේ...
 පැස්කල් වැඩසටහන් වැඩ කරන්නනම් compilers දාන්න ඔින අනික් languages වගේම තමයි.
මේ  compilersඅතර ප්‍රධානම කිහිපයක් ගැන විස්තර කියන්නම් මම...
  1. Turbo Pascal
  2. Delphi
  3. Free Pascal
  4. Turbo51
  5. Oxygene
  6. GNU Pascal (GPC)
Turbo Pascal මෙතනින් download කරගන්න.
Delphi මෙතනින් download කරගන්න.
Free Pascal මෙතනින් download කරගන්න.

මේ ප්‍රධාන කාරණා වලින් පස්සෙ අපි කථා කරමු අලුත් version ඒකේදී කොහොමද pascal වැඩසටහන් ලියන්නෙ කොහොමද කියලා...

program HelloWorld
uses crt;

(*Here are he main program block starts*)
begin
       writeln("Hello,World");
       readkey;
end.

වර්තමානයේදී පැස්කල් වැඩසටහනක් ලියන්නෙ මේ විදිහට
  • program HelloWorld - වැඩසටහන පටන්ගන්නේ මේ විදිහට වැඩසටහනේ නමත් ඒක්කම
  • uses crt -  මේක preprocessor command ඒකක්. මේකෙන් compile කරන්න කලින් compiler ඒක crt unit ඒකට යනවා.
  • begin , end - ප්‍රධාන program ඒකේ අාරම්භය begin, අවසානය end කියන statement දෙකෙන් කරන්නෙ.ප්‍රධානම කාරණාව තමයි end statement ඒක ඉවර වෙන තැනදි Semicolon ඒක වෙනුවට (.) fullstop ඒකක් පාවිච්චි වෙනවා.
  • (*...*) මේ කොටසින් කියවෙන්නෙ comment ඒකක් ගැන.
  • writeln("Hello, World") - writeln() කියන්නෙ function ඒකක්... මේකෙන් Hello, World කියන ඒක print කරනවා... 
  •  readkey - මේ statement ඒකෙන් program ඒක pause කරන් ඉන්නවා key ඒකක් press වෙනකන්.
  • අන්තිමට දක්වන්නේ end. statement ඒක 
 pascal වල reserved words ගණනාවක් තියෙනවා.

and array begin case const
div do downto else end
file for function goto if
in lable mod nil not
of or packed procedure program
record repeat set then to
type until Var while with

අැත්තටම මට ඔින වුනේ පැස්කල් ඉගෙන ගන්න අාස අයට පොඩි තල්ලුවක් දෙන්න. තව අලුත් අදහස් තියෙනවානම් අපිට කියන්න. අපි කථා කරමු යාලුවනේ... ඊලගට කථා කරන්න ඉන්නෙ පයිතන්... යාලුවන්ගේ අදහසුත් කියන්න ඒ ගැන.


Saturday, September 10, 2016

පැස්කල් ඉගෙන ගනිමු - 1 පාඩම

සෑහෙන කාලෙකට පස්සෙ අද අායිමත් පාඩමක් දාන්න හිතුනා. අපේ යාලුවො කිහිප දෙනෙක්ම කියලා තිබ්බා පැස්කල් හා පයිතන් ගැන කථා කරන්න කියලා...
ඉතින් අද අපි කථා කරන්න හිතුවෙ පැස්කල් ගැන. මේ ගැන මටත් ලොකු දැනුමක් නැති වුනත් අපි කථා කරන් යමු ඉස්සරහට...

මුලින්ම අපි බලමු සරලම pascal program ඒකක් මොන වගේද කියලා...

PROGRAM Simple (output);
BEGIN
         write('මගේ පලවෙනි පැස්කල් වැඩසටහන');
END.

මේ තියෙන්නෙ බොහොම සරළ program ඒකක්. අපිට දකින්න පුලුවන් ප්‍රධාන වචන 3ක් මේකෙදි. PROGRAM, BEGIN, END ... මේ වචන 3ම අනිවාර්යයෙන්ම පැස්කල් program ඒකක තියෙන්නම ඔින කරන වචන 3ක්. සෑම පැස්කල් program ඒකකම PROGRAM කියන වචනෙන් පටන් අරන් END කියන වචනෙන් ඉවර වෙනවා. ඔබට පුලුවන් ඔබ කැමති නමකින් program ඒකක් නම් කරන්න. මේ program ඒකේ දක්වලා තියෙන්නෙ Simple කියන නම. output කියන කොටසින් දක්වලා තියෙන්නෙ මේ program ඒකෙන් දත්ත ඒලියට යනවා කියන කරුණට. අන්තිම පේළි 3ට කියන්නෙ PROGRAM BODY කියලා.

අපිට ගැලපෙන විදියෙ වචන වලට අපි කියනවා Reserved Words කියලා. නමුත් මේ වචන වලට අපි කැමති කැමති වචන පාවිච්චි කරන්න බෑ. පාවිච්චි වෙන වචන අකුරකින්ම පටන් ගන්න ඔින. පාවිච්චි කරන්න පුලුවන් ඒක වචනයක් විතරයි. ! වගේ විශේෂ symbols පාවිච්චි කරන්න බෑ...

ඊලග වැදගත්ම කාරණාව variables.  variables declare වෙන්න ඔින program ඒකේ පටන් ගන්න තැනදීමයි. ඒකට භාවිතා වෙන්නෙ VAR කියන වචනෙ.

VAR
       Start, step, count, finish            :Integer;
       Radius, circumference, area     :Real;
       Error, Exit      : Boolean;

ඔයාලට දකින්න පුලුවන් statement ඒකක් අන්තිමට semicolon පාවිච්චි වෙනවා අනිත් languages වල වගේම. නමුත් මේ language ඒකේ දි පාවිච්චි වෙන සමහර Reserved Words වන BEGIN END වලට semicolon පාවිච්චි වෙන්නෙ නෑ.

මේ language ඒකේදී comment දාන්න curly brackets පාවිච්චි වෙනවා.  curly brackets අැතුලෙ දාන ඔිනම ඒකක් comment ඒකක් විදියට තමයි සලකන්නේ...

ඊලගට අපි කථා කරන්නෙ Assignment Operation ඒක ගැන. ඒකත් තරමක් දුරට වෙනස් වෙනවා. නිකන්ම "=" ලකුණ නෙවෙයි මේකෙදි භාවිතා වෙන්නෙ. පාවිච්චි වෙන්නෙ ":=" ලකුණ. වැඩිපුර colon ඒකකුත් ඒනවා. අපි සැලකුවොත් Integer type ඒකට අයිති variable ඒකක් ගත්තොත් Start වගේ, අපි ඒකට 1 කියන අගය යොදනවනම් අපිට ලියන්න පුලුවන් start := 1 ; විදියට.

PROGRAM Sum (input, output) ;
VAR
      x,y,Sum :Real;
BEGIN
      Write (' Enter the first number:  ');
      Read(x); Writeln;
      Write('  Enter the Second Number:  ');
      Read(y); Writeln;
      Sum := x+ y;
     Writeln('  Sum of x and y =  ',sum:8:3);
      END

 මේ program ඒකෙන් කරන්නෙ සංඛ්‍යා 2ක් ඒකතු කරන ඒක.
අපි පලවෙනි පෝලිමේ ඉදන්ම කථා කලොත් PROGRAM කියන්නෙ reserved word නැත්නම් keyword ඒකක්. Sum කියන්නෙ program ඒකේ නම. වරහන් අැතුලේ තියෙන input output කියන වචන දෙකෙන් කියන්නෙ අපි මේකෙ වැඩ කරන්න දත්ත අැතුල් කරන්න ඔින කියන ඒක හා මේකෙන් අපිට දත්තයක් පිලිතුරක් විදියට ඒලියට ගන්න පුලුවන් කියන දේ.
VAR කියන්නෙ අපි කලින් කීවා වගේම variables වලට පාවිච්චි වෙන වචනයක්.
ඊලගට තියෙන්නෙ program body ඒක.
BEGIN END කියන කොටස අැතුලෙ තියෙන්නෙ ඒක. Write කියන කොටසෙන් අපිට පෙන්වන්නෙ output ඒකක්. Read කියන වචනෙන් අපිට පෙන්වන්නෙ අපි ලබා දෙන්න ඔින input ඒකක් ගැන.
අන්තිම පෝලිමට කලින් පෝලිමේ තියෙන Writeln('  Sum of x and y =  ',sum:8:3); පෝලිම තමයි මේකෙ වැදගත්ම පෝලිම.

Writeln වලින් කියන්නෙ output ඒකක් ගැන කියලානම් හැමෝටම තේරෙනවා අැති. ඒත් sum:8:3 කියන කොටස ගැන කථා කරනවානම් මේකෙ පලවෙනි වචනයෙන් ලැබෙන්න ඔින sum කියන variable ඒකේ අගය,  ඊලග ඉලක්කම වුන 8 න් කියවෙන්නෙ character positions කීයක් උත්තරයේ තියෙන්න ඔිනද කියන කාරණාව, අන්තිම ඉලක්කම වුන 3න් කියවෙන්නේ දශම ඉලක්කම් කීයක් යොදන්න ඔිනද කියන ඒකයි.

යාලුවන්ගෙ අදහස් මට බොහොම වටිනවා. තවත් කරුණූ ඒකතු කරන්න මට මාර වටිනවා ඔබතුමන්ලාගෙ අදහස් හා යෝජනා සියල්ලම.

ඊලගට මේ ලිපියේ දෙවෙනි කොටසත් අරගෙන නැවතත් ඒන්නම්....
  

Sunday, July 31, 2016

Networking ඉගෙන ගනිමු - 2 පාඩම

ඔන්න අපි Networking දෙවෙනි පාඩමත් අරගෙන අායෙත් අාවා.අද අපි කථා කරන්න හිතුවෙ Networking නිර්මාණය වෙන්න වුවමනා කරන දේවල් ගැන කථා කරන්න.
පරිගණක , Servers, Workstations, NICs, Repeaters, Hubs, bridges, switches, Modems, Routers වගේ දේවල් මේ ගොඩට අයිති වෙනවා...

Network ඒකක් කියන්නෙ පරිගණක 2ක් හෝ ඊට වඩා ගණනක් ඒකිනෙකට සම්බන්ධ වීමක්.

Server :- සාමාන්‍යයෙන් server ඒකක් කියන්නෙ පරිගණයක්ම තමයි.විවිධ වර්ග වල ජාල ක්‍රියාකාරකම් වලට අදාල වෙන මෘදුකාංග ක්‍රියාත්මක  වෙනවා මේකෙ. අදාල network ඒකේ පවතින අනෙක් පරිගණක වලට අදාල සේවා සපයනවා මේ ගොල්ලො. server ඒකක් පාරිභෝගිකයෝ රාශියක් වෙනුවෙන් සේවා සපයනවා වගේම ඔවුන්ට අවශ්‍ය සම්පත් ලබාදෙනවා...
සාමාන්‍යයෙන් යම් විශේෂ කාර්යයක් වෙනුවෙන් තමයි මේවා නිර්මාණය වෙන්නෙ.
  1. File Server :- network ඒකේ තියෙන විවිධ මෘදුකාංග හා දත්ත ගොනුවල ගබඩාවක් 
  2. Mail Server :- email function ඒකෙන් වැඩ කරගන්න පාවිච්චි වෙන තැපැල් කන්තෝරුවක් කියන්න පුලුවන්.
  3. Printer Server :- network ඒකට අදාල ප්‍රින්ටර් උපකරණ සමග ගනුදෙනු කරනවා.
  4. Web Server :-  Hypertext Transfer Protocol නැත්නම් HTTP ඒක run කරන ගමන් වෙබ් සම්බන්ධ ක්‍රියාකාරකම් කළමණාකරණය කර ගන්නවා.
 Workstations :- තනි PC ඒකකට වඩා වේගවත් වගේම දරාගැනීමේ හැකියාව වැඩියි. තනිවම වැඩ කරන පරිසරයක වගේම පරිගණක ජාලයක කොටසක් වශයෙනුත් පවතින්න පුලුවන්. අවශ්‍ය වෙන ඔිනෑම වෙලාවක පරිගණක ජාලයේ පරිගණක වලට සම්පත් සපයන්න පුලුවන්.

Network  Interface Cards :- සාමාන්‍යයයෙන් පරිගණකයක් network ඒකකට connect වෙන්නනම් පරිගණකයට අනිවාර්යයෙන්ම NIC ඒකක් සවි කරලා තියෙන්න ඔින. Network card නැත්නම් Network Adapter ඒකක් කියන්නෙත් මේකටම තමයි ඉතින්. වර්තමානය වෙනකොට බාහිරින් වගේම රැහැන් රහිත NIC පවා දැක ගන්න පුුලුවන්.

Repeaters :- සාමාන්‍යයෙන් සංඥා නැත්නම් Signal  සාමාන්‍ය රැහැනකින් හරි වාතය නැත්නම් අවකාශය හරහා ගමන් කරද්දී ක්‍රම ක්‍රමයෙන් දුර්වල වෙනවා. Repeater ඒකකින් දුර්වල සංඥා  වර්ධනය කරනවා ඉහල කොටසකට යන්න කලින්. Repeater ඒකක් පාවිච්චි කරලා network ඒක  විශාල ප්‍රදේශයක හරි ප්‍රමාණයෙන් වැඩි දිගකට අැදගන්න පුලුවන්. මේ නිසාම Repeater ඒකකට Extender කියන නමත් පාවිච්චි වෙනවා. රැහැන් සහිත Repeater ඒකකට රැහැන් රාශියක් සම්බන්ධ කරන්න පුලුවන් වගේම රැහැන් රහිත ඒකකට ජාල පරාසය නැත්නම් Network Range ඒක වැඩි කරන්න පුලුවන්.

Hubs :- හබ් පාවිච්චි වෙන්නෙ ඒක් ඒක් උපකරණ සම්බන්ධ කරන්න.ඒක් ඒක් උපකරණ කියන්නෙ workstations, servers, printers වගේ ඔිනෑම දෙයක්. මේක ports කියන කුඩා කුහර වලින්  තමයි මේකට උපකරණ සම්බන්ධ වෙන්නෙ. Ports 4,8,12 වශයෙන් පවතිනවා.

Bridges :- පාලමකින් කරන්නෙ ගොඩබිම් 2ක් යා කරන ඒකනෙ. මේ bridges වලිනුත් කරන්නෙ වෙන්ව පවතින network 2ක් සම්බන්ධ කිරීමක් හරි තනි network ඒකක් ජාල 2කට වෙන් කිරීමක් හරි. 2 layer switch නැතිනම් ලේයර් 2ක switch උපකරණයක් විදියටත් මේක හදුන්වන්න පුලුවන්. Bridge ඒකකට හුගක්  දුරට hubs තමයි සම්බන්ධ වෙන්නෙ.

Switches :- switch ඒකක් කියන්නෙ හුගක් වෙලාවට තනි ජාලයකට පරිගණක කිහිපයක් සම්බන්ධ කරන්න ගන්න උපකරණයක්. සාමාන්‍යයෙන් අපි කියනවා හබ් ඒකකට වඩා ස්විච් ඒකක් බුද්ධිමත් කියලා. අපේ පරිගණක ජාලයේ තියෙන පරිගණකයකට තවත් ඒකක් හා සම්බන්ධ වෙන්න ඔිනනම් හබ් ඒක නැත්නම් මේ ස්විච් ඒක මැද්දෙන් යන්න ඔින.

අපි හිතමු 1 පරිගණකය 9 පරිගණකයට සම්බන්ධ වෙන්න ඔින කියලා, ඉතින් මේ 1 PC ඒක ඒ පනිවිඩය හබ් ඒකට හරි ස්විච් ඒකට හරි දෙනවා. හබ් ඒක මේ පනිවිඩය අරගෙන හැමෝම ලගට යනවා. ඒයාගෙන් 9කියලා තහවුරු වුනොත් තමයි ඒයාට පනිවිඩේ බාර දෙන්නෙ. ඒ්ත් ස්විච් ඒකක් ඒ පනිවිඩය අරගෙන කෙලින්ම හරි කෙනා ගාවට යනවා. ඒ නිසයි ඒයා බුද්ධිමත් බවින් වැඩියි කියන්නෙ...
ඒ වගේම switch ඒකත් හුගක් වෙලාවට bridge ඒකක් වගේම තමයි, ඒත් bridge ඒකකට වඩා වේගය හා හැකියාව කාර්යක්ෂමතාව sweitch ඒකේ වැඩියි. ස්විච් ඒකක් multiple bridge ඒකක් විදියට පැහැදිලි කරන්න පුලුවන්.

Modem(Modulator, Demodulator) :- දුරකථන රැහැන් හරහා පරිගණකයේ ඩිජිටල් සංඥා, අැනලොග් සංඥා බවට හරවන්නෙ මෙයා. ඒ වගේම ඒ ක්‍රියාවලියෙ අනිත් පැත්ත කරන්නත් මේකට පුලුවන්. පරිගණක modem භාවිතයෙන් තවත් පරිගණකයක් ඒක්ක දුරකථන රැහැන් හරහා සම්බන්ධ වෙන්න පුලුවන්.

Routers :- නෙට්වර්ක් 2ක් හෝ ඊට වැඩි ගණනක් ඒකිනෙකට රැහැන් සහිත හෝ රහිතව සෙට් කරලා ඒවා අතර තියෙන දත්ත හුවමාරු කර ගන්නවා. ඒ දත්ත වල හුගක් වෙලාවට අන්තර්ගත වෙනවා address information, මේවා භාවිතයෙන් router ඒකට පුලුවන් මේ දත්ත යන්නෙ network දෙකකටද නැත්නම් තනි ඒකේම දෙපැත්තකටද කියලා.

මේ පාර ලිපිය මෙතනින් ඉවරයි, හිතනවා මේ ලිපියත් ඔයාලට වැදගත් වේවි කියලා, ඊලග ලිපියෙන් අපි කථා කරමු network ඒකක් කොටස් වලට බෙදන්න පුලුවන් ක්‍රම ගැන...

Tuesday, July 19, 2016

Networking ඉගෙන ගනිමු - 1 පාඩම

පහුගිය කාලෙ අපි කථා කරපු පාඩම් මාලාවලින් පස්සෙ අද අපි අලුතින්ම කථා කරන්න පටන් ගත්තෙ Networking ගැන. ගොඩක් ගැඹුරට යන පාඩම් මාලාවක් පුලුවන් තරම් සරලව ඉදිරිපත් කරන්න අපි බලාපොරොත්තු වෙනවා.

අපි මුලින්ම කථා කරමු Networking වල ඉතිහාසය ගැන. Networking  කියන්නෙ මොකක්ද, ඒකෙ අැතිවීමට බලපාපු දේවල් මොනවාද කියන දේ...

අපි මුලින්ම කථා කළොත් 1950 යුගයේ පරිගණක ගැන.ඒ කාලෙ තමයි පරිගණක වල මුල්ම යුගය. මේ කාලේ පරිගණක කාමරයකට වඩා විශාලයි.ඒ වගේම අධික මිලකට තමයි මේවා පැවතුනෙත්. බොහොම වැදගත් අායතනයක වුනත් වැඩිම වුනොත් පරිගණක 2ක් හෝ 3ක් තියෙන්න අැති. ඒ වගේම අපි අාදානයන් සමූහයක් (Batch) ලබා දීලා ප්‍රතිදානයක් ගන්න අායෙත් වෙන වෙලාවක් වෙනකන් බලන් ඉන්න වෙනවා. මේවට තමයි අපි කියන්නෙ Batch Processing Systems කියලා. මේ systems පදනම් වෙලා තියෙන්නෙ Mainframe ඒකකයක් මත. User අාදාන විදිහට භාවිතා කරන්නෙ punch cards. user punch cards වල දත්ත හා code ඒක අාදානය කරලා operator දත්ත පරිගණකයට අැතුල් කරනවා. userට result ලැබෙන්නෙ ටික වෙලාවක් ගියාට පස්සෙ. මේ Batch Processing System ඒකක අඩුපාඩු ගොඩක් තිබුනා. ලොකුම අඩුපාඩුව තමයි ගොඩක් වෙලාව නාස්ති වුන ඒක. ඒ වගේම පාරිභෝගිකයන්ට තමන්ගෙ කැමැත්ත අනුව වැඩ කරගන්න බැරි වුන නිසා මේක ඒපා වෙන්න පටන් ගත්තා. ඒ වගේම userට බැරි වුනා වෙන process ඒක හදිස්සියකදි වෙනස් කරගන්නවත්...

මේ ප්‍රශ්නත් ඒක්කම 1960 යුගය වෙනකොට පරණ තිබුණු ප්‍රශ්න වලට පිලිතුරු විදියට Multi Terminal Systems කරලියට අාවා. මේකෙන් usersලා කිහිප දෙනෙක්ට ඒකම වෙලාවෙ වැඩ කරන්න පුලුවන්. ඒ වගේම මේ computer ඒක කලින් ඒක වගේ නෙමෙයි අාපහු ප්‍රතිචාර දක්වන speed ඒකත් වැඩියි . ඒ නිසා වැඩ කරන අයට දැනෙන්නෙ නෑ මේකෙ usersලා ගොඩක් වැඩ කරනවා කියලා. terminal ගොඩක් තියෙනවා දත්ත අාදානය කරන්න. network ඒකක් වගේම තමයි හුගක් වෙලාවට.

Networking වල අාරම්භය විදියට අපි සලකන්නෙ මේ Multi terminal systems.

  • SAGE - Semi Automatic Ground Environment.
මේක Air Defense System ඒකක්. සෝවියට් රාජ්යය ඒල්ල කරපු න්‍යෂ්ටික බෝම්බ වලින් බේරෙන්න 1958දි North American Aerospace Defense Command කණ්ඩායමේ හැදුවේ අැමරිකන් ගුවන් හමුදාව වෙනුවෙන්... ප්‍රධාන මධ්‍යස්ථාන 3ක් පදනම් කරගෙන දිශා මධ්‍යස්ථාන 24ක් හා දුර ගමන් රේඩාර් මධ්‍යස්ථාන 100 කටත් වැඩියෙන් මත මේක ගොඩනැගුනේ.
සම්පූර්ණයෙන්ම සන්නද්ධ ගත වුනේ 1963දී. දත්ත හුවමාරුවට දුරකථන මාර්ග හා රේඩියෝ සංඥා පාවිච්චි වුනේ...
පසුකාලීනව සෝවියට් රුසියාව intercontinental ballistic missiles නිකුත් කරන්න පටන් ගත්තා. මේ මිසයිල වලින් SAGEට ගැලවීමක් තිබුනෙ නෑ. මේ මිසයිල ප්‍රහාරයකින් ප්‍රධාන මධ්‍යස්ථානයක් බිද වැටුනට පස්සෙ අනෙකුත් සියලුම ජාල බිද වැටුනා. මේකට විසදුමක් විදියට ගෙනාවෙ බලය විහිදුවන ලද පද්ධතියක්.

  • ARPANET - Advanced Research Projects Agency Network
1969දි මේක නිර්මාණය වුනේ.SAGE වලදි භාවිතා කරලා තිබ්බෙ ඒකම විදිහෙ යන්ත්‍ර, නමුත් මේකෙදි විවිධ වර්ග වල පරිඝණක ඔවුන් යොදාගත්තා. මේවා ඒකිනෙකට සම්බන්ධ කළේ IMP- Interface Message Processor මගින්. මේකෙ ප්‍රාථමික අරමුණ වුනේ අාරක්ෂක මර්මස්ථාන, විශ්ව විද්‍යාල  ඒකිනෙකට සම්බන්ධ කරන්න. අවසානයේදී මුලු අැමරිකාව පුරාම මේ ජාලය පැතිරුණා. අන්තර්ජාලයේ මූලික පියවරක් විදියට මේක දක්වන්න පුලුවන්.
ARPANET නිසා ලෝකයට ලැබුනු දායාදයන් කිහිපයක්ම පැහැදිලිවම දක්වන්න පුලුවන්.

  1. Email - 1971 
  2. Telnet - 1972
  3. FTP - 1973 - File Transfer Protocol
  • NSFNET - National Science Foundation Network
NFS අායතනය ඔවුන්ගේ තියෙන සුපිරි පරිගණක 6 ඒකිනෙකට සම්බන්ධ කරන්න පුලුවන් විදියේ  Backbone Network (ප්‍රධාන ජාලයක්) ඒකක් ගොඩනැගුවා. ඒ වගේම මේක සියලුම විශ්ව විද්‍යාල පර්යේෂණ කණ්ඩායම් වලට විවෘත ජාලයක් කලා. ඒකිනෙක අාසන්නයේ තිබ්බ ප්‍රාදේශීය ජාල 20කට අාසන්න ප්‍රමාණයක් ඒකතු කරලා දහස් ගානක් විශ්වවිද්‍යාල වලට, පර්යේෂණාගාර වලට, පුස්තකාල වලට, කෞතුකාගාර වලට ඒවා භාවිතා කරන්න පහසුකම් හදලා දුන්නා.

1990 වන විට backbone network සංකල්පය බිද වැටුනා.ඒ වෙනුවට වාණිජ තරගකාරී බවට හැරවිය හැකි පද්ධතියක් නිර්මාණය වුනා. අපි හදුන්වනවා මේක අන්තර්ජාලයේ මුලික අාරම්භක අවස්ථාවක් විදියට.

අපි ඊලග දවසේ අපි කථා කරමු Network ඒකක් කියන්නෙ මොකක්ද, හා ඒකේ භාවිතයන් ගැන.





Wednesday, June 22, 2016

Software Engineering ඉගෙන ගනිමු - 7 පාඩම

ඔන්න අද Software Engineering වල අන්තිම පාඩමත් අරගෙන අාවා. අද අපි කථා කරන්නෙ අවදානම් කලමණාකරණය ගැන. නැත්නම් Risk Management.

අවදානම් කළමණාකරණයෙදි කථා කරන්නෙ අවදානම් හදුනාගැනීම හා ඒකෙන් ව්‍යාපෘතියට වන හානිය පුලුවන් තරම් අවම කරගන්න අාකාරය ගැන.අවදානමක් කියන්නෙ සම්භාවිතාවයක්  යම් පීඩාකාරී
ප්‍රතිපලයක් අැති කරන්න පුලුවන්. 
ඒක කාල සටහනට වගේම අපට තියෙන සම්පත් වලටත් බලපාන්න පුලුවන්. ඒක අපි සංවර්ධනය කරන software ඒකේ quality නැත්නම් ප්‍රමිතිය ගැන වගේම software ඒකේ performance ඒක නැත්නම් කාර්යඵලයට බලපෑම් අැති කරන්න පුලුවන්.
හදලා ඉවර වුනාට පස්සෙ ඒක රෑක බලාගන්න කාලයේදි ව්‍යාපාරික වශයෙන් අවදානම් වලට ලක්වෙන්න පුලුවන්. 

අවදානම් කලමණාකරනය ප්‍රධාන පියවර 4ක් යටතේ වර්ග කරන්න පුලුවන්.
  1. Risk Identification - අවදානම් හදුනාගැනීම - ව්‍යාපෘතියට තියෙන සියලුම අවදානම් මාෙනාද කියලා හදුනාගන්න ඔින.
  2. Risk analysis - අවදානම් විශ්ලේෂණය - අවදානමක් වෙන්න තියෙන ඉඩ ප්‍රමාණය හා ඒකෙන් පස්සෙ වෙන්න පුලුවන් ප්‍රතිවිපාක ගැන 
  3. Risk Planning - අවදානම් ඉවත් කිරීම් සැලසුම් කිරීම - අවදානම් නිසා වෙන්න පුලුවන් හානි වලක්වගන්න හරි අවම කරගන්න හරි සැලසුම් කරනවා.
  4. Risk Monitoring - අවදානම් පාලනය කිරීම -  ව්‍යාපෘතියේ සියලුම අවදානම් පාලනය කිරීම
  • Risk Identification
අවදානම් හදුනාගැනීම ප්‍රධාන කොටස් 5කට වෙන් කරන්න පුලුවන්.
  1. Technology Risks - තාක්ෂණික අවදානම් - database ඒකක අැතිවෙන්න පුලුවන් ප්‍රශ්න ඒක උදාහරණයක්
  2. People Risks - මිනිසුන් නිසා අැතිවන අවදානම් - staff ඒකේ අැතිවන ප්‍රශ්න
  3. Organizational Risks - සංවිධානය නිසා අැතිවන අවදානම් - Organization ඒකේ පාලනය මාරු වෙලා වෙනස් මූනු තනතුරු වලට පත්වීම
  4. Requirements Risks - ව්‍යාපෘතියේ අවශ්‍යතා නිසා අැතිවන අවදානම් - පාරිභෝගිකයාට අවශ්‍යතා ගැන තේරෙන්නෙ නැති වුනාට පස්සෙ
  5. Estimation Risks - ව්‍යාපෘතිය අැස්තමේන්තු ගත කිරීමේදී වන අවදානම් - අැස්තමේන්තු ගත කරපු කාලය වගේම අැස්තමේන්තු ගත කරපු කාලය වෙනස් වීම
  • Risk Analysis 
අවදානම් වෙන වෙනම අරගෙන ඒවාගෙ සම්භාවිතාව හා බරපතලකම තේරුම් ගන්නවා. සම්භාවිතාව very low, low, moderate ,high, very high විදියටත් බරපතලකම catastrophic, serious, tolerable, insignificant විදියටත් බෙදන්න පුලුවන්.
  • Risk Planing
 අවදානම් පාලනය කරගන්න උපාය මාර්ග පාවිච්චි කරනවා.
  1. වලක්වාගන්නා උපායමාර්ග
  2. හානි අවම කරගන්නා උපායමාර්ග
  3. අවිනිශ්චිත උපායමාර්ග
  • Risk Monitoring
හදුනාගත්තු ඒක් ඒක් අවදානම් පිලිවෙලට තීරණය කරනවා වෙන්න තියෙන සම්භාවිතාවන් විශාලද කුඩාද කියන දේ. අවදානම් නිසා ඉස්සර අැතිවුනු බලපෑම්මද තවමත් අැතිවෙන්නෙ කියන දේ. මේ ඒක් ඒක් කාරණාවන් ප්‍රගති රැස්වීම් වල කථා කරන ඒකත් Risk Monitoring වලට තමයි අයිති වෙන්නෙ.

මෙන්න මේ විදියට Software Engineering පාඩම් මාලාව අපි මෙතනින් නිමා කරනවා. ලැබුනු ඉල්ලීම් කිහිපයක් අතරින් හොදම ඉල්ලීමට තැනක් දෙන්න අපි බලාපාෙරොත්තු වෙනවා. 






Monday, June 13, 2016

Software Engineering (Project Management) ඉගෙන ගනිමු - 6 පාඩම

ටික දවසකට පස්සෙ අායෙත් ඔන්න කියපු විදියටම Software Engineering අලුත්ම පාඩමක් අරන් අදත් අාවා.
අද අපි කථා කරන්නෙ Project Management වල basics ගැන.

Project Management ප්‍රධාන කොටස් 4කට බෙදන්න පුලුවන්.

  1. Management Activities (කලමණාකරන ක්‍රියාවලිය)
  2. Project Planning (ව්‍යාපෘති නිර්මාණය)
  3. Project Scheduling (ව්‍යාපෘති උප ලේඛණය කිරීම )
  4. Risk Management (අවදානම් කලමණාකරණය)
 Project management හුගක් වෙලාවට වැඩ කරන්නෙ Software ඒක වෙලාවට deliver වෙලාද, අදාල කාල සටහනට අනුවද පියවර සිද්ධ වෙලා තියෙන්නෙ , organization ඒකට ඔින වෙලා තිබ්බ requirements නියමිත විදියට සම්පුර්ණ වෙලා තියෙනවද , ගිහින් තියෙන වියදම budget ඒකට ගැලපෙනවද කියන දේවල් තමයි check කරන්නෙ.


  1. Management Activities
කලමණාකරණ ක්‍රියාවලිය ප්‍රධාන කරුණු කිහිපයක් යටතේ වෙන් කරන්න පුලුවන්.

  • Proposal Writing (යෝජනා සටහන් කරගැනීම)
  • Project planing and scheduling (ව්‍යාපෘති සැලසුම් කිරීම සහ සටහන් කරගැනීම)
  • Project costing (ව්‍යාපෘතියට යන වියදම ගණනය කිරීම)
  • Project monitoring and reviews (ව්‍යාපෘතිය පාලනය හා පසු විපරම)
  • Personnel selection and evaluation (පුද්ගල තෝරාගැනීම හා පරීණාමණය)
  • Report writing and presentations (වාර්තා ලිවීම හා ඉදිරිපත් කිරීම)
Project Manager කියන්නෙ කවුද? මොනවද කරන්නෙ?

    Project Manager සම්පූර්ණයෙන්ම project ඒකේ ව්‍යාපෘති වාර්තාව ලිවීම සම්බන්ධව වග කිව යුතුයි. ඔහු පාරිභෝගිකයාට හා ව්‍යාපෘති භාර අායතනයට යන දෙකටම ඒ සම්බන්ධව වග කියනවා. ව්‍යාපෘති වාර්තාව සාමාන්‍යයෙන් ලියවෙන්නෙ සංක්ෂිප්තව පැහැදිලි වාර්තාවක්. ඒකෙ වැදගත්ම තොරතුරු ටික වාර්තාවට අැතුලත් වෙනවා.
   ප්‍රගති වාර්තා සමාලෝචන රැස්වීම් වලදී මේ තොරතුරු ඉදිරිපත් කරන්න හැකියාව තියෙන්න ඔින.

  • Project ඒකට අවශ්‍ය කාර්ය මණ්ඩලය බදවා ගැනීම
         කට්ටිය බදවගන්න කොට අදහස් වලින් පරිපූර්ණ අත්දැකීම් වලින් පරිපූර්ණ පරමාදර්ශී චරිත ලැබෙයි කියලා බලාපොරොත්තු වෙන්න බෑ. ඒ වගේම ඒ වගේ චරිත ලැබුනොත් ඒ අයට කරන්න වෙන ගෙවීමත් ව්‍යාපෘති ඒකේ අයවැයට දරාගන්න පුලුවන් වෙයි කියලා හිතන්න අමාරුයි. හැම වෙලාවකම අායතනයක් කාර්ය මණ්ඩලයේ හැකියාවන් වර්ධනය වීමක් බලාපොරොත්තු වෙනවා ව්‍යාපෘතියක් මගින්...

  • Project ඒක සැලසුම්ගත කිරීම
         ව්‍යාපෘතියක වැඩිම කාලයක් ගතවන ක්‍රියාවලිය තමයි මේක. ව්‍යාපෘතිය ගැන අදහස ඔලුවට අාපු දවසෙ ඉදන් භාර දෙන දවස වෙනකන්ම නොනවත්වා කෙරෙන ක්‍රියාවලියක්. අලුත් තොරතුරු ඒකතු වීමත් ඒක්කම සැලසුම් ක්‍රමවත්ව වෙනස් කරගන්න පුලුවන්. ප්‍රධාන software plan ඒකට ගැලපෙන විදියෙ කුඩා කුඩා plans වලින් හුගක් දුරට කාල සටහනට හා අයවැයට ගැලපෙන විදියෙ plan ඒකක් හදාගන්න පුලුවන්.
 

කුඩා plans කිව්වම හුගක් දුරට අයිති වෙන්නෙ...

  1. Quality Plan (ප්‍රමිති සැලැස්ම)
  2. Validation Plan ( වලංගුතාවය පරික්ෂා කිරීමේ සැලැස්ම )
  3. Configuration Management Plan( අාකෘති කලමණාකරන සැලැස්ම )
  4. Maintenance Plan (පවත්වාගෙන යාමේ සැලස්ම)
  5. Staff Development Plan(කාර්ය මණ්ඩල සංවර්ධන සැලැස්ම)

  • Project Plan ඒකක සැකසුම
  1. Introduction (හදුන්වාදීම)
  2. Project Organization (ව්‍යාපෘති සංවිධානය)
  3. Risk Analysis (අවදානම් විශ්ලේෂණය)
  4. Hardware and software resource requirements (දෘඩාංග හා මෘදුකාංග අවශ්‍යතා)
  5. Work Breakdown (කාර්යයන් බිදවැටීමකදී ගන්නා පියවර)
  6.  Project Schedule (ව්‍යාපෘති කාල සටහන)
  7. Monitoring and reporting mechanisms ( යාන්ත්‍රණ පාලනය හා ඒවා පිලිබද වාර්තා ලබා ගැනීම )
  • Project Scheduling 
          ව්‍යාපෘතිය කොටස් වලට කඩලා ඒ ඒක් ඒක් කොටස කරන්න යන කාලය හා සම්පත් අැස්තමේන්තු ගත කරනවා. වැඩ කරද්දි ඒක දිගටම වැඩ වැටෙන විදියට කාර්යයන් පිලියෙල වෙන්න ඔින.
          සමහර වැඩ කරද්දි ඒ වැඩ මත තවත් වැඩ රදා පවතිනවා. කලින් වැඩේ කරන්නෙ නැතුව අලුත් වැඩකට යන්න බැරි විදිහෙ වැඩ පුලුවන් තරම් අවම කරන්න ඔින. Scheduling කියන දේ project managersලාගේ කැපවීම උනන්දුව වගේම අත්දැකීම් මතත් රදා පවතිනවා.

  • Scheduling කරද්දි අැති වෙන්න පුලුවන් ප්‍රශ්න
හුගක් වෙලාවට ප්‍රශ්න වල සංකීර්ණත්වය අැස්තමේන්තු ගත වෙන නිසා Solution ඒකක් හදාගන්න වැඩි වියදමක් යනවා. ව්‍යාපෘතියක ඵලදායීතාවය කිසිම වෙලාවක ඉන්න ඔලු ගෙඩි ගාන මත රදා පවතින්නෙ නැහැ. වැඩ ඉවර කරගන්න පරක්කු වුන project ඒකකට මිනිස්සු තවත් ඒකතු කරන ඒක ඒච්චරම හාෙද දෙයක් නෙවෙයි ඒකට හේතුව කථා බහ වැඩි වීම. බලාපොරොත්තු නොවෙන දේවල් ඔින වෙලාවක වෙන්න පුලුවන් project ඒකකට වුනත්.

ඊලග පාඩමෙන් අපි Risk Management ගැන කථා කරමු....






Wednesday, June 1, 2016

Software Engineering ඉගෙන ගනිමු - 5 පාඩම

ටික දවසකට පස්සෙ යාලුවනේ ඔන්න අදත් අාවා අලුත් පාඩමක් අරගෙන...

අද කථා කරන්නෙ ගිය පාර පාඩමේ ඉතුරු කොටස....
Component Based Software Model ගැන තමයි කථා කරන්න තියෙන්නෙ...

මේකෙදි වෙන්නෙ පරණ Software ඒකතු කරලා අලුත් Software හදන process ඒක...

මේ වගේ දෙයක් කරන්න සෑහෙන පලපුරුද්දක් තියෙන්න ඔින.. ඒ කියන්නෙ කෝමත් පරන Software ගැන හොද අවබෝධයක් තියෙන්න ඔින.
අපිට හොද උදාහරණයක් ගත්තොත් ඒහෙම,
අලුතින්ම පටන් ගත්තු බැංකුවක් ඒ බැංකුවෙ ඉන්න අයටත් ලොකු දැනුමක් නෑ IT පැත්තෙන් වැඩ කරන් යන්න. අපිව ගන්නවා ඒ ගොල්ලන්ගෙ උපදේශකයෙක් විදියට, බැංකුවට ඔින වෙනවා මෙච්චරකල් වැඩ කරපු manual system ඒක අත් අැරලා software වලින් හදපු ක්‍රමයකට යන්න. ඉතින් ඒකට ඒගොල්ල ඔයාගෙන් ඒක කරන්න ඔින විදිහ විමසනවා. කරන්න පුලුවන් ක්‍රම කිහිපයක් අතරේ හොදම ක්‍රමයක් තමයි Component Based Model ඒක කියන්නෙ. ඒකට හේතුව වෙන්නෙ අපේ Bank ඒකේ අයට අලුත්ම Software ඒකක් හදාගන්න දැනුමකුත් නෑ. අලුත්ම Software ඒකක්  ඒක්ක වැඩ කරන්න තේරෙන්නෙත් නෑනෙ ලොකුවටම. අනික අලුත් software ඒකක් කරන්න සෑහෙන කාලයක් ගතවෙනවානෙ. මේ ගොල්ලන්ට ඒච්චර කාලයක් නෑනෙ බලන් ඉන්න. ඉතින් තියෙන හොදම ක්‍රමයක් තමයි component based system කියන්නෙ.

මේකෙ ප්‍රධාන පියවර කිහිපයක් තියෙනවා.

  1. Component Analysis (තමන්ට තියෙන දේවල් check කරනවා)
  2.  Requirements modification ( අවශ්‍යතා තමන්ට ඔින විදියට වෙනස් කර ගන්නවා.)
  3. System design with reuse (කලින් කියපු අවශ්‍යතා වලට ගැලපෙන්න System ඒක වෙනස් කර ගන්නවා.)
  4. Development and integration (කලින් කියපුු කාරණා අනුව develop කරන්න පටන් ගන්නවා)
මේවගෙ  වාසි කිහිපයක්ම තියෙනවා.
  • අලුතෙන් නිර්මාණය වීමක් වෙන්නෙ නෑනෙ. ඒ නිසා කාලය අඩුයි.
  • මුදලුත් ගොඩක් වැය වෙන්නෙ නෑ
  • පරණ කලින් පාවිච්චි කරපු software නිසා හිතේ බයකුත් නෑ. Risk ඒක අඩුයි.
ඒ වගේම තමයි අවාසි
  • පාරිභෝගිකයට ඔින කරන දේවල් ඒ විදියටම දෙන්න විදිහක් නෑ.
  • තමන්ගෙ පරණ Software නැතුව පිටින් ගත්ත software වලින් හදනවානම් කාලය ගැන කිසිම අදහසක් කියන්න අමාරුයි.

ඒ කොටසින් Software Models ගැන පාඩම් කොටස අවසන් වෙනවා.
ඊලගට කථා කරන්නෙ Project Management , Software Engineering වල තවත් අලුත් කොටසක්.
ඉක්මනට ඒ පාඩමත් ඒක්ක අායෙත් හමු වෙනකන් සුභ ගමන් :D! 


Thursday, May 19, 2016

Software Engineering ඉගෙන ගනිමු - 4 පාඩම

මේ පාර අපි කථා කරන්නෙ පාඩමේ ඊලග කොටස...

ගිය සතියෙ අපි කථා කලේ Incremental Development ගැන. මේ පාර ඒතනින් ඒහාට අපි කථා කරනවා.

3. Spiral Model

මේ Model ඒක පාවිච්චි වෙන්නෙ බොහොම විශාල, වටිනා,  සංකීර්ණ Projects වලට. Waterfall Model ඒකේ Development Phases තිබුනෙ දිය අැල්ලක ගලන පඩිපෙලක් වගේ. ඒත් මේකෙ තියෙන්නෙ Loops විදියට. මේ හැම loop(චක්‍රයකදිම) Risk Analysis (අවදානම් විශ්ලේෂණයක්) කරනවා. ඒ ගැන Project Management  වලදි අපි කථා කරමු.  

පලමු චක්‍රය අැතුලෙදී Requirements ටික ඒකතු වෙනවා. ඊ ලගට ඒ සේරම ටික පරීක්ෂා කරනවා(Review). ඊට පස්සෙ Risk Analysis කරලා Prototype ඒකක් නිකුත් කරනවා. පියවර යටතේ මොන දේවල් කෙරුනත් හැම පියවරක් අන්තිමටම Risk Analysis ඒකක් කෙරිලා Prototype ඒකක් නිකුත් වෙනවා. අන්තිම loops වලදී designing, validations,testing වගේ දේවල් කෙරෙන්නෙ...






4. Agile Software Model
මේ ක්‍රමයේදී ප්‍රධාන පියවර 6ක් අපි කථා කරනවා.
  1. Planing
  2. Requirement Analysis
  3. Design
  4. Coding
  5. Testing
  6. Documentation
බොහොම කෙටි කාලයකින් කෙරෙන පියවර වලින් හැදුනු  projects මේ ගොඩට අයිති වෙනවා.Project ඒකට ලොකු කාලයක් යන්න පුලුවන්. මේකෙදි Documentation ඒකක් සිද්ධ වෙන්නෙ නෑ. මොකද Documents හද හද ඉන්න කාලයක් නෑ. Team ඒකේ කට්ටිය කථා වෙලා තමයි තීරණ ගන්නෙ. මේකෙ පියවරකට යන්නෙ මාසෙකටත් වඩා අඩුවෙන්... 

මේකෙ ඒක් පියවරකදි Product ඒක සම්පූර්ණයෙන්ම develop කරලා test කරලා ඉවර කරනවා. ඉවර වෙන කොටස usersලාට පාවිච්චි කරන්න දෙනවා. Product ඒකේ improvement ඒක ඉවරයක් වෙන්නෙ නෑ.
මේකට උදාහරණයක් විදියට Firefoxලා දෙන BETA Version  ඒක පෙන්වන්න පුලුවන්. හුගක් වෙලාවට Open Source කට්ටිය තමයි මේක පාවිච්චි කරන්නෙ...

5.Cowboy Coding
මතකද කව්ද බෝයි?? අන්න ඒ වගේ තමයි මේකත්. තනියම තමයි කෙරෙන්නෙ. ඒ කියන්නෙ තනි Developer කෙනෙක් තමයි වැඩ කරගන්නෙ. 
කලින් ඒවගෙ වගේ හරි ක්‍රමයක් පාවිච්චි වෙන්නෙ නෑ.හොදයි කියලා හිතෙන දේ කරනවා...
තනි කෙනෙක් කරන නිසා Resources වැයවෙනවා අඩුයි. පොඩි projects වලට හොදට ගැලපෙනවා.
ප්‍රධානම අවාසිය තමයි, Testing කරන්නෙ නැති නිසා Product ඒකේ quality ඒක ගැන කිසි වගකීමක් නෑ.


6. Extreme Programming(XP)
ප්‍රධානම වාසිය තමයි Customerගේ feedback ඒකක් අරන් ඒවා අනුව වැඩ කරන ඒක.මේක හැමදාම කෙරෙන දෙයක්. Pair Programming සංකල්පය පාවිච්චි වෙන්නෙත් මේකට. (Programmer කෙනෙක් කලින් ගහපු Code ඒකක් වෙන Programmer කෙනෙක් වෙනස් කරන ඒක ). ප්‍රධාන පියවර 4යි.
  1. Coding
  2. Testing
  3. Listening
  4. Designing
හැම වෙලාවකම Requirements අලුත් වෙන Projects වලට recommend කරන්න පුලුවන්, ඒ වගේම වේගවත්ම ක්‍රමය කියන්නත් පුලුවන්.


ඊලග පාඩම් මාලාවෙන් Component Based Software Model ගැන කථා කරමු....

   



Saturday, May 14, 2016

Software Engineering ඉගෙන ගනිමු - 3 පාඩම

Software Engineering 3 පාඩමෙන් කථා කරන්නෙ Software Process ගැන...

Software process model කියන්නෙ process ඒකක abstract representation (සාරාංශයමය ඉදිරිපත් කිරීමක්)

සාමාන්‍ය software process models ප්‍රධාන කොටස් 3යි.

1. Waterfall Model
2. Iterative Process
3. Component - Based Software Engineering

1. Waterfall Model

මෙික ප්‍රධාන පියවර 5කින් සමන්විත වෙනවා.

   1. Requirements analysis and Definition
   2. System and Software Engineering
   3. Implementation and unit testing
   4. Integration and system testing
   5. Operation and Maintenance

මෙහි වැදගත් කරුණු :-

1. මේකෙ bugs කලින් හොයාගන්න පුලුවන්නම් වටිනාකම වැඩියි.
2. හැම step ඒකක් අන්තිමටම documentation කරනවා .
3. Pure Waterfalll Model ඒකක හැමතිස්සෙම විශ්වාසනීයත්වය වැඩියි.
4. පහලට ගියොත් ගියාම තමයි කලින් පියවරට නැවත ඒන්න බෑ. (දිය ඇල්ලක් වගෙම තමයි )

වාසි :-

     1. හැම stage ඒකකදිම documentation ඒකක් කරන නිසා software ඒකේ දර්ශනය පැහැදිලියි, ඉදිරියට               වැඩ කරන් යන්න ලේසිි...
     2. වැඩ කරන්න පිලිවෙලක් තියෙන නිසා ඉතාම ස්ථායි ක්‍රමයක් වෙනවා මේක.

අවාසි :-

  1. නිතර නිතර වෙනස් කරන්න අමාරුයි.
  2. customerගෙ අවශ්‍යතා වලට අනුව වෙනස් කරන්න අමාරුයිි.
  3. කරන පියවර වලින් ඒකක්වත් 100%ක් සම්පූර්ණ කරන්න අමාරුයි.
  4. resources නාස්තියක් වෙනවා. ( මේ නිසා පොඩි සමාගම් වලට ගැලපෙනවා. )
  5. risk management (අවදානම් කළමණාකරණය ) සම්පුර්ණ වෙන්නෙ නෑ.
Waterfall වල තිබුනු අවුල තමයි customer කියන කියන විදියට වැඩක් කෙරෙන්නෙ නෑ. ඒ නිසා Iterative Process විදියට අලුත් ක්‍රම කිහිපයක් අැවිත් තියෙනවා.

  1. Evolutionary Development
  2. Incremental Development
  3. Spiral Model
  4. Agile Software Model
  5. Extream Programming(XP)
1. Evolutionary Development
         අපි තව මේකට කියනවා Throw-Away-Prototyping කියලා. ඒහෙම කියන්න මූලික හේතුව තමයි, Waterfall Model ඒකේ තිබුනු ලොකුම අවුල තමයි customer ඒකත් වැඩි සම්බන්ධයක් නැති කම. මේ අලුත් ක්‍රමයෙදී customerට හැමතිස්සෙම ඒයාගෙ software ඒකේ prototype හද හද දෙනවා ඒයාට ඒවාගෙ අඩුපාඩු බලලා කියන්න කිියලා... ඊට පස්සෙ ඒක throw කරලා තමන්ගෙ Software ඒක හදනවා. මේ විදියට කිහිප පාරක්ම වෙන නිසා තමයි මේකට Throw Away Prototyping කියලා කියන්නෙ. මේක ගොඩක්ම හොද Small and Medium software වලට තමයි.

මෙහි වාසි :-
  1. User/ Customer ගෙ අවශ්‍යතා තේරුම් ගන්න පහසුයි.
  2. Specifications අපිට ඔින විදියට වෙනස් කරගන්න පුලුවන්.
මෙහි අවාසි :-
  1. හැමතිස්සෙම වෙනස් වෙන නිසා improvement ඒක check කරන්න අමාරුයි.
  2. ඒ වගේම software ඒකේ documentation කිරිල්ලක් වෙන්නෙත් නෑ.
  3. නිතරම වෙනස්කම් කරන නිසා structure ඒක දුර්වලයි.
  4. අනික මේ කියන විදියට phototypes හදන්න විශේෂ හැකියාවක් තියෙන්න ඔින.
  5. prototypes හද හද ඉන්න ගිහින් software ඒක ඉවර කර ගන්න වෙලාව මදි වෙන්න පුලුවන්.
2.Incremental Development
         මේකෙදි අපි කෙලින්ම develop කරන්නෙ original software ඒකමයි. prototypes කරන්නෙ නෑ. අපි ගත්තොත් A,B,C,D,E කියලා 5ක්, ඒකෙ A B දෙන්නගෙ priority ඒක වැඩිනම් ඒ දෙන්නව priority ඒක වැඩි කෙනාගෙ ඉදන් කරගෙන යනවා. ඊලග step ඒකේදී A B දෙන්නගෙ වෙනස්කම් කරනවා. ඊලග step ඒකේදි C D E priority ඒක වැඩි වෙන පිලිවෙලට කරගෙන ගිහින් A B C D E  කියන 5දෙනාගෙම අඩුපාඩු හදනවා.

මෙහි වාසි:-

  1. වැඩ ඉවර වෙන කොටස තමන්ට වැඩ කරන්න ගන්න පුලුවන්.
  2. මොකක් හරි error ඒකක් නිසා software ඒකම සම්පුර්ණයෙන්ම corrupt වෙන්නෙ නෑ.
  3. අපි වැඩ කරන්න දෙන software පංගුව prototype ඒකක් තරමටම developer ට වැදගත් වෙනවා.
  4. හැම ඉදිරි පියවරකදිම මුලින් කරපු priority ඒක වැඩි පියවර අායෙ අායෙ check වෙනවා.

මේ පාඩමේ ඉතුරු ටික ඊලග ලිපියෙන් කථා කරමු...

       









Thursday, May 12, 2016

Software Engineering ඉගෙන ගනිමු - 2 පාඩම

මාස 2ක නිහැඩියාවකට පස්සෙ අායෙත් Notes දාන්න හිතුනා...

අපි ගිය පාර Software Crisis, Software Process ගැන කථා කලා. මේ පාර කථා කරනවා Software Engineering වල අරමුණු ගැන...

Objectives of Software Engineering


  • Maintainability (පවත්වාගෙන යාම)
  • Correctness (නිවැරදි බව)
  • Re-usability (නැවත භාවිතා කිරීමේ හැකියාව)
  • Testability (පරීක්ෂා කිරීමේ හැකියාව)
  • Reliability (විශ්වාසනීයත්වය)
  • Portability (පහසුවෙන් ගෙන යාමේ හැකියාව)
  • Adaptability (තත්වයන්ට අනුව සකස් වීම)

Software Development Life Cycle (SDLC)
        මේකෙදි අපි කථා කරන්නෙ Software ඒකක් develop වෙද්දි පසු කරන අවධි සම්බන්ධයෙන්...

  • Requirements
  • Design
  • Implementation
  • Testing
  • Maintaince
CASE - Computer Aided Software Engineering
       Software Process Activities වලට support කරනවා. ප්‍රධාන කොටස් 2යි.
  • Upper Case tools - මුල් පියවර වලට උදව් වෙනවා. (Analyze & Design )
  • Lower Case tools - පසු පියවර වලට උදව් වෙනවා. (Implementing and Testing)

Attributes of Software Engineering (ගුණාංග)
  • Maintainability (පරිණාමණය වීමට අැති හැකියාව)
  • Dependability (විශ්වාසනීයත්වය, අාරක්ෂාව හා System failure ඒකකදී හානියක් නොවීම)
  • Efficiency (System resources නාස්ති නොකර පාවිච්චි කිරීම)
  • Usability (කරදරයකින් තොරව software පාවිච්චි කිරීම)

Challenges of Software Engineering 
  • Legacy Challenge (පාරම්පරික අභියෝගය) - වසර ගානකට කලින් හදපු software maintain කිරීම
  • Heterogeneity Challenge (network ඒක හරහා  systems maintain කිරීම)
  • Delivery Challenge(හැකි ඉක්මනින් systems deliver කිරීම)

ඊලග ලිපියෙන් අපි software process model ගැන කථා කරමු.

 










Saturday, March 12, 2016

Software Engineering ඉගෙන ගනිමු - 1 පාඩම

කොහොමද යාලුවන්ට, අද අපි කථා කරන්නෙ Software Engineering Basics ගැන

Software ,Generic software හා Bespoke software කියලා ප්‍රධාන කොටස් 2කට බෙදන්න පුලුවන්.

1.Generic software: stand-alone software කියන්නෙ මේවට. open market ඒකට අරන් යන software.
උදා:     spreadsheet applications
            database systems
            text editors වගේ දේවල්

2.Bespoke software: විශේෂ customer කෙනෙක් සදහාම නිර්මාණය වුන software
උදා:    banking systems
           air traffic control systems

ඒ වගේම software  system software, application software කියලා ප්‍රධාන කොටස් 2කට බෙදන්න පුලුවන්.
System software: පරිගණකයේ resources manage කරගන්නයි application programme වල  execution
වෙන විදිහ check කරන්න තියෙන software.

Application software: end user ඒ කියන්නෙ පාරිභෝගිකයාට අදාල වන විශේෂ වන ක්‍රියාවලියකට දායක වන software.

 System software ප්‍රධාන කොටස් කිහිපයක් යටතේ වර්ග කරන්න පුලුවන්.
1.Operating Systems
  I.Client operating systems
  II.Network operating systems

2.Database management systems

3.Network Software
  I.Network management software
  II.Server software
  III.Security and encryption software
  IV.Middleware

4.Development tools සහ Programming language software
 I.Software development tools
 II.Testing tools

5.General business productivity applications
 I.Word processors
 II. Spreadsheets
 III.Simple databases
 IV.Graphics applications
 V. project management software

6.Home use applications
 I.Games
 II.Media players

7.Cross-industry application software
 I.  Professional accounting software
 II.Human resource management
 III.Customer relations management software
 IV.Geographic information system software

8.Vertical market application software
 I.Software for a specific industry(manufacturing, health care, telecom)

9.Utilities software
 I.Anti virus
 II.Compression programme
 III.Search engines
 IV.Font
 V.Voice recognition software

software engineering වල අර්ථ කථනය ගොඩනැගුනේ 1968දි  "software crisis" කියන තේමාව යටතේ පැවැත්වුනු සමුළුවේදීයි.

software crisis(මෘදුකාංග අර්බුදයට හේතු වූ කරුණු)

i. පරිගණක දඩාංග තාක්ෂණය අධි වේගයෙන් වර්ධනය වීම
ii. ඒහි ප්‍රතිපලයක් වශයෙන් සංකීර්ණ මෘදුකාංග නිර්මාණය කරන්නට හැකිවීම
iii. ඒසේ වුවත් මෙි සංකීර්ණ මෘදුකාංග තාක්ෂණය දරා ගැනීමට තරම් ඒ සදහා නිවැරදි සම්මත ක්‍රමවෙිදයන් පැවතුනේ නැත.
iv. මෙි නිසා සිදුකරන මෘදුකාංග අයවැයට වඩා විශාල මුදලකට මෙන්ම නියමිත කාලයටත් වඩා වැඩියෙන් නිම වන්නට විය.
v. මෘදුකාංග අඩු ප්‍රමිතියකින් යුක්ත වන්නට විය.
vi. මෘදුකාංග ඒහි අවශ්‍යතා සම්පූර්ණ කලේ නැත.
vii. ව්‍යාපති කලමණාකරණය කර ගැනීමට නොහැකි වූ අතර නඩත්තු කිරීමටද අපහසු විය.

නව මදුකාංග නිර්මාණය කිරීම ප්‍රධාන ක්‍රම 3ක් යටතේ සිදුවිය.

1.  නව මෘදුකාංග සංවර්ධනය කිරීම
2. සංවිධානයකට සුදුසු වන පරිදි generic software හදුනා ගැනීම
3. පෙර භාවිතා කළ මෘදුකාංගය නැවත පාවිච්චි කිරීම

 මෘදුකාංග ක්‍රියාවලිය (Software process)

Software Engineering වල පාවිච්චි වෙන ක්‍රමවත් පද්ධතියක් විදියට වන අාරම්භයක් software process ඒකක් කියලා හදුන්වන්න පුලුවන්. අැත්තටම software process ඒකක් කියන්නෙ ක්‍රියාවලි කිහිපයක් අනුපිලිවෙලින් සිදුවීමක්. මේ ක්‍රියාවලිය ගමන් කරන්නෙ සම්පුර්ණ මෘදුකාංගයක් අාරම්භයේ සිට අවසන් වන තැන දක්වා...  
ඔිනෑම software ඒකක් නිර්මාණය වීමේදි සිදුවෙන මූලික ක්‍රියාවන් 4ක් තියෙනවා.

1. Software Specification (මෘදුකාංග විස්තර)
    i.Analysis ( විශ්ලේෂණය කිරීම)
    ii. Specification ( විස්තර පිලිවෙලකට බෙදා ගැනීම)

2. Software Development(මෘදුකාංග විකාශනය)
    i. Design (නිර්මාණය කිරීම)
    ii. Implementation (ක්‍රියාවට නැංවීම)
    iii. Documentation (ලේඛන ගත කිරීම)

3. Software Validation (මෘදුකාංග වලංගුකරණය)
     i. Testing (පරික්ෂා කිරීම)
     ii. Debugging (වැරදි අඩුපාඩු නිවැරදි කිරීම)

4. Software Evolution ( මෘදුකාංග විකාශනය)
    i. Maintenance (පවත්වාගෙන යාම)

මේ ලිපියෙ අඩුපාඩු තියෙනවනම් කියන්න. මේකෙ දෙවෙනි ලිපියත් ඒක්ක ඉක්මනටම හමුවෙන්නම්...




Saturday, February 27, 2016

web ඉගෙන ගනිමු - 8 පාඩම

කොහොමද යාලුවන්ට, අද අපි කථා කරන්නෙ CSS වල තවත් ප්‍රධාන කොටසක්.
අපි type කරන code ඒක page ඒක scroll කලා කියලා නැති වෙන්නෙ නැතුව ඒ position ඒක නොවෙනස්ව තියෙනවනම් අපට ඒක සෑහෙන්න වැදගත් වේවි.
ඒක කරන්න අපි පාවිච්චි කරන්නෙ position කියන property ඒක.
position ඒකෙ ප්‍රධාන අනු කොටස් කිහිපයක් තියෙනවා.

1. Position:fixed
මේකේදි position ඒක fix වෙනවා. තවත් පැහැදිලි කරනවනම් page ඒක scroll කලා කියලා  මේ දේවල් චලනය වෙන්නෙ නෑ. ඒක ඒතනට fix වෙලයි තියෙන්නනෙ....

ex:

p.fixed_posion
{
     position: fixed;
     top:20px;
     left:20px;
}

2.Position:relative
මේකෙදි position ඒක අදාල property ඒකේ original position ඒකත් ඒක්ක වෙනස් වෙනවා. ඒකයි මේකෙ position ඒක relative කියන්නෙ.

ex:

p.relative_position
{
      position:relative;
      left:20px;
}

3.Position:absolute
මේකෙදි පාවිච්චි වෙන absolute position ඒකේදි position ඒක ගැන හිතන්නෙ නැතුව properties පාවිච්චි කරන්න පුලුවන්.මේක හුගක් වෙලාවට පාවිච්චි කරනවා headers දාන කොට.

ex:

h1{
       position:absolute;
       left:100px;
}

අපි type කරන code ඒකකට shadow ඒකක් වුනත් දාන්න පුලුවන් CSS පාවිච්චි කරලා....

ex:

h1{
        color: white;
        text-shadow: 2px 2px 2px #000000;
}

ඒ වගේම div tag ඒක පාවිච්චි කරලා වෙන් කරන කොටසකට වුනත් shadow ඒකක් දාන්න පුලුවන්.

ex:

div{
          background-color: yellow;
          box-shadow: 10px 10px;
}

මේ කොටසින් CSS ඉවර වෙනවා. අපි ඊලග පාර ඉදන් Software engineering basic theories කථා කරමු.

Monday, February 22, 2016

web ඉගෙන ගනිමු - 7 පාඩම

අද අපි කථා කරන්නෙ CSS දෙවන කොටස...

මුලින්ම කථා කලොත් padding ගැන,
padding property ඒක පාවිච්චි වෙන්නෙ අපි හදාගන්න ඉඩේ size ඒක තීරණය කරන්න...

ex:

p{
padding-top: 10px;
padding-right: 10px;
padding-bottom: 10px;
padding-left: 10px;
}

මේකෙ top කියන්නෙ උඩින් ඉඩ තියෙන ගාන. right left කියන්නෙ දකුණින් වගේම වමින්  ඉඩ තියෙන ගාන. bottom පහලින් තියෙන ඉඩ තීරණය කරනවා.

මේ ලොකු code ඒකම short කරලා පහල විදියට type කරන්න පුලුවන්.

ex:

p{
padding: 50px 60px 70px 80px;
}

මේකෙ පිිලිවෙල ඒන්නෙ top right bottom left පිලිවෙලට...

p{
padding: 50px 60px 70px;
}


මේ විදියට අාවොත් නම් top right bottom.

p{
padding: 50px 60px;
}

values 2යි නම් තියෙන්නෙ top right

p{
padding: 50px;
}

මේකෙන් කියවෙන්නෙ values 4ම 50px වෙනවා කියලා...

ඊලගට කථා කරමු div tag ඒක ගැන
div පාවිච්චි වෙන්නෙ කොටස් වලට කඩා ගන්න.

div කියන tag ඒක html කොටසේ යෙදුවට පස්සෙ

div{
width: 50px;
height: 50px;
}

div කොටසක width height කොටස්2 අනිවාර්යයි.
ඒ වගේම max-width, max-height , min-width, min-height tags වුනත් div කොටසට භාවිතා කරන්න පුලුවන්.

හුග දෙනෙක්ට තිබ්බ ගැටලුවක් තමයි font ඒක bold italic කරන හැටි.
ඒකට ගන්නෙ

p{
font-weight: bold;
}

ඊලගට කථා කරන්නෙ <a> tag ඒකට CSS දාන හැටි.

a.link{
               color:red;
}

a.visited{
              color:yellow;
}

a.hover{
              color:blue;
}

a.active{
              color:green;
}

මේකෙ a.link කියන්නෙ පවතින විදිහ අපි මුලින්ම දකින තැනදි පවතින විදිහ.
a.visited කියන්නෙ අපි කලින් බලලා තියෙන link ඒකක් අායෙත් පාරක් බලද්දි පෙන්වන විදිහ.
මේකට හොදම උදාහරනෙ තමයි google ඒකේ අපි කලින් බලපු link වෙනස් වෙලා පෙන්වන ඒක.
a.hover කියන්නෙ mouse ඒක ඒ link ඒක උඩින් අරන් යද්දි වන වෙනස්කම්.
a.active කියන්නෙ අපි click කරන link ඒක තවදුරටත් open වෙලානම් තියෙන්නෙ ඒක active link ඒකක් කියලා සලකනවා.

ඊලග පාඩමෙන් තවත් කොටසක්....

Sunday, February 14, 2016

web ඉගෙන ගනිමු - 6 පාඩම

අැත්තටම web පාඩම් මාලාව පාඩම් 6කටත් අැවිත්...

අද පොරොන්දු වුනා වගේම CSS පටන් ගන්නවා. මට යාලුවෙක් කිවුවා software engineering theories ඉදිරි පාඩමකින් කථා කරන්න පුලුවන්නම් හොදයි කියලා...
ඒ ගැන ඔයාලගෙ suggestionuත් අපිට  කියන්න.

අැත්තටම අපි html කථා කරද්දිත් css පොඩ්ඩක් කථා කලා.

අැත්තටම css කරන්නෙ ලොකු උදව්වක්. පිට ඉදන්  set වෙන css external file ඒකකින් පොඩි html code ඒකක් වුනත් ලස්සන කරන්න පුලුවන්!

css code ඒකක් මූලිකව කොටස් වලට කඩන්න පුලුවන්.
selector සහ deceleration විදියට...

selector ඒකේ දී අපි සදහන් කරන්නෙ මේක paragraph ද?, header ද?, footer ද? කියන මූලික කාරනාව.

deceleration ඒකෙන් කියවෙන්නෙ අපි දෙන selector ඒකේ properties වෙනස්  වෙන්නෙ කොහොමද කියන ඒක.

p{
  color: red;
}

උඩින් තියෙන code ඒකේ p කියන්නෙ  selector ඒක. curly bracket අැතුලෙ වැටෙන්නෙ deceleration ඒක.

ඊලගට අපි කථා කලොත් CSS වල selectors ගැන.

1.Element Selector
                  මෙතන දී මූලික වෙන්නෙ element ඒක. paragraph, header, element ඒකේ name ඒකෙන් තමයි මෙතනදි mention වෙන්නෙ.

h1{
        text-align: center;
        color:red;
}

2.ID Selector
                  මෙතනදි පාවිච්චි වෙන්නෙ element ඒකක අපි id කියලා ඒතනට භාවිතා වන නම.ඒ වගේම තමයි id ඒක පාවිච්චි වෙද්දි CSS කොටසෙදි id name ඒකට ඉදිරියෙන් "# " ලකුණ යෙදෙනවා.ඣක්

<p id="first"></p>  වුනොත් CSS කොටසට පාවිච්චි වෙන්නෙ first කියන කොටස.

#first{
             color:yellow;
             font-size: 20px;
}

3. CLASS Selector
                class selector ඒකේදි අපි භාවිතා කරන element ඒකේ class කියන attribute ඒක. මේකෙ css file ඒක වෙනම අදුරගන්න ". " ලකුණ පාවිච්චි වෙනවා.

<p class="center"></p> වුනොත් CSS කොටසට පාවිච්චි වෙන්නෙ center කියන කොටස.

.center{
              color:red;
              align-text:center;
}

මේකෙ විශේෂත්වය තමයි තවත් attribute ඒකක් තිබුනොත් class ඒක center වෙන ඒයාටත් මේ properties බලපානවා.

ex:

<h1 class="center"></h1> මේ header ඒකටත් උඩින් තිබ්බ CSS code ඒක බලපානවා.

මේකෙ තව විශේෂ දෙයක් තමයි අපිට attribute ඒකේ නමින්ම code ඒක හදාගන්න පුලුවන්.
කලින් උදාහරණයක්ම අපි ගත්තොත්...

<p class="center"></p> 

p.center{
                 color:red;
                 align-text:center;

}

මේක අපේ ඊට පස්සෙ උදාහරණය වුන <h1 class="center"></h1> ට බලපෑමක් කරන්නෙ නෑ. ඊට හේතුව අපේ CSS code ඒකේ "p.center" විදියට <p> tag ඒක define කරලා තියෙනවනෙ. ඒතකොට බලපාන්නෙ pට විතරයි.

CSS ගැන තවත් අලුත් දෙයක් ඊලග පාඩමෙන් කථා කරමු...










Sunday, January 31, 2016

web ඉගෙන ගනිමු - 5 පාඩම

අපි කිව්වා වගේ මේ පාර අපි කථා කරන්නේ table හැ‍ද‍ෙන හැටි

 table හදන්න ගන්නෙ <table> </table> tag ඒක.
මේ කොටස අැතුලෙ තමයි table ඒක පවතින්නේ...

table ඒකක් වුනාම table raws තියෙන්න ඔින. table columns තියෙන්න ඔින, ඒ වගේම table data තියෙන්න ඔිනේ.
table raw වලට <tr></tr> කියන tag ඒක පාවිච්චි වෙන්නෙ. columns නම් html වලදි auto recognize කරගන්නවා. table headers වලට පාවිච්චි වෙන්නෙ <th></th> කියන tag ඒක. table data වලට ගන්නෙ <td></td>.  අපි බැලුවොත් මේ table වල codings තියෙන්නෙ කොහොමද කියලා...

<table border="1">
      <tr>
              <th> Name</th>
              <th>Age</th>
              <th>Address</th>
      </tr>
      <tr>
             <td>Aruna</td>
             <td>40</td>
             <td>Ampara</td>
      </tr>
</table>

මේ code ඒක browser ඒකේ වැඩ කරන්නෙ පහත දක්වලා තියෙන විදියට...

The Table
මේකෙ table tag ඒකේ පාවිච්චි වෙන මූලික attributes තමයි width, border, id වගේ දේවල්.

තවත් වැදගත් කාරනාවක් තමයි colspan සහ rawspan ...

colspan වලින් කෙරෙන්නෙ ඒකම row ඒකේ තියෙන columns දෙකක් ඒකතු කරන ඒක.
code ඒක type වෙන්නෙ මෙහෙම...

<table border="1">
      <tr>
              <th> Name</th>
              <th colspan="2">Address</th>
             
      </tr>
      <tr>
             <td>Aruna</td>
             <td>Anuradhapura</td>
             <td>Ampara</td>
      </tr>
</table>

Colspan Mode

rowspan වලින් කෙරෙන්නෙ ඒකම column ඒකේ තියෙන raws දෙකක් ඒකතු කරන ඒක.
code ඒක type වෙන්නෙ මෙහෙම...

<table border="1">
      <tr>
              <th> Name</th>
              <td>Aruna</td>
      </tr>
      <tr>
             <th rowspan="2">Address</th>
             <td>Anuradhapura</td>
      </tr>
      <tr>
              <td>Ampara</td>
      </tr>
</table>

Rowspan mode

අපි ඊලග පාර ඉදන් CSS කථා කරමු...



Friday, January 22, 2016

Web ඉගෙන ගනිමු - 4 පාඩම

කෝමද යාලුවනේ අදත් කථා කරන්න හිතුවෙ HTML වල ඉදිරි කොටසක්...

මුලින්ම කියන්නම් මේ html වල Comment ඒකක් ගහගන්නේ  කොහොමද කියලා.
<!--ඔයාට type කරන්න ඔින comment ඒක-->
මෙහෙම type කරන්න හේතු වෙන්නෙ අපි tag ඒකක් නැතුව type කරන හැමදේම web page ඒකේ display වෙන ඒක.

ඒ වගේම කථා කරන්න අාපු ප්‍රධාන කාරනාව HTML වලට CSS කියන භාෂාව පාවිච්චි කරන්නෙ කොහොමද කියලා...

මේකට පාවිච්චි වෙන්නෙ <style > tag ඒක

CSS පාවිච්චි වෙන්නෙ Cascadin Style Sheet විදියට...

Web page ඒකකට css දාන්න ප්‍රධාන ක්‍රම 3යි.
1. Inline ක්‍රමය
2.Internal ක්‍රමය
3.External ක්‍රමය

1.Inline ක්‍රමය

මේ ක්‍රමේදී tag ඒක අැතුලෙම අපිට ඔින tag ඒක type කරනවා.style කියන attribute ඒක තමයි පාවිච්චි කරන්නෙ.

<h1 style="color:blue">This is a heading</h1>

2.Internal ක්‍රමය

මේ ක්‍රමේදී type වෙන්නෙ <head></head> ඒක අැතුලේ. style කියන tag ඒක පාවිච්චි වෙන්නෙ...

<html>
<head>
    <title>
        CSS හැදෙන හැටි
    </title>

    <style>
         body{background-color:yellow;
                                }
         h1{ color:red;
                               }
    </style>

</head>
<body>

<h1>CSS creating</h1>

</body>
<html>




3.External ක්‍රමය

මේ ක්‍රමේදී පිටින් හදපු css file ඒකක් අපේ html file ඒකට set කරගන්නවා.
මම හදාගන්නවා style.css කියලා css file ඒකක්.

<html>
     <head>
           <link rel="stylesheet" href="style.css">
     </head>
     <body>
        <h1>This is a heading</h1>
    </body>
</html>

style.css හැදෙන්නෙ මෙහෙම..

 body{background-color:yellow;
                                }
         h1{ color:red;
                               }
ඊලග ලිපියෙන් කථා කරන්නෙ table හදන හැටි.
පොඩි කාරනා කිහිපයක් විතරයි මේ පාර css ගැන කථා කලේ...
ඉස්සරහට html ඉවර කරලා css ගැන කථා කරමු අපි...

ලගදිම අායෙත් හමුවෙමු...










Sunday, January 17, 2016

WEB ඉගෙන ගනිමු - 3 පාඩම

අපි ලිපි 2කින් HTML කථා කලත් තාම HTML ඉවර නෑ. අද කථා කරන්නෙ html styling ගැන. ඒ කියන්නෙ පාට යොදවන හැටි ගැන. මේකට හුගක්ම පාවිච්චි වෙන්නෙ style කියන tag ඒක.

අපිට ඔිනනම් background ඒකට පාටක් දා ගන්න, අපි පාවිච්චි කරන්නෙ මේ tag ඒක.
<body style="background-color:yellow">
මේ tag ඒක පාවිච්චි කලාට පස්සෙ අපේ background ඒක කහ පාටට බලාගන්න පුලුවන්.
මේ style කියන attribute ඒක CSS language ඒකේ පාවිච්චි වුනත් HTML coding වලටත් ගන්න පුලුවන්.

<h1 style="color: red">HTML</h1>
  • HTML
style attribute ඒකේ තවත් ප්‍රධාන property 1ක් තමයි font-family property ඒක.

<h3 style="font-family:verdana">This use the verdana font</h3>
  • This use the verdana font
font-size property ඒක font ඒකේ size ඒකට බලපානවා.

<h3 style="font-size:20px">Font size is 20 px</h3>
  • Font size is 20 px
text-align property ඒක පාවිච්චි වෙනවා අපි දාන text ඒක මොන පැත්තටද අැල වෙන්න ඔින කියන ඒක මත.
<h3 style="text align:center">Center is here</h3>

  • Center is here 

මීලගට අපි කථා කරන්නෙ text formatting ක්‍රම ගැන.
1. Bold text <b> </b>

<b>This is bold one</b>
  • This is bold one

2.Strong text <strong></strong>

<strong>This is strong one</strong>
  • This is strong one
3.Italic text <i></i>

<i>This is Italic one</i>
  • This is Italic one
4.Emphasized text <em></em>

<em>This is emphasized text</em>

  • This is emphasized text
5.Marked text <mark></mark>

<mark>This is marked text</mark></br>This is normal text

This is marked text
This is normal text

6.Small text <small></small>

<small>This is small text</small>This is normal text

This is small text
This is normal text

7.Deleted text <del></del>

<del>This is deleted text</del>

This is deleted text
8.Insered text <ins></ins>

<ins>This is inserted text</ins>

This is inserted text
9.Subscript text <sub></sub>

<sub>This is Subscript text </sub> This is normal text

This is Subscript text  This is normal text

10. Superscript text <sup></sup>

<sup>This is superscript text</sup> This is normal text

This superscript text This is normal text

තවත් ඉස්සරහට HTML පාඩම් යනවා. අලුත් කොටසක් කතා කරමු ඊලග පාර...


කවුද මේ සුන්දර් පිචායි ??

පිචායි සුන්දර්රාජන් ඔබ දන්නවාද? මං දන්න තරමින් නැහැ. නමුත් ඔබ සුන්දර් පිචායි හදුනනවා විය යුතුයි. ඔහු තමයි Google අායතනයේ ප්‍රධාන විධායක...