Tải bản đầy đủ (.doc) (30 trang)

Nghiên cứu về một số mô hình phát triển phần mềm của các công ty lớn ở việt nam và một số bài toán ứng dụng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (214.27 KB, 30 trang )

ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC KHOA HỌC

Lớp: Toán Tin K7

TÊN ĐỀ TÀI

NGHIÊN CỨU VỀ MỘT SỐ MÔ HÌNH PHÁT TRIỂN PHẦN MỀM
CỦA CÁC CÔNG TY LỚN Ở VIỆT NAM VÀ MỘT SỐ BÀI TOÁN
ỨNG DỤNG

Thái nguyên ,2012
Page 1


TRƯỜNG ĐẠI HỌC KHOA HỌC
KHOA TOÁN TIN

TÊN ĐỀ TÀI

ĐỀ TÀI SINH VIÊN NGHIÊN CỨU KHOA HỌC

Người hướng dẫn khoa học:

Page 2


CHƯƠNG 1: CƠ SỞ LÝ THUYẾT CÁC MÔ HÌNH LẬP TRÌNH

I. Ngôn ngữ lập trình.
1. Giới thiệu ngôn ngữ c#.


Ngôn ngữ C# được phát triển bởi đội ngũ kĩ sư của Microsoft, trong
đó người dẫn đầu là Anders Hejlsberg và Scott Wiltamuth. Cả hai người
này đều là những người nổi tiếng. Trong đó, Anders Hejlsberg được biết
đến là tác giả của Turbo Pascal, một ngôn ngữ lập trình phổ biến và ông
đứng đầu nhóm thiết kế Borland Delphi, một trong những thành công đầu
tiên của việc xây dựng môi trường phát triển tích hợp(IDE) cho lập trình
client/server.
Ngôn ngữ C# khá đơn giản, chỉ khoảng 80 từ khóa và hơn mười mấy
kiểu dữ liệu được xây dựng sẵn. Tuy nhiên, ngôn ngữ C# có ý nghĩa cao
khi nó thực thi những khái niệm lập trình hiện đại. C# bao gồm tất cả
những hỗ trợ cho cấu trúc, thành phần, component, lập trình hướng đối
tượng, những tính chất đó hiện diện trong một ngôn ngữ lập trình hiện đại
v. hơn nữa nó được xây dựng trên nền tảng của 2 ngôn ngữ mạnh nhất là
C++ và Java.
Phần cốt lõi của bất cứ ngôn ngữ lập trình hướng đối tượng là sự hỗ
trợ của nó cho việc định nghĩa và làm việc với những lớp. Những lớp thì
định nghĩa những kiểu dữ liệu mới, cho phép phát triển mở rộng ngôn ngữ
tạo mô hình tốt hơn để giải quyết vấn đề. Ngôn ngữ C# chứa những từ
khóa cho việc khai báo những kiểu lớp đối tượng mới và những phương
thức hay thuộc tính của lớp và cho việc thực thi đóng gói, kế thừa, đa hìnhPage 3


ba thuộc tính cơ bản nhất của bất cứ ngôn ngữ lập trình hướng đối tượng
nào.
Trong ngôn ngữ C# mọi thứ liên quan đến khai báo lớp đều được
tìm thấy trong phần khai báo của nó. Định nghĩa một lớp trong ngôn ngữ
C# không đòi hỏi phải chia ra tập tin header và tập tin nguồn giống như
trong ngôn ngữ C++. Hơn thế nữa, ngôn ngữ C# hỗ trợ kiểu XML, cho
phép chèn các tag XML để phát sinh tự động các tài liệu cho lớp.
C# cũng hỗ trợ giao diện interface, nó được xem như một cam kết

với một lớp cho những dịch vụ mà giao diện quy định. Trong ngôn ngữ c#,
một lớp chỉ có thể kế thừa từ duy nhất một lớp cha. Tức là không cho cha
kế thừa như trong ngôn ngữ C++, tuy nhiên một lớp có thể thực thi nhiều
giao diện. Khi một lớp thực thi một giao diện thì nó cũng cung cấp chức
năng thực thi giao diện.
Trong ngôn ngữ C#, những cấu trúc cũng được hỗ trợ nhưng khái
niệm về ngữ nghĩa của nó thay đổi khác với C++. Trong C#, một cấu trúc
được giới hạn là kiểu con trỏ nhỏ gọn và khi tạo thể hiện thì nó yêu cầu ít
hơn về hệ điều hành và bộ nhớ so với một lớp. Một cấu trúc thì không thể
kế thừa từ một lớp hay được kế thừa nhưng một cấu trúc có thể thực thi
một giao diện.
Ngôn ngữ C# cung cấp những đặc tính hướng thành
phần(component-oriented), như là những thuộc tính, những sự kiện. Lập
trình hướng thành phần được hỗ trợ bởi CLR cho phép lưu trữ metadata
với mã nguồn cho một lớp. Metadata mô tả cho một lớp, bao gồm những
phương thức và những thuộc tính của nó cũng như những sự bảo mật cần
thiết và những thuộc tính khác. Mã nguồn chứa đựng những logic cần thiết
để thực hiện những chức năng của nó. Do vậy, một lớp được biên dịch như
là một khối self-contained nên môi trường hosting biết được cách đọc
Page 4


metadata của một lớp và mã nguồn cần thiết mà không cần những thông tin
khác để sử dụng nó.
2. Ưu điểm, nhược điểm của ngôn ngữ C#.
2.1. Ưu điểm.
Ngôn ngữ C# được dẫn xuất từ ngôn ngữ C++ và C nhưng nó được
xây dựng từ nền tảng phát triển hơn. Microsoft bắt đầu với công việc trong
C và C++ và thêm vào đó những đặc tính mới để làm cho ngôn ngữ này dễ
sử dụng hơn. Nhiều trong số đặc tính này khá giống với những đặc tính có

trong ngôn ngữ Java. Không dừng lại ở đó Microsoft còn đưa ra một số
mục đích cũng như ưu điểm để xây dựng ngôn ngữ này như sau:
• C# là ngôn ngữ đơn giản
C# loại bỏ một vài sự phức tạp của những ngôn ngữ như Java, C++
bao gồm việc loại bỏ những macro, template, đa kế thừa và lớp cơ sở ảo.
Chúng là những nguyên nhân gây ra sự nhầm lẫn hay dẫn đến những vấn
đề cho những người phát triển C++.
C# được xây dựng dựa trên nền tảng C và C++. C# khá giống C, C+
+ hay thậm chí là Java về diện mạo, cú pháp, biểu thức, toán tử.
Một số chức năng khác của C# được lấy trực tiếp từ ngôn ngữ C và
C++ nhưng nó đã được cải tiến để làm cho ngôn ngữ đơn giản hơn. Một
trong những sự cải tiến đó là loại bỏ các dư thừa hay thêm vào những cú
pháp thay đổi.
VD: Trong C++ có 3 toán tử làm việc với các thành viên là ::, . , và
→. Để biết khi nào dùng ba toán tử này cũng phức tạp và dễ nhầm lẫn.
Trong C#, chúng được thay thế với một toán tử duy nhất gọi là .(dot).
• C# là ngôn ngữ hiện đại
C# có được những đặc tính của ngôn ngữ hiện đại như:
Page 5


- Xử lý ngoại lệ
- Bảo mật mã nguồn
- Thu gom bộ nhớ tự động
- Có những kiểu dữ liệu mở rộng
Ví dụ như con trỏ được tích hợp vào C++. Đó là nguyên nhân gây
phát sinh một số rắc rối trong C++. Nhưng trong C#, những đặc tính kể
trên sẽ loại bỏ những phức tạp và rắc rối gây ra bởi con trỏ làm cho C# trở
nên đơn giản và dễ dàng hơn.
• C# là ngôn ngữ hướng đối tượng

C# hỗ trợ tất cả những đặc tính của ngôn ngữ hướng đối tượng là:
- Sự đóng gói(encapsulation)
- Sự kế thừa(inheritance)
- Đa hình(polymorphism)
• C# là ngôn ngữ hướng module
Mã nguồn của C# được viết trong Class(lớp). Những Class này chứa
các Method(phương thức) thành viên của nó.
Class(lớp) và các Method(phương thức) thành viên của nó có thể sử
dụng lại trong những ứng dụng hay chương trình khác bằng cách truyền
các mẫu thông tin đến những lớp hay phương thức chúng ta có thể tạo ra
những mã nguồn dùng lại có hiệu quả.
• C# là ngôn ngữ ít từ khóa
C# là ngôn ngữ sử dụng giới hạn những từ khóa. Phần lớn các từ khóa này
được sử dụng để mô tả thông tin. Nhưng không vì thế mà ngôn ngữ C# trở
nên kém mạnh mẽ. Chúng ta có thể thấy rằng ngôn ngữ này có thể được sử
dụng để làm bất cứ nhiệm vụ nào. C# được sử dụng cho nhiều dự án khác

Page 6


nhau như: Ứng dụng xử lý văn bản, ứng dụng đồ họa hay tạo ra những
trình biên dịch cho các ngôn ngữ khác...
• C# là một ngôn ngữ phổ biến
• C chạy trên nền .Net, nền này cung cấp rất nhiều đối tượng mạnh,
phong phú và đa dạng để giải quyết nhiều vấn đề phổ biến trong lập trình.
Do đó sử dụng ngôn ngư lập trình C# tốn ít thời gian, chi phí, ứng dụng kết
quả chạy đáng tin cậy, một phần do tính chất hướng đối tượng của C#,
phần khác do ứng dụng dung chủ yếu các đối tượng đã được viết sẵn bởi
Microsoft.
2.2 Nhược điểm

KẾT LUẬN: Ta lựa chọn ngôn ngữ C# bởi vì những ưu điểm của nó.
II.

Cơ sở dữ liệu
1) Giới thiệu cơ sở dữ liệu SQL server
• SQL là viết của Structured Query Language( Ngôn ngữ truy vấn cấu
trúc).
• SQL là một chuẩn của ANSI (American National Standards Institute

Viện tiêu chuẩn quốc gia Hoa Kì) về truy xuất các hệ thống CSDL.
• Các câu lệnh SQL được sử dụng để truy xuất và cập nhập dữ liệu
trong cơ sở dữ liệu.
• SQL là ngôn ngữ thao tác dữ liệu(DML- Data Manipulation
Language): SQL có thể thực thi các truy vấn trên cơ sở dữ liệu, lấy dữ liệu,
chèn dữ liệu, xóa dữ liệu, sửa đổi dữ liệu hiện có trong cơ sở dữ liệu.
• SQL là ngôn ngữ định nghĩa dữ liệu(DDL- Data Definition
Language)

Page 7


Phần DDl của SQL cho phép tạo ra hoặc xóa các bảng. Chúng ta cũng có
thể định nghĩa các khóa (key), chỉ mục(index), chỉ định các liên kết giữa
các bảng và thiết lập các quan hệ ràng buộc giữa các bảng trong cơ sở dữ
liệu.
2) Ưu điểm, nhược điểm của ngôn ngữ SQL.
2.1) Ưu điểm
• Khả năng bảo mật lớn.
• Chứa được một lượng lớn dữ liệu , thích hợp cho nhiều người sử
dụng cùng lúc.

• Truy xuất dữ liệu nhanh.
• Đảm bảo tính toàn vẹn dữ liệu.
2.2) Nhược điểm
• Yêu cầu tài nguyên lớn nếu không sẽ chạy rất chậm.
• Chỉ chạy trên hệ điều hành Window.
• Dữ liệu nếu bị hổng sẽ rất dễ bị khai thác.
3) So sánh ngôn ngữ SQL Server với các ngôn ngữ lập trình khác
3.1) MySQL và SQL Server
SQL Server và MySQL đều có những đặc thù riêng của chúng. Vì
vậy chúng ta sẽ so sánh theo tính năng, hiệu suất, bảo mật và khả năng
phuc hồi, tính toàn vẹn dữ liệu …
• Tính năng:
MySQL hơn SQL Server ở tính năng cung cấp nhiều loại storage
engine. Tuy nhiên, tính về mặt tích hợp chặt chẽ cho toàn bộ hệ thống và
công cụ phát triển phần mềm thì SQL Server tích hợp tốt hơn MySQL đặc
biệt là ở mảng.NET. SQL Server còn hỗ trợ XML trực tiếp trong cơ sở dữ

Page 8


liệu trong khi đó thì MySQL chưa làm được việc này. Các chức năng cần
thiết như View, StoreProcedure, Trigger thì cả hai tương đương nhau.
• Hiệu suất:
SQL Server đòi hỏi tài nguyên rất lớn (CPU mạnh, nhiều RAM..),
nếu không nó chạy rất chậm. MySQL không đòi hỏi nhiều như SQL
Server. Nhưng nếu đáp ứng được các yêu cầu của SQL Server thì nó sẽ
chạy với tốc độ nhanh và hiệu suất sử dụng cũng được nâng cao nhiều so
với MySQL.
• Bảo mật:
SQL Server có độ bảo mật rất cao. Hơn hẳn MySQL về tính bảo mật

ở mức độ cột. Trong khi đó MySQL chỉ có thể thiết lập mức truy cập đến
hàng trong bảng. Hệ thống xác thực người dùng của SQL Server cũng qua
mặt MySQL.


Bảo đảm tính toàn vẹn của dữ liệu.
Sau khi thi HK, bạn được giao nhiệm vụ cập nhật điểm cho SV.

Điểm số là 1 số thực nằm trong khoảng từ 0 - 10; và có thể có điểm lẻ như
6.5, nhưng không có điểm lẻ kiểu như 8.2. Dĩ nhiên là bạn hoàn toàn có thể
viết chương trình để kiểm tra tính đúng đắn của điểm trước khi cập nhật
vào CSDL. Nhưng lỡ như đến 1 lúc nào đó, trường đổi cách chấm điểm,
cho phép điểm có thể lẻ đến 0.25, hoặc thay đổi thang điểm từ 0 - 100 và
không có điểm lẻ. Lúc đó bạn phải sửa lại chương trình của bạn ở nhiều
chỗ, và nếu chẳng may bạn quên sửa 1 chỗ nào đó thì hậu quả sẽ không
biết trước được.
Các DBMS cao cấp cho phép bạn tránh được điều này bằng cách thiết lập
các ràng buộc cho dữ liệu. Ví dụ bạn có thể thiết lập ràng buộc rằng ở table
DiemSo thì field Diem phải là 1 số nguyên từ 0 - 100 (nếu là thang điểm
Page 9


100). Sau đó, nếu dữ liệu cập nhật vào không đúng với ràng buộc, DBMS
sẽ từ chối cập nhật và hiển thị ra thông báo lỗi cho bạn biết.
MySQL cho tới version hiện thời vẫn chưa có tính năng này.
• Khả năng nhân bản:
Cả hai đều có khả năng nhân bản hoặc cung cấp phương tiện để làm
việc này. Tuy nhiên, MySQL nhanh hơn và ít sự cố hơn SQL Server vì tất
cả các SQL statements dùng để thay đổi, cập nhật dữ liệu được lưu giữ
trong binary log. SQL Server cung cấp nhiều phương pháp nhân bản cao

cấp hơn, chi tiết hơn bởi thế nó phức tạp hơn và chậm hơn.
• Khả năng phục hồi:
Microsoft SQL cung cấp nhiều phương thức nhân bản nên việc phục
hồi dữ liệu trên Microsoft SQL dễ dàng hơn MySQL.


Câu lệnh SQL phức hợp.
MySQL cho tới version 3.x chưa hỗ trợ các câu lệnh SQL phức hợp.

Ví dụ bạn có 3 bảng SinhVien(MSV,...), MonHoc(MonHocID,
TenMonHoc) và DangKy(MSV, MonHocID) với MSV = Mã Sinh Viên, 1
record trong bảng DangKy biểu thị SV có MSV đăng ký học MonHoc.
Yêu cầu đặt ra là bạn hiển thị danh sách các SV có đăng ký môn học. Bạn
có thể SELECT MSV từ 2 bảng và hiển thị các record có SinhVien.MSV =
DangKy.MSV. Hoặc bạn cũng có thể làm gọn hơn chỉ với 1 câu lệnh
SELECT DISTINCT msv FROM DangKy.
Nhưng giả sử yêu cầu đặt ra là bạn hiển thị danh sách các SV KHÔNG có
đăng ký môn học nào. Với MySQL bạn không thể chỉ với 1 câu lệnh SQL
là đạt được kết quả mà bạn phải dùng nhiều câu lệnh SQL đơn liên tiếp
nhau, và có thể phải tạo ra các bảng tạm thời để lưu trữ các kết quả trung
gian. Trong khi đó, trên thực tế, với SQL Server, bạn chỉ cần 1 câu lệnh
Page 10


SQL đơn giản như sau:
SELECT msv FROM SinhVien
WHERE NOT EXISTS (
SELECT msv FROM DangKY
WHERE DangKy.msv = SinhVien.msv
)

• Đồ họa:
MySQL có giao diện đồ họa nhưng chức năng nghèo nàn. Còn SQL
Server thì cung cấp đầy đủ các tính năng và vượt trội hơn hẳn MySQL.
• Phạm vi sử dụng:
SQL Server chỉ chạy trên nền .NET mà nền .NET chỉ chạy trên hệ
điều hành Window của Microsoft. Còn MySQL có thể chạy được trên
Linux, Unix hay Window.
MySQL sử dụng cho các wed nhỏ. Còn SQL Server thường sử dụng
cho các doanh nghiệp vừa, trung bình.
3.2) Access và SQL Server
• Mức độ bảo mật:
Access thì độ bảo mật không cao. Còn SQL Server mức độ bảo mật
vượt hơn hẳn.
• Khả năng truy xuất dữ liệu:
MS SQL sever, chuyên quản trị dữ liệu nên hệ thống chứa dữ liệu đồ
sộ hơn tối đa khoảng 10GB còn access chỉ chứa được tối đa 2GB. Vậy nên
khả năng truy xuất dữ liệu của SQL Server tốt và nhanh hơn Access. Thêm
vào đó khả năng Dataware house, phân tích dữ liệu SQL server làm tốt hơn
nhiều.
• Phạm vi sử dụng:
Page 11


Cả hai cơ sở dữ liệu Access và SQL Server đều chỉ chạy trên hệ điều
hành Window của Microsoft.
KẾT LUẬN:
Từ các kết quả so sánh trên ta nhận thấy rằng ngôn ngữ lập trình cơ
sở dữ liệu SQL Server là ngôn ngữ rất ưu thế và đây là ngôn ngữ được lựa
chọn trong đề tài vì những đặc điểm sau:
• Đây là ngôn ngữ mạnh, chỉ đứng thứ 2 sau Oracel.

• Là ngôn ngữ phổ biến.
• Câu lệnh đơn giản.
• Khả năng chứa dữ liệu lớn.
• Mức độ bảo mật cao.
• Đơn giản, dễ sử dụng.
• Hiệu suất sử dụng lớn, truy xuất dữ liệu nhanh.
• Thích hợp sử dụng trong bài toán vừa và lớn.
III.

Sự khác nhau giữa các mô hình lập trình.
1) Mô hình một lớp
Mô hình một lớp thông thường là mô hình mà chương trình chạy từ đầu
tới cuối. Không có sự phân tách mã nguồn. Tất cả các công việc được viết
trong một lớp.
1.1) Ưu điểm
• Chương trình đơn giản, dễ hiểu.
• Tư duy giải thuật rõ ràng.
1.2) Nhược điểm
• Không hỗ trợ việc tái sử dụng.
• Không phù hợp với các bài toán lớn.
• Tốn thời gian và chi phí bảo trì.
Page 12


2) Mô hình 3 lớp
Đặc điểm:
Mô hình ba lớp giúp phân việc cần làm ra ba nhóm riêng biệt là
Presentation Layer, DataAccess Layer và Bussiness Logic Layer. Các lớp
này giao tiếp với nhau qua các dịch vụ mà các lớp cung cấp và làm việc
độc lập với nhau. Việc triển khai trên một máy hay nhiều máy không làm

mất đi ý nghĩa của lớp.
Mô hình ba lớp phù hợp với những bài toán trung bình và lớn.
2.1 Ưu điểm
• Dễ dàng nâng cấp, bảo trì mã khi cần thiết.
• Dễ dàng sửa lỗi.
• Có thể tái sử dụng.
• Việc viết mã hay nâng cấp, bảo trì, sửa lỗi không tốn thời gian và
chi phí.
• Phù hợp với việc làm việc theo nhóm.
• Code rõ ràng, rành mạch, sáng sủa.
2.2 Nhược điểm
• Chương trình xử lý chậm
Phần giao diện Presentation Layer sẽ phải thao tác với dữ liệu qua
lớp trung gian đó là Bussiness Logic Layer, dữ liệu sẽ phải đóng gói,
truyền đi và mở gói trước khi sử dụng được. Điều này sẽ làm tăng thời gian
thực thi của ứng dụng, làm ứng dụng trở nên “chậm” hơn một cách thông
thường.
• Việc phát triển ứng dụng phức tạp hơn.
3) Mô hình đa tầng

Page 13


Kiến trúc đa tầng trong phần mềm là kiến trúc mà trong đó phần mềm
được chia thành rất nhiều phần khác nhau, độc lập với nhau và có liên quan
đến nhau. Để phân chia các chức năng thành các tầng, chúng ta phải dựa
vào nhiệm vụ và giới hạn của mỗi phần để chia thành các phần sao cho thật
chính xác.
Kiến trúc đa tầng dùng cho những người phân tích và thiết kế chương
trình. Mục đích của nó là giảm thiểu sự phức tạp trong việc thiết kế một

chương trình "không module" và liên quan phức tạp đến nhau trở thành
những thành phần riêng biệt, tách rời nhau nhưng vẫn giữ được mối liên
quan trong toàn bộ hệ thống.
Mô hình đa tầng phù hợp với những bài toán lớn.
3.1) Ưu điểm
Cũng như mô hình ba lớp, mô hình đa tầng cũng có một số đặc điểm
như sau:
• Dễ dàng nâng cấp, bảo trì mã khi cần thiết.
• Dễ dàng sửa lỗi.
• Có thể tái sử dụng.
• Việc viết mã hay nâng cấp, bảo trì, sửa lỗi không tốn thời gian và
chi phí.
• Phù hợp với việc làm việc theo nhóm.
• Code rõ ràng, rành mạch, sáng sủa.
3.2) Nhược điểm
• Chương trình xử lí chậm: Việc truyền dữ liệu giữa các tầng sẽ chậm
hơn vì phải truyền giữa các tiến trình khác nhau.
• Việc phát triển ứng dụng phức tạp hơn.
Page 14


KẾT LUẬN:
Từ kết quả so sánh trên, ta nhận thấy rằng: Mô hình 3 lớp và mô
hình đa tầng là 2 mô hình có ưu điểm vượt trội hơn hẳn. Tuy nhiên mô
hình ba lớp là mô hình đáng để lựa chọn hơn cả ngoài những ưu điểm của
nó còn vì những lí do sau:
• Là mô hình lập trình phổ biến và được sử dụng rộng rãi.
• Phù hợp với những bài toán vừa và lớn.
Chương 2: Mô hình ba lớp
I. Lý thuyết

1) Giới thiệu về mô hình ba lớp
Trong phát triển ứng dụng, để dễ quản lý các thành phần của hệ
thống, cũng như không bị ảnh hưởng bởi các thay đổi, người ta hay nhóm
các thành phần có cùng chức năng lại với nhau và phân chia trách nhiệm
cho từng nhóm để công việc không bị chồng chéo và ảnh hưởng lẫn nhau.
Ví dụ trong một công ty bạn có từng phòng ban, mỗi phòng ban sẽ chịu
trách nhiệm một công việc cụ thể nào đó, phòng này không được can thiệp
vào công việc nội bộ của phòng kia như Phòng tài chính thì chỉ phát lương,
độc lập với nhau trong công việc. Trong phát triển phần mềm, người ta
cũng áp dụng cách phân chia chức năng này. Bạn sẽ nghe nói đến thuật
ngữ kiến trúc đa tầng/nhiều lớp, mỗi lớp sẽ thực hiện một chức năng nào
đó, trong đó mô hình 3 lớp là phổ biến nhất. 3 lớp này là Presentation
Layer, Business Logic Layer, và Data Access Layer. Tuy làm những nhiệm
vụ khác nhau nhưng lại có liên quan mật thiết với nhau. Các lớp này sẽ
giao tiếp với nhau thông qua các dịch vụ(services) mà mỗi lớp cung cấp để
Page 15


tạo nên ứng dụng, lớp này cũng không cần biết bên trong lớp kia làm gì mà
chỉ cần biết lớp kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi.
Ta có mô hình mô tả mô hình ba lớp như sau:

• Presentation Layer: Lớp này làm nhiệm vụ giao tiếp với người dùng
cuối để thu thập dữ liệu, chia sẻ giao diện người dùng, mã ẩn và được
Page 16


thiết kế để hiển thị kết quả/dữ liệu cho người dùng thông qua các thành
phần trong giao diện người sử dụng.
Lớp này sẽ sử dụng dịch vụ do lớp Bussiness Logic cung cấp. trong

lớp này có 2 thành phần chính đó là User Interface Components và User
Interface Process Components.
User Interface Components là những phần tử chịu trách nhiệm thu
thập và hiển thị thong tin cho ngưởi dung cuối. User Interface Process
Components là những thành phần chịu trách nhiệm quản lý các quy
trình chuyển đổi giữa các User Interface Components.
• Business Logic Layer: Lớp này thực hiện các nghiệp vụ chính của
hệ thống, làm việc như cầu nối giữa lớp Data Layer và Presentation
Layer. Tất cả các dữ liệu đều phải đi qua lớp này trước khi được đưa
đến lớp Presentation Layer.
Trong lớp này có các thành phần chính là Business Components,
Business Entities và Service Interface.
Service Interface là giao diện lập trình mà lớp này cung cấp cho lớp
Presentation sử dụng. Lớp Presentation chỉ cần biết các dịch vụ thông
qua giao diện này mà không cần phải quan tâm đến bên trong lớp này
được hiện thực như thế nào.
Business Entities là những thực thể mô tả những đối tượng thông
tin mà hệ thống xử lý. Các business entities này cũng được dùng để trao
đổi thông tin giữa lớp Presentation và lớp Data Access.
Business Components là những thành phần chính thực hiện các dịch
vụ mà Service Interface cung cấp, chịu trách nhiệm kiểm tra các ràng
buộc logic(constraints), các qui tắc nghiệp vụ(business rules), sử dụng
các dịch vụ bên ngoài khác để thực hiện các yêu cầu của ứng dụng.
Page 17


• Data Access Layer: Về cơ bản, Data Layer là máy chủ lưu trữ tất cả
các dữ liệu của ứng dụng. Data Layer bao gồm các cơ sở dữ liệu bảng,
các tập tin XML và các phương tiện khác lưu trữ Data Aplication. Lớp
này thực hiện các nghiệp vụ lien quan đến lưu trữ và truy vấn dữ liệu

của ứng dụng.
Data Access Logic components (DALC) là thành phần chính chịu
trách nhiệm lưu trữ vào và truy xuất dữ liệu từ các nguồn dữ liệu – Data
Sources như RDMBS, XML, File systems…. Trong .NET Các DALC
này thường được hiện thực bằng cách sử dụng thư viện ADO.NET để
giao tiếp với các hệ cơ sở dữ liệu hoặc sử dụng các O/R Mapping
Frameworks để thực hiện việc ánh xạ các đối tượng trong bộ nhớ thành
dữ liệu lưu trữ trong cơ sở dữ liệu.
Service Agents là những thành phần trợ giúp việc truy xuất các dịch
vụ bên ngòai một cách dễ dàng và đơn giản như truy xuất các dịch vụ
nội tại.
NHẬN XÉT:
Mô hình ba lớp là mô hình mà các thành phần của nó độc lập với
nhau, do đó có thể dễ dàng bảo trì mã mà không cần thay đổi toàn bộ
mã nguồn. Phương pháp này thực sự rất hữu ích trong việc thực hiện
các dự án, một số thành phần có thể được tái sử dụng trong các dự án
khác. Hoặc có thể phân phối công việc giữa các nhà phát triển và duy trì
nó trong tương lai mà không gặp bất kì trở ngại nào.

Page 18


2)

Ví dụ minh họa
Ví dụ: Cho bảng cở sở dữ liệu có tên là ĐIỂM như sau:

TENSV
TRỊNH THU TRANG
NINH THỊ HỒNG DUYÊN

TRỊNH XUÂN QUẢNG
NGUYỄN THỊ TÙNG LÂM
TRỊNH THỊ HẠNH
HÀ THẢO QUYÊN

MALOP
001
001
002
002
003
002

DIEM
7
6
8
5.5
4
9

Yêu cầu: Xuất ra bảng ĐIỂM và tạo một Button có tên là THOÁT.
Áp dụng mô hình ba lớp.

DbConnection:
Lớp này được sử dụng chủ yếu để thực hiện truy vấn cơ sở dữ liệu
như Select, Update và Delete. Nó cũng kiểm tra nếu kết nối cơ sở dữ liệu
được mở hay không. Nếu kết nối cơ sở dữ liệu không mở cửa, nó sẽ mở ra
kết nối và thực hiện các truy vấn cơ sở dữ liệu. Kết quả dữ liệu sẽ được
nhận và đi qua Data Table trong lớp này.

Lớp này có các thiết lập cơ sở dữ liệu từ file app.config, do đó nó thực sự
linh hoạt để quản lý các thiết lập cơ sở dữ liệu.

Page 19


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace VD
{
public class dbConnection
{
private SqlDataAdapter

myAdapter;

private SqlConnection con;
public dbConnection()
{
myAdapter = new SqlDataAdapter();
con = new SqlConnection(@"Data
Source=TRANG-PC\\SQLEXPRESS;Integrated
Security=True");
}
private SqlConnection openConnection()

{
if(con.State == ConnectionState.Closed
|| con.State == ConnectionState.Broken)
{
Page 20


con.Open();
}
return con;
}
public DataTable executeSelectQuery(String
_query, SqlParameter[] sqlParameter)
{
SqlCommand myCommand = new
SqlCommand();
DataTable dataTable = new DataTable();
dataTable = null;
DataGridView dg = new DataGridView();
try
{
myCommand.Connection =
openConnection();
myCommand.CommandType =
CommandType.StoredProcedure;
myCommand.CommandText = "HIENTHI";
myCommand.Parameters.AddRange(sqlParameter);
myAdapter.SelectCommand =
myCommand;
myAdapter.Fill(dataTable);

dg.DataSource = dataTable;

Page 21


}
catch(SqlException )
{
Console.Write("loi");
return null;
}
finally
{
}
return dataTable;
}
}
}

Database Access Layer:
Cơ sở dữ liệu Access Layer (DAO) xây dựng các truy vấn dựa trên
các tham số nhận được từ lớp Bussiness Logic Layer và vượt qua lớp
dbConnection để thực hiện. Và trả kết quả từ lớp dbConnection tới lớp
Bussiness Logic Layer.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
Page 22



using System.Data;
using System.Data.SqlClient;
namespace VD.DAO
{
public class UserDAO
{
private dbConnection con;
public UserDAO()
{
con = new dbConnection();
}
public DataTable hienthithongtin()
{
string query = string.Format("select *
from DIEM");
SqlParameter[] sqlParameters = new
SqlParameter[0];
return con.executeSelectQuery(query,
sqlParameters);
}
}
}

Value object:
Page 23


Value object thực chất là một lớp với các phương pháp GET và
SET( phương pháp nhận và trả về dữ liệu). Nó chủ yếu được sử dụng để

đưa dữ liệu từ lớp này sang lớp khác. Nó được kết nối trực tiếp với
Business Logic Layer và lớp Presentation Layer.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace VD.DAO
{
public class UserVO
{
private float _DIEM;
private string _MASV;
private string _TENSV;
public UserVO()
{
}
public float DIEM
{
get { return _DIEM; }
set { _DIEM = value; }
}
Page 24


public string MASV
{
get { return _MASV; }
set { _MASV = value; }
}
public string TENSV

{
get { return _TENSV; }
set { _TENSV = value; }
}

}
}

Business Logic Layer:
Business Logic Layer (BUS) hoạt động như một cầu nối giữa lớp
Presentation Layer và lớp Database Access Layer(DAO). Tất cả các giá trị
người dùng nhận được từ các lớp Presentation được thông qua lớp này.
Các kết quả nhận được từ lớp Database Access Layer trong hàng dữ liệu ở
định dạng trong bảng dữ liệu, nhưng trong lớp này nó được chuyển đổi
thành Value Object(VO). Business Logic Layer (BUS) là lớp quan trọng
nhất trong toàn bộ chương trình vì nó chủ yếu chứa tất cả các business
logic của chương trình. Bất cứ khi nào người dùng muốn cập nhật business
logic của chương trình chỉ cần cập nhật lớp này.
Page 25


×