Quản lý chất lượng phần mềm là vấn đề không mới nhưng theo một số đánh giá là còn yếu của các công ty phần mềm Việt Nam. Một số công ty trong nước hiện đã đạt các chuẩn quốc tế CMM/CMMI trong nâng cao năng lực và quản lý chất lượng phần mềm, song chỉ đếm được trên đầu ngón tay, và hiện cũng chỉ gói gọn trong vài công ty gia công cho thị trường nước ngoài. Làm thế nào để một công ty này đạt được chuẩn quốc tế về chất lượng phần mềm? Mỗi công ty đều có đặc thù riêng, tuy nhiên điều chung nhất là họ đều phải phát triển và duy trì một Hệ thống quản lý chất lượng phần mềm.
QUẢN LÝ CHẤT LƯỢNG PHẦN MỀM LÀ GÌ ?
Lâu nay, nói đến chất lượng phần mềm (PM), không ít người nghĩ ngay đến vấn đề là xác định xem PM đó có phát sinh lỗi hay không, có “chạy” đúng như yêu cầu hay không và cuối cùng thường quy về vai trò của hoạt động kiểm tra phần mềm (testing) như là hoạt động chịu trách nhiệm chính.
Với quan điểm của khách hàng, điều này có thể đúng, họ không cần quan tâm nội tình của hoạt động phát triển PM, điều họ cần quan tâm là liệu sản phẩm cuối cùng giao cho họ có đúng hạn hay không và làm việc đúng như họ muốn hay không.
Tuy nhiên theo quan điểm của người phát triển PM, thực tế cho thấy hoạt động kiểm tra PM là quan trọng, nhưng không đủ để đảm bảo sản phẩm sẽ được hoàn thành đúng hạn và đúng yêu cầu. Kiểm tra sau cùng để phát hiện lỗi là điều tất nhiên phải làm, nhưng trong rất nhiều trường hợp, điều đó thường quá trễ và sẽ phải mất rất nhiều thời gian để sửa chữa.
Thực tế cho thấy, để đảm bảo được hai tiêu chí “đơn giản” trên của khách hàng, đòi hỏi tổ chức không chỉ vận hành tốt khâu kiểm tra PM, mà phải tổ chức và duy trì sự hoạt động nhịp nhàng của cả một hệ thống các công việc liên quan đến một dự án PM, từ đây xuất hiện một khái niệm có tên là “hệ thống quản lý chất lượng phần mềm” (HTQLCLPM), bao gồm các quy trình được thực thi xuyên suốt chu kỳ phát triển của dự án PM.
Hiện có nhiều mô hình cung cấp các tiêu chuẩn cũng như hướng dẫn để triển khai HTQLCLPM. Hai trong số những mô hình được áp dụng rộng rãi hiện nay là ISO 9001-2000 và CMM/CMMi. Trong khi ISO 9001-2000 là tiêu chuẩn quản lý chất lượng dành cho tất cả các ngành nghề với những điều khoản ngắn gọn và mang tính tổng quát, thì CMM/CMMi là một bộ tập hợp khá đồ sộ các kinh nghiệm thực hành (gần 450 trang với CMM, và gần 700 trang với CMMi) có thể làm người đọc chưa có kinh nghiệm khó biết được các hoạt động và yếu tố đặc trưng cơ bản của HTQLCLPM là gì.
Qua một số tài liệu tham khảo, cũng như bằng kinh nghiệm bản thân khi nghiên cứu và ứng dụng ISO 9001-2000 và CMM/CMMi, chúng tôi sẽ trình bày các khái niệm, hoạt động cũng như yếu tố cơ bản cấu thành HTQLCLPM.
CĂN BẢN VỀ HTQLCLPM
Một HTQLCLPM thường có 2 mục tiêu (hình 1):
- Mục tiêu thứ nhất: xây dựng chất lượng cho PM ngay từ giai đoạn bắt đầu. Điều này đồng nghĩa với việc bảo đảm các yêu cầu cho PM từ mọi nguồn khác nhau phải được định nghĩa, diễn đạt và hiểu một cách đúng đắn, giữa người đưa ra yêu cầu và người thực hiện yêu cầu.
- Mục tiêu thứ hai: bảo đảm chất lượng của PM xuyên suốt quá trình phát triển.
Một HTQLCLPM hoàn chỉnh bao gồm rất nhiều hoạt động và bộ phận cấu thành, chúng khác nhau tùy theo từng tổ chức khi triển khai. Tuy nhiên, theo kinh nghiệm, chúng tôi chỉ giới thiệu 10 hoạt động và yếu tố cơ bản nhất thường gặp:
- Các tiêu chuẩn (Standards)
- Lập kế hoạch (Planning)
- Xem xét, xem lại (Reviewing)
- Kiểm tra (Testing)
- Phân tích lỗi (Defect analysis)
- Quản lý cấu hình (Configuration Management)
- Bảo mật (Security)
- Đào tạo, huấn luyện (Education/Training)
- Quản lý người cung cấp, thầu phụ (Vendor Management)
- Quản lý rủi ro (Risk Management)
(Để đơn giản, từ đây, “10 hoạt động và yếu tố” được gọi tắt là “10 yếu tố”)
Có mối liên hệ giữa 10 yếu tố cơ bản trên và các giai đoạn hay pha phát triển PM. Hình 2 cho thấy sơ đồ liên hệ trong mô hình phát trình waterfall. Ký hiệu “x” giao nhau giữa một yếu tố và một pha biểu thị yếu tố được thực hiện tại pha đó. Phần sau đây sẽ làm rõ ý nghĩa của 10 yếu tố cơ bản.
1. Các tiêu chuẩn
Sản xuất PM ngày nay không còn đơn thuần mang tính sáng tạo ngẫu hứng như trước đây, mà đang trở thành một lĩnh vực được kiểm soát chặt chẽ, theo những tiêu chuẩn nhất định. Các tiêu chuẩn có thể là các kinh nghiệm hoặc các phương pháp hiệu quả nhất, được đề xuất từ các hiệp hội nghề nghiệp như IEEE (The Institute of Electrical and Electronics Engineers, Inc – Học viện các kỹ sư điện và điện tử), từ các tổ chức quốc tế như ISO (International Organization for Standardization), hoặc các quy tắc chuẩn hóa để giao tiếp giữa sản phẩm với nhau… hoặc đơn giản do chính tổ chức phát triển PM đề ra để áp dụng cho chính họ.
Các tiêu chuẩn có thể bao gồm tất cả các khía cạnh của một chu kỳ phát triển PM, trải dài suốt mọi pha phát triển. Bất kể tiêu chuẩn xuất phát từ đâu, từ nội bộ công ty, hoặc từ ngoài, nó đều phải có một số đặc điểm sau:
- Tính cần thiết
- Tính khả thi
- Tính đo lường được
Các tiêu chuẩn nên được chọn và thể hiện sao cho khi sử dụng, các khía cạnh kỹ thuật cần thiết sẽ được nhấn mạnh, tránh trường hợp hiểu sai hoặc sa vào những tiểu tiết phụ trợ. Một ví dụ thường thấy là tiêu chuẩn định dạng cho tài liệu, mục đích của tiêu chuẩn là để bảo đảm khía cạnh chất lượng về kỹ thuật của tài liệu. Tuy nhiên, trong rất nhiều trường hợp tiêu chuẩn đã bị hiểu sai và sa đà vào việc kiểm tra các chi tiết về mặt hình thức. Lưu ý là để bảo đảm các tiêu chuẩn được nghiêm túc thực hiện, chúng phải mang tính bắt buộc và được quy định ở chính sách cấp công ty.
Một dạng phổ biến bắt buộc phải có của tiêu chuẩn là hệ thống các “quy trình”, kèm theo các bộ phận phụ thuộc như “thủ tục” “hướng dẫn” “mẫu biểu” “tiêu chuẩn” v.v. Tùy theo lĩnh vực hỗ trợ mà chúng có các tên tương ứng, chẳng hạn: quy trình sản xuất PM, quy trình kiểm soát chất lượng, quy trình kiểm tra…
2. Lập kế hoạch
Lập kế hoạch là yêu cầu kinh điển cũng như thao tác cơ bản của hầu hết các HTQLCLPM. Kết quả của hoạt động này thường là một (hoặc nhiều) tài liệu gọi là bản kế hoạch.
Theo quan điểm quản lý hiện đại, các công việc gắn liền với những mục tiêu, ngắn hạn hoặc dài hạn, đều có thể xem như là một dự án hoặc chuỗi các dự án. Kế hoạch cho dự án thường bao gồm những điểm chính sau:
- Ước lượng phạm vi và kích thước dự án, khối lượng công việc phải làm
- Xác định nhân lực, vật lực và chi phí
- Chỉ định phương pháp, cách tiếp cận để thực thi dự án
- Lập kế hoạch làm việc chi tiết
- Kế hoạch phối hợp và hỗ trợ hoàn thành dự án
Đây là kế hoạch liên quan đến sự tham gia của những người có ảnh hưởng quan trọng đến sự thành công hay thất bại của dự án (thuật ngữ chuyên môn gọi là stakeholders). Những người nầy thường bao gồm: trưởng dự án, quản lý cấp cao, khách hàng, ban giám đốc, thầu phụ, nhà cung cấp. Kế hoạch nầy phải bảo đảm cơ chế để các stakeholders có thể tham gia vào dự án ở các mức độ và thời điểm mang lại hiệu quả cao nhất.
- Kế hoạch quản lý cấu hình và quản lý các rủi ro (xem chi tiết phần sau)
- Các kế hoạch khác
- Tùy theo nhu cầu cho từng dự án, có thể có nhiều kế hoạch khác, cả về quản lý hoặc kỹ thuật, một số kế hoạch thường gặp chẳng hạn: Kế hoạch kiểm tra, kế hoạch tích hợp sản phẩm, kế hoạch huấn luyện…
- Tài liệu hóa và cập nhật (khi cần) các bản kế hoạch cho dự án
- Lưu ý là các tài liệu kế hoạch của dự án không phải bất di bất dịch, nó phải được cập nhật thậm chí thay đổi xuyên suốt dự án khi yêu cầu của dự án thay đổi.
3. Xem xét, xem lại
Mục đích là để cung cấp thông tin trực quan về tình trạng của các hoạt động xảy ra trong suốt quá trình sản xuất và cài đặt PM.
Xem xét trên sản phẩm – thường được gọi là xem xét kỹ thuật – bao gồm hai loại: chính thức hoặc không chính thức. Xem xét không chính thức thường được thực hiện trong quá trình phát triển sản phẩm, còn xem xét chính thức thường được thực hiện tại thời điểm kết thúc các chặng phát triển.
Điểm khác nhau chính về mặt kỹ thuật giữa xem xét chính thức và không chính thức là ở mức độ nghiêm ngặt của quy trình và các bước thực hiện. Chẳng hạn, xem xét chính thức buộc phải lên kế hoạch, ghi nhận tất cả các lỗi phát hiện và giám sát đến khi tất cả lỗi đã được sửa chữa, xem xét không chính thức thì không bắt buộc.
Trong thực tế, có khá nhiều định nghĩa và nhiều loại xem xét khác nhau. Về tổng quan, IEEE định nghĩa có ba loại:
- Review: Cuộc họp chính thức nhằm trình bày một vấn đề, một tài liệu, một sản phẩm… cho những người quan tâm, người sử dụng, khách hàng… nhằm thu thập ý kiến phản hồi hoặc đạt được sự thỏa thuận phê chuẩn trên vấn đề, tài liệu hoặc sản phẩm được trình bày.
- Walkthrough: Kỹ thuật đánh giá không chính thức, qua đó tác giả của một tài liệu, sản phẩm… giải thích tài liệu, sản phẩm đó cho một nhóm đồng nghiệp. Các đồng nghiệp này sẽ đặt câu hỏi hoặc cho ý kiến bổ sung về một số lĩnh vực để bảo đảm chất lượng kỹ thuật của tài liệu hoặc sản phẩm.
- Inspection: Kỹ thuật đánh giá chính thức, qua đó tài liệu, sản phẩm… được những người không phải là tác giả hoặc trực tiếp liên quan kiểm tra một cách chi tiết để phát hiện lỗi, các vi phạm tiêu chuẩn, hoặc các vấn đề khác (nếu có). Về cơ bản, nó được tổ chức và thực hiện chặt chẽ hơn walkthrough. Vai trò của những người tham gia được phân định rõ ràng. Tài liệu chuẩn bị cho việc xem xét được chuẩn bị trước chu đáo.
Một điểm cần hết sức lưu ý để bảo đảm việc xem xét mang lại hiệu quả là: mục tiêu chính của việc xem xét nhằm để tìm ra lỗi. Một trong những lý do chính khiến cho rất nhiều cuộc xem xét không mang lại hiệu quả như mong muốn là các cuộc xem xét đó bị “lún” vào việc thảo luận các giải pháp để sửa chữa lỗi. Sửa lỗi thường yêu cầu phải có sự phân tích kỹ lưỡng cũng như phải chấp nhận các phản biện trên các phương pháp sửa lỗi, công việc nầy hoàn toàn không phù hợp cho một buổi xem xét tìm lỗi. Một khi tìm thấy lỗi, nó nên được giao cho một/nhóm người phân tích và giải quyết, việc xem xét chỉ nên chú tâm vào việc chỉ ra các sai sót.
4. Kiểm tra lỗi
Kiểm tra lỗi (testing) là một hoạt động sống còn trong sản xuất PM. Kiểm tra lỗi nhằm mục đích chứng minh rằng các yêu cầu đối với PM là được thỏa mãn. Các hoạt động kiểm tra bao gồm các bước: lập kế hoạch, thiết kế test, thi hành test, và báo cáo kết quả kiểm tra. Chi tiết về kiểm tra PM chúng tôi đã trình bày trong TGVT A số tháng 12/2005 (ID: A0512_110).
Ở đây tôi muốn nhấn mạnh đến bước lập kế hoạch kiểm tra bắt đầu từ giai đoạn nhận và phát triển yêu cầu. Tương tứng với mỗi yêu cầu là một phương pháp kiểm tra thích hợp. Một yêu cầu không thể coi là hoàn chỉnh nếu như nó không thể kiểm tra được. Kế hoạch kiểm tra được thiết lập ngay từ chặng phát triển yêu cầu. Do yêu cầu thường thay đổi xuyên suốt dự án, kế hoạch kiểm tra do đó cũng phải thay đổi theo.
5. Phân tích lỗi
Trong thực tế, lỗi là phần “luôn hiện diện” trong mọi PM từ giai đoạn phát triển sơ khởi đến khi nó không còn được sử dụng.
Các tổ chức PM thường dùng thuật ngữ “chất lượng” để chỉ zero, hay một lượng nhỏ các lỗi trên sản phẩm PM, một số khác lại gắn liền khái niệm “chất lượng” với sự hài lòng của khách hàng. Trên quan điểm khách hàng, bất kể lúc nào, hễ PM “chạy” không tốt, không đáp ứng sự mong đợi đều được xem là có lỗi, bất kể do code sai, hoặc do hiểu nhầm yêu cầu, thậm chí là một chức năng “nên có” nhưng hiện thời chưa sẵn sàng.
Phân tích lỗi được thực hiện trên tất cả lỗi được tìm thấy, nhằm mục đích tìm hiểu nguyên nhân và xu hướng gây ra lỗi, định hướng cho việc sửa chữa các lỗi hiện hành cũng như phòng ngừa, triệt tiêu khả năng xảy ra lỗi trong tương lai. Phân tích lỗi là con đường chính yếu phục vụ cho việc giảm sự xuất hiện lỗi.
Phân tích lỗi không chỉ nhằm mục đích cải thiện tình trạng lỗi của phần mềm đang xây dựng, xa hơn nó cho ta thấy được những điểm yếu cần cải tiến của quy trình phát triển PM. Thông tin về lỗi của các dự án trong quá khứ sẽ cho ta thấy được nên cải tiến, thay đổi quy trình phát triển PM như thế nào để các dự án trong tương lai tránh đi vào “vết xe đổ” của các dự án trước.
Số liệu phục vụ cho việc phân tích lỗi có thể đến từ nhiều nguồn khác nhau. Mỗi tổ chức tuỳ theo nhu cầu và đặc điểm riêng, tự định nghĩa và thu thập các số liệu nầy.
Lỗi trong quá trình phân tích và sửa chữa có thể được phân loại để có hành động phù hợp, tuỳ theo các đặc tính khác nhau mà chúng thể hiện. Các đặc tính trong Bảng: “Các thuộc tính của lỗi.” thường được sử dụng trong nhiều hệ thống phân tích lỗi.
BẢNG CÁC THUỘC TÍNH CỦA LỖI | |
Phân loại | Mô tả |
Độ nghiêm trọng (Severity) | Ảnh hưởng của lỗi đối với PM đang được xây dựng, bao gồm các mức: • Critical: Rất nghiêm trọng, có thể làm cho PM “chết cứng” và không sử dụng được. • Major: Nghiêm trọng, buộc phải sửa chữa để có thể sử dụng được như yêu cầu đề ra. • Minor: Nhẹ, tuy không làm PM ngưng chạy, nhưng làm cho việc sử dụng PM khó khăn hoặc gây bất tiện cho người dùng • Cosmetic: Không ảnh hưởng đến chức năng hay hiệu năng của PM được quy định trong yêu cầu (như vấn đề thẩm mỹ hoặc thông báo sai chính tả). |
Độ ưu tiên (Priority) | Độ ưu tiên sửa lỗi khi so sánh với các lỗi khác, bao gồm các mức: • E = emergency; độ ưu tiên cao nhất, lỗi phải được sửa ngay, nếu không công việc sẽ không thể tiếp tục. • H = high, độ ưu tiên cao; công việc sẽ bị ngăn trở rất nhiều nếu như lỗi vẫn chưa được sửa. • M = medium, độ ưu tiên trung bình; công việc sẽ gặp vài khó khăn nếu như lỗi vẫn chưa được sửa. • L = low; độ ưu tiên thấp nhất; công việc không bị ảnh hưởng nhưng lỗi vẫn phải được sửa. |
Nguồn xuất phát lỗi (Source) | Thời điểm hoặc giai đoạn gây ra lỗi, ví dụ các chặng sau: • R = requirements • D = design • C = code |
Chặng phát hiện lỗi (Phase) | Thời điểm hoặc giai đoạn phát hiện lỗi, ví dụ các chặng sau: • R = requirements • D = design • C = code |
Loại lỗi (Type of defect) | Cho biết lỗi thuộc loại nào (nhằm thống kê và phân tích xu hướng của lỗi) |
Phương pháp tìm lỗi (Method) | Kỹ thuật dùng để tìm ra lỗi, ví dụ: • I = inspection – khảo sát lỗi • D = debugging or unit testing – dò lỗi hoặc kiểm tra mức đơn vị • T = testing – kiểm tra mức hệ thống |
Chú thích:
(*) CMMI: Capability Maturity Model Integration
(**) SEI: Software Engineering Institude.
Ngô Văn Toàn
Global CyberSoft Việt Nam
(theo PC World VN)
FPT Aptech – Hệ Thống Đào Tạo Lập Trình Viên Quốc Tế
FPT Aptech trực thuộc Tổ chức Giáo dục FPT có hơn 25 năm kinh nghiệm đào tạo lập trình viên quốc tế tại Việt Nam, và luôn là sự lựa chọn ưu tiên của các sinh viên và nhà tuyển dụng. |