5. DataGrid
4.2. Tiến trình thiết kế hướng đối tượng
Với các hệ thống hướng đối tượng chúng ta có thể xác định ra 4 tầng thiết kế như sau
• Tầng hệ thống con: Chứa mô tả của mỗi hệ thống con cho phép hệ thống đạt được các yêu cầu của khách hàng và thực hiện các hạ tầng kĩ thuật hỗ trợ yêu cầu khách hàng.
• Tầng lớp và đối tượng: Chứa phân lớp cho phép hệ thống được tạo ra bằng cách sử dụng tổng quát hóa và tính tăng dần đặc tả đích
• Tầng thông điệp: Chứa các chi tiết cho phép các đối tượng giao tiếp.
• Tầng trách nhiệm: Chứa các cấu trúc dữ liệu và các thuật toán thiết kế cho mọi thuộc tính và phương thức của lớp.
Các hoạt động trong pha thiết kế
• Định nghĩa hình thức về các kiểu dữ liệu và các dịch vụ. Các dịch vụ có thể chuyển thành chức năng trong pha thiết kế.
• Thiết kế giao diện người dùng. • Thiết kế cơ sở dữ liệu.
Ưu điểm của thiết kế hướng đối tượng
• Dễ dàng bảo trì. Các đối tượng được hiểu như là các thực thể đứng một mình. • Đối tượng là các thành phần tái sử dụng. • Với một số HT, có thể ánh xạ ngay từ thực thể thực sang thực thể của hệ thống. Các phương pháp thiết kế • Phương pháp Booch: Quy trình gồm các bước: − Lập kế hoạch kiến trúc. − Chiến lược thiết kế. − Lập kế hoạch phát hành.
• Phương pháp Coad and Yourdon • Phương pháp Jacobson:
Quy trình phát triển so Jacobson đề nghị:
− Xem xét sự thích nghi để mô hình phân tích lí tưởng phù hợp với môi trường thế giới thực.
− Tạo ra các khối như các đối tượng thiết kế cơ bản.
− Tạo ra một biểu đồ tương tác cho biết cách các kích thích được chuyển đổi giữa các khối.
− Tổ chức các khối trong hệ thống con. − Xem xét lại công việc thiết kế. • Phương pháp Rambaugh:
Quy trình phát triển so Jacobson đề nghị: − Thực hiện thiết kế hệ thống.
− Thiết kế đối tượng quản lí.
− Thực hiện các kĩ thuật điều khiển đã xác định trong thiết kế hệ thống. − Điều chỉnh các cấu trúc lớp để tăng sức mạnh kế thừa.
− Thiết kế thông điệp để thực hiện các mối quan hệ đối tượng. − Đóng gói các lớp và các liên kết trong một module.
• Phương pháp Wirfs – Brock:
Quy trình phát triển do Wirfs – Brock đề xuất: − Xây dựng giao thức cho mỗi lớp.
− Tạo ra đặc tả thiết kế cho mỗi hệ thống con.
− Mô tả mỗi hệ thống con theo cách mà nó thực hiện. − Thiết kế đối tượng.
Quy trình thiết kế hướng đối tượng
• Thiết kế hệ thống
+ Đặt tên cho các hệ thống con và các thành phần cơ bản + Định danh các hệ thống con cho bộ xử lí.
+ Lựa chọn chiến lược quản trị cơ sử dữ liệu. + Xác định chuẩn cho phát triển.
+ Xác định các yêu cầu cài đặt. • Xác định đối tượng
− Một mô tả của đối tượng có thể là một trong 2 dạng sau:
+ Mô tả giao thức: Thiết lập giao diện của đối tượng bằng cách xác định mỗi thông điệp mà đối tượng có thể nhận và các phương thức liên quan đối tượng thực hiện khi nhận được thông điệp.
+ Mô tả thực hiện: Chỉ ra chi tiết thực hiện cho mỗi phương thức bằng cách chuyển thông điệp giữa các đối tượng. Chi tiết thực hiện bao gồm thông tin về các phần riêng của đối tượng.
− Giao thức mô tả là một tập các thông điệp và các chú thích tương ứng với mỗi thông điệp.
− Một mô tả thực hiện của một đối tượng cung cấp các chi tiết bên trong được yêu cầu để thực hiện nhưng không cần thiết cho viện dẫn. Người thiết kế đối tượng phải cung cấp mô tả thực hiện và do đó phải tạo ra chi tiết bên trong của đối tượng.
• Thiết kế thuật toán và cấu trúc dữ liệu Một thuật toán được tạo ra để thực hiện một đặc tả cho mỗi phương thức. Trong nhiều trường hợp, thuật toán chỉ là tính toán đơn giản hoặc dãy các thủ tục được thực hiện như một module phần mềm tự chứa.
− Cấu trúc dữ liệu được thiết kế đồng thời với thuật toán. Do các phương thức thao tác các thuộc tính của lớp, thiết kế cấu trúc dữ liệu phản ánh tốt nhất thuộc tính sinh ra trong thiết kế thuật toán của các phương thức tương ứng.
− Các kiểu phương thức chia làm 3 loại chính: + Phương thức thao tác dữ liệu.
+ Phương thức thực hiện tính toán.
+ Phương thức điều khiển đối tượng cho sự kiện điều khiển.
− Để tối ưu hóa thiết kế hướng đối tượng. Rambaugh đã đưa ra các gợi ý sau: + Xem lại mô hình đối tượng
– quan hệ để đảm bảo rằng các thiết kế được thực hiện sử dụng tài nguyên hiệu quả và nới lỏng các ràng buộc thực hiện thêm vào các dư thừa nếu thấy cần thiết. + Xem lại thuộc tính cấu trúc dữ liệu và các thuật toán tương ứng để tăng cường hiệu quả xử lí.
+ Tạo ra thuộc tính mới để giữ thông tin thừa kế, do đó tránh được việc tính toán lại.
• Thiết kế lớp đối tượng
+ Quá trình thiết kế lớp bao gồm các công đoạn sau: Xác định tên lớp đối tượng, xác định các quan hệ, xác định các thuộc tính, xác định các phương thức, xác định lớp cha của nó ( nếu có ).
+ Tên lớp tuân theo một số quy tắc: - Tên lớp phải là danh từ.
- Tên lớp phải có chu trình sống của mình, phải có thời điểm sinh ra, chết đi của đối tượng đó.
- Nó độc lập tương đối với các đối tượng khác (tức là nó sẽ độc lập hơn đối tượng khác một cách tương đối, về các mặt khác nó có thể phụ thuộc lẫn nhau giữa các đối tượng, nhưng nó là một thể thức ngoài đời có.).
+ Phần xác định các quan hệ . Việc xác định các quan hệ giữa các lớp là việc phải lập ra một từ điển quan hệ giữa các lớp ví như: lớp A là con lớp B chẳng hạn. Nó cũng có một số qui tắc sau để qui ước là: tên quan hệ phải là động từ,... Nó nói lên sự phụ thuộc lẫn nhau của các đối tượng.
+ Việc xác định các thuộc tính nó có một số qui định như sau: tên thuộc tính phải là danh từ, nó phải có sự lệ thuộc duy nhất vào đối tựng đang xét. Trong khi xác định thuộc tính cần chú ý: nếu thuộc tính đó phụ thuộc một đối tượng thì thuộc tính đó là thuộc tính của đối tượng, thuộc tính phụ thuộc vào nhiều đối tượng thì thuộc tính đó là thuộc tính quan hệ.
+ Việc xác định phương thức thực chất đó là các hành động, công việc, của các phương thức đó, nên tên phương thức có nhiều loại phương thức trong xây dựng một lớp đối tượng:
- Các phương thức thuộc nhóm khởi tạo: gồm phương thức khởi tạo mặc định, phương thức khởi tạo khi biêt một số thuộc tính của nó, phương thức phá hủy. - Phương thức thuộc nhóm cung cấp (phương thức get)
- Các phương thức thuộc nhóm thiết lập (phương thức set) 22
- Các phương thức xử lý tính toán: các phương thức này sẽ đóng vai trò là nơi thực thi các tính toán của từng class tương ứng trước khi thêm, hay làm gì đó với hệ thống dữ liệu.
- Các phương thức thuôc nhóm kiểm tra. Đây là nơi kiểm tra các ràng buộc về dữ liệu cho class tương ứng của bạn.
• Một số quy ước để thiết kế một class.
+ Để thiết kế một class trước tiên bạn phải đưa ra tên của nó là gì. + Xác định các phương thức, thuộc tính cho class đó như đã nói ở trên
+ Nếu các thuộc tính có cấu trúc phức tạp hoặc có các thuộc tính liên hệ với nhau và nó có ngữ nghĩa cụ thể (ngoài đời có nó) thì nên tách nó ra thành một lớp độc lập với nhau.
+ Khi 2 hay nhiều lớp có các thuộc tính chung thì nên tách thành một lớp cha của các lớp đó và các lớp đó được kế thừa từ lớp cha của nó.
+ Khi gặp các thuộc tính có khả năng phân loại trong một số trường hợp thì ta tách các thuôc tính con của nó thành thuộc tính con tương ứng.
• Thiết kế một mô hình class.
+ B1: Thiết kế các class như các cách ở trên đã nêu. + B2: Xác định quan hệ giữa các class.
+ B3: Xác định các quan hệ và bảng số của nó. • Thiết kế thành phần chương trình và giao diện
− Đây là khía cạnh quan trọng của chất lượng thiết kế phần mềm.
− Cách tiếp cận hướng đối tượng xác định đối tượng như một thành phần chương trình, bản thân nó liên kết với các thành phần khác. Chúng ta phải xác định được giao diện tồn tại giữa các đối tượng và toàn bộ cấu trúc của đối tượng.
− Giao diện yêu cầu phải dễ sử dụng
5.Thiết kế giaodiện
5.1.Các nguyên tắc thiết kế
Dễ học: Phần mềm cần phải dễ học cách sử dụng, do đó người dùng có thể nhanh chóng bắt đầu làm việc sử dụng phần mềm đó
Quen thuộc với người sử dụng: Giao diện nên dùng các thuật ngữ và khái niệm rút ra từ kinh nghiệm của những người sẽ dùng hệ thống nhiều nhất
Tính nhất quán: giao diện cần nhất quán sao cho các thao tác gần giống nhau có thể được kích hoạt theo cùng kiểu.
Ngạc nhiên tối thiểu: Người dùng không bao giờ bị bất ngờ về hành vi của hệ thống
Khôi phục được: Giao diện nên có các cơ chế cho phép người dùng khôi phục lại tình trạng hoạt động bình thường sau khi gặp lỗi
Hướng dẫn người dùng: Giao diện nên có phản hồi có nghĩa khi xảy ra lỗi và cung cấp các tiện ích trợ giúp theo ngữ cảnh
Người dùng đa dạng: Giao diện nên cung cấp các tiện ích tương tác thích hợp cho các loại người dùng hệ thống khác nhau
5.2.Tiến trình thiết kế
Vấn đề trong thiết kế giao diện
Hai vấn đề cần xem xét:
Người dùng cung cấp thông tin cho hệ thống bằng cách nào?
Hệ thống nên trình bày thông tin (output) cho người dùng như thế nào?
Các kiểu tương tác
Các kiểu tương tác phổ biến:
Thao tác trực tiếp – Direct manipulation Chọn lựa bằng menu – Menu selection Điền form – Form fill-in
Dòng lệnh – Command language Ngôn ngữ tự nhiên – Natural language
Kiểu tương tác
Ưu điểm chính Nhược điểm chính Ví dụ Thao tác trực tiếp Tương tác trực quan, nhanh chóng và dễ hiểu Có thể khó cài đặt. Chỉ thích hợp khi có ẩn dụ hình ảnh cho các tác vụ và đối tượng Trò chơi điện tử và các ứng dụng có drag & drop Chọn lựa bằng menu Tránh lỗi cho người dùng, không phải làm nhiều thao tác Chậm chạp với người sử dụng có kinh nghiệm. Có thể phức tạp nếu có nhiều lựa chọn menu Đa số các hệ thống thông dụng Điền form Nhập dữ liệu đơn giản, dễ học, có thể kiểm tra được Tốn không gian hiển thị, rắc rối khi lựa chọn của người dùng không khớp với kiểu Đăng kí thông tin cá nhân, khai thuế
Kiểu tương tác
Ưu điểm chính Nhược điểm chính Ví dụ dữ liệu của form Dòng lệnh Mạnh và linh động Khó học, xử lý lỗi kém Terminal, Autocad Ngôn ngữ tự nhiên Đáp ứng được người dùng không chuyên, dễ mở rộng Cần gõ nhiều, các hệ thống hiểu ngôn ngữ tự nhiên không đáng tin cậy Trợ lý ảo Biểu diễn thông tin
Thông tin có thể được trình bày trực tiếp (ví dụ text trong một trình soạn thảo) hoặc được biến đổi thành một dạng biểu diễn khác (ví dụ dạng đồ họa)
Model-View-Controller là cách tiếp cận hỗ trợ nhiều kiểu biểu diễn dữ liệu Có 2 loại thông tin cần được biểu diễn:
Thông tin tĩnh: Tạo ở lúc bắt đầu và không thay đổi trong phiên làm việc.
Thông tin động: Thay đổi trong phiên làm việc và phải thông báo cho người sử dụng
Các kĩ thuật hiển thị lượng lớn thông tin:
Hình ảnh: có thể cho thấy quan hệ giữa các thực thể và các xu hướng của dữ liệu Màu sắc: thường dùng đểhighlight các thông tin đặc biệt
Hướng dẫn về việc sử dụng màu sắc: Hạn chế số màu và mức độ sặc sỡ
Dùng sự thay đổi màu để báo hiệu thay đổi trạng thái hệ thống.
Dùng kí hiệu màu (color coding) để hỗ trợ công việc người dùng đang cố làm. Highlight những điểm người dùng cần chú ý.
Dùng kí hiệu màu một cách cẩn trọng và nhất quán
Cẩn thận về hiệu ứng cặp đôi của màu sắc. Một số tổ hợp màu gây khó đọc, ví dụ như người ta không thể cùng lúc chú ý cả hai màu đỏ và xanh lam
Quy trình thiết kế giao diện
Thiết kế giao diện là một quy trình lặp đi lặp lại với sự liên lạc chặt chẽ giữa người dùng và người thiết kế. Ba hoạt động chính trong quy trình:
User analysis: Tìm hiểu người dùng sẽ làm gì với hệ thống;
System prototyping: phát triển một loạt các bản mẫu để thử nghiệm Interface evaluation: thử nghiệm các bản mẫu cùng với người dùng
Quốc tế hóa và địa phương hóa
Trong quá trình thiết kế cần phải xem xét đến việc ngôn ngữ theo chuẩn quốc tế và chuẩn địa phương. Tức là giao diện phần mềm có thể thích ứng với sự khác nhau về khu vực, ngôn ngữ và yêu cầu kĩ thuật của thị trường. Quốc tế hóa là quá trình thiết kế một ứng dụng bao gồm nhiều ngôn ngữ để có thể thích nghi với những khu vực không có sự thay đổi quan trọng về quy trình. Địa phương hóa là sự thích ứng của quốc tế hóa với một khu vực hoặc ngôn ngữ cụ thể bằng cách thêm vào các thành phần của địa phương và dịch văn bản. Các yếu tố cần được quan tâm như biểu tượng, số, tiền tệ, thời gian và các đơn vị đo lường.
Người thiết kế giao diện sử dụng các biểu tượng và khái niệm để tạo được sự quen thuộc giữa các phần mềm với những hệ thống đã được biết đến trên thế giới. Như vậy người dùng sẽ dễ dàng hơn trong việc tìm hiểu và sử dụng giao diện.
Ví dụ: Chức năngxóa tập tin có thể gắn vào biểu tượng thùng rác.
Khi thiết kế giao diện, nhà thiết kế không được sử dụng nhiều hơn một ý nghĩa, hay chức năng trong một biểu tượng. Bằng cách sử dụng những biểu tượng và khái niệm quen thuộc, hỗ trợ biểu diễn tốt hơn các thông tin cần được quốc tế hóa, nhưng cần phải chú ý không nên áp dụng theo cùng một cách với tất cả các địa phương và khu vực khác nhau.
CÂU HỎI VÀ BÀI TẬP
1. Trình bày tổng quan về thiết kế phần mềm.? 2. Trình bày thiết kế kiến trúc phần mềm?
3. Trình bày thiết kế hệ thống hướng chức năng phần mềm.? 4. Trình bày thiết kế hệ thống hướng đối tượng phần mềm.? 5. Trình bày thiết kế giao diện người dùng ?
CHƯƠNG 6: KIỂM THỬ PHẦN MỀM Mã chương: MHLTV 15.6
- Nêu được các khái niệm cơ bản về kiểm thử. - Xác định được mục tiêu của kiểm thử. - Phân loại được các loại kiểm thử.
- Trình bày được các cấp độ và các kỹ thuật kiểm thử.
-Phân loại và so sánh được các kỹ thuật kiểm thử khác nhau.
1. Một số khái niệm cơ bản
Kiểm thử phần mềm bao gồm việc kiểm chứng động (dynamic), đó là một chương trình cung cấp các hành vi dự kiến trên một tập hữu hạn các trường hợp thử nghiệm, phù hợp được lựa chọn từ các miền thực hiện thường là vô hạn. Các vấn đề quan trọng trong việc mô tả các kiến thức kiểm thử phần mềm (knowledge area - KA) dưới đây:
Dynamic
Thuật ngữ này có nghĩa là kiểm thử luôn luôn bao gồm thực thi chương trình khi lựa chọn đầu vào (input). Để được chính xác, giá trị đầu vào đơn (alone) không phải lúc nào cũng đủ để xác định 1 bài test, vì một hệ thống không xác định phức tạp có thể phản ứng với các đầu vào cùng với các hành vi khác nhau, tùy thuộc vào trạng thái hệ thống. Tuy nhiên trong KA này, thuật ngữ đầu vào sẽ phải được duy trì, với quy ước bao hàm rằng ý nghĩa của nó cũng bao gồm một trạng thái