Giáo trình Nhập môn Công nghệ phần mềm - Chương 3: Phân tích Phần mềm - Lương Trần Hy Hiến

Vẽ sơ đồ trạng thái: • Quản lý giải bóng đá vô địch quốc gia • Quản lý bình chọn bài hát hay Làn sóng xanh • Quản lý giáo vụ trường đại học • Quản lý giáo vụ trường phổ thông • Quản lý bán hàng • Quản lý nhân sự - Tiền lương

pdf84 trang | Chia sẻ: huongthu9 | Lượt xem: 370 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Giáo trình Nhập môn Công nghệ phần mềm - Chương 3: Phân tích Phần mềm - Lương Trần Hy Hiến, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 1 HIENLTH Chủ đề 3 (tt): Phân tích Phần mềm COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 2 HIENLTH Phân tích Hướng đối tượng COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 3 HIENLTH Nội dung • Sơ đồ lớp ở mức phân tích – Xác định các lớp đối tượng chính – Xác định các thông tin và hành động/trách nhiệm của mỗi lớp đối tượng chính – Xác định các quan hệ chính – Xác định các lớp đối tượng phụ, các danh mục • Sơ đồ lớp và Khả năng tiến hóa của hệ thống • Sơ đồ trạng thái – Khái niệm và các ký hiệu • Trạng thái • Biến cố, điều kiện • Trạng thái đầu, trạng thái cuối • Superstate – Áp dụng COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 4 HIENLTH Một số khái niệm mở đầu • Vấn đề: Mô tả lại bằng một ngôn ngữ nào đó (thường là các sơ đồ) nhằm diễn tả trực quan về vấn đề • Phân tích: xây dựng mô hình Thế giới thực • Phân tích theo hướng đối tượng: xây dựng các mô hình về các đối tượng của Thế giới thực • Một số loại Sơ đồ: – Sơ đồ lớp đối tượng: Mô tả hệ thống các lớp đối tượng (thuộc tính, hành động) cùng với các quan hệ giữa chúng – Sơ đồ trạng thái: Mô tả chu trình sống của đối tượng – COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 5 HIENLTH Lớp (class) là gì? • Đối tượng là cái gì đó tồn tại trong thế giới thực • Lớp là mô tả thuộc tính, hành vi, ngữ nghĩa của một nhóm đối tượng – Lớp xác định thông tin nào được lưu trữ trong đối tượng và hành vi nào đối tượng có • Thí dụ về lớp: Lớp NhanVien – Đối tượng của lớp có các attribute: HoTen, DiaChi, Luong – Các hành vi: Thuê mướn, Đuổi việc và Đề bạt nhân viên? COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 6 HIENLTH Sơ đồ Lớp Class Diagram • Là biểu đồ quan trọng nhất. • Mô tả các đối tượng và mối quan hệ của chúng trong hệ thống. • Mô tả các thuộc tính và các hành vi (Behavior) của đối tượng. • Có biểu đồ lớp mức phân tích và mức cài đặt. • Ký pháp đồ họa của lớp trong biểu đồ – Tên lớp – Thuộc tính – Thao tác + : public - : private # : protected COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 7 HIENLTH Nhắc lại về hướng đối tượng Tên class Tên class (Các) phương thức (Các) thuộc tính Một số ký hiệu COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 8 HIENLTH Public/Protected/Private + Thuộc tính/Phương thức public - Thuộc tính/Phương thức private # Thuộc tính/Phương thức protected Phương thức Public Phương thức Protected Phương thức Private Class - privateAttribute # protectedAttribute +publicOp() # protectedOp() - privateOp() COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 9 HIENLTH Class - classifierScopeAttribute classifierScopeOperation() - instanceScopeAttribute instanceScopeOperation() Tầm vực • Xác định số lượng thể hiện của thuộc tính / phương thức COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 10 HIENLTH Ví dụ CStudent - name - address - nextAvailID : int + addSchedule(theSchedule : Schedule, forSemester : Semester) + getSchedule(forSemester : Semester) : Schedule + hasPrerequisites(forCourseOffering : CourseOffering) : boolean # passed(theCourseOffering : CourseOffering) : boolean + getNextAvailID() : int - studentID COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 11 HIENLTH Nhận xét Tên class (Các) phương thức (Các) thuộc tính Bình thường: Class bình thường In nghiêng: Class thuần ảo Gạch dưới: Object (không phải class) Bình thường: Thuộc tính bình thường In nghiêng: không sử dụng Gạch dưới: Thuộc tính static Bình thường: Phương thức bình thường In nghiêng: Phương thức virtual Gạch dưới: Phương thức static COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 12 HIENLTH Hai dạng lớp: phân tích và thiết kế Bỏ qua các chi tiết không cần thiết Phải đầy đủ & chi tiết các thành phần COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 13 HIENLTH Tìm kiếm lớp như thế nào? • Tìm đầy đủ lớp rất khó khăn. • Khuyến cáo – Tìm lớp từ các danh từ trong luồng sự kiện – Chú ý rằng danh từ có thể là tác nhân, lớp, ( thuộc tính và biểu thức không phải loại trên – Tìm lớp từ biểu đồ tương tác – Những cái chung của đối tượng tạo thành lớp – Tìm lớp ở các nơi khác • Các báo cáo tìm ra trong pha phân tích yêu cầu hình thành lớp giao diện • Các thiết bị phần cứng được biểu diễn bởi lớp khác nhau COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 14 HIENLTH Tìm kiếm lớp như thế nào? • Cùng với chuyên gia lĩnh vực vấn đề trả lời các câu hỏi sau đây để tìm ra lớp – Có thông tin nào cần lưu trữ hay phân tích? Nếu có, nó là lớp – Có hệ thống ngoài không? Nếu có thì nó được xem như những lớp chứa trong hệ thống của ta hay hệ thống của ta tương tác với chúng – Có mẫu, thư viện lớp, thành phần...? Nếu có, thông thường chúng chứa các ứng viên lớp – Hệ thống cần quản lý các thiết bị ngoại vi nào? Mọi thiết bị kỹ thuật nối với hệ thống đều là ứng viên lớp. – Tác nhân đóng vai trò tác nghiệp nào? Các nhiệm vụ này có thể là lớp; thí dụ người sử dụng, thao tác viên hệ thống, khách hàng... COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 15 HIENLTH Mối quan hệ giữa các class • Generalization: tổng quát hóa • Association: – dependency – aggregation – composition COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 16 HIENLTH Các quan hệ trong biểu đồ lớp • Quan hệ Generalization: Thể hiện rằng một lớp A kế thừa từ một lớp B (Hay A là trường hợp riêng của B; B là tổng quát của A) • Gọi là quan hệ Là một (Is a) • Thể hiện: COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 17 HIENLTH Quan hệ giữa các lớp đối tượng • Quan hệ kế thừa – ClassB kế thừa từ ClassA – ClassB là một trường hợp đặc biệt của ClassA – ClassA là trường hợp tổng quát của ClassB ClassA ClassB COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 18 HIENLTH Ví dụ CTamGiac # CDiem P1 # CDiem P2 # CDiem P3 + CTamGiac() + float DienTich() + float ChuVi() + void Ve() + ... CTuGiac # CDiem P1 # CDiem P2 # CDiem P3 # CDiem P4 + CTuGiac() + float DienTich() + float ChuVi() + void Ve() + ... CEllipse # CDiem Tam # float A # float B + CEllipse() + float DienTich() + float ChuVi() + void Ve() + ... CHinhVe # int MaLoaiHinhVe + float DienTich() + float ChuVi() + void Ve() + ... COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 19 HIENLTH Quan hệ giữa các lớp đối tượng • Quan hệ Association • Hoặc – Trong ClassA có thuộc tính có kiểu là ClassB • Hoặc – Trong ClassB có thuộc tính có kiểu là ClassA • Nhận xét: Về mặt lập trình, thuộc tính có thể được lưu trữ dạng biến đơn, biến mảng, hay biến con trỏ • Ví dụ: ? ClassA ClassB COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 20 HIENLTH Ví dụ COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 21 HIENLTH Quan hệ giữa các lớp đối tượng • Quan hệ Aggregation • Đã xác định được ClassA và ClassB có quan hệ Association với nhau – Xác định rõ hơn: • Trong object của ClassA có chứa (trong phần thuộc tính) object của ClassB • ObjectX của ClassA bị hủy thì ObjectY của ClassB (bên trong ObjectX) vẫn có thể còn tồn tại • Ví dụ: ? ClassA ClassB COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 22 HIENLTH Quan hệ Aggregation • Còn gọi là mối quan hệ: Có một (Has a) • Ví dụ: COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 23 HIENLTH Quan hệ giữa các lớp đối tượng • Quan hệ Composition • Đã xác định được ClassA và ClassB có quan hệ Association với nhau – Xác định rõ hơn: • Trong object của ClassA có chứa (trong phần thuộc tính) object của ClassB • ObjectX của ClassA bị hủy thì ObjectY của ClassB (bên trong ObjectX) không thể còn tồn tại – Ví dụ: ? ClassA ClassB COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 24 HIENLTH Quan hệ Composition • Thể hiện rằng một lớp A bao hàm lớp B. Nhưng lớp B không thể tồn tại độc lập (Tức không thuộc lớp nào). Tức là, nếu có B thì phải suy ra được A. • Thể hiện: COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 25 HIENLTH Quan hệ giữa các lớp đối tượng • Chiều của quan hệ (Association, Aggregation, Composition) • Nếu quan hệ là 1 chiều: đa số các lời gọi hàm được gọi theo đúng chiều của quan hệ • Nếu quan hệ là 2 chiều: không vẽ mũi tên ClassA ClassB COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 26 HIENLTH Quan hệ giữa các lớp đối tượng • Bản số - Multiplicity (Association, Aggregation, Composition) – Ý nghĩa – Ví dụ: • 1 • 2 • 1..* • 0..* • * • 1, 3, 5..9 ClassA ClassB 1 1..* COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 27 HIENLTH Quan hệ giữa các lớp đối tượng • Bản số - Multiplicity (Association, Aggregation, Composition) – Ý nghĩa – Ví dụ: • 1 • 2 • 1..* • 0..* • * • 1, 3, 5..9 ClassA ClassB 1 1..* COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 28 HIENLTH Quan hệ giữa các lớp đối tượng • Quan hệ Dependency – ClassA và ClassB không có quan hệ Association – ClassA “phụ thuộc” vào ClassB ClassA ClassB class A { void F(B x) { } }; class A { B F() { } }; class A { void F() { B x; } }; Trong ClassA có sử dụng biến toàn cục (kiểu B), hoặc sử dụng phương thức/thuộc tính static của ClassB Tham số truyền vào Kết quả trả ra Biến cục bộ COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 29 HIENLTH Bản số (Multiplicity) • Thể hiện rằng ứng với mỗi lớp A thì có (chứa, dạy, có, mua, đặt,...) bao nhiêu phần tử lớp B? A B 1 1 Một phần tử lớp A có 1 phần tử lớp B COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 30 HIENLTH Bản số (Multiplicity) • Thể hiện rằng ứng với mỗi lớp A thì có (chứa, dạy, có, mua, đặt,...) bao nhiêu phần tử lớp B? A Khách hàng B Tài khoản 1 0..3 Một phần tử lớp A có tối đa 3 phần tử lớp B Mỗi phần tử lớp B có đúng 1 phần tử lớp A COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 31 HIENLTH Bản số (Multiplicity) • Thể hiện rằng ứng với mỗi lớp A thì có (chứa, dạy, có, mua, đặt,...) bao nhiêu phần tử lớp B? A Khách hàng B Đơn hàng 1 * Một phần tử lớp A có nhiều phần tử lớp B Mỗi phần tử lớp B có đúng 1 phần tử lớp A COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 32 HIENLTH Bản số (Multiplicity) • Thể hiện rằng ứng với mỗi lớp A thì có (chứa, dạy, có, mua, đặt,...) bao nhiêu phần tử lớp B? A Sinh viên B Khóa học 0..* 1..* Mỗi sinh viên tham gia ít nhất 1 khóa học Mỗi khóa học có thể có 0 hoặc nhiều sv tham gia COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 33 HIENLTH Ví dụ COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 34 HIENLTH Ví dụ COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 35 HIENLTH Xây dựng sơ đồ lớp ở mức phân tích CLASS DIAGRAM COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 36 HIENLTH Class Diagram • Được xây dựng và hiệu chỉnh trong suốt quá trình phát triển • Mục tiêu: – Đặt tên và lập mô hình các khái niệm trong hệ thống – Đặc tả sự cộng tác – Đặc tả sơ đồ CSDL • Được phát triển bởi phân tích viên, thiết kế viên, lập trình viên COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 37 HIENLTH Lập danh sách các đối tượng • Tiêu chuẩn nhận dạng đối tượng – Định danh: Đối tượng phải có tên (thường là danh từ/ngữ danh từ) – Chu trình sống: có thời điểm sinh ra, có khoảng thời gian hoạt động, có thời điểm chấm dứt – Sự độc lập tương đối với các đối tượng khác – • Đề nghị: – Con người – Vật thể – Tổ chức – Vật lý – Không gian – Thời gian COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 38 HIENLTH Lập danh sách các đối tượng • Lập danh sách các đối tượng liên quan đến hệ thốngĐối tượng đề nghị Không là đối tượng Là đối tượng Được quan tâmKhông được quan tâm Đối tượng chínhĐối tượng phụ Tiêu chuẩn nhận dạng đối tượng: có rất nhiều trường phái COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 39 HIENLTH Ví dụ • Ví dụ: Xét ngữ cảnh là 1 trường PTTH với phần mềm quản lý trường cấp 3: • Danh sách đề nghị: – Học sinh Tổ Bộ môn Số tiết – Giáo viên BGH TKB – Môn học Khối Bảng điểm – Lớp Phụ huynh Phòng – Học kỳ ĐTB Học phí – Năm học Diện HS • Đối tượng/Không phải đối tượng? COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 40 HIENLTH Ví dụ • Được quan tâm? – Phần mềm quản lý học sinh: • Học sinh, Giáo viên, Môn học, Lớp, Khối, Phụ huynh, Học kỳ, Năm học – Phần mềm quản lý giáo viên: • Giáo viên, Tổ bộ môn, Môn học, Khối, Lớp, Học kỳ, Năm học – Phần mềm xếp thời khóa biểu: • Giáo viên, Môn học, Lớp, Phòng, Học kỳ,Năm học COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 41 HIENLTH Ví dụ • Đối tượng chính?Đối tượng phụ – Phần mềm quản lý học sinh: • Học sinh, Giáo viên, Môn học, Lớp, Khối, Phụ huynh, Học kỳ, Năm học – Phần mềm quản lý giáo viên: • Giáo viên, Tổ bộ môn, Môn học, Khối, Lớp, Học kỳ, Năm học – Phần mềm xếp thời khóa biểu: • Giáo viên, Môn học, Lớp, Phòng, Học kỳ,Năm học COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 42 HIENLTH Lập danh sách các quan hệ • Tiêu chí đánh giá: – Động từ – Sự phụ thuộc giữa các đối tượng (chủ yếu xét các đối tượng chính) • Đề nghị: – Quan hệ theo thời gian • Ít biến động: sau 1 thời gian dài mới thay đổi (thường làm về mặt tổ chức) • Biến động: quan hệ xảy ra vào lúc nào, trong thông tin có thuộc tính về thời gian, thay đổi theo thời gian (thường quan tâm nhiều đến loại quan hệ này) – Quan hệ về tổ chức (thường liên quan đến đối tượng phụ) – Quan hệ về không gian (thường liên quan đến đối tượng phụ – Quan hệ theo vai trò: Chủ động/Bị động • Ví dụ:? COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 43 HIENLTH Nhận dạng thuộc tính • Sự phụ thuộc (không có ý nghĩa rõ ràng khi đứng độc lập) – Phụ thuộc một đối tượng  Thuộc tính của đối tượng – Phụ thuộc nhiều đối tượng  Thuộc tính của quan hệ • Các loại thuộc tính – Định danh (thường của đối tượng) – Phân loại – Thời gian – Không gian – Định lượng – • Ví dụ: ? COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 44 HIENLTH Các bước xây dựng sơ đồ lớp ở mức phân tích • Bước 1: Xác định các lớp đối tượng, quan hệ và thuộc tính trực tiếp từ yêu cầu của hệ thống – Xét lần lượt từng biểu mẫu và quy định • Nếu trong sơ đồ lớp hiện tại chưa có thể lưu trữ được thông tin cần thiết: – Cần bổ sung thuộc tính vào lớp đối tượng đã có? – Cần bổ sung thuộc tính vào quan hệ đã có? – Cần bổ sung thêm quan hệ giữa các lớp đối tượng đã có? – Cần bổ sung thêm lớp đối tượng mới? COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 45 HIENLTH Các bước xây dựng sơ đồ lớp ở mức phân tích • Bước 2: – Nếu một lớp đối tượng có thuộc tính có cấu trúc phức tạp hoặc có các thuộc tính có liên hệ chặt chẽ với nhau và có ngữ nghĩa cụ thể thì nên tách ra thành lớp đối tượng phụ COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 46 HIENLTH Các bước xây dựng sơ đồ lớp ở mức phân tích • Bước 3: – 3.1. Nhiều lớp đối tượng có nhiều đặc điểm chung  Xây dựng lớp đối tượng tổng quát chung cho các lớp đối tượng cụ thể này – 3.2. Một lớp đối tượng có thuộc tính phân loại và cách xử lý trong các phương thức của đối tượng thuộc lớp này phụ thuộc vào giá trị của thuộc tính phân loại  Tách lớp đối tượng này thành nhiều lớp đối tượng con tương ứng với mỗi (nhóm) giá trị của thuộc tính phân loại COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 47 HIENLTH Các bước xây dựng sơ đồ lớp ở mức phân tích • Bước 4: – Hiệu chỉnh các quan hệ đã có để phù hợp với các lớp đối tượng vừa được điều chỉnh • Bước 5: – Kiểm tra lại sơ đồ lớp và hiệu chỉnh (theo kinh nghiệm) • Bước 6: – Bổ sung các trách nhiệm (phương thức) vào các lớp đối tượng ở mức phân tích COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 48 HIENLTH Kết quả • Sơ đồ lớp • Danh sách các lớp đối tượng và quan hệ • Mô tả chi tiết từng lớp đối tượng và quan hệ – Với mỗi lớp đối tượng: • Mô tả các thuộc tính • Danh sách các trách nhiệm chính – Với mỗi quan hệ: STT Tên lớp/quan hệ Loại Ý nghĩa/ghi chú STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 49 HIENLTH Áp dụng • Áp dụng thực tế vào các bài tập – Xác định các lớp đối tượng chính – Xác định các thông tin và hành động/trách nhiệm của mỗi lớp đối tượng chính – Xác định các quan hệ chính – Xác định các lớp đối tượng phụ, các danh mục COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 50 HIENLTH Ví dụ 0..1 Co 0..* Thuoc 0..1 0..* 0..1 0..* CGiangVien + + + + + + + + + + GVID MaGV HocVi ChucDanh TenVT Ho Ten DiaChi DienThoai Email : long : string : string : string : string : string : string : string : string : string CKhoa # + - KhoaID MaKhoa TenKhoa : int : string : string CBoMon + + + BMID MaBM TenBM : long : string : string + Insert () : int 0..1 0..* CNganh + + + + NganhID MaNganh TenNganh TenVT : long : string : string : string CKhoa # + - KhoaID MaKhoa TenKhoa : int : string : string COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 51 HIENLTH Ví dụ 0..1 Co 0..* Thuoc 0..1 0..* 0..1 0..* 0..1 0..* 0..1 0..* 0..1 0..* 0..1 0..* 0..1 0..* 1..1 0..* 1..1 0..* 1..1 0..* CBoMon + + + BMID MaBM TenBM : long : string : string + Insert () : int CGiangVien + + + + + + + + + + GVID MaGV HocVi ChucDanh TenVT Ho Ten DiaChi DienThoai Email : long : string : string : string : string : string : string : string : string : string CKhoa # + - KhoaID MaKhoa TenKhoa : int : string : string CLOP + + + + + LOPID MALOP TENLOP NAMTS TenVT : long : string : string : short : string CLOPNK + + + LOPNKID NAM NAMHOC : long : short : short CMONHOC + + + + + + + MonID MaMon TenMon TinChi SoTietLT SoTietBT TenVT : long : string : string : short : short : short : string + + + + Them () Xoa () Sua () LayDL () : void : void : void : void CNganh + + + + NganhID MaNganh TenNganh TenVT : long : string : string : string CTKB + + + + + + TKBID TKB HOCKY NAMHOC NGAYBD NGAYKT : long : string : short : short : DateTime : DateTime CTKBLOP + TKBLOPID : long CTKBLOP_CHITIET + + + + + THU TIETBD TIETKT LYTHUYET PHONG : short : short : short : short : string COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 52 HIENLTH Ánh xạ biểu đồ sang Code COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 53 HIENLTH Ánh xạ biểu đồ sang Code (2) COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 54 HIENLTH Ánh xạ khách hàng- đơn hàng COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 55 HIENLTH COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 56 HIENLTH COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 57 HIENLTH COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 58 HIENLTH Sơ đồ trạng thái STATECHART DIAGRAM COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 59 HIENLTH Statechart Diagram • Ghi nhận các hành vi động (even – oriented) • Mục tiêu: – Mô hình hóa chu kỳ sống của đối tượng – Mô hình hóa các đối tượng phản hồi (user interfaces, devices, ) COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 60 HIENLTH Các khái niệm • Sơ đồ trạng thái – Mô tả chu trình sống của các đối tượng chính từ khi sinh ra, hoạt động & mất đi – Mỗi đối tượng có thể có nhiều sơ đồ trạng thái theo các góc nhìn khác nhau • Trạng thái & biến cố – Trạng thái của đối tượng diễn đạt tình trạng hiện có của đối tượng (có ý nghĩa trong một đoạn thời gian) – Biến cố là các sự kiện xảy ra làm cho đối tượng chuyển trạng thái. COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 61 HIENLTH State Diagram Bàn cờ Khởi tạo bàn cờ Quân trắng đi Quân đen đi Quân trắng thắng Hòa Quân đen thắng COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 62 HIENLTH Ví dụ: Xét ứng dụng quản lý TKB • Hệ thống cho phép bộ phận giáo vụ Khoa nhập thời khóa biểu, cập nhật thời khóa biểu của tất cả các lớp • Hệ thống cho phép sinh viên tra cứu thời khóa biểu theo từng học kỳ của lớp • Hệ thống cho phép giảng viên tra cứu thời khóa biểu giảng dạy trong học kỳ COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 63 HIENLTH Ví dụ minh họa • State Diagram mô tả trạng thái TKB [Bắt đầu học kỳ mới] [Kết thúc học kỳ] [Tất cả các lớp đã được phân phòng] [Một số lớp chưa được phân phòng] Có lớp mới được phân [Còn lớp chưa được phân phòng] [Tất cả các lớp đã được phân phòng] Yêu cầu tra cứu TKB Khởi tạo do / Khoi tao TKB Chờ phân phòng Có lớp mới được phân() / Cap nhat Phong Đang sử dụng Yêu cầu tra cứu TKB(Lop) / TKB Lop Yêu cầu tra cứu TKB(GV) / TKB Giảng viên Đóng do / Ket thuc hoc ky COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 64 HIENLTH Các thành phần trong State diagram • Trạng thái – State • Sự kiện – Event • Hành động – Action • Mối liên hệ giữa các trạng thái State1 entry / Action_1 do / Action_2 exit / Action_3 Event_1 [Condition]/ Action 11State1 entry / Action_1 do / Action_2 exit / Action_3 State2 COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 65 HIENLTH Một số ký hiệu Tên trạng thái Tên trạng thái stateVar : type = value entry/ entry action do/ activity exit/ exit action Tên biến cố (tham số) Tên hành động (tham số) [Điều kiện] Trạng thái Chuyển đổi trạng thái COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 66 HIENLTH • Trang thái bắt đầu – Là trạng thái khi mới được khởi tạo của object – Bắt buộc phải có – Chỉ có thể có 1 trạng thái bắt đầu • Trang thái kết thúc – Chỉ vị trí kết thúc đời sống của object – Không nhất thiết phải thể hiện – Có thể có nhiều Tr/thái bắt đầu Tr/thái kết thúc Các trạng thái đặc biệt COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 67 HIENLTH Tên trạng thái stateVar : type = value entry/ entry action do/ activity exit/ exit action Biến cố(tham số) [Biểu thức điều kiện] / Hành động (tham số) Trạng thái Biến cố Chuyển đổi trạng thái Hành động Hành động Sơ đồ trạng thái • Là đồ thị có hướng với các node là các trạng thái nối với nhau bới các cung mô tả việc chuyển đổi trạng thái COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 68 HIENLTH Các thành phần trong State diagram • Sự kiện – Event • Event – Entry: sự kiện phát sinh khi đối tượng bắt đầu nhận trạng thái – Exit: sự kiện phát sinh khi đối tượng kết thúc trạng thái thúc trạng thái – Do: sự kiện phát sinh khi user thực hiện một hành động thông qua bàn phím/chuột. State1 entry / Action_1 do / Action_2 exit / Action_3 COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 69 HIENLTH Các thành phần trong State diagram • Trạng thái – State • Action – Entry: hành động được thực hiện khi đối tượng bắt đầu trạng thái – Do: tập các hành động có thể thực hiện với trạng thái – Exit: hành động được thực hiện khi đối tượng kết thúc trạng thái State1 entry / Action_1 do / Action_2 exit / Action_3 COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 70 HIENLTH Các thành phần trong State diagram • Mối liên hệ giữa các trạng thái –Transition – Event – Action – Condition: điều kiện cho phép chuyển từ trạng thái này sang trạng thái khác Event_1 [Condition]/ Action 11State1 entry / Action_1 do / Action_2 exit / Action_3 State2 COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 71 HIENLTH Các thành phần trong State diagram • State – Event – Action – Transition Huy Huy Huy / SoLuong = 10 Them Sinh Vien/ SoLuong = 0 Them Sinh Vien [SoLuong <10] KH Khởi tạo do / KhoiTao Đang mở entry / Sinh vien dang ky exit / Tang SoLuong 1 DV Kết thúc do / Ket thuc khoa hoc Bị Hủy do / Thong bao sinh vien da dang ky COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 72 HIENLTH Ví dụ minh họa • State Diagram mô tả trạng thái TKB [Bắt đầu học kỳ mới] [Kết thúc học kỳ] [Tất cả các lớp đã được phân phòng] [Một số lớp chưa được phân phòng] Có lớp mới được phân [Còn lớp chưa được phân phòng] [Tất cả các lớp đã được phân phòng] Yêu cầu tra cứu TKB Khởi tạo do / Khoi tao TKB Chờ phân phòng Có lớp mới được phân() / Cap nhat Phong Đang sử dụng Yêu cầu tra cứu TKB(Lop) / TKB Lop Yêu cầu tra cứu TKB(GV) / TKB Giảng viên Đóng do / Ket thuc hoc ky COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 73 HIENLTH Ví dụ minh họa • State Diagram mô tả trạng thái màn hình quản lý danh mục người dùng COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 74 HIENLTH Ví dụ minh họa • State Diagram mô tả trạng thái màn hình quản lý danh mục người dùng Thoat Thêm ND Sửa ND [Đã chọn ND] Kết thúc sửa NDKết thúc Thêm ND Khởi tạo màn hình entry / Load entry / Show do / Thêm ND do / Sửa ND do / Xóa ND do / Thoát Đang thêm Người dùng entry / Thêm ND do / Lưu ND do / Không lưu exit / Xác lập trạng thái Kết thúc MH Người dùng entry / Unload Đang sửa Người dùng entry / Sửa ND do / Lưu do / Không lưu exit / Xác lập trạng thái COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 75 HIENLTH Sơ đồ trạng thái S1 S4 S2 S3 S5 S6 B1 B2 B3 B4 B5 B6 B7 B8 B9 B1, B2: biến cố sinh B4, B8, B9: biến cố mất B3, B5, B6, B7: biến cố hoạt động COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 76 HIENLTH Sơ đồ trạng thái • Mỗi sơ đồ trạng thái sẽ ánh xạ thành một thuộc tính của đối tượng • Các trạng thái của đối tượng trong 1 sơ đồ trạng thái không giao nhau và giá trị của thuộc tính tương ứng chỉ mang 1 trong các giá trị tương ứng • Sơ đồ trạng thái càng chi tiết sẽ phục vụ: – Có những xử lý thích hợp trong kiểm tra ràng buộc – Có những xử lý thích hợp trong xử lý biến cố – Phục vụ tra cứu, tìm kiếm • Khi đã quan tâm đến sơ đồ trạng thái của 1 đối tượng – Thường trong ứng dụng không còn chức năng xóa (thật sự) đối tượng này – Các đối tượng sẽ tồn tại ở trạng thái mất thay vì bị xóa thật sự COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 77 HIENLTH • Thông thường, sơ đồ trạng thái của 1 đối tượng có dạng Sẵn sàng Tạm dừngHoạt động Chấm dứt Sơ đồ trạng thái COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 78 HIENLTH Cách xây dựng sơ đồ trạng thái • Cách 1: – Xác định quá trình hoạt động bình thường của đối tượng từ khi sinh ra đến khi mất đi – Bổ sung các trạng thái và biến cố liên quan đến • Sinh ra • Hoạt động • Tạm từng • Mất đi • Cách 2: – Xác định các trạng thái sinh – Xác định các trạng thái cuối – Xác định các trạng thái trung gian và các biến cố/hành động làm chuyển trạng thái COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 79 HIENLTH Kết quả: Sơ đồ trạng thái S1 S4 S2 S3 S5 S6 B1 B2 B3 B4 B5 B6 B7 B8 B9 STT Trạng thái Ý nghĩa Xử lý liên quan Ghi chú STT Biến cố Ý nghĩa Xử lý liên quan Ghi chú Bảng mô tả các trạng thái Bảng mô tả các biến cố Sơ đồ trạng thái COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 80 HIENLTH Tạo State Diagram trong PD • Tạo mới State Diagram • State – Start – End – State • Transition • Action • Event COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 81 HIENLTH Bài tập • Vẽ sơ đồ trạng thái của thang máy • Vẽ sơ đồ trạng thái của 1 đèn giao thông • Vẽ sơ đồ trạng thái của 1 cặp đèn giao thông tại ngã tư • Vẽ sơ đồ trạng thái của 1 độc giả • Vẽ sơ đồ trạng thái của 1 cuốn sách • Vẽ sơ đồ trạng thái của 1 phòng trong khách sạn • Vẽ sơ đồ trạng thái của 1 quân cờ COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 82 HIENLTH Bài tập Vẽ sơ đồ trạng thái: • Quản lý giải bóng đá vô địch quốc gia • Quản lý bình chọn bài hát hay Làn sóng xanh • Quản lý giáo vụ trường đại học • Quản lý giáo vụ trường phổ thông • Quản lý bán hàng • Quản lý nhân sự - Tiền lương COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 83 HIENLTH Ôn tập • State diagram là gì ? • Event là gì ? • Transition ? • Action là gì ? Các loại Action ? • Xây dựng State diagram cho một số ứng dụng trong phần bài tập COMP1026 – Introduction to Software Engneering CH3 – Part 2 - 84 HIENLTH Câu hỏi và thảo luận

Các file đính kèm theo tài liệu này:

  • pdfgiao_trinh_nhap_mon_cong_nghe_phan_mem_chuong_3_phan_tich_ph.pdf