CHƯƠNG 1 TỎNG QUAN 1.1 Giới thiệu Ngày nay, cùng với sự phát triển không ngừng của khoa học kĩ thuật hiện đại thì phần mềm máy tính (gọi tắt là phần mém) trở thành một phần không thé thiếu trong cuộc sống hăng ngày của mỗi con người cũng như chỉ phối tất cả các hoạt động sản xuất khác. Phương tiện giao thông, máy móc, ngân hàng, siêu thị. tất cả đều cần đến sự hỗ trợ cũng như điều khiến của phần mềm. Vì thế mà việc sản xuất ra những phần mềm có chat lượng tốt với chi phí thấp và tốn ít thời gian đang được xem là van dé được quan tâm nhất hiện nay.
Nhu chúng ta đã biết, dé sản xuất được một phan mém thì phải trải qua một qui trình phức tạp bao gồm rất nhiều giai đoạn (phases/iterations) và cần sự tham gia của rất nhiều người. Ở mỗi một giai đoạn đều yêu câu phải có các chuyên gia, là những người có nhiều kinh nghiệm cùng làm việc với nhau để đưa ra các ý tưởng sáng tạo, các ứng dụng khoa học kĩ thuật để tạo nên một sản phẩm thành công. Trong khi đó khoa học kĩ thuật hiện đại lại luôn luôn phát triển không ngừng, chính vì thế mà tri thức và kinh nghiệm đạt được trong hoạt động sản xuất mềm được xem như là một tài sản hết sức quí giá cho một tổ chức nói riêng cũng như cho ngành công nghệ phan mềm nói chung. Tuy nhiên tri thức sau khi được tạo ra bởi con người và lưu trữ đưới một hình thức nào đó cần được tô chức lại, qua một quá trình xử lí và phân loại theo một mục đích nhất định dé con người có thể dễ dàng tiếp cận và sử dụng chúng một cách có hiệu quả.
Cũng vi lí do đó mà nhu cầu quản lí các tri thức trở thành một hoạt động không thể thiếu trong hoạt động sản xuất phần mêm. Việc xây dựng một cơ sở tri thức được xem là bước đầu trong nhu cầu quan If tri thức trong hoạt động sản xuất phần mềm. Co sở tri thức chính là nơi tập hop tat các tri thức thu được từ kinh nghiệm trong các quá trình phát triển dự án nhằm hỗ trợ cho các nhân viên trong tô chức. Từ các dữ liệu thu thập được qua rất nhiều các quá trình phát triển dự án, qua một quá trình lựa chọn, phân loại, xử lí, phân tích trở thành một tập hợp các tri thức có thé chia sé và sử dụng một cách có hữu ích nhăm hỗ trợ phát triển hiệu quả các dự án về sau.
Trong giới hạn của luận văn này chúng tôi chỉ quan tâm đên một yêu tô duy nhât có ảnh hưởng rât lớn đền chât lượng của một hoạt động phân mêm và cũng là một yêu tô tham gia Xuyên sudt trong một quá trình sản xuât phan mém, đó là lôiphần mém (software defect) mà từ đây chúng tôi xin gọi tắt là lỗi. Lỗi phần mềm là tất cả các lỗi xảy ra trong một chương trình hay hệ thống máy tính dẫn đến những kết quả không như mong muốn hoặc làm cho phần mềm chạy sai hoàn toàn, thậm chí ngưng hoạt động. Bất kì một đội phát triển dự án phần mềm đều mong muốn xây dựng được một phần mêm với số lượng các lỗi càng nhỏ càng tốt. Các rủi ro trong một chương trình phần mềm được phát hiện càng sớm thì chất lượng của phần mềm càng được cải thiện dang kế.
Hon thế nữa, việc xác định và sửa chữa các lỗi là công việc hết sức ton thời gian và chi phí. Tuy việc loại bỏ tat cả các lỗi ra khỏi một dự án phần mềm là không thể nhưng chúng ta có thể làm giảm mức độ trầm trọng và sự thiệt hại mà chúng gây ra cho dự án của chúng ta. Hiện nay, có rất nhiều công trình nghiên cứu về dự báo lỗi trong các sản phẩm phan mềm, phan lớn dựa vào phân tích các lỗi đã từng xảy ra trong một số lượng lớn các dự án, từ đó dự đoán được các lỗi còn tổn tại trong một hệ thống phan mềm. Các nghiên cứu này không nằm ngoài mục đích hỗ cho các lập trình viên và các nhà quản lí điều khiến được qui trình phát triển phần mềm, liệu họ có nên dành thêm thời gian để tiếp tục tìm kiếm và sửa lỗi hay có thé đưa sản phẩm của mình bước sang giai đoạn phát triển tiếp theo.
Nhìn chung thì ngày nay các nghiên cứu chủ yếu phân tích lỗi theo 2 hướng đó là phân loại (classification) và dự báo (prediction) nhằm xây dựng nên các mô hình (model) m6 tả được các lỗi trọng yếu thường xảy ra và dự đoán được xu hướng các lỗi có khả năng sẽ xảy ra trong tương lai [3] [4] [6]. Tất cả các phân tích đó giúp cho lập trình viên có thé phát hiện ra các lỗi có khả năng xảy ra và giúp cho người quản lí dự án có thé đánh giá và năm bắt được chất lượng của dự án, từ đó phân công nguồn lực để kiểm tra, phát hiện và sửa chữa lỗi một cách phù hợp. Bên cạnh đó còn có một sô công trình nghiên cứu về việc dự đoán các lôi dựa trên môi quan hệ của chung sử dụng một sô kĩ thuật phân tích dữ liệu (data mining) [5] và từ đó cũng dự đoán được thời gian và công sức tương ứng cân phải bỏ ra dé sửa những lôi đó. Nói tóm lại là đề trả lời cho những câu hỏi sau: —_ Với những lôi đang xảy ra trong một dự án phân mêm thi có những lỗi nào khác có khả năng lớn cũng đang diện ra hoặc sé xuât hiện — Để sửa các lỗi đã xảy ra thì sẽ tốn bao nhiêu thời gian và nỗ lực tương ứng 1.2 Mục tiêu Xây dựng một cơ sở tri thức vừa đủ về các lỗi phát sinh trong quá trình sản xuất phần mềm, bao gồm các thông tin về dạng lỗi, nguyên nhân dẫn đến lỗi, tỉ lệ phân bố lỗi theo chức năng hay tần suất xuất hiện.
Thông qua việc phân tích thông tin lỗi và nguyên nhân của chúng, đề xuât ra các giải pháp gợi ý hô trợ người dùng giải quyết các lôi đó. Tiếp theo đó sẽ xây dựng một cơ chế dé người dùng có thé truy cập vào cơ sở tri thức đó, có thé là một công cụ chi dừng lai ở một bản dùng thử (demo) dé người dùng có thé sử dụng thử và nhận xét đánh gia.3 Đối tượng nghiên cứu Phạm vi nghiên cứu chỉ giới hạn trong công ty phát triển phần mềm KMS Việt Nam '. Hiện nay công ty đang sử dụng một số công cụ để lưu lại các lỗi xảy ra trong một dự án như Issuetracker (JIRA *) BugZilla 3 Qtrace *. Các công cu này hiện tại là một nơi chứa thông tin về các lỗi kèm theo cơ chế để người sử dụng có thể tạo mới, sửa chữa và truy xuất thông tin.
Ngoài ra mỗi công cụ còn có các tính năng riêng biệt như gửi thư thông báo, hỗ trợ người dùng tìm kiếm thống tin hiệu quả, có thể xuất ra các thông tin thống kê và các lược đồ hỗ trợ các nhà quản lí biết được tình hình sức khỏe của dự án. Tuy nhiên các công cụ này chi dừng ở bước lưu trữ thông tin và thong kê thông tin nhằm hỗ trợ các thành viên trong cùng một dự án theo dõi các lỗi xảy ra cho dự án nhất định. Vì thế mà trong luận văn nay chúng tôi muốn xây dựng nên một cơ sở tri thức mang tính chất tong quát hơn, các lỗi thu thập được từ cdc dự án phan mềm sau một quá trình phân tích, đánh giá sẽ hình thành nên một cơ sở tri thức có thể chia sẻ và hỗ trợ cho tất cả các dự án hiện tại cũng như trong tương lai. ‘http://kms-technology.com *http://www.com/software/jira/overview/bug-tracking *http://www.org/ “http://www.com/gtrace-overview.4 Phương pháp nghiên cứu Khảo sát hiện trạng chất lượng của các dự án phần mềm thông qua việc thu tập dữ liệu về lỗi xảy ra trong tất cả các giai đoạn phát triển của một số dự án trong một số công ty phát trién phân mềm.
Phân tích và phân loại lỗi dựa trên phương pháp ODC (Orthogonal Defect Classification) của IBM [7]. Lý do lựa chọn sử dụng phương pháp nay là vì nó thé hiện được mối quan hệ nguyên nhân và hệ quả khi phân loại lỗi trong qui trình phát triển phần mềm, từ đó ta có thé dé ra các phương án dé có thé sửa chữa, giảm thiểu và thậm chí là có thé phòng tránh được các lỗi có thể xảy ra trong quá trình phát triển phan mềm. Cho đến nay có rất nhiều phương pháp và nghiên cứu về phân loại lỗi nhưng phần lớn đều không thể hiện được môi quan hệ nguyên nhân và hệ quả như phương pháp ODC. Dựa trên các kết qua phân tích từ phương pháp ODC, phân tích nguyên nhân của các lỗi băng d6 thị xương cá [4] cùng các hệ quả của nó (cause-effect relationship).
Cũng từ đó, đề xuât các phương án đê xuat xử lí với các lôi tương ứng. Dựa trên các thông tin có được về lỗi sau bước phân tích và đánh giá trên, xây dựng nên một cơ sở tri thức về lỗi sử dụng một công cụ chính của web ngữ nghĩa đó là ontology. Luận văn xây dựng nên một ontology về các lỗi trong quá trình phát triển phan mém bao gom cac thanh phan có quan hệ với nhau về mặt ngữ nghĩa, sau đó dùng một cơ sở dữ liệu với các mối quan hệ để hiện thực ontology va đồng thời cũng là một kho lưu trữ dữ liệu của cơ sở tri thức. Tiếp theo đó là việc hiện thực một ứng dụng web lién kết với co sở dữ liệu thong qua ngôn ngữ truy van dữ liệu SQL, nham hỗ trợ một cơ chế duyệt và tìm kiếm để người sử dụng có thể truy cập cơ sở tri thức đó.
Có thé thử nghiệm áp dụng sự hỗ trợ của cơ sở tri thức trong phạm vi cua | dự án nhỏ trong công ty KMS, sau đó đánh giá về kha năng hỗ trợ của nó trong việc giảm số lượng lỗi hay giảm thời gian và công sức để giải quyết các lỗi trong dự án như thế nào.5 Các công trình nghiên cứu liên quan Trong tài liệu tham khảo số [4] ,một nghiên cứu của Sakthi Kumaresh và R Baskaran với tựa dé là “Defect Analysis and Prevention for Software Process Quality Improvement”, tác giả đã tập trung vào phân tích tat cả các lỗi thu thập được từ 5 dự án phần mềm dựa trên cấp bậc phân loại đầu tiên của phương pháp ODC, dựa vào đó đi tìm nguyên nhân chính gây ra lỗi, từ đó dé ra các ý tưởng để phòng tránh để lỗi sẽ không xảy ra trong các dự án tiếp theo.