Trong các công ty phát triển phần mề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...
Bộ môn : Các vấ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 vấn đề đại công nghệ phần mềm cách hoàn chỉnh, chúng em xin bày tỏ lịng cảm ơn chân thành đến thầy hướng dẫn chúng em trường Đại Học Công Nghệ Đặc biệt thầy Đặng Đức Hạnh 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 đóng góp nhiều ý kiến q báu giúp chúng em hồn thành tốt báo cáo mơn học Lời cảm ơn chân thành sâu sắc, chúng em xin gửi đến gia đình, ln sát cánh động viên chúng em giai đoạn khó khăn Chân thành cảm ơn đến bạn lớp hỗ trợ để chúng em hồn thành tốt cơng việc giao Chúng em xin chân thành biết ơn tận tình dạy dỗ tất quý thầy cô Khoa Công nghệ Thông tin – Trường Đại học Công Nghệ Thông Tin – Đại học Quốc gia Hà Nội Chúng xin chân thành gửi lời cảm ơn đến tất thầy cô giảng dạy chúng em thời gian qua, truyền đạt trang bị cho chúng em kinh nghiệm, kiến thức chuyên môn, giúp chúng em mở rộng tầm nhìn thâm nhập vào thực tế chúng em xin hứa không ngừng phấn đấu nỗ lực vươn lên học tập công tác sau Bộ môn : Các vấn đề đại công nghệ phần mềm Phụ lục Bộ môn : Các vấn đề đại công nghệ phần mềm CHƯƠNG GIỚI THIỆU 1.1 Đặt vấn đề Trong công ty phát triển phần mềm hầu hết công việc kiểm thử kiểm thử viên thực thủ công tay Trong số lượng tình kiểm tra q nhiều mà kiểm thử viên khơng thể hồn tất tay thời gian cụ thể Hoặc nhóm lập trình đưa nhiều phiên phần mềm liên tiếp để kiểm tra Thực tế cho thấy việc đưa phiên phần mềm hàng ngày, phiên bao gồm tính mới, tính cũ sửa lỗi hay nâng cấp Việc bổ sung sửa lỗi code cho tính phiên làm cho tính khác kiểm tra tốt chạy sai phần code khơng chỉnh sửa Để khắc phục điều này, phiên bản, kiểm thử viên không kiểm tra chức sửa, mà phải kiểm tra lại tất tính kiểm tra tốt trước Điều khó khả thi mặt thời gian kiểm tra thông thường Để giải vấn đề áp dụng kỹ thuật kiểm thử dựa mơ hình cho q trình sinh ca kiểm thử tự động Nhưng để thực trình sinh ca kiểm thử tự động phải áp dụng nhiều công nghệ sẵn có thơng dụng Ở chúng em xin giới thiệu mã nhúng C vào mô tả Promela trình bày cơng cụ Spin để sinh ca kiểm thử tự động từ áp dụng vào toán cụ thể Trong báo cáo chúng em tập trung trình bày việc nghiên cứu kiểm thử dựa mơ hình ứng dụng cơng cụ Spin vào việc tự động sinh ca kiểm thử: Xây dựng mơ hình hệ thống thực nghiệm Bên cạnh chúng em giới thiệu qua trình soạn thảo Emac, cơng cụ lập trình hay đời từ sớm, chạy nhiều hệ điều hành thông dụng 1.2 Nội dung báo cáo môn học Bộ môn : Các vấn đề đại cơng nghệ phần mềm Bài báo cáo trình bày ngơn ngữ Promela vào thiết kế Promela áp dụng kĩ thuật sử dụng công cụ Spin hai nội dung quan trình sinh ca kiểm thử tự động Đề xuất toán cụ thể để thực cơng việc Demo 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 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 ứng dụng thực tiễn 1.3 Cấu trúc báo cáo môn học Các phần cịn lại khóa luận có cấu trúc sau: Chương 2: Trình bày khái niệm ngơn ngữ mơ hình promela, bao gồm định nghĩa khai báo biến kiểu, định danh, 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 chức Chương 4: Giới thiệu cơng cụ soạn thảo Emacs Chương 5: Tóm tắt kết đạt được, kết luận, hạn chế hướng nghiên cứu phát triển tương lai Bộ môn : Các vấn đề đại công nghệ phần mềm CHƯƠNG TRÌNH BÀY KHÁI NIỆM MƠ HÌNH PROMELA Chương trình bày khái niệm mơ hình Promela Khái niệm cụ thể cấu trúc cú pháp lệnh, thủ tục hàm, cách khai báo biến Promela 2.1 Khái niệm ngơn ngữ Promela Xây dựng mơ hình hệ thống ngôn ngữ Promela công đoạn quan trọng kiểm thử dựa mơ hình, để từ dùng công cụ Spin sinh 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 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, 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 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 biến mtype = {MSG, ACK}; chan toS = chan toR = bool flag; // Một tiến trình proctype Sender() { // Thân tiến trình } Bộ mơn : Các vấn đề đại công nghệ phần mềm proctype Receiver() { } // Tiến trình init init { // Tạo tiến trình } 2.2 Biến Kiểu Giống nhiều ngơn ngữ lập trình khác, Promela u cầu biến phải khai báo trước chúng sử dụng Khai báo biến theo phong cách ngơn ngữ lập trình C Theo mặc định tất biến loại biến Cũng C coi sai khác coi Một biến biến tồn cục biến địa phương tiến trình Kiểu liệu Kiều Miền giá trị bit or bool { 0, 1} byte 0…255 short -215 … 215 - int -231 … 231 – • Kiểu khai báo int ii; bit bb; bb = 1; ii = 2; • Kiểu cấu trúc Records (structs): Có thể tìm xung đột chạy Typedef record{ short f1; byte f2; } Bộ môn : Các vấn đề đại công nghệ phần mềm Truy cập C Record rr.f1 = … rr; • Kiểu mảng Một mảng có cấu trúc sau: int table[max] Lưu ý điều tạo mảng max-1 số nguyên: table[0], table[1], table[max-1] • Kiểu liệt kê Một số tượng trưng khai báo sau: mtype = {LINE_CLEAR, TRAIN_ON_LINE, LINE_BLOCKED} • Kênh (Chanel): Được sử dụng để trao đổi liệu tiến trình Cú pháp: chan = [] of ,, ; Cú pháp gửi tin nhắn kênh (!) chan-name ! , ; Cú pháp nhận tin nhắn kênh (?) chan-name ? , ; 2.3 Định danh, Hằng số Biểu thức • Định danh Định danh chữ cái, ký tự • Hằng số Hằng số chuỗi ký tự đại diện cho số nguyên thập phân Hằng số tượng trưng định nghĩa sau: #define MAX 999 • Biểu thức Bộ môn : Các vấn đề đại công nghệ phần mềm Một biểu thức xây dựng từ biến, số sử dụng toán tử sau đây: +, -, *, /, %, , ++, >, >=, , stat2.1; stat2.2; :: :: choicen -> statn.1; statn.2; fi; Lựa chọn điều kiện thực thi • Cấu trúc so sánh (if) :: choice1 -> stat1.1; stat1.2; :: choice2 -> stat2.1; stat2.2; :: :: choicen -> statn.1; statn.2; od; Lựa chọn lặp lặp lại nhiều lần dừng gặp break • Cú pháp Active Từ khóa Active tiền tố cho thủ tục khai báo hàm Hiệu từ khóa active tạo liên kết Prototype hệ thống ban đầu Nhiều trường hợp khai báo Prototype tạo cách sử dụng mảng hậu tố tùy chọn Ví dụ : active [4] proctype hello(){ printf("Hello") } active [7] proctype world(){ printf("World\n") } Lưu ý: trường hợp tạo trường hợp “Hello” trường hợp “World” • Cú pháp Atomic Có thể sử dụng tới nhóm lệnh thơng báo atomic Các lệnh thực đơn lẻ không xen kẽ với lệnh tiến trình khác Tự động phá vỡ lệnh bị khóa lệnh tiến trình khác 10 Bộ môn : Các vấn đề đại công nghệ phần mềm int x=0 int y=0; int z=0 proctype A(){ atomic{ printf("gia tri x1= %d\n", 1); printf("gia tri y1= %d\n", 1); printf("gia tri z1= %d\n", 1); } } proctype B(){ printf("gia tri x2= %d\n", 2); printf("gia tri y2= %d\n", 2); printf("gia tri z2= %d\n", 2); } init { run A(); run B(); } Hình 5: Khi sử dụng từ khóa Atomic, D-step Trong trường hợp số trạng thái sinh giảm bắt đầu đến trạng thái x1 chương trình phải chạy hết đến trạng thái x3 xen kẽ tới trạng thái khác Dựa vào đặc điểm mà người kiểm thử loại bớt nhiều trạng thái không cần thiết 16 Bộ môn : Các vấn đề đại công nghệ phần mềm CHƯƠNG 3.1 TRÌNH BÀY CƠNG CỤ SPIN, THAM SỐ, CÚ PHÁP LỆNH Sơ lược công cụ spin SPIN công cụ mã nguồn mở, phổ biến sử dụng hàng ngàn người toàn cầu SPIN sử dụng cho việc xác minh thẩm định hệ thống phân phối phần mềm Nó cung cấp giả lập cho phép nhà thiết kế đạt kết phản hồi từ hệ thống mơ hình họ Những kết phản hồi đóng vai trị quan trọng hiểu biết nhà thiết kế hệ thống trước họ đầu tư vào phân tích thức 3.2 Lịch sử phát triển công cụ SPIN Từ năm 1980 Spin phát triển Bell Labs nhóm Unix Phần mềm phát triển rộng rãi từ năm 1991 Tháng năm 2002 Spin trao giải thưởng phần mềm uy tín cho năm 2001 ACM Các version chính: năm 1991 1.0 (initial version) tới năm 2002 có SPIN version 4.0 (automata extration from C code) 3.3 1.0 2.0 3.0 Jan 1991 Jan 1995 Apr 1997 4.0 Late 2002 5.0 6.0 Oct 2007 Dec 2010 Initial version (Holzmann 1991 Partial order reduction Minimised automaton representation Ax: automata extraction from C code Multi-core & swarm support Inline LTL formula parallel bfs Một số yếu tố thành công SPIN Cú pháp thực (bằng cách sử dụng tựa ngôn ngữ C) 17 Bộ môn : Các vấn đề đại công nghệ phần mềm Giao diện người dùng đồ họa đẹp Xspin Không công cụ nghiên cứu, mà cịn cơng cụ hỗ trợ Chứa nhiều 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 (nhiều thuật tốn tối ưu hóa) 3.4 Kiến trúc SPIN – Cấp độ tổ chức Spin Hình 6: Cấp độ tổ chức SPIN 3.4 Cơng cụ dịng lệnh 3.4.1 Cú pháp Spin Một số câu lênh SPIN Spin –a [-m] [-Pcpp] file spin [-bglmprsv] [-J] [-qN] [-nN] [-Pcpp] file spin -c [-t] [-Pcpp] file spin -d [-Pcpp] file spin -f LTL spin -F file 18 Bộ môn : Các vấn đề đại công nghệ phần mềm spin -i [-bglmprsv] [-J] [-qN] [-Pcpp] file spin -M [-t] [-Pcpp] file spin -o1 -o2 -o3 file spin -t[N] [-bglmprsv] [-J] [-qN] [-Pcpp] file spin –V 3.4.2 Tùy chọn chức lệnh Bắt đầu việc viết chương trình có vai trị mơ hình hệ thống cần kiểm thử (được viết ngơn ngữ Promela) Ví dụ: trình bày nhóm em, em sử dụng counter.plm làm file đầu vào Nó đóng vai trị mơ hình hệ thống kiểm thử • Gỡ lỗi chương trình Chạy câu lệnh sau: $spin –c spec.pml $spin –p spec.pml Hai câu lệnh chạy mô mô hình Câu lệnh tính tốn cho ta đầu hệ thống từ đầu vào khai báo mơ hình Câu lệnh thứ hai cho ta trình mà hệ thống thay đổi theo chạy mơ hình Thực debugged dịng lệnh: $spin –a counter.pml # generate verifier Đầu file pan.c mơ tả hệ thống ngơn ngữ C hồn tồn tự động • Biên dịch file pan.c Lúc này, định quan trọng chọn xác minh đầy đủ (Exhaustive verification) (CPU-time or memory) xác minh không đầy đủ (Supertrace verification) Xác minh không đầy đủ (Exhaustive verification) Sẽ tối ưu sử dụng tham số -o2 –o, thời gian chạy xác minh cịn nửa so với cách sử dụng tham số khác $ gcc -O2 -o pan pan.c # default compilation 19 Bộ môn : Các vấn đề đại công nghệ phần mềm Nếu biết phần nhớ vật lý sử dụng sử dụng cú pháp sau: ví dụ có 256 Mb cho việc biên dịch, câu lệnh thực $ gcc -O2 -DMEMLIM=256 -o pan pan.c # memory bound 256Mb Nếu việc xác minh chạy khỏi nhớ, sử dụng nén thay tăng giới hạn nhớ: $ gcc -O2 -DMEMLIM=256 DCOLLAPSE -o pan pan.c # collapse compression Nếu vượt giới hạn nhớ sử dụng lựa chọn thứ hai (Supertrace verification) $ gcc -O2 -DMEMLIM=256 -DBITSTATE -o pan pan.c # supertrace algorithm • Thực việc xác minh tối ưu o Một xác minh đầy đủ $ /pan o Một xác minh không đầy đủ - Đối với chu kì acceptance cycles, sử dụng tham số -a: Đối với chu kì non-progress cycles: $ gcc -O2 -DNP -o pan pan.c Hoặc: $ gcc -O2 -DNP -DBITSTATE -o pan pan.c Tiếp theo là: $ /pan -l - Đối với chu kì non-progress cycles: $ gcc -O2 -DSAFETY -o pan pan.c Hoặc: $ gcc -O2 -DSAFETY -DBITSTATE -o pan pan.c o Có thể xác minh dựa độ xâu tìm kiếm $ / Pan-m100000 Hoặc $ / Pan-m100000 20 Bộ môn : Các vấn đề đại cơng nghệ phần mềm • Sau thực loạt hoạt động xác minh trên, vào file ‘spec.pml.trail ‘ với ‘spec.pml’ tên đầu vào PROMELA để xem lỗi nhận sau debug o Để kiểm tra nguyên nhân gây lỗi sử dụng tham số -t $ Spin-t-c spec.pml $ Spin-t-M spec.pml $ Spin-t-r-s-l-g spec.pml • Sinh test case Mơ hình SPIN file thực thi pan cho test case cách tự động SPIN gán số đầu vào cho tất dòng lệnh Đầu hệ thống với số liệu đầu vào trước liệt kê, giúp theo dõi xảy hệ thống Sử dụng tham số -d để xem thòi gian trình chạy hệ thống $ pan -d # print state machines $ pan -d -d # print full, unoptimized state machines 3.4.3 Một ví dụ đơn giản Code hướng dẫn thực thi gửi kèm tài liệu báo cáo 3.4.4 SPIN công cụ giao diện đồ họa khác Hơn hai thập kỉ nghiên cứu phát triển, SPIN phát triển mạnh mẽ Các cơng cụ có giao diện đồ họa giúp tiếp cận với SPIN đời phát triển không ngừng Phải kể đến jSPIN, iSPIN, xSPIN Mỗi công cụ kể có lợi định để nhà kiểm thử hệ thống lựa chọn cho công việc chun mơn 3.4.5 Hướng dẫn cài đặt SPIN Tải phiên SPIN từ trang chủ http://spinroot.com/spin/Src/index.html Đổi tên file tải thành spin.exe Tải cài đặt trình biên dịch C Trong trình bày này, chúng em sử dụng Cygwin Net Release Setup Program Có thể tải từ địa sau: http://www.cygwin.com/ Copy spin.exe vào thư mục bin, nơi cài đặt Cygwin VD: C:\cygwin\bin 21 Bộ môn : Các vấn đề đại công nghệ phần mềm CHƯƠNG GIỚI THIỆU CÔNG CỤ SOẠN THẢO EMACS Emacs tên họ trình soạn thảo văn Đặc trưng khả mở rộng Phát triển bắt đầu vào năm 1970 tiếp tục phát triển tới năm 2012 Emacs có 2.000 lệnh xây dựng cho phép người sử dụng kết hợp lệnh vào macro để tự động hóa cơng việc, đặc biệt với việc sử dụng Emacs Lisp, biến thể Lisp, cung cấp khả mở rộng sâu 4.1 Khái niệm chức GNU Emacs • GNU Emacs trình soạn thảo văn • Tự chép phân phối lại • Có thể chạy nhiều hệ điều hành • Có thể mở rộng: không thay đổi xác lập cá nhân mà cịn tạo chức 4.2 Các loại trình soạn thảo Emacs Emacs nguyên thuỷ viết ngơn ngữ lập trình trình soạn thảo văn TECO, chạy DEC PDP-10 -11 Emacs cho máy Unix Gosling Emacs, sau thương mại hoá với tên Unipress Emacs GNU Emacs viết Richard Stallman, tác giả TECO Emacs nguyên thuỷ Yêu cầu để trình soạn thảo văn gọi “emacs” mở rộng đầy đủ với ngơn ngữ lập trình thực, khơng đơn ngôn ngữ macro Đối với GNU Emacs, ngôn ngữ Lisp 22 Bộ môn : Các vấn đề đại cơng nghệ phần mềm Hình 7: Q trình phát triển Emacs 4.3 Bộ gõ phím 4.3.1 Bàn phím kí tự Tất lệnh Emacs dùng kí tự ASCII bit 4.3.2 Kí hiệu C-x: Kí tự Control-x, với x phím M-x: Kí tự Meta-x, với x phím C-M-x: Kí tự Control-Meta-x, với x phím RET: Phím return (thực C-m) SPC: Thanh khoảng trắng (space bar) ESC: Phím escape, hay tương đương, C-[ 4.4 Giao diện trình soạn thảo Emacs 23 Bộ môn : Các vấn đề đại công nghệ phần mề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, gõ phím (keystroke) thực lệnh, gõ phím đơn giản chữ A z: in ký tự lệnh điền chúng vào Các ký tự không in (non-printing) lệnh soạn thảo, tức dùng để di chuyển trỏ, cuộn văn bản, xoá chép văn bản, v.v Mỗi lệnh có tên dài, kill-line, delete-backward-char, hay selfinsert-command Các lệnh liên kết (bind) với gõ phím để thuận tiện soạn thảo Mỗi cặp gõ phím lệnh gọi liên kết phím (key binding), gọi tắt liên kết (binding) Bộ liên kết tạo thành lệnh Emacs Tuy nhiên, chúng mở rộng thay đổi tuỳ thích 4.6 Các phím đơn 95 ký tự ASCII in được, chúng liên kết với self-insert-command để điền vào văn gõ.Các ký tự điều khiển: C-a, C-b, : 32 kí tự soạn thảo Meta để sử dụng thêm 128 ký tự nửa ASCII cho lệnh soạn thảo: • M-a, M-b, (cũng có M-A kí tự riêng biệt, để giảm thiểu nhầm lẫn kí tự meta chữ hoa coi kí tự meta chữ thường tương ứng.) • C-M-a (tương đương với M-C-a), (giữ Control Meta đồng thời gõ phím kia.) 24 Bộ mơn : Các vấn đề đại công nghệ phần mềm 4.6 Các phím tiền tố tổ hợp Lệnh tiền tố (prefix command) gõ phím đợi kí tự khác gõ, tạo thành cặp gõ phím liên kết với lệnh Lệnh tiền tố thường nhóm lệnh có liên hệ với Các lệnh tiền tố tiêu chuẩn là: • C-c: Dùng cho lệnh đặc hiệu cho chế độ (mode) cụ thể • C-h: Dùng cho lệnh giúp đỡ • C-x: Chủ yếu dùng cho lệnh thao tác tập tin, đệm cửa sổ Một lệnh lệnh tiền tố liên kết với lệnh tiền tố khác 4.7 Tệp tin, đệm cửa sổ 4.7.1 Tệp tin, đệm cửa sổ Emacs có (thực 4) cấu trúc liệu liên quan mật thiết với nhau: • Tập tin Tập tin tập tin Unix thực đĩa Bạn không biên tập trực tiếp tập tin Emacs đọc tập tin vào đệm viết đệm vào tập tin để lưu • Bộ đệm (buffer) Bộ đệm cấu trúc liệu nội giữ văn bạn thực biên tập Emacs có số đệm thời điểm Hầu hết, khơng phải tất cả, đệm liên hệ với tập tin Bộ đệm có tên; đệm xuất phát từ tập tin gần luôn mang tên tập tin đó, nói đệm đangviếng thăm tập tin Điều có nghĩa bạn lưu đệm, lưu vào tập tin Vào lúc có đệm chọn: đệm mà trỏ phần cứng hoạt động nơi mà lệnh có tác dụng Bộ đệm xố theo ý muốn; xố đệm khơng xố tập tin đĩa (mặc dù bạn thay đổi thực bạn khơng lưu trước) • Cửa sổ Cửa sổ nơi bạn xem đệm Vì giới hạn thực thể hình, bạn khơng có chỗ để xem tất đệm lúc Bạn chia nhỏ hình, ngang hay dọc, thành nhiều cửa sổ, cửa sổ xem 25 Bộ môn : Các vấn đề đại công nghệ phần mềm đệm khác Cũng có vài cửa sổ để xem phần khác đệm Có thể tạo xố cửa sổ tuỳ thích; xố cửa sổ khơng xố đệm liên hệ với cửa sổ • Khung (frame) Khung giống cửa sổ, đối xử thực thể riêng biệt hệ thống cửa sổ X 4.7.2 Lênh thao tác tệp tin C-x C-f: find-file Nhắc nhập tên tập tin đọc tập tin vào đệm cho để biên tập Nếu tập tin biên tập đệm đó, chuyển sang đệm mà khơng đọc tập tin C-x C-s: save-buffer Lưu tập tin, hay xác viết đệm lên đĩa C-x s: save-some-buffers Lưu tất đệm viếng thăm tập tin, truy vấn đưa số tuỳ chọn cho (lưu, khơng lưu, nhìn qua trước lưu nó, v.v) 4.7.3 Lệnh thao tác đệm C-x b: switch-to-buffer Nhắc nhập tên đệm chuyển đệm cửa sổ sang đệm Tạo đệm rỗng tên nhập vào C-x C-b: list-buffers Xuất cửa sổ liệt kê tất đệm với tên, thay đổi hay khơng, kích thước theo byte, chế độ tập tin mà đệm viếng thăm C-x k: kill-buffer Nhắc nhập tên đệm dỡ bỏ toàn cấu trúc liệu cho đệm khỏi Emacs Nếu đệm thay đổi bạn có hội lưu Lệnh khơng xố tập tin liên hệ, có C-x C-q: vc-toggle-read-only Đặt thuộc tính chỉ-đọc đặt thuộc tính đọc-viết chỉ-đọc 4.7.4 Lệnh thao tác cửa sổ C-v: scroll-up Cuộn tới (về cuối tập tin) hình Theo mặc định, Emacs chừa hàng từ hình trước M-v: scroll-down Như C-v, cuộn ngược C-x o: other-window Chuyển sang cửa sổ khác Lặp lặp lại lệnh di chuyển qua tất cửa sổ, từ trái sang phải xuống C-x 1: delete-other-windows Xoá tất cửa sổ khác, trừ cửa sổ Lệnh không xoá đệm tập tin liên hệ với cửa sổ bị xố 26 Bộ mơn : Các vấn đề đại công nghệ phần mềm C-x 0: delete-window Xố cửa sổ tại, thay đổi kích thước cửa sổ khác cho thích hợp C-x 2: split-window-vertically Chia cửa sổ thành hai, theo chiều dọc Lệnh tạo cửa sổ mới, không tạo đệm mới: đệm xem cửa sổ Điều giúp xem phần khác đệm đồng thời C-x 3: split-window-horizontally Tương tự C-x chia cửa sổ theo chiều ngang C-M-v: scroll-other-window Tương tự C-v, cuộn cửa sổ (là cửa sổ mà lệnh C-o chuyển sang) 4.8 Màn hình Màn hình Emacs hồn toàn dành cho văn tập tin, trừ dòng gần cuối hinh dành cho dịng chế độ Dịng hiển thị thơng tin quan trọng, bao gồm: • Trạng thái đệm: thay đổi (cặp dấu sao), chưa thay đổi (dấu gạch ngang), hay đọc (cặp dấu %) • Tên tập tin biên tập (sẽ *scratch* bạn khơng biên tập tập tin nào) • Chế độ (trong dấu ngoặc) • Lượng tập tin xem hình: All: Tất nội dung tập tin Top: Phần đầu tập tin Bot: Phần cuối tập tin NN%: Phần trăm tập tin cửa sổ 27 Bộ môn : Các vấn đề đại công nghệ phần mềm CHƯƠNG KẾT LUẬN Trong báo cáo chúng em tìm hiểu lý thuyết ngơn ngữ mơ hình Promela từ áp dụng cho việc xây dựng mơ hình hệ thống Sau xây dựng mơ hình hệ thống, kết hợp nhúng mã C vào mô tả promela sử dụng công cụ hỗ trợ kiểm thử Spin để tự động sinh ca kiểm thử Bằng cơng việc tìm hiểu nghiên cứu mơ hình Promela công cụ Spin chúng em nắm vững nhiều kiến thức bổ ích kiểm thử phần mềm, áp dụng thực tế vào tốn phức tạp Bên cạnh chúng em cịn biết thêm công cụ soạn thảo- Emacs hay người lập trình viên Tuy nhiên thời gian có hạn nên báo cáo dừng lại việc tìm hiểu mơ hình, cơng cụ để áp dụng vào tốn đơn giản Do cịn nhiều thiếu sót mong q thầy bạn đóng góp ý kiến để nhóm hồn thiện 28 Bộ mơn : Các vấn đề đại công nghệ phần mềm TÀI LIỆU THAM KHẢO [1] Andrew Ireland Distributed Systems Programming F21DS1 Promela School of Mathematical and Computer Sciences, Heriot-Watt University, Edinburgh [2] Gerard Holzmann The Spin Model Checker Primer and Reference Manual Addison Wesley, 2003 [3] http://spinroot.com/spin/Man/README.html, [4] http://spinroot.com/spin/Man/index.html [5] http://www.macs.hw.ac.uk/~air/dsp-spin/ 29 Bộ môn : Các vấn đề đại công nghệ phần mềm 30 ...Bộ môn : Các vấn đề đại công nghệ phần mềm Phụ lục Bộ môn : Các vấn đề đại công nghệ phần mềm CHƯƠNG GIỚI THIỆU 1.1 Đặt vấn đề Trong công ty phát triển phần mềm hầu hết công việc kiểm... thông dụng 1.2 Nội dung báo cáo môn học Bộ môn : Các vấn đề đại công nghệ phần mềm Bài báo cáo trình bày ngơn ngữ Promela vào thiết kế Promela áp dụng kĩ thuật sử dụng công cụ Spin hai nội dung... Tất nội dung tập tin Top: Phần đầu tập tin Bot: Phần cuối tập tin NN%: Phần trăm tập tin cửa sổ 27 Bộ môn : Các vấn đề đại công nghệ phần mềm CHƯƠNG KẾT LUẬN Trong báo cáo chúng em tìm hiểu lý