Get in touch
or send us a question?
CONTACT

Các tài liệu thiết kế phần mềm

Software design document

Software design document (SDD) là tài liệu thiết kế phần mềm của dự án, được sử dụng cho programmers, testers, maintainers, systems integrators, vv.

Nó bao gồm việc thiết kế chi tiết cho kiển trúc, thiết kế giao diện và thiết kế lớp cho từng chức năng của hệ thống, cũng như việc thiết kế cơ sở dữ liệu của cả hệ thống để từ đó người đọc sẽ có cái nhìn rõ ràng hơn về phần mềm cần xây dựng và nó sẽ là tài liệu chính thức để từ đó những người xây dựng phần mềm có thể xây dựng nên phần mềm dựa vào tài liệu này.

Danh sách tài liệu thiết kế

  • SAS: tài liệu đặc tả tính năng phần mềm (đôi khi đươc chia thành Requirement Definition và External design)
  • SAD: tài liệu về Software Architect (đôi khi được chia thành Internal Design và Detail design)
    • Data flow: tài liệu diagram về các use case và data flow
    • Database: tài liệu thiết kế database
    • API: tài liệu về API
  • Test case: tài liệu về các test case
  • Tài liệu kiến trúc phần cứng
    • kiến trúc hạ tầng
    • kiến trúc network
    • kiến trúc security
    • kiến trúc scaling design
  • Deployment:
    • Tài liệu triển khai
    • Cài đặt hệ thống
    • Những lỗi thường gặp (Common mistake)
  • Source code
    • Coding convention: để đảm bảo source code clean và tối ưu khi deliver hoặc transfer cho khách hàng
    • CI/CD, source control

Software Detailed Design Process

Theo tài liệu, quy trình Detail design phần mềm có mục đích:

  • Purpose: “to provide a design for the software that implements and can be verified against the requirements and the software architecture and is sufficiently detailed to permit coding and testing [1]

Kết quả của quy trình implement Software Detailed Design thành công là:

  • một thiết kế chi tiết cho mỗi thành phần phần mềm, mỗi component đã được tinh chỉnh để process bên dưới có thể coded, compiled và tested.
  • các external interfaces của mỗi đơn vị phần mềm được xác định
  • tính nhất quán và nguồn gốc được thiết lập giữa detail design và các requiment và architectural design.

Nôm na thì kết quả của quy trình này tạo ra một cái gì đó đủ chi tiết cho các lập trình viên có thể lập trình tốt được theo detail design đó.

Tài liệu đặc tả yêu cầu (SAS) ~ Requirement Definition

Tài liệu định nghĩa yêu cầu là nơi ghi chép lại các kết quả sau khi xem xét các định nghĩa yêu cầu.

Về cơ bản thì sẽ có các mục sau đây:

  1. Tổng quan hệ thống – Hệ thống làm về cái gì? – Tại sao cần thiết phải có hệ thống này? – Mục đích của hệ thống này là gì?
  2. Sơ đồ cấu trúc hệ thống
    • Sơ đồ khái niệm hệ thống
    • Luồng nghiệp vụ hệ thống
    • Sơ đồ use case
  3. Yêu cầu chức năng
    • Danh sách tính năng của hệ thống
    • Chi tiết các tính năng
  4. Yêu cầu dữ liệu đầu vào/đầu ra
    • Danh sách dữ liệu đầu vào
    • Chi tiết dữ liệu đầu vào (field, type,…)
    • Danh sách dữ liệu đầu ra
    • Chi tiết dữ liệu đầu ra (field, type,…)
  5. Yêu cầu phi chức năng
    • Yêu cầu bảo mật
    • Yêu cầu chất lượng, hiệu suất
  6. Other
    • Schedule sơ lược
    • Sơ đồ Stakeholder (relationship diagram)

External design (ED)

(Thực hiện sau khi hầu như những yêu cầu của khách hàng được đáp ứng)

Thiết kế bên ngoài là việc thiết kế chi tiết cấu trúc hệ thống dựa vào tài liệu định nghĩa yêu cầu.

Không giống như “Tài liệu định nghĩa yêu cầu” được chia sẻ từ phía khách hàng, External design (hay còn gọi là 基本設計書/Tài liệu thiết kế cơ bản) được xây dựng dựa trên quan điểm của lập trình viên. Tuy nhiên, khách hàng có thể sẽ tham gia việc review tài liệu này.

—> Tóm tắt: Là thiết kế hệ thống hướng về phía người dùng

External design chủ yếu được phân thành 3 loại sau đây:

1. 方式設計/Thiết kế phương pháp

Gọi tắt là Architectural design. Dễ hình dung thì nó là việc trả lời thứ tự các câu hỏi: Bạn sẽ ” sử dụng cái gì”, “bằng quy trình nào” để xây dựng lên hệ thống “như thế nào”.

  • Sử dụng cái gì? + Thiết lập phương châm phát triển. Cụ thể là cấu hình phần cứng, phần mềm, … + Chỉ định ngôn ngữ, nền tảng flatform để phát triển
  • Bằng quy trình nào? + Thể chế nhân sự (resource) + Schedule phát triển + Công cụ quản lý dự án
  • Hệ thống như thế nào?
    • Sơ đồ cấu trúc hệ thống

2. 機能設計/Thiết kế tính năng

Chia hệ thống thành các mô-đun và thiết kế các thông số kỹ thuật phía bên ngoài của các mô-đun đó. Giai đoạn này thường sử dụng nhiều sơ đồ UML (Unified Modeling Language)

Thiết kế chi tiết của từng mô-đun sẽ được mô tả ở tài liệu Internal design.

  • Sơ đồ di chuyển màn hình
  • Sơ đồ thiết kế layout màn hình (UI)
  • Scenario
  • Bussiness/Logic
  • Bảng danh sách các tính năng (function)
  • Thiết kế database: Sơ đồ ER, định nghĩa Table

3. Thiết kế khác

Các phần khác này có thể là “Thiết kế bảo mật”, “Thiết kế vận hành”, “Thiết kế kiểm thử”,…

Tài liệu Basic Design

Sau khi hoàn thành việc thiết kế bên ngoài (external design) thì kết quả sẽ được tổng hợp vào các tài liệu và được gọi là Tài liệu thiết kế cơ bản.

  • Tổng quan hệ thống
    • Scenario
    • Bussiness/Logic
  • Cấu trúc hệ thống
    • Sơ đồ cấu trúc hệ thống
    • Luồng nghiệp vụ/Sơ đồ hoạt động
    • Sơ đồ cấu hình phần cứng/phần mềm
    • Sơ đồ cấu hình network
  • Bảng danh sách tính năng
  • Đặc tả database
    • Sơ đồ ER
    • Tài liệu định nghĩa table
  • Thiết kế UI
    • Sơ đồ di chuyển màn hình
    • Sơ đồ thiết kế layout màn hình
  • Other
    • Thể chế/resource phát triển
    • Schedule phát triển
    • Công cụ quản lý dự án

Internal design (ID)

Cũng còn được gọi là Tài liệu thiết kế chi tiết/詳細設計書.

Các loại tài liệu cơ bản:

  • Thuyết minh, phân chia chức năng – Class diagram
  • Data flow – DFD (Data flow diagram)
  • Modules details
    • Module name
    • Vai trò
    • Parameter, respone
    • Sơ lược xử lý
    • Note

Case study tham khảo

Bây giờ mình sẽ đi vào phần ví dụ. Mình ví dụ viết tài liệu SDD cho phần mềm Đặt phòng họp, hội thảo. (về user case thì mình chỉ design cho 1 user case demo thôi).

1. Thiết kế kiến trúc:

Hệ thống xây dựng theo kiến trúc mô hình MVC

Phân tích user case [Đặt phòng]

  • Biểu đồ trình tự (biểu đồ này là chỉ ra trình tự các thông điệp (message) được gửi giữa các đối tượng. ):
  • Biểu đồ phân tích lớp:

2. Thiết kế giao diện:

  • Giao diện với thiết bị phần cứng: Không
  • Giao diện với phần mềm khác: Không
  • Giao diện người dùng: Biểu đồ dịch chuyển màn hình:

3. Thiết kế Class:

4. Thiết kế mô hình dữ liệu:

Biểu đồ liên kết giữa các bảng