Hế lôôô anh em, bài này mình sẽ đi tiếp quy trình làm dự án phần mềm và công việc của BA trong đó.
Ở phần trước mình đã note lại giai đoạn đầu tiên là Analysis, gồm 6 bước nhỏ: Project Definition >> Elicitation >> Analysis >> Documentation >> Verification >> Management.

Hi vọng anh em sẽ không cảm thấy khó hiểu khi đọc đến đây.
Sau bước Analysis này chúng ta đã có tài liệu mô tả yêu cầu, tức là đã biết được khách hàng cần gì. Giờ BA và team dự án sẽ đi vào giai đoạn thiết kế hệ thống sao cho đáp ứng những yêu cầu này nhé anh em 😎
2. Design
Ở bước này, tùy level, trách nhiệm, và loại dự án, mà BA sẽ tham gia vào ít hoặc nhiều.
Thực tế xảy ra là: hiếm khi BA ghi nhận các được yêu cầu một cách chi tiết ngay ở bước analysis. Nếu có thì chỉ ở mức độ high level. Còn tiểu tiết như từng User Story thì rất khó.
Do đó thường thì ở giai đoạn này (và có thể là các giai đoạn sau), BA sẽ phải trao đổi thêm với khách hàng để làm rõ các yêu cầu (những anh em nào đã kinh nghiệm, có khả năng clarify rõ ràng mọi thứ ngay từ đầu thì những giai đoạn sau này sẽ đỡ hơn rất nhiều).
Chưa kể nếu dự án triển khai theo Agile thì yêu cầu thay đổi liên tục, đòi hỏi anh em phải quản lý các requirement bài bản và làm việc với khách hàng nhiều về các yêu cầu thay đổi này.
Đó là phía mình, còn về phía khách hàng, nhiều khi họ còn chưa chắc về những yêu cầu họ đưa ra. Mà business thay đổi thì là chuyện một sớm một chiều.
Nên đây là chuyện hết sức bình thường: Requirement sẽ luôn thay đổi không ít thì nhiều xuyên suốt dự án. Đó là lý do vì sao mình vẽ đường //Requirement// màu xanh lá trên cùng chạy xuyên suốt dự án đó anh em 😎

Ở bước design, anh em sẽ can thiệp sâu một ít về kỹ thuật, bao gồm những thứ như:
- Thiết kế Database
- Vẽ Data Flow
- Vẽ Mockup
- Thiết kế UX/UI
- Thiết kế Business Process Flow
- Thiết kế bộ phân quyền hệ thống
- Vẽ Solution Architect
- …
Nghe tùm lum tùm la nhưng những điểm trên không phải một mình BA thầu hết (may quá), mà phải có sự can thiệp/ support của các anh em khác, có thể là Dev, Technical Architect, hoặc PM…
Và những thứ này sẽ linh động theo tùy loại dự án. Như những dự án triển khai thì sẽ không cần thiết kế UX/UI hay vẽ mockup.
Tuy nhiên mình thấy trong các thứ trên, hầu như BA sẽ thầu hết 70%.
Solution Architect thì TA sẽ làm. Database thì BA làm cũng được, nhưng cần có sự review từ toàn team vì nó sẽ ảnh hưởng đến những thứ trong tương lai. Còn về UX/UI thì có anh em designer làm chứ BA mình không có chuyên môn để làm phần này (và thường thì cũng chẳng có BA nào đi design UX/UI cả – trừ khi thiếu resources dữ lắm thôi).
Sau cùng cả team sẽ gom các kết quả lại để ra được thành phẩm cuối cùng là: Tài liệu thiết kế.
Để cho sang thì anh em hay gọi là SDD (Software Design Document) hoặc FDD (Functional Design Document).
…
Ô kê, vậy là qua 2 giai đoạn (Analysis và Design), chúng ta đã có được 2 tài liệu quan trọng:
- Tài liệu mô tả yêu cầu (SRS/FRD)
- Tài liệu thiết kế (SDD/FDD)
Có hàng nóng trong tay, anh em developer sẽ bắt đầu HIỆN THỰC HÓA sản phẩm bằng cách viết những dòng code đầu tiên.
3. Develop
Giai đoạn này anh em BA sẽ hỗ trợ Development Team trong quá trình build sản phẩm.
Ví dụ có Use Case nào chưa rõ, anh em sẽ giải thích để dev họ hiểu hơn về mục đích của Use Case. Hoặc nếu anh em làm giai đoạn Analysis và Design không kỹ, thì giai đoạn Development sẽ lòi ra những lỗi logic giữa các yêu cầu với nhau.
Ví dụ yêu cầu này conflict yêu cầu kia. Thì lúc này anh em BA phải làm việc lại với khách hàng để làm rõ vấn đề, rồi update lại cho Development Team để anh em làm tiếp.

Sau khi Development Team build xong một hoặc nhiều tính năng nào đó, chúng ta sẽ phải test các tính năng này.
4. Test
Giai đoạn test gồm 2 giai đoạn nhỏ: Internal Testing và External Testing.
4.1. Internal Testing
Internal Testing tức là nội bộ team dự án tự kiểm tra với nhau xem thử các tính năng đã được build đúng chưa, trước khi release cho khách hàng.
Đây có thể là nhiệm vụ của BA, hoặc không.
Các Software Development Team luôn có vai trò QC. QC sẽ là người chịu trách nhiệm test các tính năng vừa mới build này. Đảm bảo Dev làm đúng theo như tài liệu yêu cầu/ thiết kế, và đảm bảo team deliver đúng như những gì đã cam kết với khách hàng.
QC sẽ viết các Test Case để kiểm tra từng tính năng một.
Còn đối với các dự án triển khai, Software Implementation Team thường sẽ không có QC. BA trong team sẽ chịu trách nhiệm cho các phần test này luôn.
Vì so với những dự án build mới từ đầu, độ chính xác của các tính năng chuẩn trong các dự án triển khai sẽ cao hơn rất nhiều.
Vì triển khai là triển khai những gì đã có sẵn. Những tính năng này đều do các hãng lớn build sẵn, nên hầu như việc sai sót là không có.
BA trong các dự án triển khai chỉ cần test lại các tính năng “khác lạ so với chuẩn”. Tức là những tính năng customized mà khách hàng yêu cầu. Chứ không cần test lại toàn bộ các tính năng từ nhỏ tới lớn mà dev build như login, authorization, CRUD, import/export…
Ngoài Test Case ra, anh em BA cần phải chuẩn bị một thứ nguy hiểm hơn, đó là: Requirement Traceability Matrix (RTM).

RTM cũng không có gì quá ghê gớm. Anh em chỉ cần lấy Test Cases map với Requirements là sẽ ra được RTM.
Mục đích của Requirement Traceability Matrix là để anh em trace lại được là các Requirement đã được test hay chưa, và test thành công hay thất bại. RTM sẽ giúp anh em control được “sức khỏe” của các requirements xuyên suốt dự án.
4.2. External Testing
Sau khi team đã test nội bộ với nhau và chắc chắn rằng: “à những tính năng này đã được build đúng & build đủ”. BA sẽ thực hiện các buổi User Acceptance Test (UAT) với khách hàng.
User Acceptance Test là buổi mà một vài key-users của khách hàng sẽ ngồi test lại hệ thống từ đầu đến cuối, dựa trên Test Case mà khách hàng tự viết hoặc bên đối tác viết (cái lúc nãy).
Sau khi test xong, nếu có vấn đề gì thì anh em phải sửa lại và thực hiện UAT lại. Còn nếu mọi thứ ô tô kê thì dự án sẽ qua bước tiếp theo: Deploy cho end-users sử dụng 😎
5. Deploy
Đối với BA, anh em có thể hiểu Deploy nghĩa là mình sẽ làm tất cả những thứ để hệ thống sẵn sàng được sử dụng. Những thứ đó có thể là:
- Build solution từ môi trường Dev lên môi trường Production.
- Migrate data: là chuyển toàn bộ data hiện tại của khách hàng từ hệ thống cũ sang hệ thống mới.
- Thiết lập người dùng như: phân quyền, cập nhật tài khoản, thông tin cá nhân…
- Hướng dẫn người dùng sử dụng hệ thống
- Và một số thứ râu ria khác tùy dự án, như: bật audit hệ thống, kích hoạt các batch job, hoặc chuẩn bị Go-Live Checklist.

Ở bước này mình muốn highlight với anh em dòng “hướng dẫn người dùng sử dụng hệ thống” như nhiệm vụ chính của BA trong giai đoạn này. Các phần còn lại, BA và anh em Developer sẽ cùng phối hợp thực hiện.
Để training end-users, anh em sẽ cần có tài liệu hướng dẫn (User Manual). User Manual có thể có nhiều dạng: tệp pdf, video, hoặc thậm chí là tài liệu prezi,… tùy nhu cầu và cách làm của mình.
Sau khi chuẩn bị xong User Manual, anh em sẽ tiến hành training cho end-users. Sau đó anh em sẽ làm một danh sách các điểm cần chuẩn bị để tiến hành Go-live, gọi là Go-live Checklist.

Ví dụ về Go-live Checklist – những thứ anh em cần chuẩn bị trước khi Go-live
Xong, vậy là coi như anh em đã sẵn sàng để Go-Live, cột mốc quan trọng bậc nhất trong bất kỳ dự án nào 😎
Sau giai đoạn Deploy trước giai đoạn Maintain sẽ là cột mốc Go-live. Giả dụ anh em đã Go-live thành công đi nhé, để mình qua giai đoạn tiếp theo :v
6. Maintain
Sau khi Go-live xong, tức là khách hàng đã thật sự sử dụng hệ thống, anh em sẽ vào giai đoạn cuối cùng trong quy trình làm dự án phần mềm, đó là Maintenance – Bảo trì (hoặc cũng có thể là Warranty – Bảo hành)
Thường thì các dự án mình làm sẽ bảo trì khoảng 1-3 tháng sau Go-live.
Bảo hành tức là mình sẽ hỗ trợ khách hàng, xem thử trong quá trình sử dụng họ có gặp vấn đề gì không, bug chỗ nào để mình hỗ trợ giải quyết kịp thời.
Khi có lỗi phát sinh, khách hàng sẽ gửi lỗi này lên một trang portal để BA và anh em trong team biết mà bay vô support. Hoặc đơn giản người Contact Point bên phía khách hàng sẽ tổng hợp các lỗi định kỳ hàng tuần/ tháng và gửi email cho team dự án.

Trong giai đoạn này, các lỗi đều sẽ được log lại để theo dõi “vòng đời lỗi” (nghe hoành tráng quáaa). Tức là lỗi từ lúc phát sinh đến lúc được giải quyết, ai là người phát hiện ra lỗi, thuộc phân hệ nào, nguyên nhân ra sao, tình trạng thế nào, và thời gian ghi nhận.
Ngoài ra, nếu anh em có các hoạt động support khách hàng tại văn phòng của họ (onsite các kiểu) hoặc online meeting, thì anh em sẽ phải làm những Activity Sheet, ghi nhận những hoạt động đó, để 2 bên có thể dễ dàng quản lý, đặc biệt trong trường hợp có chi phí phát sinh.
.
.
.
Ô kêêê anh em đã thấy mệt chưa. Vậy là coi như chúng ta đã đi xong một quy trình làm dự án!
Cùng nhìn lại những thứ mà BA sẽ deliver xuyên suốt dự án nhé anh em.

Mình nhắc lại là tùy kiểu quản lý dự án (project management methodology) mà quy trình trên sẽ thay đổi, nhưng về bản chất nó sẽ luôn bao gồm 6 giai đoạn trên, và công việc BA cũng sẽ không khác gì mấy trong 6 giai đoạn này.
Kết bài
Hi vọng qua bài này anh em sẽ thật sự hiểu rõ về nghề BA, về Business Analyst.
Đây 100% là các công việc BA sẽ làm trong các công ty outsource hoặc service. Còn đối với các công ty client, BA sẽ làm hơi khác một chút, nhưng cơ bản thì vai trò của BA trong công ty nào cũng giống nhau hết 🙂
…
Sorry anh em dạo này nhịp độ ra bài hơi chậm, mong anh em thông cảm 😥 Mình sẽ luôn cố gắng duy trì mật độ 4 bài/ tháng, anh em cứ yên tâm nhé.
Nếu có gì cần hỏi hoặc trao đổi thêm, anh em cứ còm men bên dưới cho mình nhé. Bái bai và hẹn gặp lại!
15/09/2019 at 12:08 chiều
Mình cũng mới tìm hiểu BA. Nghe Thịnh nói vậy thật giống thời điểm khi mình làm trong ngân hàng NCB.
Thời đó chuyển đổi Core banking sang T24 các bước khá tương tự.
15/09/2019 at 10:19 chiều
Em đang học công nghệ thông tin và phân vân giữa việc theo hướng BA và QA nên e đã đi thực tập QA ở 1 công ty outsource. Trong thời gian thực tập, em được tham gia vào dự án mới từ đầu tới cuối ( từ khâu gặp mặt khách hàng lấy require, thiết kế tài liệu, vẽ UC, thiết kế Database,…manual test, hướng dẫn khách sử dụng, .. bảo trì). Trong team dự án đó thì ngoài dev, pm, thì em làm QA. Còn BA thì em chưa đi thực tập bao giờ. Hôm nay đọc được bài viết này của anh, em lại thấy nó giống hệt như những việc em làm khi đi thực tâp ở vị trí QA, em cũng phải làm từng ấy việc trong cả quá trình phát triển phần mềm. Em thấy hoang mang quá ạ!
15/09/2019 at 6:39 sáng
Hi Lan Anh, em đừng quá hoang mang, cũng k có gì đâu.
Cái a hay nói trên blog là BA không phải job title, mà là nhóm các công việc. Trong bài anh diễn giải nhóm các công việc này theo trình tự dự án cho ae dễ hình dung, và nhóm các công việc này nó cũng chính là những thứ em kể bên trên 🙂
Hễ ai làm một đống công việc này thì họ là BA. Nên dù, job title của em có là BA, QA, hay gì đi nữa mà miễn em làm đủ các công việc trên thì mình đã làm việc của BA rồi. Còn chuyện job title nó hay bị lệch lạc hay méo mó thì chuyện thường ở huyện mà 🙂 đặc biệt là ở VN mình mọi người vẫn còn hay nhầm lẫn role BA vs các role khác.
06/11/2019 at 8:32 sáng
Em đăng ký 1 khóa 6tr để đi học BA. Và khóa học làm em rối nùi với những thuật ngữ, kỹ thuật và lý thuyết tòe loe. Thật may là đọc được các bài viết của anh Thịnh. Em đang nghiền ngẫm tất cả các bài viết của anh. Với lối viết giản dị, gần gũi, thực tế, dễ hiểu. Anh đã sắp xếp lại mớ bòng bong trong đầu em để em có thể clear hơn về những gì mình đang tìm hiểu. Cảm giác thông não là những gì em cảm nhận được sau từng bài viết. Mỗi bài lại càng mọi thứ thêm rõ ràng hơn, bức tranh ngày 1 hoàn thiện hơn. Rất cảm ơn anh Thịnh <3
11/11/2019 at 4:28 chiều
Cảm ơn em, có gì cần trao đổi thì cứ phản hồi anh nhé.
12/11/2019 at 5:35 chiều
Please xem inbox e trên fb với anh ơi. Cho e kết nối với anh với ạ. Em sẽ rất happy
14/02/2020 at 6:19 chiều
Đọc bài viết của bạn rất chi tiết và dễ hiểu. Bạn có thể cho mình xin các template tài liệu mà BA phải delivery trong 6 bước ở trên ko? Với mình nó thực sự quan trọng. Cảm ơn bạn nhiều !
17/02/2020 at 1:36 chiều
Chào Kien Duc, template thì mỗi công ty mỗi khác bạn ạ. Mình làm công ty nào, project team nào thì dùng theo template của công ty đó, project team đó.
Còn về chuẩn thì bạn cứ tham khảo google nhé. Cứ search theo keyword của loại documents là ra, ví dụ chung nhất thì có: Functional Specification, hoặc Business Req. Document, Software Requirement Specification, hoặc Use Case Specification…. Sắp tới mình có note 1 bài về chuyện làm docs của BA, có gì bạn ghé đọc sau nhé
19/02/2020 at 8:31 chiều
tuyệt quá cảm ơn bạn.
05/07/2020 at 4:22 chiều
cho em hỏi dự án triển khai là gì ạ?
06/07/2020 at 6:04 sáng
Hi em, “dự án triển khai” ý chỉ những dự án triển khai các SaaS cho khách hàng em nhé. Đây là những sản phẩm/ platform có sẵn. BA cùng dev team sẽ configure và customize lại các tính năng của sản phẩm để phù hợp với nhu cầu sử dụng của từng khách hàng.
Ví dụ như triển khai Microsoft Dynamics 365, Oracle ERP, Salesforce, SAP Hana…. Em google thêm về “SaaS” nhé!
07/07/2020 at 12:32 chiều
vâng ạ, e cảm ơn a đã trả lời e ạ
12/12/2020 at 10:45 chiều
Được vài buổi online hướng dẫn thì hay quá
21/11/2021 at 7:33 sáng
Anh ơi em thấy anh hay viết bài về các kĩ năng cứng của BA trong giai đoạn Analysis, mà ít khi thấy anh nói về các kĩ năng trong các giai đoạn sau Analysis như Design, Develop, Test, … như viết tài liệu FDD, RTM, làm User Manual, v.v. Mong trong tương lai anh sẽ có những bài viết cover những mảng trên. Cảm ơn anh về những bài viết thật sự bổ ích này ! Chúc anh thật nhiều sức khỏe !
05/12/2021 at 3:43 sáng
Hi Khôi, thường FDD hay các docs liên quan tới Technical Design thì bạn Tech Lead sẽ viết. Còn requirement traceability matrix thì thường a sẽ cho nó 1 mục nhỏ trong FS. Phần này với User Manual theo anh là thứ yếu trong công việc của BA thôi, nên anh không share nhiều. Nhưng nếu nhiều bạn hỏi anh sẽ viết về nó nhé. Thanks em 🙂
25/06/2022 at 7:32 chiều
Anh ơi em không hiểu lắm “Build solution từ môi trường Dev lên môi trường Production” là như thế nào vậy ạ?
09/08/2022 at 10:22 chiều
Đại loại như: em viết 1 cái hàm tính toán X + Y = Z ở môi trường dev để test sơ, rồi em mang cái hàm đó lên chạy ở môi trường UAT để testing xem nó chạy đúng không, nếu ổn áp rồi thì gắn hàm đó lên môi trường production để cho user thật họ dùng.
Em google thêm keyword “software development life cycle” nhé
11/10/2022 at 10:45 chiều
Anh ơi cho em hỏi là ở giai đoạn Analysis thì mình sẽ define ra được User story, Use case sau đó thì hệ thống lại trong SRS hoặc FRD. Còn giai đoạn Design mình sẽ vẽ các biểu đồ UML như state diagram, activity diagram, sequence diagram và ERD, và giai đoạn Design sẽ thực hiện gần như song song với giai đoạn Analysis, đúng ko anh? Em chưa rõ làm các biểu đồ UML sẽ vẽ trong giai đoạn nào, và vẽ theo quy trình quy định của công ty hay bắt buộc BA luôn vẽ để phục vụ cho team dev dễ cod ạ, e cám ơn anh.
19/06/2023 at 10:23 sáng
Hi em, mình sẽ làm Analysis trước khi bắt tay vào Design, hoặc có thể làm song song (nếu mọi thứ đã rõ, cần chạy cuốn chiếu, hoặc cần một số output của giai đoạn Design để validate một số thứ ở giai đoạn Analysis). Lý thuyết là theo trình tự, nhưng sẽ rất là tuỳ vào từng trường hợp. Khó có one-size fits all.
Thường mình sẽ vẽ các Diagram khi đã gần như chốt được solution rồi. Vì khi đó mọi thứ nó rõ ràng thì mới vẽ được.
Còn việc “có theo quy định của công ty hay không” thì anh đang hiểu em hỏi về việc: Ai là người vẽ và vẽ theo template nào đúng ko? Nếu vậy thì:
– Ai là người vẽ? BA là người accountable cho docs sau cùng, nhưng cả team đều responsible để làm ra docs này. Một số diagram BA có thể vẽ, một số khác thì có thể nhờ dev support (ví dụ sequence diagram, erd…) nếu em chưa quen. Nên cứ linh hoạt, thoải mái lên.
– Template? Dùng cái nào cũng được. Nhưng beginner thì nên theo chuẩn, tránh sáng tạo, tránh đi làm lại thứ đã có. Nên tận dụng những cái đã có rồi để boost productivity em nhé.
14/04/2023 at 2:35 chiều
Hi a Thịnh và các bạn, cho em/mình hỏi. Ở mỗi phases, outcome sẽ là documents nào nhỉ? Không xét Agile, vì Agile BA chỉ sử dụng 1 document; xét về waterfall method hoặc spiral thì có phải sẽ là:
Project Definition: BRD
Analysis: SRS + Use case document + FRS
Design: FRD – N-FRD
Development: SCD
Testing: Test Case + Test plan
Deployment: URD, SRS
Maintenance: ….
19/06/2023 at 10:26 sáng
Hi em, tùy team tuỳ dự án tuỳ giai đoạn mà sẽ cần generate/ maintain các docs tương ứng, khác nhau nhé. Nhưng lời khuyên của anh là nên giữ mọi thứ ở mức đơn giản hết sức. Các đơn giản, càng ít nhưng thể hiện được rõ ý, cover đủ case, dễ maintain, dễ đọc, dễ hiểu thì mới khó. Đây là cái mà BA nên hướng tới.
Vì đa phần các team dự án sẽ làm ra thứ mà ko ai muốn xài hoặc ko giải quyết được vấn đề gì đáng kể hết. Nên việc thay đổi sẽ là tất yếu. Docs của BA cần tinh gọn để các việc changes này diễn ra nhẹ nhàng và hiệu quả nhất (cho cả BA và các bạn còn lại trong team).