Nền tảng thiết kế
Mặc dầu có nhiều phương pháp thiết kế phần mềm nhưng trong quá trình thiết kế, chúng ta đều sử dụng một số khái niệm làm nền tảng. Chúng được gọi là nền tảng thiết kế. Khái niệm trừu tượng là sự cho phép tập trung vào vấn đề ở mức tổng ...
Mặc dầu có nhiều phương pháp thiết kế phần mềm nhưng trong quá trình thiết kế, chúng ta đều sử dụng một số khái niệm làm nền tảng. Chúng được gọi là nền tảng thiết kế.
Khái niệm trừu tượng là sự cho phép tập trung vào vấn đề ở mức tổng quát nào đó, không xét tới các chi tiết mức thấp hơn không liên quan. Việc dùng trừu tượng hoá cho phép ta làm việc với khái niệm và thuật ngữ quen thuộc trong môi trường vấn đề mà không phải biến đổi chúng thành một cấu trúc không quen thuộc.
Khi xét vấn đề cho việc tìm ra giải pháp module, chúng ta có thể đặt ra nhiều mức độ trừu tượng. Tại mức trừu tượng cao nhất: phát biểu bằng ngôn ngữ môi trường của vấn đề. Tại mức trừu tượng thấp hơn, thường lấy khuynh hướng thủ tục; tại mức thấp nhất, giải pháp được phát biểu theo cách có thể cài đặt trực tiếp.
Trong mỗi bước của tiến trình đều là sự làm mịn cho một mức trừu tượng của giải pháp. Khi chuyển qua các mức trừu tượng khác nhau, chúng ta làm việc để tạo ra các trừu tượng thủ tục, trừu tượng dữ liệu và trừu tượng điều khiển.
Trừu tượng thủ tục: là một dãy các lệnh có tên, có một chức năng xác định và giới hạn.
Trừu tượng dữ liệu: là tập hợp các dữ liệu có tên mô tả cho một sự vật dữ liệu. Đối tượng dữ liệu này thực chất là một tập hợp nhiều mẫu thông tin khác nhau và ta có thể tham khảo tới bằng cách nói tên của trừu tượng dữ liệu. Trừu tượng dữ liệu làm cho người thiết kế có thể xác định một sự vật dữ liệu trong hoàn cảnh các thao tác (thủ tục) có thể áp dụng vào nó.
Trừu tượng điều khiển: áp dụng cho cơ chế điều khiển chương trình mà không xác định các chi tiết bên trong.
Làm mịn là chiến lược thiết kế trên xuống. Kiến trúc của một chương trình được phát triển bằng cách các mức làm mịn liên tiếp các thủ tục. Trong mỗi bước, một hay nhiều lệnh của chương trình đã cho được phân rã thành những lệnh chi tiết hơn. Việc phân rã hay làm mịn liên tiếp các đặc tả này kết thúc khi tất cả các lệnh đã được diễn đạt dưới dạng bất kỳ ngôn ngữ lập trình hay ngôn ngữ máy tính nền tảng nào. Khi các nhiệm vụ đã được làm mịn thì dữ liệu cũng phải được làm mịn, được phân rã hay cấu trúc lại.
Cần chú ý là mọi bước làm mịn đều kéo theo những quyết định thiết kế nào đó. Người lập trình cần nhận biết các tiêu chuẩn nền tảng cho quyết định thiết kế và sự tồn tại của các giải pháp khác.
Tính module
Phần mềm được chia thành các phần có tên riêng biệt và định địa chỉ được, gọi là các module. Các module được tích hợp để thỏa mãn yêu cầu của vấn đề.
Gọi C(x) là hàm xác định độ phức tạp cảm nhận được của vấn đề x, và E(x) là hàm xác định nổ lực cần có để giải quyết vấn đề x. Với hai vấn đề p, q ta có
Nếu C(p)>C(q) thì tổng quát ta suy ra E(p)>E(q) vì phải mất nhiều nổ lực hơn để giải quyết vấn đề khó hơn.
Một đặc trưng được chỉ qua thực nghiệm là: C(p+q)>C(p)+C(q)
Kiến trúc phần mềm được suy dẫn ra qua tiến trình phân hoạch đặt mối quan hệ giữa các phần tử của giải pháp phần mềm với các bộ phận của thế giới thực được xác định không tường minh trong phân tích yêu cầu.
Kiến trúc phần mềm gồm có hai đặc trưng quan trọng
khiển.
i. Cấu trúc phân cấp của các thành phần thủ tục (module): cấp bậc cây điều
ii. Cấu trúc dữ liệu.
1. Cấp bậc điều khiển
Cấp bậc điều khiển còn gọi là cấu trúc chương trình. Nó biểu thị cho cách tổ chức của các thành phần module.
khác.
Một số chỉ số trên cây điều khiển được quan tâm:
+ Chiều rộng: độ trải rộng toàn bộ của điều khiển.
+ Độ sâu: chỉ báo về số mới điều khiển
+ Số module ra: là độ đo số các module trực tiếp bị điều khiển của một module
+ Số module vào: số module trực tiếp điều khiển một module đã cho.
+ Thượng cấp: module điều khiển một module khác.
+ Thuộc cấp: một module bị module khác điều khiển.
+ Tính thấy được.
+ Tính nối được.
+ Tính cố kết,...
Cấu trúc chương trình và các chỉ số được minh hoạ như hình sau:
2 . Cấu tr ú c dữ liệu
Cấu trúc dữ liệu biểu diễn cho mối quan hệ logic giữa các phần dữ liệu riêng lẻ, một số cấu trúc dữ liệu thường sử dụng như: khoảng mục vô hướng, vector tuần tự, danh sách móc nối, không gian n chiều, cây cấp bậc,...
Ta xét phần mềm P cần giải quyết qua phần mềm và giải pháp phần mềm S
được chọn như hình sau:
1
Rõ ràng, khi giải quyết một vấn đề, chúng ta có nhiều giải pháp phần mềm. Mỗi giải pháp Si ta có một cấu trúc khác nhau.
Xét bài toán P được cho như sau
Ta thấy, mỗi cấu trúc dựa trên nền tảng khác nhau về khái niệm thiết kế "tốt" và câu hỏi "cái nào tốt nhất" chúng ta rất khó để trả lời nếu không muốn nói là không trả lời được. Chi tiết của vần đề này được bàn chi tiết ở mục 4.6.
Che dấu thông tin là khái niệm các module nên được đặc trưng bởi những quyết định thiết kế mà ẩn kín với mọi module khác, thông tin chứa trong module này không thể thâm nhập tới được từ các module khác không cần đến những thông tin đó. Che dấu thông tin kéo theo việc xác định một tập module độc lập mà trao đổi giữa các module chỉ là các thông tin thật sự cần thiết cho việc vận hành phần mềm.
Che dấu thông tin là một tiêu chuẩn thiết kế đối với hệ thống module vì những lợi ích mà nó mang lại. Khi có sai sót xảy ra, sự thay đổi sẽ ít có khả năng lan truyền sang những vị trí khác bên trong phần mềm.
Sự trừu tượng hóa và che dấu thông tin được dùng để thiết kế module. Bên trong cấu trúc chương trình, các module có thể được phân loại:
+ Module tuần tự: được tham khảo và thực hiện không bị ngắt
+ Module tăng trưởng: có thể bị ngắt trước khi hoàn tất và sau đó chạy lại tại thời điểm ngắt.
+ Module song song: thực hiện đồng thời với module khác. Với mỗi module cần có:
+ tính độc lập chức năng,
+ tính cố kết,
+ tính gắn nối,...