Tôi xin phép có sự khác biệt: UML có thể được sử dụng cho kiến trúc ứng dụng, nhưng thường được sử dụng cho kiến trúc kỹ thuật (khung, biểu đồ lớp hoặc trình tự, ...), bởi vì đây là nơi những sơ đồ đó có thể dễ dàng được giữ đồng bộ với sự phát triển .
Kiến trúc ứng dụng xảy ra khi bạn sử dụng một số đặc tả chức năng (mô tả bản chất và các luồng hoạt động mà không đưa ra bất kỳ giả định nào về việc triển khai trong tương lai) và bạn chuyển đổi chúng thành đặc điểm kỹ thuật.
Các thông số kỹ thuật đó đại diện cho các ứng dụng bạn cần để thực hiện một số nhu cầu kinh doanh và chức năng.
Vì vậy, nếu bạn cần xử lý một số danh mục tài chính lớn (đặc điểm kỹ thuật chức năng), bạn có thể xác định rằng bạn cần chia đặc điểm kỹ thuật lớn đó thành:
- một người điều phối để chỉ định những tính toán nặng nề đó cho các máy chủ khác nhau
- một trình khởi chạy để đảm bảo tất cả các máy chủ tính toán được thiết lập và chạy trước khi bắt đầu xử lý các danh mục đầu tư đó.
- GUI để có thể hiển thị những gì đang diễn ra.
- một thành phần "chung" để phát triển các thuật toán danh mục đầu tư cụ thể, độc lập với phần còn lại của kiến trúc ứng dụng, để tạo điều kiện cho kiểm thử đơn vị, nhưng cũng có một số kiểm tra chức năng và hồi quy.
Vì vậy, về cơ bản, suy nghĩ về kiến trúc ứng dụng là quyết định "nhóm tệp" nào bạn cần phát triển theo một cách thống nhất (bạn không thể phát triển trong cùng một nhóm tệp như launcher, GUI, dispatcher, ...: chúng sẽ không thể phát triển với tốc độ tương tự)
Khi một kiến trúc ứng dụng được xác định rõ, mỗi thành phần của nó thường là một ứng cử viên sáng giá cho một thành phần cấu hình , đó là một nhóm tệp có thể được phiên bản hóa thành một VCS (Hệ thống kiểm soát phiên bản), có nghĩa là tất cả các tệp của nó sẽ được gắn nhãn cùng nhau mỗi khi bạn cần ghi lại ảnh chụp nhanh của ứng dụng đó (một lần nữa, sẽ rất khó để gắn nhãn cho tất cả hệ thống của bạn, mỗi ứng dụng của nó không thể ở trạng thái ổn định cùng một lúc)