Thẻ: Mô hình hóa quy trình

  • Khái quát về ERD (Entity Relationship Diagram

    Khái quát về ERD (Entity Relationship Diagram

    ERD – Entity Relationship Diagram (hay sơ đồ mối quan hệ thực thể)

    Nghe tên là thấy sặc mùi kỹ thuật rồi. BA xuất thân business giờ nhiều lắm (chẳng hạn như mình), nên cái gì nặng kỹ thuật thì ngán lắm.

    Nhưng mà cái này nên biết, hoặc có thể nói là phải học vì nó giúp ích rất nhiều.

    ERD giúp gì?

    ERD giúp bạn hình dung mọi thứ dưới góc nhìn của developer, tư duy hướng đối tượng.

    Nắm được mô hình này, bạn sẽ hình dung các đối tượng quan hệ với nhau ra sau và dữ liệu được lưu vào Database như thế nào. Sẽ bắt đầu hình dung được Scope của hệ thống này rộng tới đâu.

    Từ đó tránh được việc lấy thiếu yêu cầu về tính năng, về các đối tượng của hệ thống, dẫn đến đánh giá sai phạm vi dự án (Scope), chi phí, thời gian…

    Ví dụ cho dễ hiểu:

    ### Không có ERD

    Một khách hàng đặt hàng hàng trên website mua 1 hoặc nhiều sản phẩm cho cùng 1 đơn hàng.

    Hệ thống cần lưu thông tin khách hàng gồm (tên, số điện thoại, địa chỉ) và đơn hàng (ngày đặt, sản phẩm, giá từng sản phẩm, tổng giá đơn hàng, nhân viên xác nhận).

    Nhân viên bán hàng cần xác nhận thông tin đơn hàng.

    Mỗi đơn hàng chỉ được đặt bởi 1 khách hàng và xác nhận bởi 1 nhân viên.

    ### Có ERD
    Khái quát về ERD (Entity Relationship Diagram — hình minh họa

    Đấy, 1 tấm hình hơn ngàn câu nói. Nếu biết cách đọc ERD, bạn sẽ nắm bắt tổng quát nhanh chóng mà không gặp rắc rối với mớ từ ngữ lẫn lộn.

    Vậy nó có khó không? Mình thấy khá dễ. Bạn chỉ cần nắm những gì tổng quát là đủ để sử dụng.

    Những điều quan trọng của ERD

    Vì đây là lược đồ mối quan hệ giữa các đối tượng, nên 2 thứ quan trọng nhất đó chính là Đối tượng và Mối quan hệ

    Đối tượng (Entity)

    Khi đọc requirement về 1 quy trình hoặc 1 tính năng, hãy xác định các danh từ, trạng từ chỉ đối tượng, người, vật, hệ thống… mà cần phải lưu lại thông tin vào hệ thống để thực hiện các nghiệp vụ sau này.

    Ở ví dụ trên:

    • Khách hàng đặt hàng thì hệ thống phải lưu thông tin khách đúng không, vậy khách hàng là 1 đối tượng cần đưa vào ERD
    • Website, cũng là 1 danh từ, là nơi mà khách hàng mua hàng. Nhưng đọc requirement thì không thấy đề cập việc lưu lại thông tin này, vậy nên không cần đưa đối tượng này vào ERD. Giả sử shop này bán hàng trên nhiều website và thông tin đơn hàng cần lưu lại khách mua từ web nào thì lúc đó Website hoặc Nguồn bán sẽ được cân nhắc thể hiện vào ERD.
    • Đơn hàng, sản phẩm, nhân viên cũng là những đối tượng được yêu cầu lưu lại thông tin trong suốt quá trình mua hàng này.

    Khi xác định được đối tượng, bạn sẽ quan tâm đến

    • Tạo bảng: 1 bảng đại diện cho 1 đối tượng. Hãy tạo các bảng tương ứng với những đối tượng đã xác định
    • Khóa chính (primary key): là thuộc tính định danh của đối tượng. Định danh có nghĩa là không được trùng lặp và không được để trống. Giả sử đối tượng Đơn hàng có khóa chính mà Mã đơn hàng. Có nghĩa là dù shop này có 100 hay 1000 đơn hàng đi nữa, thì mỗi đơn hàng phải có 1 mã đơn khác nhau, không được trùng. Hay nói ngược lại, cho 1 mã thì chỉ tìm ra được 1 và chỉ 1 đơn có mã đó thôi. Tìm ra 2 đơn là tào lao liền. Mỗi bảng bắt buộc phải có 1 khóa chính (\*).
    • Thuộc tính: là những thông tin liên quan của một đối tượng. Đóng vai trò mô tả, làm rõ đối tượng, lưu trữ thông tin về đối tượng. Ví dụ đối tượng Khách hàng cần thuộc tính Tên, số điện thoại, địa chỉ… để mô tả về 1 khách hàng. Những thứ phức tạp hơn như Kiểu dữ liệu, Not Null, Unique thì chắc tạm thời mình không đề cập ở bài tổng quan này.
    • Đặt tên: mình không tìm hiểu một quy tắc chuẩn nào hết. Mình tự đặt theo quán tính thôi, nguyên tắc đặt tên của mình là

      • Bảng: Dùng dạng số nhiều, viết hoa ký tự đầu của mỗi từ, dùng dấu cách
      • Thuộc tính: viết lower-case, thay các dấu cách bằng dấu gạch dưới ( \_ )
      • Khóa chính: Tên đối tượng cộng với “id” (dạng số ít, viết theo cú pháp thuộc tính)

    (*) Trường hợp những bảng không dùng khóa chính mà dùng các cặp thuộc tính để định danh mình sẽ đề cập ở bài khác

    Mối quan hệ (Relationship)

    Xác định các mối quan hệ trực tiếp giữa các đối tượng trong quy trình hoặc tính năng.

    Cú pháp để xác định các mối quan hệ là:

    Một <đối tượng A> có thể sinh ra/thuộc về mấy <đối tượng B>
    và ngược lại Một <đối tượng B> có thể sinh ra/thuộc về mấy <đối tượng A>

    Đi vào ví dụ luôn nha:

    • Khách hàng và đơn hàng:

      • 1 khách có thể đặt nhiều đơn (cùng 1 khách, hôm nay mua 1 đơn, ngày mai có thể quay lại mua tiếp và tạo thành 1 đơn khác)
      • 1 đơn chỉ thuộc 1 khách (1 đơn hàng là do 1 ông khách tạo thôi, không có chuyện 2 – 3 ông cùng đặt 1 đơn hay là không có khách nào đặt mà đơn tự sinh ra được)
      • → Quan hệ 1 – nhiều
    • Đơn hàng và nhân viên

      • 1 nhân viên có thể xác nhận nhiều đơn hàng
      • 1 đơn hàng được xác nhận bởi chỉ 1 nhân viên
      • → Quan hệ 1 – nhiều
    • Đơn hàng và sản phẩm

      • 1 đơn hàng có thể gồm nhiều sản phẩm
      • 1 sản phẩm có thể nằm trong nhiều đơn hàng
      • → Quan hệ nhiều – nhiều

    Ta thấy ví dụ trên có 3 cặp quan hệ chính cần thể hiện lên ERD

    Mục tiêu bây giờ là xác định loại kết nối giữa các cặp đó.

    Để kết nối 2 bảng với nhau để tạo mối quan hệ thì ta đặt khóa chính của bảng này vào làm thuộc tính của bảng kia với vai trò là khóa ngoại.

    Ví dụ luôn. Giả sử để tạo mối quan hệ Khách hàng – Đơn hàng (1 – n) ta đặt khóa ngoại customer_id vào bảng Orders. Dễ dàng thấy ngay customer_id chính là khóa chính của bảng customer đúng không. Điều này mang ý nghĩa là, nhìn vào 1 order, ta biết được order này được đặt bởi ông customer có mã định danh là customer_id.

    Khái quát về ERD (Entity Relationship Diagram — hình minh họa
    Khái quát về ERD (Entity Relationship Diagram — hình minh họa

    Các kiểu quan hệ

    Về cơ bản thì mối quan hệ được biểu diễn ở dạng một đường thẳng nối giữa hai bảng và có ký hiệu “vết chân chim” ở hai đầu đường thẳng.

    Bạn sẽ cần hiểu các ký hiệu này để đọc và vẽ được ERD.

    Khái quát về ERD (Entity Relationship Diagram — hình minh họa

    Dạng nâng cao hơn là sự kết hợp giữa các ký hiệu này để thể hiện giá trị min-max. Khuyến khích dùng dạng này khi vẽ cho rõ nghĩa.

    Khái quát về ERD (Entity Relationship Diagram — hình minh họa

    Cách đọc ERD

    Xét mô hình tổng quát quan hệ giữa 1 cặp đối tượng như sau:

    Khái quát về ERD (Entity Relationship Diagram — hình minh họa

    Ta sẽ thấy có 2 chiều đọc theo hành động từ đối tượng A → B và ngược lại. Công thức đọc (phát biểu) tổng quát là:

    • Chiều A → B:


    1 + \[Đối tượng A\] + \[hành động 1\] + tối thiểu + \[số lượng min 1\] + và tối đa + \[số lượng max 1\] + \[Đối tượng B\]

    • Chiều B → A:


    1 + \[Đối tượng B\] + \[hành động 2\] + tối thiểu + \[số lượng min 2\] + và tối đa + \[số lượng max 2\] + \[Đối tượng A\]

    Ráp thử với ví dụ Customers – Orders nhé:

    Khái quát về ERD (Entity Relationship Diagram — hình minh họa

    Hành động 1 mình gọi là đặt: vì theo ngôn ngữ kinh doanh là khách hàng đặt đơn hàng

    Hành động 2 là thuộc về: 1 đơn hàng sẽ thuộc về (hoặc dùng được tạo ra bởi cũng được, nhưng mà nó dài)

    • Phát biểu 1:


    1 khách hàng đặt tối thiểu 0 và tối đa không giới hạn đơn hàng.

    • Phát biểu 2:


    1 đơn hàng thuộc về tối thiểu 1 và tối đa 1 khách hàng

    Đó là cấu trúc chuẩn, giờ bạn có thể diễn đạt lại với từ ngữ mượt mà uyển chuyển hơn


    1 khách hàng không bắt buộc phải đặt đơn hàng nào và được phép tạo nhiều đơn hàng khác nhau. (Việc tạo 1 khách hàng thì không quan tâm khách có đơn hàng hay chưa, 1 khách hàng tạo được nhiều đơn)


    1 đơn hàng bắt buộc phải thuộc ít nhất 1 và chỉ 1 khách hàng duy nhất. (tạo đơn hàng thì bắt buộc phải biết khách hàng sở hữu đơn đó là ai, và chỉ gắn với 1 khách thôi, không có khách thứ 2)

    Đó là chúng ta đang đọc từ 1 ERD có sẵn thành ngôn ngữ kinh doanh. Ngược lại, khi bạn xác định được yêu cầu của khách hàng rồi, bạn có thể dựa vào cú pháp này để vẽ ra được 1 ERD hoàn chỉnh.

    1 số ví dụ về việc đọc ERD

    Khái quát về ERD (Entity Relationship Diagram — hình minh họa


    Khái quát về ERD (Entity Relationship Diagram — hình minh họa


    Khái quát về ERD (Entity Relationship Diagram — hình minh họa


    Khái quát về ERD (Entity Relationship Diagram — hình minh họa

    Okay, tạm dừng bài viết dài dằng dặc này ở đây. Hy vọng bạn đã nắm được khái quát những gì ERD có thể làm và cách để tạo ra nó.

    ERD giúp tư duy hướng đối tượng, hiểu quan hệ và dữ liệu trong Database. Nó bao gồm Đối tượng và Mối quan hệ.

    ERD, hay Entity Relationship Diagram, là công cụ giúp mô phỏng mối quan hệ và dữ liệu trong cơ sở dữ liệu thông qua việc xác định các Đối tượng và Mối quan hệ giữa chúng. Việc đọc và vẽ ERD giúp người dùng phát triển kỹ năng tư duy hướng đối tượng, giúp họ dễ dàng hình dung các đối tượng quan hệ và dữ liệu được lưu trữ trong cơ sở dữ liệu như thế nào.

  • “Cầm tay chỉ vẽ” BPMN

    “Cầm tay chỉ vẽ” BPMN

    Trong bài nói về các loại diagram nên dùng trong tài liệu BRD, mình đã dùng 1 ví dụ sơ đồ BPM dưới đây.

    “Cầm tay chỉ vẽ” BPMN — hình minh họa

    Hôm nay chúng ta hãy đi sâu vào và phân tích từng bước để ra được sơ đồ nhé. Let’s go!

    1. Lấy requirement

    Bằng mọi thủ đoạn, hãy lấy được requirement càng chi tiết càng tốt về quy trình cần phân tích. Ví dụ quy trình bán hàng as-is (khi chưa có website) được client mô tả như sau:

    Khách bên anh sẽ inbox fanpage facebook của shop để hỏi sản phẩm. Bạn trực inbox bên anh sẽ chăm sóc. Thường là khách hỏi size còn không, check giá. Bạn trực sẽ check hàng trong kho còn tồn không. Nếu còn thì báo khách thanh toán chuyển khoản trước 100%, hoặc nếu khách chọn COD thì chuyển trước 20%. Xong xuôi thì bạn trực đó tạo đơn hàng vô hệ thống quản lý kho sẵn có của shop anh. Nhân viên bên phía kho sẽ thấy đơn hàng và bắt đầu xuất kho, in bill, đóng gói, giao cho bên vận chuyển. Bên vận chuyển tiến hành giao hàng cho khách. Khách hàng nhận hàng nếu chọn COD thì phải thanh toán thêm 80%. Nếu khách không nhận hàng, bên vận chuyển sẽ giao ngược về, nhân viên kho nhận hàng sẽ tiến hành nhập kho.

    Đọc xong quy trình này, bạn sẽ bắt đầu ngợp bởi khá nhiều thông tin. Đặc biệt nếu không phải người trong ngành nghề/lĩnh vực đó.

    2. Phân tích requirement

    Phân tích hiểu đơn giản chính là chọn lọc → phân loại thông tin.

    2.1 Chọn lọc

    Hãy scan qua requirement 1 lần nữa, nhưng lần này highlight từ khóa lên, bỏ qua những từ gây nhiễu. Chú ý đến loại từ khóa sau:

    • 1 đối tượng (actor)- màu vàng
    • 1 hành động (action) – màu đỏ
    • 1 thực thể (object)- màu xanh dương
    • 1 điều kiện (logic)- màu xanh lá

    Khách bên anh sẽ inbox fanpage facebook của shop để hỏi sản phẩm. Bạn trực inbox bên anh sẽ chăm sóc. Thường là khách hỏi size còn không, check giá. Bạn trực sẽ check hàng trong kho còn tồn không. Nếu còn thì báo khách thanh toán chuyển khoản trước 100%, hoặc nếu khách chọn COD thì chuyển trước 20%. Xong xuôi thì bạn trực đó tạo đơn hàngvô hệ thống quản lý kho sẵn có của shop anh. Nhân viên bên phía kho sẽ thấy đơn hàng và bắt đầu xuất kho, in bill, đóng gói, giao cho bên vận chuyển. Bên vận chuyển tiến hành giao hàng cho khách. Khách hàng nhận hàng nếu chọn COD thì phải thanh toán thêm 80%. Nếu khách không nhận hàng, bên vận chuyển sẽ giao ngược về, nhân viên kho nhận hàng sẽ tiến hành nhập kho.

    2.2 Phân loại

    Tổng hợp các từ khóa theo từng nhóm, 1 số từ dùng đồng nghĩa cũng cần lưu ý gom lại:

    Loại Từ khóa Chú giải
    Đối tượng (actor) \* Khách hàng
    \* Nhân viên tư vấn
    \* Hệ thống quản lý kho
    \* Nhân viên kho
    \* Đơn vị vận chuyển
    Là 1 người hoặc hệ thống đang thực hiện ít nhất 1 hành động nào đó trong quy trình trên.
    Hành động (action) \* Liên hệ cửa hàng
    \* Trả lời khách hàng
    \* Check hàng tồn
    \* Yêu cầu thanh toán
    \* Thanh toán
    \* Tạo đơn hàng
    \* Nhận thông báo đơn hàng mới
    \* Xuất kho
    \* In bill
    \* Giao hàng cho nhà vận chuyển
    \* Giao hàng cho khách
    \* Thanh toán COD
    \* Trả hàng về kho
    \* Nhập kho hàng trả
    Hành động được thực hiện bởi 1 actor trong quy trình, cho ra 1 output cụ thể.
    Thực thể (object) \* Fanpage FB
    \* Sản phẩm
    \* Size
    \* Giá
    \* Kho
    \* Đơn hàng
    \* Bill
    Thực thể mang thông tin mô tả dữ liệu đầu vào hoặc đầu ra của 1 action bất kỳ trong quy trình.
    Điều kiện (logic) \* Sản phẩm cần tìm còn hàng hay không?
    \* Khách hàng lựa chọn cách thanh toán nào?
    \* Khách hàng thanh toán đủ hay không?
    \* Khách có nhận hàng hay không?
    1 điều kiện có thể chia quy trình thành các nhánh nhỏ hơn. Điều kiện phải thỏa thì các action phía sau mới thực hiện tiếp.

    3. Tạo pool và lane

    Giai đoạn phân tích đã xong, giờ bắt đầu vẽ thôi:

    Dựa trên việc phân tích, chúng ta đã biết có bao nhiêu actor tham gia quy trình. Bây giờ tiến hành tạo pool và lane cho từng actor.

    Ở ví dụ này Tư vấn viên và Nhân viên kho đều thuộc Shop nên mình gom lại thành 2 lane của 1 pool. Các đối tượng khác tương đối độc lập nên mình tách thành mỗi đối tượng 1 Pool.

    Việc gom pool và lane phụ thuộc vào tình huống cụ thể. Khi vẽ nhiều các bạn sẽ rút ra được “best practice” cho mình.

    Có thể tô màu để dễ phân biệt giữa các pool.

    Riêng Pool Hệ thống quản lý kho mình sẽ coi nó như 1 cái “hộp đen” và sử dụng Pool rỗng. Nghĩa là không quan tâm action của nó, chỉ quan tâm input và output khi đi qua nó thôi.

    “Cầm tay chỉ vẽ” BPMN — hình minh họa

    4. Xác định Start – End của từng lane

    Hãy đặt câu hỏi Điểm bắt đầu và điểm kết thúc của từng vai trò trong quy trình này là gì?

    • Khách hàng: Nhu cầu muốn mua hàng → Nhận được hàng thành công
    • Tư vấn viên: Khách hàng inbox (Bắt đầu quy trình tư vấn) → Tư vấn xong
    • Nhân viên kho: Hệ thống báo có đơn hàng mới (Bắt đầu quy trình xuất hàng) → Hoàn thành xuất hàng cho bên vận chuyển
    • Đơn vị vận chuyển: Nhân viên kho bàn giao hàng (Bắt đầu quy trình giao hàng) → Hoàn thành giao cho khách

    Pool Hệ thống quản lý kho không cần phân tích bước này vì là Pool rỗng.

    Sau khi phân tích xong, hãy đặt các Start event và End event vào đầu và cuối từng pool tương ứng.

    “Cầm tay chỉ vẽ” BPMN — hình minh họa

    5. Tạo task

    Từ bảng phân loại, bắt đầu tạo các task theo thứ tự từ trên xuống dưới và đặt vào pool tương ứng

    Ở bước này không chỉ đơn giản là tất cả các action phân tích ở trên được đều được đặt vào đây. Hãy nhớ những quy tắc cần thiết để giữ cho sơ đồ tinh gọn và có tính tổng quát.

    Gom các action liên quan thành 1 sub-process.

    Mỗi lane giới hạn khoảng 3 – 4 task / sub-process.

    Tập trung vào happy flow (main flow), các case ngoại lệ hạn chế thể hiện lên sơ đồ.

    Sắp xếp các task theo thứ tự diễn ra (xét trên từng lane)

    Sử dụng Động từ + Danh từ để đặt tên cho task.

    “Cầm tay chỉ vẽ” BPMN — hình minh họa

    6. Vẽ luồng đi và logic

    Dựa vào trình tự action từ bảng phân loại, vẽ sequence flow (liên kết cùng pool) hoặc message flow (liên kết khác pool) để kết nối các task và event.

    Hãy tư duy như vầy, khi vẽ flow cho task:

    • Task đó cần input gì để thực hiện được: sau khi xác định được, hãy nhìn xem task/event đứng trước nó có trả ra đủ thông tin mà task đó cần hay không.
    • Nếu cảm thấy thiếu input cho 1 task, có nghĩa là bạn đã xác định thiếu action trong bước phân tích. Hãy bổ sung thêm task hoặc event để không lủng logic.

    Chọn cổng phù hợp để thể hiện logic diễn ra. Mình rất ít khi sử dụng cổng AND và cổng OR, cục nào mà nhiều task AND hoặc OR thì mình gom thành sub-process hết cho gọn. Chủ yếu dùng cổng XOR để biểu thị các case dị biệt.

    Ở ví dụ này mình chọn thể hiện 2 case dị biệt đó là : Khách hàng thanh toán không thành công và Khách hàng không đồng ý nhận hàng.

    Còn 1 case nữa là khách chọn hình thức thanh toán nào (COD hay chuyển khoản 100%) mình quyết định không đưa vào BPM mà sẽ mô tả bằng Business Rule để thể hiện chi tiết hơn. Nếu vẽ chi tiết ở sub-process Thực hiện thanh toán của khách hàng thì có thể mình sẽ phân nhánh cho case này.

    Bổ sung event cần thiết, điều chỉnh loại start-end cho phù hợp: ở ví dụ này, start event của khách hàng chính là trigger đầu tiên, các start event của những role khác đều cần input từ 1 action khác → Đổi lại sử dụng kiểu Message start event.

    “Cầm tay chỉ vẽ” BPMN — hình minh họa

    7. Sắp xếp gọn gàng

    Bạn đã hoàn thành 99% công việc, tiếp đến chính là sắp xếp gọn gàng, điều chỉnh các flow sao cho không bị chồng chéo như tơ nhện. Note thêm chi tiết cho các message flow nếu cần.


    Okay hoàn thành rồi. Giờ thì hãy tự tin đặt chiếc sơ đồ này vào tài liệu của bạn nhé.

    Hãy tập luyện nhiều hơn để thuần thục các bước. Đến 1 lúc nào đó, bạn có thể lướt rất nhanh qua các bước phân tích mà nhảy thẳng vào việc vẽ luôn.

    P/s: Mình có biến tấu cách vẽ 1 chút so với nguyên tắc của BPMN 2.0 để phù hợp với nhu cầu sử dụng và tinh gọn hơn cho sơ đồ BPM. Lược bớt 1 số rule rườm rà, chỉ cần đủ để người đọc hiểu là được. (Ví dụ có 1 số quy ước là liên kết task giữa các pool phải có throw task để gửi message và catch event để bắt message đó trước khi đi tiếp. Mình cảm thấy lược bỏ cũng không ảnh hưởng logic và người đọc vẫn hiểu được nên mình dẹp luôn cho gọn)

  • Các loại diagram “thần thánh” khi viết BRD (P3 – SM)

    Các loại diagram “thần thánh” khi viết BRD (P3 – SM)

    Bài trước chúng ta đã bàn về BPM và SCD. Và bây giờ là diagram cuối cùng trong chuỗi bài.

    Scope model – SM

    Nếu SCD và BPM là 2 loại sơ đồ ở “tầng cao”. Cho bạn 1 cái nhìn overview thì Scope model – hay Sơ đồ phạm vi sẽ giúp bạn bước 1 chân vào phân tích làm sao để đạt được các mục tiêu đó.

    BRD (Business Reaquirement Document) là loại tài liệu chứa những yêu cầu về kinh doanh – thế giới của vấn đề và nhu cầu

    FRS (Functional Requirement Specification) là vùng đất của giải pháp. Danh sách chi tiết những tính năng cần làm để đáp ứng nhu cầu đó

    Và để liên kết BRD và FRS, làm sao cho những giải pháp đưa ra phục vụ đúng với các nhu cầu kinh doanh. Đó chính là lúc cần tới Scope model.

    Nếu hỏi: “Làm sao để bán được nhiều hàng trên website?” Thì đó là 1 nhu cầu đúng không? Nhưng nó quá mơ hồ, có hàng trăm nghìn việc phải làm, nên làm và có thể làm. Tương tự những thứ không nên làm cũng nhiều vô kể.
    Scope model hay có thể gọi là Work Breakdown Structure – là cách giúp chia nhỏ những vấn đề khó nuốt thành những mảnh nhỏ hơn. Giúp chúng ta khoanh vùng, chọn ra những việc phải làm một cách nhanh chóng và hợp lý.

    Ví dụ: Scope model cho Website bán hàng

    Chọn ra 1 nhu cầu chủ đạo nhất, sau đó tiếp tục tách nhỏ theo từng lớp với công thức như trên. Bạn sẽ có được 1 Scope model sơ bộ như sau:

    Các loại diagram “thần thánh” khi viết BRD (P3 - SM) — hình minh họa

    Nhìn vào sơ đồ này sẽ cho thấy phạm vi những việc cần làm 1 cách bao quát nhất. Tất nhiên là không thể đầy đủ. Vì đầy đủ không phải là mục tiêu.

    Hãy sử dụng các mindset sau để breakdown:

    • Ở mỗi level của Scope, ưu tiên những nhu cầu / nhóm tính năng Must have. Đừng vội đặt những thứ Nice to have vào.
    • 3-levels: Ở mỗi cấp, hãy brainstorm tối đa 3 nhánh nhỏ hơn. Nếu bạn cảm thấy có quá nhiều thứ muốn bỏ vào và 3 nhánh không đủ. Vậy thì có thể cách tiếp cận của bạn chưa hợp lý. Hãy nhìn rộng ra nữa, làm sao cho chỉ cần tối đa 3 nhánh có thể cover hết những thứ Must have. Đừng đi quá sâu vào chi tiết, dừng lại ở nhóm tính năng cấp 3 là đủ.
    • Việc brainstorm các nhánh con sẽ dựa vào:
      • Sự am hiểu về domain
      • Requirement lấy được từ user
      • Sự hỗ trợ và đề xuất từ dev.
      • Sự sắc bén và kinh nghiệm của BA

    Hãy sử dụng sơ đồ này để chốt lại tài liệu BRD và khởi đầu cho việc viết Function list trong tài liệu FRS. Nó sẽ là 1 chỉ dẫn rất cần thiết để tham khảo trong quá trình làm solution sau này.

  • Các loại diagram “thần thánh” khi viết BRD (P2 – BPM)

    Các loại diagram “thần thánh” khi viết BRD (P2 – BPM)

    Business Process Model – BPM

    Phần trước chúng ta đã nói về SCD – một cái nhìn toàn cảnh. Hôm nay sẽ bàn về 1 loại tài liệu khác chứa đựng nhiều thông tin hơn. Đó là BPM – lược đồ quy trình nghiệp vụ

    Nếu SCD là 1 cái địa đồ thô sơ thì BPM sẽ ở tầm Google Map. BPM bắt đầu chỉ rõ các con đường kết nối với nhau như thế nào, ở ngã ba nên rẽ trái hay phải , chỗ nào bị sạt núi…

    BPM giúp gì?

    BPM giả lập trình tự và logic mà các đối tượng trao đổi dữ liệu để đạt được 1 kết quả cụ thể cuối cùng.

    Bạn sẽ dùng tới công cụ này khi phải đối mặt với:

    • 1 quy trình cụ thể: có 1 kết quả cuối cùng cụ thể cần đạt được
    • Có nhiều đối tượng liên quan đến quy trình
    • Có nhiều hành động được thực hiện để đạt kết quả cuối cùng
    • Có nhiều logic và tình huống có thể xảy ra.

    Không phải quy trình nào cũng đè ra vẽ BPM làm chi, chừng nào bạn cảm thấy sẽ rất khó hiểu nếu mô tả bằng chữ thì hãy cân nhắc.

    Cách vẽ BPM

    Để tránh sa đà vào chi tiết, bài viết này chỉ giới thiệu sơ lược và đưa ra ví dụ khái quát. Mình đã viết 1 bài hướng dẫn từng cụ thể, chi tiết từng bước để ra được 1 BPMN xài được.

    Ví dụ

    Quy trình bán hàng as-is (khi chưa có website) được client mô tả như sau:

    Khách bên anh sẽ inbox fanpage facebook của shop để hỏi sản phẩm. Bạn trực inbox bên anh sẽ chăm sóc. Thường là khách hỏi size còn không, check giá. Bạn trực sẽ check hàng trong kho còn tồn không. Nếu còn thì báo khách thanh toán chuyển khoản trước 100%, hoặc nếu khách chọn COD thì chuyển trước 20%. Xong xuôi thì bạn trực đó tạo đơn hàng vô hệ thống quản lý kho sẵn có của shop anh. Nhân viên bên phía kho sẽ thấy đơn hàng và bắt đầu xuất kho, in bill, đóng gói, giao cho bên vận chuyển. Bên vận chuyển tiến hành giao hàng cho khách. Khách hàng nhận hàng nếu chọn COD thì phải thanh toán thêm 80%. Nếu khách không nhận hàng, bên vận chuyển sẽ giao ngược về, nhân viên kho nhận hàng sẽ tiến hành nhập kho.

    Một đoạn text dài, nhiều thông tin đan chéo nhau đúng không.

    Vì ghi theo văn nói, nên sẽ không theo 1 trình tự nhất định, nhiều khi nói cái này thì nhảy sang cái kia. Rồi lâu lâu lại lòi ra 1 “nhân vật” bất ngờ nào đó không báo trước. Đừng có viết vào document. Dev đọc được lại chửi cho.

    Bỏ ra tầm 30-45p để “chuyển hóa” nó thành 1 bức ảnh như thế này sẽ nâng tầm giá trị của 1 BA.

    Các loại diagram “thần thánh” khi viết BRD (P2 - BPM) — hình minh họa

    Giờ thì đã thấy rõ quy trình này gồm những ai cùng tham gia, thực hiện những hành động gì, theo trình tự nào.

    Nhìn vào sơ đồ này, dễ dàng thấy ngay được:

    • Các đối tượng tham gia vào quy trình
    • Điểm bắt đầu và kết thúc của từng nhóm đối tượng trong quy trình
    • Chọn ra 1 action bất kỳ trong bức tranh này cũng thấy có thể suy ngược ra được cần điều kiện gì để action này xảy ra (input), và sau khi nó xảy ra thì trả ra thông tin gì (output)

    So sánh 1 chút để thấy được sự ưu việt của sơ đồ quy trình

    • Lược bỏ tất cả từ ngữ dư thừa
    • Các hành động đều có PIC, input, output rõ ràng
    • Sắp xếp và phân loại rất rõ, đưa sơ đồ này cho 1 role bất kỳ trong quy trình, họ có thể thấy được ngay tất cả các action họ phải làm, trình tự và kết quả cần đạt được

    Lưu ý:

    • Đừng tham lam dồn tất cả thông tin vào 1 sơ đồ BPM. Hãy gói gọn trong 1 hoặc 1/2 trang giấy
    • Nếu 1 role nào đó có quá nhiều action cần thực hiện trong 1 quy trình, hãy cố gắng gom nhóm các action đó lại thành 1 quy trình riêng biệt (Sub-Process). Bạn có thể làm rõ các Sub-process đó trong 1 sơ đồ khác. Keep it simple stupid!
    • Lưu ý 1 chút về tính thẩm mỹ và các cách sắp xếp, không có đúng hoặc sai trong cái này. Nhưng mục đích của BPM là làm mọi thứ rõ ràng chứ không phải rối hơn. Đừng ẩu!
    • Mindset thần thánh 3-levels
      • Mỗi role, hãy cô đọng lại thành 3 hoặc 4 task / Subprocess chính họ cần làm.
      • Chọn ra 3 hoặc 4 logic cốt lõi.
      • Hạn chế thể hiện alternative và exception flow. Chỉ 1 flow vui vẻ đã có thể ngốn hết thời gian rồi. Hãy tách riêng chúng ra.

    Đón xem phần 3 trong chuỗi 3 bài tại đây.

  • Các loại diagram “thần thánh” khi viết BRD (P1 – SCD)

    Các loại diagram “thần thánh” khi viết BRD (P1 – SCD)

    Đôi khi 1 ngàn câu nói không bằng 1 tấm hình. Não người có vẻ ưu ái hơn đối với việc xử lý hình ảnh so với xử lý ngôn ngữ. 20 trang giấy của 1 chuyên đề phức tạp có thể được gói gọn vào 1 vài hình ảnh minh họa.

    Làm BA, bạn sẽ phải đối mặt với rất nhiều stakeholder với nhiều background khác nhau. Người thì làm kỹ thuật, người thì chỉ chuyên bán hàng, người thì làm sổ sách kế toán. Bạn cần tạo ra 1 thứ ngôn ngữ phổ thông nhất với tất cả người đọc của mình. Và các sơ đồ, mô hình, bảng biểu là 1 thứ hình ảnh biết nói. Thống nhất các ý tưởng trên 1 trang giấy. Dễ dàng trong quá trình confirm, mô tả bức tranh tổng thể.

    Ok, giờ thì bắt đầu. Hãy chọn 1 ví dụ xuyên suốt cho bài viết này để các bạn dễ hình dung: Project xây dựng 1 website bán hàng.

    1. System context diagram – SCD

    Lược đồ ngữ cảnh hệ thống – hay SCD, là sơ đồ có mức độ tổng quát cao nhất trong các sơ đồ được trình bày dưới đây.

    SCD giúp gì?

    Thường thì chiêu này sẽ dùng ở đầu mỗi tài liệu lớn, hoặc ở đầu 1 phân mục phức tạp. Vai trò của nó giống như 1 cái mục lục, giúp người đọc hình dung họ sắp đọc cái gì, và chúng nó liên kết với nhau như thế nào trong một bức tranh lớn.

    Hãy tưởng tượng bạn đi du lịch ở 1 khu rừng xa lạ và bị lạc đường. SCD sẽ giống 1 cái địa đồ. Nhìn vào bạn sẽ biết được:

    • Các hướng đông, tây, nam, bắc và các cột mốc địa lý quan trọng (dòng suối, ngọn núi…);
    • Bạn đang đứng ở đâu giữa khu rừng này 1 cách tương đối;
    • Bạn nên đi theo hướng nào để mò ra khỏi khu rừng.

    Lược đồ ngữ cảnh cũng vậy, nó là 1 cái bản đồ tổng quát cho bất kỳ ai đang lặn ngụp trong hệ thống. Nhìn vào đây bạn sẽ thấy được luồng thông tin (ở mức tổng thể) chảy ra và vào hệ thống như thế nào. Bạn sẽ không thấy được tính năng hay mô tả tính năng gì quy trình gì trong này hết.

    Cách vẽ SCD

    Các loại diagram “thần thánh” khi viết BRD (P1 - SCD) — hình minh họa

    Phạm vi

    1 SCD cho toàn hệ thống, hay chỉ cho 1 hệ thống con.

    Chọn phạm vi phù hợp với tài liệu bạn đang viết. Ví dụ:

    • Tài liệu BRD tổng quan cho toàn dự án Xây dựng website X. Khi đó phạm vi system là System của website X.
    • Hoặc bạn viết tài liệu riêng cho phần CMS (trang quản lý nội dung) thôi thì phạm vi systemt lúc này là CMS System

    Và bạn sẽ có input cho bước tiếp theo.

    Đối tượng dữ liệu

    • Trung tâm

      • Đã xác định được phạm vi thì ngay lập tức bạn xác định được cục nằm ở trung tâm sơ đồ. Đó chính là ngữ cảnh hệ thống.
      • Chỉ có 1 cục đó thôi. Ở ví dụ này gọi chung là system luôn, gộp hết Website + CMS lại.
    • Đối tượng dữ liệu:

      • Hình dung xem đối tượng nào cung cấp dữ liệu đi vào system
      • Và system cung cấp dữ liệu ra cho đối tượng nào.

    Dòng chảy dữ liệu

    Từ đối tượng đã xác định, tiếp tục hình dung:

    • Họ sẽ đổ dữ liệu vào hệ thống qua hành động nào: Vẽ mũi tên từ Đối tượng → Hệ thống. Ghi tên hành động đó (Động từ + Danh từ).
    • System cung cấp dữ liệu gì cho họ: Vẽ mũi tên Hệ thống → Đối tượng. Ghi tên dữ liệu đó (Danh từ)

    Rồi, tô màu và sắp xếp lại cho các khối. Cap màn hình lại và dán vào tài liệu thôi.

Đọc tiếp phần sau cho loại diagram thứ 2 ở đây nhé