Phần 3...53 Kết luận và Hớng phát triển...53 I. Kết quả đạt đợc...56 II. Hớng phát triển của ứng dụng trong tơng lai...57
1. Mở rộng từ điển FEV...572. Tăng cờng khả năng tra nghĩa của từ bằng nhiều phơng pháp...572. Tăng cờng khả năng tra nghĩa của từ bằng nhiều phơng pháp...57 2. Tăng cờng khả năng tra nghĩa của từ bằng nhiều phơng pháp...57 3. Thiết kế giao diện với nhiều ngôn ngữ khác nhau...58 4. Tăng cờng tính năng động của giao diện...58 5. Tham số hoá chơng trình...58
I.
I. Tổng quanTổng quan
Khi thiết kế giao diện cho một ứng dụng trên máy tính, chúng ta phải dành nhiều thời gian cho việc phân tích, tìm hiểu các yêu cầu cụ thể, đặc biệt là phân tích ý nghĩa và tác dụng của giao diện đối với ngời sử dụng. Để làm đợc điều này chúng ta cần phải tập trung nhiều tài liệu, các ứng dụng mẫu, và nhiều công cụ khác phục vụ cho việc thiết kế bản mẫu, tạo mã cho chơng trình,...
Phần này sẽ lần lợt trình tìm hiểu về lý thuyết giao diện ngời - máy; xác định các yêu cầu về giao diện của từ điển FEV; cách tổ chức dữ liệu, bao gồm dữ liệu đầu vào, dữ liệu đầu ra; các công cụ và thuật toán đợc cài đặt trong chơng trình; mô hình tổng quát của ứng dụng; và cuối cùng là một số hình ảnh minh hoạ kết quả đạt đợc sau quá trình phân tích, thiết kế và cài đặt chơng trình.
II.
II. Tìm hiểu về giao diện ngTìm hiểu về giao diện ngời - máyời - máy
Cũng nh việc thiết kế một công trình kiến trúc, một giao diện của ứng dụng trên máy tính cung cấp một hình ảnh cấu trúc cho kỹ s phần mềm. Giống nh bảng thiết kế nhà, một thiết kế tổng thể sẽ có cửa sổ, cửa chính, và các hệ thống điện nớc, điện thoại,... Còn đối với phần mềm máy tính thì các cửa sổ, cửa chính và các công trình tiện dụng khác là bao gồm toàn bộ giao diện của một hệ thống mà ngời dùng sẽ thao tác trên đó.
Thiết kế giao diện tập trung vào 3 điểm đáng quan tâm sau : (1) Thiết kế giao diện giữa các module phần mềm; (2) Thiết kế giao diện giữa phần mềm và các thông tin khách hàng, các máy sinh mã tự động (phi loài ngời - nonhuman); (3) Thiết kế giao diện giữa ngời và máy tính (human - computer interface).
Hiệu quả của bất kỳ ứng dụng nào cũng đều đợc quyết định bởi ngời sử dụng. Thiết kế giao diện là một quá trình lặp đi lặp lại nhiều lần. Hiếm có một bản thiết kế thứ nhất nào đảm bảo cho ứng dụng của chúng ta là hoàn hảo. Vì vậy, để tránh gặp rắc rối trong quá trình tạo ra ứng dụng thơng mại, đợc sử dụng dễ dàng và rộng rãi thì vấn đề giao diện cần phải đợc đợc xem xét và phân phối thời gian một cách hợp lý trong dự án. Phần này chúng ta sẽ tìm hiểu những điều cần thiết khi thiết kế giao diện ngời máy trên cơ sở một ngời phân tích và thiết kế hệ thống tin học quản lý.
1. Một giao diện tốt là gì?
Điểm bắt đầu tốt nhất khi thiết kế một giao diện ngời dùng (User Interface) là xem những ứng dụng mẫu khác. Chúng ta sẽ tìm thấy nhiều điểm chung, nh các thanh công cụ (Toolbars), thanh trạng thái (Statusbar), những chỉ dẫn tức thời (ToolTips), những thực đơn và nhiều hộp thoại khác. Một điều dễ dàng là các yếu tố này điều đợc đa số các ngôn ngữ lập trình trực quan hỗ trợ, và nh vậy, việc thiết kế và lập trình cho một giao diện quen thuộc trở nên đơn giản hơn.
Ngoài ra, chúng ta có thể vay mợn một vài yếu tố cũng nh những kinh nghiệm trên cơ sở một ngời sử dụng phần mềm. Tức là, tìm hiểu về một số những ứng dụng mà chúng ta đang sử dụng; xem chúng làm gì, không làm gì, và tổng hợp các yếu tố đó nh thế nào. Tuy nhiên, làm
nh thế sẽ ảnh hởng đến sở thích của các ngời dùng khác. Do đó, chúng ta cần phê chuẩn và quyết định những ý tởng của bản thân với ngời sử dụng.
Cuối cùng, chúng ta có thể theo dõi những ứng dụng khá phổ biến để rút ra những điểm làm cho ngời sử dụng thích thú. Ví dụ, Windows Explore cho phép những ngời sử dụng sao chép những hồ sơ với những thực đơn, những lệnh bàn phím, hoặc kéo và thả chuột. Nh vậy, ứng dụng của chúng ta phải cung cấp các tùy chọn để có thể sử dụng cả chuột lẫn bàn phím.
Những vấn đề đợc đề cập trên đây đợc các nhà phát triển của hãng Microsoft đa ra nhằm giúp các lập trình viên tìm hiểu các yêu cầu cũng nh cách để có thể tạo ra đợc một giao diện tốt.
2. Thiết kế giao diện nội, ngoại vi (Internal, External Interface Design)Design)Design) Design)
Thiết kế giao diện nội vi các chơng trình đôi khi còn đợc gọi là thiết kế giao diện nội khối (Intermoduler Interface Design), tức là đợc điều khiển bởi dữ liệu mà dữ liệu này phải đ- ợc trao đổi hay lu chuyển giữa các khối (module) và các đặc điểm của ngôn ngữ lập trình (ở đó phần mềm đợc thực thi). Nhìn chung, mẫu phân tích chứa nhiều thông tin yêu cầu cho việc thiết kế giao diện nội khối. Sơ đồ dòng dữ liệu (DFD - Data Flow Diagram) thờng sẽ mô tả làm thế nào các đối tợng dữ liệu đợc chuyển đổi khi chúng di chuyển qua một hệ thống. Sự chuyển đổi của DFD đợc thể hiện ở các khối trong cấu trúc chơng trình. Vì vậy, các mũi tên theo hớng vào/ra ở mỗi chuyển đổi của DFD phải đợc thể hiện rõ bằng sơ đồ ở bớc thiết kế giao diện của khối tơng ứng với sự chuyển đổi của DFD đó.
Thiết kế giao diện ngoại vi bắt đầu với một đánh giá về từng thực thể ngoại vi đã đợc thể hiện trong DFD của mẫu phân tích. Các yêu cầu dữ liệu và điều khiển của thực thể ngoại vi phải đợc xác định và phù hợp với các giao diện ngoại vi đã thiết kế.
Cả thiết kế nội và ngoại vi phải gắn liền với hiệu lực dữ liệu và các thuật giải điều khiển lỗi trong một khối. Bởi vì cả hai mặt này đều ảnh hởng đến việc truyền qua các giao diện ch- ơng trình, nó thật cần thiết để kiểm tra tất cả dòng dữ liệu từ khối này đến khối khác để đảm bảo rằng dữ liệu phải phù hợp với các giới hạn đợc thiết lập trong suốt quá trình phân tích các yêu cầu.
3. Một số nguyên tắc khi thiết kế giao diện cho ứng dụng
Để thiết lập đợc một giao diện ngời dùng có hiệu quả, thì tất cả các thiết kế nên bắt đầu bằng việc tìm hiểu về ngời sử dụng. Trong đó bao gồm các sự mô tả sơ lợc nh : tuổi (age), giới tính (sex), sức khoẻ, trình độ học vấn (education), văn hoá (cultural), tôn giáo (ethnic), mục đích (goal), động cơ (motivation) và tính cách (personality) của họ. Thêm vào đó cũng có thể là các sự phân loại (categorized) về ngời sử dụng nh : ngời mới sử dụng (novices), ngời sử dụng không thờng xuyên (intermittent user) và ngời sử dụng thờng xuyên (frequent user). Sau khi tìm hiểu đợc các thông tin trên thì chúng ta sẽ dễ dàng hình thành đợc một hình ảnh chung cho tất cả các ngời sử dụng. Một khi hình ảnh của hệ thống và nhận thức của hệ thống xảy ra đồng thời thì có thể những ngời sử dụng sẽ cảm thấy thoải mái với ứng dụng đó và sử dụng nó có hỉệu quả hơn. Hình trình bày mối quan hệ giữa ngời dùng và ngời thiết kế thông qua các mẫu thiết kế để hình thành một hình ảnh giao diện đợc a thích.
Hình - Các mối quan hệ khi thiết kế giao diện.
ở Hình còn cho chúng ta thấy một mối quan hệ "vòng" giữa ngời thiết kế và các mẫu thiết kế. Tức là, ngời thiết kế phải biết chọn lựa mẫu thiết kế thích hợp dựa trên các thông tin thu nhặt đợc từ ngời sử dụng cho đến khi tạo ra đợc một mẫu thiết kế đợc ngời sử dụng yêu thích. Nh vậy, đây là một quá trình lập đi lập lại nhiều lần để tạo ra các phiên bản mới của ứng dụng cũng nh sửa đổi các lỗi phát sinh qua quá trình sử dụng. Các phần dới đây sẽ đề cập đến hầu hết các yêu cầu và phơng pháp để thiết kế một giao diện có hiệu quả.
a. Lựa chọn các kiểu thiết kế giao diện
Không phải tất cả các ứng dụng đều phải tuân theo một hình thức thiết kế giao diện nào đó, mà nó luôn đợc xây dựng dựa trên nhiều yếu tố từ ngời sử dụng và các kỹ thuật lập trình. Có nhiều kiểu thiết kế đã đợc tạo ra nhằm phục vụ cho giao diện ngời - máy. Mỗi kiểu điều có những đặc tính và khả năng khác nhau, nhng điều quan trọng là kiểu thiết kế phải phù hợp với nhiệm vụ đợc giao và với ngời sử dụng - ngời sẽ trực tiếp tham gia đối thoại với máy. Các chỉ tiêu quan trọng cần có để đánh giá cho mỗi kiểu giao diện là :
• Dễ sử dụng : Giao diện đó dễ sử dụng ngay cả đối với ngời sử dụng thiếu kinh nghiệm nh thế nào.
• Dễ học : Các lệnh và các chức năng của giao diện dễ học nh thế nào.
• Tốc độ thao tác : Giao diện có hiệu quả nh thế nào trong hạn định của các bớc thao tác, nhận lệnh và thời gian trả lời.
• Sự tinh vi : Chỉ rõ phạm vi nào của các chức năng đợc hạn định.
• Kiểm soát : Ngời sử dụng thực hiện hoặc bắt đầu kiểm soát việc đàm thoại với giao diện nh thế nào.
• Dễ phát triển : Giao diện phải đảm bảo các yếu tố lâu dài và có khả năng phát triển ở mức có thể.
Cuối cùng cần phải thực hiện các yếu tố cần thiết khi thiết kế một đối thoại với ngời sử dụng. ở đây, không có một quy tắc hay hình thức chung nào cho việc thiết kế nhng có một số hớng dẫn đợc sử dụng phổ biến :
• Thông tin phản hồi luôn luôn phải cung cấp cho ngời sử dụng để báo việc gì đang xảy ra. Mẫu thiết kế Hình ảnh hệ thống Mẫu thiết kế được yêu thích Người thiết kế (Designer) Sự nhận thức hệ thống (System perception) Người dùng
• Trạng thái : Cung cấp cho ngời sử dụng các thông báo về những phần hệ thống mà họ đang sử dụng.
• Thoát ra : Cho phép ngời sử dụng kết thúc một thao tác.
• Công việc tối thiểu : Tránh cho ngời sử dụng phải cố gắng nhiều khi thao tác.
• Ngầm định : Đặt sẵn những thông số thờng xuyên sử dụng nhất.
• Trợ giúp : Cung cấp các thông tin trợ giúp cần thiết.
• Huỷ : Ngời sử dụng có thể huỷ bỏ những điều đã làm mà xem nh không đúng và bắt đầu lại.
• Nhất quán : Khuôn khổ và sự thực hiện các lệnh phải đợc nhất quán thông qua giao diện.
b. Hiển thị thông tin
Nếu thông tin đợc thể hiện qua giao diện không đầy đủ (incomplete), mơ hồ (ambiguous) hay khó hiểu (unintelligible) thì ứng dụng sẽ không đáp ứng đợc nhu cầu của ng- ời sử dụng. Có nhiều cách để hiển thị thông tin khác nhau : bằng văn bản, hình ảnh, âm thanh; qua vị trí, kích thớc, sự chuyển động (motion); qua màu sắc (color), độ phân giải (resolution), và thậm chí cả sự loại bỏ (omission). Những hớng dẫn sau tập trung vào việc hiển thị thông tin :
• Chỉ hiển thị thông tin có liên quan (relevant) đến ngữ cảnh hiện tại.
• Không nên tập trung sâu (bury) dữ liệu vào ngời sử dụng, nên sử dụng một cách thể hiện đặc biệt để nhanh chóng đồng hoá thông tin (có thể thông qua các biểu đồ).
• Dùng các nhãn một cách nhất quán (consistent), rút gọn (abbreviations), và các màu mà có thể đoán trớc (predictable) các yêu cầu.
• Cho phép ngời sử dụng duy trì (maintain) ngữ cảnh trực quan. Khi hiển thị đồ hoạ thì nên duy trì hình ảnh gốc để ngời sử dụng biết đợc vị trí liên hệ hiện tại.
• Tạo các thông báo lỗi có ý nghĩa (meaningful error messages).
• Sử dụng các dạng chữ hoa và chữ thờng, các chỗ thụt vào (indentation) và gộp nhóm (grouping) văn bản để dễ hiểu hơn.
c. Nhập liệu
Trong nhiều ứng dụng, bàn phím vẫn là phơng tiện nhập liệu quan trọng đầu tiên. Nhng chuột, bộ số hoá và thậm chí cả hệ thống nhận dạng giọng nói cũng trở thành các thay thế có hiệu quả. Dới đây là các hớng dẫn tập trung vào việc thiết kế phơng pháp nhập liệu :
• Tối thiểu hoá các động tác nhập liệu. Điều này có thể hạn chế bằng cách sử dụng chuột để chọn từ tập dữ liệu xác định trớc, hạn chế các phạm vi của dữ liệu và sử dụng các macro nếu có thể.
• Duy trì sự nhất quán giữa hiển thị thông tin và nhập liệu. Các đặc điểm có thể thấy đợc của việc hiển thị nên đợc thực hiện qua miền nhập.
• Cho phép ngời sử dụng sửa chữa dữ liệu nhập. Một ngời sử dụng chuyên nghiệp có thể quyết định tạo hay bỏ qua một vài thông tin, trong trờng hợp này không nên đa ra các lời cảnh báo.
• Tơng tác không những nên năng động mà còn có thể điều chỉnh các chế độ a thích của ngời sử dụng về việc nhập liệu.
• Cung cấp sự trợ giúp cho tất cả các tác động nhập dữ liệu.
d. Màu sắc
Cần phải sử dụng màu một cách thận trọng, không nên dùng qúa nhiều màu và các màu phải hoà hợp. Đôi lúc cần dùng các màu sáng hoặc nhấp nháy để dễ phân biệt.
Có một nguyên tắc đợc khuyến cáo sử dụng là chỉ nên sử dụng tối đa 4 màu trên một màn hình (có khả năng lớn hơn nếu đồ thị cho phép) và 8 màu trong hệ thống.
e. Xử lý lỗi
Thông thờng các thông báo lỗi sẽ đa ra các thông tin tồi tệ (bad news) đến những ngời sử dụng hệ thống khi họ thực hiện một điều gì đó sai. Nhng có một vài trờng hợp thông tin lỗi đợc đa ra là không chính xác và gây sự chán nản cho ngời sử dụng. Nói chung, mọi thông báo lỗi đều do một hệ thống tơng tác tạo ra nên chúng có những đặc điểm riêng. Mặc dù vậy, khi tạo các thông báo lỗi cần phải quan tâm :
• Thông báo nên mô tả vấn đề bằng biệt ngữ (jargon) để ngời sử dụng có thể hiểu đợc dễ dàng.
• Thông báo nên đa ra chỉ dẫn hữu ích cho việc khôi phục lỗi.
• Thông báo nên chỉ ra bất kỳ kết quả lỗi tiêu cực nào để ngời dùng có thể kiểm tra, đảm bảo chúng không xảy ra nữa.
• Thông báo nên đợc kèm theo tín hiệu chỉ dẫn dễ nhìn thấy hay dễ nghe. Đó là tiếng kêu khi hiển thị thông báo lỗi kèm theo ánh sáng thoáng qua hay đợc hiển thị bằng màu để dễ nhận thấy nh là màu báo lỗi.
• Thông báo không nên có tính chất xét đoán, tức là không nên thông báo những từ ngữ khiển trách ngời sử dụng, bởi vì thật sự không ai muốn nhận một thông tin tồi. Không nhiều ngời muốn nhận đợc thông báo lỗi cho dù chơng trình có thiết kế tốt nh thế nào đi nữa. Nhng một thông báo lỗi mang tính triết lý có thể có ích để nâng cao chất lợng của một hệ thống tơng tác và sẽ có ý nghĩa đối với ngời sử dụng khi giải quyết vấn đề lỗi.
f. Công cụ trợ giúp
Một tiêu chuẩn chất lợng quan trọng của một ứng dụng chuyên nghiệp là phạm vi và độ hoàn chỉnh của hệ thống trợ giúp của nó. Thông thờng, đây là một khía cạnh ít đợc quan tâm của một chơng trình đợc thiết kế sơ sài. Các vấn đề dới đây cần phải đợc xem xét khi xác định một phơng tiện trợ giúp :
• Liệu phơng tiện trợ giúp có thể sử dụng đợc cho tất cả các chức năng và tại mọi thời điểm trong suốt quá trình tơng tác của hệ thống hay không?
• Ngời sử dụng sẽ yêu cầu sự trợ giúp nh thế nào?
• Phơng tiện trợ giúp sẽ đợc hiển thị nh thế nào?
• Ngời sử dụng sẽ trở lại tơng tác bình thờng nh thế nào?
Trong quá trình thiết kế hệ thống trợ giúp, nếu chúng ta trả lời đợc các câu hỏi trên thì tất yếu chơng trình sẽ trở thành một ứng dụng mang tính chuyên nghiệp.