Indus là một nỗ lực để cung cấp một tập hợp các chương trình phân tích và chuyển đổi thực hiện trong Java để tùy chỉnh và thích ứng với các chương trình Java. Indus là nhằm phục vụ như là một chiếc ô cho:
* Tĩnh phân tích như các điểm đến phân tích, thoát phân tích và phân tích sự phụ thuộc,
* Biến đổi như chương trình cắt và chuyên môn hóa chương trình thông qua đánh giá một phần, và
* Bất kỳ mô-đun phần mềm cung cấp các phân tích / biến đổi thành một ứng dụng cụ thể như Bandera hay nền tảng như Eclipse.
Hiện nay, có 3 mô-đun đó là một phần của Indus. Các module được dự kiến sẽ được thêm vào trong quá trình thời gian. Chúng tôi cung cấp một cái nhìn tổng quan về ý định của mỗi mô-đun có sẵn hiện nay.
Indus là một mô-đun mà nhà thực hiện liên quan đến các thuật toán và cấu trúc dữ liệu phổ biến để phân tích và biến đổi mà là một phần của kế hoạch hoặc đang là một phần của Indus. Module này chứa định nghĩa giao diện chung cho hầu hết các phân tích và biến đổi để cung cấp một khuôn khổ trong đó triển khai khác nhau của phân tích / chuyển đổi có thể được kết hợp để tạo thành hệ thống một cách dễ dàng. Do đó, mô-đun này được cập nhật khi một loại phân tích mới / chuyển đổi được thực hiện như là một mô-đun trong Indus. Tuy nhiên, một thực hiện mới của một phân tích / chuyển đổi sẽ không ảnh hưởng đến mô-đun này vì nó sẽ thực hiện một giao diện hiện.
StaticAnalyses mô-đun có thể dùng để thu tĩnh phân tích như phân tích đối tượng dòng chảy, thoát phân tích và phân tích sự phụ thuộc. Các phân tích trong mô-đun này sử dụng giao diện phổ biến và triển khai thực hiện từ Indus và có thể xác định / cung cấp giao diện mới / triển khai cụ thể để phân tích mới. Phân tích hiện đang được đề cập dưới đây.
* Phân tích đối tượng dòng chảy (OFA) là một điểm đến phân tích cho Java. Mỗi trang web phân bổ trong các hệ thống phân tích được coi là một đối tượng trừu tượng và dòng chảy của nó thông qua hệ thống được theo dõi để suy ra các loại có thể có một máy thu tại một cuộc gọi-site để cho phép việc xây dựng một chính xác gọi đồ thị. Độ chính xác của việc phân tích có thể được thay đổi về lưu lượng-nhạy cảm đối với phương pháp biến địa phương và đối tượng nhạy cảm đối với các lĩnh vực dụ.
* Thoát Phân tích là một thực hiện mở rộng của phân tích trốn thoát bằng cách Ruf đề xuất với mục đích can thiệp cắt tỉa và cạnh phụ thuộc sẵn sàng. Các phần mở rộng là trong các dạng bổ sung liền mạch có giá trị tương đương với việc phân tích để cải thiện việc phát hiện những lĩnh vực trái ngược nhau đọc / viết xảy ra trong chủ đề khác nhau hơn là chỉ sử dụng loại bình đẳng về bầu cử sơ bộ của các biểu thức truy cập. Các phân tích cũng sử dụng thông tin đối tượng dòng chảy trực giao để tiếp tục cải thiện độ chính xác.
* Phân tích sự phụ thuộc là một bộ sưu tập các phụ thuộc phân tích: Kiểm soát nhập cảnh dựa, kiểm soát lối ra dựa trên dữ liệu nhận dạng dựa trên, dữ liệu tham khảo dựa trên, can thiệp, sẵn sàng, đồng bộ hóa, và sự phân kỳ, theo yêu cầu của các phân tích / biến đổi slicing chương trình như vậy và đánh giá một phần . Can thiệp và sự phụ thuộc Ready phân tích phụ thuộc vào việc phân tích thoát trước khi tham chiếu dữ liệu dựa trên sự phụ thuộc và đồng bộ hóa phân tích phụ thuộc vào thông tin đối tượng dòng chảy và tính toán các thông tin cuộc gọi đồ thị. Một số phân tích đã mức độ chính xác có thể được thay đổi thông qua một giao diện cũng được xác định khác nhau.
* Side-Effect Analysis cung cấp thông tin tác dụng phụ ở mức phương thức. Người dùng có thể truy vấn nếu có của các đối số / tham số cho một cuộc gọi-site / phương pháp sẽ bị ảnh hưởng một cách trực tiếp (các thành viên ngay lập tức) hoặc gián tiếp (đệ quy thành viên có thể truy cập). Tương tự như vậy, người sử dụng có thể cung cấp một đường dẫn truy cập dữ liệu gốc là đối số / tham số cho một cuộc gọi-site / phương pháp và truy vấn nếu điểm cuối của đường dẫn truy cập dữ liệu bị ảnh hưởng bởi các cuộc gọi / phương pháp.
* Màn hình Anlaysis là một phân tích đơn giản cung cấp màn hình / khóa thông tin đồ thị cho các hệ thống nhất định.
* An toàn Phân tích Lock là một phân tích dè dặt phát hiện ra nếu một khóa (màn hình) sẽ không được tổ chức vô thời hạn. Thông tin này được sử dụng kết hợp với những phụ thuộc thời gian steming cho Object.wait () và Object.notify () / Object.notifyAll () vì nó được thực hiện trong sự phụ thuộc đã sẵn sàng.
* Atomicity Phân tích cung cấp thông tin về số nguyên tử trong hệ thống nhất định. Thực hiện dựa trên phân tích thoát để dự đoán nếu một tuyên bố có thể được thực thi nguyên tử. Thông tin này được sử dụng để phát hiện các khu vực nguyên tử của mã. Những thông tin này rất hữu ích trong các ứng dụng như mô hình kiểm tra để làm giảm kích thước của không gian trạng thái, do đó, cải thiện hiệu suất.
Một số phân tích có thể đủ lớn để tạo thành mô-đun riêng của họ và phân tích đó sẽ được lưu trữ mô-đun như nhau trong Indus thay vì được tiêu thụ bởi các mô-đun này.
Chương trình Java Slicer module này có việc thực hiện cốt lõi của chương trình slicer Java cùng với adapter cung cấp những slicer trong các ứng dụng khác như Bandera và Eclipse. Việc thực hiện được kiến trúc như một thư viện chứ không phải là một ứng dụng để tạo thuận lợi cho việc tái sử dụng subparts nó. Cốt lõi là độc lập của ứng dụng; Yêu cầu của từng ứng dụng của slice có thể được thỏa mãn bằng cách mã hóa lên hiện thực của giao diện sau chế biến và hooking trong những triển khai để tạo thành một slicer tùy chỉnh.
Module này chủ yếu dựa trên các thông tin được cung cấp bởi phụ thuộc phân tích và cũng là lời kêu gọi biểu đồ được cung cấp bởi OFA thông qua giao diện được xác định rõ cho phép triển khai bên ngoài được sử dụng để cắt.
Việc thực hiện này của Slicer sẽ được chuyển giao cho Eclipse với một giao diện người dùng trực quan qua Kaveri plugin.
Các tính năng: o
Backward và Forward hệ slice. Lát đầy đủ (công đoàn của lạc hậu và chuyển tiếp
lát bắt đầu từ tiêu chí lát cùng) có thể được tạo ra.
* Hỗ trợ residualize (thích hợp) lát vào file class thực thi.
* Hỗ trợ cho các bối cảnh nhạy cảm slicing qua bối cảnh phong phú đặc điểm kỹ thuật tiêu chuẩn slice.
* Hỗ trợ để hạn chế các slice đến một phần cụ thể của hệ thống bằng cách phạm vi thông số kỹ thuật.
* Hỗ trợ để sắp tiêu chí slice, cấu hình slicer, và lát.
Tất cả các module trong công việc của dự án Indus trên Jimple, một đại diện trung gian của Java, được cung cấp bởi bộ công cụ Soot từ nhóm Sable tại Đại học McGill. Mỗi module trong dự án sẽ được tiếp xúc như là một hoặc nhiều plugins Eclipse nếu thông tin được cung cấp là rất hữu ích cho người sử dụng và phù hợp hoàn toàn tiêu thụ dùng thông qua một giao diện người dùng đồ họa.
Triết học Công nghệ phần mềm
Mỗi module trong dự án này sẽ cung cấp chỉ các chức năng yêu cầu thông qua giao diện được xác định có thể được thực hiện để lắp ráp một hệ thống tùy chỉnh với các phần mở rộng phù hợp mà thực hiện yêu cầu cụ thể. Khi giao diện rõ ràng là tách ra từ việc thực hiện, thực hiện bất kỳ bên ngoài cung cấp giao diện cần thiết có thể được liên tục được sử dụng với các mô-đun từ dự án này.
Lý lịch
Việc thực hiện hầu hết các phân tích đã được thúc đẩy bởi các yêu cầu của chương trình slicer Java yêu cầu của Bandera. Tuy nhiên, như các slicer chương trình có thể được sử dụng bên ngoài Bandera và những phân tích có thể được sử dụng để cho phép biến đổi khác như chuyên môn thông qua chương trình đánh giá một phần, chúng tôi di chuyển các phân tích và biến đổi thành một dự án mới gọi là Indus.
Các chi tiết về phần mềm:
Phiên bản: 0.8
Ngày tải lên: 3 Jun 15
Giấy phép: Miễn phí
Phổ biến: 14
Bình luận không