Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Các mẫu thiết kế phần mềm hướng đối tượng và áp dụng
Nội dung xem thử
Mô tả chi tiết
Chương 1 LỜI NÓI ĐẦU
Phần mềm ngày càng trở nên phức tạp, thách thức trong những năm tới
không phải là vấn đề tốc độ, kinh phí hay sức mạnh của nó mà sẽ là độ phức
tạp.Vì vậy chúng ta phải dần loại bỏ chúng. Một cách tổng quan khi xây dựng
phần mềm thì ta phải quan tâm đến tổ chức, các quan hệ cấu trúc hình thành nên
hệ thống. Do khả năng của con người là có giới hạn khi khảo sát các vấn đề
phức tạp như tổng thể. Thông qua mô hình hoá ta sẽ giới hạn vấn đề bằng cách
nghiên cứu tập trung vào một khía cạnh của vấn đề và vào một thời điểm. Không
nên giải quyết tất cả các vấn đề vào một lần thiết kế, cần tranh thủ sử dụng lại
những trường hợp đã làm, khi ta tìm được một giải pháp tốt, cần phát huy nó cho
lần sau.
Xu thế áp dụng phương pháp hướng đối tượng thay cho phương pháp cấu
trúc ngày càng phổ biến khi xây dựng các hệ thống phần mềm lớn và phức tạp.
Do tầm quan trọng và tính linh hoạt của phương pháp phân tích thiết kế hướng
đối tượng được sử dụng rộng rãi tại các nước đang phát triển và đã được áp
dụng tại Việt Nam.
Phân tích hướng đối tượng là một vấn đề khó, càng khó hơn cho người thiết
kế mới vì họ thường lúng túng trong vấn đề chọn lựa phương pháp nào tối ưu cho
dự án, cho hệ thống của họ; đồng thời làm sao sử dụng lại và nâng cấp từ những
thuật toán hướng đối tượng đã được sử dụng trước đó. Điều này cũng gây trở
ngại cho những người cần tìm hiểu về hệ thống đang tồn tại, vì tính ưu việt và
đặc trưng của các ngôn ngữ hướng đối tượng nên họ thường hay khó khăn nhận
biết các lớp, các đối tượng... kế thừa đặc biệt là trong các dự án lớn, hệ thống lớn
Khi gặp một vấn đề, người thiết kế đã lựa chọn một phương pháp tối ưu, sao cho
nó tốt nhất, phù hợp nhất, sử dụng dễ, giảm thiểu được độ phức tạp cũng như tiết
kiệm công sức cho những lần phát triển lần sau, cũng như những lần tái sử dụng
lại chúng. Thông thường khi tìm ra một giải pháp tốt, ta thường lưu lại để sử
dụng chúng cho lần sau, để lần sau sẽ ít tốn thời gian để tìm hiểu mà vẫn có thể
áp dụng chúng tốt. Chính vì dựa vào khái niệm mẫu thiết kế của Christopher
Alexander khi áp dụng trong thiết kế các toà nhà, giúp cho người kiến trúc sư
dựa vào một số khuôn dạng sẵn có mà thiết kế theo, hoặc cải tiến nó. Các chuyên
gia trong vấn đề thiết kế và lập trình đã đúc rút ra kinh nghiệm để đưa ra một số
1
khuôn dạng chung về mẫu thiết kế phần mềm mà khi áp dụng đáp ứng được phần
nào yêu cầu khắt khe của công nghệ phần mềm hiện đại. Và các nhà thiết kế sau
này coi đó là một từ vựng chung để thiết kế cũng như khi áp dụng và hiểu chúng
để lập trình.
Trên thực tế không thể có một mẫu hoàn chỉnh cho phần mềm, nhưng chắc
chắn có thể tìm ra một khuôn dạng chung hoàn chỉnh cho các mẫu này.
1.1. Khó khăn khi phát triển công nghệ phần mềm và sử dụng Mẫu
thiết kế.
Phân tích và thiết kế hướng đối tượng là khó, nhưng mục đích thiết kế
hướng đối tượng nhằm được sử dụng lại lần sau lại càng khó hơn. Ta cần phải
tìm ra các đối tượng, các phần(factor) thích hợp cho từng lớp, từng đối tượng,
xác định được hệ thống giao diện cần phải kế thừa như thế nào và thiết lập mối
quan hệ giữa chúng.
Chính vì những phức tạp đó mà rất khó và lâu dài các chuyên gia mới tìm ra
được một khuôn dạng chung cho phần mềm, mặt khác các dự án và các hệ thống
phần mềm khi phát triển đều có mức độ trừu tượng hoá cao, nên ngôn ngữ đôi
khi cũng ở mức trừu tượng hoá và rất khó cho người sử dụng khi tìm hiểu về
chúng. Ngay cả các chuyên gia khi hoàn thành nghiên cứu cũng thừa nhận họ
không hiều về những gì mà họ viết ra trong lần viết đầu tiên.
Đặc biệt là khi hiểu được và thiết kế theo hướng đối tượng, để áp dụng các
mẫu thiết kế này vào trong hệ thống, dự án của mình thì người áp dụng cần phải
nắm rõ và vững ít nhất một ngôn ngữ lập trình hướng đối tượng và phải có kinh
nghiệm trong thiết kế hướng đối tượng. Theo kinh nghiệm làm việc, và bằng
chính khả năng của mình, cũng như độ nhạy cảm trong phân tích mà người phát
triển mới có khả năng áp dụng chúng vào trong hệ thống của mình, và kết hợp
chúng một cách tối ưu nhất.
Tại Việt nam, do đây là một vấn đề mới, và rất khó để tìm hiểu nên chưa
có nhóm nghiên cứu cụ thể nào về các mẫu thiết kế, và chúng hầu hết được áp
dụng theo phán đoán của người thiết kế, do ngôn ngữ mang tính trừu tượng cao
nên khó có thể áp dụng chúng một cách chính xác nhất để phát huy tính năng ưu
việt của nó. Nhưng một khi đã áp dụng các mẫu này vào thiết kế thì người thiết
kế sẽ thấy rất thuận lợi và giảm thiểu công sức cũng như độ phức tạp đi rất
nhiều. Hiểu và áp dụng các mẫu thiết kế này vào trong hệ thống cũng là một tiêu
chuẩn quan trọng của các nhà lập trình viên ở các nước công nghệ phần mềm
phát triển.
2
1.2. Mục đích của đồ án.
Mục đích của đồ án trong đợt thực tập tốt nghiệp và đồ án tốt nghiệp là
nghiên cứu cụ thể và chi tiết đến các vấn đề nhỏ của các mẫu thiết kế mà trong
đợt thực tập tốt nghiệp chưa có điều kiện tiếp cận và tìm hiểu đến và hoàn thiện
một cách căn bản các hiểu biết về Design Patern. Đây là giai đoạn chuyển tiếp
quan trọng và tiến hành các công việc áp dụng các mẫu thiết kế này vào trong
thực tế, sử dụng các kiến thức đã nghiên cứu được cùng với các công cụ sẵn có
như UML, C++, VC++ để thiết kế và áp dụng chúng một cách hoàn thiện và đầy
đủ.
Tuy nhiên, các mẫu thiết kế là một vấn đề rất khó, nó khó đối với cả những
chuyên gia lập trình đầy kinh nghiệm, và bản thân nó cũng rất trừu tượng, đòi
hỏi người tìm hiểu về nó phải có một kiến thưcs nhất định và rất cần thiết trên
một mảng rộng các vấn đề, đặc biệt là cần phải có giác quan phán đoán mà chỉ
có thể có được khi người đó có kiến thức vững về phần mềm, có kinh nghiệm
chuyên sâu. Do kinh nghiệm thực tế chưa có nhiều, và cũng chưa có một tài liệu
nào ở Việt Nam đã có nghiên cứu về vấn đề này, các tài liệu mà em tiếp xúc
cũng như tìm hiểu đều là dựa theo các thông tin trong nghiên cứu của các chuyên
gia mà cụ thể là của bốn chuyên gia: Erich Gamma, Richard Helm, Ralph
Johnson và John Vlissides cùng với rất nhiều các nghiên cứu của các chuyên gia
khác, và các dự án mà em tìm hiểu khi áp dụng các mẫu dự án này đều ở mức
trừu tượng cao, mà để hiểu được nó, chỉ có các nhà lập trình và thiết kế dày dặn
kinh nghiệm mới có thể hiểu được chúng một cách cặn kẽ và đầy đủ nhất. Vì
vậy, trong đồ án này, em nghiên cứu tất cả 23 mẫu thiết kế mà được cụ thể hoá,
và được coi là đầy đủ cho khuôn dạng chung của phần mềm hiện đại, nhưng để
áp dụng được tất cả chúng là điều rất phức tạp, vì tuỳ vào từng dự án và từng hệ
thống cụ thể mà ta có thể áp dụng từng mẫu thiết kế một, hay là ta kết hợp nhuần
nhuyễn chúng để đưa ra hiệu quả cao nhất. Trên thực tế, ở nước ngoài cũng như
ở Việt Nam, chưa có một dự án nào áp dụng đầy đủ 23 mẫu thiết kế này, và ở
Việt Nam hiện nay cũng có ít công ty áp dụng chúng trong thiết kế. Trong quá
trình nghiên cứu và tìm hiểu, em có điều kiện thực tập, và được tạo điều kiện
tham gia vào nghiên cứu và áp dụng một số mẫu trong thiết kế dự án của công ty
sản xuất phần mềm Khai Trí, và thấy được hiệu quả hơn hẳn khi áp dụng chúng
vào trong thiết kế của dự án công ty.
Đó là các mẫu:
Abstract Factory
Singleton
Adapter
3
Facade
Template Method
State Method
Factory Method
Do đây là một dự án đươc phát triển và được nghiên cứu từ lâu, sản phẩm
đưa ra thị trường và đã được chấp nhật một cách có hiệu qủa, và trong thực tế, nó
đã đáp ứng được yêu cầu đòi hỏi của phần mềm hiện đại. Việc áp dụng các mẫu
thiết kế này đã có kết quả cụ thể và thực tiễn trong sản phẩm của công ty.
1.3. Việc nghiên cứu đồ án giải quyết điều gì
Như trên đã nói, các mẫu thiết kế là một vấn đề rất khó và rất trừu tượng, nó
không phải là dễ cho những người mới tìm hiểu lần đầu, nhưng không thể thiếu
nếu bạn muốn trở thành một chuyên gia lập trình.
Nghiên cứu về các mẫu thiết kế trước hết là một nghiên cứu kỹ thuật phần
mềm mới. Tất nhiên nhiên là nghiên cứu một cách cặn kẽ các vấn đề và chi tiết
nhỏ ở từng mẫu thiết kế một là có thể nắm được một cách cơ bản và có thể áp
dụng thực tế được. Kết quả của nghiên cứu này là một tài liệu làm việc về các
mẫu thiết kế, với các nội dụng cụ thể để giúp cho bạn có thể phần nào hiểu được
và phần nào áp dụng được trong thực tế. Nhưng muốn tìm hiểu sâu hơn, thì cần
phải bằng chính khả năng của người cần tìm hiểu mới có thể rút ra được hiểu
biết thấu đáo về các mẫu thiết kế.
Sau đó là so sánh việc áp dụng các mẫu thiết kế này so với việc khi chưa áp
dụng chúng. Trong nhiệm vụ này có thêm yêu cầu tìm hiểu dự án cụ thể và để từ
đó thấy được khi áp dụng chúng thấy hiệu quả và phù hợp. Đồng thời đưa ra
được một dự án cụ thể khi áp dụng chúng, và chi tiết hoá từng phần khi áp dụng
và giải quyết vấn đề khi áp dụng các mẫu này.
1.4. Việc giải quyết đồ án ở giai đoạn tốt nghiệp được thực hiện như
thế nào?
Trong giai đoạn đồ án tôt nghiệp, em nghiên cứu thêm, vì đây là vấn đề
khó và phức tạp, trở ngại lớn nhất là chưa có một nghiên cứu cụ thể nào ở Việt
Nam, và được tham gia khi áp dụng chúng vào trong một dự án cụ thể. Trong lần
thực hiện này, em phải nghiên cứu sâu hơn về UML, các kiến thức về Rational
Rose, và các quy trình phần mềm. Do kiến thức thực tế chưa có nhiểu và hạn chế
về thời gian để tìm hiểu về một dự án đã được phát triển từ lâu, cũng như thời
4
gian nâng cấp chúng nên hạn chế thời gian chưa sâu sắc vấn đề. Và tôi chỉ tập
trung vào giải quyết một số mẫu trong dự án, phù hợp với dự án phát triển.
Ngoài ra để áp dụng các mẫu thiết kế này còn yêu cầu rất nhiều nội dung nữa, tôi
chỉ thực hiện nghiên cứu lý thuyết và chỉ áp dụng phần nào lý thuyết vào thực tế,
và còn nhiều mẫu thiết kế chưa thể đưa vào dự án này được, đồng thời có ít điều
kiện được nghiên cứu các dự án đã áp dụng các mẫu này ở Viêt nam cũng như
các phần mềm cụ thể khác.
5
Chương 2 ĐẶT VẤN ĐỀ
Tóm tắt chương
Chương mở đầu này tôi xin được giới thiệu một số nét chung về đồ án tốt
nghiệp mà tôi lựa chọn để thực hiện. Đồng thời, trong phần này, tôi cũng trình
bày một số nét tổng quan về đề tài của đồ án tốt nghiệp, về những lý do, động cơ
thúc đẩy nghiên cứu và tìm hiểu đề tài của tôi, về những mục đích đặt ra và yêu
cầu của đề tài mà tôi đã nghiên cứu thực hiện trong thời gian qua.
2.1. Mục đích của đề tài
Như tên của đề tài đồ án “ Các mẫu thiết kế phần mềm hướng đối tượng
và áp dụng”, chính là thể hiện mục đích chính của đề tài. Việc nghiên cứu các
mẫu dáng thiết kế không chỉ là nghiên cứu một kỹ thuật phân tích, thiết kế mới,
mà hơn thế nữa là phương pháp tiếp cận khoa học và giải quyết vấn đề theo
những phương pháp tối ưu hóa mà các chuyên gia phân tích , thiết kế và lập trình
đã xây dựng thành các mẫu cụ thể. Nó giải quyết được những yêu cầu kiến thức
cơ bản đối với người áp dụng và thiết kế theo các mẫu cũng như cần phải nắm rõ
hơn để thiết kế tốt hơn, đáp ứng được yêu cầu của xu thế phát triển phần mềm
hiện nay.
2.2. Giới thiệu bài toán, nhiệm vụ của đề tài
Nhiệm vụ của đề tài có hai phần rất rõ ràng đó là :
Nghiên cứu về Mẫu thiết kế
Áp dụng Mẫu thiết kế đã nghiên cứu vào giải quyết một dự án và một số bài
toán con.
Về lý thuyết nghiên cứu về Mẫu thiết kế, tôi xin trình bày tổng quan về tư
tưởng chính mang tính cốt lõi của các tác giả để phát triển và hình thành nên
Mẫu thiết kế. Do Mẫu thiết kế không đơn thuần là một công nghệ mớI mà nó
thực sự là một hướng tiếp cận mớI và đầy đủ cho các nhà lập trình và phân tích
thiết kế. Vì Mẫu thiết kế chỉ thích hợp vớI các ngôn ngữ lập trình hướng đốI
6
tượng và cách phân tích thiết kế hướng đốI tượng. Trong khi sử dụng, nó không
tách khỏI UML, cũng đã cho ta cách ứng dụng trực tiếp các mẫu thiết kế này.
Về phần áp dụng Mẫu thiết kế vào thực hiện một dự án, tôi xin trình bày
nộI dung của dự án lớn và phần thực hiện của tôi trong dự án lớn đó, là một phần
của dự án nhỏ. Qua đó để bạn đọc xem được tổng quan về dự án lớn và nắm
được chi tiết các ưu điểm của dự án này khi áp dụng Mẫu thiết kế vào thiết kế so
vớI dự án khi áp dụng kiểu phân tích thiết kế cũ, cũng như nhìn ra được cách
thiết kế giúp cho dự án được nâng cấp lên dựa trên bản thiết kế cũ. Dựa vào các
thiết kế dự án cụ thể này mà ta có thể nhìn thấy rõ ràng cách thiết kế dựa trên
Mẫu thiết kế và những ưu điểm của nó.
2.3. Lý do chọn đề tài.
Làm phần mềm không chỉ là lập trình, tạo mã một cách đơn thuần để cuối
cùng ra một chương trình có khả năng chạy được. Điều đó chỉ thích hợp với các
dự án thật nhỏ, và rất nhỏ, hay đúng hơn là các chương trình đơn giản. Với các
dự án phần mềm còn có rất nhiều điều quan trọng hơn thế, ở mức phân tích thiết
kế, ở mức quản lý, phối kết hợp các nguồn nhân lực trong dự án một cách hiệu
quả và thực tế thành công của các dự án phần mềm ngày càng nhiều phụ thuộc
vào các yếu tố đó. Và cũng có nhiều lý thuyết, tư tưởng ra đời để thực hiện các
công việc đó, đó là các mẫu thiết kế, hay còn gọi là Mẫu thiết kế.
Trong nhà trường, tôi đã được học về phân tích thiết kế có cấu trúc, việc
nghiên cứu thực sự sâu sắc về một phân tích thiết kế mới trong một dự án cụ thể
là không có điều kiện , do hạn chế về thời gian. Và do nhận thức dự án, tầm quan
trọng của thiết kế hướng đốI tượng đối với các dự án phần mềm, nên tôi chọn đề
tài “Mẫu dáng thiết kế Mẫu thiết kế và ứng dụng” là đề tài tốt nghiệp của mình.
Với tất cả các kiến thức cơ sở đã được học trong nhà trường cùng sự hướng dẫn
của thầy, cũng như sự hướng dẫn nhiệt tình của project manager của công ty sản
xuất phần mềm Khai Trí tôi cố gắng, tìm hiểu nghiên cứu Mẫu thiết kế, là những
mẫu thiết kế được áp dụng nhiều và rất hiện đại hiện nay. Điều này, đối với một
sinh viên chưa có thực tế thì hơn khó khăn vì nghiên cứu và hiểu các mẫu thiết
kế và tham gia vào dự án cụ thể trong thực tế thì ngoài yêu cầu kiến thức ở mức
nhất định thì cần thiết phải có những trải nghiệm thực tế. Tuy nhiên, điều đó chỉ
là yếu tố khách quan, trong thời gian qua, được sự hướng dẫn tận tình của thầy
giáo Phạm Đăng Hải, bộ môn khoa học máy tính, khoa Công nghệ thông tin,
trường Đại học Bách Khoa Hà Nội, và sự cố gắng của bản thân, tôi đã thực hiện
hoàn thành đề tài. Với việc nghiên cứu các mẫu thiết kế Mẫu thiết kế và ứng
dụng nó vào thực tế, tôi nghĩ đó là một bước chuyển tiếp nghiên cứu rất quan
trọng, từ hàn lâm sang công nghiệp, là bước chuẩn bị quan trọng. Do đó, theo tôi
nghĩ đây là một đề tài rất hay, và thiết thực, và rất tin tưởng thực hiện đề tài này
7
Chương 3 TỔNG QUAN VỀ MẪU THIẾT KẾ
3.1. Lịch sử về mẫu dáng thiết kế.
Theo các nghiên cứu của các chuyên gia trong việc thuận lợi của ngôn ngữ
đã chỉ ra rằng kiến thức và kinh nghiệm không thể được tổ chức đơn giản xoay
quanh vấn đề cú pháp. Nhưng trong các cấu trúc khái niệm lớn hơn như thuật
toán, cấu trúc dữ liệu thì cần được lập kế hoạch và thiết kế một cách hoàn thiện.
Người thiết kế không nghĩ đến cú pháp mà họ đang sử dụng để thiết kế nhiều
như khi họ cố ghép các thiết kế hiện tại mà không phù hợp vớI thuật toán, cấu
trúc dữ liệu và các căn bản ăn sâu mà họ đã học.
Các nhà khoa học máy tính đã đặt tên và sắp xếp các thuật toán, cấu trúc dữ
liệu nhưng họ không thường đặt tên cho các mẫu khác. Mẫu thiết kế cung cấp
một từ vựng chung cho các nhà thiết kế để kết nốI, lập tài liệu và tìm hiểu thiết
kế mới. Mẫu thiết kế làm cho hệ thống đơn giản hơn bằng cách hiểu nó dựa trên
mức trừu tượng hoá cao hơn là các ký pháp thiết kế hoặc ngôn ngữ lập trình.
Mẫu thiết kế làm tăng mức độ thiết kế giúp các thành viên trong một nhóm
có thể dễ dàng hiểu và thảo luận cùng nhau trong một vấn đề cần giải quyết.
Biết được các mẫu dáng thiết kế giúp cho ta hiểu dễ dàng về các hệ thống
hiện tại. Hầu hết các hệ thống hướng đối tượng sử dụng các mẫu thiết kế này.
Những người nghiên cứu chương trình hướng đốI tượng thường phàn nàn rằng
các hệ thống đã từng nghiên cứu hoặc thực hiện sử dụng tính kế thừa rất phức
tạp khó có thể kiểm soát được chúng. Thực tế xảy ra rất nhiều vì họ không hiểu
được các mẫu thiết kế trong hệ thống.
Các mẫu dáng thiết kế giúp người nghiên cứu trở thành một nhà thiết kế
giỏi hơn, hơn thế nữa, mô tả hệ thống theo các mẫu thiết kế sẽ làm cho hệ thống
dễ hiểu hơn. Do có vốn từ vựng chung nên bạn không phải mô tả toàn bộ các
mẫu thiết kế, chỉ cần đặt tên cho mẫu thiết kế đó, thì người đọc sẽ hiểu rõ ràng
về vấn đề đó như thế nào?
Chúng ta sử dụng chúng để đặt tên cho các lớp, để nghiên cứu tốt hơn và
thiết kế để mô tả các mẫu thiết kế.
3.1.1. Mục đích của các mẫu thiết kế.
Giúp cho người thiết kế tái sử dụng lại thành công bởi việc dựa trên nền
thiết kế mới và kinh nghiệm. Một nhà thiết kế áp dụng chúng và hiểu được
chúng nhanh chóng mà không cần phải tìm hiểu và thiết kế lại chúng. Làm cho
tái sử dụng lại các thiết kế và phân tích tốt hơn.
8