• Thứ Bảy, 18/12/2010 07:43 (GMT+7)

    công cụ để đo phần mềm bằng .Net

    Câu hỏi :

    Tôi muốn xây dựng một công cụ để đo phần mềm. Ví dụ phần mềm viết bằng .Net thì phải đọc được file Assembly của nó xem có bao nhiêu lớp, quan hệ giữa các lớp, thuộc tính, phương thức,... Xin hướng dẫn.



    Trả lời :

    Công cụ mà bạn muốn xây dựng được gọi là phần mềm dịch ngược (reverse engineering). Việc dịch ngược gặp nhiều khó khăn và đòi hỏi nhiều kiến thức hơn là dịch xuôi từ mã nguồn sang mã máy. Về nguyên tắc, để viết được chương trình dịch ngược, ta cần nắm vững định dạng file mã máy, từ định dạng file mã máy này ta mới xác định được các thông tin nào có lưu trong file, dựa vào các thông tin có được ta mới dịch ngược về mã nguồn hay rút trích các thông tin ngữ nghĩa cần thiết như file chứa báo nhiêu class, tên của chúng là gì, quan hệ nội bộ cụ thể giữa các class, quan hệ giữa các class trong file và các class khác nằm trên các file khác, thuộc tính và tác vụ của từng class... 

    Hiện nay file đối tượng được dịch từ mã nguồn Java hay ngôn ngữ .Net thường chứa khá đầy đủ các thông tin mã nguồn nền việc dịch ngược thường cho kết quả rất giống với mã nguồn gốc do người lập trình viết.

    Lưu ý rằng các file mã đối tượng của môi trường run-time khác nhau rất khác nhau, thí dụ file đối tượng của Java rất khác với file đối tượng của ngôn ngữ .Net. Để đọc hiểu định dạng file đối tượng và viết được chương trình dịch ngược cho file đối tượng, bạn cần trang bị nhiều kiến thức chuyên về chương trình dịch.

    Chuyên mục: Lập trình