10.Interpreter patternMẫu này được sử dụng để thiết kế các thành phần mà thông dịch các chương trình được viết trong một ngôn ngữ chuyên dụng.. Phân tích hệ thống được thực hiện với mục
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN
Trang 2MỤC LỤC
PART 1: QUESTION 1
I Q1: Styles of software architecture 1
II Q2: Steps for analysis 10
III Q3: Steps for design (cohesion, coupling….give example, Relationship, code…) 19
IV Q4: 3 Layer architecture style & MVC 24
V Q5: DAO? Why? class diagram & code for DAO Review Appendix B1 & Explain diagram 28 VI Q6: Database design 39
VII Q7: Interface design (principles…) 47
Trang 3PART 1: QUESTION
I Q1: Styles of software architecture
Một mô hình kiến trúc là một giải pháp chung, có thể tái sử dụng cho một vấn đề thường xảy ra trong kiến trúc phần mềm trong một ngữ cảnh nhất định Các mẫu kiến trúc tương tự như mẫu thiết kế phần mềm nhưng có phạm vi rộng hơn
Trong đây em sẽ giới thiệu ngắn gọn 10 mẫu kiến trúc phổ biến hiện nay
Phổ biến nhất là hệ thống thông tin chung gồm 4 tầng như sau:
- Tầng trình diễn – Presentation layer (còn được gọi là UI layer)
- Tầng ứng dụng – Application layer (còn được gọi là service layer)
- Tầng xử lý logic nghiệp vụ – Business logic layer (còn được gọi là domain layer)
Trang 4- Tầng truy suất dữ liệu – Data access layer (còn được gọi là persistence layer)
Sử dụng:
- Các ứng dụng desktop nói chung
- Các ứng dụng web thương mại điện tử
2 Client-server pattern
Mẫu này bao gồm 2 thành phần; một server và nhiều clients Thành phần server
sẽ cung cấp các dịch vụ cho nhiều thành phần client Các client gửi yêu cầu các dịch vụ lên server và server cung cấp các dịch vụ tương ứng cho các client đó Ngoài ra, server tiếp tục lắng nghe các yêu cầu từ client
Sử dụng:
Các ứng dụng online như email, chia sẻ document và banking
Trang 53 Master-slave pattern
Mẫu này bao gồm 2 phần; master and slaves Thành phần master phân phối công việc giữa các thành phần slave giống nhau và tính toán ra kết quả cuối cùng từ các kết quả mà các slave trả về
Trang 64 Pipe-filter pattern
Mẫu này có thể được sử dụng trong các hệ thống cấu trúc mà gồm các thủ tục và
xử lý 1 luồng dữ liệu Mỗi bước xử lý được khép kín bên trong 1 thành phần lọc(filter) Dữ liệu cần xử lý được truyền qua đường ống (pipes) Các đường ống này có thể được sử dụng cho việc buffer hoặc cho mục đích đồng bộ hóa
Các server publish các năng lực của nó (các dịch vụ và các thuộc tính) cho broker Các client yêu cầu 1 dịch vụ từ broker và broker sẽ điều hướng client tớidịch vụ phù hợp tương ứng từ bộ đăng ký của nó
Sử dụng
- Phần mềm Message broker như Apache ActiveMQ, Apache Kafka,
RabbitMQ and JBoss Messaging
Trang 76 Peer-to-peer pattern
Trong mẫu này, các thành phần riêng lẻ còn được gọi là các peer Các peer có thể hoạt động giống như các client, yêu cầu các dịch vụ từ các peer khác, và cũng giống như 1 server, cung cấp các dịch vụ cho các peer khác Một peer có thể đóng vai là 1 client hoặc như một server hoặc đóng vai trò cả 2 và nó có thể thay đổi vai trò linh động tùy theo thời điểm
Sử dụng
- Các mạng chia sẻ file như Gnutella và G2
- Các giao thức Multimedia như P2PTV và PDTP
Trang 87 Event-bus pattern
Mẫu này phù hợp chính cho các sự kiện và có 4 thành phần chính; event source, event listener, channel và event bus Các nguồn (source) phát hành message trêncác kênh cụ thể ở trên event bus Các bộ lắng nghe (listener) đăng ký nghe trên các kênh cụ thể Các bộ lắng nghe được notify có message mới được phát hành trên kênh mà nó đã đăng ký trước đó
Sử dụng
- Phát triển Android
- Dịch vụ Notification
Trang 98 Model-view-controller pattern
Mẫu này còn được gọi là mẫu MVC, chia ứng dụng tương tác thành 3 phần, gồm
- model - là bộ phận có chức năng lưu trữ toàn bộ dữ liệu của ứng dụng
- view - đây là phần giao diện (theme) dành cho người sử dụng
- controller - bộ phận có nhiệm vụ xử lý các yêu cầu người dùng đưa đến thông qua view Từ đó, C đưa ra dữ liệu phù hợp với người dùng
Mẫu này giúp chia tách các tầng trình diễn thông tin nội bộ khỏi các thông tin được biểu diễn cho và chấp nhận bởi người dùng Nó phân tách sự phụ thuộc các thành phần và cho phép tái sử dụng code hiệu quả hơn
Sử dụng
- Kiến trúc cho các ứng dụng World Wide Web trong hầu hết các ngôn ngữ lập trình chính
Trang 10- knowledge source - các modules đặc biệt với biểu diễn riêng của nó
- control component - lựa chọn, cấu hình và thực thi các module
Tất cả các thành phần có quyền truy cập tới blackboard Các thành phần có thể tạo
ra đối tượng dữ liệu mới và được thêm vào blackboard Các thành phần tìm kiếm các loại dữ liệu cụ thể trên blackboard, và có thể tìm chúng theo các mẫu phù hợp với những nguồn kiến thức đang tồn tại
Trang 1110.Interpreter pattern
Mẫu này được sử dụng để thiết kế các thành phần mà thông dịch các chương trình được viết trong một ngôn ngữ chuyên dụng Mục đích chính nó chỉ rõ cách đánh giá các dòng chương trình, được biết như các câu hoặc các công thức được viết trong ngôn ngữ cụ thể Ý tưởng cơ bản là có 1 lớp cho từng ký hiệu ngôn ngữ
Sử dụng
- Ngôn ngữ truy vấn CSDL như SQL
- Các ngôn ngữ được sử dụng để mô tả các giao thức truyền thông
Trang 12II Q2: Steps for analysis
Phân tích hệ thống là một quá trình thu thập và diễn giải các dữ kiện, xác định
các vấn đề và phân rã một hệ thống thành các thành phần của nó
Phân tích hệ thống được thực hiện với mục đích nghiên cứu một hệ thống hoặc các bộ phận của nó để xác định các mục tiêu của nó Đây là một kỹ thuật giải quyết vấn đề nhằm cải thiện hệ thống và đảm bảo rằng tất cả các thành phần của
hệ thống hoạt động hiệu quả để hoàn thành mục đích của chúng
Trang 13+ Mô tả chi tiết ca sử dụng
+ Xây dựng biểu đồ giao tiếp
+ Xây dựng biểu đồ hoạt động
o Yêu cầu phi chức năng
+ Thao tác, hiệu năng, bảo mật, văn hóa, chính trị,…
+ Phác họa giao diện người dùng
2 Phân tích yêu cầu
- Viết tài liệu đặc tả yêu cầu phần mềm
Phân tích có cấu trúc (Structured analysis) là gì?
Phân tích có cấu trúc là một phương pháp phát triển cho phép người phân tích hiểu
hệ thống và các hoạt động của nó một cách hợp lý Đây là một cách tiếp cận có hệ thống, sử dụng các công cụ đồ họa để phân tích và tinh chỉnh các mục tiêu của hệ
Trang 14thống hiện có và phát triển một đặc tả hệ thống mới mà người dùng có thể dễ dàng hiểu được.
Nó có các đặc điểm sau:
Nó là đồ họa chỉ định cách trình bày của ứng dụng
Nó phân chia các quá trình để đưa ra một bức tranh rõ ràng về luồng hệ thống
Nó mang tính logic hơn là tính vật lý, tức là các phần tử của hệ thống không phụ thuộc vào nhà cung cấp hoặc phần cứng
Đây là một cách tiếp cận hoạt động từ tổng quan cấp cao đến chi tiết cấp thấphơn
Công cụ phân tích có cấu trúc (Structured analysis tool)
Trong quá trình Phân tích có cấu trúc, nhiều công cụ và kỹ thuật khác nhau được sửdụng để phát triển hệ thống:
Sơ đồ luồng dữ liệu (Data Flow Diagrams –DFD)
Từ điển dữ liệu (Data Dictionary)
Cây quyết định (Decision Trees)
Bảng Quyết định (Decision Tables)
Tiếng Anh có cấu trúc (Structured English)
Mã giả (pseudocode)
Trang 15 Sơ đồ luồng dữ liệu (Data Flow Diagrams –DFD) hoặc Biểu đồ bong bóng
Nó cung cấp một cái nhìn tổng quan về dữ liệu mà một hệ thống xử lý,
những chuyển đổi nào được thực hiện, những dữ liệu nào được lưu trữ, những kết quả nào được tạo ra và chúng lưu chuyển đến đâu
a, Các yếu tố cơ bản của DFD
DFD dễ hiểu và khá hiệu quả khi thiết kế cần thiết không rõ ràng và người dùng muốn có một ngôn ngữ ký hiệu để giao tiếp Tuy nhiên, nó đòi hỏi một số lượng lớn các lần lặp để có được giải pháp chính xác và đầy đủ nhất
Trang 16Bảng sau đây cho thấy các ký hiệu được sử dụng trong thiết kế DFD và ý nghĩa củachúng
Hình chữ nhật
b, Các loại DFD
Nó phụ thuộc vào việc cài đặt Nó cho
thấy những chức năng nào được thực
hiện
Nó là độc lập với việc cài đặt Nó chỉ tập trung vào luồng dữ liệu giữa các quytrình
Nó cung cấp thông tin chi tiết về phần
cứng, phần mềm, tệp và con người ở mức
độ thấp
Nó giải thích các sự kiện của hệ thống
và dữ liệu theo yêu cầu của mỗi sự kiện
Nó mô tả cách hệ thống hiện tại hoạt
động và cách một hệ thống sẽ được cài
đặt
Nó chỉ ra cách thức hoạt động của nghiệp vụ; không phải làm thế nào hệ thống có thể được cài đặt
Sơ đồ ngữ cảnh (Context Diagram)
Một sơ đồ ngữ cảnh giúp hiểu toàn bộ hệ thống bằng một DFD cung cấp cho bạn cái nhìn tổng quan về một hệ thống Nó bắt đầu với việc đề cập đến các quy trình
Trang 17chính với một số chi tiết nhỏ và sau đó chuyển sang cung cấp thêm chi tiết về các quy trình với cách tiếp cận từ trên xuống.
Sơ đồ ngữ cảnh của quản lý nhà ăn (mess management) được hiển thị bên dưới
Từ điển dữ liệu (Data Dictionary)
Từ điển dữ liệu là một kho lưu trữ có cấu trúc các phần tử dữ liệu trong hệ thống
Nó lưu trữ mô tả của tất cả các phần tử dữ liệu DFD gồm chi tiết và định nghĩa về luồng dữ liệu, kho dữ liệu, dữ liệu được lưu trữ trong kho dữ liệu và các quy trình
Từ điển dữ liệu cải thiện giao tiếp giữa nhà phân tích và người dùng Nó đóng một vai trò quan trọng trong việc xây dựng cơ sở dữ liệu Hầu hết các DBMS đều có từ điển dữ liệu như một tính năng tiêu chuẩn Ví dụ, hãy tham khảo bảng sau:
Cây quyết định (Decision Trees)
Cây quyết định là một phương pháp để xác định các mối quan hệ phức tạp bằng cách mô tả các quyết định và tránh các vấn đề trong giao tiếp Cây quyết định là
Trang 18một sơ đồ thể hiện các hành động và điều kiện thay thế trong khuôn khổ cây ngang.
Do đó, nó mô tả các điều kiện cần xem xét đầu tiên, thứ hai, v.v
Cây quyết định mô tả mối quan hệ của từng điều kiện và các hành động được phép của chúng Một nút hình vuông biểu thị một hành động và một nút tròn biểu thị mộtđiều kiện Nó buộc các nhà phân tích phải xem xét trình tự của các quyết định và xác định quyết định thực tế cần phải đưa ra
Hạn chế chính của cây quyết định là nó thiếu thông tin trong định dạng của nó để
mô tả những kết hợp điều kiện nào khác mà bạn có thể thực hiện để kiểm tra Nó là một đại diện duy nhất của các mối quan hệ giữa các điều kiện và hành động
Ví dụ, hãy tham khảo cây quyết định sau:
Bảng Quyết định (Decision Tables)
Bảng quyết định là một phương pháp mô tả mối quan hệ logic phức tạp một cách chính xác và dễ hiểu
Trang 19 Nó hữu ích trong các tình huống mà các hành động phụ thuộc vào sự xuất hiện của một hoặc một số kết hợp các điều kiện độc lập
Nó là một ma trận chứa hàng hoặc cột để xác định một vấn đề và các hành động
Các mục trong bảng quyết định được đưa ra bởi Quy tắc quyết định (Decision Rules) xác định mối quan hệ giữa các tổ hợp điều kiện và các quá trình hành động Trong phần quy tắc
Y cho thấy sự tồn tại của một điều kiện
N đại diện cho điều kiện không được thỏa mãn
Một khoảng trống (A blank) - hành động sẽ được bỏ qua
Trang 20 Tiếng Anh có cấu trúc (Structured English)
Tiếng Anh cấu trúc có nguồn gốc từ ngôn ngữ lập trình có cấu trúc giúp mô tả quy trình dễ hiểu và chính xác hơn Nó dựa trên logic thủ tục sử dụng các câu xây dựng
và mệnh lệnh được thiết kế để thực hiện thao tác cho hành động
Nó được sử dụng tốt nhất khi các chuỗi và vòng lặp trong một chương trình phải được xem xét và vấn đề cần các chuỗi hành động với các quyết định
Nó không có quy tắc cú pháp nghiêm ngặt Nó thể hiện tất cả logic về cấu trúc quyết định tuần tự và sự lặp lại
Ví dụ, hãy xem chuỗi hành động sau:
Mã giả (Pseudocode)
Mã giả không tuân theo bất kỳ ngôn ngữ lập trình nào và diễn đạt logic bằng tiếng Anh đơn giản
Trang 21 Nó có thể chỉ định logic lập trình vật lý mà không cần mã hóa thực tế trong
và sau khi thiết kế vật lý
Nó được sử dụng kết hợp với lập trình có cấu trúc
Nó thay thế các sơ đồ của một chương trình
Hướng dẫn lựa chọn công cụ thích hợp
Sử dụng các nguyên tắc sau để chọn công cụ thích hợp nhất phù hợp với yêu cầu của bạn
Sử dụng DFD ở phân tích cấp cao hoặc cấp thấp để cung cấp tài liệu hệ thống tốt
Sử dụng từ điển dữ liệu để đơn giản hóa cấu trúc nhằm đáp ứng yêu cầu dữ liệu của hệ thống
Sử dụng tiếng Anh có cấu trúc nếu có nhiều vòng lặp và hành động phức tạp
Sử dụng các bảng quyết định khi có một số lượng lớn các điều kiện cần kiểmtra và logic phức tạp
Sử dụng cây quyết định khi trình tự các điều kiện là quan trọng và nếu có ít điều kiện cần được kiểm tra
III Q3: Steps for design (cohesion, coupling….give example, Relationship,
code…)
Thiết kế hệ thống là giai đoạn thu hẹp khoảng cách giữa miền vấn đề và hệ thống hiện có theo cách có thể quản lý được Giai đoạn này tập trung vào miền giải pháp, tức là "làm thế nào để cài đặt?"
Đây là giai đoạn mà tài liệu SRS được chuyển đổi thành một định dạng có thể được thực hiện và quyết định cách hệ thống sẽ hoạt động
Trong giai đoạn này, hoạt động phức tạp của phát triển hệ thống được chia thành nhiều hoạt động phụ nhỏ hơn, chúng phối hợp với nhau để đạt được mục tiêu chính của phát triển hệ thống
Trang 221 Thiết kế kiến trúc
- Lựa chọn công nghệ mạng cho hệ thống
- Thiết kế tương tranh và an toàn bảo mật
- Phân rã hệ thống thành các hệ thống con
- Xây dụng biểu đồ gói
2 Thiết kế chi tiết
- Xây dựng mô hình lớp thiết kế
- Xây dựng lược đồ cơ sở dữ liệu
- Thiết kế giao diện người dùng
Mô hình mối quan hệ thực thể (Entity Relationship Model)
Nó là một kỹ thuật được sử dụng trong thiết kế cơ sở dữ liệu giúp mô tả mối quan
hệ giữa các thực thể khác nhau của một tổ chức Các thuật ngữ được sử dụng trong
Thuộc tính (ATTRIBUTES) - Nó chỉ định các thuộc tính của các mối quan hệ Ví dụ: mã nhà cung cấp, tên sinh viên Các ký hiệu được sử dụng trong mô hình E-R
và ý nghĩa tương ứng của chúng
Thực thểThực thể yếu
Trang 23(Ex: Từ dob -> age)
E2 tham gia đầy đủ trong R
Số lượng tham gia E1:E2 = 1:N
Trang 24Ba loại mối quan hệ có thể tồn tại giữa hai tập dữ liệu: một-một, một-nhiều và nhiều-nhiều.
Coupling
Kết nối là thước đo tính độc lập của các thành phần Nó xác định mức độ phụ thuộc của từng mô-đun phát triển hệ thống vào mô-đun khác Trong thực tế, điều này có nghĩa là sự kết hợp giữa các mô-đun trong hệ thống càng mạnh thì việc triển khai và duy trì hệ thống càng khó khăn hơn
Mỗi mô-đun phải có giao diện đơn giản, gọn gàng với các mô-đun khác và số lượng phần tử dữ liệu tối thiểu phải được chia sẻ giữa các mô-đun
- High Coupling
Các loại hệ thống này có sự kết nối với nhau với các đơn vị chương trình phụ thuộc vào nhau Những thay đổi đối với một hệ thống con dẫn đến tác động lớn đến hệ thống con khác
- Low Coupling
Loại hệ thống này được tạo thành từ các thành phần độc lập hoặc gần như độc lập Một thay đổi trong một hệ thống con không ảnh hưởng đến bất kỳ
hệ thống con nào khác
Trang 25- Coupling Measures
Sự gắn kết ngẫu nhiên được tìm thấy trong một thành phần mà các phần của
nó không liên quan đến phần khác
+ Logical Cohesion − Nó là nơi một số chức năng hoặc phần tử dữ liệu liên quan đến logic được đặt trong cùng một thành phần
+ Temporal Cohesion − Là khi một thành phần được sử dụng để khởi tạo hệ thống hoặc tập hợp các biến thực hiện một số chức năng theo trình tự, nhưngcác chức năng có liên quan với nhau theo thời gian liên quan
+ Procedurally Cohesion − Đó là khi các chức năng được nhóm lại với nhau trong một thành phần chỉ để đảm bảo thứ tự này
+ Sequential Cohesion − Là khi đầu ra từ một phần của một thành phần là đầu vào cho phần tiếp theo của nó
Cohesion
Sự gắn kết là thước đo mức độ chặt chẽ của mối quan hệ giữa các thành phần của nó Nó xác định mức độ phụ thuộc của các thành phần của một mô-đun vào nhau Trong thực tế, điều này có nghĩa là nhà thiết kế hệ thống phải đảm bảo rằng
- Họ không chia các quy trình thiết yếu thành các mô-đun phân mảnh
- Chúng không tập hợp các quá trình không liên quan với nhau được biểu diễndưới dạng các quá trình trên DFD thành các mô-đun vô nghĩa
Trang 26- Các mô-đun tốt nhất là những mô-đun được gắn kết về mặt chức năng Các mô-đun tồi tệ nhất là những mô-đun được gắn kết một cách ngẫu nhiên.The worst degree of cohesion
Sự gắn kết ngẫu nhiên được tìm thấy trong một thành phần mà các phần của nó không liên quan đến phần khác
+ Logical Cohesion - Nó là nơi một số chức năng hoặc phần tử dữ liệu liên quan đến logic được đặt trong cùng một thành phần
+ Temporal Cohesion - Là khi một thành phần được sử dụng để khởi tạo hệ thống hoặc tập hợp các biến thực hiện một số chức năng theo trình tự, nhưng các chức năng có liên quan với nhau theo thời gian liên quan
+ Procedurally Cohesion - Đó là khi các chức năng được nhóm lại với nhau trong một thành phần chỉ để đảm bảo thứ tự này
+ Sequential Cohesion - Là khi đầu ra từ một phần của một thành phần là đầu vào cho phần tiếp theo của nó
IV Q4: 3 Layer architecture style & MVC
1 3 Layer architecture style
Mô hình 3-layer gồm có 3 phần chính :
Trang 27- Presentation Layer (GUI) : Lớp này có nhiệm vụ chính giao tiếp với người dùng Nó gồm các thành phần giao diện ( win form, web form,…) và thực hiện các công việc như nhập liệu, hiển thị dữ liêu, kiểm tra tính đúng đắn dữliệu trước khi gọi lớp Business Logic Layer (BLL).
- Business Logic Layer (BLL) : Layer này phân ra 2 thành nhiệm vụ :
+ Đây là nơi đáp ứng các yêu cầu thao tác dữ liệu của GUI layer, xử lý chính nguồn dữ liệu từ Presentation Layer trước khi truyền xuống Data Access Layer
và lưu xuống hệ quản trị CSDL
+ Đây còn là nơi kiểm tra các ràng buộc, tính toàn vẹn và hợp lệ dữ liệu, thực hiện tính toán và xử lý các yêu cầu nghiệp vụ, trước khi trả kết quả về
Presentation Layer
- Data Access Layer (DAL) : Lớp này có chức năng giao tiếp với hệ quản trị CSDL như thực hiện các công việc liên quan đến lưu trữ và truy vấn dữ liệu ( tìm kiếm, thêm, xóa, sửa,…)
Ưu điểm
- Việc phân chia thành từng lớp giúp cho code được tường minh hơn Nhờ vào việc chia ra từng lớp đảm nhận các chức năng khác nhau và riêng biệt như giao diện, xử lý, truy vấn thay vì để tất cả lại một chỗ Nhằm giảm sự kết dính
- Dễ bảo trì khi được phân chia, thì một thành phần của hệ thống sẽ dễ thay đổi Việc thay đổi này có thể được cô lập trong 1 lớp, hoặc ảnh hưởng đến lớp gần nhất mà không ảnh hưởng đến cả chương trình
- Dễ phát triển, tái sử dụng: khi chúng ta muốn thêm một chức năng nào đó thì việc lập trình theo một mô hình sẽ dễ dàng hơn vì chúng ta đã có chuẩn
để tuân theo Và việc sử dụng lại khi có sự thay đổi giữa hai môi trường ( Winform sang Webfrom ) thì chỉ việc thay đổi lại lớp GUI
Trang 28- Dễ bàn giao Nếu mọi người đều theo một quy chuẩn đã được định sẵn, thì công việc bàn giao, tương tác với nhau sẽ dễ dàng hơn và tiết kiệm được nhiều thời gian.
- Dễ phân phối khối lượng công việc Mỗi một nhóm, một bộ phận sẽ nhận một nhiệm vụ trong mô hình 3 lớp Việc phân chia rõ ràng như thế sẽ giúp các lập trình viên kiểm soát được khối lượng công việc của mình
2 MVC (Model - View - Controller)
Trước tiên MVC được viết tắt từ 3 chữ (Model-View-Controller) là một design pattern nhằm phân tách các phần trong một ứng dụng ra các thành phần riêng biệt Cụ thể nó sẽ đưa các phần xử lý logic và business (Model) ra khỏi phần giao diện (View) từ đó giúp việc quản lý và mở rộng code trở nên dễ dàng hơn