Báo cáo môn học các vấn đề hiện đại công nghệ phần mềm docx

31 1.1K 16
Báo cáo môn học các vấn đề hiện đại công nghệ phần mềm docx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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 đề hiện đại công nghệ 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 Đại Học Cô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áo cáo môn họ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ô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 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á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 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 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ác công nghệ 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áo cá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áo cáo môn học 4 Bộ môn : Các vấn đề hiệ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 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ện cô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áo cáo mô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ác vấn đề hiện đại công nghệ 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ác vấn đề hiện đại công nghệ 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ác vấn đề hiện đại công nghệ phần mềm. Truy cập như C Record rr; rr.f1 = … •   / *0*+,*$1#)2 ) 3-)45 61789:)-/ -)4%#;<2 ) 35) 35) 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*#BC9)9D)**EF$ >,G$G2 chan <name> = [<dim>] of <type1>,<type2>, <typen>; >,G$GBE$H-/(<$=I? chan-name ! <expr1>, <expr2> <exprn>; >,G$G$JE$H-/(<$=K? chan-name ? <expr1>, <expr2> <exprn>; & @$)$L8#;$M* • @$)$ @$)$*0$-/*$*-/(7N • L8#; L8#;-/*$O(7N9:*$-/#;<$JGG$P L8#;1A1*0$91A*9$$Q)$1#)2 R S TUVVV • $M* 8 Bộ môn : Các vấn đề hiện đại công nghệ 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 XF$ XF$-/$$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ác vấn đề hiện đại công nghệ 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ông cộng hoặc các kênh. Tiến trình thực thi sau khi thực hiện hàm run. /#;\C9].EF$ G*G $ =?G^=_L _? G*G `=?G^=_ab_? $ =?c`=? " 6$*+,*$d- ) • O$91A*e**$f$)-/+*$+-G$g=c? /#;$*+,*E< • h(G2($i$N*$*$j$)9D($EF$kf • d^2l)-$F$ • T## =m4G?2hBC(-)m4G$M*$AG =nm4Go$F$N*$#pO? • >+,*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ần mề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ác vấn đề hiện đại công nghệ 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ác vấn đề hiện đại công nghệ phần mề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ác vấn đề hiện đại công nghệ phần mềm CHƯƠNG 5 KẾT LUẬN Trong báo cá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ác vấn đề hiện đại công nghệ phần mề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ác vấn đề hiện đại công nghệ phần mề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ác vấn đề hiệ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, 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ác phần khác nhau của 26 Bộ môn : Các vấn đề hiện đại công nghệ phần mềm cùng... Bộ môn : Các vấn đề hiện đại công nghệ phần mề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ác vấn đề hiện đại công nghệ phần mề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ác vấn đề hiện đại công nghệ phần mề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

Ngày đăng: 06/03/2014, 05:21

Từ khóa liên quan

Mục lục

  • LỜI CẢM ƠN

  • CHƯƠNG 1 GIỚI THIỆU

    • 1.1 Đặt vấn đề

    • 1.2 Nội dung báo cáo môn học

    • 1.3 Cấu trúc báo cáo môn học

    • 2.1 Khái niệm cơ bản ngôn ngữ Promela

    • CHƯƠNG 5 KẾT LUẬN

    • TÀI LIỆU THAM KHẢO

Tài liệu cùng người dùng

Tài liệu liên quan