Tài liệu Giảng dạy và Học tập: Tổng quan về Quy trình Phần mềm trong Kỹ thuật Phần mềm

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

Nội dung học phần "Quy trình phần mềm" (Software Process) thuộc môn học Nhập môn Công nghệ phần mềm (Introduction to Software Engineering), nằm trong khối kiến thức cơ sở ngành của chương trình đào tạo Cử nhân và Kỹ sư các ngành Công nghệ thông tin, Kỹ thuật phần mềm và Hệ thống thông tin tại các trường đại học. Tài liệu này được biên soạn, dịch thuật và phát triển học thuật dựa trên hệ thống bài giảng và giáo trình chuẩn mực của Giáo sư Ian Sommerville – một trong những tác giả tiêu biểu của ngành kỹ thuật phần mềm thế giới.

Mục tiêu học tập (Learning Outcomes) của tài liệu bao gồm:

  • Định nghĩa và phân tích cấu trúc của một quy trình phần mềm chuẩn mực, bao gồm các hoạt động kỹ thuật, vai trò, sản phẩm đầu ra cùng điều kiện trước và sau (pre- and post-conditions).
  • Phân biệt bản chất vận hành giữa quy trình hoạch định sẵn (plan-driven process) và quy trình linh hoạt (agile process).
  • Trình bày chi tiết bốn hoạt động kỹ thuật cốt lõi: Đặc tả phần mềm (Software specification), Thiết kế và cài đặt (Design and implementation), Thẩm định phần mềm (Software validation), và Cải tiến phần mềm (Software evolution).
  • Phân tích cơ chế thích nghi với sự thay đổi yêu cầu thông qua các kỹ thuật xây dựng nguyên bản (software prototyping), chuyển giao dần dần (incremental delivery), mô hình xoắn ốc Boehm (Boehm's spiral model) và Quy trình hợp nhất Rational (Rational Unified Process - RUP).

Về cấu trúc và cách tiếp cận, tài liệu đi từ các khái niệm định nghĩa trừu tượng, phân loại các mô hình vòng đời kinh điển, đi sâu vào cấu trúc nội tại của từng pha kỹ thuật, sau đó phân tích các chiến lược xử lý rủi ro và biến động yêu cầu trong môi trường công nghiệp. Điểm đặc sắc của tài liệu là tính trung lập về mặt phương pháp luận, khẳng định nguyên lý "không có quy trình phần mềm đúng hay sai", đồng thời kết hợp giữa các mô hình truyền thống với các hướng tiếp cận hiện đại như công nghệ phần mềm dựa trên thành phần tái sử dụng (Reuse-oriented software engineering) và các phương pháp hình thức (formal methods).


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

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

Nội dung tài liệu được cấu trúc thành 4 phần kiến thức chính theo tiến trình sư phạm chặt chẽ:

[Khái niệm & Mô hình Quy trình] 
[4 Hoạt động Kỹ thuật Cốt lõi] 
 (Đặc tả ➔ Thiết kế & Cài đặt ➔ Thẩm định ➔ Cải tiến)
[Kỹ thuật Thích nghi Thay đổi] 
 (Prototyping, Incremental Delivery, Spiral Model)
[Khung Quy trình Hợp nhất RUP]

1. Khái niệm và các mô hình quy trình phần mềm (Software Process Models)

  • Định nghĩa: Quy trình phần mềm là tập hợp có cấu trúc các hoạt động cần thiết để phát triển hệ thống phần mềm. Mô hình quy trình phần mềm là sự biểu diễn trừu tượng của một quy trình từ một góc nhìn cụ thể.
  • Thành phần mô tả quy trình: Bao gồm các hoạt động (activities), trình tự thực hiện (order), sản phẩm bàn giao (products/deliverables), vai trò trách nhiệm (roles), cùng các điều kiện tiên quyết và điều kiện hoàn thành (pre- and post-conditions).
  • Phân loại chiến lược:
    • Quy trình hoạch định sẵn (Plan-driven): Lập kế hoạch trước toàn bộ các hoạt động, đánh giá tiến độ dựa trên kế hoạch cố định.
    • Quy trình linh hoạt (Agile): Lập kế hoạch dần dần, tối ưu hóa khả năng thích ứng với biến động yêu cầu.
  • Các mô hình vòng đời cơ bản:
    • Mô hình thác nước (Waterfall model): Tổ chức tuần tự các pha tách rời gồm: Xác định yêu cầu (Requirements definition) $\rightarrow$ Thiết kế hệ thống và phần mềm (System and software design) $\rightarrow$ Cài đặt và kiểm thử đơn vị (Implementation and unit testing) $\rightarrow$ Tích hợp và kiểm thử hệ thống (Integration and system testing) $\rightarrow$ Vận hành và bảo trì (Operation and maintenance). Mô hình phù hợp với hệ thống lớn, phát triển tại nhiều địa điểm, yêu cầu ổn định.
    • Biến thể phát triển hình thức (Formal development): Ứng dụng mô hình toán học và kỹ thuật chuyển đổi hình thức (ví dụ: B-method) để suy diễn chương trình nhất quán từ đặc tả, triển khai trong các hệ thống đòi hỏi độ tin cậy và an toàn nghiêm ngặt như Tuyến Metro 14 tại Paris hay hệ thống tàu tự động tại sân bay Charles de Gaulle (CDG).
    • Mô hình phát triển dần dần (Incremental development): Đan xen các pha đặc tả, phát triển và thẩm định; cung cấp phản hồi nhanh từ khách hàng nhưng tiềm ẩn rủi ro thoái hóa cấu trúc hệ thống.
    • Kỹ thuật phần mềm định hướng tái sử dụng (Reuse-oriented software engineering): Tích hợp hệ thống từ các thành phần có sẵn hoặc phần mềm thương mại COTS (Commercial-off-the-shelf), dịch vụ Web (Web services) hoặc các gói đối tượng trên nền tảng J2EE, .NET. Quy trình trải qua: Phân tích component $\rightarrow$ Bổ sung yêu cầu $\rightarrow$ Thiết kế hệ thống tái sử dụng $\rightarrow$ Phát triển và tích hợp.

2. Bốn hoạt động kỹ thuật cốt lõi

  • Đặc tả phần mềm (Software specification): Quy trình công nghệ yêu cầu (Requirements engineering) gồm 4 giai đoạn nối tiếp: Nghiên cứu khả thi (Feasibility study tạo Báo cáo khả thi), Thu thập và phân tích yêu cầu (Elicitation & analysis tạo Mô hình hệ thống), Đặc tả yêu cầu (Specification tạo Yêu cầu người dùng và hệ thống), và Thẩm định yêu cầu (Validation tạo Tài liệu yêu cầu hoàn chỉnh).
  • Thiết kế và cài đặt phần mềm (Software design & implementation): Chuyển đổi đặc tả thành hệ thống thực thi. Tiến trình thiết kế bao gồm: Thiết kế kiến trúc (Architectural design), Thiết kế giao diện (Interface design), Thiết kế thành phần (Component design), và Thiết kế cơ sở dữ liệu (Database design).
  • Thẩm định phần mềm (Software validation - V&V): Quá trình kiểm tra và thẩm định (Verification & Validation) nhằm đảm bảo phần mềm tuân thủ đặc tả và đáp ứng kỳ vọng của khách hàng. Các cấp độ kiểm thử gồm: Kiểm thử trong phát triển (Development/Component testing), Kiểm thử hệ thống (System testing), và Kiểm thử chấp nhận (Acceptance testing/User testing). Trong quy trình hoạch định sẵn, kế hoạch kiểm thử được ánh xạ tương ứng với từng pha thiết kế và đặc tả.
  • Cải tiến phần mềm (Software evolution): Tiến trình liên tục gồm: Xác định yêu cầu hệ thống $\rightarrow$ Đánh giá hệ thống hiện hữu $\rightarrow$ Đề xuất thay đổi $\rightarrow$ Chỉnh sửa hệ thống. Ranh giới giữa phát triển mới và cải tiến ngày càng mờ nhạt do phần lớn hệ thống hiện đại được xây dựng trên nền tảng các ứng dụng sẵn có.

3. Kỹ thuật thích nghi với sự thay đổi (Coping with Change)

  • Chiến lược kiểm soát chi phí làm lại (Rework cost):
    • Tránh thay đổi (Change avoidance): Sử dụng nguyên bản phần mềm (Software prototype) để người dùng thử nghiệm tính năng, làm rõ và tinh chỉnh yêu cầu trước khi triển khai chính thức.
    • Chấp nhận thay đổi (Change tolerance): Sử dụng phương pháp chuyển giao dần dần (Incremental delivery).
  • Nguyên bản phần mềm (Software prototyping): Bản mẫu ban đầu dùng để trình diễn khái niệm, thử nghiệm giao diện hoặc phục vụ kiểm thử đối sánh (back-to-back testing). Bản mẫu tập trung vào các chức năng chưa rõ ràng, bỏ qua các kiểm tra lỗi phức tạp hoặc ràng buộc phi chức năng, và thường bị loại bỏ (throwaway prototype) sau giai đoạn đánh giá.
  • Chuyển giao dần dần (Incremental delivery): Hệ thống được phân rã thành các phần tăng trưởng (increments) với các tính năng ưu tiên cao nhất được phát triển và bàn giao trước cho người dùng cuối sử dụng thực tế.
  • Mô hình xoắn ốc Boehm (Boehm's Spiral Model): Mô hình hướng rủi ro (risk-driven), biểu diễn quy trình dưới dạng các vòng lặp xoắn ốc. Mỗi vòng lặp chia thành 4 phân khu (sectors):
    1. Thiết lập mục tiêu (Determine objectives, alternatives and constraints).
    2. Đánh giá và giảm thiểu rủi ro (Evaluate alternatives, identify and resolve risks).
    3. Phát triển và thẩm định (Develop and verify next-level product).
    4. Lập kế hoạch cho pha tiếp theo (Plan next phase).

4. Quy trình hợp nhất Rational (Rational Unified Process - RUP)

Quy trình tổng quát bắt nguồn từ UML và Tiến trình phát triển phần mềm hợp nhất (Unified Software Development Process), kết hợp ưu điểm của các mô hình kinh điển và được mô tả theo ba góc độ:

  • Góc độ động (Dynamic perspective): Thể hiện các pha của dự án theo trục thời gian.
  • Góc độ tĩnh (Static perspective): Thể hiện các hoạt động kỹ thuật diễn ra trong quy trình.
  • Góc độ thực tiễn (Practice perspective): Cung cấp các hướng dẫn và kinh nghiệm triển khai kỹ thuật phần mềm thực tế.

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

  1. Lý thuyết vòng đời phần mềm (Software Life Cycle Theory): Khung khái niệm về sự biến chuyển của sản phẩm phần mềm từ giai đoạn hình thành ý tưởng, khảo sát khả thi, đặc tả kỹ thuật, hiện thực hóa mã nguồn, kiểm tra chất lượng đến bảo trì và thích ứng với môi trường nghiệp vụ.
  2. Nguyên lý Kiểm định và Thẩm định (Verification & Validation Principle):
    • Verification (Kiểm định): Đảm bảo việc xây dựng phần mềm đúng theo đặc tả thiết kế ("Building the product right").
    • Validation (Thẩm định): Đảm bảo phần mềm xây dựng đáp ứng đúng nhu cầu thực tế của người dùng ("Building the right product").
  3. Lý thuyết Quản trị rủi ro kỹ thuật (Risk-Driven Engineering): Phương pháp luận nhận diện, định lượng và triệt tiêu rủi ro kiến trúc/chức năng trước khi đầu tư nguồn lực cài đặt chi tiết (nền tảng của mô hình xoắn ốc Barry Boehm).
  4. Nguyên lý Tái sử dụng thành phần (Component-Based Principles): Mô hình hóa cấu trúc hệ thống dựa trên các khối chức năng độc lập (Web services, COTS, J2EE/.NET packages), thiết lập quy trình tích hợp thay vì viết mã từ đầu.

Kỹ năng phát triển

  • Kỹ năng phân tích (Analytical skills):
    • Đánh giá tính chất dự án (yêu cầu nghiệp vụ biến động hay ổn định, quy mô hệ thống, mức độ phân tán địa lý của đội ngũ) để chọn lựa mô hình quy trình tối ưu (Waterfall, Incremental, Reuse-oriented hay Spiral).
    • Phân tích rủi ro kỹ thuật và rủi ro phi chức năng trong từng pha phát triển.
  • Kỹ năng kỹ thuật (Technical skills):
    • Xây dựng ma trận kế hoạch kiểm thử (V&V Test Planning) tích hợp tương ứng từ kiểm thử module, kiểm thử tích hợp đến kiểm thử chấp nhận.
    • Phân rã kiến trúc hệ thống thành các hệ thống con (sub-systems) và xác định giao diện (interfaces) giữa các thành phần.
    • Xây dựng tài liệu đặc tả yêu cầu người dùng và hệ thống (Requirements Document).
  • Năng lực thực tiễn (Practical competencies):
    • Lập kế hoạch phân bổ tính năng theo thứ tự ưu tiên cho các đợt bàn giao gia số (Increments allocation).
    • Triển khai quy trình tạo nguyên bản (Prototyping) để thu thập và tinh chỉnh yêu cầu từ khách hàng.

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

Phương pháp tiếp cận sư phạm (Pedagogical approach)

Tài liệu áp dụng phương pháp phân tích so sánh đối chiếu (Comparative Analysis) kết hợp với mô hình hóa luồng kỹ thuật (Engineering Workflow Modeling). Thay vì tiếp cận theo hướng mô tả đơn thuần, tài liệu đặt các mô hình quy trình cạnh nhau để làm nổi bật các mối đánh đổi (trade-offs) kỹ thuật:

Tiêu chí Mô hình Thác nước (Waterfall) Phát triển dần dần (Incremental) Hướng tái sử dụng (Reuse-oriented)
Bản chất Hoạch định sẵn (Plan-driven) Đan xen các pha Tích hợp thành phần sẵn có
Khả năng thích ứng thay đổi Kém (Khó thay đổi khi đã vào guồng) Cao (Chi phí thay đổi thấp) Trung bình (Phụ thuộc cấu phần COTS)
Tính rõ ràng của quy trình Cao (Người quản lý dễ theo dõi) Thấp (Khó tạo mốc tiến độ đo lường) Cao ở các pha phân tích thành phần
Tính toàn vẹn cấu trúc Tốt nếu thiết kế ban đầu chuẩn xác Có xu hướng thoái hóa khi thêm mới Phụ thuộc vào kiến trúc tích hợp

Bài tập và nghiên cứu tình huống (Case studies)

Hệ thống bài học tích hợp các nghiên cứu tình huống kỹ thuật thực tế để minh họa việc ứng dụng các biến thể quy trình:

  • Tình huống phương pháp hình thức (Formal Methods): Phân tích ca triển khai B-method trong dự án đường tàu điện ngầm tự động Metro 14 (Paris) và hệ thống vận chuyển tự động tại sân bay Paris Charles de Gaulle (CDG). Sinh viên được phân tích lý do tại sao các hệ thống có yêu cầu an toàn, bảo mật và độ tin cậy tuyệt đối bắt buộc phải sử dụng các phép biến đổi toán học thay cho các mô hình thử-sai thông thường.
  • Tình huống tích hợp thành phần COTS: Bài tập phân tích sự đánh đổi khi doanh nghiệp lựa chọn giữa việc tự phát triển hệ thống quản lý mới và việc cấu hình gói giải pháp COTS có sẵn.

Bài tập thực hành và phương pháp đánh giá

  • Bài tập thực hành:
    • Thiết lập bảng điều kiện trước (Pre-conditions) và điều kiện sau (Post-conditions) cho từng hoạt động kỹ thuật trong quy trình thiết kế phần mềm.
    • Xây dựng quy trình 4 bước tạo nguyên bản cho một hệ thống thông tin mô phỏng (Xác định mục tiêu $\rightarrow$ Định nghĩa chức năng $\rightarrow$ Xây dựng bản mẫu $\rightarrow$ Đánh giá).
    • Lập ma trận kế hoạch kiểm thử theo mô hình chữ V cho quy trình hoạch định sẵn.
  • Phương pháp đánh giá:
    • Đánh giá quá trình: Kiểm tra khả năng phân tích sự khác biệt giữa các mô hình vòng đời thông qua câu hỏi trắc nghiệm khách quan và tự luận ngắn.
    • Đánh giá đồ án môn học: Yêu cầu nhóm sinh viên xây dựng tài liệu quy trình phát triển cho một hệ thống giả định, bao gồm phân tích rủi ro theo 4 phân khu của mô hình xoắn ốc Boehm và phân rã các gói bàn giao gia số.

Hướng dẫn tự học (Self-study guidelines)

  1. Giai đoạn 1 - Nắm vững thuật ngữ và khái niệm: Đọc kỹ định nghĩa về quy trình phần mềm, phân biệt rõ giữa "Hoạt động" (Activity), "Sản phẩm" (Product), "Vai trò" (Role), và "Điều kiện" (Condition).
  2. Giai đoạn 2 - Vẽ lại và giải thích các sơ đồ quy trình: Tự phác thảo lại các sơ đồ kỹ thuật then chốt: Luồng công nghệ yêu cầu, Mô hình tổng quát của quy trình thiết kế, Ma trận các pha kiểm thử trong quy trình hoạch định sẵn, Quy trình phát triển nguyên bản và 4 phân khu của mô hình xoắn ốc Boehm.
  3. Giai đoạn 3 - Vận dụng phân tích: Trả lời các câu hỏi tình huống: Khi nào nên loại bỏ hoàn toàn mô hình thác nước? Tại sao nguyên bản phần mềm cần bị loại bỏ mà không dùng làm nền tảng phát triển hệ thống cuối cùng?

Điểm nổi bật và cập nhật

Tích hợp các xu hướng kỹ thuật hiện đại

  • Công nghệ phần mềm định hướng tái sử dụng (Reuse-oriented Engineering): Tài liệu phản ánh bước chuyển dịch quan trọng của ngành công nghiệp phần mềm: việc tái sử dụng đã trở thành phương pháp chuẩn để xây dựng các hệ thống thương mại. Nội dung phân loại rõ ba dạng thành phần tái sử dụng chủ đạo:
    1. Dịch vụ Web (Web services): Triệu gọi từ xa theo các tiêu chuẩn giao thức chuẩn mực.
    2. Gói đối tượng tích hợp (Packages): Các bộ thư viện và khung làm việc (framework) trên nền tảng .NET hoặc J2EE.
    3. Hệ thống thương mại độc lập (COTS): Các phần mềm đóng gói sẵn được cấu hình cho môi trường cụ thể.
  • Sự dung hợp giữa phát triển mới và cải tiến (Evolution): Tài liệu xác lập quan điểm kỹ thuật hiện đại: ranh giới giữa việc phát triển phần mềm mới hoàn toàn và bảo trì cải tiến ngày càng mờ nhạt, do hầu hết các dự án thương mại ngày nay đều là quá trình phát triển kế thừa và cải biến trên các hệ thống hiện hữu.
[Các dạng thành phần tái sử dụng]

Ứng dụng thực tế và gắn kết công nghiệp

  • Mô hình xoắn ốc hướng rủi ro của Barry Boehm: Phân tích rõ ràng quy trình thẩm định rủi ro kỹ thuật và rủi ro quản lý, phản ánh cách thức các tập đoàn công nghệ lớn kiểm soát các dự án phần mềm quy mô khổng lồ.
  • Khung quy trình RUP: Kết hợp chuẩn mô hình hóa UML với ba góc độ tiếp cận (Động - Tĩnh - Thực tiễn), cung cấp nền tảng chuẩn mực cho việc tổ chức dự án trong các tổ chức phần mềm chuyên nghiệp.

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

Đối tượng người học và điều kiện tiên quyết

  • Đối tượng: Sinh viên đại học năm thứ 2 hoặc năm thứ 3 chuyên ngành Công nghệ phần mềm, Khoa học máy tính, Hệ thống thông tin, Kỹ thuật mạng và truyền thông.
  • Điều kiện tiên quyết (Prerequisites):
    • Hoàn thành học phần Cơ sở lập trình hoặc Lập trình hướng đối tượng (hiểu cấu trúc hàm, lớp, đối tượng, module).
    • Kiến thức căn bản về Cấu trúc dữ liệu và Giải thuật.
    • Khái niệm cơ bản về Cơ sở dữ liệu và hệ điều hành.

Hướng dẫn dành cho giảng viên

  • Sử dụng tài liệu làm đề cương chi tiết cho học phần Nhập môn Công nghệ phần mềm trong thời lượng 2 đến 3 tuần giảng dạy (tương đương 6-9 tiết lý thuyết và 3-6 tiết thảo luận).
  • Khai thác hệ thống sơ đồ tiến trình (Engineering Process Diagrams) được chuẩn hóa từ bộ slide của Ian Sommerville để trực quan hóa bài giảng.
  • Tổ chức các buổi hội thảo nhỏ (seminar) yêu cầu sinh viên bảo vệ phương án chọn lựa quy trình cho các bài toán thực tế (ví dụ: phát triển ứng dụng thương mại điện tử vs. phát triển hệ thống điều khiển tàu điện).

Hướng dẫn tra cứu và tự học

  • Kỹ sư phần mềm mới gia nhập ngành (Junior Developers/Software Engineers) có thể sử dụng tài liệu làm tài liệu tham chiếu chuẩn mực để hiểu rõ vị trí công việc của mình trong toàn bộ vòng đời sản phẩm, nắm vững các bước của quy trình V&V và hiểu bản chất của các đợt phát hành gia số (increments).

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

1. Giáo trình này phù hợp với ai?

Tài liệu được thiết kế chuyên biệt cho sinh viên bậc đại học thuộc khối ngành Công nghệ thông tin đang theo học môn Nhập môn Công nghệ phần mềm, đồng thời là tài liệu tham khảo nền tảng cho giảng viên và kỹ sư phần mềm cần hệ thống hóa kiến thức chuẩn mực về vòng đời phần mềm.

2. Cần kiến thức nền nào để học?

Người học cần nắm vững kỹ năng lập trình cơ bản (hướng cấu trúc hoặc hướng đối tượng), hiểu cách thức tổ chức mã nguồn và dữ liệu. Không yêu cầu kiến thức nâng cao về quản lý dự án trước khi tiếp cận tài liệu này.

3. Điểm khác biệt của tài liệu này so với các tài liệu quy trình khác là gì?

Tài liệu bám sát khung lý thuyết chuẩn tắc của Ian Sommerville, phân tích cân bằng và khách quan giữa mô hình hoạch định sẵn (Plan-driven) và mô hình linh hoạt (Agile), đồng thời bổ sung các nội dung chuyên sâu ít gặp trong các tài liệu sơ cấp như: Phương pháp hình thức (B-method), Kỹ thuật tái sử dụng COTS/.NET/J2EE, và 3 góc độ mô tả của Rational Unified Process (RUP).

4. Làm sao để tự học nội dung này hiệu quả?

Người học nên học tập theo phương pháp lập sơ đồ tư duy: liên kết 4 hoạt động kỹ thuật cốt lõi (Đặc tả $\rightarrow$ Thiết kế/Cài đặt $\rightarrow$ Thẩm định $\rightarrow$ Cải tiến) với từng mô hình vòng đời cụ thể; so sánh trực tiếp bảng ưu - nhược điểm của từng mô hình dựa trên tiêu chí biến động yêu cầu và chi phí làm lại.

5. Có tài liệu bổ trợ nào kèm theo?

Tài liệu được phát triển dựa trên bộ bài giảng của Ian Sommerville. Người học có thể tham khảo thêm sách giáo khoa Software Engineering của Ian Sommerville, các bài báo khoa học của Barry Boehm về Spiral Model, và tài liệu đặc tả chuẩn về Rational Unified Process và UML.


Kết luận

Tài liệu "Quy trình phần mềm" cung cấp hệ thống tri thức nền tảng và toàn diện về các phương pháp luận tổ chức hoạt động phát triển phần mềm trong kỹ thuật công nghệ thông tin. Giá trị cốt lõi của tài liệu nằm ở việc chuẩn hóa các khái niệm kỹ thuật, phân loại rõ ràng các mô hình vòng đời từ thác nước, phát triển dần dần, hướng tái sử dụng đến mô hình xoắn ốc Boehm và RUP.

Lộ trình học tập đề xuất:

  1. Tiếp cận từ việc hiểu bản chất và các thành phần mô tả của một quy trình phần mềm.
  2. Nắm vững tiến trình thực thi 4 hoạt động kỹ thuật cốt lõi và ma trận kiểm thử V&V.
  3. Nghiên cứu sâu các chiến lược kiểm soát thay đổi, xây dựng nguyên bản và quản trị rủi ro.

Tài nguyên tham khảo bổ sung bao gồm giáo trình Software Engineering (Ian Sommerville), tài liệu chuẩn UML của OMG và hệ thống tài liệu hướng dẫn kỹ thuật của Rational Software/IBM.