1. Trang chủ
  2. » Công Nghệ Thông Tin

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

32 1,1K 16
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Báo cáo môn học Các vấn đề hiện đại công nghệ phần mềm
Người hướng dẫn Thầy Đặng Đức Hạnh, Cô Vũ Diệu Hương
Trường học Trường Đại học Công Nghệ Thông Tin – Đại học Quốc gia Hà Nội
Chuyên ngành Các vấn đề hiện đại công nghệ phần mềm
Thể loại Báo cáo môn học
Thành phố Hà Nội
Định dạng
Số trang 32
Dung lượng 667,9 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ở đây chúng em xin giớithiệ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

Trang 1

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

nghệ phần mềm

Trang 2

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.

Trang 3

Ph l c ụ lục ụ lục

LỜI CẢM ƠN 1

CHƯƠNG 1 GIỚI THIỆU Error! Bookmark not defined 1.1Đặt vấn đề Error! Bookmark not defined 1.2Nội dung báo cáo môn học Error! Bookmark not defined 1.3Cấu trúc báo cáo môn học Error! Bookmark not defined. CHƯƠNG 2 TRÌNH BÀY KHÁI NIỆM MÔ HÌNH PROMELA 5

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

2.2 Biến và Kiểu 6

2.3 Định danh, Hằng số và Biểu thức 7

2.4 Tiến trình 8

2.5 Lệnh và cấu trúc lệnh Promela 9

2.6 Sự khác biệt khi sử dụng 2 từ khóa Atomic, D-step trong bài toán cụ thể 10

CHƯƠNG 3 TRÌNH BÀY CÔNG CỤ SPIN, THAM SỐ, CÚ PHÁP LỆNH 17

3.1 Sơ lược về công cụ spin 17

3.2 Lịch sử phát triển công cụ SPIN 17

3.3 Một số yếu tố thành công của SPIN 17

3.4 Kiến trúc SPIN – Cấp độ tổ chức Spin 18

3.4 Công cụ dòng lệnh 18

CHƯƠNG 4 GIỚI THIỆU CÔNG CỤ SOẠN THẢO EMACS 21

4.1 Khái niệm và chức năng của GNU Emacs 21

4.2 Các loại trình soạn thảo Emacs 22

4.4 Bộ gõ 23

4.4 Giao diện trình soạn thảo Emacs 23

4.6 Cấu trúc lệnh Emac 24

4.5 Các phím đơn 24

Trang 4

4.6 Các phím tiền tố và tổ hợp 25

CHƯƠNG 5 KẾT LUẬN Error! Bookmark not defined TÀI LIỆU THAM KHẢO Error! Bookmark not defined.

Trang 5

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ủakiểm thử viên được thực hiện thủ công bằng tay Trong khi đó số lượng tìnhhuống kiểm tra quá nhiều mà các kiểm thử viên không thể hoàn tất bằng taytrong thời gian cụ thể nào đó Hoặc khi nhóm lập trình đưa ra nhiều phiên bảnphầ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ảnphầ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 codecho 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ắcphụ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ứcnă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ểmtra tốt trước đó Điều này khó khả thi về mặt thời gian nếu kiểm tra thôngthườ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ựchiệ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ớithiệ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ứukiểm thử dựa trên mô hình và ứng dụng công cụ Spin vào việc tự động sinhcá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ìnhkhá 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

Trang 6

Bài báo cáo trình bày ngôn ngữ Promela vào thiết kế Promela và ápdụ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ìnhnhỏ 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ìnhsoạn thảo Emac phục vụ cho việc nghiên cứu, giảng dậy và ứng dụng thựctiễ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

Trang 7

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ìnhPromela Khái niệm cụ thể về cấu trúc cú pháp lệnh, thủ tục hàm, cách khaibá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ạnquan 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

Trang 8

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 địaphương của mỗi tiến trình.

Trang 9

Lưu ý rằng điều này tạo ra một mảng max-1 số nguyên:

table[0], table[1], table[max-1]

• Kiểu liệt kê

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}

• Kênh (Chanel): Được sử dụng để trao đổi dữ liệu giữa các tiến trình

Cú pháp:

chan <name> = [<dim>] of <type1>,<type2>, <typen>;

Cú pháp gửi tin nhắn trong một kênh (!)

chan-name ! <expr1>, <expr2> <exprn>;

Cú pháp nhận tin nhắn trong một kênh (?)

chan-name ? <expr1>, <expr2> <exprn>;

Trang 10

 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

Một tiến trình init có dạng:

Trang 11

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 đồngthờ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 quaviệ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ựchiện hàm run

Một số ví dụ đơn giản về tiến trình

proctype hello(){ printf("Hello") }

proctype world(){ printf("World\n") }

init { run hello(); run world () }

2.5 Lệnh và cấu trúc lệnh Promela

 Mỗi lệnh được ngăn cách với nhau một dấu chấm phẩy (;)

Một số lệnh và cấu trúc tiêu biểu

• Skip: không thực hiện, chỉ thay đổi khi tiến trình gọi tới

:: choice1 -> stat1.1; stat1.2;

:: choice2 -> stat2.1; stat2.2;

::

:: choicen -> statn.1; statn.2;

fi;

Trang 12

Lựa chọn một trong các điều kiện thực thi

 Cấu trúc so sánh (if)

do

:: choice1 -> stat1.1; stat1.2;

:: choice2 -> stat2.1; stat2.2;

active [4] proctype hello(){ printf("Hello") }

active [7] proctype world(){ printf("World\n") }

Lưu ý: trường hợp này sẽ tạo ra 4 trường hợp của “Hello” và

7 trường hợp của “World”

 Cú pháp Atomic

Có thể sử dụng tới một nhóm lệnh trong một thông báo atomic Cáclệnh được thực hiện đơn lẻ và không xen kẽ với các lệnh trong tiến trình khác

Tự động phá vỡ nếu lệnh bị khóa khi đó các lệnh trong tiến trình khác

có thể xen kẽ vào giữa

Cú pháp:

Trang 13

atomic { statement1; ; statementn }

Statement1 chạy đầu tiên, statementn chạy cuối cùng

 Cú pháp D-STEP

Nhiều phiên bản Atomic : Không chứa trạng thái trung gian được tạo ra

và lưu trữ

Chỉ có thể chứa những bước xác định

Thời gian chạy sẽ bị lỗi nếu Stat-I(I>1) bị chặn, khóa

D-STEP cực kì hữu ích để thực hiện việc tính toán trong quá trình chuyển đổiduy nhất

Trang 14

Hình 1: Khi không sử dụng từ khóaCác trạng thái sinh ra khi không sử dụng từ khóa sẽ được tăng lên theo côngbội Trong trường hợp này tất cả các trạng thái có thể tạo được từ chươngtrình đều có thể sinh ra Do đó những trạng thái không cần thiết mà vẫn đượclưu trữ trong bộ nhớ sẽ làm lãng phí một phần bộ nhớ và số lượng trạng nhiềunhư vậy sẽ làm cho người thiết kế khó có thể kiểm soát được.

o Khi sử dụng từ khóa Atomic

Trang 15

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ạngthái trung gian vẫn sẽ được khởi tạo và lưu trữ trong stack Do đó khi có mộttrạ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

Trang 16

Hình 3: khi sử dụng từ khóa D-StepKhá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ướchay 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

Trang 17

Hình 4: Chương trình không sử dụng lệnh Atomic, D-step

Khi không sử dụng từ khóa nào thì số các trạng thái sinh ra trong ví dụ trên sẽ

là 9 trường hợp Do các câu lệnh trong hai tiến trình sẽ chạy xen kẽ với nhau

o Mã lệnh: Khi sử dụng từ khóa atomic hoặc D-step

Do chức năng của mã lệnh atomic và D-step là tương đối giống nhau chỉkhác nhau đôi chút về trạng thái trung gian được khởi tạo

Atomic : Khởi tạo trạng thái trung gian nhưng chỉ lưu vào stack.Cho đến khi nào có một trạng thái bên trong mã lệnh atomic bịkhóa, ngắt thì mới thực hiện các trạng thái trong Stack

D-step: Không khởi tạo trạng thái trung gian nên khi có một trạngthái nào bên trong mã lệnh D-step bị khóa thì chương trình thực thi

Trang 18

Hình 5: Khi sử dụng từ khóa Atomic, D-stepTrong trường hợp này thì số các trạng thái sinh ra sẽ giảm đi bởi vì khibắt đầu đến trạng thái x1 thì chương trình phải chạy hết đến trạng thái x3 rồimớ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ườikiể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.

Trang 19

CHƯƠNG 3

TRÌNH BÀY CÔNG CỤ SPIN, THAM SỐ, CÚ PHÁP LỆNH

3.1 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àngngàn người trên toàn cầu

SPIN được sử dụng cho việc xác minh thẩm định của các hệ thốngphân phối phần mềm

Nó cung cấp một giả lập cho phép các nhà thiết kế đạt được kết quảphản hồi từ hệ thống mô hình của họ Những kết quả phản hồi đó đóng vai tròquan trọng trong sự hiểu biết của các nhà thiết kế về hệ thống trước khi họđầu tư vào phân tích chính thức

3.2 Lịch sử phát triển công cụ SPIN

Từ năm 1980 Spin được phát triển tại Bell Labs của nhóm Unix Phầnmềm này phát triển rộng rãi từ năm 1991

Tháng 4 năm 2002 Spin được trao giải thưởng phần mềm uy tín chonăm 2001 của ACM

Các version chính: năm 1991 là 1.0 (initial version) tới năm 2002 đã cóSPIN version 4.0 (automata extration from C code)

1.0 Jan 1991 Initial version (Holzmann 19912.0 Jan 1995 Partial order reduction

3.0 Apr 1997 Minimised automaton

representation4.0 Late 2002 Ax: automata extraction from C

code5.0 Oct 2007 Multi-core & swarm support6.0 Dec 2010 Inline LTL formula parallel bfs3.3 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)

Trang 20

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áytính tiên tiến AIDEC (nhiều thuật toá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 SPIN3.4 Công cụ dòng lệnh

3.4.1 Cú pháp Spin

Một số câu lênh trong 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

Trang 21

3.4.2 Tùy chọn và chức năng của mỗi lệnh

Bắt đầu bằng việc viết một chương trình có vai trò như một mô hình hệthống cần được kiểm thử (được viết bằng ngôn ngữ Promela)

Ví dụ: trong bài trình bày của nhóm em, em sử dụng counter.plm làmfile đầu vào Nó đóng vai trò là mô hình hệ thống được kiểm thử

 Gỡ lỗi chương trình

Chạy 2 câu lệnh sau:

$spin –c spec.pml

$spin –p spec.pml

Hai câu lệnh sẽ chạy mô phỏng mô hình Câu lệnh đầu tiên sẽ tính toán

và cho ta đầu ra của hệ thống từ những đầu vào được khai báotrong môhình Câu lệnh thứ hai cho ta quá trình mà hệ thống thay đổi theo khichạy mô hình

Thực hiện debugged bằng dòng lệnh:

$spin –a counter.pml # generate verifier

Đầu ra file pan.c mô tả hệ thống bằng ngôn ngữ C hoàn toàn tự động.

 Biên dịch file pan.c Lúc này, quyết định quan trọng là chọn xác minhđầy đủ (Exhaustive verification) (CPU-time or memory) hoặc xác minhkhông đầy đủ (Supertrace verification)

Xác minh không đầy đủ (Exhaustive verification)

Sẽ là tối ưu nhất khi sử dụng tham số -o2 –o, thời gian chạy xác minh

có thể chỉ còn một nửa so với cách sử dụng các tham số khác

$ gcc -O2 -o pan pan.c # default compilation

Trang 22

Nếu đã biết bao nhiêu phần của bộ nhớ vật lý được sử dụng thì có thể

sử dụng cú pháp sau: ví dụ có 256 Mb cho việc biên dịch, câu lệnhđược thực hiện sẽ là

$ gcc -O2 -DMEMLIM=256 -o pan pan.c # memory bound 256Mb

Nếu việc xác minh vẫn chạy ra khỏi bộ nhớ, có thể sử dụng nén thay vìtăng giới hạn bộ nhớ:

$ gcc -O2 -DMEMLIM=256 DCOLLAPSE -o pan pan.c # collapse compression

Nếu vẫn là vượt quá giới hạn bộ nhớ thì sẽ sử dụng lựa chọn thứ hai(Supertrace verification)

$ gcc -O2 -DMEMLIM=256 -DBITSTATE -o pan pan.c

# supertrace algorithm

 Thực hiện 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

Trang 23

$ / Pan-m100000

 Sau khi thực hiện một loạt các hoạt động xác minh trên, có thể vào file

‘spec.pml.trail ‘ với ‘spec.pml’ là tên đầu vào PROMELA để xem các lỗinhận được sau khi debug

o Để kiểm tra nguyên nhân gây ra 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 và file thực thi pan sẽ cho ra một bộ test case một cách tựđộng SPIN gán số đầu vào cho tất cả các dòng lệnh Đầu ra của hệthống với số liệu đầu vào trước đó được liệt kê, giúp theo dõi những gìxảy ra của hệ thống Sử dụng tham số -d để xem thòi gian và quá trìnhchạy của hệ thống

$ pan -d -d # print full, unoptimized state machines

3.4.3 Một ví dụ đơn giản

Code và hướng dẫn thực thi được gửi kèm tài liệu báo cáo

3.4.4 SPIN và công cụ giao diện đồ họa khác

Hơn hai thập kỉ được nghiên cứu và phát triển, SPIN được phát triểnmạnh mẽ Các công cụ có giao diện đồ họa giúp tiếp cận với SPIN cũng rađời và phát triển không ngừng

Phải kể đến jSPIN, iSPIN, xSPIN Mỗi công cụ kể trên đều có nhữnglợi thế nhất định để các nhà kiểm thử hệ thống lựa chọn cho công việc chuyênmôn của mình

3.4.5 Hướng dẫn cài đặt SPIN

Tải về một phiên bản của SPIN từ trang chủhttp://spinroot.com/spin/Src/index.html Đổi tên file tải về thành spin.exe

Tải và cài đặt một trình biên dịch C Trong bài trình bày này, chúng em sử

dụng Cygwin Net Release Setup Program Có thể tải về từ địa chỉ sau: http://www.cygwin.com/

Copy spin.exe vào thư mục bin, nơi cài đặt Cygwin VD: C:\cygwin\

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

HÌNH ẢNH LIÊN QUAN

Hình 1: Khi không sử dụng từ khóa - Báo cáo môn học các vấn đề hiện đại công nghệ phần mềm docx
Hình 1 Khi không sử dụng từ khóa (Trang 14)
Hình 2: khi sử dụng từ khóa Atomic - Báo cáo môn học các vấn đề hiện đại công nghệ phần mềm docx
Hình 2 khi sử dụng từ khóa Atomic (Trang 15)
Hình 3: khi sử dụng từ khóa D-Step - Báo cáo môn học các vấn đề hiện đại công nghệ phần mềm docx
Hình 3 khi sử dụng từ khóa D-Step (Trang 16)
Hình 4: Chương trình không sử dụng lệnh Atomic, D-step - Báo cáo môn học các vấn đề hiện đại công nghệ phần mềm docx
Hình 4 Chương trình không sử dụng lệnh Atomic, D-step (Trang 17)
Hình 5: Khi sử dụng từ khóa Atomic, D-step - Báo cáo môn học các vấn đề hiện đại công nghệ phần mềm docx
Hình 5 Khi sử dụng từ khóa Atomic, D-step (Trang 18)
Hình 6: Cấp độ tổ chức SPIN 3.4 Công cụ dòng lệnh. - Báo cáo môn học các vấn đề hiện đại công nghệ phần mềm docx
Hình 6 Cấp độ tổ chức SPIN 3.4 Công cụ dòng lệnh (Trang 20)
Hình 7: Quá trình phát triển của Emacs 4.3 Bộ gõ phím - Báo cáo môn học các vấn đề hiện đại công nghệ phần mềm docx
Hình 7 Quá trình phát triển của Emacs 4.3 Bộ gõ phím (Trang 25)
Hình 8: Giao diện trình soạn thảo Emacs 4.5 Cấu trúc lệnh Emac. - Báo cáo môn học các vấn đề hiện đại công nghệ phần mềm docx
Hình 8 Giao diện trình soạn thảo Emacs 4.5 Cấu trúc lệnh Emac (Trang 26)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w