Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 31 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
31
Dung lượng
667,9 KB
Nội dung
Báocáomônhọccác vấn
đề hiệnđạicôngnghệ phần
mềm
Bộ môn : Cácvấnđềhiệnđạicôngnghệphần mềm.
LỜI CẢM ƠN
Để hoàn thành báocáomônhọccácvấnđềhiệnđạicôngnghệphần mềm
một cách hoàn chỉnh, chúng em xin bày tỏ lòng cảm ơn chân thành đến các
thầy cô đã hướng dẫn chúng em tại trường ĐạiHọcCông Nghệ. Đặc biệt là
thầyĐặng Đức Hạnh và cô Vũ Diệu Hương, thầy cô đã trực tiếp hướng dẫn
tận tình, sửa chữa và đóng góp nhiều ý kiến quý báu giúp chúng em hoàn
thành tốt báocáomônhọc của mình.
Lời cảm ơn chân thành và sâu sắc, chúng em xin gửi đến gia đình, đã
luôn sát cánh và động viên chúng em trong những giai đoạn khó khăn nhất.
Chân thành cảm ơn đến các bạn trong lớp đã hỗ trợ để chúng em có
thể hoàn thành tốt công việc được giao.
Chúng em xin chân thành biết ơn sự tận tình dạy dỗ của tất cả các quý
thầy cô Khoa Côngnghệ Thông tin – Trường ĐạihọcCôngNghệ Thông
Tin – Đạihọc Quốc gia Hà Nội.
Chúng cũng xin chân thành gửi lời cảm ơn đến tất cả các thầy cô đã
giảng dạy chúng em thời gian qua, đã truyền đạt và trang bị cho chúng em
những kinh nghiệm, kiến thức chuyên môn, giúp chúng em mở rộng tầm nhìn
khi thâm nhập vào thực tế. chúng em xin hứa sẽ không ngừng phấn đấu nỗ
lực vươn lên trong học tập và công tác sau này.
2
Bộ môn : Cácvấnđềhiệnđạicôngnghệphần mềm.
Phụ lục
3
Bộ môn : Cácvấnđềhiệnđạicôngnghệphần mềm.
CHƯƠNG 1
GIỚI THIỆU
1.1 Đặt vấn đề
Trong cáccông ty phát triển phầnmềm hầu hết công việc kiểm thử của
kiểm thử viên được thực hiện thủ công bằng tay. Trong khi đó số lượng tình
huống kiểm tra quá nhiều mà các kiểm thử viên không thể hoàn tất bằng tay
trong thời gian cụ thể nào đó. Hoặc khi nhóm lập trình đưa ra nhiều phiên bản
phần mềm liên tiếp để kiểm tra. Thực tế cho thấy việc đưa ra các phiên bản
phần mềm có thể là hàng ngày, mỗi phiên bản bao gồm những tính năng mới,
hoặc tính năng cũ được sửa lỗi hay nâng cấp. Việc bổ sung hoặc sửa lỗi code
cho những tính năng ở phiên bản mới có thể làm cho những tính năng khác đã
kiểm tra tốt chạy sai mặc dù phần code của nó không hề chỉnh sửa. Để khắc
phục điều này, đối với từng phiên bản, kiểm thử viên không chỉ kiểm tra chức
năng mới hoặc được sửa, mà phải kiểm tra lại tất cả những tính năng đã kiểm
tra tốt trước đó. Điều này khó khả thi về mặt thời gian nếu kiểm tra thông
thường. Để giải quyết vấnđề này chúng ta áp dụng kỹ thuật kiểm thử dựa trên
mô hình cho quá trình sinh các ca kiểm thử tự động. Nhưng làm sao để thực
hiện được quá trình sinh các ca kiểm thử tự động chúng ta phải áp dụng khá
nhiều cáccôngnghệ sẵn có và thông dụng nhất. Ở đây chúng em xin giới
thiệu mã nhúng C vào mô tả Promela và trình bày công cụ Spin để sinh ra các
ca kiểm thử tự động từ đó áp dụng vào một bài toán cụ thể.
Trong báocáo này chúng em tập trung trình bày về việc nghiên cứu
kiểm thử dựa trên mô hình và ứng dụng công cụ Spin vào việc tự động sinh
các ca kiểm thử: Xây dựng mô hình hệ thốngvà thực nghiệm. Bên cạnh đó
chúng em cũng giới thiệu qua về trình soạn thảo Emac, một công cụ lập trình
khá hay và ra đời từ rất sớm, chạy được trên nhiều hệ điều hành thông dụng.
1.2 Nội dung báocáomôn học
4
Bộ môn : Cácvấnđềhiệnđạicôngnghệphần mềm.
Bài báocáo trình bày ngôn ngữ Promela vào thiết kế Promela và áp
dụng kĩ thuật sử dụng công cụ Spin là hai nội dung quan trong nhất của quá
trình sinh ca kiểm thử tự động.
Đề xuất bài toán cụ thể để thực hiệncông việc Demo một chương trình
nhỏ. Từ đó đem áp dụng vào phục vụ cho việc kiểm chứng phần mềm.
Xây dựng tài liệu hướng dẫn về ngôn ngữ Promela, công cụ Spin, trình
soạn thảo Emac phục vụ cho việc nghiên cứu, giảng dậy và ứng dụng thực
tiễn.
1.3 Cấu trúc báocáomôn học
Các phần còn lại của khóa luận có cấu trúc như sau:
Chương 2: Trình bày các khái niệm về ngôn ngữ mô hình promela,
bao gồm các định nghĩa cơ bản về khai báo biến và kiểu, định danh, hằng
số, biểu thức, tiến trình.
Chương 3: Giới thiệu công cụ Spin, cấu trúc cú pháp lệnh, tham số
lệnh và chức năng của nó.
Chương 4: Giới thiệu công cụ soạn thảo Emacs.
Chương 5: Tóm tắt các kết quả đã đạt được, kết luận, những hạn chế
và hướng nghiên cứu phát triển trong tương lai.
5
Bộ môn : Cácvấnđềhiệnđạicôngnghệphần mềm.
CHƯƠNG 2
TRÌNH BÀY KHÁI NIỆM MÔ HÌNH PROMELA
Chương này sẽ lần lượt trình bày những khái niệm cơ bản về mô hình
Promela. Khái niệm cụ thể về cấu trúc cú pháp lệnh, thủ tục hàm, cách khai
báo biến trong Promela.
2.1 Khái niệm cơ bản ngôn ngữ Promela
Xây dựng mô hình hệ thống bằng ngôn ngữ Promela là một công đoạn
quan trọng trong kiểm thử dựa trên mô hình, để từ đó có thể dùng công cụ
Spin sinh ra các ca kiểm thử. Ngôn ngữ mô hình Promela có nhiều nét tương
đồng với ngôn ngữ C.
• Định nghĩa Promela (Process meta language )
Promela là ngôn ngữ mô hình dùng để mô tả hệ thống đồng thời [The
Spin Model Checker: Primer and Reference Manual].
Ví dụ: Giao thức mạng, hệ thống điện thoại, các chương trình giao tiếp
đa luồng,…
• Cấu trúc chương trình Promela
Một chương trình Promela cơ bản gồm:
Khai báo kiểu.
Khai báo biến.
Khai báo tiến trình.
[init process].
// Các khai báo kiểu và biến
mtype = {MSG, ACK};
chan toS =
chan toR =
bool flag;
// Một tiến trình
proctype Sender() {
// Thân một tiến trình
}
6
Bộ môn : Cácvấnđềhiệnđạicôngnghệphần mềm.
proctype Receiver() {
}
// Tiến trình init
init {
// Tạo một tiến trình
}
Giống như nhiều ngôn ngữ lập trình khác, Promela yêu cầu các biến
phải được khai báo trước khi chúng có thể được sử dụng. Khai báo biến theo
phong cách của ngôn ngữ lập trình C. Theo mặc định tất cả các biến của các
loại biến cơ bản được bắt đầu từ 0. Cũng như trong C thì 0 được coi như sai
và khác 0 được coi là đúng. Một biến có thể là biến toàn cục hoặc là biến địa
phương của mỗi tiến trình.
!""
#$ %
"
!
"
%
%
&
!
&
'
• ($)
int ii;
bit bb;
bb = 1;
ii = 2;
• *+,*
Records (structs): Có thể tìm ra xung đột khi chạy
Typedef record{
short f1;
byte f2;
}
7
Bộ môn : Cácvấnđềhiệnđạicôngnghệphần mềm.
Truy cập như C
Record rr;
rr.f1 = …
•
/ *0*+,*$1#)2
) 3-)45
61789:)-/ -)4%#;<2
) 35) 35) 3-)4%5
• (<
Một bộ các hằng số tượng trưng được khai báo như sau:
mtype = {LINE_CLEAR, TRAIN_ON_LINE, LINE_BLOCKED}
• <$=>$) ?2@1A*#BC9)9D)**EF$
>,G$G2
chan <name> = [<dim>] of <type1>,<type2>, <typen>;
>,G$GBE$H-/(<$=I?
chan-name ! <expr1>, <expr2> <exprn>;
>,G$G$JE$H-/(<$=K?
chan-name ? <expr1>, <expr2> <exprn>;
& @$)$L8#;$M*
• @$)$
@$)$*0$-/*$*-/(7N
• L8#;
L8#;-/*$O(7N9:*$-/#;<$JGG$P
L8#;1A1*0$91A*9$$Q)$1#)2
R S TUVVV
• $M*
8
Bộ môn : Cácvấnđềhiệnđạicôngnghệphần mềm.
Một biểu thức được xây dựng từ các biến, hằng số và sử dụng các toán
tử sau đây:
+, -, *, /, %, , ++,
>, >=, <, <=, ==, !=,
&&, ||, !,
&, |, ~, ^, >>, <<,
!, ?,
(), [],
W XF$
XF$-/$$G$Y*Z)$$;91A*9$$Q)[**9;
1A*C*
• Một tiến trình được khai báo bắt đầu bằng một từ khóa proctype và
gồm có:
Tên
Danh sách thông số chính
Khai báo biến cục bộ
Thân chương trình
• Cú pháp của một khai báo tiến trình
proctype name( /* formal parameter list */ )
{
/* các khai báo địa phương và các lệnh */
…
}
/* và */ quy định giới hạn chú thích trong promela
• Tiến trình init
Tất cả các chương trình promela đều cần một tiến trình init nó
giống như hàm main() trong ngôn ngữ C. Việc thực thi một chương
trình promela được bắt đầu từ tiến trình init.
9
Bộ môn : Cácvấnđềhiệnđạicôngnghệphần mềm.
Một tiến trình init có dạng:
init { /* Các khai báo địa phương và các biểu thức. */ }
Đơn giản nhất có thể là chương trình promela có dạng:
init { skip }
Skip có nghĩa là không có biểu thức nào trong tiến trình init;
Mỗi tiến trình được định nghĩa bởi một proctype, nó được thực thi đồng
thời với tất cả các tiến trình khác, nó giao tiếp với các tiến trình khác thông qua
việc sử dụng các biến côngcộng hoặc các kênh. Tiến trình thực thi sau khi thực
hiện hàm run.
/#;\C9].EF$
G*G $ =?G^=_L _?
G*G `=?G^=_ab_?
$ =?c`=?
" 6$*+,*$d- )
• O$91A*e**$f$)-/+*$+-G$g=c?
/#;$*+,*E<
• h(G2($i$N*$*$j$)9D($EF$kf
• d^2l)-$F$
• T## =m4G?2hBC(-)m4G$M*$AG
=nm4Go$F$N*$#pO?
• >+,*qG=?
>,G$G2
if
:: choice1 -> stat1.1; stat1.2;
:: choice2 -> stat2.1; stat2.2;
::
:: choicen -> statn.1; statn.2;
fi;
10
[...]... vấnđềhiệnđại công nghệphầnmềm Hình 3: khi sử dụng từ khóa D-Step Khác với từ khóa Atomic, từ khóa D-Step thực thi một mã lênh nếu một bước hay giao dịch nào bị khóa thì chương trình sẽ bị lỗi Các trạng thái trung gian sẽ không được khởi tạo • Một chương trình đơn giản để kiểm tra chức năng khi sử dụng các từ khóa o Mã lệnh: Khi không sử dụng từ khóa nào 15 Bộ môn : Cácvấnđềhiệnđạicôngnghệ phần. .. qua tất cả các cửa sổ, từ trái sang phải và trên xuống dưới C-x 1: delete-other-windows Xoá tất cả các cửa sổ khác, trừ cửa sổ hiện tại Lệnh này không xoá các bộ đệm và tập tin liên hệ với cửa sổ bị xoá 27 Bộ môn : Cácvấnđềhiệnđạicôngnghệphầnmềm C-x 0: delete-window Xoá cửa sổ hiện tại, thay đổi kích thước các cửa sổ khác cho thích hợp C-x 2: split-window-vertically Chia cửa sổ hiện tại thành... tin Top: Phần đầu của tập tin Bot: Phần cuối của tập tin NN%: Phần trăm tập tin trên cửa sổ 28 Bộ môn : Cácvấnđềhiệnđạicôngnghệphầnmềm CHƯƠNG 5 KẾT LUẬN Trong báocáo này chúng em đã tìm hiểu lý thuyết cơ bản về ngôn ngữ mô hình Promela từ đó áp dụng cho việc xây dựng một mô hình của hệ thống Sau khi xây dựng được mô hình của hệ thống, kết hợp nhúng mã C vào mô tả promela và sử dụng công cụ... thì chương trình phải chạy hết đến trạng thái x3 rồi mới xen kẽ tới các trạng thái khác được Dựa vào đặc điểm này mà người kiểm thử có thể loại bớt đi được khá nhiều các trạng thái không cần thiết 17 Bộ môn : Cácvấnđềhiệnđạicôngnghệphầnmềm CHƯƠNG 3 3.1 TRÌNH BÀY CÔNG CỤ SPIN, THAM SỐ, CÚ PHÁP LỆNH Sơ lược về công cụ spin SPIN là công cụ mã nguồn mở, phổ biến và được sử dụng bởi hàng ngàn người... extraction from C code Multi-core & swarm support Inline LTL formula parallel bfs Một số yếu tố thành công của SPIN Cú pháp thực hiện (bằng cách sử dụng tựa ngôn ngữ C) 18 Bộ môn : Cácvấnđềhiệnđại công nghệphầnmềm Giao diện người dùng đồ họa đẹp Xspin Không chỉ là một công cụ nghiên cứu, mà còn là công cụ hỗ trợ Chứa nhiều hơn so với nhiều thập kỷ nghiên cứu kéo xác minh máy tính tiên tiến AIDEC... đương, C-[ 4.4 Giao diện trình soạn thảo Emacs 24 Bộ môn : Cácvấnđềhiệnđại công nghệphầnmềm Hình 8: Giao diện trình soạn thảo Emacs 4.5 Cấu trúc lệnh Emac Đối với Emacs, mỗi gõ phím (keystroke) thực ra là một lệnh, ngay cả các gõ phím đơn giản như các chữ cái A và z: in các ký tự là lệnh điền chúng vào Các ký tự không in (non-printing) là các lệnh soạn thảo, tức dùng để di chuyển con trỏ, cuộn... thể mất các thay đổi đã thực hiện nếu bạn không lưu trước) • Cửa sổ Cửa sổ là nơi bạn xem bộ đệm Vì giới hạn thực thể của màn hình, có thể bạn không có chỗ để xem tất cả các bộ đệm cùng lúc Bạn có thể chia nhỏ màn hình, ngang hay dọc, thành nhiều cửa sổ, mỗi cửa sổ xem một bộ đệm khác nhau Cũng có thể có vài cửa sổ để xem cácphần khác nhau của 26 Bộ môn : Cácvấnđềhiệnđại công nghệphầnmềm cùng... Bộ môn : Cácvấnđềhiệnđại công nghệphầnmềm Hình 2: khi sử dụng từ khóa Atomic Mặc dù câu lệnh Atomic sẽ không được chạy xen kẽ nhau nhưng các trạng thái trung gian vẫn sẽ được khởi tạo và lưu trữ trong stack Do đó khi có một trạng thái trung gian (trạng thái A) bị khóa , ngắt thì lời gọi Atomic sẽ bị mất và các trạng thái trung gian sẽ được đến thăm o Khi sử dụng từ khóa D-STEP 14 Bộ môn : Các vấn. .. khóa trong chương trình 12 Bộ môn : Cácvấnđềhiệnđạicôngnghệphầnmềm Hình 1: Khi không sử dụng từ khóa Các trạng thái sinh ra khi không sử dụng từ khóa sẽ được tăng lên theo công bội Trong trường hợp này tất cả các trạng thái có thể tạo được từ chương trình đều có thể sinh ra Do đó những trạng thái không cần thiết mà vẫn được lưu trữ trong bộ nhớ sẽ làm lãng phí một phần bộ nhớ và số lượng trạng... C:\cygwin\bin 22 Bộ môn : Cácvấnđềhiệnđạicôngnghệphầnmềm CHƯƠNG 4 GIỚI THIỆU CÔNG CỤ SOẠN THẢO EMACS Emacs là tên của một họ các trình soạn thảo văn bản Đặc trưng bởi khả năng mở rộng của nó Phát triển bắt đầu vào giữa những năm 1970 và tiếp tục phát triển tới năm 2012 Emacs có hơn 2.000 lệnh được xây dựng và cho phép người sử dụng kết hợp các lệnh này vào macro để tự động hóa công việc, đặc biệt . Báo cáo môn học các vấn
đề hiện đại công nghệ phần
mềm
Bộ môn : Các vấn đề hiện đại công nghệ phần mềm.
LỜI CẢM ƠN
Để hoàn thành báo cáo môn học các vấn. môn : Các vấn đề hiện đại công nghệ phần mềm.
Phụ lục
3
Bộ môn : Các vấn đề hiện đại công nghệ phần mềm.
CHƯƠNG 1
GIỚI THIỆU
1.1 Đặt vấn đề
Trong các công