CHƯƠNG 4 : THIẾT KẾ PHẦN MỀM
1. Tổng quan về thiết kế phần mềm
1.2. Tiến trình thiết kế
Thiết kế có cấu trúc cho phép biến đổi thuận tiện từ các biểu diễn thông tin
như biểu đồ luồng dữ liệu có trong bản Đặc tả yêu cầu phần mềm sang mô tả về
cấu trúc chương trinh. Việc biến đổi từ luồng thông tin sang cấu trúc thông tin được
thực hiện như một phần của tiến trình gồm 5 bước:
■ Thiết lập kiểu luồng thông tin.
■ Chi ra biên giới luồng.
■ Ánh xạ DT’D vào cấu trúc chương trình
■ Xác định các cấp bậc điều khiển theo cách tạo nhân to
■ Cấu trúc kết quả được làm mịn bằng cách dùng các phương tiện thiết kế và
trực cảm.
Khi luồng thông tin là bộ dẫn lái cho cách tiếp cận ánh xạ ở bước 3.
1.3. Chất lượng thiết kế Chất lượng phần mềm là gì?
Chất lượng phần mềm là phần mềm có số lượng lỗi chấp nhận được, được phân phối đúng thời hạn và trong ngân sách, đáp ứng các yêu cầu hoặc kỳ vọng, và có thể duy trì được.
Tiêu chuẩn ISO 8402-1986 định nghĩa chất lượng là một tổng số các tính năng và
đặc điểm của sản phẩm hoặc dịch vụ mang khả năng đáp ứng các nhu cầu đã nêu
hoặc ngụ ý.
Các khía cạnh chính của phần mềm chất lượng cho khách hàng bao gồm:
• Thiết kế đẹp
• Chức năng tốt – phần mềm hoạt động tốt
• Đáng tin cậy - mức độ sự cố hoặc lỗi chấp nhận được
• Tính nhất qn
• Bền - kéo dài
• Dịch vụ hậu mãi tốt
• Giá trị của đồng tiền
Thiết kế tốt là gì
Sẽ rất quan trọng để có một thiết kế tốt. Ứng dụng hoặc sản phẩm phải đáp ứng tất cả các thông số kỹ thuật yêu cầu và đồng thời nó phải thân thiện với người dùng.
Các khách hàng về cơ bản bị thu hút bởi ngoại hình đẹp và phong cách của ứng
dụng. Sự kết hợp màu sắc phù hợp, kích thước phơng chữ và kiểu dáng của văn bản
và nút là rất quan trọng.
Chức năng tốt - nó hoạt động tốt
Cùng với vẻ ngoài đẹp mắt của ứng dụng hoặc sản phẩm, nó rất quan trọng là chức
năng phải cịn ngun vẹn. Tất cả các tính năng và chức năng của chúng nên hoạt động như mong đợi. Khơng nên có bất kỳ sai lệch nào trong kết quả thực tế và kết
quả mong đợi.
Sau khi tester đã kiểm tra tất cả các tính năng và chức năng của phần mềm, điều rất quan trọng là ứng dụng hoặc sản phẩm phải đáng tin cậy. Ví dụ: Có một ứng dụng
lưu hồ sơ của sinh viên. Ứng dụng này sẽ lưu tất cả các hồ sơ của sinh viên và
không nên thất bại sau khi nhập 100 hồ sơ. Điều này được gọi là độ tin cậy.
Tính nhất quán
Phần mềm nên có tính nhất qn trên tồn bộ ứng dụng hoặc sản phẩm. Phần mềm
đơn có thể là đa chiều. Điều rất quan trọng là tất cả các kích thước khác nhau phải
hành xử một cách nhất quán.
Bền - kéo dài
Phần mềm phải bền. Ví dụ: nếu phần mềm đang được sử dụng trong một năm và số
lượng dữ liệu đã vượt quá 5000 bản ghi thì khơng nên thất bại nếu số lượng bản ghi tăng. Sản phẩm hoặc ứng dụng phần mềm nên tiếp tục hoạt động theo cùng một
cách mà khơng có bất kỳ sự phá vỡ chức năng nào.
Dịch vụ hậu mãi tốt
Sau khi sản phẩm được chuyển đến khách hàng, bảo trì sẽ được đưa vào hình ảnh.
Điều rất quan trọng là cung cấp dịch vụ bán hàng tốt để giữ cho khách hàng hài
lịng. Ví dụ, nếu sau khi sử dụng sản phẩm trong sáu tháng, khách hàng nhận ra
một số thay đổi cho ứng dụng thì những thay đổi đó nên được thực hiện nhanh nhất
có thể và nên được gửi đến khách hàng đúng thời gian với chất lượng.
Giá trị của đồng tiền
Nó ln ln quan trọng để cung cấp sản phẩm cho khách hàng có giá trị đồng tiền.
Sản phẩm phải đáp ứng các thơng số kỹ thuật u cầu. Nó nên hoạt động như mong đợi, nên thân thiện với người dùng. Chúng tôi nên cung cấp dịch vụ tốt cho khách
hàng. Khác với các tính năng được đề cập trong thơng số kỹ thuật yêu cầu, một số chức năng bổ sung có thể được cung cấp cho khách hàng mà họ có thể khơng nghĩ
tới. Những chức năng bổ sung này sẽ làm cho sản phẩm của họ thân thiện hơn và dễ sử dụng hơn. Điều này cũng thêm giá trị đồng tiền.
2. Thiết kế kiến trúc
2.1. Khái niệm và vai trò
Một số vấn đề quan trọng phải được xử lý trong khi thiết kế phần mềm. Đặc biệt
là những lo ngại về chất lượng phần mềm mà có thể kể đến như: hiệu suất, bảo
mật, độ tin cậy, khả năng sử dụng, vv... Một số vấn đề quan trọng khác là làm thế
nào để phân rã, tổ chức và đóng gói những thành phần phần mềm. Đây là nguyên
tắc cơ bản mà tất các các phương pháp thiết kế phải giải quyết nó bằng cách này
hay cách khác. Ngược lại, những vấn đề “liên quan đến các khía cạnh của các hành vi phần mềm mà lại không nằm trong miền ứng dụng mà nằm ở các miền khác có liên quan” Những vấn đề đó thường xuyên chồng chéo với các chức năng
của hệ thống và được gọi những khía cạnh mà đa phần không phải là đơn vị phân
rã của phần mềm mà là thuộc tính ảnh hưởng đến hiệu suất hoặc ngữ nghĩa của các thành phần một cách có hệ thống.
Đồng thời (concurrency)
Đồng thời là nhiều việc xảy ra tại cùng một thời điểm. Thiết kế để có tính đồng
thời có liên quan đến phân rã phần mềm thành quy trình, nhiệm vụ, q trình và
đối phó với các vấn đề liên quan đến tính hiệu quả, tính nguyên tố, đồng bộ hóa
và lập kế hoạch. Thiết kế này đảm bảo dễ phân chia cơng việc cũng như có thể hồn thành cơng việc trong thời gian ngắn nhất.
Vấn đề thiết kế này liên quan tới làm thế nào tổ chức dữ liệu và dòng dữ liệu cũng
như làm thế nào để xử lý các sự kiện tạm thời và phản xạ qua các cơ chế lời gọi ngầm và gọi lại.
Dữ liệu bền vững (data persistence)
Vấn đề của thiết kế này liên quan tới làm thế nào để xử lý dữ liệu tồn tại lâu dài
Phân phối các thành phần
Vấn đề của thiết kế này liên quan đến làm thế nào để phân phối các phần mềm
trên phần cứng ( bao gồm phần cứng máy tính và phần cứng mạng), làm thế nào các thành phần giao tiếp được với nhau và làm thế nào tầng giữa có thể được sử
dụng để đối phó với khơng tương thích phần mềm.
Lỗi và xử lý ngoại lệ và lỗi dung nạp (error and exception handling and fault tolerance)
Vấn đề của thiết kế này liên quan đến làm thế nào để phòng chống, chịu đựng và
các xử lý lỗi và đối phó với các điều kiện ngoại lệ
Tương tác và trình bày (Interaction and presentation)
Vấn đề thiết kế này liên quan tới làm thế nào để cấu trúc và tổ chức tương tác với
những người dùng và biểu diễn thơng tin ( ví dụ, chia giao diện và khung nhìn logic sử dụng hướng tiếp cận MVC)
Chú ý rằng chủ đề này không chỉ chi tiết giao diện người dùng, đó là nhiệm vụ
của thiết kế giao diện người dùng
Bảo mật (sercurity)
Thiết kế cho bảo mật liên quan đến làm thế nào để ngăn chặn tiết lộ trái phép, sáng tạo, thay đổi, xóa, hoặc từ chối truy cập đến thơng tin từ các nguồn khác. Nó
cũng quan tâm làm thế nào để chịu được các cuộc tấn công bảo mật hoặc sự xâm
phạm bởi hạn chế thiệt hại, tiếp tục dịch vụ, tốc độ sửa chữa và phục hồi, và thất
bại và phục hồi an toàn. Kiểm soát truy cập là một khái niệm an ninh cơ bản và ta cũng nên đảm bảo sử dụng đúng mật mã
2.2. Các mơ hình kiến trúc
Để tổ chức các hệ thống phần mềm, bạn có thể sử dụng các mẫu kiến trúc phổ biến dưới đây:
Kiến trúc phân lớp – Layered (n-tier) Architecture
Mẫu kiến trúc này có thể được sử dụng trong các hệ thống có thể được phân tách
thành các nhóm gồm nhiều cơng việc nhỏ. Đặc điểm:
• Các lớp khác nhau được xác định trong kiến trúc. Nó bao gồm lớp bên ngồi
và bên trong.
• Thành phần của lớp ngoài quản lý các hoạt động giao diện người dùng.
• Các thành phần thực thi giao diện hệ điều hành ở lớp bên trong.
• Các lớp bên trong là lớp ứng dụng, lớp tiện ích và lớp lõi.
Kiến trúc hướng sự kiện – Event-driven architecture
Nhiều chương trình dành phần lớn thời gian để chờ đợi điều gì đó xảy ra. Điều này
đặc biệt đúng đối với các máy tính làm việc trực tiếp với con người. Nhưng nó cũng phổ biến trong các lĩnh vực như mạng. Đơi khi có dữ liệu cần xử lý và những lần khác thì khơng.
Kiến trúc hướng sự kiện giúp quản lý điều này bằng cách xây dựng một đơn vị trung tâm quản lý tất cả dữ liệu. Sau đó, dữ liệu sẽ được đưa đến các modules riêng biệt để xử lý.
Nó là một mơ hình kiến trúc dựa trên việc phân chia cơng việc cho một ứng dụng hoặc hệ thống thành các đối tượng có thể tái sử dụng và tự cung cấp. Kiến trúc
hướng đối tượng xem một hệ thống phần mềm như một tập hợp các thực thể được gọi là các đối tượng.
3. Thiết kế hệ thống hướng chức năng
3.1. Thiết kế dữ liệu
Đây là lối tiếp cận truyền thống của ngành Công nghệ phần mềm. Theo lối tiếp cận
này, chúng ta quan tâm chủ yếu tới những thông tin mà hệ thống sẽ lưu trữ. Chúng ta hỏi người dùng xem họ sẽ cần những thông tin nào, rồi chúng ta thiết kế ngân hàng dữ liệu để chứa những thơng tin đó, cung cấp Forms để nhập thông tin và in báo cáo để trình bày các thơng tin. Nói một cách khác, chúng ta tập trung vào thông tin và không mấy để ý đến những gì có thể xảy ra với những hệ thống đó và cách hoạt động (ứng xử) của hệ thống là ra sao. Đây là lối tiếp cận xoay quanh dữ liệu và đã được áp dụng để tạo nên hàng ngàn hệ thống trong suốt nhiều năm trời.
Lối tiếp cận xoay quanh dữ liệu là phương pháp tốt cho việc thiết kế ngân hàng dữ
liệu và nắm bắt thông tin, nhưng nếu áp dụng cho việc thiết kế ứng dụng lại có thể khiến phát sinh nhiều khó khăn. Một trong những thách thức lớn là yêu cầu đối với các hệ thống thường xuyên thay đổi. Một hệ thống xoay quanh dữ liệu có thể dể dàng xử lý việc thay đổi ngân hàng dữ liệu, nhưng lại khó thực thi những thay đổi trong nguyên tắc nghiệp vụ hay cách hoạt động của hệ thống.
Phương pháp hướng đối tượng đã được phát triển để trả lời cho vấn đề đó. Với lối tiếp cận hướng đối tượng, tập trung vào cả hai mặt của vấn đề : thông tin và cách hoạt động.
3.2. Thiết kế xử lý
Thiết kế phần mềm thường được xem như là một quy trình 2 bước:
Thiết kế kiến trúc (cũng được xem như là thiết kế mức cao high- level design or top- level design) mô tả phầm mềm được tổ chức thành các thành phần như thế nào
Thiết kế chi tiết mô tả hành động mong muốn của những thành phần
Đầu ra của 2 quy trình này là tập mơ hình và tài liệu ghi lại những những quyết định quan trọng đã được thực hiện cùng lời giải thích cho mỗi lý do. Bằng cách
ghi lại các lý do đó cơng việc bảo trì dài hạn của phần mềm được nâng cao.
4. Thiết kế hệ thống hướng đối tượng