Tổng quan về giáo trình

Tài liệu bài giảng thuộc học phần Kỹ thuật Phần mềm (mã học phần: CO3001 - Software Engineering), tập trung vào chuyên đề Kỹ thuật Yêu cầu (Requirements Engineering - RE) được bố trí giảng dạy trong Tuần 4 và Tuần 5 (tương ứng với cấu trúc Chapter 3 / Chapter 4 của chương trình đào tạo kỹ thuật phần mềm, cập nhật tháng 01/2018).

Vị trí của học phần này đóng vai trò xác lập nền tảng phương pháp luận cho giai đoạn khởi đầu của vòng đời phát triển hệ thống. Mục tiêu học tập cốt lõi của tài liệu bao gồm:

  • Định nghĩa bản chất của yêu cầu phần mềm và vai trò kép của tài liệu yêu cầu (vừa làm cơ sở đấu thầu, vừa làm căn cứ pháp lý cho hợp đồng phát triển).
  • Phân biệt rành mạch giữa yêu cầu người dùng (User Requirements) và yêu cầu hệ thống (System Requirements).
  • Phân loại, mô hình hóa các yêu cầu chức năng (Functional Requirements), phi chức năng (Non-functional Requirements) và yêu cầu miền ứng dụng (Domain Requirements).
  • Làm chủ quy trình kỹ thuật yêu cầu lặp xoắn ốc (Spiral Model), từ giai đoạn khảo sát khả thi, thu thập, phân tích, đặc tả cho đến kiểm chứng và quản lý thay đổi.

Cấu trúc giáo trình tiếp cận theo mô hình kỹ thuật chuẩn mực: kết hợp định nghĩa nguyên lý học thuật với các ca nghiên cứu thực tế (case studies) xuyên suốt như Hệ thống quản lý chăm sóc sức khỏe tâm thần Mentcare (hay MHC-PMS), Hệ thống phần mềm điều khiển máy bơm Insulin tự động (Insulin Pump Control Software), và Nền tảng chia sẻ ảnh giáo dục iLearn (KidsTakePics). Cách tiếp cận này giúp người học liên hệ trực tiếp giữa lý thuyết phân loại với các biểu mẫu tài liệu kỹ thuật thực tế.


Nội dung kiến thức cốt lõi

Các chương và chủ đề chính

Nội dung tài liệu được tổ chức thành 5 khối chủ đề nối tiếp theo tiến trình logic của kỹ nghệ phần mềm:

  1. Bản chất và phân loại yêu cầu phần mềm: Phân định ranh giới giữa yêu cầu người dùng (dạng ngôn ngữ tự nhiên kèm sơ đồ tổng quan dành cho khách hàng, nhà quản lý) và yêu cầu hệ thống (mô tả kỹ thuật chi tiết dành cho kỹ sư phát triển, kiến trúc sư phần mềm).
  2. Yêu cầu chức năng và yêu cầu phi chức năng: Xác định các hành vi hệ thống phải thực hiện, các trạng thái phản hồi đầu vào, song song với các ràng buộc về vận hành, hiệu năng, bảo mật và tính khả dụng.
  3. Quy trình kỹ thuật yêu cầu (Requirements Engineering Processes): Mô tả chu trình lặp xoắn ốc gồm 4 hoạt động nền tảng: Khảo sát thu thập (Elicitation), Phân tích (Analysis), Kiểm chứng (Validation), và Quản lý yêu cầu (Management).
  4. Kỹ thuật thu thập và khám phá yêu cầu (Requirements Elicitation & Discovery): Phân tích vai trò của các nhóm liên quan (stakeholders), các kỹ thuật phỏng vấn (đóng/mở), kỹ thuật quan sát thực địa (ethnography), xây dựng cốt truyện (user stories) và kịch bản tương tác (scenarios).
  5. Đặc tả yêu cầu phần mềm (Requirements Specification): Phương pháp lập tài liệu SRS thông qua ngôn ngữ tự nhiên có cấu trúc (structured natural language), bảng quyết định logic (tabular specification) và mô hình hóa ca sử dụng UML (UML use cases).

Kiến thức nền tảng được xây dựng

  • Cấu trúc phân loại yêu cầu phi chức năng: Tài liệu thiết lập cây phân cấp toàn diện chia yêu cầu phi chức năng thành 3 nhóm lớn:
    • Yêu cầu sản phẩm (Product Requirements): Bao gồm hiệu năng (tốc độ xử lý giao dịch/giây, thời gian đáp ứng, tần số làm mới màn hình), dung lượng bộ nhớ (Mbytes, số lượng chip ROM), độ tin cậy (MTTF, xác suất không sẵn sàng), độ khả dụng, tính bền vững (robustness) và tính khả chuyển (portability).
    • Yêu cầu tổ chức (Organisational Requirements): Quy định về tiêu chuẩn quy trình phát triển, phương thức xác thực người dùng (như thẻ nhận dạng cơ quan y tế trong hệ thống Mentcare), và môi trường vận hành.
    • Yêu cầu bên ngoài (External Requirements): Ràng buộc tương tác hệ thống, các quy định pháp lý kế toán, an toàn, và bảo mật dữ liệu y tế (ví dụ: tuân thủ tiêu chuẩn HStan-03-2006-priv).
  • Phân biệt Mục tiêu (Goals) và Yêu cầu kiểm thử được (Testable Requirements): Mục tiêu mang tính định tính (ví dụ: "hệ thống phải dễ sử dụng cho nhân viên y tế"), trong khi yêu cầu kỹ thuật phải gắn liền với chỉ số định lượng cụ thể (ví dụ: "nhân viên y tế có thể sử dụng toàn bộ chức năng hệ thống sau 4 giờ đào tạo").
  • Hệ tiêu chuẩn chất lượng tài liệu đặc tả: Nhấn mạnh hai thuộc tính kỹ thuật then chốt là tính đầy đủ (completeness - bao hàm toàn bộ chức năng cần thiết) và tính nhất quán (consistency - không chứa đựng các mô tả mâu thuẫn hoặc xung đột lẫn nhau).

Kỹ năng phát triển

  • Kỹ năng phân tích Stakeholder: Xác định quyền lợi và trách nhiệm của từng nhóm tác nhân trong hệ thống (như trong ca nghiên cứu Mentcare: Bệnh nhân, Bác sĩ, Y tá, Lễ tân y tế, Cán bộ IT, Quản lý đạo đức y tế, Quản lý chăm sóc sức khỏe, Cán bộ lưu trữ hồ sơ bệnh án).
  • Kỹ năng viết đặc tả kỹ thuật chuẩn hóa: Soạn thảo tài liệu đặc tả chức năng theo cấu trúc chuẩn (gồm Tên hàm, Mô tả, Đầu vào, Nguồn dữ liệu, Đầu ra, Đích dữ liệu, Hành động tính toán, Điều kiện tiên quyết, Điều kiện sau xử lý và Tác dụng phụ).
  • Kỹ năng mô hình hóa logic nghiệp vụ: Chuyển đổi các quy tắc tính toán phức tạp sang bảng quyết định điều kiện (tabular specification) và sơ đồ tương tác ca sử dụng UML (UML Use Case Diagrams).

Phương pháp giảng dạy và học tập

 - Abstract Concept               - Mentcare (EHR)                 - Metric Tables
 - Ambiguity Analysis             - Insulin Pump                   - Formal Specs
 - Spiral Process                 - iLearn Photos                  - Use Cases

Phương pháp tiếp cận sư phạm

Giáo trình CO3001 áp dụng phương pháp tiếp cận từ nguyên lý đến thực nghiệm. Giảng viên dẫn dắt người học từ các khái niệm trừu tượng (định nghĩa requirement), chỉ ra các cạm bẫy thực tế trong quá trình giao tiếp kỹ thuật (như sự mơ hồ của từ khóa "search" giữa người dùng và lập trình viên), sau đó chuẩn hóa bằng các công cụ mô hình hóa kỹ thuật.

Hệ thống ca nghiên cứu thực tế (Case Studies)

  • Hệ thống quản lý thông tin bệnh nhân tâm thần Mentcare (MHC-PMS): Minh họa sự tương tác đa chiều của 8 nhóm stakeholder; thiết lập các yêu cầu phi chức năng về tính sẵn sàng (phục vụ từ thứ Hai đến thứ Sáu, 08:30–17:00, thời gian chết không vượt quá 5 giây/ngày).
  • Hệ thống phần mềm nhúng điều khiển máy bơm Insulin tự động (Insulin Pump SRS 3.2): Cung cấp mẫu đặc tả có cấu trúc để tính toán liều lượng insulin an toàn (CompDose) dựa trên chuỗi 3 giá trị đo đường huyết liên tiếp ($r_0, r_1, r_2$), kết hợp bảng logic phân nhánh điều kiện theo tốc độ tăng/giảm đường huyết.
  • Dự án iLearn và nền tảng KidsTakePics: Phân tích kịch bản tương tác người dùng (Scenarios) tại trường tiểu học Ullapool (Scotland), chia nhỏ tiến trình thành: Giả định ban đầu, Luồng sự kiện bình thường, Các tình huống lỗi phát sinh (không có người kiểm duyệt, trùng tên tệp ảnh tải lên), Các hoạt động đồng thời, và Trạng thái hệ thống khi kết thúc.

Phương pháp đánh giá và tự học

  • Đánh giá năng lực: Sinh viên được kiểm tra thông qua khả năng phát hiện lỗi nhập nhằng trong câu lệnh ngôn ngữ tự nhiên, kỹ năng chuyển đổi ma trận quyết định sang bảng đặc tả, và xây dựng sơ đồ ca sử dụng đầy đủ các mối liên kết nghiệp vụ.
  • Hướng dẫn tự học: Người học cần đối chiếu các mục tiêu phi chức năng với bảng chỉ số đo lường chuẩn (Metrics table), tự xây dựng các kịch bản kiểm thử định lượng cho từng thuộc tính hệ thống.

Điểm nổi bật và tính thực tiễn

Khía cạnh Nội dung phân tích trong giáo trình Ứng dụng thực tiễn
Góc nhìn Agile về Yêu cầu So sánh giữa tài liệu SRS truyền thống và kỹ thuật User Stories gia tăng. Nhận diện rõ phạm vi phù hợp: Agile hiệu quả cho ứng dụng kinh doanh; SRS truyền thống bắt buộc cho hệ thống then chốt (critical systems) và dự án đa nhóm phát triển.
Định lượng hóa phi chức năng Cung cấp bảng ma trận chỉ số (Metrics for Non-functional Requirements). Chuyển đổi các phát biểu định tính thành tiêu chí nghiệm thu định lượng (MTTF, Transactions/sec, Training time).
Kỹ thuật quan sát dân tộc học Đưa phương pháp quan sát xã hội học (Ethnography) vào quy trình khám phá yêu cầu. Giúp thu thập các yêu cầu ngầm định phát sinh từ quy trình văn hóa và tổ chức mà phỏng vấn thông thường không bộc lộ được.
Xử lý tính nhập nhằng ngôn ngữ Phân tích hiện tượng phân mảnh (confusion) và gộp cụm (amalgamation) yêu cầu. Chuẩn hóa tài liệu yêu cầu theo mẫu biểu mẫu cấu trúc nhằm loại bỏ sai lệch diễn giải khi ký kết hợp đồng.

Tài liệu kết nối chặt chẽ với các tiêu chuẩn ngành khi dẫn chiếu các tiêu chuẩn quy định thực tế như tiêu chuẩn bảo mật dữ liệu y tế HStan-03-2006-priv và các ràng buộc pháp lý (legislative/regulatory requirements).


Đối tượng sử dụng giáo trình

  • Sinh viên đại học: Giáo trình được biên soạn cho sinh viên năm thứ ba hoặc năm thứ tư thuộc các chuyên ngành Kỹ thuật Phần mềm, Khoa học Máy tính và Hệ thống Thông tin đăng ký học phần CO3001.
  • Yêu cầu kiến thức tiên quyết: Người học cần có kiến thức nền tảng về lập trình hướng đối tượng, cơ sở dữ liệu, và hiểu biết cơ bản về vòng đời phát triển phần mềm (SDLC).
  • Giảng viên: Tài liệu cung cấp khung bài giảng chuẩn cho 2 tuần học chuyên sâu, hỗ trợ thiết kế các buổi thảo luận tình huống dựa trên hệ thống Mentcare và Insulin Pump.
  • Kỹ sư và chuyên viên thực tế: Tài liệu là tài nguyên tham khảo chuẩn xác cho các Kỹ sư Phân tích Nghiệp vụ (Business Analysts), Kỹ sư Yêu cầu (Requirements Engineers), và Quản lý Dự án (Project Managers) trong việc chuẩn hóa quy trình tiếp nhận và lập hồ sơ thầu phần mềm.

Câu hỏi thường gặp (FAQ)

1. Sự khác biệt cốt lõi giữa Yêu cầu người dùng và Yêu cầu hệ thống là gì?

Yêu cầu người dùng (User Requirements) là các phát biểu bằng ngôn ngữ tự nhiên kết hợp sơ đồ tổng quan về dịch vụ và ràng buộc vận hành, được viết cho khách hàng và nhà quản lý không chuyên sâu kỹ thuật. Ngược lại, Yêu cầu hệ thống (System Requirements) là tài liệu kỹ thuật chi tiết mô tả chính xác các hàm, dịch vụ và ràng buộc của hệ thống, phục vụ trực tiếp cho kiến trúc sư phần mềm và lập trình viên triển khai.

2. Làm thế nào để chuyển một Mục tiêu chung (Goal) thành Yêu cầu phi chức năng kiểm thử được?

Một mục tiêu chung mang tính định tính (ví dụ: "hệ thống vận hành ổn định") phải được lượng hóa bằng các thước đo cụ thể trong bảng chỉ số (metrics). Chẳng hạn, chuyển thành yêu cầu kiểm thử được: "Hệ thống phải có thời gian hoạt động liên tục trong giờ hành chính đạt mức thời gian chết (downtime) không vượt quá 5 giây trong một ngày làm việc".

3. Phương pháp tiếp cận Agile xử lý Kỹ thuật Yêu cầu như thế nào và có hạn chế gì?

Phương pháp Agile cho rằng việc lập tài liệu yêu cầu chi tiết gây lãng phí do yêu cầu thay đổi liên tục, vì vậy Agile ưu tiên phát triển yêu cầu gia tăng và diễn đạt yêu cầu dưới dạng User Stories. Tuy nhiên, cách tiếp cận này bộc lộ hạn chế lớn đối với các hệ thống then chốt (critical systems đòi hỏi phân tích an toàn trước khi bàn giao) hoặc các dự án quy mô lớn do nhiều nhóm phân tán cùng phát triển.

4. Kỹ thuật quan sát thực địa (Ethnography) giải quyết vấn đề gì trong thu thập yêu cầu?

Ethnography là phương pháp các chuyên gia dành thời gian quan sát trực tiếp quy trình làm việc thực tế của người dùng. Kỹ thuật này giúp phát hiện các ràng buộc xã hội, văn hóa tổ chức và các thao tác nghiệp vụ ngầm định mà người dùng thường không diễn đạt được hoặc bỏ quên khi tham gia phỏng vấn thông thường.

5. Biểu mẫu đặc tả có cấu trúc (Structured Specification) bao gồm những thành phần bắt buộc nào?

Theo mẫu chuẩn của giáo trình (như mẫu SRS 3.2 của Insulin Pump), một đặc tả có cấu trúc phải bao gồm: Tên chức năng (Function), Mô tả (Description), Đầu vào (Inputs), Nguồn gốc đầu vào (Source), Đầu ra (Outputs), Đích đến (Destination), Hành động logic (Action), Yêu cầu tiền đề (Requirements/Pre-condition), Điều kiện sau khi thực thi (Post-condition), và Tác dụng phụ (Side effects).


Kết luận

Chuyên đề Kỹ thuật Yêu cầu Trong Kỹ thuật Phần mềm (CO3001) thiết lập một khung tri thức chuẩn mực về cách thức xác định, phân tích, mô hình hóa và kiểm soát các yêu cầu trong kỹ nghệ phần mềm. Thông qua việc phân loại rành mạch giữa các nhóm yêu cầu chức năng - phi chức năng, cung cấp các thước đo định lượng và các ca nghiên cứu thực tiễn điển hình (Mentcare, Máy bơm Insulin), giáo trình xây dựng năng lực phân tích nghiệp vụ và lập hồ sơ kỹ thuật có độ chính xác cao.

Lộ trình học tập khuyến nghị cho người học là nắm vững phân loại lý thuyết, thực hành viết đặc tả trên biểu mẫu chuẩn, và vận dụng mô hình hóa ca sử dụng UML để kiểm chứng tính toàn vẹn của hệ thống trước khi bước vào giai đoạn thiết kế và cài đặt.