MỤC LỤC
Theo quy mô của hệ thống, lượng source code và các mối quan hệ giữa các thành phần source code cũng ngày một tăng nhanh, cả về số lượng và độ phức tạp, gây ra rất nhiều khó khăn cho người bảo trì trong việc đọc hiểu và xác định đoạn code cần được tập trung bảo trì. Tuy nhiên, ngay trong những IDE phát triển phần mềm mạnh nhất như Eclipse, việc hỗ trợ tìm kiếm cũng không mạnh mẽ khi chỉ đơn thuần tìm kiếm text riêng lẻ, thông thường theo tên các method, class, …mà không hỗ trợ tìm kiếm kết hợp giữa các thành phần này.
Một số khác thì cho rằng đây là một lớp không thích hợp, OWL và các luật nên là các ngôn ngữ ở mức trên cùng của ngôn ngữ Ontology và các ứng dụng có thể truy cập tới lớp này trực tiếp. Ví dụ: ứng dụng có thể chứng minh một số tuyên bố bằng cách sử dụng lập luận suy diễn, và một tuyên bố có thể được tin tưởng nếu nó đã được chứng minh và được xác thực bởi một số các bên thứ 3 đã được tin tưởng.
Công việc xác định các lớp không chỉ đơn giản là tiến hành tìm hiểu về ngữ nghĩa của các thuật ngữ đã có để có được các mô tả cho thuật ngữ đó, mà còn phải định vị cho các lớp mới, loại bỏ ra khỏi ontology nếu nằm ngoài phạm vi của ontology hay hợp nhất với các lớp đã có nếu có nhiều thuật ngữ có ngữ nghĩa như nhau (đồng nghĩa, hay đa ngôn ngữ). Ví dụ: Trong Ontology về quản lý nhân sự, ta bắt đầu với lớp Người, sau đó chuyên biệt hóa lớp Người đó bằng cách tạo ra các lớp con của lớp Người như : Kỹ sư, Công nhân, Bác sỹ,… Lớp Kỹ sư cũng có thể chuyên biệt hóa bằng cách tạo ra các lớp con như Kỹ sư CNTT, Kỹ sư điện, Kỹ sư cơ khí, ….
Các loại tài liệu là: tài liệu liên quan tới sản phẩm liên quan, tài liệu mô tả các lại chính hệ thống đó (ví dụ, các đặc tả yêu cầu phần mềm, các đặc tả thiết kế phần mềm, và các đặc tả sản phẩm phần mềm); các quá trình liên quan, các tài liệu được sử dụng để tiến hành phát triển và bảo trì phần mềm (ví dụ, kế hoạch phát triển phần mềm, kế hoạch đảm bảo chất lượng, kế hoạch test và các kế hoạch quản lí cấu hình); và các tài liệu liên quan tới hỗ trợ khác như trợ giúp thực thi hệ thống (ví dụ, tài liệu hướng dẫn người sử dụng, hướng dẫn thao tác, hướng dẫn bảo trì). Các mối quan hệ khác trong ontology con này đó là: hệ thống phần mềm SYSTEM được cài đặt trên một HARDWARE, nó có thể tương tác với các SYSTEMS khác và với người sử dụng USER, nó cài đặt một vài miền tác vụ TASK để có thể tự động thực hiện và các đặc tả yêu cầu SOFTWARE REQUIREMENT SPECIFICATIONS phần mềm sẽ mô tả các tác vụ này.
Trong hướng thứ nhất, metadata cùng với tài nguyên tương ứng được submit lên server thông qua một web service, trở thành kho tri thức chung, là nguồn dữ liệu cho các hoạt động bảo trì và tái sử dụng phần mềm. Hệ thống trợ giúp bảo trì phần mềm này là một phần của dự án hợp tác giữa bộ môn Công Nghệ Phần Mềm với công ty Mitani năm 2009, hệ thống đó có tên là “Ứng dụng Semantic Web trong tái sử dụng và bảo trì phần mềm”. Do khối lượng công việc trong dự án Mitani2009 khá lớn nên trong đồ án này em mới thực hiện được phần bên phía client bao gồm các chức năng chính của hệ thống còn các chức năng liên quan tới Web Service sẽ được phát triển sau này.
Tuy nhiên với ontology SEC trên em mới chỉ thu được các khái niệm trừu tượng và khái quát nhất cho việc một ontology Source Code mà chưa thể đáp ứng được đầy đủ miền lĩnh vực mà ontology Source Code cần phải bao trùm, như là thiếu các concept về biến, về các dự án, về các tài nguyên, về kiểu dữ liệu, về các tầng trong kiến trúc phần mềm… cũng như thiếu các thuộc tính như thông tin về các độ đo metric, thông tin về các tầng layer. Chúng ta sẽ sử dụng các ontology cho cái gì: Ontology Document được sử dụng để đưa ra các thông tin tham chiếu, tham khảo cho các test, method, class, requirement…Nghĩa là Document Ontology lưu trữ các thông tin về các tài liệu liên quan tới source code và khi người dùng muốn tìm kiếm thông tin về thành phần source code nào thì sẽ có tài liệu thông tin về thành phần đó được đưa ra. Ví dụ như đối với fragment medium người ta chia nhỏ text format ra thành nhiều loại như có định dạng pdf, doc, rtf, wpd.., thay vào đó ta có thể tạo một thuộc tính extension cho một document, thuộc tính này sẽ giúp định nghĩa định dạng của tài liệu đó.
Điều đó có nghĩa là khi ta gặp được một lời định nghĩa một hàm MethodDeclaration là con của con của một lời định nghĩa lớp TypeDeclaration trên cây AST trong source code thì ta sẽ mapping mối quan hệ cha-con đó thành mối quan hệ Class – hasMethod – Method trong ontology. Lý do đơn giản là vì khi code bị lỗi hệ thống sẽ không thể tạo ra được mối quan hệ tham chiếu lẫn nhau giữa các thành phần source code, do đó sẽ không thể mapping với ontology để tạo relation được. Đối với các tài liệu có liên quan tới source code như tài liệu hướng dẫn sử dụng API của phần mềm thì nội dung tài liệu thường liên kết với source code thông qua tên của các thành phần source code.
Mục đích và phạm vi của hệ thống
Người test hệ thống: là người thực hiện việc kiểm tra các test của hệ thống, kiểm tra xem có những test nào đã được thực hiện, các class nào đã được test, kết quả test như thế nào. Người phân tích và thiết kế hệ thống: người này có thể sử dụng chức năng kiểm tra kiến trúc hệ thống xem hệ thống có được cài đặt đúng như đã thiết kế hay không. Người phân tích yêu cầu hệ thống: là người thực hiện việc kiểm tra các yêu cầu về hệ thống đã được test hay chưa, các yêu cầu nào của hệ thống đã được thực hiện, những yêu cầu nào chưa được cài đặt hay kết quả cài đặt như thế nào.
Hệ thống này còn trợ giúp cho chúng ta đưa ra các metric về source code của hệ thống để người test có thể phân tích ra nên tập trung test vào phần nào. Tạo Test: cho phép người dùng định nghĩa một Test và các thông tin ngữ nghĩa liên quan tới Test đó như Test đó là test của method nào, test đó được cài đặt trong class hay method nào. Phân tích kiến trúc hệ thống: xây dựng mô hình gọi lẫn nhau giữa các tầng của ứng dụng, từ đó giúp người dùng đưa ra nhận xét là kiến trúc hệ thống có được cài đặt theo như thiết kế ban đầu hay không.
Tìm kiếm tài liệu: use case này nhằm mục đích giúp đỡ cho người dùng tìm kiếm ngữ nghĩa các tài liệu liên quan tới source code. Phân tích quan hệ giữa các thành phần code: cho phép người dũng xem xét mối quan hệ phụ thuộc giữa các thành phần code với nhau. • Thứ hai, dữ liệu được tạo ra bởi chính người sử dụng, có nhiều kiểu dữ liệu, liên kết phải do chính người sử dụng định nghĩa ra bởi có nhiều kiểu liên kết mà hệ thống không thể tự động tạo ra được từ các dữ liệu Source code và Document.
Tầng điều khiển
Người dùng có thể tìm kiếm các phần tài liệu liên quan tới một thành phần source code, tìm kiếm tài liệu liên quan tới một yêu cầu phần mềm,… Việc tìm kiếm này thay thế cho giải pháp tìm kiếm theo từ khóa thông thường. 2 Hệ thống Đưa ra Package Explorer là cây chứa các package và class đang có trong hệ thống 3 Người dùng Chọn packge hay class để hiển thị metric 4 Hệ thống - Sinh ra truy vấn SPARQL với đầu vào là. 13 LinkComponentToDocument Action được thực hiện khi người sử dụng muốn tạo liên kết giữa source code và tài liệu liên quan 14 LinkComponentToTest Action được thực hiện khi người sử dụng muốn.
Câu truy vấn ở đây không những chỉ đưa ra các đoạn tài liệu do người dùng trực tiếp định nghĩa link tới method mà còn đưa ra các tài liệu gợi ý (không chắc chắn 100% chính xác) dựa trên nội dung của tài liệu đó. Việc tạo Layer được thực hiện trên giao diện sau, đây là một giao diện tùy biến phụ thuộc vào project được phân tích, nghĩa là khi project thay đổi thì dữ liệu trong cây phân cấp package sau cũng thay đổi. Ví dụ ở đây khi Method thay đổi hệ thống đưa ra các thành phần tài liệu liên quan đến Method và Class liên quan tới Method đó để cảnh báo cho người dùng sửa đổi document cho phự hợp.
Kết quả thu được là file .owl là kết hợp của các file .owl con, các instance giống nhau sẽ chỉ được khai báo một lần trong file .owl cuối cùng. Việc phân nhỏ project ra để phân tích sẽ giúp cho ontology trong quá trình phân tích không quá lớn, từ đó giảm thời gian phân tích một file .java và do đó giảm thời gian phân tích toàn bộ source code của hệ thống. Trước tiên ta phải bắt được sự kiện source code của hệ thống bị thay đổi, nhờ sự kiện này ta sẽ biết được file code nào bị thay đổi.
Xóa toàn bộ file source code đó: hệ thống sẽ phải xác định id của instance tương ứng với file class đó. Các relation đó là các relation nhận instance đó làm subject hoặc nhận instance đó làm object. • Bước 1: Xóa tất cả các quan hệ được tạo ra trong quá trình phân tích file source trước đó.