d. Độ phức tạp: Độ phức tạp của các thuật toán dùng để thực hiện thành phần đó nh− thế nào?
4.1.3.4. Sự thích nghi đ−ợc (adaptability)
Nếu một thiết kế nhằm đ−ợc bảo trì thì nó phải sẵn sàng thích nghi đ−ợc. Dĩ nhiên điều này say ra rằng các thành phần của nó lên đ−ợc ghép nối một cách lỏng lẻo (thể hiện tính linh động). Tuy nhiên sự thích nghi đ−ợc cũng có nghĩa là t− liệu của thiết kế đó phải đ−ợc viết ra sao cho ng−ời dùng dễ đọc.
Một thiết kế dễ thích nghi hẳn là có mức nhìn thấy đ−ợc cao. Mối quan hệ rõ ràng giữa các mức khác nhau của thiết kế. Ng−ời đọc khi đọc bản thiết kế phải thấy đ−ợc các biển hiện liên quan sao cho l−ợc đồ cấu trúc biểu diễn biểu đồ luồng dữ liệu.
Cần phải dễ dàng kết hợp chặt chẽ các biến đổi của thiết kế trong toàn bộ bản thiết kế. Vì nếu không nh− vậy thì những sự thay đổi của thiết kế có thể sẽ không đ−ợc đ−a vào trong các mô tả liên quan. T− liệu thiết kế có thể trở nên không thống nhất. Các biến đổi tiếp theo là khó thực hiện (điều này cho thấy thành phần thiết kế này là ít có tính thích nghi đ−ợc) ví sự cải biến đó không thể đ−a vào vì nh− vậy có thể là mất tính nhất quán của t− liệu thiết kế.
Để có độ thích nghi tối −u thì một thành phần đều phải tự chứa. Một thành phần có thể là ghép nối lỏng lẻo theo nghĩa chỉ liên hệ với các thành phần khác thông quan việc truyền các thông báo (tín hiệu - message). Điều này không giống nh− là sự tự chứa vì rằng các thành phần này có thể dựa trên các thành phần khác, chẳng hạn các chức năng hệ thống hoặc các chức năng xử lý lỗi. Sự thích nghi với một thành phần có thể dính líu đến sự thanh đổi các thành phần trong đó mà nó dựa trên các chức năng ngoài đối t−ợng nên đặc tả các chức năng ngoại này cũng phải xét đến sự cải biến đó.
Muốn là tự chứa một cách hoàn toàn thì mỗi thành phần không nên s− dụng các thành phần khác đ−ợc xác đinh ngoại lai. Tuy nhiên điều này lại mâu thuẫn với kinh nghiệm cho thấy các thành phần hiện có nên có tính sử dụng lại đ−ợc (kế thừa). Vậy nên cần có sự cân đối giữa tính −u việt của sử dụng lại các thành phần và sự mất tính thích nghi của thành phần đó.
Một trong những tính −u việt nhất của thừa kế trong thiết kế h−ớng đối t−ợng là các thành phần này có thể sẵn sàng thích nghi đ−ợc. Cơ chế thích nghi đ−ợc này không dựa trên việc cải biến các thành phần đó mà dựa trên việc tạo ra một thành phần mới có thừa kế các thuộc tính và phép toán của thành phần gốc. Chỉ các thuộc tính và phép toán cần phải biến đổi mới đ−ợc cải biến. Các thành phần dựa trên thành phần cơ bản đó là không bị ảnh h−ởng gì.
Chỉ riêng tính thích nghi này là lý do duy nhất vì sao các ngôn ngữ h−ớng đối t−ợng là hữu hiệu đến vậy trong việc tạo mẫu nhanh. Tuy nhiên với các hệ thống tồn tại lâu dài thì vấn đề thừa kế là ngày càng có nhiều thay đổi cần thực hiện. Sơ đồ (mạng l−ới) kế thừa ngày càng phức tạp. Các chức năng th−ờng là đ−ợc nhân bản ở các điểm trong mạng là các thành phần khó mà có thể hiểu đ−ợc. Kinh nghiệm của lập trình h−ớng đối t−ợng đã chỉ ra rằng mạng kế thừa phải th−ờng xuyên đ−ợc rà xoát theo chu kỳ và phải đ−ợc cấu trúc lại nhằm thu gọn độ phức tạp của nó và giảm bớt các bản sao chức năng. Rõ ràng điều đó làm tăng chi phí cho thay đổi hệ thống.