II. NỀN TẢNG THIẾT KẾ PHẦN MỀM:
4. Kiến trúc phần mềm
Khái niệm: Kiến trúc phần mềm là hiện thân của những quyết định thiết kế sớm nhất để đạt đến đích của những nhu cầu về chức năng và phi chức năng quan trọng nhất. Việc xem xét lại kiến trúc phần mềm là một phương thức phát triển phần mềm để đánh giá các quyết định thiết kế kiến trúc, chú ý tới những thuộc tính chất lượng mong muốn (những nhu cầu phi chức năng, như sự thực thi, tính bảo mật, độ tin cậy, tính khả dụng, khả năng thay đổi, chi phí, …). Phương thức này được nhìn nhận như là một trong những kỹ thuật quan trọng và mang lại hiệu quả đúng như dự kiến và làm giảm thiểu những rủi ro thuộc về kiến trúc
Mối liên hệ giữa vấn đề và giải pháp: Trước mỗi vấn đề đặt ra, kỹ sư phần mềm phải đưa ra giải pháp cho kiến trúc phần mềm sao cho vẫn đề được giải quyết hiệu quả mà không quá phức tạp. Ta có thể mô hình hoá quá trình này bằng hình vẽ sau đây:
P1 P4 P4 P3 P2 P5 Vấn đề cần giải quyết Giải pháp phần mềm P1 P3 P2 P5 P4
Với 1 vấn đề P, ta có thể đưa ra rất nhiều giải pháp S khác nhau, từ đó đưa đến nhiều kiến trúc hệ thống khác nhau. Tiêu chuẩn cơ bản ở đây là đảm bảo được mức độ càng đơn giản càng tốt mà vẫn thực hiện được các chức năng. Việc giải quyết vấn đề từ P sang S không những chỉ là kĩ thuật mà còn là nghệ thuật của kỹ sư phần mềm, hoàn toàn tương tự như kến trúc
sư với mỗi công trình xây dựng. Vì thế trước mỗi vấn đề thực tế đặt ra, kỹ sư phần mềm phải lựa chọn 1 giải pháp phần mềm gọn nhẹ không quá phức tạp, nhưng lại hiệu quả.