Tải bản đầy đủ (.pdf) (79 trang)

Ứng dụng code template hỗ trợ lập trình

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3 MB, 79 trang )

Đại Học Quốc Gia Tp. Hồ Chí Minh
TRƯỜNG ĐẠI HỌC BÁCH KHOA
------------------

HÀ MINH NGỌC

ỨNG DỤNG CODE TEMPLATE HỖ TRỢ LẬP TRÌNH
Chun ngành: Cơng Nghệ Thơng Tin

LUẬN VĂN THẠC SỸ

TP. HỒ CHÍ MINH, Tháng 12 năm 2006


Đại Học Quốc Gia Tp. Hồ Chí Minh
TRƯỜNG ĐẠI HỌC BÁCH KHOA
------------------

HÀ MINH NGỌC

ỨNG DỤNG PHÂN TÍCH NGỮ CẢNH ĐỂ TRỢ GIÚP
VIỆC LẬP TRÌNH
Chun ngành: Cơng Nghệ Thơng Tin

LUẬN VĂN THẠC SỸ

TP. HỒ CHÍ MINH, Tháng 12 năm 2006


CƠNG TRÌNH ĐƯỢC HỒN THÀNH TẠI
TRƯỜNG ĐẠI HỌC BÁCH KHOA


ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
Cán bộ hướng dẫn khoa học : Tiến sỹ Nguyễn Văn Hiệp .................................

Cán bộ chấm nhận xét 1 : Tiến sỹ Nguyễn Hứa Phùng .....................................

Cán bộ chấm nhận xét 2 : Tiến sỹ Trần Đan Thư ..............................................

Luận văn thạc sĩ được bảo vệ tại HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN
THẠC SĨ
TRƯỜNG ĐẠI HỌC BÁCH KHOA, ngày 25 tháng 12 năm 2006


BIỂU MẪU 7

TRƯỜNG ĐẠI HỌC BÁCH KHOA
PHỊNG ĐÀO TẠO SĐH

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
ĐỘC LẬP – TỰ DO – HẠNH PHÚC

Tp. HCM, ngày

tháng

năm

NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ tên học viên: Hà Minh Ngọc............................................... Phái: Nam .......................
Ngày, tháng, năm sinh: 26/12/1981 ........................................... Nơi sinh: Thái Bình........
Chuyên ngành: Công Nghệ Thông Tin .................................... MSHV:00704169 ............

I- TÊN ĐỀ TÀI: Ứng dụng Code Template hỗ trợ lập trình ........................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
II- NHIỆM VỤ VÀ NỘI DUNG:
Nghiên cứu và tổng kết các vấn đề hỗ trợ lập trình và hiện trạng hiện thực các ý
tưởng này bởi các cơng cụ hiện có. Nghiên cứu phương pháp hỗ trợ lập trình dựa
trên việc phân tích ngữ cảnh : dùng thuộc tính đối tượng và code template. Tìm hiểu
các cơng nghệ cho việc hiện thực, và thực hiện chương trình demo.............................
..............................................................................................................................................
..............................................................................................................................................
III- NGÀY GIAO NHIỆM VỤ (Ngày bắt đầu thực hiện LV ghi trong Quyết định giao
đề tài): .................................................................................................................................
IV- NGÀY HOÀN THÀNH NHIỆM VỤ:25/12/2006 .....................................................
V- CÁN BỘ HƯỚNG DẪN (Ghi rõ học hàm, học vị, họ, tên): Tiến sỹ Nguyễn Văn
Hiệp ...................................................................................................................................
CÁN BỘ HƯỚNG DẪN

(Học hàm, học vị, họ tên và chữ ký)

CN BỘ MÔN
QL CHUYÊN NGÀNH

Nội dung và đề cương luận văn thạc sĩ đã được Hội đồng chun ngành thơng qua.
TRƯỞNG PHỊNG ĐT – SĐH

Ngày
tháng
năm
TRƯỞNG KHOA QL NGÀNH



Lời cảm ơn
Trong thời gian làm luận văn, tôi đã nhận được sự giúp đỡ của những người thân.
Điều này ln là nguồn động viên tơi cố gắng hồn thành yêu cầu của đề tài.
Tôi chân thành cảm ơn thầy Nguyễn Văn Hiệp đã nhiệt tình hướng dẫn và tạo điều
kiện tốt cho tơi hồn thành luận văn.
Cảm ơn khoa CNTT trường ĐH Bách Khoa TP. Hồ Chí Minh vì đã cho tôi một môi
trường tốt để học tập và làm việc.
Cảm ơn tất cả đồng nghiệp và bạn bè đã góp ý cho bản luận văn, giúp đỡ tơi trong
cơng việc, và động viên tơi những lúc khó khăn.
Và con xin cảm ơn bố, mẹ đã dành cho con tình cảm yêu thương nhất.

1


Tóm tắt
Sự phát triển mạnh mẽ của ngành cơng nghiệp phần mềm hiện nay đòi hỏi sự phát
triển tương ứng của các phương pháp, công nghệ, và kỹ thuật làm phần mềm. Trong
đó kỹ thuật lập trình có một vai trị lớn trong sự thành cơng của bất kỳ dự án phần
mềm nào. Chủ đề này đã có nhiều nghiên cứu và ứng dụng thực tế. Và còn nhiều
vấn đề cần tiếp tục nghiên cứu để đáp ứng yêu cầu phát triển. Đề tài của luận văn sẽ
nghiên cứu và ứng dụng phương pháp phân tích ngữ cảnh để nâng cao khả năng hỗ
trợ lập trình.
Phân tích ngữ cảnh là việc hiểu vấn đề mà lập trình viên thể hiện trong mã chương
trình. Phương pháp phân tích dựa trên hai khái niệm thuộc tính đối tượng và Code
Template. Thuộc tính đối tượng biểu diễn cho nhận thức về ngữ cảnh thơng qua các
đối tượng mã. Code Template biểu diễn tính chất, cấu trúc, và trình tự thực hiện của
một đoạn mã chương trình. Nó là khái niệm mở rộng so với giải thuật, cho phép
biểu diễn nhiều tình huống lập trình linh động dựa trên khả năng phân tích ngữ cảnh

và biễu diễn tri thức liên quan đến vấn đề. Mục đích của đề tài là nghiên cứu
phương pháp ứng dụng cho các vấn đề: Sinh mã thông minh, Nhận dạng, và Đánh
giá mã.
Đề tài sẽ giới hạn phạm vi ứng dụng trong một mơi trường lập trình cụ thể là VC++.
Phần ứng dụng gồm các công việc sau: Xây dựng mơ hình mã (Code Model), chứa
các đối tượng mã có khả năng biểu diễn cấu trúc, quan hệ, và nhận thức. Xây dựng
cơng cụ phân tích mã, tổng hợp thuộc tính, và thực hiện việc hỗ trợ.

2


Abstract
Fast - growth of the current software industry requires a correlative development of
methods, technologies and software engineering. Programming technique plays a
critical part in the success of any software project. Although this subject has many
researches and applications, there have many issues which need be to studied more
to meet present development requirements. This thesis will study and apply
analyzing context method to enhance abilities supporting programming.
Analyzing context is to understand problems which programmers show in their
code. Analyzing methods base on two concepts: Object's argument and code
template. Object's argument represents for awareness of context through a code
object. Code template demonstrates for properties, structures and statement orders
of a code segment. This is a broadened concept of algorithm, allowing to show
many flexible programming situations, basing on manipulation of analyzing context
and representing knowledge of a problem. My thesis aim to study a method for
supporting these issues: Generation sophisticated code segment, Inspection code,
Recognition code template.
The application part will be limited for one programming environment, VC++. It
includes two sections: Build Code Model to manage code objects which represent
structures, relation-ships, and awareness of code concept. Build module for

analyzing code segment and apply Code Template for programming problems.

3


Bảng thuật ngữ và viết tắt
IDE

Integrate Development Environment, môi trường lập trình
tích hợp nói chung.

Visual C++ (VC++)

Mơi trường và ngơn ngữ lập trình hỗ trợ bởi Visual Studio

Visual Studio

Cơng cụ lập trình của hãng Microsoft, hỗ trợ các ngơn ngữ
như: C++, Visual Basic, C#, và Visual J.

Design Pattern

Các mẫu thiết kế đã được kiểm định là tốt cho các vấn đề
thơng dụng

Coding
Standard,
Kỹ thuật lập trình, bao gồm các quy định về hiện thực trong
Coding Convention,
từng tình huống cụ thể.

Coding Effective
Đối tượng mã

Đối tượng được hình thành từ các thành phần của mã
chương trình như: Class, Method, Variable... Chúng được
tạo ra để lưu trữ thuộc tính và nhận thức

Code Template

Mẫu quy định trình tự và tính chất của các đối tượng trong
một đoạn mã chương trình

Ngữ cảnh

Các đối tượng và các mối quan hệ thể hiện trong một đoạn
mã chương trình.

COM

Component Object Model, kỹ thuật xây dựng thành phần
mà cho phép tương tác với nó thơng qua Interface

ATL

Active Template Library, thư viện lập trình cho COM

Automation

Kỹ thuật dựa trên nền tảng COM cho phép ngôn ngữ Script
tương tác với ứng dụng


VBScript, JavaScript

Hai ngôn ngữ Script thông dụng, được sử dụng trong nhiều
ứng dụng Automation

Script Engine

Module phân tích và thực thi Script

Active Scripting

Khái niệm nói chung về kỹ thuật Scripting, bao gồm: Script
Language và Script Engine

4


Mục lục
Danh sách hình vẽ ............................................................................................. 8
Danh sách bảng ................................................................................................. 9
Chương 1:

Giới thiệu................................................................................. 11

1.1

Khái quát ...................................................................................................11

1.2


Vai trò của thiết kế và hiện thực ...............................................................12

1.3

Yêu cầu......................................................................................................13

1.4

Nội dung của luận văn ..............................................................................15

Chương 2:
2.1

Tổng quan................................................................................ 18

IDE và các cơng cụ tích hợp .....................................................................18

2.1.1

Chức năng soạn thảo .............................................................................18

2.1.2

Chức năng soạn thảo mở rộng...............................................................19

2.1.3

Chức năng tạo mã chương trình............................................................20


2.1.4

Chức năng phân tích..............................................................................21

2.1.5

Chức năng tạo report và document .......................................................21

2.1.6

Nhận xét ................................................................................................22

2.2

Kỹ thuật thiết kế và lập trình.....................................................................23

2.2.1

Kỹ thuật lập trình ..................................................................................23

2.2.2

Design Pattern .......................................................................................24

2.2.3

Lược đồ và mã chương trình.................................................................24

2.3


Kết luận .....................................................................................................24

Chương 3:
3.1
3.1.1

Khái niệm ngữ cảnh ................................................................ 25

Ngữ cảnh ...................................................................................................25
Khái niệm ..............................................................................................25

5


3.1.2

Phương pháp .........................................................................................26

3.2

Thuộc tính đối tượng.................................................................................27

3.3

Code template............................................................................................29

3.3.1

Khái quát ...............................................................................................29


3.3.2

Khái niệm code template.......................................................................31

3.4

Áp dụng.....................................................................................................33

3.4.1

Sinh mã thông minh ..............................................................................33

3.4.2

Nhận dạng mẫu .....................................................................................36

3.4.3

Đánh giá mã chương trình.....................................................................36

3.5

Kết luận .....................................................................................................37

Chương 4:
4.1

Phân tích ngữ cảnh .................................................................. 39

Phân tích thuộc tính đối tượng ..................................................................39


4.1.1

Biểu diễn ...............................................................................................39

4.1.2

Phân tích................................................................................................42

4.1.3

Thiết kế..................................................................................................45

4.2

Phân tích code Template ...........................................................................46

4.2.1

Biểu diễn ...............................................................................................46

4.2.2

Phân tích:...............................................................................................48

4.2.3

Nhận xét ................................................................................................52

4.3


Kết luận .....................................................................................................54

Chương 5:
5.1

Xây dựng chương trình ........................................................... 56

Automation................................................................................................56

5.1.1

Giới thiệu...............................................................................................56

5.1.2

Hiện thực ...............................................................................................57

5.2

VBScript....................................................................................................59

5.2.1

Giới thiệu VBScript ..............................................................................59

5.2.2

Biểu thức chính quy ..............................................................................60


5.3

Script Engine.............................................................................................62
6


5.3.1

Giới thiệu...............................................................................................62

5.3.2

Kiến trúc................................................................................................63

5.3.3

Hiện thực ...............................................................................................66

5.4

Mơ hình hiện thực .....................................................................................66

5.4.1

Environment Manager...........................................................................67

5.4.2

Code Parser ...........................................................................................68


5.4.3

Code Model Manager............................................................................68

5.4.4

Code Template Manager .......................................................................69

5.5

Kết luận .....................................................................................................69

Chương 6:

Kết luận ................................................................................... 70

6.1

Tóm tắt ......................................................................................................70

6.2

Kết quả ......................................................................................................71

6.3

Đề nghị ......................................................................................................72

Tài liệu tham khảo........................................................................................... 73


7


Danh sách hình vẽ
Hình 5-1: Mơ hình hoạt động của cơng cụ phân tích trên nền Automation..............57
Hình 5-2: Kiến trúc Active Scripting [12] ................................................................63
Hình 5-3: Lược đồ hoạt động của ActiveScripting [12] ...........................................65
Hình 5-4: Mơ hình hiện thực.....................................................................................67

8


Danh sách bảng
Bảng 3-1: Ví dụ khái niệm thuộc tính đối tượng ......................................................28
Bảng 3-2: Ví dụ nhận diện thuộc tính đối tượng ......................................................29
Bảng 3-3: Ví dụ sinh mã thơng minh........................................................................35
Bảng 3-4: Ví dụ một số luật đánh giá mã chương trình............................................37
Bảng 4-1: Ví dụ biểu diễn thuộc tính đối tượng .......................................................41
Bảng 4-2: Danh sách đối tượng mã trong môi trường VC++ ...................................43
Bảng 4-3: Danh sách đối tượng IDE.........................................................................44
Bảng 4-4: Danh sách thuộc tính chung của đối tượng mã ........................................45
Bảng 4-5: Phương thức SetAttribute và GetAttribute...............................................45
Bảng 4-6: Phương thức truy xuất đối tượng .............................................................46
Bảng 4-7: Code Template biểu diễn cho toán tử Assignment. .................................47
Bảng 4-8: Đoạn mã hiện thực toán tử Assignment ...................................................47
Bảng 4-9: Bảng ký hiệu sử dụng trong Code Template............................................48
Bảng 4-10: Biểu diễn Code Template với VBScript ................................................49
Bảng 4-11: Code Template đánh giá hiện thực toán tử Assignment ........................51
Bảng 4-12: Ví dụ Code Template: Size(objName)...................................................52
Bảng 5-1: Các phương thức chính của IDispatch Interface ......................................58

9


Bảng 5-2: Ký hiệu đặc biệt của RegExp ...................................................................61
Bảng 5-3: Ví dụ sử dụng biểu thức chính quy áp dụng chỉnh sửa mã ......................62
Bảng 5-4: Phương thức của IActiveScriptSite..........................................................66

10


Luận văn cao học: Ứng dụng phân tích ngữ cảnh để trợ giúp việc lập trình

Chương 1: Giới thiệu
Nội dung của chương này khái quát sự phát triển và nhu cầu về công nghệ trong
lĩnh vực phát triển phần mềm. Có nhiều cơng đoạn trong phát triển phần mềm, hai
trong số các cơng đoạn quan trọng là phân tích và hiện thực phần mềm. Chúng có
một vai trị tất yếu trong tất cả vòng đời phát triển của phần mềm. Xây dựng phương
pháp và công cụ hỗ trợ hiệu quả cho hai cơng đoạn này sẽ đóng góp rất nhiều cho
việc nâng cao chất lượng và giảm chi phí phát triển phần mềm. Luận văn sẽ xây
dựng phương pháp phân tích ngữ cảnh, dựa trên khái niệm code template, thuộc tính
và nhận thức để cung cấp sự hỗ trợ linh hoạt cho hai công đoạn này.

1.1 Khái quát
Ngành công nghiệp phần mềm đang phát triển mạnh trong những năm gần đây, việc
ứng dụng phần mềm đang trở nên cần thiết và phổ biến trong nhiều lĩnh vực. Tuy
còn non trẻ nhưng nó đã nhanh chóng chứng tỏ được vai trị của mình. Nó đã đạt
được sự chấp nhận rộng rãi trong nhiều nhiều lĩnh vực, ngành nghề, và của nhiều
người. Và đang được xem như là chìa khóa cho sự phát triển trong nhiều tổ chức.
Do đó, nhu cầu về phần mềm đang gia tăng nhanh chóng, cả về số lượng, độ lớn, sự
đa dạng, và tính phức tạp. Trong khi đó yêu cầu về nâng cao chất lượng và giảm

thời gian hoàn thành ngày càng khắt khe hơn.
Đối với ngành phần mềm thì điều đó được nhận thức như là nhu cầu về việc phát
triển công nghệ, công cụ, và quy trình làm phần mềm. Nó trở thành một lĩnh vực
riêng, chun nghiên cứu cơng nghệ, quy trình và cơng cụ làm phần mềm. Nó thu
hút được nhiều nguồn lực tham gia trong việc tạo ra các sản phẩm cơng nghệ được
sử dụng cho chính bản thân ngành phần mềm. Nó thúc đẩy sự phát triển nội tại của
lĩnh vực này một cách mạnh mẽ và toàn diện, cả về lý thuyết và ứng dụng thực tế.


Chương 1: Giới thiệu

Kết quả đạt được là tương đối rõ ràng và đa dạng, có thể là cơng cụ, quy trình,
phương pháp hoặc là các hướng dẫn để làm phần mềm, tạo ra khả năng hỗ trợ hiệu
quả cho tất cả các yêu cầu làm phần mềm trong mọi lĩnh vực.
Quy trình làm phần mềm được chia ra nhiều giai đoạn, mỗi giai đoạn đều được hỗ
trợ bởi các công cụ khác nhau, từ lúc lấy yêu cầu từ khách hàng, phân tích, thiết kế,
hiện thực và kiểm tra. Cơng cụ có khả năng hỗ trợ tồn diện và đóng vai trị quan
trọng trong quy trình làm phần mềm. Đối với quy trình làm phần mềm, nó giúp cho
việc thực hiện một cách thơng suốt, được chuẩn hóa trong các bước thực hiện, và có
tính tự động cao. Đối với người phát triển, nó có khả năng tự động hóa các cơng
việc có tính quy trình, hoặc lặp lại để người tập trung vào những vấn đề tư duy và
sáng tạo.
Nội dung của đề tài là xây dựng công cụ hỗ trợ việc thiết kế và hiện thực dựa trên
phương pháp phân tích ngữ cảnh. Ý tưởng chính của đề tài là xây dựng phương
pháp nhận thức, hay hiểu chương trình, để từ đó cung cấp sự hỗ trợ “thông minh”
chứa đựng kinh nghiệm và tri thức chuyên gia. Ý tưởng được xuất phát từ phương
pháp xử lý ngôn ngữ tự nhiên, xem việc hiểu chương trình phần mềm cũng giống
như việc đọc hiểu ngôn ngữ tự nhiên. Tri thức được kết hợp với cơ chế suy luận trở
thành nền tảng cho các ứng dụng của luận văn.


1.2 Vai trị của thiết kế và hiện thực
Đây là hai cơng đoạn khơng thể thiếu trong quy trình làm phần mềm, nó có ảnh
hưởng quan trọng đến chất lượng phần mềm. Tùy theo độ phức tạp của phần mềm
mà một số giai đoạn khác sẽ có tỉ trọng khác nhau trong dự án phần mềm, thậm chí
có thể được bỏ qua. Nhưng hai công đoạn này luôn chiếm 40%-50% công sức của
dự án. Do đó, đây cũng là hai cơng đoạn được nghiên cứu và phát triển nhiều cả về
phương pháp và ứng dụng thực tế. Kết quả là đã tạo ra môi trường thiết kế và hiện
thực hiệu quả, phù hợp với nhiều điều kiện. Điều này được thể hiện ở nhiều mặt
12


Chương 1: Giới thiệu

thông qua sự phát triển của ngôn ngữ lập trình, phương pháp luận thiết kế, phương
pháp hiện thực, và công cụ hỗ trợ.
Đây cũng là hai công việc đòi hỏi nhiều kỹ năng của người thực hiện, và có tác
động lâu dài trong vịng đời của sản phẩm. Chúng có thể ảnh hưởng trực tiếp và tức
thời đến hiệu quả cơng việc, nhưng cũng có thể ảnh hưởng lâu dài đến chất lượng
sản phẩm. Làm tốt những công việc này sẽ giúp nâng cao chất lượng sản phẩm
trong cả vịng đời phát triển của nó.
Dù đã có các quy trình làm việc chặt chẽ, nhưng một số yếu tố con người đang giới
hạn việc nâng cao hiệu quả cơng việc và chất lượng sản phẩm. Do đó, sự hỗ trợ của
công cụ hiện nay đều hướng đến việc khắc phục nhược điểm này. Con người được
giải phóng khỏi các cơng việc mang tính thủ tục hoặc quy trình, để tập trung năng
lực sáng tạo vào cơng việc.
Các công cụ đang được dùng phổ biến cung cấp nhiều tiện ích cho việc hồn thành
thủ tục, quy trình, hoặc làm theo mẫu. Chúng thể hiện tính tự động hóa cao, có khả
năng hỗ trợ làm việc trực quan, có khả năng phân tích ngữ cảnh đơn giản. Tuy
nhiên nó, vẫn chưa đạt đến sự nhận thức để có thể giải quyết được các vấn liên quan
đến ngữ nghĩa trong thiết kế và hiện thực.


1.3 Yêu cầu
Yêu cầu của luận văn là xây dựng một cơng cụ có khả năng hỗ trợ hiệu quả việc
thiết kế và lập trình, bao gồm nghiên cứu và đưa ra một phương pháp tiếp cận mới,
đồng thời xây dựng chương trình minh họa. Luận văn đề ra phương pháp tiếp cận có
ngữ cảnh với mã chương trình, để có thể hiểu được mối quan hệ giữa các thành
phần trong mã chương trình và nhận thức được vai trò của chúng trong một phạm vi
nào đó. Từ đó, mở ra khả năng hỗ trợ linh hoạt cho việc thực hiện hoặc đánh giá
cho quá trình thực hiện trước đó.

13


Chương 1: Giới thiệu

Cơ sở đầu tiên của đề tài xuất phát từ các vấn đề đã có nhiều kết quả nghiên cứu:
Coding Standard, Coding Efective, Coding Inspection, Design Pattern, C# Generic
or C++ Template. Đây là các vấn đề đã được thừa nhận và áp dụng rộng rãi như là
một phần trong quy trình làm phần mềm. Tuy nhiên, chúng mới được hỗ trợ bởi
công cụ một cách hạn chế, thay vào đó chúng thường chỉ được xem như là những
chỉ dẫn cho việc thực hiện. Khó khăn của chúng là việc thiếu một cơ chế biểu diễn
và xử lý cho các phát biểu này. Luận văn sẽ xây dựng phương pháp biểu diễn làm
cơ sở hiện thực hóa một phần các vấn đề trên.
Cơ sở thứ hai của đề tài xem mã chương trình là sự thể hiện của ngôn ngữ, cũng
như ngôn ngữ tự nhiên, và xem việc nhận thức mã chương trình giống như việc xử
lý ngơn ngữ tự nhiên. Có thể nhận thấy vấn đề phân tích mã chương trình là tập con
của ngơn ngữ tự nhiên. Nhưng ngơn ngữ lập trình đơn giản và chặt chẽ hơn rất
nhiều. Do đó, ta có khả năng vận dụng các phương pháp tương tự trong xử lý ngôn
ngữ tự nhiên cho việc nhận thức ngữ cảnh chương trình.
Phạm vi của luận văn sẽ xây dựng chương trình hỗ trợ hai công đoạn: hiện thực, và

thiết kế chi tiết. Chương trình phải có khả năng nhận thức được ngữ cảnh thể hiện
trong cấu trúc và nội dung các đoạn mã chương trình. Hình thức đơn giản là khả
năng nhận biết được cấu trúc tĩnh thể hiện mối quan hệ của các thành phần trong
chương trình ở mức độ ngơn ngữ. Một dạng khác là nhận biết được vai trò của từng
thành phần tham gia trong một đoạn mã. Và một hình thức phức tạp hơn là nhận
biết được mẫu của một đoạn mã nào đó. Các hình thức này được thể hiện đầy đủ về
lượng thông tin trong mã chương trình. Nhận thức được lượng thơng tin đó sẽ là cơ
sở cho việc triển khai các ứng dụng thông minh và linh hoạt.
VC++ là một mơi trường lập trình mạnh và rất thơng dụng. Do đó, nó được chọn để
xây dựng chương trình mơ phỏng và tiến đến việc xây dựng cơng cụ hồn chỉnh hỗ
trợ việc thiết kế và hiện thực. Nội dung của luận văn sẽ có phần khảo sát và xây
dựng các ứng dụng của phân tích ngữ cảnh trên mơi trường lập trình này.
14


Chương 1: Giới thiệu

Tóm lại, yêu cầu cụ thể của luận văn bao gồm:
• Xây dựng phương pháp nhận thức để phân tích ngữ cảnh của chương trình.
• Nghiên cứu các ứng dụng của phương pháp này.
• Xây dựng hiện thực cho mơi trường VC++
• Xây dựng chương trình mơ phỏng.
Thực hiện được các u cầu trên, chương trình có khả năng: Thay thế vai trò của
Reviewer với chức năng đánh giá mã chương trình. Tự động hóa một số việc trong
thiết kế và việc hiện thực với chức năng sinh mã, mở ra khả năng lập trình với mã
trừu tượng hoặc lược đồ giải thuật. Và nó cịn có khả năng hiểu ngữ nghĩa từ việc
phân tích mã chương trình bằng chức năng nhận dạng.

1.4 Nội dung của luận văn
Nội dung còn lại của các chương sau sẽ lần lượt giải quyết vấn đề trên, nội dung

tóm tắt của chúng như sau:
Chương 2: Tổng quan
Chương 2 của luận văn sẽ trình bày tổng quan các kết quả hiện thực hoặc kết quả
nghiên cứu liên quan đến nội dung của luận văn. Có rất nhiều cơng cụ đã được tạo
ra để hỗ trợ cơng việc lập trình, chúng đều hướng đến việc giúp làm đơn giản cơng
việc của lập trình viên và tăng hiệu quả công việc. Thông dụng nhất IDE và các
cơng cụ tích hợp vào IDE. Tuy vậy, các cơng cụ mới chỉ hiện thực hóa được một
phần nhỏ trong rất nhiều kết quả nghiên cứu (lý thuyết) về kỹ thuật thiết kế và lập
trình. Rất nhiều phần của các kỹ thuật này đang được áp dụng bởi nhận thức của lập
trình viên mà chưa có sự hỗ trợ đáng kể bởi công cụ. Nội dung tiếp theo sẽ khảo sát
các vấn đề hiện nay để định hướng cho phần hiện thực của luận văn.

15


Chương 1: Giới thiệu

Chương 3:Khái niệm
Chương 3 sẽ trình bày giải pháp khắc phục những thiếu sót được trình bày trong
chương 2 để xây dựng một cơng cụ có khả năng thực hiện sự hỗ trợ thông minh cho
vấn đề thiết kế và hiện thực. Lần lượt các phần sau sẽ trình bày khái niệm ngữ cảnh,
phương pháp phân ngữ cảnh, và trình bày sơ lược về ứng dụng của khái niệm này.
Chương 4:Phân tích ngữ cảnh
Trong chương 3, luận văn đã trình bày ý tưởng và khái niệm phân tích ngữ cảnh cho
mã chương trình. Luận văn cũng đã trình bày các hướng ứng dụng của phương pháp
này, cũng như chứng minh khả năng áp dụng chúng trong trong các vấn đề cụ thể.
Chương 4 sẽ tiếp tục trình bày phương pháp biểu diễn và phân tích ngữ cảnh, bao
gồm hai phần: Thuộc tính đối tượng và Code Template. Chúng là cơ sở của việc
diễn đạt tri thức và nhận thức về mã chương trình. Tính mở và sự linh hoạt của
chúng sẽ giúp cho khả năng ứng dụng của chúng trở nên mạnh mẽ và rộng rãi.

Chương 5:Xây dựng chương trình
Chương 4 đã trình bày chi tiết giải pháp phân tích ngữ cảnh và hỗ trợ lập trình.
Trong đó đã nêu lên việc xây dựng và mơ hình biểu biểu diễn tri thức cho các đối
tượng là mã chương trình và bộ thực thi Code Template. Chương 5 sẽ trình bày
những vấn đề kỹ thuật cần thiết để hiện thực hóa giải pháp nêu lên ở chương 4.
Chúng bao gồm: Automation Object, VBScript, Active Scripting Engine, và mơ
hình hiện thực.
Chương 6:Kết luận
Chương 6 tóm tắt lại ý tưởng chính của đề tài, các vấn đề và phương pháp giải
quyết của luận văn. Luận văn đã đạt được những kết quả quan trọng trong việc đề ra
giải pháp và mơ hình ứng dụng, tuy vẫn cịn tồn tại những vấn đề cần phải hoàn

16


Chương 1: Giới thiệu

thiện thêm. Phần cuối chương sẽ đề nghị một số hướng phát triển tiếp theo cho đề
tài.

17


Luận văn cao học: Ứng dụng phân tích ngữ cảnh để trợ giúp việc lập trình

Chương 2: Tổng quan
Chương 2 của luận văn sẽ trình bày tổng quan các kết quả hiện thực hoặc kết quả
nghiên cứu liên quan đến nội dung của luận văn. Có rất nhiều cơng cụ đã được tạo
ra để hỗ trợ cơng việc lập trình, chúng đều hướng đến việc giúp làm đơn giản công
việc của lập trình viên và tăng hiệu quả cơng việc. Thơng dụng nhất IDE và các

cơng cụ tích hợp vào IDE. Tuy vậy, các công cụ mới chỉ hiện thực hóa được một
phần nhỏ trong rất nhiều kết quả nghiên cứu (lý thuyết) về kỹ thuật thiết kế và lập
trình. Rất nhiều phần của các kỹ thuật này đang được áp dụng bởi nhận thức của lập
trình viên mà chưa có sự hỗ trợ đáng kể bởi cơng cụ. Nội dung tiếp theo sẽ khảo sát
các vấn đề hiện nay để định hướng cho phần hiện thực của luận văn.

2.1 IDE và các cơng cụ tích hợp
IDE là cơng cụ đa năng và là một phần không thể thiếu đối với hầu hết lập trình
viên. Tùy thuộc vào mơi trường làm việc và sự chọn lựa của lập trình viên có thể
chọn một cơng cụ cho phù hợp. IDE, như tên gọi của nó, cung cấp nhiều tiện ích
khác nhau cho việc lập trình. Nó là sự tích hợp của nhiều chức năng: Chức năng hỗ
trợ soạn thảo, chức năng quản lý project, hỗ trợ phân tích, hỗ trợ kiểm tra và tìm lỗi,
hỗ trợ làm việc nhóm… Một số IDE thông dụng: Microsoft Visual Studio, IBM
Eclipse, JBuilder

2.1.1 Chức năng soạn thảo
Soạn thảo code là chức năng cơ bản và thông dụng nhất, chúng là một phần
không thể thiếu trong bất kỳ một công cụ phát triển nào. Chúng làm cho mã
chương trình trở nên sáng sủa, giúp lập trình viên dễ dàng thực hiện, và bảo trì
mà khơng làm ảnh hưởng đến nội dung file chương trình. Ngồi chức năng soạn


Chương 2: Tổng quan

thảo văn bản, các chức năng hỗ trợ thơng dụng của chương trình soạn thảo bao
gồm:
1. Sử dụng màu sắc khác nhau cho các thành phần trong chương trình, làm
cho chương trình dễ đọc hơn.
2. Trình bày chương trình ứng với cấu trúc khối của ngơn ngữ lập trình.
3. Trình bày code theo các cấp độ trừu tượng.


2.1.2 Chức năng soạn thảo mở rộng
Bên cạnh các chức năng cơ bản ở trên, những IDE thông dụng hiện nay cịn bổ
sung nhiều tiện ích cho chương trình soạn thảo. Các chức năng mở rộng thường
gắn với ngữ nghĩa của đoạn mã chương trình và ngữ cảnh mà người viết code
thực hiện. Thơng qua khả năng phân tích và trừu tượng hóa ngữ nghĩa của
chương trình, kết hợp với việc theo dõi q trình thực hiện, để từ đó có thể dự
đốn được ý định của lập trình viên. Kết quả là một tập các đề nghị được đưa ra
để lập trình viên chọn lựa. Những chức năng này có thể được cung cấp sẵn bởi
IDE hoặc bởi những cơng cụ của hãng thứ ba tích hợp với IDE, Tomato-Visual
Assist. Có rất nhiều tiện ích giúp cho việc lập trình được nhẹ nhàng, nhanh chóng
và hiệu quả. Một số tiện ích mở rộng bao gồm:
1. IntelScense: Tìm kiếm từ khóa hoặc danh biểu theo ngữ cảnh của đoạn
chương trình đang làm việc. Chúng có khả năng tìm kiếm một cách thông
minh theo ngữ cảnh, tần suất sử dụng, theo tiếp đầu ngữ hoặc viết tắt
(Prefix, Shorthand, Acronym).
2. Dynamic help, code snipet: Nhận dạng ngữ cảnh làm việc, để tìm kiếm
những tài nguyên liên quan và liệt kê thành một danh sách tham khảo. Tài
nguyên có thể là đoạn code mẫu, tài liệu hướng dẫn liên quan, hoặc là liên
kết đến các thành phần liên quan khác trong chương trình.

19


Chương 2: Tổng quan

3. Phát hiện và sửa lỗi (Error dectect and correction): Kiểm tra và đề nghị sửa
những lỗi đơn giản về từ vựng hoặc khai báo, và được thực hiện song song
với soạn thảo chương trình.
4. Change Management: Giúp quản lý sự thay đổi trong soạn thảo code, nó

có khả năng so sánh hai file để tìm ra những điểm thay đổi được đặt trong
ngữ nghĩa của ngôn ngữ lập trình.

2.1.3 Chức năng tạo mã chương trình
Là khả năng tạo ra một số đoạn mã theo mẫu. Các IDE thơng dụng đều tích hợp
chức năng này, Wizard. Nó có khả năng tạo mã theo nhiều dạng, giúp tránh cho
lập trình viên sự nhàm chán phải xây dựng đoạn mã giống nhau: Khởi tạo project
theo nhiều mẫu khác nhau, tạo mã trực quan từ giao diện thiết kế của chương
trình, tạo mã cho các thành phần thơng dụng, class, method, event, attribute….và
các cấu trúc điều khiển (If, Switch, For…) Hỗ trợ chức năng này cịn có một số
cơng cụ tích hợp: Install Shield, BCGSoft…
Một số cơng cụ tích hợp khác còn bổ sung thêm một số chức năng sinh mã linh
hoạt hơn. Chúng cũng sinh mã theo mẫu, nhưng với tham số là các biến của môi
trường làm việc hay theo tình trạng cơng việc: Tạo Comment trong chương trình
hoặc Comment tự động cho các khai báo lớp, thuộc tính, phương thức, hoặc cho
các cấu trúc khối. Ngồi ra, chúng cịn có khả năng tạo mã theo tập mẫu do
người dùng định nghĩa. Nó cung cấp cơ chế khai báo mẫu và cơ chế sử dụng biến
môi trường để lập trình viên có thể tái sử dụng những đoạn mã mà mình u
thích.
Một số cơng cụ cịn có khả năng tạo mã từ mơ hình thiết kế UML (Lược đồ Class
hay lược đồ cơ sở dữ liệu).

20


Chương 2: Tổng quan

2.1.4 Chức năng phân tích
Lập trình khơng chỉ là việc viết code mà còn bao gồm cả việc phân tích và đánh
giá chương trình, bao gồm cả hai hình thức: Phân tích hoạt động của chương

trình và phân tích cấu trúc tĩnh của chương trình. Dạng thứ nhất bao gồm việc
phân tích các bước trong hoạt động của chương trình và phân tích việc sử dụng
tài ngun trong một vài kịch bản. Kết quả phân tích có khả năng tạo ra lược đồ
tương tác cho chương trình, lược đồ cộng tác và lược đồ tuần tự, hoặc là bảng
thống kê quá trình sử dụng tài nguyên. Chúng thường được lập trình viên sử
dụng để DEBUG hoặc tìm hiểu hoạt động giải thuật của chương trình. Có hai
cơng cụ hỗ trợ các chức năng này là Bound Checker và Visual Trace.
Dạng thứ hai là phân tích mã của chương trình để hiểu được cấu trúc, ý nghĩa của
các thành phần xây dựng nên chương trình, đây là dạng khó hơn và là hướng
đang được nghiên cứu. Kết quả của việc này được sử dụng cho nhiều ứng dụng
cụ thể: Kiểm tra tính chất chuẩn của đoạn code, đánh giá tính hiệu quả của một
đoạn code, dự đốn nguy cơ lỗi , và có thể sửa được một sỗ vấn đề ở trên. Ví dụ
hai cơng cụ hỗ trợ các chức năng này là Programar và C++ Test.

2.1.5 Chức năng tạo report và document
Gần giống với chức năng phân tích, và cũng lại rất tiện lợi với lập trình viên là
chức năng tạo Report và Document. Dạng đơn giản là thống kê những số liệu
liên quan đến quá trình là việc: Đếm số dòng mã, số dòng mới thêm vào, số dòng
mới sửa chữa, số dòng comment, tần suất sử dụng của một thành phần nào
đó…Chúng cũng có khả năng tổng hợp thông tin và tạo ra báo cáo cho tồn bộ
project. Ví dụ: Build Comment Webpage tạo ra report dạng HTML, tổng hợp
thông tin chi tiết của lớp, thuộc tính, phương thức và thêm comment cho từng
thành phần.

21


×