6. Thiết kế thuật toán: Các cách thức (ph−ơng pháp xử lý) đ−ợc dùng để cung cấp cho các dịch vụ đ−ợc thiết kế chi tiết và đ−ợc đặc tả.
4.1.1.3. Ph−ơng pháp thiết kế.
Trong nhiều tổ chức, việc thiết kế phần mềm vẫn còn là một quá trình tự học. Bằng cách cho một tập hợp các yêu cầu (th−ờng là bằng ngôn ngữ tự nhiên) ng−ời ta có một thiết kế không hình thức. Bắt đầu việc mã hoá và thiết kế đ−ợc cải biến trong quá trình thực hiện. Khi giai đoạn thực hiện kết thúc thì thiết kế đã bị biến đổi sản phẩm so với đặc tả ban đầu đến mức mà các tài liệu thiết kế ban đầu là một mô tả hoàn toàn khác với cái đ−ợc tạo ra.
Một cách tiếp cận có ph−ơng pháp là “ph−ơng pháp cấu trúc”. Đó là ph−ơng pháp làm mịn kiến trúc phần mềm theo cách thức từ trên xuống. Các khía cạnh thủ tục của định nghĩa thiết kế đã tiến hoá thành một triết lý gọi là lập trình có cấu trúc.
Ph−ơng pháp cấu trúc đ−ợc dùng rộng rãi trong những năm đầu của những năm 1980. Nó đã đ−ợc dùng thành công trong nhiều dự án lớn, nó làm giảm giá thành một cách đáng kể, sử dụng đ−ợc các khái niệm chuẩn và đảm bảo rằng việc thiết kế tuân theo một chuẩn nhất định. Các công cụ CASE (Computer Aided Software Engineering – thiết kế phần mềm có máy tính hỗ trợ) đã đ−ợc dùng để trợ giúp cho ph−ơng pháp này.
Thiết kế giao diện Thiết kế dữ liệu
Thiết kế chi tiết Khía cạnh
quản lý
Khía cạnh kỹ thuật
Các ph−ơng pháp thiết kế th−ờng trợ giúp một vài cách nhìn nhận hệ thống nh− sau:
● Nhìn nhận cấu trúc: Cho cái nhìn cấu trúc thông qua l−ợc đồ cấu trúc.
● Nhìn nhận quan hệ thực thể: Mô tả cấu trúc dữ liệu logic th−ờng dùng, đề cập đến đặc tả dữ liệu quan hệ thực thể.
● Nhìn nhận dòng dữ liệu: Về l−ợc đồ dòng dữ liệu.
Ng−ời ta còn dùng l−ợc đồ chuyển trạng thái để bổ sung cho ph−ơng pháp trên.
Để đảm bảo chất l−ợng cho một biểu diễn thiết kế, cần có các tiêu chuẩn cho thiết kế tốt. Song về mặt ph−ơng pháp, chúng ta đ−a ra các h−ớng dẫn sau:
1. Thiết kế nên đ−a ra cách tổ chức theo cấp bậc để dùng cách kiểm soát thông minh trong số các thành phần phần mềm.
2. Thiết kế nên theo các module, tức là phần mềm nên đ−ợc phân hoạch một cách logic thành các thành phần thực hiện chức năng hay các chức năng con xác định.
3. Thiết kế nên chứa cách biểu diễn phân biệt và tách biệt giữa dữ liệu và thủ tục. 4. Thiết kế nên dẫn tới các module (nh− ch−ơng trình con hay thủ tục) nêu ra các
đặc tr−ng chức năng đặc biệt.
5. Thiết kế nên dẫn đến giao diện là rút gọn độ phức tạp của việc nối ghép lại giữa các module và với môi tr−ờng bên ngoài.
6. Thiết kế nên đ−ợc h−ớng theo cách dùng một ph−ơng pháp lặp lại đ−ợc điều khiển bởi thông tin có trong phân tích các yêu cầu phần mềm.
Các đặc tr−ng trên của một thiết kế tốt có đ−ợc khi thực hiện đúng tiến trình thiết kế kỹ nghệ phần mềm thông qua việc áp dụng các nguyên lý thiết kế cơ bản, ph−ơng pháp luận hệ thống và xét duyệt thấu đáo.
Nh− vậy, mỗi ph−ơng pháp thiết kế phần mềm đều đ−a vào những ph−ơng pháp trực cảm và lý pháp duy nhất, cũng nh− một cách nhìn thiển cận thế nào đó về cái gì đặc tr−ng cho chất l−ợng thiết kế
Tuy vậy mỗi ph−ơng pháp đều có những đặc tr−ng sau:
1. Một cơ chế để chuyển hoá từ biểu diễn miền thông tin thành biểu diễn thiết kế
2. Một kí pháp để biểu diễn các thành phần chức năng và dao diện của chúng 3. Các trực cảm để làm mịn và phân hoạch
4. Các h−ớng dẫn về định giá chất l−ợng
Bất kể ph−ơng pháp luận thiết kế nào đ−ợc dùng, công trình s− phần mềm phải áp dụng một tập các khái niệm nền tảng cho thiết kế dữ liệu, kiến trúc và thủ tục:
Trừu t−ợng Modul Kiến trúc phần mềm. Cấp bậc điều khiển Cấu trúc dữ liệu Thủ tục phần mềm Che dấu thông tin
Tập các khái niệm thiết kế nền tảng đã tiến hoá hơn ba thập kỷ. Mỗi khái niệm đều cung cấp cho ng−ời thiết kế phần mềm một nền tảng để từ đó ng−ời ta có thể áp dụng nhiều ph−ơng pháp thiết kế phức tạp
Theo M.A.Jackson: “Cái bắt đầu của sự khôn ngoan đối với kỹ s− phần mềm là thừa nhận sự bắt đầu làm ch−ơng trình và hiểu vấn đề một cách đúng đắn”. Các khái niệm thiết kế phần mềm nền tảng cung cấp một khuôn khổ cần thiết để “hiểu vấn đề một cách đúng đắn”.