ពេលធ្វើ Software Project មិនគួររំលងរបស់ទាំងអស់នេះ

Chhouk Davy| M-E, Programming, Space, Technology.

ថ្ងៃទី៖ 9 មិថុនា 2020

ប្រវែង៖ 3 នាទី

សួស្ដី! ថ្ងៃនេះខ្ញុំសូមនិយាយដល់ Tools ដែលខ្ញុំតែងតែប្រើពេលធ្វើ Software Project។

តែមុននឹងចាប់ផ្ដើម ខ្ញុំសូមនិយាយដល់ SDLC របស់ SWEBOK សិន។ អីគេទៅ SWEBOK? SWEBOK មកពីពាក្យថា SoftWare Engineering Body of Knowledge ឫយើងហៅវាថាជាស្ដង់ដារដែលណែនាំពីវិស្វកម្មសូហ្វវែរ៍។ ហើយ SDLC មកពីពាក្យថា Software Development Life Cycle ដែលវានិយាយពីវដ្ដជីវិតនៃការអភិវឌ្ឍន៍សូហ្វវែរ៍។

SDLC របស់ SWEBOK

ប្រភពរូបភាព៖ https://addontraining.com

នៅក្នុង SDLC គេបែងចែកវាជា 5 ដំណាក់កាលសំខាន់ៗដែលរួមមាន៖

  • Requirement Analysis ៖ ក្នុងដំណាក់កាលដំបូងនេះ គេត្រូវសិក្សាពីសូហ្វវែរ៍ដែលយើងនឹងធ្វើសិនថាអាចទៅរួច ឫក៏អត់? ហើយបើសិនជាទៅរួចតើសូហ្វវែរ៍ដែលយើងនឹងធ្វើគួរមានមុខងារ និងលក្ខណៈសម្បត្តិអ្វីខ្លះ។
  • Design ៖ បន្ទាប់មកយើងត្រូវយក Requirements មកឌីហ្សាញដែលរួមមាន Architectural Design, Database Design, UI Design ជាដើម។
  • Implementation ៖ បន្ទាប់ពីយើងបានឌីហ្សាញហើយ យើងចូលដល់វគ្គសរសេរកូដ។ កូដដែលយើងសរសេរគួរព្យាយាមសរសេរវាឲ្យស្អាត គួរដឹងគោលការណ៍មួយចំនួនចាំមាត់ដូចជា SOLID, DRY (Do not Repeat Yourself ឫកុំសរសេរកូដដដែលៗពីរដង) និង KISS (Keep It Stupid Simple ឫសរសេរងាយៗកុំស្មុកស្មាញខ្លាំងពេក) ជាដើម។
  • Testing ៖ វគ្គនេះយើងត្រូវតេស្ដកូដដែលយើងសរសេរហើយថាតើវាត្រូវតាម Requirements និងឌីហ្សាញដែរឫទេមាន Unit Test, Integration Test, System Test និង User Acceptance Test (UAT)។
  • Evolution ៖ ចាំថាសូហ្វវែរ៍មិនមែនធ្វើហើយចប់នោះទេ វាត្រូវការរស់បន្ត។ យើងនឹងត្រូវ Fix Bugs ឫក៏បន្ទាន់សម័យជារឿយៗ ហើយកាន់តែញឹកញាប់នោះគឺ Change Request ដែលយើងត្រូវធ្វើ។

បើនិយាយមែនទែនទៅ វាមានច្រើនដំណាក់កាលលម្អិតណាស់នៅក្នុង SDLC នេះហើយវាប្រែប្រួលទៅតាម Methodology ឫ Development Process ដែលយើងប្រើផងដែរ។ ហើយអ្នកទាំងអស់គ្នាប្រហែលជាធ្លាប់បានលឺ Methodology មួយដែលគេហៅថា Agile ហើយដែលវាពេញនិយមបំផុតនាពេលបច្ចុប្បន្ននេះ។ តែមិនថាយើងប្រើ Methodology ណាទេ យើងនឹងត្រូវមានដំណាក់កាលទាំង 5 ក្នុង SDLC ខាងលើគ្រាន់តែពេលខ្លះវាមិនមកតាមលេខរាង 1, 2, 3, 4, 5 នោះទេ។ វាអាចថាយើងត្រូវសរសេរ Test មុនហើយសរសេរកូដតាមក្រោយក៏ថាបាន (TDD)។

តែយ៉ាងណាដើម្បីសម្រេច Stages ទាំងអស់ខាងលើនេះបានងាយស្រួល យើងគួរតែដឹង និងប្រើ Tools មកជំនួយ ហើយដែលខ្ញុំគិតថាចាំបាច់មានដូចខាងក្រោម៖

Requirement Analysis

ក្នុងដំណាក់កាលនេះ យើងអាចប្រើអីក៏បានដែរឲ្យតែយើងអាចសរសេរកត់ត្រានូវមុខងារ និងលក្ខណៈសម្បត្តិសូហ្វវែរ៍ដែលយើងនឹងធ្វើបាន។ យើងអាចសរសេរក្នុងសៀវភៅ ឫ Words && Excel ឫក៏ Google Docs ក៏បានដែរដែលយើងអាចសរសេរជា URS (User Requirement Specification) និង SRS (System Requirement Specification) បាន។

Design

សម្រាប់ឌីហ្សាញយើងត្រូវប្រើ Tools ណាដែលយើងអាចសរសេរដ្យាក្រាម UML (Unified Modelling Language) បានដូចជា Use Case Diagram, Class Diagram, Activity Diagram ជាដើម។ ហើយយើងក៏ត្រូវការ Tools សម្រាប់ឌីហ្សាញ UI ផងដែរ។ សម្រាប់ខ្ញុំជាទូទៅខ្ញុំប្រើ៖

  • សរសេរ UML ៖ Visual Paradigm, Draw.io និង Balsamiq។
  • ឌីហ្សាញ UI ៖ Adobe Photoshop, Adobe XD, Zeplin។ គួរមាន Adobe Illustrator មួយទៀតតែខ្ញុំមិនជាសូវត្រូវការប៉ុន្មានទេ។

Implementation

ក្នុងវគ្គសរសេរកូដ អ្វីដែលសំខាន់បំផុតនោះគឺ Text Editor ខ្ញុំភាគច្រើនប្រើ៖

  • Visual Studio Code ជា Default Code Editor របស់ខ្ញុំ។
  • ពពួក IntelliJ Ideas (ទៅតាមភាសា និងហ្វ្រេមវើរ៍ក) ដែលខ្ញុំធ្វើ។
  • Vim ទេដឹង? មានប្រើតែមិនទាន់បានប្រើច្រើនទេ ពិបាកប្រើបន្តិចដំបូងៗ។ ខ្ញុំទើបតែចេះបើកចេះបិទទេ 🤣។
  • Linting (ESLint សម្រាប់ចាវ៉ាស្ក្រីបត៍)។
  • Code Formatter ដែលខ្ញុំប្រើ Prettier។
  • XCode និង Android Studio សម្រាប់ពេលសរសេរ React Native និង Flutter។

Package Manager ខ្ញុំប្រើ៖

  • Yarn ជាទូទៅ និង Npm បន្ទាប់បន្សំ។
  • ប្រើ Composer និង Valet បើខ្ញុំសរសេរ PHP Laravel។
  • អូមែនខ្ញុំនៅប្រើ Brew សម្រាប់ Mac Package Managing។

ហើយទៀតដែលមិនអាចខ្វះបាននោះគឺ៖

  • កម្មវិធីគ្រប់គ្រងកំណែរ (Version Control)៖ Git
  • សេវាកម្មគ្រប់គ្រងកំណែរ (Version Control Service)៖ Github, Bitbucket និង Gitlab
  • Browser ដែលខ្ញុំប្រើពេលនេះភាគច្រើនគឺ Brave និង Microsoft Edge (Chromium)។ ខ្ញុំលែងប្រើ Chrome ហើយធុញនឹងវាហើយព្រោះបានប្រើមកយូរពេកហើយ។
  • Terminal ខ្ញុំប្រើ Hyper ដោយ Setup ជាមួយ Oh-My-Zsh ដោយមាន Theme ស្អាតៗ និង Tmux សម្រាប់ Multiplexer។ ពីមុនខ្ញុំប្រើ iTerm2 និង Terminal របស់ Mac ធម្មតាក៏វាអូខេដែរតាមពិតទៅ។
  • Postman និង Insomnia សម្រាប់មើល និងតេស្ត API។

Testing

សម្រាប់តេស្ដ វាអាស្រ័យទៅតាមភាសា និងហ្វ្រេមវើរ៍កដែលយើងប្រើ។ ជាទូទៅយើងប្រើហ្វ្រេមវើរ៍កអីក៏ដោយ វាតែងតែមាន Testing Framework សម្រាប់វា។ ហើយដែលខ្ញុំធ្លាប់ប្រើមាន Jest សម្រាប់តេស្តចាវ៉ាស្ក្រីបត៍ ហើយ Selenium និង Katalon Studio សម្រាប់ Automate Testing។ មែនទែនទៅ ខ្ញុំមិនសូវជាបានសរសេរតេស្ដប៉ុន្មានទេពេលនេះ។

Kanban Board

សព្វថ្ងៃជាទូទៅយើងត្រូវតែមាន Board មួយយ៉ាងតិចសម្រាប់ធ្វើការជាក្រុម។ ទោះបីជា Project នឹងធ្វើតែឯងក៏ដោយ កាលដែលយើងមាន Board វានឹងជួយយើងបានច្រើនមែនទែន។ វាប្រាប់យើងថាយើងត្រូវធ្វើអីខ្លះ ធ្វើមួយណាមុន ហើយធ្វើដល់ណាហើយជាដើម។ ជឿខ្ញុំទៅ យើងមិនអាចចាំបានអស់ទេ។ សម្រាប់សេវាកម្ម Board ខ្ញុំប្រើ៖

  • Trello និង​ Github Project សម្រាប់ Project ផ្ទាល់ខ្លួន (ហេតុផល៖ Free free free!)។
  • នៅក្រុមហ៊ុនខ្ញុំប្រើ Jira, Asana។

នៅមានអីទៀត? អូមែននៅមួយទៀតដែរ ខ្ញុំចូលចិត្តស្ដាប់ភ្លេងពេលធ្វើការ៖

  • Spotify
  • Apple Podcast
  • YouTube

និយាយលេងទេ! វាមិនចាំបាច់ទេ តែវាចាំបាច់សម្រាប់ខ្ញុំ ហាហា! ខ្ញុំក៏ចូលចិត្តស្ដាប់ Podcast គួរសមដែរ។​ ភ្លេងភាគច្រើនជាភ្លេងទទេបែប Ochestra ឫ Animtion OST ជាដើម។ មានភ្លេង ឫ Podcast ចង់ណែនាំឲ្យខ្ញុំទេ? ជួយ Comment នៅខាងក្រោមឲ្យខ្ញុំផង។

សរុបសេចក្ដី

នេះជា Tools ដែលខ្ញុំប្រើ តែមែនទែនទៅប្រហែលជារាប់មិនទាន់អស់ចាំបានតែប៉ុណ្ណឹង។ តើអ្នកទាំងអស់គ្នាប្រើ Tools អីខ្លះ ហើយមានអីបន្ថែមពីនេះទៀតទេ? កុំភ្លេចចូល Comment នៅខាងក្រោមឲ្យខ្ញុំផង។ ហើយអត្ថបទនេះប្រហែលមានតែប៉ុណ្ណឹងឯង។ អរគុណដែលបានអាន ហើយបើគិតថាវាអាចមានប្រយោជន៍ដល់គ្នាយើង កុំភ្លេចជួយចែករំលែកបន្តផង។ ជម្រាបសួរ! មែនទេ បាយបាយ!

ចំនួនអាន៖ 129
ចែករំលែក៖
រូបភាពជ្រើសរើស
រូបថតដោយ៖
ក្នុង
Unsplash
អត្ថបទ​ពេញនិយម

ដំណើរកម្សាន្តបោះតង់ និងឡើងជួរភ្នំឱរ៉ាល់របស់ខ្ញុំ

មានអ្វីកើតឡើងពេល Apple ប្ដូរមក ARM?

ការប្រើប្រាស់ Dependency ក្នុងការ​សរសេរសូហ្វវែរ៍

ពេលធ្វើ Software Project មិនគួររំលងរបស់ទាំងអស់នេះ

អ្វីទៅ Git Stash?

អត្ថបទ​ថ្មីៗ

ការប្រើប្រាស់ Dependency ក្នុងការ​សរសេរសូហ្វវែរ៍

លាហើយបណ្ដាញសង្គម

រឿងដែលកំពុងតែកើតឡើងមកលើ Intel

ចាវ៉ាស្ក្រីបត៍ក្នុងប្រៅស៍ស័រ

គួរប្រើ Storage មួយណាសម្រាប់វែបសាយ?

You've reached singularity, the beginning of time!