問題一覧
1
Inversion of Control (loC).
2
Thiết kế chi tiết
3
Các giao diện truy cập dữ liệu.
4
Sử dụng các phương thức trừu tượng để đơn giản hóa thông điệp.
5
Sử dụng Microservices Architecture thay vì Layered Architecture
6
Đảm bảo tính tiếp tục (continuity) của các thông điệp trên sequence diagram.
7
Vì CDR là một buổi họp kỹ thuật, không phù hợp với khách hàng không chuyên môn kỹ thuật.
8
Phân tích độ bền (Robustness analysis).
9
Để đảm bảo chúng khớp với các chức năng trên sequence diagram.
10
Ảnh hưởng: Hệ thống trở nên khó bảo trì; xử lý: Chuyển logic xử lý sang các lớp service.
11
Tách lớp boundary thành nhiều lớp nhỏ hơn, mỗi lớp đảm nhận một trách nhiệm.
12
Xây dựng kiến trúc đúng, truyền đạt và đảm bảo tất cả các bên hiểu rõ.
13
Cấu hình DispatcherServlet trong file XML hoặc annotation.
14
Chia nhỏ sequence diagram thành các diagram nhỏ hơn theo từng kịch bản.
15
Vi phạm: Giao tiếp giữa các lớp domain không được kiểm soát; xử lý: Thêm một lớp controller để điều phối thông điệp.
16
Mô hình dữ liệu, gói/thành phần và triển khai
17
Khi use case quá phức tạp để thể hiện trong một diagram
18
Xác định cấu trúc hệ thống nhằm đáp ứng các yêu cầu kinh doanh và dịch vụ.
19
Layered Architecture.
20
Chuyển một phần logic vào service layer.
21
Hệ thống không thể truy cập hoặc thao tác dữ liệu đúng cách.
22
Actors, boundary objects, và messages.
23
Sử dụng Inversion of Control (loC) để quản lý dependency.
24
Để hệ thống có thể xử lý các tình huống bất thường.
25
Phân bổ hành vi sẽ không rõ ràng, gây khó khăn khi thiết kế chi tiết.
26
Thiết kế sẽ thiếu các phương thức cần thiết.
27
Thời gian tồn tại của các đối tượng trong hệ thống
28
Ảnh hưởng: Lớp domain mất khả năng phản ánh logic nghiệp vụ; xử lý: Thêm các phương thức xử lý logic vào lớp.
29
Xác định lại boundary objects trong robustness diagram.
30
Chỉ đội thiết kế và phát triển.
31
Đơn giản hóa việc quản lý dữ liệu và giảm mã lặp lại.
32
Để đảm bảo rằng các đối tượng tồn tại đúng thời gian cần thiết.
33
Data Access Object (DAO).
34
Cập nhật class diagram để thêm các phương thức phù hợp với thông điệp.
35
Ảnh hưởng: Hệ thống không xử lý được các tình huống ngoại lệ; xử lý: Bổ sung các thông điệp vào sequence diagram.
36
Mô tả cách các đối tượng tương tác với nhau trong thời gian thực.
37
Đảm bảo rằng mỗi lớp chỉ có một lý do để thay đổi.
38
Flowcharts không thể hiện được việc phân bổ hành vi giữa các lớp.
39
Ảnh hưởng: Hệ thống không thể xử lý các trường hợp ngoại lệ; cải thiện: Vẽ thêm sequence diagrams cho các kịch bản thay thế.
40
Cập nhật use case text để bổ sung các chi tiết cần thiết.
41
Phân bổ lại thông điệp cho các lớp phù hợp dựa trên trách nhiệm của chúng.
42
Các lớp không có thuộc tính hoặc các lớp có quá nhiều trách nhiệm.
43
Vấn đề: Các phương thức không được hoàn thiện; xử lý: Thêm thông điệp trả về từ các đối tượng nhận.
44
Đảm bảo răng tất cả các thông điệp được đặt tên và có hướng rõ ràng.
45
Một phương thức hoặc một tập hợp phương thức.
46
Để đảm bảo rằng tất cả các chức năng được kiểm thử ở mức logic.
47
Khi một phương thức mới được xác định trong sequence diagram.
48
Chuyển yêu cầu của người dùng tới controller phù hợp.
49
Model, View, Controller.
50
Yêu cầu kinh doanh và dịch vụ đã phân tích kỹ lưỡng.
51
Vi phạm: Phân tách trách nhiệm; cách khắc phục: Chuyển logic nghiệp vụ sang lớp domain hoặc service.
52
Phân tách trách nhiệm (Responsibility-Driven Design).
53
Khi một diagram trở nên quá phức tạp hoặc có nhiều kịch bản thay thế.
54
Các lớp domain chỉ có thuộc tính mà không có hành vi.
55
Hệ thống sẽ thiếu giao diện để tương tác với người dùng.
56
Sequence diagrams hỗ trợ cập nhật và tinh chỉnh class diagrams.
57
Sequence diagrams mở rộng các controllers trong robustness diagrams thành các thông điệp.
58
DAO để cung cấp abstraction phù hợp cho nhiều cơ sở dữ liệu.
59
Để đảm bảo rằng logic nghiệp vụ được xử lý đúng và không bị lẫn vào các lớp khác.
60
Phân chia rõ ràng giữa Model, View, và Controller.
61
Nguyên nhân: Sai cấu hình mapping; kiểm tra file cấu hình DispatcherServlet.
62
Không xem xét khả năng mở rộng (scalability).
63
Mỗi use case cần một sequence diagram, bao gồm cả các kịch bản chính và thay thế
64
Sử dụng caching trong DAO để giảm số lượng truy vấn cơ sở dữ liệu.
65
ModelAndView.
66
Logging, user authentication, và transactions.
67
Truy câp dữ liệu mà không phụ thuộc vào loại cơ sở dữ liệu.
68
Chuẩn hóa cấu trúc dữ liệu.
69
Đảm bảo rằng thiết kế phù hợp với yêu cầu hành vi của hệ thống.
70
Các thông điệp phù hợp với các use case text.
71
Dùng Inversion of Control (loC) để quản lý dependency.
72
Trước khi bắt đầu lập trình.
73
Hậu quả: Code phụ thuộc mạnh vào cơ sở dữ liệu cụ thể; giải pháp: sử dụng abstraction để giảm phụ thuộc.
74
Ảnh hưởng: Các lỗi logic có thể không được phát hiện; cải thiện: Cập nhật kế hoạch kiểm thử để bao phủ đầy đủ các chức năng logic.
75
Hệ thống sẽ thiếu các phương thức xử lý dữ liệu.
76
Rõ ràng về luồng dữ liệu và hành vi.
77
Chuyển logic xử lý từ boundary object sang controller.
78
Thiếu phương thức cần thiết trong lớp DAO.
79
Vi phạm nguyên tắc phân tách trách nhiệm; chuyển logic sang service layer.
80
Sử dụng AOP để quản lý bảo mật dữ liệu trước khi gửi đến view.
81
Dễ dàng tìm và sửa đổi các thay đổi liên quan đến domain.
82
Liệt kê tất cá các kịch bản chính và kịch bản thay thể trong use case.
83
Aspect-Oriented Programming (AOP).
84
Xác nhận rằng thiết kế chi tiết phù hợp với yêu cầu.
85
Chỉnh sửa sequence diagram để khớp với use case text.
86
Text của use case để đảm bảo các hành vi được mô tả đầy đủ.
87
Các mũi tên thông điệp không khớp với đối tượng gửi và nhận.
88
Không hợp lý; cần thêm các thuộc tính để đảm bảo lớp thể hiện đầy đủ dữ liệu cần thiết.
89
Không tối ưu hóa các query trong DAO.
90
Ảnh hưởng: Thiết kế trở nên khó bảo trì; cải thiện: Tách lớp thành các lớp riêng biệt theo nguyên tắc phân tách trách nhiệm.