
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Nguyễn Thế Nam
NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG
VÀ
XÂY DỰNG CÔNG CỤ HỖ TRỢ
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công Nghệ Thông Tin
HÀ NỘI - 2010

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Nguyễn Thế Nam
NGHIÊN CỨU THIẾT KẾ THEO HỢP ĐỒNG
VÀ
XÂY DỰNG CÔNG CỤ HỖ TRỢ
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Chuyên ngành: Công Nghệ Phần Mềm
Cán bộ hướng dẫn: TS. Trương Ninh Thuận
HÀ NỘI - 2010

LỜI CẢM ƠN
Sinh viên thực hiện khoá luận tốt nghiệp đề tài “Nghiên cứu thiết kế theo hợp
đồng và xây dựng công cụ hỗ trợ” xin được bày tỏ lòng chân thành biết ơn tới các thầy
cô giáo Trường Đại học Công Nghệ, Đại học Quốc Gia Hà Nội nói chung và thầy cô
Bộ môn Công nghệ Phần mềm nói riêng. Trong suốt bốn năm qua thầy cô không
những tận tình truyền đạt kiến thức mà còn luôn động viên chúng tôi trong học tập
cũng như trong cuộc sống.
Đặc biệt, chúng tôi xin chân thành cảm ơn thầy giáo hướng dẫn, thầy Trương
Ninh Thuận, đã tận tình chỉ bảo, tạo mọi điều kiện cơ sở vật chất cũng như tinh thần
cho chúng tôi hoàn thành khóa luận và sửa chữa những sai sót trong suốt quá trình
thực hiện đề tài.
Chúng tôi cũng xin cảm ơn tới các bạn sinh viên K51 đã cho chúng tôi những ý
kiến đóng góp có giá trị khi thực hiện đề tài này.
Đề tài “Nghiên cứu thiết kế theo hợp đồng và xây dựng công cụ hỗ trợ” được
hoàn thành trong thời gian hạn hẹp nên không tránh khỏi những khiếm khuyết. Chúng
tôi rất mong nhận được ý kiến đóng góp từ thầy cô giáo và các bạn để có thể tiếp tục
hoàn thiện hệ thống này hơn.
Hà nội ngày 24 tháng 4 năm 2010
Sinh viên
Nguyễn Thế Nam

TÓM TẮT NỘI DUNG
Khóa luận tìm hiểu về công nghệ thiết kế theo hợp đồng (Design by Contract) [3]
và trình bày những khái niệm cơ bản. Đây là công nghệ giúp cho chúng ta xây dựng
đặc tả giữa các lớp trong một thành phần và xem xét sự kết hợp giữa chúng với nhau.
Mở rộng hơn nữa là đặc tả các thành phần trong một phần mềm và các thành phần phải
thỏa mãn những điều kiện nào đó mới có thể liên kết với nhau để tạo thành phần mềm
có tính tin cậy, tính đúng đắn cao.
Bên cạnh đó khóa luận còn đưa ra một số khái niệm và cơ chế cho tính đúng đắn
của phần mềm. Các cấu trúc đơn giản thường có tính tin cậy hơn những phần mềm có
cấu trúc phức tạp. Nhưng điểm yếu của nó lại không thể phục vụ được nhu cầu ngày
càng tăng lên của người phát triển và người sử dụng. Vì thế, một số cơ chế như cố
gắng giữ cho cấu trúc của phần mềm càng đơn giản càng tốt. Viết văn bản mô tả phần
mềm để người phát triển sau này có thể đọc lại hoặc viết lại. Quản lý bộ nhớ, hay còn
được gọi là “kỹ thuật thu gom rác” cũng làm cho phần mềm tối ưu hơn bình thường.
Hoặc là việc sử dụng lại những công cụ có sẵn của những phần mềm đáng tin cậy
trước đó cũng là một giải pháp thường được các nhà phát triển ứng dụng. Chi tiết hơn
nữa là phát triển tất cả các giai đoạn: phân tích, thiết kế, lập trình, kiểm thử, bảo trì
trong một dự án phần mềm.
Tiếp theo, khóa luận còn đưa ra các mô hình dựa trên CORBA. Khái niệm về kỹ
nghệ phần mềm hướng thành phần. Một phần mềm được tạo ra là do sự ghép nối các
thành phần độc lập lại với nhau. Các thành phần này sẽ không cần phải biên dịch lại
hoặc không cần phải chỉnh sửa lại khi thêm mới một thành phần khác hay là chỉnh sửa
một thành phần có sẵn. Mô hình thành phần CORBA là mô hình chính mà chúng tôi
nghiên cứu và ứng dụng nó trong việc xây dựng công cụ hỗ trợ.
Ngoài ra khóa luận còn đi vào xây dựng công cụ đặc tả và kiếm chứng hỗ trợ
người dùng kiểm tra sự phù hợp của các thành phần khi kết nối với nhau một cách trực
quan. Công cụ có áp dụng những công nghệ mới hiện nay như mô hình Model – View
– Controller (M-V-C) [6] hoặc sử dụng thư viện layer trong lập trình java game, dễ
dàng cho việc lập trình công cụ.

MỤC LỤC
Mở đầu .......................................................................................................................1
CHƯƠNG 1. Tính đúng đắn, tính tin cậy của phần mềm .......................................3
1.1. Một số cơ chế mang lại tính đúng đắn.............................................................3
1.2. Biểu diễn một đặc tả .......................................................................................4
1.2.1. Những công thức của tính đúng đắn......................................................4
1.2.2. Những điều kiện yếu, mạnh ..................................................................5
1.3. Giao ước cho tính tin cậy của phần mềm ........................................................7
1.3.1. Quyền lợi..............................................................................................8
1.3.2. Nghĩa vụ ...............................................................................................8
CHƯƠNG 2. Giới thiệu về Design by Contract .......................................................9
2.1. Giới thiệu .......................................................................................................9
2.2. Khái niệm về hợp đồng.................................................................................10
2.3. Tiền điều kiện, hậu điều kiện và tính bất biến ...............................................11
2.3.1. Tiền điều kiện và hậu điều kiện...........................................................11
2.3.2. Tính bất biến.......................................................................................12
2.4. Design By Contract trong Eiffel....................................................................12
2.4.1. Biểu diễn Design by Contract trong Eiffel ..........................................13
2.4.2. Ví dụ minh họa ...................................................................................14
CHƯƠNG 3. Mô hình thành phần CORBA...........................................................16
3.1. Khái niệm cơ bản về công nghệ phần mềm hướng thành phần......................16
3.1.1. Giới thiệu............................................................................................16
3.1.2. Thành phần.........................................................................................17
3.1.3. Đối tượng và thành phần.....................................................................17
3.1.4. Giao diện ............................................................................................18
3.1.5. Hợp đồng............................................................................................19
3.1.6. Khuôn mẫu .........................................................................................21

