- 56 - ỨNG DỤNGKHUNGLÀMVIỆC CHO BÀITOÁNLẬPLỊCH Sinh viên thực hiện : Vũ Văn Thạch – Lớp K46CA – Email:thachvv@gmai.com Người hướng dẫn: PGS.TS. Nguyễn Văn Vỵ Phấn 1: Khunglàmviệc 1.Tổng quan về khunglàmviệc Như chúng ta đã thấy, không chỉ có mã nguồn được sử dụng lại mà các thiết kế và các đặc tả cũng được sử dụng lại một cách rất hiệu quả. Chúng được chia thành nhiều phần, và được lưu trữ trong các thư viện. Khi cần sử dụng lại, chúng được liên kết lại với nhau thông qua một số định dạng khác nhau tùy theo hoàn cảnh chúng được sử dụng. Chúng ta gọi chúng là các mô hình khunglàmviệc (model framework). Các công cụ để thể hiện và để liên kết các khunglàmviệc này là một dạng gói được dùng phổ biến, được gọi là khunglàmviệc (framework) hay gói tiêu bản (template package). 2.Các khunglàmviệc cộng tác Một sự cộng tác miêu tả sự tương tác giữa các đối tượng được thiết kế để làmviệc với nhau. Chúng gửi thông điệp đi nhằm đạt được mục đích đặt ra khi chúng được thiết kế, tức là mỗi đối tượng được thiết kế để nhằm một mục đích nào đó và tất cả các hoạt động của nó đều nhằm vào hoàn thành mục đích đó. Hầu hết các kỹ năng thiết kế hướng đối tượng là về thiết kế sự cộng tác. Kỹ thuật CRC (classes: các lớp, responsibilities: các trách nhiệm, collaborations: các cộng tác) là kỹ thuật cơ bản của việc thiết kế hướng đối tượng và tất cả chỉ là sự phân chia các trách nhiệm giữa các đối tượng cộng tác với nhau để làm một công việc nào đó. 3. Các khunglàmviệc hợp thành Các khunglàmviệc được tạo ra có thể bao gồm nhiều khunglàmviệc khác, các khunglàmviệc có thể cộng tác với nhau để tạo ra một khunglamviệc lớn hơn. Nhờ đó một công việc phức tạp có thể phân rã thành nhiều công việc nhỏ hơn và mỗi công việc nhỏ hơn này có thể được thực hiện bởi một hay nhiểu khunglàm việc. Khi hợp nhất chúng lại với nhau để giải quyết một bàitoán thì chúng phải làmviệc ăn khớp với nhau. Phần 2: Vấn đề sử dụng lại 2.1 Sử dụng lại và tiến trình phát triển 2.1.1 Sử dụng lại là gì? Sử dụng lại là một loạt các kỹ thuật được hỗ trợ trrong hầu hết các công việc thiết kế và triển khai mà ta làm. Chính vì vậy mà một số nhân tố khác liên quan đến phát triển phần mềm như bảo trì, chất lượng phần mềm cũng được cải thiện nhờ sử dụng lại. 2.1.1.1 Nhập khẩu trội hơn hẳn so với việc cắt và dán Việc sử dụng lại không chỉ là sự cắt dán mã nguồn, một phương pháp “sử dụng lại” cổ điển, nhưng không mang lại hiệu quả cao mà việc sử dụng tập trung vào việc nhập khẩu các gói đã được đóng sẵn. Việc nhập khẩu các gói đóng sẵn có nhiều ưu đi ểm hơn hẳn so với việc cắt dán thông thường. - 57 - 2.1.1.2 Nguyên lý đóng -- mở và tính kinh tế của việc sử dụng lại Theo nguyên lý này, mọi thành phần phải là mở choviệc mở rộng, tức là khi sử dụng lại các thành phần, chúng phải dễ dàng được mở rộng nhưng chúng lại phải đóng đối với việc sửa đổi, tức là không cho phép can thiệp vào bên trong các gói đã được đóng sẵn và được nhập khẩu đó. 2.2 Các điểm cắm Khi nhập khẩu các gói vào trong phần mềm của chúng ta, thông thường các gói không chỉ ra chi tiết thành phần bên trong của nó mà nó chỉ đưa ra các điểm cắm để chương trình của chúng ta có thể truyền các tham số qua các điểm cắm này. Nhờ đó mà chúng ta có thể sử dụng lại các gói. Các điểm cắm này đôi khi còn được gọi là các ổ cắm bởi không phải cứ có điểm cắm thì có thể sử dụng lại tuỳ ý mà các thành phần cắm vào phải phù hợp với các điểm cắm đưa ra. 2.3 Sử dụng lại trong khunglàmviệc Không giống như việc sử dụng lại các thư viện như từ trước tới nay ta vẫn dùng là khi chương trình chính khi chạy sẽ gọi đến các thư viện, còn ở khunglàmviệc thì cương trình chính lại là khunglàm viêc, các chương trình của người sử dụng khi chạy sẽ tự động truyền các tham số tới khunglàmviệc và khunglàmviệc sẽ làmcho ứng dụng thực thi các chức năng theo đúng các tham số đã truyền vào. Phần 3: Ứng dụngkhunglàmviệc cho bàitoánlậplịch 1.Giới thiệu về khunglàmviệc JHotDraw JhotDraw là một khunglàmviệc ứng dụng có thể được phát triển cho các trình vẽ hình mang tính kỹ thuật. Ban đầu nó được phát triển trong SmallTalk bởi Kent Back và Ward Cunningham. Sau đó nó được phát triển Erich Gamma và Thomas Eggenschwiler (sau này được gọi là nhóm bộ tứ). Phiên bản hiện tại là 6.1 bê ta. Nó là một sản phầm mã nguồn mở rất nổi tiếng, được thế giới mã nguồn mở phát triển hơm 10 năm nay. 2. Giới thiệu bài toánlậplịch và bàitoánlậplịch đã thực hiện Lậplịch là một công việc hết sức quan trọng trong phát triển phần mềm. Việclậplịch chính xác có một ý nghĩa quyết định đối với việc hoàn thành dự án đúng thời hạn, việc phân bổ tài nguyên và việc quy trách nhiệm trong một nhóm, một tổ chức,vv… Bàitoán của ta là xây dựng một biểu đồ PERT bằng cách sử dụng lại khunglàm việc. Bài toánlậplịch đã giải quyết là dựa trên khunglàmviệc JHotDraw, ta sử dụng lại khunglàmviệc của nó, kế thừa và mở rộng các lớp, nạp chồng các phương thức như các điểm cắm vào khunglàmviệc để tạo ra ứng dụng của mình. Chương trình cho phép ta có thể tạo ra một biểu đồ lậplịch Pert bằng tay, b ằng cách dùng các công cụ trên palette hay bằng một bảng các công việc được lưu trong một file và tự động vẽ các công việc, chúng cũng cho phép ta chỉnh sửa các thông tin về công việc và thêm người hay sửa người thực hiện công việc, thao tác với tài nguyên, thông tin ngày làm việc, chuyển sang biểu đồ Gantt… chương trình cũng cho phép bạn - 58 - lưu biểu đồ công việc hiện thời và mở chúng ra. Tài liệu tham khảo: [1] Desmond Francis D’Souza Alan Cameron Wills , Objects, Components,and Frameworks with UML The CatalysisSM Approach , [2] James W. Cooper, The Design Patterns Java Companion . [3] Jones & Bartlett - Introduction to Java and Software Design [4] Martin Flower, Analysis Pattern, Reusable Object Model . [5] OReilly- dot.NET.Framework.Essentials.3rd . Edition [6] Erich, Gamma, Rechard Helm, Ralph Jonhson, John Vlissides. Design Patterns, Element of reusable object- oriented software. [7] Tham khảo một số nguồn trên Internet, chủ yếu trong http://www.jhotdraw.org, http://sourceforgce.net - 59 - . và khung làm việc sẽ làm cho ứng dụng thực thi các chức năng theo đúng các tham số đã truyền vào. Phần 3: Ứng dụng khung làm việc cho bài toán lập lịch. PERT bằng cách sử dụng lại khung làm việc. Bài toán lập lịch đã giải quyết là dựa trên khung làm việc JHotDraw, ta sử dụng lại khung làm việc của nó, kế