CHƯƠNG I: KHAI PHÁ DỮ LIỆU 1.1 Tổng quan về kỹ thuật Khai phá dữ liệu (Data mining) 1.1 Khái niệm về khai phá dữ liệu Khai phá dữ liệu là một khái niệm ra đời vào những năm cuối của thập kỷ 80. Nó bao hàm một loạt các kỹ thuật nhằm phát hiện ra các thông tin có giá trị tiềm ẩn trong các tập dữ liệu lớn (các kho dữ liệu). Về bản chất, khai phá dữ liệu liên quan đến việc phân tích các dữ liệu và sử dụng các kỹ thuật để tìm ra các mẫu hình có tính chính quy trong tập dữ liệu. Năm 1989, Fayyad, Piatestsky-Shapiro và Smyth đã dùng khái niệm Phát hiện tri thức trong CSDL, đề chỉ toàn bộ quá trình phát hiện các tri thức có ích từ các tập dữ liệu lớn; trong đó khai phá dữ liệu là một bước đặc biệt trong toàn bộ quá trinh, sử dụng các giải thuật đặc biệt để chiết xuất ra các mẫu hay các mô hình từ dữ liệu.
Ở một mức độ trừu tượng nhất định có thể định nghĩa về khai phá dữ liệu: Data Mining là một quá trình tìm kiếm, phát hiện các tri thức mới, tiềm ẩn, hữu dụng trong CSDL lớn. Khám phá tri thức (KDD) là mục tiêu chính của khai phá dữ liệu, do vậy hai khái niệm đó được xem như hai lĩnh vực tương đương nhau. Nhưng, nếu phân chia một cách tách bạch thì khai phá dữ liệu là một bước chính trong quá trình KDD. Khai phá dữ liệu là một bước của quá trình khai thác tri thức (KnowledgeDiscovery Process), bao gồm: Xác định vấn đề và không gian dữ liệu để giải quyết vấn đề (Problemunderstanding and data understanding).
Chuẩn bị dữ liệu (Data preparation), bao gồm các quá trình làm sạch dữliệu (data cleaning), tích hợp dữ liệu (data integration), chọn dữ liệu (dataselection), biến đổi dữ liệu (data transformation). Khai thác dữ liệu (Data mining): xác định nhiệm vụ khai thác dữ liệu vàlựa chọn kỹ thuật khai thác dữ liệu. Kết quả cho ta một nguồn tri thức thô. 10 Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 Đánh giá (Evaluation): dựa trên một số tiêu chí tiến hành kiểm tra và lọcnguồn tri thức thu được.
Quá trình khai thác tri thức không chỉ là một quá trình tuần tự từ bước đầu tiên đến bước cuối cùng mà là một quá trình lặp và có quay trở lại các bước đã qua 1.2 Quy trình khai phá dữ liệu Một phần mềm chất lượng được đánh giá từ chất lượng quy trình đến chất lượng phần mềm nội bộ. Cụ thể chúng được đánh giá như sau: - Nghiên cứu lĩnh vực: Ta cần nghiên cứu lĩnh vực cần sử dụng Data mining để xác định đượcnhững tri thức ta cần chất lọc, từ đó định hướng để tránh tốn thời gian cho những tri thức không cần thiết. -Tạo tập tin dữ liệu đầu vào: Ta xây dựng tập tin để lưu trữ các dữ liệu đầu vào để máy tính có thể lưu trữvà xử lý. - Tiền xử lý, làm sạch, mã hóa: Ở bước này ta tiến hành bỏ bớt những dữ liệu rườm rà, không cần thiết, tinhchỉnh lại cấu trúc của dữ liệu và mã hóa chúng để tiện cho quá trình xử lý.
- Rút gọn chiều: Thông thường một tập dữ liệu có chiều khá lớn sẽ sinh ra một lượng dự liệu khổng lồ, ví dụ với n chiều ta sẽ có 2^n nguyên tổ hợp .Do đó , đây là một bước quan trọng giúp giảm đáng kể hao tổn hề tài nguyên trong quá trình xử lý tri thức.Thông thường ta sẽ dùng Rough set để giảm số chiều. - Chọn tác vụ khai phá dữ liệu - Khai phá dữ liệu tìm kiếm tri thức: au khi tiến hành các bước trên thì đây là bước chính của cả quá trình, ta sẽ tiến hành khai thác và tìm kiếm tri thức. - Đánh giá mẫu tìm được: Ta cần đánh giá lại trong các tri thức tìm được, ta sẽ sử dụng được những tri thức nào, những tri thức nào dư thừa, không cần biết. - Biểu diễn tri thức: Ta biểu diễn tri thức vừa thu nhập được dưới dạng ngôn ngữ tự nhiên và hình thức sao cho người dùng có thể hiểu được những tri thức đó.
- Sử dụng tri thức vừa khám phá Ta có thể tham khảo tiến trình KDD( Knowledge Discovery in Databases) để hiểu rõ hơn về khai phá dữ liệu: 11 Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 H椃 nh 1: Knowledge Discovery in Databases (KDD) Chuẩn bị dữ liệu (data preparation), bao gồm các quá trình làm sạch dữ liệu (data cleaning), tích hợp dữu liệu (data integration), chọn dữ liệu (data selection), biến đổi dữ liệu (data transformation). Khai thác dữu liệu (data mining): xác định nhiệm vụ khai thác dữ liệu và lựa chọn kỹ thuật khai thác dữu liệu. Kết quả cho ta một nguồn tri thức thô. Đánh giá (evaluation): dựa trên một tiêu chí tiến hành kiểm tra và lọc nguồn tri thức thu được.
Quá trình khai thác tri thức không chỉ là một quá trình tuần tự từ bước đầutiên đên bước cuối cùng mà là một quá trình lặp và có quay trở lại các bước đã qua.3 Ứng dụng của khai phá dữ liệu Lỗi phần mềm nhìn chung là sự không khớp giữa chương trình và đặc tả của nó, kéo theo những vấn đề xuất hiện trong các giai đoạn phát triển phần mềm. Lỗi phần mềm thường xuất hiện ở các hình thức sau đây: - Sai (Fault): Khi phần mềm gặp lỗi sẽ đưa đến những sai sót. Tuy nhiên, không dễ để phát hiện ra sai sót trong quá trình phát triển phần mềm.Sai lầm có thể xuất hiện ngay ở đầu quy trình phát triển phần mềm khi người phần thích, thiết kế bỏ sót thông tin dẫn tới thiếu chức năng mà lẽ ra cần phải có. - Thất bại (Failure): Thất bại dễ thấy nhất khi một lỗi được thực thi.
Chúng thường xuất hiện dưới 2 dạng: thất bại có thể chạy được (ví dụ như mã nguồn) và thất bại chỉ liên kết với các lỗi về nhiệm vụ. Ngoài ra, có thể kể đếnc ác thất bại 12 Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 liên quan tới các lỗi bỏ quên.Chúng ra có thể hạn chế thất bại ngay tại bước đầu tiên của quy trình phát triển phần mềm nếu việc khảo sát được thực hiện tốt. - Sự cố (Incident): Sự cố thường được liên kết với một thất bại. Tuy nhiên nó khác với thất bại ở chỗ sự cố luôn hiện thị cho ngươi dùng hoặc kiểm thử viên biết về sự tồn tại của nó.
-Thừa: Một số chức năng không có trong đặc tả yêu cầu phần mềm nhưng lại xuất hiện trong phần mềm được xây dựng. Ngoài ra, còn xuất hiện một số lỗi phi chức năng như phần mềm khó sử dụng, tốc độ không đáp ứng yêu cầu (Vấn đề hiệu năng) hay giao diện khó nhìn cũng khiến cho người sử dụng nghĩ rằng phần mềm đang hoạt động không đúng.2 Tìm hiểu về kiểm thử phần mềm 1.1 Khái niệm kiểm thử phần mềm Kiểm thử phần mềm (software testing) thực chất là một quy trình hơn là một hoạt động đơn lẻ. Software testing hoạt động nhằm tìm kiếm và phát hiện ra các lỗi của phần mềm, đảm bảo phần mềm chính xác, đúng và đầy đủ theo yêu cầu của khách hàng, yêu cầu của sản phẩm đã đặt ra. Quá trình này bắt đầu từ việc lập kế hoạch kiểm thử, sau đó là thiết kế các trường hợp kiểm thử, chuẩn bị cho việc thực thi và đánh giá kết quả thực thi cho đến khi kết thúc hoạt động kiểm thử.
Mục tiêu của kiểm thử: -Tìm ra lỗi của sản phẩm -Ngăn chặn được những rủi ro tiềm ẩn -Đánh giá và đảm bảo chất lượng sản phẩm deliver cho khách hàng -Giảm thiểu chi phí cho các giai đoạn sau Phân loại kiểm thử phần mềm Trong kiểm thử Test Type được chia thành 4 loại: - Testing of function (Functional testing) Kiểm thử chức năng là kiểm tra xem hệ thống có hoạt động theo đúng theo các yêu cầu nghiệp vụ không? Kiểm thử chức năng được thực hiện ở tất cả các mức kiểm thử. 13 Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 Kiểm thử chức năng có thể thực hiện theo 2 quan điểm: requirements-based và business - process - based Requirements - based: Sử dụng các đặc tả yêu cầu của hệ thống làm cơ sở để design test. Một cách tốt để bắt đầu là sử dụng bảng nội dung của đặc tả yêu cầu như một danh sách các mục kiểm thử và không kiểm thử. Chúng ta nên xét độ ưu tiên của yêu cầu dựa trên các tiêu chí rủi ro và sử dụng độ ưu tiên để kiểm thử.
Điều này sẽ đảm bảo những phần quan trọng nhất sẽ được kiểm thử. Business - process - based: sử dụng các kiến thức về quy trình nghiệp vụ. Quy trình nghiệp vụ mô tả các kịch bản liên quan đến nghiệp vụ hằng ngày của hệ thống. -Testing of software product characteristics (Non-Functional testing) Kiểm thử phi chức năng là các đặc tính chất lượng của hệ thống sẽ được kiểm tra.
Kiểm thử phi chức năng quan tâm đến việc mọi thứ hoạt động tốt không? Hay nhanh như thế nào? Kiểm thử phi chức năng sẽ kiểm tra những thứ cần phải đo như thời gian phản hồi, hay bao nhiêu người có thể đăng nhập cùng một lúc? Kiểm thử phi chức năng cũng giống như kiểm thử chức năng được thực hiện ở tất cả các cấp độ kiểm thử. Các đặc điểm và các đặc điểm phụ tương ứng: Chức năng (Functionality) gồm 5 đặc điểm phụ: sự phù hợp, chính xác, bảo mật, khả năng tương tác và tuân thủ. Độ tin cậy (Reliability) gồm 4 đặc điểm phụ: độ bền, khả năng chịu lỗi, khả năng phục hồi và tuân thủ. Khả năng sử dụng (Usability) gồm 5 đặc điểm phụ: dễ hiểu, khả năng học hỏi, khả năng hoạt động, sự thu hút và tính tuân thủ.
Tính hiệu quả (Efficiency) gồm 3 đặc điểm phụ: thời gia (hiệu suất), sử dụng tài nguyên và tuân thủ. Khả năng bảo trì (Maintainability) gồm 5 đặc điểm phụ: khả năng phân tích, khả năng thay đổi, tính ổn định, khả năng kiểm tra và tuân thủ. Tính tương thích (Portability) gồm 5 đặc điểm phụ: khả năng thích ứng, khả năng cài đặt, cùng tồn tại, khả thăng thay thế và tuân thủ. 14 Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 -Testing of software structure/architecture (Structural testing) Kiểm thử cấu trúc thường được gọi là "hộp trắng" hoặc "hộp thủy tinh" vì chúng quan tâm đến những gì đang xảy ra bên trong hộp.
Kiểm thử cấu trúc thường được sử dụng như một cách đo lường của kiểm thử thông qua độ bao phủ của một tập hợp các yếu tố cấu trúc hoặc các mục bao phủ. Nó có thể xảy ra ở bất kỳ mức độ kiểm thử nào chủ yếu ở kiểm thử thành phần, tích hợp.