Luận Văn Các mẫu thiết kế phần mềm hướng đối tượng và áp dụng

Thảo luận trong 'Công Nghệ Thông Tin' bắt đầu bởi Thúy Viết Bài, 5/12/13.

  1. Thúy Viết Bài

    Thành viên vàng

    Bài viết:
    198,891
    Được thích:
    170
    Điểm thành tích:
    0
    Xu:
    0Xu
    Các mẫu thiết kế phần mềm hướng đối tượng và áp dụngChươ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ố 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.

    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.
    Chương 1 LỜI NÓI ĐẦU
    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ế.
    1.2. Mục đích của đồ án.
    1.3. Việc nghiên cứu đồ án giải quyết điều gì
    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?
    Chương 2 ĐẶT VẤN ĐỀ
    2.1. Mục đích của đề tài
    2.2. Giới thiệu bài toán, nhiệm vụ của đề tài
    2.3. Lý do chọn đề tài.
    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ế.
    3.1.1. Mục đích của các mẫu thiết kế.
    3.1.2. Các mẫu thiết kế giải quyết vấn đề như thế nào?
    3.1.3. Các phương pháp để chọn các mẫu thiết kế
    3.1.4. Làm thế nào để thiết kế một mẫu thiết kế
    3.2. Các mẫu dáng thiết kế (Mẫu thiết kế)
    3.2.1. Khái quát chung về Mẫu thiết kế.
    3.2.2. Mẫu khởi tạo
    3.2.2.1. Abstract Factory.
    3.2.2.1.1 Mục đích
    3.2.2.1.2 Ví dụ
    3.2.2.1.3 Ứng dụng
    3.2.2.1.4 Cấu trúc
    3.2.2.1.5 Các thành phần
    3.2.2.1.6 Phối hợp cộng tác với các mẫu khác:
    3.2.2.1.7 Kết quả
    3.2.2.1.8 Cài đặt
    3.2.2.1.9 Các mẫu thiết kế liên quan
    3.2.2.2. Builder
    3.2.2.2.1 Ví dụ
    3.2.2.2.2 Ứng dụng
    3.2.2.2.3 Cấu trúc:
    3.2.2.2.4 Thành phần
    3.2.2.2.5 Phối hợp cộng tác.
    3.2.2.2.6 Kết quả
    3.2.2.2.7 Cài đặt
    3.2.2.2.8 Các Mẫu quan hệ
    3.2.2.3. Factory Method
    3.2.2.3.1 Mục đích
    3.2.2.3.2 Ví dụ
    3.2.2.3.3 Thành phần
    3.2.2.3.4 Cấu trúc:
    3.2.2.3.5 Thành phần:
    3.2.2.3.6 Kết quả
    3.2.2.3.7 Cài đặt
    3.2.2.3.8 Các mẫu liên quan:
    3.2.2.4. Prototype
    3.2.2.4.1 Mục đích
    3.2.2.4.2 Ví dụ
    3.2.2.4.3 Kết quả
    3.2.2.4.4 Cấu trúc
    3.2.2.4.5 Thành phần :
    3.2.2.4.6 Phối hợp cộng tác
    3.2.2.4.7 Kết qủa
    3.2.2.4.8 Cài đặt
    3.2.2.4.9 Các mẫu liên quan
    3.2.3. Singleton
    3.2.3.1. Mục đích
    3.2.3.2. Ví dụ
    3.2.3.3. Ứng dụng
    3.2.3.4. Cấu trúc
    3.2.3.5. Thành phần
    3.2.3.6. Cộng tác:
    3.2.3.7. Kết quả :
    3.2.3.8. Cài đặt
    3.2.3.9. Các mẫu liên quan
    3.2.4. Các mẫu cấu trúc(Structural Mẫu)
    3.2.4.1. Adapter mẫu
    3.2.4.1.1 Mục đích
    3.2.4.1.2 Ví dụ:
    3.2.4.1.3 Ứng dụng
    3.2.4.1.4 Cấu trúc:
    3.2.4.1.5 Thành phần:
    3.2.4.1.6 Các cộng tác
    3.2.4.1.7 Kết quả.
    3.2.4.1.8 Cài đặt.
    3.2.4.1.9 Các mẫu liên quan:
    3.2.4.2. Bridge mẫu
    3.2.4.2.1 Mục đích
    3.2.4.2.2 Ví dụ
    3.2.4.2.3 Ứng dụng
    3.2.4.2.4 Cấu trúc:
    3.2.4.2.5 Thành phần:
    3.2.4.2.6 Một số kết quả thu được khi áp dụng Bridge
    3.2.4.2.7 Một số vấn đề cần lưu ý khi sử dụng Brigde mẫu:
    3.2.4.2.8 Các mẫu liên quan
    3.2.4.3. Composite
    3.2.4.3.1 Mục đích
    3.2.4.3.2 Ví dụ
    3.2.4.3.3 Ứng dụng
    3.2.4.3.4 Cấu trúc:
    3.2.4.3.5 Thành phần
    3.2.4.3.6 Kết quả.
    3.2.4.3.7 Phối hợp cộng tác
    3.2.4.3.8 Cài đặt
    3.2.4.3.9 Các mẫu liên quan:
    3.2.4.4. Decorator
    3.2.4.4.1 Mục đích
    3.2.4.4.2 Ứng dụng
    3.2.4.4.3 Cấu trúc:
    3.2.4.4.4 Thành phần:
    3.2.4.4.5 Phối hợp cộng tác.
    3.2.4.4.6 Kết quả.
    3.2.4.4.7 Cài đặt
    3.2.4.4.8 Các mẫu liên quan:
    3.2.4.5. Facade
    3.2.4.5.1 Mục đích
    3.2.4.5.2 Ví dụ
    3.2.4.5.3 Ứng dụng
    3.2.4.5.4 Cấu trúc
    3.2.4.5.5 Thành phần
    3.2.4.5.6 Phối hợp cộng tác
    3.2.4.5.7 Kết quả
    3.2.4.5.8 Cài đặt
    3.2.4.5.9 Các mẫu liên quan
    3.2.4.6. Flyweight mẫu
    3.2.4.6.1 Mục đích
    3.2.4.6.2 Ứng dụng
     
Đang tải...