Bài giảng Nhập môn công nghệ phần mềm: Chương 4 - Nguyễn Thanh Bình

23 43 0
Bài giảng Nhập môn công nghệ phần mềm: Chương 4 - Nguyễn Thanh Bình

Đ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ài giảng Nhập môn công nghệ phần mềm - Chương 4: Các kỹ thuật đặc tả cung cấp cho người học các kiến thức: Khái niệm đặc tả, tại sao phải đặc tả, phân loại các kỹ thuật đặc tả, các kỹ thuật đặc tả. Mời các bạn cùng tham khảo.

Các kỹ thuật đặc tả (4) Nguyễn Thanh Bình Khoa Công nghệ Thông tin Trường ðại học Bách khoa ðại học ðà Nẵng Nội dung Khái niệm ñặc tả Tại phải ñặc tả ? Phân loại kỹ thuật ñặc tả Các kỹ thuật ñặc tả CuuDuongThanCong.com https://fb.com/tailieudientucntt Khái niệm ñặc tả ðặc tả (specification) ñịnh nghĩa hệ thống, mơ-đun hay sản phẩm cần phải làm khơng mơ tả phải làm mơ tả tính chất vấn đề đặt khơng mơ tả tính chất giải pháp cho vấn đề Khái niệm đặc tả ðặc tả hoạt ñộng ñược tiến hành giai đoạn khác tiến trình phần mềm: ðặc tả yêu cầu (requirement specification) • thống ngưới sử dụng tương lai người thiết kế ðặc tả kiến trúc hệ thống (system architect specification) • thống người thiết kế người cài đặt ðặc tả mơđun (module specification) • thống người lập trình cài đặt mơ-đun người lập trình sử dụng mơ-đun CuuDuongThanCong.com https://fb.com/tailieudientucntt Tại phải ñặc tả ? Hợp ñồng thống người sử dụng người phát triển sản phẩm Hợp thức hóa sản phẩm làm phải thực xác mong muốn Trao ñổi người sử dụng người phát triển người phát triển Tái sử dụng Phân loại kỹ thuật đặc tả ðặc tả phi hình thức (informal) ngôn ngữ tự nhiên tự ngôn ngữ tự nhiên có cấu trúc kí hiệu đồ họa ðặc tả hình thức (semi-informal) trộn lẫn ngơn ngữ tự nhiên, kí hiệu tốn học kí hiệu đồ họa ðặc tả hình thức (formal) kí hiệu tốn học • ngơn ngữ đặc tả • ngơn ngữ lập trình CuuDuongThanCong.com https://fb.com/tailieudientucntt ðặc tả hình thức hay khơng hình thức ? ðặc tả hình thức xác (tốn học) hợp thức hóa hình thức (cơng cụ hóa) cơng cụ trao đổi: khó đọc, khó hiểu khó sử dụng ðặc tả khơng hình thức dễ hiểu, dễ sử dụng mềm dẻo thiếu xác nhập nhằng Ứng dụng đặc tả hình thức ứng dụng giai đoạn sớm tiến trình phát triển hạn chế lỗi phát triển phần mềm ứng dụng chủ yếu phát triển hệ thống “quan trọng” (critical systems) hệ thống ñiều khiển hệ thống nhúng hệ thống thời gian thực CuuDuongThanCong.com https://fb.com/tailieudientucntt Chi phí phát triển sử dụng đặc tả hình thức Các kỹ thuật đặc tả Trình bày số kỹ thuật Máy trạng thái hữu hạn Mạng Petri ðiều kiện trước sau Kiểu trừu tượng ðặc tả Z 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt Máy trạng thái hữu hạn (state machine) mơ tả luồng điều khiển biểu diễn dạng đồ thị bao gồm tập hợp trạng thái S (các nút ñồ thị) tập hợp liệu vào I (các nhãn cung) tập hợp chuyển tiếp T : S x I → S (các cung có hướng đồ thị) • có liệu vào, trạng thái chuyển sang trạng thái khác 11 Máy trạng thái hữu hạn ðặt máy xuống Ví dụ ðợi ðặt máy xuống Nhấc máy Thời gian ñợi kết thúc Âm mời quay số Bấm số Số sai Quay số Thông báo quay số sai Số ñúng Kết nối Máy bận Kết nối ñược ðổ chuông Thuê bao ñược gọi nhấc máy 12 ðàm thoại CuuDuongThanCong.com https://fb.com/tailieudientucntt Máy trạng thái hữu hạn Ví dụ Hệ thống cần mô tả bao gồm nhà sản xuất, nhà tiêu thụ kho hàng chứa ñược nhiều sản phẩm Nhà sản xuất có trạng thái • P1: khơng sản xuất • P2: sản xuất Nhà tiêu thụ có trạng thái • C1: có sản phẩm để tiêu thụ • C2: khơng có sản phẩm để tiêu thụ Nhà kho có trạng thái • chứa sản phẩm • chứa sản phẩm • chứa sản phẩm 13 Máy trạng thái hữu hạn Giải pháp 1: mô tả tách rời thành phần Lấy từ kho Sản xuất P2 P1 C2 C1 Gửi vào kho Tiêu thụ Gửi vào kho Gửi vào kho Lấy từ kho Lấy từ kho 14 CuuDuongThanCong.com https://fb.com/tailieudientucntt Máy trạng thái hữu hạn Giải pháp khơng mơ tả hoạt động hệ thống cần mơ tả hoạt ñộng kết hợp thành phần hệ thống 15 Máy trạng thái hữu hạn Giải pháp 2: mô tả kết hợp thành phần Gửi vào kho Sản xuất Gửi vào kho Sản xuất Lấy từ kho Sản xuất Lấy từ kho Tiêu thụ Tiêu thụ Tiêu thụ Lấy từ kho Lấy từ kho Tiêu thụ Tiêu thụ Tiêu thụ Sản xuất Sản xuất Gửi vào kho 16 Sản xuất Gửi vào kho CuuDuongThanCong.com https://fb.com/tailieudientucntt Máy trạng thái hữu hạn Giải pháp mơ tả hoạt động hệ thống số trạng thái lớn biểu diễn hệ thống phức tạp hạn chế đặc tả hệ thống khơng đồng o thành phần hệ thống hoạt ñộng song song cạnh tranh 17 Mạng Petri (Petri nets) thích hợp để mơ tả hệ thống khơng đồng với hoạt động đồng thời mơ tả luồng điều khiển hệ thống ñề xuất từ năm 1962 Carl Adam Có hai loại mạng Petri (cổ điển) mạng Petri mở rộng 18 CuuDuongThanCong.com https://fb.com/tailieudientucntt Mạng Petri Gồm phần tử tập hợp hữu hạn nút ( ) tập hợp hữu hạn chuyển tiếp ( ) tập hợp hữu hạn cung (→) • cung nối nút với chuyển tiếp ngược lại nút chứa nhiều thẻ ( ) 19 Mạng Petri Ví dụ t2 t1 p2 p1 t3 p4 p3 20 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt Mạng Petri Mạng Petri ñược ñịnh nghĩa ñánh dấu nút Việc đánh dấu nút ñược tiến hành theo nguyên tắc sau: chuyển tiếp có nút vào nút tất nút vào chuyển tiếp có thẻ, chuyển tiếp vượt qua ñược, chuyển tiếp ñược thực tất nút vào chuyển tiếp bị lấy ñi thẻ, thẻ ñược thêm vào tất nút chuyển tiếp nhiều chuyển tiếp vượt qua chọn chuyển tiếp 21 Mạng Petri Ví dụ t1 t2 t1 khơng thể vượt qua t2 vượt qua t3 t3 vượt qua t4 ñược vượt qua 22 t4 11 CuuDuongThanCong.com https://fb.com/tailieudientucntt Mạng Petri Ví dụ t2 t2 t2 vượt qua 23 Mạng Petri Ví dụ 24 12 CuuDuongThanCong.com https://fb.com/tailieudientucntt Mạng Petri Ví dụ 1: mơ tả hoạt động đèn giao thơng red yr yellow rg gy 25 green Mạng Petri Ví dụ 1: mơ tả hoạt động đèn giao thơng red2 red1 yr1 yr2 yellow1 rg1 gy2 gy1 26 rg2 yellow2 green1 green2 13 CuuDuongThanCong.com https://fb.com/tailieudientucntt Mạng Petri Ví dụ 1: mơ tả hoạt động an tồn đèn giao thơng red2 red1 safe yr1 rg1 yr2 yellow1 yellow2 gy1 27 rg2 gy2 green2 green1 Mạng Petri Ví dụ 1: mơ tả hoạt động an tồn hợp lý đèn giao thơng red1 red2 safe2 yr2 yr1 rg1 rg2 yellow1 yellow2 gy1 gy2 safe1 28 green1 green2 14 CuuDuongThanCong.com https://fb.com/tailieudientucntt Mạng Petri Ví dụ 2: mơ tả chu kỳ sống người trẻ dậy cưới niên có vợ có chồng 29 ly chết chết Mạng Petri Ví dụ 3: viết thư ñọc thư begin receive_mail mail_box rest rest type_mail send_mail read_mail ready Mô tả trường hợp người viết người đọc ? Mơ tả trường hợp hộp thư nhận chứa nhiều thư ? 30 15 CuuDuongThanCong.com https://fb.com/tailieudientucntt Mạng Petri Ví dụ 4: tình nghẽn (dead-lock) P1 P2 P3 t1 t2 P4 P5 t3 t4 P7 P6 t5 t6 P8 P9 t7 t8 31 Mạng Petri Ví dụ 4: giải pháp chống nghẽn P1 P2 P3 t1 t2 P4 P5 t3 t4 2 P7 P6 t5 P8 t6 t7 P9 t8 32 16 CuuDuongThanCong.com https://fb.com/tailieudientucntt Mạng Petri Ví dụ Hệ thống cần mơ tả bao gồm nhà sản xuất, nhà tiêu thụ kho hàng chứa ñược nhiều sản phẩm Nhà sản xuất có trạng thái • P1: khơng sản xuất • P2: sản xuất Nhà tiêu thụ có trạng thái • C1: có sản phẩm để tiêu thụ • C2: khơng có sản phẩm để tiêu thụ Nhà kho có trạng thái • chứa sản phẩm • chứa sản phẩm • chứa sản phẩm 33 Mạng Petri Ví dụ 5: mơ tả tách rời thành phần Sản xuất Lấy từ kho P1 C1 P2 C2 Tiêu thụ Gửi vào kho Gửi vào kho Gửi vào kho Lấy từ kho Lấy từ kho 34 17 CuuDuongThanCong.com https://fb.com/tailieudientucntt Mạng Petri Ví dụ 5: mơ tả kết hợp thành phần Sản xuất P1 Gửi vào kho P2 Lấy từ kho Lấy từ kho C1 Gửi vào kho C2 Tiêu thụ 35 ðiều kiện trước sau (pre/post condition) ñược dùng ñể ñặc tả hàm mơ-đun đặc tả tính chất liệu trước sau thực hàm pre-condiition: ñặc tả ràng buộc tham số trước hàm ñược thực thi post-condition: ñặc tả ràng buộc tham số sau hàm thực thi sử dụng ngơn ngữ phi hình thức, hình thức ngơn ngữ lập trình để đặc tả điều kiện 36 18 CuuDuongThanCong.com https://fb.com/tailieudientucntt ðiều kiện trước sau Ví dụ: đặc tả hàm tìm kiếm function search ( a : danh sách phần tử kiểu K, size : số phân tử dánh sách, e : phần tử kiểu K, result : Boolean ) pre post ∀i, ≤ i ≤ n, a[i] ≤ a[i+1] result = (∃i, ≤ i ≤ n, a[i] = e) 37 ðiều kiện trước sau Bài tập: ñặc tả hàm Sắp xếp danh sách số nguyên ðảo ngược phần tử danh sách ðếm số phần tử có giá trị e danh sách số nguyên 38 19 CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểu trừu tượng (abstract types) Mô tả liệu thao tác liệu mức trừu tượng ñộc lập với cách cài ñặt liệu ngôn ngữ lập trình ðặc tả kiểu trừu tượng gồm: tên kiểu trừu tượng • dùng từ khóa sort khai báo kiểu trừu tượng ñã tồn ñược sử dụng • dùng từ khóa imports thao tác trên kiểu trừu tượng • dùng từ khóa operations 39 Kiểu trừu tượng Ví dụ 1: đặc tả kiểu trừu tượng Boolean sort Boolean operations true false ¬_ _∧_ _∨_ : → Boolean : → Boolean : Boolean → Boolean : Boolean x Boolean → Boolean : Boolean x Boolean → Boolean thao tác khơng có tham số số giá trị kiểu trừu tượng định nghĩa biểu diễn kí tự “_” 40 20 CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểu trừu tượng Ví dụ 2: ñặc tả kiểu trừu tượng Vector sort Boolean operations true false ¬_ _∧_ _∨_ : → Boolean : → Boolean : Boolean → Boolean : Boolean x Boolean → Boolean : Boolean x Boolean → Boolean thao tác tham số số giá trị kiểu trừu tượng ñịnh nghĩa ñược biểu diễn kí tự “_” 41 Kiểu trừu tượng Ví dụ 2: ñặc tả kiểu trừu tượng Vector sort Vector imports Integer, Element, Boolean operations vect : Integer x Integer → Vector init : Vector x Integer → Boolean ith : Vector x Integer → Element change-ith : Vector x Integer x Element → Vector supborder : Vector → Integer infborder : Vector → Integer 42 21 CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểu trừu tượng Ví dụ 2: đặc tả kiểu trừu tượng Vector thao tác kiểu định nghĩa mà khơng ngữ nghĩa • tức ý nghĩa thao tác sử dụng tiên ñề ñể ñịnh nghĩa ngữ nghĩa thao tác • dùng từ khóa axioms định nghĩa ràng buộc mà thao tác định nghĩa • dùng từ khóa precondition 43 Kiểu trừu tượng Ví dụ 2: đặc tả kiểu trừu tượng Vector precondition ith(v, i) is-defined-ifonlyif infborder(v) ≤ i ≤ supborder(v) & init(v,i) = true axioms infborder(v) ≤ i ≤ supborder(v) ⇒ ith(change-ith(v, i, e), i) = e infborder(v) ≤ i ≤ supborder(v) & infborder(v) ≤ j ≤ supborder(v) & i ≠ j ⇒ ith(change-ith(v, i, e), j) = ith(v, j) init(vect(i, j), k) = false infborder(v) ≤ i ≤ supborder(v) ⇒ init(change-ith(v, i, e), i) = true infborder(v) ≤ i ≤ supborder(v) & i ≠ j ⇒ init(change-ith(v, i, e), j) = init(v, j) infborder(vect(i, j)) = i infborder(change-ith(v, i, e)) = infborder(v) supborder(vect(i, j)) = j supborder(change-ith(v, i, e)) = supborder(v) with 44 v: Vector; i, j, k: Integer; e: Element 22 CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểu trừu tượng Bài tập ðặc tả kiểu trừu tượng nhị phân ðặc tả kiểu trừu tượng tập hợp 45 23 CuuDuongThanCong.com https://fb.com/tailieudientucntt ... https://fb.com/tailieudientucntt Mạng Petri Ví dụ 4: tình nghẽn (dead-lock) P1 P2 P3 t1 t2 P4 P5 t3 t4 P7 P6 t5 t6 P8 P9 t7 t8 31 Mạng Petri Ví dụ 4: giải pháp chống nghẽn P1 P2 P3 t1 t2 P4 P5 t3 t4 2 P7 P6 t5 P8 t6 t7... = j supborder(change-ith(v, i, e)) = supborder(v) with 44 v: Vector; i, j, k: Integer; e: Element 22 CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểu trừu tượng Bài tập ðặc tả kiểu... danh sách phần tử kiểu K, size : số phân tử dánh sách, e : phần tử kiểu K, result : Boolean ) pre post ∀i, ≤ i ≤ n, a[i] ≤ a[i+1] result = (∃i, ≤ i ≤ n, a[i] = e) 37 ðiều kiện trước sau Bài tập:

Ngày đăng: 11/01/2020, 19:55

Từ khóa liên quan

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

Tài liệu liên quan