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