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

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 ගැන කථා කරමු.

 










What is PowerShell -1

PowerShell mainly using by system administrators and system engineers to their daily work.  This task based command line mainly created by ...