Xem mẫu

  1. BỘ LAO ĐỘNG - THƯƠNG BINH VÀ Xà HỘI TỔNG CỤC DẠY NGHỀ Dự án giáo dục kỹ thuật và dạy nghề (VTEP) tr×nh ®é ®µo t¹o cc GIÁO TRÌNH Môn học: THIẾT KẾ HƯỚNG ĐỐI TƯỢNG Mã số: ITPRG05 NGHỀ: LẬP TRÌNH MÁY TÍNH Trình độ (lành nghề) THIẾT KẾ HƯỚNG ĐỐI TƯỢNG Đà Lạt - 2007
  2. Tuyên bố bản quyền : Tài liệu này thuộc loại sách giáo trình Cho nên các nguồn thông tin có thể được phép dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo . Mọi mục đích khác có ý đồ lệch lạc hoặc sử dụng với mục đích kinh doanh thiếu lành mạnh sẽ bị nghiêm cấm. Tổng Cục Dạy nghề sẽ làm mọi cách để bảo vệ bản quyền của mình. Tổng Cục Dạy Nghề cám ơn và hoan nghênh các thông tin giúp cho việc tu sửa và hoàn thiện tốt hơn tàI liệu này. Địa chỉ liên hệ: Dự án giáo dục kỹ thuật và nghề nghiệp Tiểu Ban Phát triển Chương trình Học liệu ……………………………………………… ................................................................ 2
  3. LỜI TỰA Đây là tài liệu được xây dựng theo chương trình của dự án giáo dục kỹ thuật và dạy nghề, để có đươc giáo trình này dự án đã tiến hành theo hai giai đoạn. Giai đoạn 1 : Xây dựng chương trình theo phương pháp DACUM, kết quả của gian đoạn này là bộ khung chương trình gồm 230 trang cấp độ 2 và 170 trang cấp độ 3. Giai đoạn 2 : 29 giáo trình và 29 tài liệu hướng dẫn giáo viên cho nghề lập trình máy tính 2 cấp độ. Để có được khung chương trình chúng tôi đã mời các giáo viên, các chuyên gia đang làm việc trong lĩnh vực công nghệ thông tin cùng xây dựng chương trình. Trong giai đoạn viết giáo trình chúng tôi cũng đã có những sự điều chỉnh để giáo trình có tính thiết thực và phù hợp hơn với sự phát triển của lĩnh vực công nghệ thông tin. Hệ thống phần mềm càng ngày càng trở nên phức tạp. Các ứng dụng hôm nay có những yêu cầu và kiến trúc đòi hỏi phức tạp hơn rất nhiều so với quá khứ. Các kỹ thuật, công cụ, và phương pháp luận phát triển hệ thống phần mềm đang thay đổi một cách nhanh chóng. Các phương pháp phát triển phần mềm chúng ta sẽ sử dụng trong tương lai có lẽ sẽ khác so với các phương pháp hiện hành đang sử dụng. Tuy nhiên, một điều hiển nhiên là phát triển hướng đối tượng và các khái niệm cơ bản của nó đang được sử dụng rộng rãi. Nhiều trường học đã nhận ra được điều này và đã tạo ra những khoá học phát triển hệ thống hướng đối tượng như một phần chính yếu của hệ thống thông tin tin học hoá và các chương trình khoa học máy tính. Giáo trình này dự kiến sẽ cung cấp một kiến thức nền tảng về phát triển các hệ thống hướng đối tượng cho các đối tượng sinh viên những năm cuối. Mục tiêu của giáo trình là cung cấp một mô tả rõ ràng về các khái niệm nền tảng phát triển hệ thống hướng đối tượng.Trong đó, nhấn mạnh đến tính đơn giản của tiếp cận giúp sinh viên có kiến thức về UML có thể dể dàng nắm bắt để phát triển một hệ thống hướng đối tượng. Trong quá trình biên soạn, mặc dù đã cố gắng tham khảo nhiều tài liệu và giáo trình khác nhưng tác giả không khỏi tránh được những thiếu sót và hạn chế. Tác giả chân thành mong đợi những nhận xét, đánh giá và góp ý để cuốn giáo trình ngày một hoàn thiện hơn. Tài liệu này được thiết kế theo từng mô đun/ môn học thuộc hệ thống mô đun/môn học của một chương trình, để đào tạo hoàn chỉnh nghề Lập trình máy tính ở cấp trình độ lành nghề và được dùng làm Giáo trình cho học viên trong các khoá đào tạo, cũng có thể được sử dụng cho đào tạo ngắn hạn hoặc cho các công nhân kỹ thuật, các nhà quản lý và người sử dụng nhân lực tham khảo. Đây là tài liệu thử nghiệm sẽ được hoàn chỉnh để trở thành giáo trình chính thức trong hệ thống dạy nghề. Đà lạt tháng 10 năm 1007 3
  4. MỤC LỤC ĐỀ MỤC TRANG 1. LỜI TỰA........................................................................................................3 2. MỤC LỤC......................................................................................................4 3. GIỚI THIỆU VỀ MÔ ĐUN/MÔN HỌC............................................................5 4. SƠ ĐỒ QUAN HỆ THEO TRÌNH TỰ HỌC NGHỀ.........................................7 5. CÁC HÌNH THỨC HỌC TẬP CHÍNH TRONG MÔ ĐUN/MÔN HỌC..............9 6. YÊU CẦU VỀ ĐÁNH GIÁ HOÀN THÀNH MÔ ĐUN/MÔN HỌC.....................12 7. Bài 1 : TỔNG QUAN PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG..........13 8. Bài 2 : XÂY DỰNG LƯỢC ĐỒ TÌNH HUỐNG SỬ DỤNG, XÁC ĐỊNH LỚP VÀ TƯƠNG TÁC GIỮA CÁC ĐỐI TƯỢNG...................................................21 9. Bài 3 : LƯỢC ĐÒ LỚP..................................................................................48 10. Bài 4 : SỰ KẾ THỪA VÀ PHÂN TÍCH HÀNH VI CỦA ĐỐI TƯỢNG..............77 11. Bài 5 : THIẾT KẾ KIẾN TRÚC HỆ THỐNG....................................................120 12. CÁC BÀI TẬP MỞ RỘNG, NÂNG CAO VÀ GIẢI QUYẾT VẤN ĐỀ................191 13.THUẬT NGỮ CHUYÊN MÔN.........................................................................194 13. TÀI LIỆU THAM KHẢO..................................................................................196 4
  5. GIỚI THIỆU VỀ MÔ ĐUN/MÔN HỌC Vị trí, ý nghĩa, vai trò mô đun/môn học : Hệ thống phần mềm càng ngày càng trở nên phức tạp. Các ứng dụng hôm nay có những yêu cầu và kiến trúc đ̣i hỏi phức tạp hơn rất nhiều so với quá khứ. Các kỹ thuật, công cụ, và phương pháp luận phát triển hệ thống phần mềm đang thay đổi một cách nhanh chóng. Các phương pháp phát triển phần mềm chúng ta sẽ sử dụng trong tương lai có lẽ sẽ khác so với các phương pháp hiện hành đang sử dụng. Tuy nhiên, một điều hiển nhiên là phát triển hướng đối tượng và các khái niệm cơ bản của nó đang được sử dụng rộng rãi. Nhiều trường học đã nhận ra được điều này và đã tạo ra những khoá học phát triển hệ thống hướng đối tượng như một phần chính yếu của hệ thống thông tin tin học hoá và các chương trình khoa học máy tính. Giáo trình này dự kiến sẽ cung cấp một kiến thức nền tảng về phát triển các hệ thống hướng đối tượng cho các đối tượng sinh viên những năm cuối. Mục tiêu của giáo trình là cung cấp một mô tả rõ ràng về các khái niệm nền tảng phát triển hệ thống hướng đối tượng. Trong đó, nhấn mạnh đến tính đơn giản của tiếp cận giúp sinh viên có kiến thức về UML có thể dể dàng nắm bắt để phát triển một hệ thống hướng đối tượng. Mục tiêu của mô đun/môn học: Mô tả được một số kỹ thuật, ngôn ngữ và các tiến trình được sử dụng trong quá trình phân tích và thiết kế hướng đối tượng. Nắm vững các thuật ngữ, đối tượng, luợc đồ liên quan đến việc phân tích và thiết kế hướng đối tượng, Nắm vững các khái niệm trong hướng đối tượng như tính kế thừa đơn, kế thừa bội, tổng quát hoá, chuyên biệt hoá, trạng tháI của các đối tượng. Biết kiểm tra mô hình thiết kế, kiểm tra độ tin cậy của mô hình và biết thiết kế giao diện người sử dụng, lập trình kiểm tra và đặc tả chu trình. Mục tiêu thực hiện của mô đun/môn học: Học xong môn học này học viên có khả năng: - Mô tả một số kỹ thuật, ngôn ngữ và các tiến trình được sử dụng trong quá trình phân tích và thiết kế hướng đối tượng. - Định nghĩa các khái niệm tác nhân, tình huống sử dụng, quan hệ giữa tình huống sử dụng và lược đồ tình huống sử dụng. Mô tả các kỹ thuật được sử dụng để kiểm tra hành vi hệ thống bằng lược đồ tình huống sử dụng. Định nghĩa đối tượng. Mô tả việc xác định trạng thái, hành vi và định danh cho đối tượng. Định nghĩa, xác định lớp, kiều của lớp và các đặc tả liên quan đến lớp. Đóng gói lớp và lược đồ lớp. Sử dụng lược đồ tuần tự và lược đồ cộng tác để mô tả hoạt động của hệ thống. Xác định tương tác giữa các đối tượng. - Ý nghĩa của quan hệ. Xác định quan hệ. Mô tả sự kết hợp giữa các quan hệ. Xác định tên của quan hệ. Vai trò của tên trong kết hợp quan hệ. Xác định bản số quan hệ. Đóng gói quan hệ. Xây dựng hoạt động cho các lược đồ. Đặc tả các hoạt động. Tạo và đặc tả thuộc tính cho lớp. Hiển thị hoạt động và thuộc tính. Mô tả lớp kết hợp. - Định nghĩa sự kế thừa, tổng quát hoá, chuyên biệt hoá. Mô tả cây kế thừa. So sánh kế thừa và đa kế thừa. Phân tích hành vi của đối tượng. Định nghĩa trạng tháI của đối tượng. Mô tả việc chuyền trạng thái của đối tượng. Xác định, xây dựng trạng thái chi tiết. 5
  6. - Kiểm tra mô hình. Kiểm tra sự kết hợp giữa các lớp, phân chia lớp. Kiểm tra độ tin cậy của mô hình. Thiết kế kiến trúc hệ thống dựa trên kiến trúc khung nhìn: khung nhìn logic, khung nhìn thành phần, khung nhìn tiến trình và khung nhìn triền khai. Xây dựng vòng lặp (interation). Thiết kế giao diện người sử dụng, bổ sung lớp, thiết kế quan hệ, thiết kế thuộc tính và hoạt động. Lập trình, kiểm tra và đặc tả chu trình. Nội dung chính của mô đun/môn học  - TỔNG QUAN VỀ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - XÂY DỰNG Lược ĐỒ TÌNH HUỐNG SỬ DỤNG, XÁC ĐỊNH LỚP VÀ TƯƠNG TÁC GIỮA CÁC ĐỐI TƯỢNG - Lược ĐỒ LỚP - SỰ KẾ THỪA VÀ PHÂN TÍCH HÀNH VI CỦA ĐỐI TƯỢNG - THIẾT KẾ KIẾN TRÚC HỆ THỐNG Kỹ năng thực hành: - Sử dụng thành thạo phần mềm hỗ trợ thiết kế - Lập tàI liệu phân tích thiết kế - Biên tập biểu đồ: Đọc và chỉnh lý Thái độ học viên: - Cẩn thận, lắng nghe ý kiến và thảo luận trong giờ lý thuyết và sửa bàI tập. Nghiêm túc trong giờ thực hành. 6
  7. Sơ đồ quan hệ theo trình tự học nghề Hệ thống Giao diện Lập trình Lập trình máy tính người máy nâng cao Web Phân tích thiết kế Lập trình hệ thống căn bản Lập trình hướng đối tượng Mạng căn bản Thiết kế hướng đối tượng Kỹ năng tin học Cấu trúc dữ liệu và thuật giải văn phòng Kỹ năng Ứng dụng CNTT trong doanh nghiệp Giao tiếp Cơ sở dữ liệu Kỹ năng Công nghệ Internet & WWW phần mềm Cơ sở toán học Thiết kế Web Công nghệ Đa Quản lý dự án phương tiện phần mềm Lập trình Visual Basic Hệ cơ sở dữ Hướng dẫn đồ liệu án tốt nghiệp Môi trường PT Phần mềm Anh văn Phần cứng An toàn Thi cho tin học máy tính lao động tốt nghiệp 7
  8. Ghi chú: Thiết kế hướng đối tượng là môn học bắt buộc. Mọi học viên phải học và đạt kết quả chấp nhận được đối với các bài kiểm tra đánh giá và thi kết thúc như đã đặt ra trong chương trình đào tạo. Những học viên qua kiểm tra và thi mà không đạt phải thu xếp cho học lại những phần chưa đạt ngay và phải đạt điểm chuẩn mới được phép học tiếp các mô đun/ môn học tiếp theo. Học viên, khi chuyển trường, chuyển ngành.nếu đã học ở một cơ sở đào tạo khác rồi thì phải xuất trình giấy chứng nhận; Trong một số trường hợp có thể vẫn phải qua sát hạch lại. 8
  9. CÁC HÌNH THỨC HỌC TẬP CHÍNH TRONG MÔ ĐUN/MÔN HỌC 1- Học trên lớp về : - Mô tả một số kỹ thuật, ngôn ngữ và các tiến trình được sử dụng trong quá trình phân tích và thiết kế hướng đối tượng. - Định nghĩa các khái niệm tác nhân, tình huống sử dụng, quan hệ giữa tình huống sử dụng và lược đồ tình huống sử dụng. Mô tả các kỹ thuật được sử dụng để kiểm tra hành vi hệ thống bằng lược đồ tình huống sử dụng. Định nghĩa đối tượng. Mô tả việc xác định trạng thái, hành vi và định danh cho đối tượng. Định nghĩa, xác định lớp, kiều của lớp và các đặc tả liên quan đến lớp. Đóng gói lớp và lược đồ lớp. Sử dụng lược đồ tuần tự và lược đồ cộng tác để mô tả hoạt động của hệ thống. Xác định tương tác giữa các đối tượng. - Mô hình trực quan là gì - Khái quát về tiến trình phát triển phần mềm - Như thế nào là một dự án phần mềm ? - Sơ đồ lớp - Xác định yêu cầu của hệ thống - 2- Nghe thuyết trình tại phòng chuyên môn hoá về : - Ý nghĩa của quan hệ. Xác định quan hệ. Mô tả sự kết hợp giữa các quan hệ. Xác định tên của quan hệ. Vai trò của tên trong kết hợp quan hệ. Xác định bản số quan hệ. Đóng gói quan hệ. Xây dựng hoạt động cho các lược đồ. Đặc tả các hoạt động. Tạo và đặc tả thuộc tính cho lớp. Hiển thị hoạt động và thuộc tính. Mô tả lớp kết hợp. - Định nghĩa sự kế thừa, tổng quát hoá, chuyên biệt hoá. Mô tả cây kế thừa. So sánh kế thừa và đa kế thừa. Phân tích hành vi của đối tượng. Định nghĩa trạng tháI của đối tượng. Mô tả việc chuyền trạng thái của đối tượng. Xác định, xây dựng trạng thái chi tiết. - Kiểm tra mô hình. Kiểm tra sự kết hợp giữa các lớp, phân chia lớp. Kiểm tra độ tin cậy của mô hình. Thiết kế kiến trúc hệ thống dựa trên kiến trúc khung nhìn: khung nhìn logic, khung nhìn thành phần, khung nhìn tiến trình và khung nhìn triền khai. Xây dựng vòng lặp (interation). Thiết kế giao diện người sử dụng, bổ sung lớp, thiết kế quan hệ, thiết kế thuộc tính và hoạt động. Lập trình, kiểm tra và đặc tả chu trình. - Thiết kế lớp Các tiên đề và hệ luận trong thiết kế hướng đối tượng Thiết kế lớp Tóm tắt - Thiết kế Use Case Giới thiêu Kiến trúc 3 tầng (three - layer) Xác địch lớp ở tầng dịch vụ tác nghiệp (business layer) Xác định các lớp tầng tác nghiệp Xác định lớp ở tầng truy cập dữ liệu (data layer) Mô tả hiện thực hoá use case 9
  10. - Thiết kế gói và hệ thống con I. Mô hình hoá cài đặt hệ thống 3- Tự nghiên cứu các tài liệu và làm bài tập về : - Chu Trình Phát Triển Phần Mềm (Software Development Life Cycle) - Xác định tác nhân - Phân biệt sự khác nhau giữa người dùng và tác nhân - Mô hình hoá nghiệp vụ 4- Thực tập tại phòng máy tính trường về : II. Tiến trình phát triển phần mềm III. Định nghĩa đối tượng - Định nghĩa và xác định khuôn mẫu cho lớp - Mô hình hoá Use Case - Thuộc tính (attribute) - Bản số - Thuộc tính quan hệ (Qualifier) - Định danh (identifier) - Các cách tiếp cận xác định lớp đối tượng - Khởi tạo danh sách các lớp ứng viên - Tiếp cận phân loại - Xác định mối kết hợp tổng quát – chuyên biệt (generalization) - Đa kế thừa - Mô hình hoá nghiệp vụ (BUSINESS MODELING) Giới thiệu Luồng công việc trong mô hình hoá nghiệp vụ Giới hạn hệ thống phát triển Xác định và trình bày các vấn đề của hệ thống Xác định những lĩnh vực cần ưu tiên Xác định tác nhân và use case nghiệp vụ Xác định các thừa tác viên nghiệp vụ (business worker) và các thực thể chịu tác động bởi nghiệp vụ (business entity) Các khái niệm UML hỗ trợ thêm cho quá trình mô hình hoá nghiệp vụ Hiện thực hoá use case nghiệp vụ Xác định yêu cầu tự động hoá IV. Thiết kế lớp Các tiên đề và hệ luận trong thiết kế hướng đối tượng Thiết kế lớp Tóm tắt V. Thiết kế Use Case 10
  11. Giới thiêu Kiến trúc 3 tầng (three - layer) Xác địch lớp ở tầng dịch vụ tác nghiệp (business layer) Xác định các lớp tầng tác nghiệp Xác định lớp ở tầng truy cập dữ liệu (data layer) Mô tả hiện thực hoá use case Thiết kế gói và hệ thống con VI. Mô hình hoá cài đặt hệ thống 5- Tham quan thực tế tại các cơ sở sản xuất phần mềm về : - Như thế nào là một dự án phần mềm - Các hoạt động trong thiết kế tại cơ sở 11
  12. YÊU CẦU VỀ ĐÁNH GIÁ HOÀN THÀNH MÔ ĐUN/MÔN HỌC Đánh giá thông qua kiểm tra trắc nghiệm:  100% điểm từ bài thi thực hành trên máy Thời gian làm bàI trong vòng 120 phút. Thang điểm: 0-4: Không đạt 5-6 : Đạt trung bình 7-8 : Đạt khá 9-10: Đạt Giỏi Đánh giá kết quả học tập của mô đun = ĐIỂM TRUNG BÌNH CHUNG của : - Kết quả điểm kiểm tra đầu giờ (5-15 phút) -Lấy hệ số 1 - Kết quả điểm kiểm tra viết (45 phút) và bài tập tự nghiên cứu -Lấy hệ số 2 - Kết quả điểm kiểm tra viết (90 phút ) và bài tập tự nghiên cứu -Lấy hệ số 3 - Kết quả điểm kiểm tra bài thực hành (60-90 phút) -Lấy hệ số 3 ĐÁNH GIÁ KẾT QUẢ HỌC TẬP CỦA MÔ ĐUN: - Điểm trung bình chung từ 5,0 trở lên : ĐẠT YÊU CẦU - Điểm trung bình chung từ 4,0 – 4,95 : CÓ THỂ XÉT VỚT - Điểm trung bình chung dưới 4,0 điểm : PHẢI ĐÀO TẠO LẠI 12
  13. BÀI 1 Tên bài: TỔNG QUAN PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG Mã bài : ITPRG05.1 Giới thiệu : - Mô tả một số kỹ thuật, ngôn ngữ và các tiến trình được sử dụng trong quá trình phân tích và thiết kế hướng đối tượng. Mục tiêu thực hiện: Học xong bài này học viên sẽ có khả năng: - Hiểu được tầm quan trọng khi làm việc trên mô hình. - Hiểu được khái quát về mô hình khái niệm - Nắm được quy trình phát triển một phần mềm Nội dung chính: I. Mô hình trực quan là gì? Mô hình hoá trực quan là một phương thức tư duy về vấn đề sử dụng các mô hình được tổ chức xoay quanh các khái niệm đời thực. Mô hình giúp chúng ta hiểu vấn đề, giao tiếp với mọi người có liên quan đến dự án (khách hàng, chuyên gia tìm vực thuộc đề án, nhà phân tích, nhà thiết kế, …). Mô hình rất hữu dụng trong việc mô hình hoá doanh nghiệp, soạn thảo tài liệu, thiết kế chương trình cũng như ngân hàng dữ liệu. Mô hình giúp hiểu các đòi hỏi của hệ thống tốt hơn, tạo các thiết kế rõ ràng hơn và xây dựng nên các hệ thống dễ bảo trì hơn. Mô hình là kết quả của sự trừu tượng hóa nhằm miêu tả các thành phần cốt yếu của một vấn đề hay một cấu trúc phức tạp qua việc lọc bớt các chi tiết không quan trọng và làm cho vấn đề trở thành dễ hiểu hơn. Trừu tượng hóa là một năng lực căn bản của con người, cho phép chúng ta giải quyết các vấn đề phức tạp. Các kỹ sư, nghệ sĩ và thợ thủ công đã xây dựng mô hình từ hàng ngàn năm nay để thử nghiệm thiết kế trước khi thực hiện. Phát triển phần mềm cũng không là ngoại lệ. Để xây dựng các hệ thống phức tạp, nhà phát triển phải trừu tượng hóa nhiều hướng nhìn khác nhau của hệ thống, sử dụng mã hiệu chính xác để xây dựng mô hình, kiểm tra xem mô hình có thỏa mãn các đòi hỏi của hệ thống, và dần dần bổ sung thêm chi tiết để chuyển các mô hình thành thực hiện. Chúng ta xây dựng mô hình cho các hệ thống phức tạp bởi chúng ta không thể hiểu thấu đáo những hệ thống như thế trong trạng thái toàn vẹn của chúng. Khả năng thấu hiểu và nắm bắt tính phức tạp của con người là có hạn. Điều này ta có thể thấy rõ trong ví dụ của ngành xây dựng. Nếu bạn muốn tạo một túp lều ở góc vườn, bạn có thể bắt tay vào xây ngay. Nếu bạn xây một ngôi nhà, có lẽ bạn sẽ cần tới bản vẽ, nhưng nếu bạn muốn xây một toà nhà chọc trời thì chắc chắn bạn không thể không cần bản vẽ. Thế giới phần mềm của chúng ta cũng thế. Chỉ tập trung vào các dòng code hay thậm chí cả phân tích Forms trong Visual Basic chẳng cung cấp một cái nhìn toàn cục về việc phát triển đồ án. Xây dựng mô hình cho phép nhà thiết kế tập trung vào bức tranh lớn về sự tương tác giữa các thành phần trong đồ án, tránh bị sa lầy vào những chi tiết riêng biệt của từng thành phần. 13
  14. Một môi trường kinh doanh mang tính cạnh tranh gay gắt và luôn luôn thay đổi dẫn đến tính phức tạp ngày càng tăng cao, và tính phức tạp này đặt ra những thách thức đặc trưng cho các nhà phát triển hệ thống. Mô hình giúp chúng ta tổ chức, trình bày trực quan, thấu hiểu và tạo nên các hệ thống phức tạp. Chúng giúp chúng ta đáp ứng các thách thức của việc phát triển phần mềm, hôm nay cũng như ngày mai. II. Khái quát về tiến trình phát triển phần mềm Chu trình của một phần mềm có thể được chia thành các giai đoạn như sau:  Nghiên cứu sơ bộ (Preliminary Investigation hay còn gọi là Feasibility Study)  Phân tích yêu cầu (Analysis)  Thiết kế hệ thống (Design of the System)  Xây dựng phần mềm (Software Construction)  Thử nghiệm hệ thống (System Testing)  Thực hiện, triển khai (System Implementation)  Bảo trì, nâng cấp (System Maintenance) 1 - Nghiên cứu sơ bộ: Câu hỏi quan trọng nhất khi phát triển một hệ thống hoàn toàn không phải câu hỏi mang tính phương pháp luận. Mà cũng chẳng phải câu hỏi về kỹ thuật. Nó là một câu hỏi dường như có vẻ đơn giản, nhưng thật ra đặc biệt khó trả lời: “Đây có đúng là một hệ thống để thực hiện không?” Đáng buồn là chính câu hỏi này trong thực tế thường chẳng hề được đặt ra và lại càng không được trả lời. Mặc dù việc lầm lẫn về phương pháp hay quyết định sai lầm về kỹ thuật cũng có thể dẫn tới thất bại, nhưng thường thì dự án có thể được cứu vãn nếu có đầy đủ tài nguyên cùng sự cố gắng quên mình của các nhân viên tài giỏi. Nhưng sẽ chẳng một ai và một điều gì cứu vãn cho một hệ thống phần mềm hoàn toàn chẳng được cần tới hoặc cố gắng tự động hóa một quy trình lầm lạc. Trước khi bắt tay vào một dự án, bạn phải có một ý tưởng cho nó. Ý tưởng này đi song song với việc nắm bắt các yêu cầu và xuất hiện trong giai đoạn khởi đầu. Nó hoàn tất một phát biểu: "Hệ thống mà chúng ta mong muốn sẽ làm được những việc như sau....". Trong suốt giai đoạn này, chúng ta tạo nên một bức tranh về ý tưởng đó, rất nhiều giả thuyết sẽ được công nhận hay loại bỏ. Các hoạt động trong thời gian này thường bao gồm thu thập các ý tưởng, nhận biết rủi ro, nhận biết các giao diện bên ngoài, nhận biết các các chức năng chính mà hệ thống cần cung cấp, và có thể tạo một vài nguyên mẫu dùng để “minh chứng các khái niệm của hệ thống”. Ý tưởng có thể đến từ nhiều nguồn khác nhau: khách hàng, chuyên gia tìm vực, các nhà phát triển khác, chuyên gia về kỹ nghệ, các bản nghiên cứu tính khả thi cũng như việc xem xét các hệ thống khác đang tồn tại. Một khía cạnh cần nhắc tới là code viết trong thời kỳ này thường sẽ bị "bỏ đi”, bởi chúng được viết nhằm mục đích thẩm tra hay trợ giúp các giả thuyết khác nhau, chứ chưa phải thứ code được viết theo kết quả phân tích và thiết kế thấu đáo. 14
  15. Trong giai đọan nghiên cứu sơ bộ, nhóm phát triển hệ thống cần xem xét các yêu cầu của doanh nghiệp (cần dùng hệ thống), những nguồn tài nguyên có thể sử dụng, công nghệ cũng như cộng đồng người dùng cùng các ý tưởng của họ đối với hệ thống mới. Có thể thực hiện thảo luận, nghiên cứu, xem xét khía cạnh thương mại, phân tích khả năng lời-lỗ, phân tích các trường hợp sử dụng và tạo các nguyên mẫu để xây dựng nên một khái niệm cho hệ thống đích cùng với các mục đích, quyền ưu tiên và phạm vi của nó. Thường trong giai đoạn này người ta cũng tiến hành tạo một phiên bản thô của lịch trình và kế hoạch sử dụng tài nguyên. Một giai đoạn nghiên cứu sơ bộ thích đáng sẽ lập nên tập hợp các yêu cầu (dù ở mức độ khái quát cao) đối với một hệ thống khả thi và được mong muốn, kể cả về phương diện kỹ thuật lẫn xã hội. Một giai đoạn nghiên cứu sơ bộ không được thực hiện thoả đáng sẽ dẫn tới các hệ thống không được mong muốn, đắt tiền, bất khả thi và được định nghĩa lầm lạc – những hệ thống thừơng chẳng được hoàn tất hay sử dụng. Kết quả của giai đoạn nghiên cứu sơ bộ là Báo Cáo Kết Quả Nghiên Cứu Tính Khả Thi. Khi hệ thống tương lai được chấp nhận dựa trên bản báo cáo này cũng là lúc giai đoạn Phân tích bắt đầu. 2- Phân tích yêu cầu Sau khi đã xem xét về tính khả thi của hệ thống cũng như tạo lập một bức tranh sơ bộ của dự án, chúng ta bước sang giai đoạn thường được coi là quan trọng nhất trong các công việc lập trình: hiểu hệ thống cần xây dựng. Người thực hiện công việc này là nhà phân tích. Quá trình phân tích nhìn chung là hệ quả của việc trả lời câu hỏi "Hệ thống cần phải làm gì?". Quá trình phân tích bao gồm việc nghiên cứu chi tiết hệ thống doanh nghiệp hiện thời, tìm cho ra nguyên lý hoạt động của nó và những vị trí có thể được nâng cao, cải thiện. Bên cạnh đó là việc nghiên cứu xem xét các chức năng mà hệ thống cần cung cấp và các mối quan hệ của chúng, bên trong cũng như với phía ngoài hệ thống. Trong toàn bộ giai đoạn này, nhà phân tích và người dùng cần cộng tác mật thiết với nhau để xác định các yêu cầu đối với hệ thống, tức là các tính năng mới cần phải được đưa vào hệ thống. Những mục tiêu cụ thể của giai đoạn phân tích là:  Xác định hệ thống cần phải làm gì.  Nghiên cứu thấu đáo tất cả các chức năng cần cung cấp và những yếu tố liên quan  Xây dựng một mô hình nêu bật bản chất vấn đề từ một hướng nhìn có thực (trong đời sống thực).  Trao định nghĩa vấn đề cho chuyên gia tìm vực để nhận sự đánh giá, góp ý.  Kết quả của giai đoạn phân tích là bản Đặc Tả Yêu Cầu (Requirements Specifications). 15
  16. 3 - Thiết kế hệ thống Sau giai đoạn phân tích, khi các yêu cầu cụ thể đối với hệ thống đã được xác định, giai đoạn tiếp theo là thiết kế cho các yêu cầu mới. Công tác thiết kế xoay quanh câu hỏi chính: Hệ thống làm cách nào để thỏa mãn các yêu cầu đã được nêu trong Đặc Tả Yêu Cầu? Một số các công việc thường được thực hiện trong giai đoạn thiết kế:  Nhận biết form nhập liệu tùy theo các thành phần dữ liệu cần nhập.  Nhận biết reports và những output mà hệ thống mới phải sản sinh  Thiết kế forms (vẽ trên giấy hay máy tính, sử dụng công cụ thiết kế)  Nhận biết các thành phần dữ liệu và bảng để tạo database  Ước tính các thủ tục giải thích quá trình xử lý từ input đến output. Kết quả giai đoạn thiết kế là Đặc Tả Thiết Kế (Design Specifications). Bản Đặc Tả Thiết Kế Chi Tiết sẽ được chuyển sang cho các lập trình viên để thực hiện giai đoạn xây dựng phần mềm. 4 - Xây dựng phần mềm Đây là giai đoạn viết lệnh (code) thực sự, tạo hệ thống. Từng người viết code thực hiện những yêu cầu đã được nhà thiết kế định sẵn. Cũng chính người viết code chịu trách nhiệm viết tài liệu liên quan đến chương trình, giải thích thủ tục (procedure) mà anh ta tạo nên được viết như thế nào và lý do cho việc này. Để đảm bảo chương trình được viết nên phải thoả mãn mọi yêu cầu có ghi trước trong bản Đặc Tả Thiết Kế Chi Tiết, người viết code cũng đồng thời phải tiến hành thử nghiệm phần chương trình của mình. Phần thử nghiệm trong giai đoạn này có thể được chia thành hai bước chính: Thử nghiệm đơn vị: Người viết code chạy thử các phần chương trình của mình với dữ liệu giả (test/dummy data). Việc này được thực hiện theo một kế hoạch thử, cũng do chính người viết code soạn ra. Mục đích chính trong giai đoạn thử này là xem chương trình có cho ra những kết quả mong đợi. Giai đoạn thử nghiệm đơn vị nhiều khi được gọi là "Thử hộp trắng" (White Box Testing) Thử nghiệm đơn vị độc lập: Công việc này do một thành viên khác trong nhóm đảm trách. Cần chọn người không có liên quan trực tiếp đến việc viết code của đơn vị chương trình cần thử nghiệm để đảm bảo tính “độc lập”. Công việc thử đợt này cũng được thực hiện dựa trên kế hoạch thử do người viết code soạn nên. 5- Thử nghiệm hệ thống 16
  17. Sau khi các thủ tục đã được thử nghiệm riêng, cần phải thử nghiệm toàn bộ hệ thống. Mọi thủ tục được tích hợp và chạy thử, kiểm tra xem mọi chi tiết ghi trong Đặc Tả Yêu Cầu và những mong chờ của người dùng có được thoả mãn. Dữ liệu thử cần được chọn lọc đặc biệt, kết quả cần được phân tích để phát hiện mọi lệch lạc so với mong chờ. 6 - Thực hiện, triển khai Trong giai đoạn này, hệ thống vừa phát triển sẽ được triển khai sao cho phía người dùng. Trước khi để người dùng thật sự bắt tay vào sử dụng hệ thống, nhóm các nhà phát triển cần tạo các file dữ liệu cần thiết cũng như huấn luyện cho người dùng, để đảm bảo hệ thống được sử dụng hữu hiệu nhất. 7 - Bảo trì, nâng cấp Tùy theo các biến đổi trong môi trường sử dụng, hệ thống có thể trở nên lỗi thời hay cần phải được sửa đổi nâng cấp để sử dụng có hiệu quả. Hoạt động bảo trì hệ thống có thể rất khác biệt tùy theo mức độ sửa đổi và nâng cấp cần thiết.   Sơ đồ tổng quát các giai đoạn của Chu Trình Phát Triển Phần Mềm: Hình 1.1: Sơ đồ tổng quát các giai đoạn của Chu Trình Phát Triển Phần Mềm III. Như thế nào là một dự án phần mềm ? 1- Software Development – một bài toán phức tạp: 17
  18. Kinh nghiệm của nhiều nhà thiết kế và phát triển cho thấy phát triển phần mềm là một bài toán phức tạp. Xin nêu một số các lý do thường được kể đến:  Những người phát triển phần mềm rất khó hiểu cho đúng những gì người dùng cần  Yêu cầu của người dùng thường thay đổi trong thời gian phát triển.  Yêu cầu thường được miêu tả bằng văn bản, dài dòng, khó hiểu, nhiều khi thậm chí mâu thuẫn.  Đội quân phát triển phần mềm, vốn là người "ngoài cuộc", rất khó nhận thức thấu đáo các mối quan hệ tiềm ẩn và phức tạp cần được thể hiện chính xác trong các ứng dụng lớn.  Khả năng nắm bắt các dữ liệu phức tạp của con người (tại cùng một thời điểm) là có hạn.  Khó định lượng chính xác hiệu suất của thành phẩm và thỏa mãn chính xác sự mong chờ từ phía người dùng.  Chọn lựa phần cứng và phần mềm thích hợp cho giải pháp là một trong những thách thức lớn đối với Designer. Phần mềm ngoài ra cần có khả năng thích ứng và mở rộng. Phần mềm được thiết kế tốt là phần mềm đứng vững trước những biến đổi trong môi trường, dù từ phía cộng đồng người dùng hay từ phía công nghệ. Ví dụ phần mềm đã được phát triển cho một nhà băng cần có khả năng tái sử dụng cho một nhà băng khác với rất ít sửa đổi hoặc hoàn toàn không cần sửa đổi. Phần mềm thoả mãn các yêu cầu đó được coi là phần mềm có khả năng thích ứng. Một phần mềm có khả năng mở rộng là phần mềm được thiết kế sao cho dễ phát triển theo yêu cầu của người dùng mà không cần sửa chữa nhiều. Chính vì vậy, một số các khiếm khuyết thường gặp trong phát triển phần mềm là:  Hiểu không đúng những gì người dùng cần  Không thể thích ứng cho phù hợp với những thay đổi về yêu cầu đối với hệ thống  Các Module không khớp với nhau  Phần mềm khó bảo trì và nâng cấp, mở rộng  Phát hiện trễ các lỗ hổng của dự án  Chất lượng phần mềm kém  Hiệu năng của phần mềm thấp  Các thành viên trong nhóm không biết được ai đã thay đổi cái gì, khi nào, ở đâu, tại sao phải thay đổi. 18
  19. 2- Chu Trình Phát Triển Phần Mềm (Software Development Life Cycle): Vì phát triển phần mềm là một bài toán khó, nên có lẽ trước hết ta cần điểm qua một số các công việc căn bản của quá trình này. Thường người ta hay tập hợp chúng theo tiến trình thời gian một cách tương đối, xoay quanh chu trình của một phần mềm, dẫn tới kết qủa khái niệm Chu Trình Phát Triển Phần Mềm (Software Development Life Cycle - SDLC) như sau: Chu Trình Phát Triển Phần Mềm là một chuỗi các hoạt động của nhà phân tích (Analyst), nhà thiết kế (Designer), người phát triển (Developer) và người dùng (User) để phát triển và thực hiện một hệ thống thông tin. Những hoạt động này được thực hiện trong nhiều giai đọan khác nhau.  Nhà phân tích (Analyst): là người nghiên cứu yêu cầu của khách hàng/người dùng để định nghĩa một phạm vi bài toán, nhận dạng nhu cầu của một tổ chức, xác định xem nhân lực, phương pháp và công nghệ máy tính có thể làm sao để cải thiện một cách tốt nhất công tác của tổ chức này.  Nhà thiết kế (Designer): thiết kế hệ thống theo hướng cấu trúc của database, screens, forms và reports – quyết định các yêu cầu về phần cứng và phần mềm cho hệ thống cần được phát triển.  Chuyên gia tìm vực (Domain Experts): là những người hiểu thực chất vấn đề cùng tất cả những sự phức tạp của hệ thống cần tin học hoá. Họ không nhất thiết phải là nhà lập trình, nhưng họ có thể giúp nhà lập trình hiểu yêu cầu đặt ra đối với hệ thống cần phát triển. Quá trình phát triển phần mềm sẽ có rất nhiều thuận lợi nếu đội ngũ làm phần mềm có được sự trợ giúp của họ.  Lập trình viên (Programmer): là những người dựa trên các phân tích và thiết kế để viết chương trình (coding) cho hệ thống bằng ngôn ngữ lập trình đã được thống nhất.  Người dùng (User): là đối tượng phục vụ của hệ thống cần được phát triển. Để cho rõ hơn, xin lấy ví dụ về một vấn đề đơn giản sau: Chúng ta có thể hình dung rằng chúng ta muốn xây dựng một căn nhà. Công việc đầu tiên là chúng ta chắc chắn là chúng ta dự tính xem chúng ta sẽ bỏ số tiền bao nhiêu để xây dựng căn nhà này, dựa trên số tiến này chúng ta tìm kiếm và phác hoạ (có thể chỉ trong ư tưởng) căn nhà này phải như thế nào? Loại căn nhà theo kiểu gì, có mấy phòng, chiều rộng và chiều dài bao nhiêu, rồi nào đến nền nhà, màu sắc, tiện nghi ?,… Rồi sau đó, chúng ta sẽ chọn một đơn vị xây dựng (trong số nhiều đơn vị mà thoả yêu cầu nhất). Tất cả các yêu trên sẽ phải trao đổivới đơn vị xây dựng này nhằm thống nhất về giá cả cũng như các điều khoản về yêu cầu xây dựng. Giai đoạn này được xem như là giai đoạn phân tích. Tiếp đó, đơn vị xây dựng sẽ thực hiện công việc thiết kế chi tiết của căn nhà, và từng đơn vị trong căn nhà (phòng, tường, trần, mái, phòng khách, phòng ăn, phòng ngủ,…). Giai đoạn này được xem là giai đoạn thiết kế. Sau đó các bản thiết kế chi tiết của căn nhà sẽ được bộ phận thi công dựa vào đó để tiến hành việc xây dựng. Giai đoạn này được xem là giai đoạn xây dựng. Căn nhà sau khi hoàn 19
  20. tất sẽ được chuyển giao để sử dụng, tất nhiên trong quá trình sử dụng nếu có các hư hỏng thì đơn vị xây dựng sẽ phải tiến hành bảo trì và sửa chữa. Hình 1.2: Ví dụ về chu trình phát triển Chính vì sự trợ giúp của chuyên gia tìm vực có thể đóng vai trò rất quan trọng nên trong những giai đoạn đầu của quá trình phát triển phần mềm, kết quả phân tích nên được thể hiện sao cho dễ hiểu đối với các chuyên gia tìm vực. Đây cũng là môt trong rất nhiều lý do khiến cho phương pháp hướng đối tượng được nhiều người hưởng ứng. Bài tập: Nội dung thực hành: Khởi tạo và xác định yêu cầu của hệ thống Sinh viên cần thực hiện những vấn đề sau: 1. Đưa ra thông tin tổng quan của dự án:  Giới thiệu về cơ quan đơn vị mà dự án sẽ triển khai.  Cơ cấu của đơn vị.  Mô tả phạm vi hệ thống để có thể thấy được mức độ hỗ trợ của hệ thống đối với đơn vị.  Mô tả những nghiệp vụ mà hệ thống sẽ hỗ trợ.  Các ràng buộc hệ thống: ngày hoàn tất, các nguồn tài chính, nhân lực, chi phí, … 2. Đánh giá tính khả thi của dự án:  Khả thi về kinh tế: i. Lợi nhuận từ việc triển khai hệ thống. ii. Chi phí xây dựng hệ thống ban đầu, định kỳ … iii. Từ đó đánh giá tính khả thi của hệ thống.  Khả thi về kỹ thuật .  Khả thi về họat động.  Khả thi về hợp đồng và hợp luật.  Phát sinh về quản lý. 3. Xác định yêu cầu:  Sử dụng phương pháp phỏng vấn hoặc bảng khảo sát để thu thập yêu cầu của người sử dụng. Từ đó đưa ra những yêu cầu của hệ thống: o Yêu cầu chức năng. o Yêu cầu phi chức năng.  Tiến hành phân lọai trên yêu cầu để đề ra những phương án và chọn ra phương án tốt nhất. 20
nguon tai.lieu . vn