• Thứ Năm, 18/05/2006 15:51 (GMT+7)

    Quản lý chất lượng phần mềm

    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.

     

    Hình 1: Các mối quan hệ.

    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:

    1. Các tiêu chuẩn (Standards)

    2. Lập kế hoạch (Planning)

    3. Xem xét, xem lại (Reviewing)

    4. Kiểm tra (Testing)

    5. Phân tích lỗi (Defect analysis)

    6. Quản lý cấu hình (Configuration Management)

    7. Bảo mật (Security)

    8. Đào tạo, huấn luyện (Education/Training)

    9. Quản lý người cung cấp, thầu phụ (Vendor Management)

    10. 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 (xem bài "Tổng quan các mô hình phát triển phần mềm", ID: A0508_106 và A0510_122). 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.

      Hình 2: Mối liên hệ giữa 10 yếu tố cơ bản và các pha phát triển.     Các pha phát triển  
      Xác định nhu cầu     Định nghĩa giải pháp     Phát triển phần mềm     Chứng minh giải pháp     Áp dụng giải pháp     Sử dụng giải pháp     Cải tiến giải pháp  
      Hoạt động   Các tiêu chuẩn     x     x     x     x     x     x     x  
        Xem xét, xem lại     x     x     x     x                    
        Kiểm tra, thử nghiệm                       x     x     x     x  
        Phân tích lỗi     x     x     x     x     x     x     x  
        Quản lý cấu hình           x     x     x     x     x     x  
        Bảo mật                 x           x     x        
        Đào tạo, huấn luyện     x     x     x     x     x     x     x  
        Quản lý thầu phụ           x     x     x     x     x     x  
        Lập kế hoạch     x     x     x     x     x     x     x  
        Quản lý rủi ro     x     x     x     x     x           x  

    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
     

    6. Quản lý cấu hình

    Mục đích của quản lý cấu hình (QLCH) là để thiết lập và bảo đảm tính toàn vẹn của các sản phẩm trung gian cũng như các sản phẩm sau cùng của một dự án PM, xuyên suốt chu kỳ sống của dự án đó.

    QLCH bao gồm nhiều hoạt động, tuy nhiên về cơ bản chúng bao gồm bốn hoạt động chính: nhận dạng (identification), kiểm soát (control), kiểm kê báo cáo (accounting) và kiểm tra đánh giá (audit). Tùy theo độ lớn và độ phức tạp của dự án, phạm vi và mức độ áp dụng của các hoạt động QLCH sẽ khác nhau. Với những hệ thống lớn và phức tạp, mỗi hoạt động QLCH phải do những người được giao trách nhiệm (role) cụ thể phụ trách. Tùy yêu cầu, một số hoạt động QLCH được làm không chính thức (informal) hoặc chính thức (formal), nhằm quản lý tốt quá trình phát triển của phần mềm, đặc biệt là quản lý sự thay đổi trong dự án.
    Tham khảo bài "Quản Lý Cấu Hình..." (ID: A0506_122) để biết thêm chi tiết.

    7. Bảo mật

    Bảo mật luôn là vấn đề gây nhức nhối vì thường không được nhận thấy cho đến khi hệ thống bị chọc thủng. Bảo mật có ba khía cạnh chính, bảo mật nội dung dữ liệu, bảo mật dữ liệu đang được truyền (trên đường truyền) và bảo mật về mặt vật lý của vật chứa dữ liệu. Các hoạt động bảo mật được áp dụng cho cả nội dung dữ liệu lẫn bản thân vật lý của vật chứa dữ liệu.

    Các yếu tố hay nguyên nhân tác động đến dữ liệu hoặc trung tâm dữ liệu của hệ thống PM rất đa dạng. Đó có thể là tự nhiên hoặc cố ý, chẳng hạn thiên tai, cháy, virus, hacker, phá hoại của chính nhân viên công ty, ăn cắp dữ liệu, thậm chí ngày nay còn do các hoạt động khủng bố gây ra. Trong một số tổ chức, việc bảo mật dữ liệu lưu trữ và dữ liệu chuyển dịch được xem là vấn đề sống còn.

    Một lý do gây hỏng dữ liệu rất thường gặp là dữ liệu bị thay đổi một cách vô tình không kiểm soát được. Một khi dữ liệu đã không đúng, điều tất yếu là hệ thống phần mềm sử dụng dữ liệu đó sẽ cho ra những kết quả sai. Đối với người dùng, đó là một hệ thống không tốt, thậm chí là không dùng được.

    Một hệ thống PM "tốt" phải chú ý tới tất cả những yếu tố có thể ảnh hưởng đến dữ liệu hoặc hoạt động của hệ thống. Một hệ thống "tốt" còn phải tính đến khả năng phục hồi dữ liệu, phục hồi hoạt động của hệ thống khi xảy ra sự cố.

    8. Đào tạo/huấn luyện

        Bảng: Một số tài liệu cơ bản thông dụng.  
        Kích thước dự án     Tài liệu thường có  
        Nhỏ     Đặc tả yêu cầu
    Tài liệu thiết kế
    Kết quả kiểm tra phần mềm
    Các kế hoạch của dự án
     
        Ttrung bình     Tài liệu như dự án nhỏ, cộng thêm
    Thiết kế cấp cao
    Thiết kế chi tiết
    Các trường hợp kiểm tra (test cases)
     
        Lớn     Tài liệu như dự án trung bình, cộng thêm
    Kế hoạch kiểm tra
    Các yêu cầu và thiết kế giao tiếp
     
        Các tài liệu khác (không phụ thuộc kích thước dự án)     Yêu cầu và thiết kế cơ sở dữ liệu
    Hướng dẫn thao tác và sử dụng phần mềm
    Kế hoạch bảo trì
    Kế hoạch huấn luyện
    Kế hoạch kiểm soát rủi ro
    Kế hoạch an toàn
     

    Nói đơn giản, huấn luyện nhằm trang bị cho những người phát triển cũng như sử dụng PM có đủ kiến thức và kỹ năng để thực hiện công việc của họ.

    Tất cả mọi biện pháp quản lý, kỹ thuật sản xuất, công cụ hỗ trợ trong sản xuất PM đều trở nên vô hiệu hoặc có hiệu quả hết sức hạn chế nếu những người tham gia phát triển và sử dụng PM không đủ kiến thức, kỹ năng cần thiết. Liên quan đến lý do nầy, các tiêu chuẩn quản lý chất lượng như ISO, CMM/CMMi đều xác lập khả năng, kiến thức và kỹ năng của những người phát triển PM là một trong những yêu cầu cốt yếu để bảo đảm các tiêu chí và mục tiêu về chất lượng.

    Một khía cạnh khác thường được cho là ít quan trọng nhưng thực ra lại mang tính quyết định, đó là khả năng hiểu để sử dụng PM của người sử dụng. Người sử dụng thường chỉ có ý tưởng về yêu cầu đối với PM và không biết sử dụng hoặc sử dụng không đúng cách làm PM "chạy" sai hoặc không hết chức năng. Do vậy huấn luyện cho người sử dụng cũng là một khâu hết sức cơ bản. Nhưng thực tế những người phát triển PM lại không có thời gian và kỹ năng thực hiện tốt việc huấn luyện, việc nầy thường phải do một bộ phận chuyên trách trong công ty thực hiện.

    9. Quản lý người cung cấp

    Trong các tổ chức PM, mua hay thuê sản phẩm hoặc dịch vụ từ một người cung cấp thứ ba là rất phổ biến. Việc "mua" có thể bao gồm những mặt hàng đơn giản như máy tính, máy in, cho đến những dịch vụ thuê gia công PM. Chất lượng của sản phẩm và dịch vụ "mua" này nếu quản lý không tốt sẽ ảnh hưởng quan trọng đến sản phẩm hoặc dịch vụ của tổ chức cung cấp cho khách hàng của mình.

    Đối tượng sản phẩm hoặc dịch vụ cần mua hay thuê rất đa dạng, tùy mỗi loại và độ phức tạp, các tổ chức sẽ có những biện pháp và mức độ quản lý chất lượng tương ứng.  

    Hình 3: Mô hình tổ chức truyền thống.


    10. Quản lý rủi ro

    Rủi ro (risk) là một yếu tố tồn tại trong mọi dự án. Quan niệm về quản trị dự án cho rằng "người quản trị dự án giỏi là người không ngạc nhiên về các sự kiện xảy ra trong dự án", điều nầy có nghĩa là mọi rủi ro tiềm ẩn phải được "nhìn thấy" trước, đi đôi với kế hoạch giải quyết.

    Rủi ro là một sự kiện chưa nhưng có khả năng xảy ra, và khi nó xảy ra thường sẽ đặt một dự án vào tình huống xấu, hoặc thậm chí là một "tai nạn" cản trở khả năng hoàn thành các mục tiêu của một dự án. Có nhiều loại cũng như cách xếp các loại rủi ro khác nhau, tuy nhiên nhìn chung có các loại sau:

    • Về kỹ thuật: Chủ yếu xoay quanh việc có hiểu đúng và đủ các yêu cầu đặt ra cho dự án hay không, cũng như có giải pháp đúng để giải quyết chúng hay không. Việc hiểu sai yêu cầu cũng như đưa ra giải pháp sai là nguyên nhân hàng đầu làm dự án thất bại.

    • Về quản lý: Xoay quanh các vấn liên quan về mặt quản lý. Chúng cũng rất đa dạng, gồm các loại rủi ro sau: kế hoạch, tài chính, con người, thay đổi yêu cầu...

    • Về thao tác-vận hành: Liên quan đến việc vận hành hệ thống, bao gồm:

    - Huấn luyện cho người sử dụng không đầy đủ

    - Sử dụng sai chức năng của sản phẩm, kể cả cố ý hoặc vô tình

    - Bảo trì sản phẩm không đầy đủ

    • Về môi trường: Bao gồm cả môi trường phát triển, kiểm tra lẫn sử dụng sản phẩm. Những rủi ro từ bên ngoài, sự không tương thích, virus v.v.

    • Về kiểm tra: Không đủ thời gian hoặc kiểm tra không đúng, không quét hết yêu cầu.

    Quy trình cơ bản quản lý rủi ro gồm 4 bước:

    • Nhận biết các rủi ro

    • Khảo sát mức tác động nếu chúng xảy ra

    • Xác định các giải pháp đối phó

    • Giám sát các rủi ro và thực thi các giải pháp đối phó

    Có rất nhiều giải pháp khác nhau để đối phó hay giảm thiểu tác động của rủi ro. Trong thực tế, các giải pháp thường gồm các loại:

    • Loại bỏ: Khi chi phí loại bỏ rủi ro thấp, hoặc rủi ro nếu xảy ra sẽ gây ảnh hưởng cực kỳ nghiêm trọng.

    • Phòng tránh

    • Giảm thiểu thiệt hại: Khi không thể phòng tránh hay loại bỏ rủi ro, ta có thể thực thi các biện pháp để giảm thiểu khả năng xảy ra hoặc giảm thiểu chi phí khắc phục rủi ro nếu nó xảy ra.

    • Chấp nhận: Đành chấp nhận "sống chung với rủi ro" trong trường hợp chi phí loại bỏ, phòng tránh, làm nhẹ rủi ro là quá lớn, hoặc mức độ tác hại của rủi ro nếu xảy ra là không đáng kể, hoặc khả năng xảy ra của nó là cực thấp.

    Trong thực tế, quản lý rủi ro là một quá trình phức tạp, tuy nhiên đó không phải là mục tiêu của bài viết này.

    MỘT SỐ YẾU TỐ QUAN TRỌNG KHÁC

    Bên cạnh 10 yếu tố chính như đã trình bày trên, còn có một số yếu tố quan trọng khác ảnh hưởng đến chất lượng PM.

    1. Bảo trì phần mềm

    Bảo trì PM nhìn chung có thể xem như là phần mở rộng hoặc lặp lại của một chu trình phát triển PM.

    Bảo trì PM bao gồm hai hoạt động chính: sửa chữa các lỗi đã không được phát hiện trong giai đoạn phát triển và kiểm tra; nâng cấp PM theo yêu cầu phát sinh hoặc yêu cầu đã được hiểu không đúng trong gia đoạn phát triển.

    Mỗi hoạt động bảo trì đều được thực hiện tương tự như một hoạt động trong giai đoạn phát triển, yêu cầu để dẫn đến hành động bảo trì chính là yêu cầu thay đổi.

    Một điều cơ bản nhưng lại hay mắc phải trong giai đoạn này là việc phớt lờ hay áp dụng lỏng lẻo các quy tắc QLCH và điều tất yếu là nguy cơ sai sót sẽ rất lớn, nhất là trong các trường hợp thay đổi xảy ra nhiều hay liên tục.

    2. Tài liệu

    Nhiều tổ chức PM do chưa hiểu đúng thường hay e ngại áp dụng ISO hay CMM/CMMI sẽ dẫn đến việc phát sinh quá nhiều tài liệu. Điều thiết yếu là phải hiểu rõ ý nghĩa và mục đích của tài liệu.

    Mục đích của tài liệu là để ghi nhận những yêu cầu của PM, những yêu cầu đó đã và đang được thực hiện như thế nào và làm thế nào để sử dụng, bảo trì/nâng cấp PM - tựu chung là giúp cho bản thân dự án và những người liên quan biết rõ tình trạng công việc đã, đang và sẽ làm.

    3. Tổ chức bộ máy

    Dù bao nhiêu phương pháp quản lý chất lượng được thiết lập đi nữa, vấn đề nhân sự và tổ chức bộ máy làm việc hợp lý trong nhiều trường hợp lại là yếu tố quyết định tính hiệu quả của hệ thống.

    Thực tế có rất nhiều mô hình tổ chức, hình 3 và 4 cho thấy 2 trong số các mô hình thông dụng, mỗi mô hình đều có ưu nhược điểm riêng, tùy đặc thù từng tổ chức, có thể sử dụng mô hình thích hợp.

    Mô hình tổ chức như hình 3 cho ta có cảm giác tiết kiệm chi phí, trưởng dự án sẽ chịu trách nhiệm tất cả, không có chi phí riêng biệt cho nhân viên chỉ lo vấn đề chất lượng. Tuy nhiên, thực tế lại cho thấy, việc trưởng dự án xoay vần để lo hết mảng này đến mảng khác lại phát sinh chi phí đôi lúc còn cao hơn. Mặt khác, thường thì trưởng dự án dành phần lớn thời gian cho mảng phát triển sản phẩm, các mảng khác bị lơ là kể cả việc kiểm soát chất lượng.

    Ở mô hình tổ chức như hình 4, bộ phận phụ trách chất lượng là độc lập và có kênh báo cáo hoàn toàn độc lập với dự án, khi cần thiết, báo cáo có thể lên thẳng đến cấp quản lý cao nhất. Thành công của mô hình nầy phụ thuộc nhiều vào mối liên kết hợp tác hỗ trợ giữa bộ phận chất lượng và bộ phận phát triển sản phẩm. Những công ty có độ trưởng thành cao, mối quan hệ giữa 2 bộ phận nầy rất khăng khít.

    Mặc dù có rất nhiều mô hình, tuy nhiên chúng vẫn tuân thủ một nguyên tắc chung: Nếu nhân viên hoặc nhóm phụ trách chất lượng ở vị trí thấp hơn nhóm đang bị giám sát (sản xuất/phát triển), hệ thống chất lượng đó sẽ không mạnh và có vấn đề.

    Tuy nhiên, một mô hình tổ chức tốt cùng các quy tắc chất lượng cũng chưa đủ, điều quan trọng là, trong một hệ thống quản lý chất lượng mạnh, mỗi thành viên trong hệ thống phải thực hiện thật tốt vai trò của mình.

    Hình 4: Mô hình tổ chức cải tiến

    4. Thiết kế và vận hành hệ thống quản lý chất lượng

    Thiết kế và vận hành một hệ thống quản lý chất lượng (HTQLCL) trước hết phải gắn liền với việc định nghĩa rõ rệt chức năng và quyền hạn của tất cả những người tham gia, các hoạt động và trách nhiệm cụ thể cho từng vị trí một. Kế tiếp là lập kế hoạch, thiết kế và áp dụng các quy tắc và quy trình của HTQLCL.

    4 nguyên tắc và yếu tố chính để bảo đảm sự thành công của một HTQLCL:

    1. Văn hóa chất lượng "Hãy làm mọi thứ đúng ngay từ đầu"

    2. Định nghĩa rõ ràng trách nhiệm và quyền hạn của những người tham gia

    3. Mô tả rõ ràng các bộ phận của HTQLCL

    4. Các tiêu chuẩn và quy trình cho HTQLCL

    Những người trực tiếp sử dụng các quy trình của HTQLCL phải tham gia càng sớm càng tốt và tham gia xuyên suốt. Việc tham gia của họ là yếu tố quan trọng để quy trình làm ra có khả năng được chấp nhận và giá trị sử dụng cao, giảm thiểu những yếu tố không thực tế và không khả thi của quy trình.

    Một yếu tố không thể thiếu nữa là sự kiểm soát và hỗ trợ đầy đủ, kịp thời của quản lý cấp cao đối với tiến độ phát triển và áp dụng HTQLCL. Sự giám sát, đôn đốc và giải quyết khó khăn của quản lý cấp cao giúp giải quyết các ách tắc, nâng cao trách nhiệm của thuộc cấp, và thúc đẩy tiến độ thấm nhuần văn hóa chất lượng trong toàn bộ tổ chức.

    KẾT LUẬN

    Một HTQLCLPM không chỉ có quy trình, kiểm tra hoặc ra lệnh, nó là sự kết hợp gắn bó của nhiều yếu tố. Mục tiêu sau cùng của HTQLCLPM là, dựa vào kết quả của các yếu tố cấu thành, cung cấp thông tin làm đầu vào cho những quyết định đúng đắn về quản lý, mang lợi ích về khi áp dụng các quy trình phát triển PM.

    Chú thích:
    (*) CMMI: Capability Maturity Model Integration
    (**) SEI: Software Engineering Institude.

    Ngô Văn Toàn
    Global CyberSoft Việt Nam

    ID: A0605_115