TẦM QUAN TRỌNG CỦA CÔNG TÁC ĐẢM BẢO CHẤT LƯỢNG PHẦN MỀM (P1)

03/11/2015 20:17
Theo dõi ICTVietnam trên

Bài viết này nêu lên một vài con số điển hình về lỗi phần mềm và thiệt hại do lỗi phần mềm gây ra, tổng quan về SQA, kinh nghiệm SQA ở một số nước và cuối cùng là thực trạng của lĩnh vực SQA ở Việt Nam.

Ngày nay, phần mềm xuất hiện trong hầu hết vật dụng điện tử trong đời sống, đã đóng góp tích cực vào việc nâng cao hiệu quả, chất lượng công việc, cải thiện cuộc sống tinh thần của con người nhưng đồng thời chúng ta đang phụ thuộc nhiều hơn vào phần mềm. Do đó, vai trò của việc đảm bảo chất lượng phần mềm (SQA) ngày càng trở nên quan trọng. Bài viết này nêu lên một vài con số điển hình về lỗi phần mềm và thiệt hại do lỗi phần mềm gây ra, tổng quan về SQA, kinh nghiệm SQA ở một số nước và cuối cùng là thực trạng của lĩnh vực SQA ở Việt Nam.

THIỆT HẠI DO LỖI PHẦN MỀM: NHỮNG CON SỐ BIẾT NÓI

Theo một nghiên cứu của Viện Quốc gia về Chuẩn và Công nghệ Hoa Kỳ, từ năm 2002 [1,2], các lỗi phần mềm gây thiệt hại cho nền kinh tế Mỹ khoảng 60 tỷ USD mỗi năm và người dùng cuối (end-users) phải gánh chịu hơn một nửa chi phí đó. Số tiền này bằng gần một nửa GDP của Việt Nam năm 2012. Website hàng đầu dành cho các nhà phát triển CodeGuru [1] ước tính thiệt hại do lỗi phần mềm gây ra cho nền kinh tế Mỹ trong 1 giây là 1.888 USD, hay trong vòng 4 năm thì tương đương với thiệt hại do thảm họa kép động đất và sóng thần năm 2011 ở Nhật Bản (235 tỷ USD). Có thể thấy rằng, lỗi phần mềm tuy xuất hiện âm thầm và lặng lẽ nhưng sức tàn phá của nó đến nền kinh tế cũng chẳng kém bất cứ một thảm hoạ thiên tai nào.

MỘT SỐ VÍ DỤ ĐIỂN HÌNH VỀ LỖI PHẦN MỀM

Trong lĩnh vực hàng không vũ trụ, một lĩnh vực phải bảo đảm chất lượng phần mềm cực kỳ ngặt nghèo nhưng vẫn có những sự cố nghiêm trọng. Ngày 14/9/1993, lỗi đặc tả của hệ thống phần mềm điều khiển phanh khẩn cấp đã gây ra vụ tai nạn máy bay Airbus 320 ở sân bay Warsaw của Ba Lan làm 2 người chết, 51 người bị trọng thương. Trong chiến tranh vùng Vịnh năm 1991, lỗi phần mềm của hệ thống tên lửa đánh chặn của Mỹ (chuyển đổi và xấp xỉ số floating sang số fixpoint để tính toán thời gian và khoảng cách giữa các mục tiêu) làm cho hệ thống đánh chặn của Mỹ đã không chặn được một tên lửa của Iraq, làm 28 lính Mỹ bị thiệt mạng. Năm 1996, lỗi phần mềm của tên lửa đẩy trong dự án tàu vũ trụ Ariane 5 của châu Âu khiến nổ tàu vũ trụ, gây thiệt hại tới 500 triệu USD... [3,4].

Trong lĩnh vực ngân hàng và chứng khoán, theo báo cáo của IDG về 10 lỗi phần mềm nghiêm trọng nhất năm 2011 có tới 4 lỗi liên quan đến lĩnh vực tài chính, ngân hàng và chứng khoán. Ví dụ, một lỗi phần mềm quản trị tài sản khách hàng đã khiến một tổ chức quốc tế về đầu tư tài chính bị Uỷ Ban Chứng Khoán Hoa Kỳ phạt 25 triệu USD và phải trả lại số tiền bồi hoàn 217 triệu USD cho các nhà đầu tư thua lỗ. Cũng trong năm 2011, một lỗi của hệ thống phần mềm ở ngân hàng lớn nhất Nhật Bản, Mitsubishi Tokyo Bank, đã khiến một hệ thống gồm 5.600 máy ATM trong toàn nước Nhật ngừng hoạt động trong vòng 24 tiếng, dịch vụ Internet banking bị ngưng trệ trong 3 ngày. Năm 2009, ở Việt Nam, lỗi phần mềm của hệ thống Casino Game của khách sạn Hilton Sài Gòn đã hiển thị người chơi thắng 55,5 triệu USD, dẫn đến một vụ kiện tranh chấp kinh tế giữa người chơi và chủ khách sạn.

Trong lĩnh vực y tế cũng đã từng xảy ra nhiều lỗi gây hậu quả chết người. Năm 1986, ở bang Texas (Mỹ) chỉ trong vòng chưa tới 1 giây, một người bệnh bị chiếu xạ (Thereac-25 Radiation) 16.500 - 20.000 rads vào khoảng 1cm ở cánh tay làm hỏng mất cánh tay và bệnh nhân chết sau đó 5 tháng. Năm 1987, một người bệnh ở Washington, cũng bị chết do bị chiếu xạ một cách quá mức như vậy. Nhiều lỗi phần mềm của các thiết bị y tế khác cũng dẫn đến việc bác sỹ nhận được những thông số sai về bệnh nhân và chỉ định đưa ra cách điều trị không phù hợp, gây ảnh hưởng đến mạng sống và sức khoẻ của bệnh nhân [5]

Trong lĩnh vực công nghiệp ô tô, năm 2010, hai hãng sản xuất ô tô lớn hàng đầu thế giới là Toyota và BMW đã phải triệu hồi hàng triệu chiếc xe do lỗi phần mềm của hệ thống chống bó cứng phanh ABS. Đây là lỗi phần mềm nghiêm trọng nhất trong năm 2010. Năm 2012, một hãng ô tô đã phải triệu hồi 50.500 chiếc ở Mỹ và Canada do có lỗi phần mềm liên quan tới túi khí khiến cho túi khí không thể bung ra thậm chí khi có xảy ra đụng độ hoặc tai nạn. Cũng trong năm 2012, một hãng ô tô của Nhật cũng buộc phải triệu hồi 2,5 triệu chiếc quy mô trên toàn thế giới vì những lỗi phần mềm.

Lỗi phần mềm là gì?

Một sản phẩm phần mềm không chỉ đơn giản là các đoạn mã chương trình mà còn rất nhiều phần ẩn đằng sau nó. Vì vậy, việc mắc lỗi không chỉ xảy ra trong khi lập trình mà còn xảy ra cao hơn trong các công đoạn khác của qui trình phát triển một sản phẩm phần mềm. Do đó, việc kiểm thử phải được tiến hành trong tất cả các phần tạo nên một sản phẩm phần mềm.

Có rất nhiều định nghĩa khác nhau về lỗi phần mềm, nhưng có thể phát biểu một cách tổng quát như sau: Lỗi phần mềm là sự không khớp giữa chương trình và đặc tả của nó. Dựa vào định nghĩa, có thể thấy lỗi phần mềm xuất hiện theo 3 dạng chính sau:

-Sai: sản phẩm được xây dựng khác với đặc tả.

-Thiếu: một yêu cầu đã được đặc tả nhưng lại không có trong sản phẩm được xây dựng.

-Thừa: một yêu cầu được đưa vào sản phẩm mà không có trong đặc tả. Cũng có trường hợp yêu cầu này có thể là một thuộc tính sẽ được người dùng chấp nhận nhưng khác với đặc tả nên cần coi là lỗi.

Một hình thức khác nữa cũng được xem là lỗi, đó là phần mềm khó hiểu, khó sử dụng, chậm hoặc dễ gây cảm nhận rằng phần mềm hoạt động không đúng.

Tại sao lỗi phần mềm xuất hiện?

Trong thực tế, lỗi xuất hiện nhiều nhất không phải do lập trình. Nhiều nghiên cứu đã chỉ ra, số lỗi do đặc tả gây ra là nhiều nhất, chiếm khoảng 70%. Nguyên nhân chủ yếu là, trong nhiều trường hợp, đặc tả không được viết ra. Các nguyên nhân khác có thể do đặc tả không được làm cẩn thận, hay thay đổi, hoặc do chưa phối hợp tốt trong toàn nhóm phát triển. Sự thay đổi yêu cầu của khách hàng cũng là nguyên nhân dễ gây ra lỗi phần mềm. Khách hàng thay đổi yêu cầu không cần quan tâm đến những tác động sau khi thay đổi yêu cầu như phải thiết kế lại, lập lại kế hoạch, làm lại những việc đã hoàn thành. Nếu có nhiều sự thay đổi, rất khó nhận biết hết được phần nào của dự án phụ thuộc và phần nào không phụ thuộc vào sự thay đổi. Nếu không quản lý được vết thay đổi thì rất dễ phát sinh ra lỗi. Nguồn gây ra lỗi lớn thứ hai là thiết kế. Tiếp theo là lỗi do lập trình. Thời kì đầu, việc phát triển phần mềm chủ yếu là lập trình nên gây ra nhiều lỗi. Ngày nay, lập trình chỉ là một phần của quá trình phát triển phần mềm. Nhờ sự hỗ trợ của nhiều công cụ lập trình cao cấp, việc lập trình trở nên nhẹ nhàng hơn, mặc dù độ phức tạp phần mềm lớn hơn rất nhiều. Do đó, lỗi do lập trình gây ra cũng ít hơn. Tuy nhiên, nguyên nhân để lập trình tạo ra lỗi lại nhiều hơn. Đó là do độ phức tạp của phần mềm, do tài liệu nghèo nàn, do sức ép thời gian hoặc chỉ đơn giản là những lỗi "không nói lên được". Một điều cũng hiển nhiên là nhiều lỗi xuất hiện trong giai đoạn lập trình nhưng thực ra lại do lỗi của đặc tả hoặc thiết kế. Một nguyên nhân khác tạo ra lỗi là do bản thân các công cụ phát triển phần mềm cũng có lỗi như công cụ trực quan, thư viện lớp, bộ biên dịch,...

Chi phí cho việc sửa lỗi

Bảo trì là phần chi phí chính của phần mềm và kiểm thử là hoạt động chi phí lớn thứ hai, ước tính khoảng 40% chi phí trong quá trình phát triển ban đầu của sản phẩm phần mềm. Kiểm thử cũng là phần chi phí chính của giai đoạn bảo trì do phải tiến hành kiểm thử lại những thay đổi trong quá trình sửa lỗi và đáp ứng yêu cầu người dùng. Kiểm thử và sửa lỗi có thể được thực hiện tại bất kỳ giai đoạn nào của vòng đời phần mềm. Tuy nhiên, chi phí cho việc tìm và sửa lỗi tăng một cách đáng kể trong quá trình phát triển.

Chất lượng phần mềm

Chất lượng phần mềm là một khái niệm đa chiều, không dễ định nghĩa đơn giản theo cách chung cho các sản phẩm là: "Sản phẩm được phát triển phù hợp với đặc tả của nó.".

Nguyễn Văn Tăng, Nguyễn Hữu Quốc, Lê Nhật

(còn nữa)

(TCTTTT Kỳ 2/10/2014)

Nổi bật Tạp chí Thông tin & Truyền thông
  • Ra mắt Liên minh nhân lực chiến lược thực thi Nghị quyết 57-NQ/TW ‏
    Ông Trương Gia Bình, Chủ tịch FPT khẳng định, nếu không đào tạo được nhân lực AI, chúng ta sẽ đứng ngoài cuộc chơi công nghệ. Còn nếu dẫn đầu trong đào tạo AI, Việt Nam sẽ vươn lên trở thành lực lượng lao động toàn cầu trong lĩnh vực này.
  • Google bị đe dọa nghiêm trọng khi Apple ra mắt công cụ tìm kiếm AI trên Safari
    Kế hoạch bổ sung tùy chọn tìm kiếm hỗ trợ AI vào trình duyệt Safari của Apple là đòn giáng mạnh vào Google, công ty kinh doanh quảng cáo sinh lợi phụ thuộc đáng kể vào khách hàng iPhone sử dụng công cụ tìm kiếm của mình.
  • Các giải pháp kỹ thuật phần mềm xanh
    Khi các hệ thống máy tính trở nên phổ biến, nhu cầu về các tài nguyên máy tính đòi hỏi năng lượng điện để chạy ngày càng tăng và góp phần đáng kể vào lượng khí thải carbon. Những lượng khí thải này liên quan đến việc sử dụng, phát triển và triển khai phần mềm trên các hệ thống máy tính. Kỹ thuật phần mềm xanh là con đường phía trước để hạn chế lượng khí thải nhà kính không kiểm soát được của ngành công nghệ.
  • Cách tìm hiểu nhà cung cấp AI có rủi ro bảo mật hay không
    Nếu nhà cung cấp AI thiếu các biện pháp kiểm soát bảo mật cơ bản sẽ gây ra rủi ro.
  • Tima kỳ vọng sẽ bứt phá thị trường P2P sau Nghị định 94
    Sau 10 năm hoạt động, Tima đã kết nối 17 triệu hồ sơ, phục vụ 10 triệu người vay và 70.000 nhà đầu tư trên toàn hệ thống, trở thành nền tảng P2P Lending có quy mô và độ phủ lớn tại Việt Nam.
Đừng bỏ lỡ
TẦM QUAN TRỌNG CỦA CÔNG TÁC ĐẢM BẢO CHẤT LƯỢNG PHẦN MỀM (P1)
POWERED BY ONECMS - A PRODUCT OF NEKO