GIÁO TRÌNH CÔNG NGHỆ PHẦN MỀM NÂNG CAO – LÊ VĂN PHÙNG, NGUYỄN VĂN TẢO (NXB ĐẠI HỌC THÁI NGUYÊN, 2018)
Tổng quan về giáo trình
Môn học và vị trí trong chương trình đào tạo
Giáo trình Công nghệ phần mềm nâng cao do PGS. TS. Lê Văn Phùng và TS. Nguyễn Văn Tảo đồng biên soạn, được Nhà xuất bản Đại học Thái Nguyên xuất bản năm 2018 (Mã số xuất bản: 04-105/ĐHTN-2018). Giáo trình được biên soạn phục vụ trực tiếp cho chương trình đào tạo sau đại học (học viên cao học và nghiên cứu sinh) ngành Công nghệ thông tin tại Trường Đại học Công nghệ thông tin và Truyền thông thuộc Đại học Thái Nguyên. Trong khung chương trình đào tạo chuyên ngành Công nghệ thông tin, Kỹ thuật phần mềm và Hệ thống thông tin, học phần Công nghệ phần mềm nâng cao giữ vai trò cầu nối chuyển tiếp từ các kiến thức nền tảng ở bậc đại học sang các phương pháp luận, mô hình kiến trúc và kỹ thuật phát triển hệ thống phần mềm quy mô lớn, phức tạp ở cấp độ chuyên gia.
Mục tiêu học tập
Giáo trình hướng tới việc trang bị cho người học hệ thống mục tiêu học tập (learning outcomes) toàn diện:
- Phân tích và phân biệt bản chất học thuật giữa công nghệ phần mềm (Software Technology), kỹ nghệ phần mềm (Software Engineering) và kỹ nghệ hệ thống (System Engineering).
- Nắm vững các mô hình tiến trình phần mềm hiện đại và phương pháp lựa chọn tiến trình phù hợp với đặc thù dự án.
- Thực hiện thuần thục tiến trình phân tích, đặc tả yêu cầu hệ thống và phần mềm; chuyển đổi từ biểu đồ luồng dữ liệu (DFD) sang cấu trúc kiến trúc chương trình.
- Thiết kế kiến trúc phần mềm chuyên sâu theo các hướng tiếp cận tiên tiến: kiến trúc phân tán (Client-Server), kiến trúc hướng thành phần (Component-Based Software Engineering - CBSE), kiến trúc hướng dịch vụ (Service Oriented Architecture - SOA) và điện toán đám mây (Cloud Computing).
- Nắm vững quy trình bảo đảm chất lượng phần mềm (Software Quality Assurance - SQA), đo đạc chất lượng theo chuẩn quốc tế ISO/IEC 9126, thiết kế ca kiểm thử hộp trắng/hộp đen, cũng như hoạch định tiến trình bảo trì và tái kỹ nghệ hệ thống (System Re-engineering).
Cấu trúc và cách tiếp cận
Nội dung giáo trình gồm 10 chương được tổ chức theo quy luật phát triển logic của vòng đời kỹ nghệ phần mềm mở rộng:
- Chương 1: Tổng quan về công nghệ phần mềm
- Chương 2: Tiến trình phát triển phần mềm
- Chương 3: Đặc tả yêu cầu phần mềm và yêu cầu hệ thống
- Chương 4: Đặc tả thiết kế
- Chương 5: Đặc tả thiết kế kiến trúc
- Chương 6: Đặc tả kiến trúc một số hệ thống được thiết kế theo hướng hiện đại
- Chương 7: Bảo đảm chất lượng phần mềm
- Chương 8: Kiểm thử phần mềm
- Chương 9: Nâng cấp phần mềm
- Chương 10: Kỹ nghệ phần mềm hướng dịch vụ
Cách tiếp cận của giáo trình kế thừa và phát triển các trường phái khoa học kỹ nghệ phần mềm kinh điển của thế giới (tiêu biểu như Roger S. Pressman, Ian Sommerville, David Parnas, Carlo Ghezzi, Peter Naur, Fritz Bauer), kết hợp hệ thống tiêu chuẩn kỹ thuật quốc tế (IEEE, ISO/IEC, OMG, SEI) và thực tiễn phát triển ứng dụng công nghệ thông tin tại Việt Nam.
Điểm đặc sắc của giáo trình
Tài liệu định hình ranh giới học thuật rõ ràng giữa kỹ thuật lập trình cục bộ và tư duy kỹ nghệ quy mô lớn; tích hợp toàn diện các mô hình thành phần công nghiệp (COM/DCOM của Microsoft, CORBA/CCM của OMG, JavaBeans/EJB của Sun Microsystems); dành dung lượng chuyên sâu cho công nghệ hướng dịch vụ (SOA) và điện toán đám mây; đồng thời cung cấp hệ thống câu hỏi lý thuyết cùng bài tập phân tích ca sử dụng thực tế cuối mỗi chương.
Nội dung kiến thức cốt lõi
+-------------------------------------------------------------+
| CHƯƠNG 1: TỔNG QUAN VỀ CÔNG NGHỆ PHẦN MỀM |
+-------------------------------------------------------------+
|
v
+-------------------------------------------------------------+
| CHƯƠNG 2: TIẾN TRÌNH PHÁT TRIỂN PHẦN MỀM |
+-------------------------------------------------------------+
|
v
+-------------------------------------------------------------+
| CHƯƠNG 3: ĐẶC TẢ YÊU CẦU PHẦN MỀM VÀ YÊU CẦU HỆ THỐNG |
+-------------------------------------------------------------+
|
v
+-------------------------------------------------------------+
| CHƯƠNG 4 & 5: ĐẶC TẢ THIẾT KẾ VÀ THIẾT KẾ KIẾN TRÚC |
+-------------------------------------------------------------+
|
v
+-------------------------------------------------------------+
| CHƯƠNG 6 & 10: KIẾN TRÚC HIỆN ĐẠI (DISTRIBUTED, OOA, SOA) |
+-------------------------------------------------------------+
|
v
+-------------------------------------------------------------+
| CHƯƠNG 7, 8 & 9: BẢO ĐẢM CHẤT LƯỢNG, KIỂM THỬ, BẢO TRÌ |
+-------------------------------------------------------------+
Các chương và chủ đề chính
1. Tổng quan và Tiến trình phát triển phần mềm (Chương 1, Chương 2)
- Chương 1: Trình bày định nghĩa toàn diện về phần mềm (bao gồm tài liệu, cơ sở dữ liệu, mã lệnh và tiện ích số hóa) và công nghệ phần mềm. Phân tích sự khác biệt giữa công nghệ phần mềm, kỹ nghệ phần mềm và kỹ nghệ hệ thống dựa trên khái niệm "đặc tính trồi" của hệ thống tin học. Khái quát các môi trường phát triển: Môi trường lập trình, Bàn thợ CASE (Computer Aided Software Engineering), Môi trường kỹ nghệ phần mềm; phân loại công cụ CASE theo pha (Upper CASE, Lower CASE), theo tính năng (công cụ lập biểu đồ, tạo sinh màn hình/báo cáo, phân tích, từ điển dữ liệu trung tâm, bộ sinh tài liệu, bộ sinh mã) và theo quy mô (bộ công cụ tích hợp I-CASE như Designer/2000, Developer/2000). Xác định 4 tiêu chuẩn của một phần mềm tốt (Bảo trì được, Đáng tin cậy, Hiệu quả, Giao diện thích hợp) và 6 đặc tính chất lượng theo chuẩn ISO/IEC 9126. Giới thiệu tổng quan các hướng kỹ nghệ: hướng cấu trúc, hướng đối tượng, hướng thành phần, hướng dịch vụ và điện toán đám mây.
- Chương 2: Khảo sát các mô hình tiến trình phần mềm gồm mô hình thác nước (Waterfall model), mô hình tiến hóa (Evolutionary model), mô hình làm bản mẫu (Prototyping model), mô hình phát triển tăng dần (Incremental model), mô hình phát triển ứng dụng nhanh (Rapid Application Development - RAD), mô hình hệ thống hình thức hóa (Formal systems development), mô hình phát triển theo hướng sử dụng lại (Reuse-based model), và mô hình phát triển theo kỹ thuật thế hệ thứ tư (4GT).
2. Kỹ thuật Đặc tả yêu cầu và Thiết kế hệ thống (Chương 3, Chương 4)
- Chương 3: Trình bày khái niệm, phân loại yêu cầu hệ thống; các kỹ thuật phân tích và xác định yêu cầu; quy trình xây dựng tài liệu đặc tả yêu cầu phần mềm; tiến trình phát triển bản mẫu cho hệ thống và phần mềm.
- Chương 4: Tập trung vào kỹ thuật thiết kế dữ liệu (CSDL mức logic, CSDL mức vật lý); thiết kế cấu trúc chương trình; thiết kế giao diện người - máy (Human - Computer Interface - HCI) thông qua sơ đồ tương tác hệ thống giao diện, cấu trúc tương tác màn hình; và thiết kế mô-đun xử lý theo cách tiếp cận top-down kết hợp phương pháp tinh chỉnh từng bước (Stepwise refinement).
3. Đặc tả Thiết kế Kiến trúc và Các hệ thống hiện đại (Chương 5, Chương 6, Chương 10)
- Chương 5: Định nghĩa vai trò của kiến trúc phần mềm; phân loại mô hình kiến trúc ứng dụng (dữ liệu tập trung/phân tán, điều khiển tập trung, hướng sự kiện, phân rã mô-đun, theo miền ứng dụng); các phương pháp tạo kiến trúc (phân hoạch ngang, phân hoạch dọc); tiến trình phân tích đặc tả yêu cầu thành đặc tả kiến trúc thông qua phân tích luồng chuyển đổi (Transform flow) và luồng giao dịch (Transaction flow); các tiêu chuẩn và hướng dẫn đánh giá chất lượng thiết kế kiến trúc.
- Chương 6 & Chương 10: Đi sâu vào đặc tả kiến trúc phân tán (Client-Server, máy dịch vụ file, cân bằng tải); đặc tả kiến trúc hướng đối tượng (mô hình hóa cấu trúc với UML, phân tích, thiết kế, kiến trúc đối tượng phân tán); kiến trúc hướng thành phần (mô hình COM/DCOM, JavaBeans, EJB, CORBA/CCM); và kỹ nghệ phần mềm hướng dịch vụ (SOA). Phân tích chi tiết các mẫu hình trao đổi thông tin trong SOA gồm Điểm tới điểm (Point-to-Point) và Xuất tin - Đăng ký (Publish - Subscribe); các công nghệ dịch vụ web (WSDL, SOAP, UDDI, XML); vòng đời phát triển dịch vụ và thiết kế luồng công việc (Workflow).
4. Quản lý chất lượng, Kiểm thử và Tiến hóa phần mềm (Chương 7, Chương 8, Chương 9)
- Chương 7: Trình bày khái niệm SQA, các mô hình chất lượng (chất lượng trong/ngoài, chất lượng sử dụng, mô hình phân cấp đặc tính); phương pháp đo đạc chất lượng thông qua các chỉ tiêu cổ điển, chỉ số chất lượng cấu trúc thiết kế (Design Structure Quality Index - DSQI), chỉ số trưởng thành phần mềm (Software Maturity Index - SMI) và 6 đặc tính chuẩn ISO/IEC 9126 (Chức năng, Tin cậy, Sử dụng được, Hiệu quả, Bảo trì được, Khả chuyển); quá trình phòng sạch (Cleanroom software engineering); các hoạt động thẩm định và xác minh (Verification & Validation - V&V), quản lý cấu hình phần mềm (Software Configuration Management - SCM).
- Chương 8: Hệ thống hóa chiến lược kiểm thử tổng thể; các mức kiểm thử (kiểm thử tích hợp, kiểm thử hệ thống, kiểm thử chấp nhận/hợp lệ); phương pháp và kỹ thuật kiểm thử hộp trắng (White-box testing), kiểm thử hộp đen (Black-box testing), kiểm thử ứng dụng Web; kỹ thuật thiết kế ca kiểm thử (Test case design), tiến trình và công cụ kiểm thử tự động.
- Chương 9: Phân tích bản chất của bảo trì phần mềm, độ đo tính bảo trì được; các mô hình dự đoán bảo trì và dự đoán thay đổi; tiến trình nâng cấp phần mềm; và phương pháp luận tái kỹ nghệ hệ thống (System Re-engineering).
Progression logic của nội dung
Nội dung giáo trình được bố cục chặt chẽ theo mạch phát triển tự nhiên của kỹ nghệ hệ thống:
- Thiết lập nền tảng lý luận: Định nghĩa bản chất phần mềm, chuẩn mực chất lượng và phân loại công cụ trợ giúp (Chương 1, 2).
- Kỹ thuật công đoạn phân tích - thiết kế: Đi từ đặc tả yêu cầu đến thiết kế chi tiết dữ liệu, giao diện, mô-đun (Chương 3, 4).
- Mô hình hóa kiến trúc cấp cao: Xây dựng khung kiến trúc tổng thể, chuyển dịch từ các mẫu hình kinh điển sang kiến trúc phân tán, hướng đối tượng, hướng thành phần và SOA (Chương 5, 6, 10).
- Kiểm soát chất lượng và bảo đảm vận hành: Thiết lập rào chắn chất lượng bằng SQA, kiểm thử đa cấp độ, chuẩn hóa đo lường (Chương 7, 8).
- Tiến hóa và tái cấu trúc hệ thống: Hoàn thiện vòng đời sản phẩm thông qua bảo trì, nâng cấp và tái kỹ nghệ (Chương 9).
Kiến thức nền tảng được xây dựng
- Lý thuyết nền tảng (Fundamental theories): Lý thuyết hệ thống tin học và tính chất trồi; lý thuyết che giấu thông tin (Information hiding) của David Parnas; lý thuyết biến đổi luồng thông tin của Pressman; lý thuyết chất lượng phần mềm theo tiêu chuẩn ISO/IEC 9126 và mô hình trưởng thành năng lực CMM/CMMI của Viện Kỹ nghệ Phần mềm Mỹ (SEI).
- Nguyên lý cốt lõi (Core principles): Nguyên tắc mô-đun hóa, ghép nối lỏng lẻo (Loose coupling), tính đóng gói (Encapsulation), tính kế thừa (Inheritance), nguyên tắc thiết kế top-down và tinh chỉnh từng bước; nguyên tắc bảo toàn tính nhất quán cấu hình trong SCM; nguyên tắc độc lập nền tảng trong phát triển dịch vụ web.
- Khung làm việc chuẩn mực (Essential frameworks): Khung kiến trúc phân tầng I-CASE; khung kiến trúc đối tượng phân tán CORBA (OMG); khung thành phần EJB (Sun Microsystems) và COM/DCOM (Microsoft); khung kiến trúc hướng dịch vụ SOA và mô hình phân tầng dịch vụ Điện toán đám mây (Hạ tầng, Nền tảng, Phần mềm/Dịch vụ).
Kỹ năng phát triển
- Kỹ năng kỹ thuật (Technical skills): Xây dựng biểu đồ luồng dữ liệu (DFD mức ngữ cảnh, mức đỉnh, mức phân rã chi tiết); thiết kế biểu đồ thực thể - mối quan hệ (ERD); lập tài liệu đặc tả yêu cầu phần mềm; thiết kế giao diện người - máy (HCI); thiết kế ca kiểm thử hộp trắng (bao phủ dòng lệnh, bao phủ nhánh, bao phủ điều kiện) và hộp đen (phân vùng tương đương, phân tích giá trị biên); xây dựng đặc tả dịch vụ bằng WSDL, SOAP, XML.
- Kỹ năng phân tích (Analytical skills): Phân tích và chuyển đổi luồng dữ liệu (luồng biến đổi, luồng giao dịch) thành kiến trúc phần mềm; phân tích đánh giá cấu hình phần mềm (SCI); tính toán các chỉ số chất lượng DSQI, chỉ số độ đo bảo trì SMI; phân tích cấu trúc lỗi và độ tin cậy của phần mềm.
- Năng lực thực tế (Practical competencies): Hoạch định tiến trình phát triển phần mềm cho dự án quy mô lớn; lập kế hoạch bảo đảm chất lượng SQA; tổ chức quy trình kiểm thử hệ thống; thiết kế và tích hợp các thành phần phần mềm phân tán; xây dựng chiến lược nâng cấp và tái kỹ nghệ cho các hệ thống phần mềm kế thừa (Legacy systems).
Phương pháp giảng dạy và học tập
Tiếp cận sư phạm (Pedagogical approach)
Giáo trình áp dụng phương pháp tiếp cận sư phạm kết hợp giữa diễn giảng lý thuyết quy chuẩn và phân tích mô hình hóa kỹ thuật. Mỗi chủ đề được triển khai theo quy trình 5 bước sư phạm:
- Xác lập khái niệm khoa học chuẩn mực.
- Trình bày các ký pháp toán học hoặc biểu đồ đồ họa quy chuẩn.
- Nêu rõ các quy tắc ràng buộc logic giữa các phần tử.
- Hướng dẫn các bước xây dựng mô hình từng bước.
- Cung cấp gợi ý, đề xuất vận dụng thực tế.
Bài tập và Nghiên cứu tình huống (Case studies)
Hệ thống bài tập trong giáo trình được xây dựng gắn liền với bài toán thực tế của doanh nghiệp. Điển hình như bài tập tình huống tại Chương 1:
- Tình huống hệ thống quản lý kinh doanh bán buôn: Mô tả chi tiết dòng xử lý tiếp nhận đơn hàng của khách hàng, kiểm tra tính hợp lệ, thẩm định phân loại khách hàng cũ (kiểm tra nợ quá hạn qua sổ công nợ) và khách hàng mới (đối chiếu danh sách khách), quy trình giải quyết công nợ, đối chiếu thẻ kho, thương thảo mặt hàng thiếu, lập phiếu giao hàng, phiếu thu, tổ chức gom hàng và bàn giao cho khách.
- Yêu cầu thực hành: Học viên phải phân tích tình huống thực tế để vẽ biểu đồ phân rã chức năng và thiết lập biểu đồ luồng dữ liệu mức 0 (mức đỉnh) cho toàn bộ hệ thống.
- Bài tập phân tích dữ liệu: Dựa trên chứng từ thực tế "ĐƠN ĐẶT HÀNG" (gồm các thuộc tính: Số đơn, Tên khách hàng, Ngày đặt, Địa chỉ, Điện thoại, STT, Tên hàng, Mô tả hàng, Đơn vị tính, Số lượng) để thiết kế mô hình thực thể - mối quan hệ (ERD).
+-------------------------------------------------------------+
| TIẾP NHẬN ĐƠN HÀNG CỦA KHÁCH |
+-------------------------------------------------------------+
|
v
+-------------------------------------------------------------+
| KIỂM TRA TÍNH HỢP LỆ ĐƠN HÀNG |
+-------------------------------------------------------------+
|
+-------------------------+-------------------------+
| |
[Khách hàng mới / [Đơn hàng hợp lệ /
Khách có nợ cũ] Khách hàng chuẩn]
| |
v v
+------------------------------+ +------------------------------+
| BỘ PHẬN GIẢI QUYẾT KHÁCH | | BỘ PHẬN XỬ LÝ ĐƠN HÀNG |
| (Xử lý nợ / Ký kết hợp đồng) | | (Đối chiếu thẻ kho / Lập HĐ) |
+------------------------------+ +------------------------------+
|
v
+------------------------------+
| BỘ PHẬN GOM & GỬI HÀNG |
| (Giao hàng kèm Phiếu thu) |
+------------------------------+
Bài tập thực hành (Practical exercises)
Giáo trình thiết kế các bài tập thực hành tập trung vào kỹ năng mô hình hóa:
- Thực hành phân tích luồng thông tin: Xây dựng biểu đồ ngữ cảnh, biểu đồ DFD mức 1, mức 2 theo quy tắc bảo toàn luồng vào/ra và tính duy nhất của tiến trình.
- Thực hành thiết kế giao diện: Xây dựng sơ đồ phân cấp vào - ra HIPOC (Hierarch Input Process Output Chart), thiết kế sơ đồ đối thoại tương tác người - máy.
- Thực hành thiết kế ca kiểm thử: Xác định tập hợp ca kiểm thử theo đồ thị dòng điều khiển (đo độ phức tạp Cyclomatic) cho thuật toán và kiểm thử giá trị biên cho các trường nhập liệu giao diện.
Phương pháp đánh giá (Assessment methods)
- Đánh giá thường xuyên: Thông qua việc trả lời hệ thống câu hỏi lý luận cuối mỗi chương (như phân tích mối quan hệ giữa công nghệ phần mềm và kỹ nghệ hệ thống, so sánh ưu nhược điểm của cách tiếp cận hướng cấu trúc và hướng đối tượng, phân tích cơ chế truyền thông trong SOA).
- Đánh giá thực hành/Bài tập lớn: Đánh giá năng lực xây dựng hồ sơ đặc tả yêu cầu (SRS) và tài liệu thiết kế kiến trúc (SAD) cho một bài toán quản lý thực tế, sử dụng các công cụ CASE.
- Đánh giá kết thúc học phần: Bài thi viết hoặc bảo vệ đề án kiểm tra năng lực tổng hợp kiến thức từ đặc tả yêu cầu, thiết kế kiến trúc đến hoạch định kế hoạch SQA và kiểm thử hệ thống.
Hướng dẫn tự học (Self-study guidelines)
- Đọc kỹ phần tóm tắt chương trước khi đi vào các phần lý thuyết chi tiết.
- Tự trả lời toàn bộ câu hỏi ôn tập cuối chương mà không xem lại văn bản để củng cố khái niệm.
- Thực hiện đầy đủ các bài tập vẽ biểu đồ (DFD, ERD, HIPOC) ra giấy hoặc trên công cụ CASE trước khi đối chiếu với các quy tắc chuẩn mực nêu trong giáo trình.
- Đối chiếu các nguyên lý thiết kế trong giáo trình với các framework và công nghệ phần mềm thực tế đang triển khai trong công việc.
Điểm nổi bật và cập nhật
Mở rộng so với các giáo trình cơ sở
So với các giáo trình công nghệ phần mềm bậc đại học truyền thống, Giáo trình Công nghệ phần mềm nâng cao mở rộng đáng kể về biên độ học thuật và mức độ chi tiết kỹ thuật:
- Không giới hạn ở mô hình thác nước cổ điển mà phân tích sâu các mô hình hiện đại: mô hình hình thức hóa, mô hình dựa trên sử dụng lại (Reuse-based), mô hình phát triển nhanh RAD và kỹ thuật 4GT.
- Nâng cấp kỹ thuật thiết kế từ mức thuật toán/mô-đun đơn lẻ lên cấp độ thiết kế kiến trúc toàn cục, phân tích luồng chuyển đổi và luồng giao dịch.
- Chuyển trọng tâm từ lập trình đơn lẻ sang kỹ nghệ nhóm quy mô lớn, kỹ nghệ dựa trên thành phần và tích hợp dịch vụ doanh nghiệp.
Tích hợp các xu hướng công nghệ hiện đại
- Kỹ nghệ hướng thành phần (CBSE): Khảo sát toàn diện 4 pha phát triển hệ thống dựa trên thành phần (Xác định thành phần, Thích nghi thành phần, Lắp ráp thành phần, Tiến hóa hệ thống). Phân tích cấu trúc các mô hình thành phần công nghiệp: COM/DCOM của Microsoft (nền tảng cho IIS, ASP, MTS), Enterprise JavaBeans (EJB) của Sun Microsystems phục vụ ứng dụng nghiệp vụ mức doanh nghiệp, và mô hình CORBA Component Model (CCM) của OMG.
- Kiến trúc hướng dịch vụ (SOA): Trình bày chi tiết bản chất SOA theo định nghĩa của Gartner và Diễn đàn InfoWorld; phân tích 2 cơ chế truyền thông đại lý (Point-to-Point và Publish-Subscribe); các tiêu chuẩn dịch vụ web (WSDL, SOAP, UDDI, XML); và quy trình xây dựng hệ thống SOA từ thiết kế dịch vụ đến điều phối luồng công việc.
- Điện toán đám mây (Cloud Computing): Cập nhật định nghĩa chuẩn của IEEE, phân tích mô hình tích hợp các công nghệ ảo hóa, SOA và điện toán tự trị; phân tầng kiến trúc điện toán đám mây theo đề xuất của Sun Microsystems và Viện Công nghệ Thông tin (từ máy chủ thực, máy chủ ảo, hệ điều hành, lưu trữ dữ liệu đến tầng dịch vụ ứng dụng web như Google Apps, Salesforce, Flickr API).
+-----------------------------------------------------------------------------------------------+
| TẦNG DỊCH VỤ ỨNG DỤNG TRÊN WEB |
| (Google Apps, Salesforce.com, Flickr API, Google Maps API...) |
+-----------------------------------------------------------------------------------------------+
|
v
+-----------------------------------------------------------------------------------------------+
| TẦNG LƯU TRỮ DỮ LIỆU |
| (Cấu hình lưu trữ dữ liệu tập trung / phân tán tùy chỉnh) |
+-----------------------------------------------------------------------------------------------+
|
v
+-----------------------------------------------------------------------------------------------+
| TẦNG HỆ ĐIỀU HÀNH |
| (Thuê hệ điều hành cấu hình sẵn: Linux, Windows...) |
+-----------------------------------------------------------------------------------------------+
|
v
+-----------------------------------------------------------------------------------------------+
| TẦNG MÁY CHỦ ẢO HÓA |
| (Triển khai ảnh máy ảo, ngăn xếp phần mềm chuyên biệt) |
+-----------------------------------------------------------------------------------------------+
|
v
+-----------------------------------------------------------------------------------------------+
| TẦNG MÁY CHỦ THỰC TẾ |
| (Hạ tầng tính toán hiệu năng cao - HPC) |
+-----------------------------------------------------------------------------------------------+
Ứng dụng thực tế và Kết nối công nghiệp
Nội dung giáo trình phản ánh chặt chẽ các thực hành kỹ nghệ tại các tập đoàn công nghệ hàng đầu thế giới (như IBM, Microsoft, Oracle, Sun Microsystems, BEA, HP, SAP, Tibco); chuẩn hóa quản lý chất lượng theo chuẩn ISO/IEC 9126 và mô hình đánh giá CMM/CMMI của Viện Kỹ nghệ Phần mềm Mỹ (SEI).
Đối tượng sử dụng giáo trình
Đối tượng đào tạo chính quy
- Học viên cao học: Học viên theo học chương trình thạc sĩ các ngành Công nghệ thông tin, Kỹ thuật phần mềm, Hệ thống thông tin tại Trường Đại học Công nghệ thông tin và Truyền thông - Đại học Thái Nguyên và các cơ sở giáo dục đại học trên cả nước.
- Nghiên cứu sinh: Nghiên cứu sinh ngành Khoa học máy tính và Kỹ thuật phần mềm sử dụng làm tài liệu tham khảo cho các chuyên đề nghiên cứu về kiến trúc hệ thống, kiểm thử tự động, độ tin cậy và bảo đảm chất lượng phần mềm.
- Sinh viên đại học năm cuối: Sinh viên đại học ngành CNTT có học lực khá giỏi cần tài liệu tham khảo nâng cao để thực hiện đồ án tốt nghiệp hoặc chuẩn bị học tiếp lên bậc sau đại học.
Yêu cầu kiến thức tiên quyết (Prerequisites)
Để tiếp thu nội dung giáo trình, người học cần có kiến thức nền tảng vững chắc về:
- Nhập môn công nghệ phần mềm cơ sở (đã nắm các khái niệm cơ bản về vòng đời phần mềm).
- Cơ sở dữ liệu và Hệ quản trị cơ sở dữ liệu quan hệ (đã biết về mô hình thực thể quan hệ, đại số quan hệ và SQL).
- Lập trình cấu trúc và Lập trình hướng đối tượng (thành thạo một trong các ngôn ngữ: C++, Java, Object Pascal, C#).
- Kiến thức căn bản về Cấu trúc dữ liệu và giải thuật, Mạng máy tính và Hệ điều hành.
Giảng viên và Cán bộ nghiên cứu
- Giảng viên sử dụng giáo trình làm tài liệu giảng dạy chính cho học phần Công nghệ phần mềm nâng cao, làm căn cứ thiết kế đề cương chi tiết, đề tài bài tập lớn và hướng dẫn luận văn thạc sĩ.
- Các nhà nghiên cứu công nghệ thông tin sử dụng làm tài liệu tham chiếu về phương pháp luận kỹ nghệ hệ thống và các mô hình kiến trúc phân tán.
Kỹ sư và Chuyên viên ngành phần mềm
Tài liệu cung cấp khung lý thuyết quy chuẩn cho các Kiến trúc sư phần mềm (Software Architects), Kỹ sư phát triển phần mềm (Software Engineers), Chuyên viên bảo đảm chất lượng (QA/QC Engineers) và Quản lý dự án (Project Managers) trong việc chuẩn hóa quy trình sản xuất phần mềm tại doanh nghiệp.
Câu hỏi thường gặp
1. Giáo trình này phù hợp với đối tượng nào?
Giáo trình được biên soạn chuyên biệt cho học viên cao học, nghiên cứu sinh ngành Công nghệ thông tin, đồng thời là tài liệu tham khảo cho sinh viên năm cuối và các kỹ sư phần mềm muốn nắm vững lý thuyết kiến trúc và quản lý chất lượng phần mềm.
2. Cần chuẩn bị những kiến thức nền tảng nào trước khi học giáo trình này?
Người học cần hoàn thành các học phần cơ sở ở bậc đại học gồm: Nhập môn công nghệ phần mềm, Cơ sở dữ liệu quan hệ, Lập trình hướng đối tượng (Java, C++), Cấu trúc dữ liệu và Mạng máy tính căn bản.
3. Điểm khác biệt căn bản giữa giáo trình này và các giáo trình công nghệ phần mềm bậc đại học là gì?
Giáo trình tập trung sâu vào cấp độ kiến trúc hệ thống phân tán, kỹ nghệ dựa trên thành phần (CBSE), kiến trúc hướng dịch vụ (SOA), điện toán đám mây, các mô hình bảo đảm chất lượng theo chuẩn ISO/IEC 9126, quy trình phòng sạch (Cleanroom) và tiến trình tái kỹ nghệ hệ thống.
4. Làm sao để tự học giáo trình đạt hiệu quả cao nhất?
Người học cần kết hợp đọc lý thuyết với việc tự trả lời hệ thống câu hỏi kiểm tra cuối chương, thực hiện đầy đủ các bài tập phân tích tình huống thực tế (vẽ DFD, ERD, thiết kế ca kiểm thử) và đối chiếu các mô hình lý thuyết với các công nghệ thực tế (như EJB, CORBA, WSDL/SOAP).
5. Giáo trình sử dụng những tài liệu tham khảo và tiêu chuẩn quốc tế nào?
Giáo trình trích dẫn và đối chiếu trực tiếp với các tài liệu kinh điển của Roger S. Pressman, Ian Sommerville, David Parnas, James Martin; các tiêu chuẩn quốc tế của Viện Kỹ nghệ Điện và Điện tử (IEEE), Tổ chức Quốc tế về Chuẩn hóa (ISO/IEC 9126), Nhóm Quản lý Đối tượng (OMG), Viện Kỹ nghệ Phần mềm Mỹ (SEI - CMM/CMMI) và tài liệu kỹ thuật từ IBM, Sun Microsystems, Microsoft, Gartner.
Kết luận
Giáo trình Công nghệ phần mềm nâng cao của PGS. TS. Lê Văn Phùng và TS. Nguyễn Văn Tảo là một công trình học thuật có tính hệ thống cao, cung cấp khối lượng tri thức toàn diện về kỹ nghệ phần mềm từ cấp độ tiến trình, đặc tả thiết kế kiến trúc, đến quản lý chất lượng và các hướng công nghệ hiện đại.
Lộ trình học tập khuyến nghị cho người học là nghiên cứu tuần tự từ Chương 1 đến Chương 10: xây dựng vững chắc phương pháp luận tiến trình -> làm chủ kỹ thuật đặc tả yêu cầu và thiết kế kiến trúc -> tiếp cận các mô hình phân tán, CBSE và SOA -> thực hành kiểm soát chất lượng bằng SQA, kiểm thử và tái kỹ nghệ hệ thống.
Để hoàn thiện sâu hơn các chủ đề chuyên biệt, người học được khuyến nghị nghiên cứu mở rộng các tài liệu tham khảo quốc tế được trích dẫn trong giáo trình, bao gồm các công trình nghiên cứu của Roger S. Pressman, Ian Sommerville, các bộ tiêu chuẩn ISO/IEC 9126, IEEE và các đặc tả kỹ thuật về dịch vụ web từ W3C và OASIS.