- 1 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
Trần Thị Xuân Hƣơng
MẪU THIẾT KẾ VÀ ỨNG DỤNG PHÁT
TRIỂN HỆ THỐNG THÔNG TIN QUẢN LÝ
XUẤT NHẬP VÀ TỒN KHO TRONG HOẠT
ĐỘNG LOGISTICS
Chuyên ngành : Khoa học máy tính
Luận văn thạc sĩ Khoa học máy tính
- 2 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
Thái Nguyên, 2012
MỞ ĐẦU
1. Cơ sở khoa học và thực tiễn của đề tài
Thiết kế phần mềm là một công đoạn quan trọng trong quy trình xây
dựng và phát triển phần mềm, giai đoạn này quyết định rất lớn đến sự thành
công hay thất bại của phần mềm. Cũng như việc thiết kế phần mềm nói
chung, việc thiết kế phần mềm hướng đối tượng cần hướng tới việc sử dụng
lại nhằm giảm bớt chi phí thực hiện và tăng tính hiệu quả.
Cùng với sự phát triển nền kinh tế theo hướng toàn cầu hóa, Logistics
ra đời và phát triển rất nhanh chóng và mang lại kết quả rất tốt đẹp ở nhiều
nước trên thế giới.
Từ nhu cầu thực tiễn xã hội và đặc biệt là của Công ty TNHH Sungnam
Knitting Mills, cùng với cơ sở khoa học của việc nghiên cứu ứng dụng các
mô hình sử dụng lại vào quá trình thiết kế phần mềm, luận văn đã chọn đề
tài “Mẫu thiết kế và ứng dụng phát triển hệ thống thông tin quản lý xuất
nhập và tồn kho trong hoạt động logistics”
2. Đối tƣợng và phạm vi nghiên cứu
- Đối tượng nghiên cứu: Đề tài tập trung nghiên cứu về các mẫu thiết kế
và hệ thống kho trong hoạt động logistics.
- Phạm vi nghiên cứu: Đề tài chỉ tập trung tìm hiểu các mẫu thiết kế
trong kỹ nghệ hướng đối tượng và ứng dụng để phát triển hệ thống thông
tin quản lý xuất nhập và tồn kho trong dây chuyền hoạt động logistics.
3. Mục tiêu nghiên cứu của đề tài
- Tổng quan về các mẫu thiết kế trong kỹ nghệ hướng đối tượng.
- Đặc tả các hoạt động của hệ thống kho trong dây chuyền logistics
- 3 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
- Thiết kế hệ thống quản lý kho liên quan đến việc xuất nhập và tồn kho
trong dây chuyền hoạt động logistics dựa vào việc sử dụng lại các mẫu.
- Xây dựng chương trình thử nghiệm quản lý xuất nhập và tồn kho.
4. Những nội dung nghiên cứu chính
MỞ ĐẦU: Giới thiệu cơ sở khoa học và thực tiễn của đề tài, đối tượng và
phạm vi nghiên cứu của đề tài.
CHƢƠNG 1: Tổng quan về mẫu thiết kế trong kỹ nghệ hướng đối tượng và
hoạt động logistics.
Trong chương này trình bày mẫu thiết kế, phân tích và thiết kế hướng
mẫu trong công nghệ hướng đối tượng và vai trò của logistics đối với doanh
nghiệp, xu hướng phát triển của logistics và vai trò của mẫu thiết kế trong
việc phát triển các hệ thống quản lý hoạt động logistics.
CHƢƠNG 2: Một số vấn đề về ứng dụng các mẫu thiết kế trong quá trình
phát triển HTTT quản lý.
Trong chương này trình bày về một số mẫu điển hình về hành vi, trình
diễn, ứng dụng của các mẫu thiết kế vào các bài toán cụ thể.
CHƢƠNG 3: Cài đặt ứng dụng bài toán xuất nhập và tồn kho
Trong chương này trình bày về bài toán xuất nhập và tồn kho trong
hoạt động logistics, phạm vi của bài toán và ứng dụng mẫu thiết kế vào bài
toán quản lý hoạt động logistics và cài đặt ứng dụng.
KẾT LUẬN: Đánh giá kết quả.
- 4 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
CHƢƠNG I
TỔNG QUAN VỀ MẪU THIẾT KẾ TRONG KỸ NGHỆ HƢỚNG ĐỐI
TƢỢNG VÀ HOẠT ĐỘNG LOGISTICS
1.1. Mẫu thiết kế
Năm 1995, Erich Gamma, Richard Helm, Join Vlissides và Ralph
Johnson (Gang of Four - GOF) đã công bố cuốn sách “Elements of reusable
Object – Oriented Software” đánh dấu sự ra đời của “Mẫu thiết kế”. Đây là
một bước tiến vô cùng quan trọng đối với việc thiết kế phần mềm hướng đối
tượng.
Ý tưởng của mẫu phần mềm được phát triển rất đa dạng. Kiến trúc sư
Christopher Alexander trường đại học California ở Berkeley là người phát
triển nền tảng của mẫu. Từ “mẫu” đã gần như gắn liền với sự nghiệp hoạt
động của giáo sư. Giáo sư và nhóm nghiên cứu của ông đã mất khoảng hơn
20 năm để phát triển một cách tiếp cận tới các kiến trúc thông thường có sử
dụng các mẫu. Alexander đã giới thiệu hơn 250 mẫu với nhiều mức độ trừu
tượng từ kiến trúc của một thành phố đến các thiết kế phòng. Kiến trúc sư đã
thành lập khung mẫu miêu tả cơ bản của một mẫu như một giải pháp của vấn
đề ở mức ngữ cảnh. Ông đã phát triển một nguyên mẫu từ các mẫu dùng trong
công việc của ông về kiến trúc.
Kent Beck và Ward Cunningham đã rất say mê áp dụng ý tưởng của
Alexander để phát triển các mẫu phần mềm. Họ đã tập hợp các mẫu đầu tiên
nói về đặt tả giao diện người dùng. Kent tập trung vào các thành ngữ cho
Smalltalk và Ward diễn đạt kinh nghiệm của mình bằng các hệ thống nghiệp
vụ (hệ thống kế toán).
- 5 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
Erich Gamma đã xuất bản ấn phẩm đầu tiên về vấn đề sử dụng các mẫu
trong phát triền phần mềm năm 1991. Cuốn sách được viết ở Đức, nhưng
cuốn sách này không được chú ý nhiều. Bruce Anderson là một trong những
nhà lãnh đạo trong cộng đồng mẫu. Ông thành lập ngân hàng mẫu ở OOPSLA
vào đầu những năm 1990. Jim Coplien miêu tả thành ngữ trên C++ trong
quyển lập trình C++ tiên tiến. Theo một cách nào đó, những thành ngữ này có
liên quan tới ý tưởng của những giải pháp cung cấp tài liệu cho những vấn đề
thường xuyên. Một nhóm có tên là Hillside Group được hình thành nhằm khai
thác sâu hơn những ý tưởng này và thúc đẩy sử dụng mẫu trong quá trình phát
triển phần mềm. Họ xây dựng mẫu nhằm dẫn dắt và hỗ trợ những thành viên
mới trong cộng đồng mẫu. Nhóm này được hình thành đầu tiên với tên PLOP
vào năm 1994.
Những kiến trúc cơ bản của quá trình phát triển mẫu được Gang of
Four (GOF) xuất bản trong cuốn “Những mẫu thiết kế”. Những phần tử của
phần mềm hướng đối tượng đã được giới thiệu và được miêu tả dễ hiểu với
mẫu thiết kế hướng đối tượng. Erich Gamma, Richard Helm, Ralph Johnson
và John Vlissides là đại diện cho lĩnh vực phân loại những giải pháp thiết kế
và việc sử dụng thông thường dùng bên trong mẫu hướng đối tượng. Họ xây
dựng một tập hợp gồm 23 mẫu chia làm 3 phạm trù: theo hành vi, theo cấu
trúc và theo tạo sinh.
Peter Coad gần đây cũng nghiên cứu về các mẫu hướng đối tượng.
Trong đó, ông đã mô tả 7 loại mẫu cơ bản trong phân tích và thiết kế hướng
đối tượng. Ông làm việc dựa trên các mẫu, tức là nhờ vào việc phân tích một
ứng dụng của miền đã được đưa ra và sử dụng công nghệ hướng đối tượng để
xây dựng các ứng dụng. Douglas Schmidt cũng là một người dẫn dắt những
- 6 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
người mới tham gia vào lĩnh vực dùng mẫu. Ông là tác giả của rất nhiều mẫu
trong lĩnh vực các hệ thống truyền thông và các ứng dụng phân tán.
Douglas Schmidt đã làm việc trên mẫu về các ứng dụng cho vấn đề
phát triển khung làm việc. Ông đã tạo ra các yếu tố cơ bản của cấu trúc vào
trong các siêu mẫu được sử dụng để phát triển các khung làm việc và điền địa
chỉ Hot-Sport và Hooks/templates tiếp cận trong việc phát triển khung làm
việc.
Kiến trúc phần mềm hướng mẫu: Một hệ thống mẫu còn được gọi
“Gang of Four” hướng vào việc sử dụng các mẫu ở kiến trúc trong quá trình
phát triển phần mềm. Nhiều tác giả phân loại các mẫu phần mềm thành mẫu
kiến trúc, mẫu thiết kế và thành ngữ. Hầu hết sự đóng góp của họ được hướng
về khía cạnh mẫu kiến trúc. Những quyển sách của họ cùng với những quyển
sách của GOF đánh dấu điểm bắt đầu của những người mới trong cộng đồng
mẫu.
1.1.1. Khái niệm mẫu thiết kế
Mẫu thiết kế (Design pattern) là một cặp giải pháp/vấn đề được đặt tên
có thể áp dụng trong những ngữ cảnh mới và những hướng dẫn để áp dụng nó
trong những tình huống mới như thế nào. [5]
Mẫu thiết kế không đơn thuần là một bước nào đó trong các giai đoạn
phát triển phần mềm mà nó đóng vai trò là sáng kiến để giải quyết một bài
toán thông dụng nào đó. Các giai đoạn phần mềm vẫn hoàn chỉnh mà không
có mẫu thiết kế, nhưng sự góp mặt của mẫu thiết kế sẽ giúp cho việc xác định
bài toán cần giải quyết nhanh gọn hơn, từ đó đưa ra cách giải quyết hợp lý.[7]
Mẫu thiết kế không chỉ được sử dụng để xác định bài toán và cách giải
quyết mà còn được sử dụng nhằm cô lập các thay đổi trong mã nguồn, từ đó
- 7 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
làm cho hệ thống có khả năng tái sử dụng cao do mẫu thiết kế tuân thủ rất
nghiêm ngặt các nguyên lý thiết kế hướng đối tượng. [7]
Việc xác định thế nào là một mẫu thiết kế phụ thuộc vào cách nhìn nhận
vấn đề của mỗi người. Theo GOF, cách nhìn nhận phổ biến về các mẫu thiết
kế là coi chúng giống như các mô tả về các đối tượng phục vụ mục đích trao
đổi thông tin trong quá trình thiết kế đã được hiệu chỉnh để giải quyết những
yêu cầu thiết kế trong những trường hợp nhất định.
1.2.2. Các thành phần của mẫu thiết kế
Mỗi mẫu thiết kế trước tiên mô tả một bài toán mà ta gặp nhiều lần, rồi
mô tả những yếu tố căn bản nhất để giải quyết bài toán theo cách mà ta có thể
áp dụng lại nhiều lần. Dựa trên mô tả như trên về các mẫu thiết kế, ta thấy
chúng bao gồm những thành phần cơ bản như sau:
Tên mẫu (Design pattern name): là tên gọi qua đó ta có thể mô tả bài toán
cần giải quyết, giải pháp thực hiện kết quả. Việc đặt tên mẫu thiết kế cho
phép mô tả các bài toán và giải pháp một cách ngắn gọn. Tạo thành một
ngôn ngữ trong cộng đồng những người thiết kế. Ví dụ, khi nói đến mẫu
thiết kế “Facade”, ta hình dung ngay đến mô hình thiết kế một đối tượng
với vai trò “interface” của một tập các thành phần nhỏ.
Bài toán: Cho phép xác định trong trường hợp nào thì áp dụng mẫu thiết
kế thông qua mô tả bài toán và ngữ cảnh của bài toán đó.
Giải pháp giải quyết bài toán: Mô tả những thành phần tạo nên mẫu thiết
kế (các lớp, các đối tượng) cùng mối quan hệ, vai trò và cách thức phối
hợp giữa chúng (cấu trúc, thừa kế). Giải pháp không đề cập đến cách thức
thiết kế hay thực hiện cụ thể nào vì nó được áp dụng trong rất nhiều tình
huống khác nhau. Thay vào đó, giải pháp của mẫu thiết kế được mô tả với
tính khái quát cao với cách thức tổ chức chung nhất của các thành phần
- 8 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
trong việc giải quyết bài toán. Ví dụ như mẫu thiết kế được gọi như một
thành ngữ (mẫu GRASP), mẫu thiết kế có thể mô tả bằng lời hoặc mô
hình thiết kế hay bằng mã nguồn.
Hệ quả: Là những gì thu nhận được cùng với những yếu tố cần cân nhắc
khi áp dụng mẫu thiết kế để giải quyết bài toán. Hệ quả thường không
được đề cập khi nói đến một mẫu thiết kế nhưng đây là yếu tố quyết định
khi cần chọn lựa hoặc phân tích chi phí và lợi ích khi áp dụng các mẫu
thiết kế.
1.2. Phân tích và thiết kế hƣớng mẫu trong công nghệ hƣớng đối tƣợng
Phân tích và thiết kế hướng mẫu (Pattern – Oriented Analysis and
Design - POAD) là một cách tiếp cận kiến trúc cấu thành nhằm gắn kết các
mẫu ở mức thiết kế. Nó sử dụng các khái niệm của cấu trúc các mẫu thiết kế
như là các thành phần thiết kế với các giao diện.
Phân tích và thiết kế hướng mẫu dựa trên tiền đề là: tại một mức thiết
kế nào đó, người ta biết các mẫu có thể sử dụng được trong ứng dụng và nó
thực sự không lấn át công việc của người thiết kế với những chi tiết của thiết
kế bên trong mỗi mẫu.
1.2.1. Vai trò của mẫu trong phát triển phần mềm
Khi sự phức tạp của hệ thống phần mềm gia tăng, chúng ta tìm kiếm
cách tiếp cận để làm đơn giản hóa sự phát triển của các ứng dụng phần mềm.
Các mẫu thiết kế hứa hẹn sớm đem lại lợi ích của việc tái sử dụng trong vòng
đời phát triển. Để có được lợi ích trong quá trình triển khai những giải pháp
thiết kế đã được khẳng định này, chúng ta cần phải định nghĩa các kỹ thuật
cấu thành thiết kế để xây dựng ứng dụng sử dụng các mẫu. Những mô hình
thiết kế linh hoạt cần phải được phát triển để hỗ trợ cho kỹ thuật này.
- 9 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
Tái sử dụng phần mềm trong ứng dụng thực tế là một nhiệm vụ khó. Nó
thật sự quan trọng để giảm bớt công sức phát triển và đảm bảo chất lượng
phần mềm cao hơn. Các mẫu thiết kế có tác dụng thúc đẩy trong việc sử dụng
lại các sản phẩm trong pha thiết kế, bởi vì chúng cung cấp một tập hợp các từ
vựng thông thường cho thiết kế. Chúng còn cung cấp một ngữ nghĩa giúp cho
việc hiểu các thiết kế và chúng chỉ ra các khối xây dựng từ các ứng dụng phức
tạp hơn đã được xây dựng. Sự tập hợp từ nhiều danh mục mẫu sẵn có đã
khuyến khích hình thành các ý tưởng xa hơn về việc làm sao để sử dụng
những giải pháp có thể tin cậy được để phát triển các ứng dụng. Các nhà
nghiên cứu và thiết kế có kinh nghiệm đã mất nhiều công sức trong việc làm
tài liệu có chất lượng cao trong thiết kế phần mềm như những mẫu thiết kế.
1.2.2. Mục đích của việc phân tích thiết kế hƣớng mẫu
Khi yêu cầu về các hệ thống phần mềm tăng, các nhà nghiên cứu cũng
như các nhà thực hành đã tìm kiếm các phương pháp luận và công nghệ để tự
động hóa quá trình sản xuất phần mềm và làm thuận lợi quá trình bảo trì hệ
thống. Những công nghệ này xuất hiện gần đây bao gồm các mẫu thiết kế và
các khung làm việc. Trường hợp đặc biệt, trong cùng một khoảng thời gian
chúng ta nhận thấy sự cần thiết của một phương pháp luận phát triển để phát
triển các hệ thống phức tạp với qui mô lớn và học được kinh nghiệm của các
nhà thiết kế hệ thống khác trong việc giải quyết các vấn đề lặp lại của thiết kế.
Tài liệu của mẫu thiết kế miêu tả chi tiết về một mẫu như: cách dùng,
cấu trúc, hành vi của những người tham gia, những phần tử và những nguyên
tắc chỉ đạo cho việc triển khai. Chúng ta hiểu lỗi là gì, làm sao để biên soạn
những mẫu này để phát triển các ứng dụng. Một hệ thống hoàn chỉnh không
thể và cũng không bao giờ được xây dựng từ một mẫu đơn.
- 10 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
Chúng ta có thể soạn các mẫu ở cùng một mức của lớp hoặc một mức
của đối tượng. Các mô hình lớp trình bày khía cạnh triển khai và bảo trì của
một mẫu. Trong khi các mô hình lớp trình bày khía cạnh triển khai và bảo trì
của một mẫu. Trong khi các mô hình đối tượng trình bày về sự thực hiện,
hành vi và khía cạnh vai trò. Các nhà nghiên cứu và các nhà thực thi quan tâm
tới vấn đề kết hợp sử dụng vai trò các mẫu và mô hình nghiệp vụ. Các vấn đề
của soạn mẫu như các lớp thành phần ít được chú ý hơn.
Mục đích của phân tích và thiết kế hướng mẫu là đẩy mạnh quá trình
phát triển trên nền mẫu. Chúng ta đang tìm kiếm những cách sao cho nhiều
nhà thiết kế sử dụng nhiều các mẫu hơn. Chúng ta muốn thu hút những nhà
thiết kế mới để giúp họ sử dụng các mẫu một cách đơn giản theo từng tiến
trình của họ. Đẩy mạnh sự phát triển trên nền mẫu, chúng ta cần định nghĩa
những cách tiếp cận cấu thành dễ sử dụng.
Phát triển các cách tiếp cận có hệ thống để gắn kết các mẫu: một nhu
cầu ngày càng cấp thiết là phát triển những cách tiếp cận các thành phần một
cách hệ thống nhằm làm đơn giản hóa quá trình kết hợp các mẫu. Các mô
hình làm đơn giản quá trình kết hợp giữa các mẫu trong pha thiết kế phải
được phát triển để hỗ trợ cho cách tiếp cận này.
Cải thiện chất lượng thiết kế: Các mẫu thiết kế là những thiết kế có chất
lượng tốt. Việc sử dụng lại những mẫu trong một thiết kế được định trước để
cải thiện chất lượng thiết kế của các ứng dụng phần mềm được xây dựng nhờ
sử dụng những mẫu như những khối hợp nhất cơ bản của họ.
1.2.3. Những vấn đề thiết kế hƣớng mẫu
Để thúc đẩy sự phát triển của các mẫu cơ sở và xây dựng các cách tiếp
cận mới để biên soạn các mẫu thì chúng ta còn phải đương đầu với rất nhiều
thách thức.
- 11 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
Cái gì là cơ sở để phân loại mẫu như một thành phần thiết kế? Để sử
dụng các mẫu như là một khối hợp nhất chúng ta cần phải tìm ra các đặc
trưng mà mẫu được phân loại như một thành phần thiết kế. Làm sao chúng ta
có thể định nghĩa những giao diện mẫu cho mục đích hợp nhất với các mẫu
khác. Chúng ta có thể biên soạn những ứng dụng đơn độc từ các mẫu thiết kế?
Nhiều ứng dụng sử dụng một hoặc nhiều mẫu trong thiết kế. Thách thức ở đây
là liệu các ứng dụng có thể xây dựng bằng cách kết hợp các mẫu thiết kế
không? Giao diện của các mẫu này như thế nào? Giao diện của các mẫu là gì?
và giao diện nào không thích ứng với những vấn đề có thể xuất hiện? Các loại
mẫu gì được sử dụng? Chúng ta phát triển các ứng dụng có sử dụng các mẫu
thiết kế một cách hệ thống như thế nào? Có tiến trình thiết kế tốt để phát triển
các ứng dụng sử dụng các mẫu đã thiết kế như những khối hợp nhất không?
1.3. Phân loại mẫu thiết kế
Erich Gamma và các đồng sự của ông đề xuất 23 mẫu thiết kế và đã
đưa ra hai tiêu chí để phân loại các mẫu thiết kế này. Đó là phân loại theo
mục đích sử dụng và phạm vi áp dụng của mẫu.
1.3.1. Phân loại theo mục đích sử dụng
Các mẫu thiết kế được phân thành 3 nhóm: mẫu kiến tạo, mẫu cấu trúc,
mẫu hành vi.
Mẫu kiến tạo (Creational Patterns): mẫu kiến tạo trừu tượng hóa quá trình
khởi tạo đối tượng. Các mẫu này giúp hệ thống không phải phụ thuộc vào
cách một đối tượng được tạo ra, xây dựng và thể hiện.
Mẫu thiết kế kiến tạo bao gồm các mẫu sau: Abstract Factory, Builder,
Factory Method, Prototype, Singleton.
Mẫu cấu trúc (Structural Patterns): mẫu thiết kế cấu trúc đề cập đến cách
mà các đối tượng và lớp đối tượng kết hợp để tạo nên một cấu trúc lớn hơn
- 12 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
và hữu dụng hơn. Việc thiết kế các lớp đối tượng là nhằm đáp ứng các
ràng buộc cụ thể của hệ thống. Mẫu cấu trúc mô tả mối quan hệ giữa các
lớp này và sắp xếp sao cho nếu có bất kì sự thay đổi nào với hệ thống đều
không làm thay đổi những quan hệ đó.
Mẫu thiết kế cấu trúc bao gồm các mẫu sau: Adapter, Bridge, Composite,
Decorator, Façade, Flyweight, Proxy.
Mẫu hành vi (Behavioral Patterns): mẫu hành vi mô tả sự tương tác giữa
các đối tượng và cách chúng phân phối, cộng tác, để giải quyết một hay
một nhóm trách nhiệm nào đó.
Mẫu hành vi bao gồm các mẫu sau: Chain of Responsibility, Command,
Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy,
Template Method, Visitor.
1.3.2. Phân loại theo phạm vi sử dụng
Các mẫu thiết kế được chia làm 2 nhóm: Phạm vi được nói đến khi ta
quyết định nên áp dụng mẫu thiết kế vào các lớp hay các đối tượng.
Mẫu thiết kế áp dụng cho lớp (Class): Các mẫu này mô tả và giải quyết
mối quan hệ giữa các lớp đối tượng và lớp con của chúng. Các mối quan
hệ này được thiết lập qua cơ chế kế thừa và chỉ xảy ra ở thời điểm biên
dịch chương trình.
Các mẫu thuộc loại này bao gồm: Factory Method, Adapter (Class),
Interpreter, Template Method.
Mẫu thiết kế áp dụng cho đối tượng (Object): Các mẫu này mô tả và giải
quyết mối quan hệ giữa các đối tượng. Các mối quan hệ này có thể thay
đổi tại thời điểm chạy chương trình.
Các mẫu thuộc loại này bao gồm: Abstract Factory, Builder, Prototype,
Singleton, Adapter (Object), Bridge, Composite, Decorator, Façade,
- 13 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
Flyweight, Proxy, Chain of Responsibility, Command, Iterator, Mediator,
Memento, Observer, State, Strategy, Visitor.
- 14 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
1.4. Sơ đồ mối quan hệ giữa các mẫu thiết kế
1.5. Tổng quan về Logistics
Hình 1.1: Sơ đồ mối quan hệ giữa các mẫu thiết kế
- 15 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
1.5. Tổng quan về Logistics
Logistics đã phát triển rất nhanh chóng, giờ đây logistics được ghi nhận
như một chức năng kinh tế chủ yếu, một công cụ hữu hiệu mang lại thành
công cho các doanh nghiệp cả trong khu vực sản xuất lẫn trong khu vực dịch
vụ.
Logistics được phát triển qua 3 giai đoạn:
* Giai đoạn 1: Phân phối vật chất
Vào những năm 60, 70 của thế kỷ 20, người ta đã bắt đầu quan tâm đến
vấn đề quản lý một cách có hệ thống những hoạt động có liên quan với nhau
như vận tải, phân phối, bảo quản hàng hóa, quản lý tồn kho, bao bì đóng gói,
phân loại,… để đảm bảo phân phối sản phẩm, hàng hóa cho khách hàng một
cách có hiệu quả. Những hoạt động đó được gọi là phân phối sản phẩm vật
chất hay còn có tên gọi là logistics đầu ra.
* Giai đoạn 2: Hệ thống Logistic
Những năm 80, 90 của thế kỷ 20, các công ty tiến hành kết hợp quản lý
2 mặt: đầu vào(cung ứng vật tư) với đầu ra (phân phối sản phẩm) để tiết kiệm
chi phí, tăng thêm hiệu quả của quá trình này, được gọi là hệ thống logistics.
* Giai đoạn 3: Quản trị chuỗi cung ứng
Quản trị chuỗi cung ứng là một khái niệm mang tính chiến lược về
quản trị chuỗi nối tiếp các hoạt động từ người cung cấp – đến người sản xuất
– khách hàng tiêu dùng sản phẩm, Logistics phát triển quá nhanh chóng, trong
nhiều ngành, nhiều lĩnh vực, ở nhiều nước. Chính vì vậy, cho đến nay vẫn
chưa có một khái niệm thống nhất về logistics.
- 16 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
1.5.1. Khái niệm về logistics
Trong lĩnh vực sản xuất: logistics là cung ứng, là chuỗi hoạt động
nhằm đảm bảo nguyên nhiên vật liệu, máy móc, thiết bị, các dịch vụ cho hoạt
động tổ chức doanh nghiệp được tiến hành liên tục, nhịp nhàng và có hiệu
quả; bên cạnh đó còn tham gia vào quá trình phát triển sản phẩm mới.
Dưới góc độ quản trị chuỗi cung ứng: logistics là quá trình tối ưu hóa
về vị trí lưu trữ và chu chuyển các tài nguyên/yếu tố đầu vào từ điểm xuất
phát đầu tiên là nhà cung cấp, qua nhà sản xuất, người bán buôn, bán lẻ, đến
tay người tiêu dùng cuối cùng, thông qua hàng loạt các hoạt động kinh
doanh.
Theo giáo sư Martin Christopher: “Logistics là quá trình quản trị chiến
lược thu mua, di chuyển và dự trữ nguyên liệu, bán thành phẩm, thành phẩm
(và dòng thông tin tương ứng) trong một công ty và qua các kênh phân phối
của công ty để tối đa hóa lợi nhuận hiện tại và tương lai thông qua việc hoàn
tất các đơn hàng với chi phí thấp nhất”.
Theo quan điểm “5 right” thì: “Logistics là quá trình cung cấp đúng
sản phẩm đến đúng vị trí, vào đúng thời điểm với điều kiện và chi phí phù hợp
cho khách hàng tiêu dùng sản phẩm”.
Theo nhóm tác giả của cuốn sách “Logistics– những vấn đề cơ bản” thì
logistics được định nghĩa như sau: “Logistics là quá trình tối ưu hóa về vị trí
và thời điểm, vận chuyển và dự trữ nguồn tài nguyên từ điểm đầu tiên của
chuỗi cung ứng qua các khâu sản xuất phân phối cho đến tay người tiêu dùng
cuối cùng, thông qua hàng loại các hoạt động kinh tế.”
1.5.2. Vai trò của logistics đối với các doanh nghiệp
Logistics giúp giải quyết cả đầu ra lẫn đầu vào của doanh nghiệp một
cách hiệu quả.
- 17 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
Logistics góp phần nâng cao hiệu quả quản lý, giảm thiểu chi phí nhằm
nâng cao năng lực cạnh tranh của doanh nghiệp.
Logistics còn góp phần giảm phí thông qua việc tiêu chuẩn hóa chứng
từ.
Ngoài ra, logistics còn hỗ trợ đắc lực cho hoạt động marketing:
Logistics đóng vai trò then chốt trong việc đưa sản phẩm đến đúng nơi cần
đến, vào đúng thời điểm thích hợp.
1.5.3. Xu hƣớng phát triển của logistics
Logistics đang phát triển theo 3 xu hướng chính sau:
- Xu hướng thứ nhất: ứng dụng công nghệ thông tin, thương mại điện tử ngày
càng phổ biến và sâu rộng hơn trong các lĩnh vực của logistics như: hệ thống
thông tin Quản trị chuỗi cung ứng toàn cầu, công nghệ nhận dạng bằng tần số
Radio…
- Xu hướng thứ hai: phương pháp quản lý logistics kéo ngày càng phát triển
mạnh mẽ và dần thay thế cho phương pháp logistics đẩy theo truyền thống.
Phương pháp đẩy: là phương pháp tổ chức sản xuất theo dự báo nhu
cầu thị trường. Phương pháp này tạo ra hàng tồn kho và “đẩy” hàng ra thị
trường để đáp ứng nhu cầu thực tế. Ưu điểm của phương pháp này là đơn
giản, dễ thực hiện, có nhiều thời gian để sản xuất, hạ giá thành sản phẩm nhờ
phát huy tính kinh tế về quy mô và đường cong kinh nghiệm (là hiện tượng kỹ
năng của người lao động tăng lên dẫn đến tăng năng suất lao động). Nhược
điểm: tạo ra khối lượng hàng tồn lớn, chu kỳ sản xuất dài, chi phí dự trữ cao.
Phương pháp này đòi hỏi lượng vốn lưu động lớn, vòng quay chậm.
Phương pháp kéo: hoạch định sản xuất dựa trên nhu cầu và đơn hàng
thực tế của thị trường, có nghĩa là nhu cầu của khách hàng “kéo” hàng từ sản
xuất về phía thị trường. Ưu điểm: giảm thiểu khối lượng và chi phí hàng tồn
- 18 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
kho, rút ngắn chu trình sản xuất, nhờ đó giảm vốn lưu động, tăng vòng quay
vốn, phản ứng nhanh và hiệu quả hơn với những thay đổi của thị trường. Tuy
nhiên, phương pháp này đòi hỏi phải có khả năng phản ứng nhanh trước
những yêu cầu của thị trường, tổ chức linh hoạt, phải tổ chức và quản lý tốt hệ
thống thông tin, chu trình sản xuất được quản lý chặt chẽ, khoa học, có khả
năng đáp ứng được yêu cầu nghiêm ngặt về tiến độ, thời gian giao hàng,…
- Xu hương thứ ba: thuê dịch vụ logistics từ các công ty logistics chuyên
nghiệp ngày càng phổ biến.
Trên thế giới, logistics đã và đang phát triển mạnh mẽ. Ở Việt Nam
logistics đã bắt đầu được nhìn nhận như một công cụ “sắc bén” đem lại thành
công cho các doanh nghiệp trong điều kiện hội nhập và chắc chắn logistics sẽ
phát triển trong tương lai không xa.
1.5.4. Vai trò của các mẫu thiết kế trong việc phát triển các hệ thống
quản lý hoạt động logistics
Hệ thống quản lý có xu thế được phát triển với cường độ mạnh khi sử
dụng các công nghệ kỹ thuật mới: ứng dụng công nghệ tiên tiến như sử dụng
kỹ nghệ hướng đối tượng, công cụ mô hình hóa UML và “mẫu” trong thiết kế
cũng như ứng dụng công nghệ web để cập nhật và xử lý thông tin.
Cũng nhờ vậy, việc thiết kế hệ thống dựa trên các nguyên tắc “hướng
mẫu” nhằm bảo đảm trước hết có được một hệ thống quản lý chất lượng các
hoạt động logistics, sau đó cho phép hệ thống dễ bảo trì, dễ mở rộng trong
tương lai, đáp ứng được các yêu cầu phức tạp, có nhiều thay đổi và yêu cầu
phát triển ngày càng cao của xã hội. Hệ thống logistics được xây dựng trên cơ
sở như thế sẽ được áp dụng ngày càng rộng rãi trong các tổ chức và doanh
nghiệp có kết nối mạng máy tính.
- 19 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
- 20 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
CHƢƠNG II
MỘT SỐ VẤN ĐỀ VỀ ỨNG DỤNG CÁC MẪU THIẾT KẾ TRONG
QUÁ TRÌNH PHÁT TRIỂN HTTT QUẢN LÝ
Không thể có một mẫu nào có thể vận dụng tốt cho mọi trường hợp.
Mỗi mẫu có những đặc thù riêng, có thể áp dụng trong quá trình phát triển
một HTTT trong những ngữ cảnh cụ thể. Việc làm rõ ý nghĩa, cấu trúc và
phạm vi sử dụng của mỗi loại mẫu là rất quan trọng nhằm giúp các nhà thiết
kế hệ thống có được những quyết định đúng trong việc chọn lựa các mẫu
thích hợp, hướng tới chất lượng quản lý các hoạt động sản xuất, kinh doanh,
đặc biệt là các hoạt động logistics. Dưới đây, chúng ta sẽ xét một số mẫu điển
hình theo các phương diện nêu trên.
2.1. Một số mẫu điển hình về hành vi, trình diễn và cấu trúc
2.1.1. Mẫu chế tạo trừu tƣợng (Abstract Factory Pattern)
Mẫu chế tạo trừu tượng cung cấp một giao diện có chức năng tạo ra
một tập hợp các đối tượng liên quan hoặc phụ thuộc lẫn nhau mà không chỉ ra
đó là những lớp cụ thể nào tại thời điểm thiết kế.
Về bản chất, mẫu chế tạo trừu tượng chỉ khác mẫu chế tạo ở chỗ bản
thân đối tượng Factory không được chỉ ra cụ thể tại thời điểm thiết kế. Nó là
một giao diện hoặc lớp trừu tượng (Interface, abstract). Nếu như mẫu chế tạo
phân loại đối tượng dựa trên tham số đầu vào thì đối với mẫu chế tạo trừu
tượng, thủ tục createObject() còn phụ thuộc vào các yếu tố phụ khác như môi
trường hệ điều hành. Ứng với mỗi yếu tố phụ thứ hai ta có một lớp Factory cụ
thể.
- 21 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
* Cấu trúc của mẫu
Trong đó:
AbstractFactory: là lớp trừu tượng, tạo ra các đối tượng thuộc 2 lớp trừu
tượng là: AbstractProductA và AbstractProductB
ConcreteFactoryX: là lớp kế thừa từ AbstractFatory, lớp này sẽ tạo ra
một đối tượng cụ thể.
AbstractProduct: là các lớp trừu tượng, các đối tượng cụ thể sẽ là các
thể hiện của các lớp dẫn xuất từ lớp này.
* Phạm vi ứng dụng mẫu
Hình 2.1. Cấu trúc của mẫu Abstract Factory
- 22 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
Phía trình khách sẽ không phụ thuộc vào việc những sản phẩm được tạo
ra như thế nào.
Ứng dụng sẽ được cấu hình với một hoặc nhiều họ sản phẩm.
Các đối tượng cần phải được tạo ra như một tập hợp để có thể tương thích
với nhau.
Chúng ta muốn cung cấp một tập các lớp và chúng ta muốn thể hiện các
ràng buộc, các mối quan hệ giữa chúng mà không phải là các thực thi của
chúng(interface).
* Nhận xét
Một trong những vấn đề gặp phải là khung giao diện Abstract Factory
thường hay bị sửa đổi, ví dụ như bổ sung thủ tục chẳng hạn, khi đó các lớp cụ
thể thực thi giao diện này phải được dịch và triển khai lại. Để giảm nhẹ vấn đề
này người ta thường thiết kế giao diện Abstract Factory một cách linh hoạt.
2.1.2. Mẫu Builder Pattern
Phân tách những khởi tạo các thành phần của một đối tượng phức hợp,
để có thể cùng một khởi tạo mà có thể tạo nên nhiều định dạng khác khau.
Builder Pattern sử dụng để xây dựng sản phẩm phù hợp với các mô hình tổng
hợp, mô hình cấu trúc.
* Cấu trúc của mẫu
Hình 2.2. Cấu trúc của mẫu Builder
- 23 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
Trong đó:
Director: là lớp điều khiển tạo ra một đối tượng Product
Builder: là lớp trừu tượng cho phép tạo ra đối tượng Product từ các
phương thức nhỏ khởi tạo từng thành phần của Product.
ConcreteBuilder: là lớp dẫn xuất của Builder, khởi tạo từng đối tượng cụ
thể, lớp này sẽ khởi tạo đối tượng.
* Phạm vi ứng dụng mẫu
Áp dụng cho các lớp có cấu trúc bên trong phức tạp (đặc biệt là một biến
là một tập các đối tượng liên quan với nhau).
Ứng dụng cho các lớp có các thuộc tính phụ thuộc vào các thuộc tính
khác.
Sử dụng các đối tượng khác trong hệ thống mà có thể khó khởi tạo hoặc
khởi tạo phức tạp.
2.1.3. Mẫu chế tạo (Factory Method Pattern)
Mẫu chế tạo đóng vai trò như một “nhà xưởng” có nhiệm vụ trừu tượng
hóa quá trình khởi tạo đối tượng cụ thể khi ứng dụng chạy. Tại thời điểm thiết
kế, đối tượng được định nghĩa trừu tượng. Các mẫu này giúp hệ thống không
phải phụ thuộc vào cách một đối tượng được tạo ra, xây dựng và thể hiện.
* Cấu trúc của mẫu
Hình 2.3. Cấu trúc của mẫu Factory
- 24 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
Trong đó:
Creator: là lớp trừu tượng, khai báo phương thức FactoryMethod() nhưng
không cài đặt.
Product: cũng là lớp trừu tượng.
ConcreteCteatorA và ConcreteCteatorB: là 2 lớp kế thừa từ lớp Creator để
tạo ra các đối tượng riêng biệt.
ConcreteProductA và ConcreteProductB: là các lớp kế thừa từ lớp
Product, các đối tượng của 2 lớp này sẽ do 2 lớp ConcreteCteatorA và
ConcreteCteatorB tạo ra.
* Phạm vi ứng dụng mẫu
Sử dụng tính chất kế thừa của mẫu để phân loại các đối tượng được tạo
ra.
Sử dụng mối quan hệ kết hợp để tham chiếu tới đối tượng sẽ được tạo
ra. Đối tượng được tạo ra sẽ trở thành một phần hay thuộc tính của lớp
Factory. Chúng ta thường gặp loại này trong mẫu chế tạo trừu tượng (Abstract
Factory Pattern).
2.1.4. Mẫu nguyên mẫu (Prototype Pattern)
Giúp khởi tạo đối tượng bằng cách sao chép một đối tượng khác đã tồn tại
* Cấu trúc của mẫu
- 25 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
Trong đó:
Prototype: Là lớp trừu tượng cài đặt phương thức myClose() là phương
thức sao chép bản thân đối tượng đã tồn tại.
ConcretePrototype1 và ConcretePrototype2: là các lớp kế thừa từ lớp
Prototype.
* Phạm vi ứng dụng mẫu
Ứng dụng mẫu khi muốn khởi tạo một đối tượng bằng cách sao chép từ
một đối tượng đã tồn tại.
2.1.5. Mẫu đơn chiếc (Singleton Pattern)
Mẫu đơn chiếc đảm bảo một lớp chỉ có một thể hiện duy nhất được tạo
ra và đồng thời cung cấp một truy cập toàn cục đến đối tượng được tạo ra.
Việc sử dụng mẫu đơn chiếc mang lại nhiều tiện ích: Quản lý việc truy
cập tốt hơn; cho phép cải tiến các tác vụ và các thể hiện do mẫu có thể được
kế thừa và tùy biến lại thông qua một thể hiện của lớp con; quản lý số lượng
thể hiện của một lớp, không nhất thiết chỉ có một thể hiện mà có số thể hiện
xác định; khả chuyển hơn so với việc dùng một lớp có thuộc tính tĩnh, vì việc
dùng lớp tĩnh chỉ có thể sử dụng một thể hiện duy nhất, còn mẫu đơn chiếc
cho phép quản lý các thể hiện tốt hơn và tùy biến theo điều kiện cụ thể.
* Cấu trúc của mẫu