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

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

 










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

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