Áp dụng design pattern trong phát triển phần mềm

79 119 0
Áp dụng design pattern trong phát triển phần mềm

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG - ISO 9001:2015 ĐỒ ÁN TỐT NGHIỆP NGÀNH: CÔNG NGHỆ THÔNG TIN Sinh viên : Đoàn Văn Thọ Giảng viên hướng dẫn: TS Nguyễn Trịnh Đơng HẢI PHỊNG - 2019 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG - ÁP DỤNG DESIGN PATTERN TRONG PHÁT TRIỂN PHẦN MỀM ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY NGÀNH: CƠNG NGHỆ THƠNG TIN Sinh viên : Đồn Văn Thọ Giảng viên hướng dẫn : TS Nguyễn Trịnh Đơng HẢI PHỊNG - 2019 BỘ GIÁO DỤC VÀ ĐÀO TẠO CỘNG HÒA XÃ HỘ CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG Độc lập – Tự – Hạnh phúc - NHIỆM VỤ ĐỀ TÀI TỐT NGHIỆP Sinh viên: Đồn Văn Thọ Mã SV: 1512111005 Lớp: CT1901C Ngành: Cơng nghệ thông tin Tên đề tài: Áp dụng Design Pattern phát triển phần mềm CÁN BỘ HƯỚNG DẪN ĐỀ TÀI TỐT NGHIỆP Họ tên: Nguyễn Trịnh Đông Học hàm học vị: Tiến sĩ Cơ quan công tác: Trường đại học Dân lập Hải Phòng Nội dung hướng dẫn: …… …………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………… Đề tài tốt nghiệp giao ngày 18 tháng 03 năm 2019 Yêu cầu phải hoàn thành trước ngày … tháng 06 năm 2019 Hải phòng, ngày … tháng 06 năm 2019 Đã nhận nhiệm vụ: Đ.T.T.N Sinh viên Đã nhận nhiệm vụ: Đ.T.T.N Cán hướng dẫn Đ.T.T.N Hải Phòng, ngày….tháng….năm 2019 HIỆU TRƯỞNG GS.TS.NGƯT TrầnHữu Nghị CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN TỐT NGHIỆP Họ tên giảng viên: ………………………………………………………………… Đơn vị công tác: ……………………………………………………………………… Họ tên sinh viên: ……………………………… Ngành: …………… …………… Nội dung hướng dẫn: ………………………………………………………………………………………… ………………………………………………………………………………………… Tinh thần thái độ sinh viên trình làm đồ án tốt nghiệp: ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… Đánh giá chất lượng đồ án/khóa luận (so với nội dung yêu cầu đề nhiệm vụ Đ.T T.N mặt lý luận, thực tiễn, tính tốn số liệu…) ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… Ý kiến giảng viên hướng dẫn tốt nghiệp Đạt Không đạt Điểm:…………………………………… Hải Phòng, ngày … tháng 06 năm 2019 Giảng viên hướng dẫn (Ký ghi rõ họ tên) CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN CHẤM PHẢN BIỆN Họ tên giảng viên: ………………………………………………………………… Đơn vị công tác: ……………………………………………………………………… Họ tên sinh viên: ……………………………… Ngành: …………………………… Đề tài tốt nghiệp: ………………………………………………………………………………………… ………………………………………………………………………………………… Phần nhận xét giảng viên chấm phản biện Những mặt hạn chế Ý kiến giảng viên chấm phản biện Được bảo vệ Không bảo vệ Điểm:……………… Hải Phòng, ngày …… tháng 06 năm 2019 Giảng viên chấm phản biện (Ký ghi rõ họ tên) LỜI CẢM ƠN Lời em xin chân thành cảm ơn thầy, cô khoa Công nghệ thông tin, trường Đại học Dân lập Hải Phòng tạo điều kiện thuận lợi cho em trình học tập trường thời gian thực đồ án tốt nghiệp Đặc biệt, em muốn gửi lời cảm ơn tới Tiến sỹ Nguyễn Trịnh Đông – giảng viên trực tiếp hướng dẫn, bảo giúp em khắc phục khó khăn, thiếu sót để có thể hồn thành phần đồ án tốt nghiệp từ lý thuyết thực hành sử dụng công cụ Mặc dù cố gắng với tất nỗ lực thân để hoàn thiện đồ án, thời gian có hạn, lực kinh nghiệm hạn chế nên đồ án khơng thể tránh khỏi thiếu sót Kính mong nhận đóng góp ý kiến từ phía thầy cơ, bạn bè để em có thể nâng cao kiến thức thân, hoàn thiện đồ án tốt Em xin chân thành cảm ơn! Hải Phòng, ngày … tháng 06 năm 2019 Sinh viên thực Đoàn Văn Thọ MỤC LỤC LỜI CẢM ƠN MỤC LỤC MỞ ĐẦU DANH MỤC HÌNH VẼ VÀ BẢNG BIỂU DANH MỤC TỪ VIẾT TẮT CHƯƠNG 1: KIẾN THỨC CƠ BẢN 1.1 Vấn đề thiết kế phần mềm hướng đối tượng 1.2 Lịch sử hình thành Design Pattern 1.3 Khái niệm 1.4 Đặc điểm chung 1.5 Ưu nhược điểm Design Pattern 1.5.1 Ưu điểm 1.5.2 Nhược điểm 1.6 Phân loại Design Pattern 1.6.1 Nhóm Creational 11 1.6.2 Nhóm Structural 12 1.6.3 Nhóm Behavioral 13 1.7 Kết luận 15 CHƯƠNG 2: CÁC KỸ THUẬT CỦA DESIGN PATTERN 16 2.1 Nhóm Creational 16 2.1.1 Singleton Design Pattern 16 2.1.2 Abstract Factory 17 2.1.3 Factory Method 18 2.1.4 Builder 19 2.1.5 Prototype 21 2.2 Nhóm Structural 23 2.2.1 Adapter 23 2.2.2 Bridge 25 2.2.3 Composite 27 2.2.4 Decorator 28 2.2.5 Facade 30 2.2.6 Flyweight 32 2.2.7 Proxy 34 2.3 Nhóm Behavioral 37 2.3.1 Chain of Responsibility 37 2.3.2 Command 39 2.3.3 Interpreter 41 2.3.4 Iterator 43 2.3.5 Mediator 45 2.3.6 Memento 47 2.3.7 Observer 48 2.3.8 State 50 2.3.9 Strategy 51 2.3.10 Template Method 53 2.3.11 Visitor 54 2.4 Kết luận 56 CHƯƠNG 3: ÁP DỤNG DESIGN PATTERN TRONG PHÁT TRIỂN PHẦN MỀM 57 3.1 Giới thiệu 57 3.2 Bài toán đăng ký tuyển sinh mầm non 57 3.3 Mô tả nghiệp vụ 57 3.3.1 Bản mô tả công việc 57 3.3.2 Danh sách công việc cần thực 58 3.4 Phân tích thiết kế hướng đối tượng 58 3.4.1 Biểu đồ trường hợp sử dụng (Use case diagram) 59 3.4.2 Biểu đồ trình tự quản lý tuyển sinh (Sequence diagram) 60 3.4.3 Biểu đồ lớp (Class diagram) 61 3.4.4 Biểu đồ chuyển trạng thái (State transition diagram) 62 3.5 Áp dụng Design Pattern vào toán 62 3.5.1 Trừu tượng hóa 63 3.5.2 Quy trình tuyển sinh 64 3.5.3 Bảo mật hệ thống 64 3.6 Chương trình thực nghiệm 65 KẾT LUẬN 68 DANH MỤC TÀI LIỆU THAM KHẢO 69 2.3.11.2 Cài đặt Visitor Pattern ? Hình – 23: Sơ đồ UML mô tả Visitor Pattern Các thành phần tham gia Visitor Pattern:  Visitor :  Là interface abstract class sử dụng để khai báo hành vi cho tất loại visitor  Class định nghĩa loạt các phương thức truy cập chấp nhận ConcreteElement cụ thể khác làm tham số Điều giống với chế nạp chồng (overloading) loại tham số nên khác hành vi hoàn toàn khác Các hành vi truy cập thực phần tử cụ thể cấu trúc đối tượng thông qua phương thức visit() Loại phần tử cụ thể đầu vào định phương thức gọi  ConcreteVisitor : cài đặt tất phương thức abstract khai báo Visitor Mỗi visitor chịu trách nhiệm cho hành vi khác đối tượng  Element (Visitable): thành phần trừu tượng, khai báo phương thức accept() chấp nhận đối số Visitor  ConcreteElement (ConcreteVisitable): cài đặt phương thức khai báo Element dựa vào đối số visitor cung cấp Đoàn Văn Thọ - CT1901C - Áp Dụng Design Pattern Trong Phát Triển Phần Mềm 55  ObjectStructure : lớp chứa tất đối tượng Element, cung cấp chế để duyệt qua tất phần tử Cấu trúc đối tượng có thể tập hợp (collection) cấu trúc phức tạp giống đối tượng tổng hợp (composite)  Client : ConcreteElement gọi phương thức accept() Element 2.3.11.3 Lợi ích Visitor Pattern Cho phép nhiều hành vi áp dụng cho tập hợp đối tượng thời điểm run-time, tách rời hành vi khỏi cấu trúc đối tượng Đảm bảo nguyên tắc Open/ Close: đối tượng gốc không bị thay đổi, dễ dàng thêm hành vi cho đối tượng thơng qua visitor 2.3.11.4 Sử dụng Visitor Pattern Khi có cấu trúc đối tượng phức tạp với nhiều class interface Người dùng cần thực số hành vi cụ thể riêng đối tượng, tùy thuộc vào concrete class chúng Khi phải thực thao tác nhóm loại đối tượng tương tự Chúng ta có thể di chuyển logic hành vi từ đối tượng sang lớp khác Khi cấu trúc liệu đối tượng thay đổi hành vi chúng thay đổi thường xuyên Khi muốn tránh sử dụng toán tử instanceof 2.4 Kết luận Trong chương này, khóa luận trình bày chi tiết loại mẫu Các mẫu phân loại theo cách giải vấn đề thực tế Với mẫu, khả áp dụng khác tùy vào tốn, tình cụ thể Đối với thành viên nhóm phân tích thiết kế, cần xác định rõ vấn đề cần giải sau phân rã vấn đề thành toán nhỏ Từ tốn nhỏ có mẫu có sẵn chọn mẫu đưa vào sử dụng có thể phải xây dựng mẫu Việc xây dựng mẫu dựa nguyên tắc xây dựng mẫu có trước Sau tổng hợp mẫu xác định mối quan hệ mẫu để giải vấn đề ban đầu Việc sử dụng mẫu có nhiều lợi ích, nhiên không nên lạm dụng kỹ thuật cho tốn nhỏ Đồn Văn Thọ - CT1901C - Áp Dụng Design Pattern Trong Phát Triển Phần Mềm 56 CHƯƠNG 3: ÁP DỤNG DESIGN PATTERN TRONG PHÁT TRIỂN PHẦN MỀM 3.1 Giới thiệu Design Pattern ứng dụng nhiều phát triển phần mềm Cách tiếp cận đem lại nhiều lợi ích phát triển nhanh, tái sử dụng, đảm bảo tính đắn phần mềm Trong chương này, khóa luận trình bày cách áp dụng Design Pattern phát triển phần mềm Do giới hạn khóa luận, toán lựa chọn phần nhỏ toán quản lý trường mầm non để minh họa cách áp dụng Design Pattern phát triển phần mềm Đầu tiên khóa luận xác định toán cần giải phạm vi phần mềm, giải vấn đề cách lựa chọn mẫu phù hợp với toán, cuối tổng hợp ghép mẫu để hoàn thành cơng việc Bài tốn mơ tả cụ thể phần 3.2 Bài toán đăng ký tuyển sinh mầm non Hiện nay, dịch vụ trông trẻ phát triển theo quy mô lớn Số lượng nơi trông trẻ ngày tăng, dẫn đến việc không thể đáp ứng nhu cầu phụ huynh Nếu quản lý theo kiểu thủ công nhiều thời gian lẫn cơng sức, hiệu khơng cao Thậm chí bị nơi trơng trẻ khác chiếm phần thị trường Vậy nên việc nâng cấp quy trình làm việc, sử dụng cơng nghệ quản lý tăng chất lượng dịch vụ điều tất yếu 3.3 Mô tả nghiệp vụ 3.3.1 Bản mô tả cơng việc Phụ huynh có nhu cầu gửi trẻ đăng ký nhập học cho trẻ Nếu đủ điều kiện nhập học, phụ huynh nộp sơ yếu lý lịch trẻ Phụ huynh có thể đăng ký lớp khiếu cho trẻ đăng ký nhập học Cán tuyển sinh nhận đơn đăng ký nhập học xem xét duyệt đơn Nếu không đủ điều kiện nhập học thơng báo lại cho phụ huynh không đủ điều kiện nhập học Nếu đủ điều kiện nhập học thơng báo nhập học cho phụ huynh Cán tuyển sinh nhận sơ yếu lý lịch trẻ, dựa vào sơ yếu lý lịch trẻ xếp lớp cho hợp lý Trẻ chia lớp hành dựa theo độ tuổi lớp khiếu dựa theo đăng ký phụ huynh Nếu lớp hành q đơng trẻ chia làm hai lớp dựa theo danh sách Sau cán tuyển sinh thông báo cho giáo viên phụ trách lớp học Đoàn Văn Thọ - CT1901C - Áp Dụng Design Pattern Trong Phát Triển Phần Mềm 57 3.3.2 Danh sách công việc cần thực STT Tác nhân Mẫu đơn Use case Nhận hồ sơ Đơn đăng ký nhập học Duyệt hồ sơ Đơn tiêu chí nhập học Trả kết Đơn thơng báo đủ / không điều kiện nhập học Xếp lớp Cán tuyển sinh Ban giám hiệu Xem báo cáo 3.4 Phân tích thiết kế hướng đối tượng Đồn Văn Thọ - CT1901C - Áp Dụng Design Pattern Trong Phát Triển Phần Mềm 58 3.4.1 Biểu đồ trường hợp sử dụng (Use case diagram) Hình -1: Biểu đồ Use case diagram Quản lý tuyển sinh Danh sách tác nhân : - Cán tuyển sinh : Người quản lý danh sách học sinh, duyệt đơn nhập học, xếp lớp, làm việc với phụ huynh - Người quản lý: Người chịu trách nhiệm quản lý cao - Phụ huynh: Người nộp hồ sơ tuyển sinh trẻ - Học sinh: Các ca sử dụng : - Nhận hồ sơ: Cán tuyển sinh đưa mẫu đơn có sẵn cho phụ huynh - Duyệt hồ sơ: Dựa vào đơn đăng ký, cán tuyển sinh xem xét tiêu chí quy định sẵn - Trả kết : Cán tuyển sinh thông báo đủ điện kiện khơng đủ Đồn Văn Thọ - CT1901C - Áp Dụng Design Pattern Trong Phát Triển Phần Mềm 59 điều kiện nhập học cho phụ huynh - Xếp lớp : Cán tuyển sinh xếp lớp dựa theo độ tuổi - Xem báo cáo: Người quản lý xem báo cáo chi tiết số lượng tuyển sinh, danh sách lớp, … 3.4.2 Biểu đồ trình tự quản lý tuyển sinh (Sequence diagram) Hình -2: Biểu đồ Sequence diagram quản lý tuyển sinh Mô tả chi tiết hoạt động đăng ký tuyển sinh: Phụ huynh đến xin nhập học cho trẻ, cán tuyển sinh lấy mẫu đơn có sẵn đưa cho phụ huynh, phụ huynh sau điền đầy đủ thơng tin trả lại mẫu đơn cho cán tuyển sinh, cán tuyển sinh duyệt hồ sơ trẻ Nếu không đủ điều kiện thơng báo cho phụ huynh Còn đủ điều kiện làm thủ tục nhập học cho trẻ Cán tuyển sinh xếp lớp dựa theo độ tuổi Đoàn Văn Thọ - CT1901C - Áp Dụng Design Pattern Trong Phát Triển Phần Mềm 60 3.4.3 Biểu đồ lớp (Class diagram) Hình - 3: Biểu đồ Class diagram Đoàn Văn Thọ - CT1901C - Áp Dụng Design Pattern Trong Phát Triển Phần Mềm 61 3.4.4 Biểu đồ chuyển trạng thái (State transition diagram) Hình - 4: Biểu đồ State transition diagram Mơ tả hoạt động: Cán tuyển sinh nhập thông tin học sinh vào hệ thống Nếu thông tin khơng xác hệ thống u cầu nhập lại Khi hệ thống báo liệu hợp lệ lưu liệu database 3.5 Áp dụng Design Pattern vào tốn Có vấn đề thiết kế cần giải là: - Trừu tượng hóa: Các tác nhân hệ thống phải thiết kế cho kế thừa từ lớp trừu tượng hay gọi super class - Quy trình tuyển sinh: Quá trình từ lúc tiếp nhận hồ sơ, duyệt hồ sơ đọc kết cho phụ huynh phải đảm bảo tuân thủ theo quy định nơi trơng trẻ Đồn Văn Thọ - CT1901C - Áp Dụng Design Pattern Trong Phát Triển Phần Mềm 62 - Bảo mật hệ thống: Khi tác nhân thao tác hệ thống phải đăng nhập theo username / password cấp sẵn trước Tùy vào vai trò mà tác nhân có thể truy cập sâu vào chức hệ thống Phần trình bày vào chi tiết vấn đề cụ thể, cách tiếp cận hướng dẫn 3.5.1 Trừu tượng hóa Hình - 5: Trừu tượng hóa lớp hệ thống Sơ đồ khái quát hóa tác nhân hệ thống lớp trừu tượng lớp Person Lớp biểu diễn chung mà tác nhân hệ thống có thuộc tính giống phương thức giống Giúp ta có nhìn tổng qt tác nhân hệ thống Đoàn Văn Thọ - CT1901C - Áp Dụng Design Pattern Trong Phát Triển Phần Mềm 63 3.5.2 Quy trình tuyển sinh Hình - 6: Quy trình tuyển sinh nhập học trẻ Hồ sơ gồm tiêu chí quy định sẵn nơi giữ trẻ Phụ huynh nộp hồ sơ cho cán tuyển sinh, cán tuyển sinh phải kiểm trả xem hồ sơ đầy đủ thông tin chưa, nộp đủ giấy tờ cần thiết Nếu đầy đủ hồ sơ cán tuyển sinh đồng ý nhận trẻ thông báo cho phụ huynh Nếu thiếu số giấy tờ có thể bổ sung cho trẻ nhận học 3.5.3 Bảo mật hệ thống Hình - 7: Quy trình đăng nhập vào hệ thống Để bảo mật hệ thống cần phải xây dựng chức Login cho hệ thống Dựa vào username / password tác nhân có thể sử dụng chức phân rõ quyền hạn Như vậy, hệ thống chạy ổn định bảo toàn liệu Đoàn Văn Thọ - CT1901C - Áp Dụng Design Pattern Trong Phát Triển Phần Mềm 64 3.6 Chương trình thực nghiệm Hình - 8: Login vào hệ thống Hình - 9: Giao diện chức nghiệp vụ quản lý tuyển sinh Đoàn Văn Thọ - CT1901C - Áp Dụng Design Pattern Trong Phát Triển Phần Mềm 65 Thêm liệu học sinh vào hệ thống Hình - 10: Chức thêm học sinh vào hệ thống Sửa liệu học sinh hệ thống Hình - 11: Chức sửa thông tin học sinh hệ thống Xóa liệu học sinh hệ thống Hình - 12: Chức xóa học sinh khỏi hệ thống Đoàn Văn Thọ - CT1901C - Áp Dụng Design Pattern Trong Phát Triển Phần Mềm 66 Login vào hệ thống Hình - 13: Áp dụng Singleton Pattern vào quy trình đăng nhập hệ thống Kết nối liệu lên Server Hình - 14: Áp dụng Singleton Pattern vào quy trình kết nối liệu Đồn Văn Thọ - CT1901C - Áp Dụng Design Pattern Trong Phát Triển Phần Mềm 67 KẾT LUẬN Design Pattern vấn đề quan trọng tổ chức phát triển phần mềm Trong trình thực đồ án thời gian nghiên cứu kinh nghiệm thân hạn chế nên số phần đồ án nghiên cứu chưa sâu Sau 03 tháng thực nghiên cứu đề tài, hướng dẫn tận tình Tiến sỹ Nguyễn Trịnh Đông, đồ án em đạt kết sau: Kết đạt  Tìm hiểu nghiên cứu sở lý thuyết Design Pattern  Nắm số kỹ thuật hay sử dụng cách sử dụng  Biết áp dụng Design Pattern vào toán đơn giản Hạn chế Trong thời gian qua, em cố gắng để tìm hiểu thực đề tài Tuy nhiên với kinh nghiệm thời gian hạn chế nên không thể tránh khỏi thiếu sót đồ án Cụ thể:  Chưa nghiên cứu sâu vào kỹ thuật Design Patterns  Đồ án tập trung vào toán nhỏ nên chưa toát nên tầm quan trọng Design Patterns  Trình bày thiếu logic, cách diễn đạt Hướng phát triển đề tài tương lai Với mong muốn trở thành lập trình viên phần mềm tương lai nên thời gian tới em tiếp tục tìm hiểu nghiên cứu hồn thiện đồ án mức cao Và sau nghiên cứu áp dụng Design Patterns vào toán Quản lý mầm non để thấy tầm quan trọng Rồi từ rút kinh nghiệm thân cải thiện kỹ cần thiết Đoàn Văn Thọ - CT1901C - Áp Dụng Design Pattern Trong Phát Triển Phần Mềm 68 DANH MỤC TÀI LIỆU THAM KHẢO [1]: https://en.wikipedia.org/wiki/Software_design_pattern [2]: https://toidicodedao.com/2016/03/01/nhap-mon-design-pattern-phong-cach-kiemhiep [3]: https://gpcoder.com/4164-gioi-thieu-design-patterns [4]: Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, John Vlissides, Ralph Johnson, and Richard Helm Đoàn Văn Thọ - CT1901C - Áp Dụng Design Pattern Trong Phát Triển Phần Mềm 69 ... phương pháp phát triển phần mềm hoàn thiện Design Pattern ngoại lệ  Không thích hợp cho lập trình viên kinh nghiệm chưa Đoàn Văn Thọ - CT1901C - Áp Dụng Design Pattern Trong Phát Triển Phần Mềm. .. Programming Design DP Design Pattern UC Use case Mẫu thiết kế 10 Đoàn Văn Thọ - CT1901C - Áp Dụng Design Pattern Trong Phát Triển Phần Mềm CHƯƠNG 1: KIẾN THỨC CƠ BẢN Phát triển phần mềm hướng... 13: Áp dụng Singleton Pattern vào quy trình đăng nhập hệ thống Hình - 14: Áp dụng Singleton Pattern vào quy trình kết nối liệu Đoàn Văn Thọ - CT1901C - Áp Dụng Design Pattern Trong Phát Triển Phần

Ngày đăng: 31/12/2019, 13:32

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan