Architect thường dùng để mô tả tổng quát (high-level)
Design thưởng dùng để mô tả chi tiết (low-level).
Functional Requirements (yêu cầu tính năng): functional requirements xác định hành vi của hệ thống khi người dùng nhập đầu vào. Ví dụ, một yêu cầu tính năng là upload video trên Instagram, và followers có thể xem video đó. Với tình năng này có thể chia ra thành các loại yêu cầu như:
Constraints: về mặt authorization, chỉ followers mới quyền xem video của người đăng đó
Stakeholder (các bên liên quan): Đầu tiên và quan trọng nhất anh em phải xác định được người dùng (user) và khách hàng (client) của hệ thống là ai? vì business lấy user và client làm trung tâm. Ngoài ra, khi anh em thay đổi 1 hệ thống đang chạy cần đánh giá ảnh hưởng và thông báo cho các bên liên quan.
Scope, Timeline: Giới hạn vi phạm công việc. Anh em không thể design cho tất cả tính năng trong 45-60 phút khi phỏng vấn (format chung), mà chọn lấy những feature ăn điểm để trình bày. Hay làm startup không thể 1 năm trời không cho ra một sản phẩm gì.
Existing System (hệ thống đang chạy): khi phải sửa một hệ thống cũ đang chạy, anh em cần nắm được SAD (System Architecture Diagram), interfaces, giao thức giữa các component và hệ thống bên ngoài. Đôi khi có những thành phần không thể thay thế, đó là ràng buộc (constraints) dẫn đến xảy ra đánh đổi (trade-off) khi chuyển giao (migrate) sang thiết kế mới. Anh em nhớ đánh giá kỹ ảnh hưởng (impact) nhé. Constraints (ràng buộc): Ngoài những ràng buộc của hệ thống cũ, chúng ta có thể có ràng buộc về tài nguyên như:
Architecture Characteristics (non-functional requirements): dùng để mô tả tính chất hoặc chất lượng của một hệ thống.
Khi thêm hoặc thay đổi thứ tự các tính chất của hệ thống sẽ làm tăng độ phức tạp (complexity) hoặc thay đổi cường độ của các tính chất khác của hệ thống
Thứ tự và số lượng characteristics có thể thay đổi theo thời gian. Ví dụ, anh em có công ty startup thì cần đưa sản phẩm nhanh ra thị trường và cần tối ưu nguồn lực nên tính linh hoạt (agility) và tài nguyên (cost) được ưu tiêu. Khi công ty anh em lớn thành enterprise thì 2 yếu tố này không còn được đặt lên hàng đầu mà thay vào đó là khả năng mở rộng (scalability), tính bảo mật (security) và tính tin cậy (reliability)
Metrics: tính chất hệ thống là một cái gì đó trừu tượng. Những chỉ số, thông số (metrics) dùng để lượng hóa và đánh giá tính chất của hệ thống. Anh em lưu ý số metrics sau:
Điều kiện cần:
Đáp ứng đúng và đủ chức năng nghiệp vụ (functional requirements)
Giảm thiểu nguồn lực dùng để xây dựng và bảo trì hệ thống. Đó là mục đích của một kiến trúc sạch (Clean Architect)
Đáp ứng đủ các tính chất của hệ thống (architecture characteristics) phù hợp với những ràng buộc hiện tại. Để làm được việc này anh em phải suy nghĩ thấu đáo để giải quyết triệt để các vấn đề từ phần cứng (hardware) cho đến phần mềm (software), dữ liệu được lưu trữ và di chuyển một cách tối ưu.