Giáo trình Nhập môn công nghệ phần mềm - Trình độ: Cao đẳng - Trường Cao đẳng nghề kỹ thuật công nghệ

pdf 107 trang Gia Huy 17/05/2022 2310
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Nhập môn công nghệ phần mềm - Trình độ: Cao đẳng - Trường Cao đẳng nghề kỹ thuật công nghệ", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfgiao_trinh_nhap_mon_cong_nghe_phan_mem_trinh_do_cao_dang_tru.pdf

Nội dung text: Giáo trình Nhập môn công nghệ phần mềm - Trình độ: Cao đẳng - Trường Cao đẳng nghề kỹ thuật công nghệ

  1. BỘ LAO ĐỘNG -THƯƠNG BINH VÀ XÃ HỘI TRƯỜNG CAO ĐẲNG NGHỀ KỸ THUẬT CÔNG NGHỆ š› & š› GIÁO TRÌNH MÔN HỌC : NHẬP MÔN CÔNG NGHỆ PHẦN MỀM NGHỀ: LẬP TRÌNH VIÊN MÁY TÍNH TRÌNH ĐỘ: CAO ĐẲNG Ban hành kèm theo Quyết định số: 13A/QĐ-CĐNKTCN ngày 10 tháng 01 năm 2019 của Hiệu trưởng Trường Cao đẳng nghề Kỹ thuật Công nghệ Hà Nội, năm 2021 (Lưu hành nội bộ)
  2. TUYÊN BỐ BẢN QUYỀN: Tài liệu này thuộc loại sách giáo trình 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 mang tính 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. MÃ TÀI LIỆU: MHLTV 15 1
  3. LỜI GIỚI THIỆU Mục tiêu của môn Nhập môn Công nghệ phần mềm là cung cấp cho sinh viên những kiến thức cơ bản về tất cả mọi hoạt động liên quan đến phát triển phần mềm và kiến thức cơ bản về UML trong phát triển phần mềm. Qua môn học này sinh viên có kỹ năng sử dụng công cụ phần mềm để thực hiện các pha trong quá trình phát triển phần mềm và qua đó nâng cao năng lực làm việc nhóm và kỹ năng mềm. Sinh viên tham dự lớp và thực hành đầy đủ đặc biệt tích cực tham gia thảo luận trình bày trên lớp là yêu cầu quan trọng. Các nội dung chính được trình bày trong tài liệu này gồm các chương: - Giới thiệu chung về phần mềm và công nghệ phần mềm - Một số mô hình vòng đời phát triển phần mềm - Xác định và đặc tả yêu cầu - Ngôn ngữ lập trình VB.NET - Thiết kế phần mềm - Kiểm thử phần mềm Mặc dầu có rất nhiều cố gắng, nhưng không tránh khỏi những khiếm khuyết, rất mong nhận được sự đóng góp ý kiến của độc giả để giáo trình được hoàn thiện hơn. Xin chân thành cảm ơn! Hà Nội, ngày 23 tháng 04 năm 2021 Tham gia biên soạn 1. Chủ biên Phùng Sỹ Tiến Trưởng khoa 2. Tập thể Giảng viên Khoa CNTT Mọi thông tin đóng góp chia sẻ xin gửi về hòm thư tienphungktcn@gmail.com, hoặc liên hệ số điện thoại 0913393834-0983393834 2
  4. MỤC LỤC LỜI GIỚI THIỆU 2 CHƯƠNG 1: GIỚI THIỆU CHUNG 7 VỀ PHẦN MỀM VÀ CÔNG NGHỆ PHẦN MỀM 7 1. Khái niệm về phần mềm 7 1.1. Định nghĩa chung về phần mềm 7 1 .2 . Các đặc tính của phần mềm 8 1.3. Thế nào là một phần mềm tốt ? 10 1.4. Ứng dụng phần mềm 11 2. Công nghệ phần mềm 12 CHƯƠNG 2: MỘT SỐ MÔ HÌNH VÒNG ĐỜI PHÁT TRIỂN PHẦN MỀM 14 1. Các khái niệm cơ bản 14 1.1. Vòng đời phần mềm 14 1.2. Quy trình phát triển phần mềm 15 2. Một số mô hình vòng đời phát triển phần mềm 16 2.2. Mô hình thuần thục khả năng 16 2.3. Mô hình chế thử 17 2.4. Mô hình phát triển ứng dụng nhanh (RAD) 18 2.5. Mô hình xoắn ốc 20 2.6. Mô hình theo thành phần 21 2.9. Mô hình chữ V 23 CHƯƠNG 3: XÁC ĐỊNH VÀ ĐẶC TẢ YÊU CẦU 24 1. Tổng quan về yêu cầu phần mềm 24 1.1. Khái niệm yêu cầu phần mềm 24 1.2. Phân loại các yêu cầu phần mềm 24 2. Xác định yêu cầu phần mềm 24 2.1. Nội dung xác định yêu cầu phần mềm 24 2.2 Phát hiện các yêu cầu phần mềm 24 2.3. Phân tích các yêu cầu phần mềm và thương lượng với khách hàng 26 3. Đặc tả yêu cầu 26 4. Thẩm định yêu cầu 27 CHƯƠNG 4: NGÔN NGỮ LẬP TRÌNH VB.NET 35 1. Giới thiệu về Microsoft.NET Framework 35 1.1. Cài đặt Visual Studio 2010 37 2. Xây dựng chương trình VB.NET 42 2.1. Chương trình máy tính 42 2.2. Thực thi chương trình 46 3. . Làm việc với các điều khiển trên Toolbox 47 4. Lập trình WindowsForms 56 4.1. Sự quan trọng của Windows Forms 56 4.2. Những điểm căn bản của Windows Forms 57 4.3. Kiến trúc của Windows Forms 57 1. Định vị form trên màn hình Desktop 59 2. Thêm vào các điều khiển lúc form đang chạy 61 5. DataGrid 64 5.1. Giới thiệu ADO.NET 64 5.2. Sử dụng DataSet kết nối CSDL 65 3
  5. 5.3. Sử dụng DataGrid View hiển thị dữ liệu 66 CHƯƠNG 5: THIẾT KẾ PHẦN MỀM 79 1. Tổng quan về thiết kế phần mềm 79 1.1 Khái niệm và vai trò của thiết kế 79 1.2. Tiến trình thiết kế 81 4.1. Một số khái niệm UML 84 4.2. Tiến trình thiết kế hướng đối tượng 86 CHƯƠNG 6: KIỂM THỬ PHẦN MỀM 93 1. Một số khái niệm cơ bản 93 TÀI LIỆU THAM KHẢO 106 4
  6. GIÁO TRÌNH MÔN HỌC Tên môn học: Nhập môn công nghệ phần mềm Mã môn học: MHLTV 15 Vị trí, tính chất, ý nghĩa và vai trò môn học: - Vị trí: Môn học Nhập môn Công nghệ phần mềm dành cho sinh viên trình độ Cao đẳng. Môn học thuộc khối kiến thức chuyên ngành - Tính chất: Môn học giúp sinh viên hiểu rõ được các khái niệm và phương pháp kỹ thuật liên quan đến tiến trình phát triển phần mềm, bắt đầu từ công việc đặc tả, xác định yêu cầu, phân tích thiết kế phần mềm. Giới thiệu các công cụ hỗ trợ thiết kế, lập trình để phát triển phần mềm và kiểm thử phần mềm để sinh viên có kiến thức tổng quan nhất về quy trình phát triển một phần mềm và ứng dụng được kiến thức đó vào công việc phát triển phần mềm sau này. - Ý nghĩa và vai trò của môn học: Đây là môn học cơ sở ngành, cung cấp cho sinh viên các kiến thức cơ bản về phần mềm và lập trình phần mềm. Mục tiêu của môn học: - Về kiến thức: + Trình bày được một số kiến thức cơ bản về khái niệm về phần mềm và công nghệ phần mềm, các phương pháp kỹ thuật liên quan đến tiến trình phát triển phần mềm. + Hiểu rõ các công cụ hỗ trợ công việc đặc tả và xác định yêu cầu, thiết kế và lập kế hoạch để phát triển phần mềm.; - Về kỹ năng + Lựa chọn được phương pháp kỹ thuật phù hợp cho một dự án phần mềm. + Vận dụng được các công cụ hỗ trợ, kỹ thuật lập trình để phát triển phần mềm + Xác định và ý thức được mục tiêu, ý nghĩa và vị trí của học phần Nhập môn Công nghệ phần mềm trong chương trình đào tạo - Về năng lực tự chủ và trách nhiệm: + Đi học đầy đủ, tích cực tham gia thao luận, chăm chỉ đọc tài liệu tham khảo để có được những kiến thức quan trọng của công nghệ phần mềm đối với khoa học máy tính. + Hăng say, nhiệt tình, có khả năng tự nghiên cứu Nội dung của môn học: Thời gian Số Kiểm tra* Tên chương, mục Tổng Lý TT Thực hành (LT hoặc số thuyết TH) I Giới thiệu chung về phần 10 7 3 mềm và công nghệ phần mềm Khái niệm về phần mềm Công nghệ phần mềm II Một số mô hình vòng đời 10 7 3 phát triển phần mềm Các khái niệm cơ bản Một số mô hình vòng đời phát 5
  7. triển phần mềm III Xác định và đặc tả yêu cầu 15 7 7 1 Tồng quan về yêu cầu phần mềm Xác định yêu cầu phần mềm Đặc tả yêu cầu Thẩm định yêu cầu IV Ngôn ngữ lập trình VB.NET 20 15 5 Giới thiệu về .NET FRAMEWORK Xây dựng chương trình VB.NET Làm việc với các điều khiển trên Toolbox Lập trình WindowsForms DataGrid Reporting V Thiết kế phần mềm 20 14 5 1 Tổng quan về thiết kế phần mềm Thiết kế kiến trúc Thiết kế hệ thống hướng chức năng Thiết kế hệ thống hướng đối tượng Thiết kế giao diện VI Kiểm thử phần mềm 14 10 4 Một số khái niệm cơ bản Các cấp độ kiểm thử Các kỹ thuật kiểm thử Thi kết thúc môn học 1 1 Cộng 90 60 27 3 6
  8. CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ PHẦN MỀM VÀ CÔNG NGHỆ PHẦN MỀM Mã chương: MHLTV 15.1 Mục tiêu: - Nêu được các định nghĩa, khái niệm về phần mềm và công nghệ phần mềm. - Nêu được lịch sử hình thành và phát triển công nghệ phần mềm. - Trình bày được tầm quan trọng của công nghệ phần mềm 1. Khái niệm về phần mềm Mục tiêu: Nắm được định nghĩa phần mềm; Nắm được các đặc tính của phần mềm. 1.1. Định nghĩa chung về phần mềm Trong ba thập kỷ đầu tiên của thời đại tính toán, thách thức chủ yếu là phải phát triển ứng dụng phần cứng máy tính để làm giảm bớt giá thành xử lý và lưu trữ dữ liệu. Trong suốt thập kỷ 80, tiến bộ trong vi điện tử đã làm phát sinh năng lực tính toán mạnh hơn với giá thành thấp đáng kể. Ngày nay vấn đề đã khác đi. Thách thức chủ yếu là phải cải tiến chất lượng và giảm giá thành của các giải pháp dựa trên máy tính - giải pháp được cài đặt bằng phần mềm. Vậy phần mềm là gì? Định nghĩa 1: Phần mềm là tập họp: 1. Các lệnh (chương trình máy tính) khi được thực hiện sẽ cung cấp những chức năng và kết quả mong muốn. 2. Cấu trúc dữ liệu làm cho chương trình thao tác thông tin thích hợp. 3. Các tư liệu mô tả thao tác và cách sử dụng chương trình. Định nghĩa 2: Trong một hệ thống máy tính, nếu trừ bỏ đi các thiết bị và các loại phụ kiện thì phần còn lại chính là các phần mềm. Nghĩa hẹp- ph ần mềm là dịch vụ ch ương trình để t ăng khả n ăng xử lý c ủa phần cứng máy tính. Nghĩa rộng- phần mềm là tập tất cả các kỹ thuật ứng dụng để thực hiện những dịch vụ chức năng cho các mục đích nào đó bằng phần cứng. Tóm lại : Phần mềm được biểu diễn như hình 1.1. Hình 1.1. Phần mềm là gi? Trong đó: 7
  9. ■ Nhóm các kỹ thuật, phương pháp luận bao gồm: -Các khái niệm và trình tự cụ thể hoá của một hệ thống; -Các phương pháp tiếp cận và giải quyết vấn đề; -Các trình tự thiết kế và phát triển được chuẩn hoá (quy trình); -Các phương pháp đặc tả, yêu cầu, thiết kế hệ thống, thiết kế chương trình, kiểm thử, toàn bộ quy trình quản lý phát triển phần mềm. ■ Nhóm các chương trình là phần giao diện với phần cứng, con người từ các nhóm lệnh chỉ thị cho máy tính biết trình tự thao tác xử lý dữ liệu. ■ Nhóm các tư liệu: -Những tài liệu hữu ích, có giá trị cao và rất cần thiết để phát triển, vận hành và bảo trì phần mềm. -Để tạo ra phần mềm với độ tin cậy cao cần phải tạo ra các tư liệu chất lượng cao: đặc tả yêu cầu, mô tả thiết kế từng loại, điều kiện kiểm thử, thủ tục vận hành, hướng dẫn thao tác. ■ Những yếu tố khác: -Sản xuất phần mềm phụ thuộc rất nhiều vào con người (kỹ sư phần mềm). Khả năng hệ thống hoá trừu tượng, khả năng lập trình, kỹ năng công nghệ, kinh nghiệm làm việc, tầm bao quát khác nhau ở mỗi người. -Phần mềm phụ thuộc nhiều vào ý tưởng và kỹ năng của con người/nhóm tác giả. 1 .2 . Các đặc tính của phần mềm Để hiểu được khái niệm phần mềm, cần xem xét các đặc trưng của phần mềm làm cho nó khác biệt với những thứ khác mà con người đã xây dựng, Khi phần cứng được xây dựng, tiến trình sáng tạo của con người (phân tích, thiết kế, xây dựng, kiểm thử) cuối cùng được dịch thành dạng vật lý. Phần mềm là hệ thống logic, không phải là hệ thống vật lý. Do đó, phần mềm có các đặc trưng khác với các đặc trưng của phần cứng: Phần mềm được phát triển hay được kỹ nghệ hoá, nó không được chế tạo theo nghĩa cổ điển. Mặc dù có một số điểm tương đồng giữa phát triển phần mềm và chế tạo phần cứng nhưng hai hoạt động này về cơ bản là khác nhau. Trong cả hai hoạt động này, chất lượng cao sẽ đạt được nếu thiết kế tốt, nhưng giai đoạn chế tạo phần cứng có thể đưa ra các vấn đề chất lượng, điều mà không tồn tại hay dễ sửa đổi ở phần mềm. Cả hai hoạt động này đều phụ thuộc vào con người nhưng mối quan hệ giữa người được áp dụng và công việc là hoàn toàn khác nhau. Phần mềm không hỏng đi Phần mềm không bị tác động bởi môi trường - yếu tố vốn gây cho phần cứng bị mòn cũ đi. Do đó về lý thuyết, đường cong tỷ lệ hỏng hóc phần mềm có dạng như hình 1.2. Những khiếm khuyết chưa được phát hiện sẽ làm cho chương trình có tỷ lệ hỏng hóc cao ngay từ ban đầu khi mới sử dụng. Tuy nhiên, những khiếm khuyết này được sửa đổi và đường cong trở nên phẳng như hình vẽ. Phần mềm không mòn cũ đi nhưng nó bị ‘‘suy thoái”. Điều này dường như mâu thuẫn nhưng có thể được giải thích rõ ràng nhất trong hình 1.3. 8
  10. Hình 1.2. Đường cong hỏng hóc phần mềm (lý tưởng) Hình 1.3. Đường cong hỏng hóc thực tế của phần mềm Trong quá trình sử dụng, phần mềm sẽ có nhiều thay đổi. Khi thay đổi được thực hiện, có thể một số khiếm khuyết mới sẽ xuất hiện, làm cho đường cong tỷ lệ hỏng hóc trở thành có đầu nhọn như hình vẽ. Trước khi đường cong trở về với tỷ lệ hỏng hóc ổn định ban đầu thì một thay đổi khác lại được thực hiện và làm cho đường cong phát sinh đỉnh nhọn một lần nữa. Dần dần, mức tỷ lệ hỏng hóc tối thiểu bắt đầu nâng lên - phần mềm bị thoái hoá do những thay đổi. Một khía cạnh khác của sự mòn sẽ minh hoạ cho sự khác biệt giữa phần cứng và phần mềm : Khi một yếu tố phần cứng bị mòn cũ đi, nó liền được thay thế. Nhưng không có phần thay thế cho ph ần mềm. Mọi hỏng hóc phần mềm đều chỉ ra l ỗi thiết kế hay đường quá trình chuyển thiết kế thành mã máy thực hiện được. Do đó, việc bảo trì phần mềm có độ phức tạp phụ thêm đáng kể so với bảo trì phần cứng. Phần lớn phần mềm đều được xây dựng theo các đơn đặt hàng, ít khi được lắp ráp từ các thành phần có sẵn. Nói chung không có danh mục các thành phần phần mềm. Có thể đặt hàng phần mềm nhưng chỉ như một đơn vị hoàn chỉnh, không phải là những thành phần có thể lắp ráp lại thành chương trình mới. Mặc dù có nhiều bài viết đề cập tới vấn đề tái 9
  11. sử dụng phần mềm, nhưng chúng ta cũng mới chỉ thu được rất ít hiệu quả từ việc tái sử dụng này. 1.3. Thế nào là một phần mềm tốt ? ■ Các chỉ tiêu cơ bản bao gồm: - Phản ánh đúng yêu cầu người dùng. - Chứa ít lỗi tiềm tàng. - Giá thành không vượt quá ước lượng ban đầu. - Dễ vận hành sử dụng. - Tính an toàn, độ tin cậy cao. ■ Hiệu suất xử lý cao: - Hiệu suất thời gian tốt: Độ phức tạp tính toán thấp, thời gian quay vòng ngắn, thời gian hồi đáp nhanh. - Sử dụng các tài nguyên như CPU, RAM, HDD, Internet một cách hữu hiệu. ■ Tính dễ hiểu: - Kiến trúc và cấu trúc dễ hiểu. - Dễ kiểm tra, kiểm chứng và bảo trì. - Có tài liệu mô tả yêu cầu, điều kiện kiểm thử, vận hành, bảo trì với chất lượng cao. Tính dễ hiểu ngày càng trở thành chỉ tiêu quan trọng với phần mềm. Tuy nhiên để xây dựng phầm mềm tốt ta phải chú ý các điểm sau: ■ Không có phương pháp mô tả rõ ràng định nghĩa yêu cầu của người dùng, khi bàn giao sản phẩm dễ phát sinh những trục trặc. ■ Với những phần mềm có quy mô lớn, tư liệu đặc tả cố định thời gian dài, sẽ khó đáp ứng nhu cầu thay đổi của người dùng một cách kịp thời trong thời gian đó. ■ Nếu không có phương pháp luận thì chất lượng phần mềm sẽ suy giảm. ■ Nếu không có chuẩn về tư liệu quy trình sản xuất phần mềm thì những đặc tả không rõ ràng sẽ làm giảm chất lượng phần mềm. ■ Nếu không kiểm thử tính đúng đắn của phần mềm ở từng giai đoạn mà chỉ kiểm tra giai đoạn cuối, khi đó nếu phát hiện ra lỗi thì bàn giao sản phẩm không đúng hạn. ■ Coi trọng lập trình hơn thiết kế làm cho chất lượng phần mềm giảm. ■ Coi thường tái sử dụng phần mềm làm cho năng suất lao động giảm. ■ Phần lớn trong quy trình phát triền phần mềm do con người thực hiện cũng làm năng suất lao động giảm. ■ Không chứng minh tính đúng đắn của phần mềm làm giảm độ tin cậy của phần mềm. ■ Chuẩn một phần mềm tốt không thể đo được một cách định lượng, do vậy không thể đánh giá được một hệ thống đúng đắn hay không. ■ Khi đầu tư nhân lực lớn vào bảo trì sẽ làm giảm hiệu suất lao động của nhân viên. ■ Công việc bảo trì kéo dài làm giảm chất lượng của tư liệu và ảnh hưởng xấu đến các công việc khác. ■ Quản lý dự án lỏng lẻo kéo theo quản lý lịch trình cũng không rõ ràng. Không có tiêu chuẩn để ước lượng nhân lực và dự toán sẽ làm kéo dài thời hạn vượt kinh phí của dự án. 10
  12. 1.4. Ứng dụng phần mềm Phần mềm có thể được áp dụng trong bất kỳ tình huống nào bao gồm một tập các bước thủ tục (như một thuật toán) đã được xác định trước (các phần mềm ngoại lệ với quy tắc này là các phần mềm hệ chuyên gia và các phần mềm mạng nơron). Nội dung thông tin và tính tất định là các nhân tố quan trọng trong việc xác định bản chất ứng dụng của phần mềm. Nội dung thể hiện ý nghĩa và hình dạng của thông tin vào và ra. Tính tất định thông tin cho biết việc tiên đoán trước trật tự và thời gian của thông tin. Các lĩnh vực phần mềm sau sẽ chỉ ra những phạm vi ứng dụng rộng rãi của phần mềm: Phần mềm hệ thống: Phần mềm hệ thống là tập hợp các chương trình được viết để phục vụ cho chương trình khác. Phần mềm hệ thống (trình biên dịch, trình soạn thảo, các tiện ích quản lý tệp ) xử lý các cấu trúc thông tin phức tạp nhưng xác định. Các ứng dụng hệ thống khác (như thành phần hệ điều hành, bộ xử lý viễn thông) có dữ liệu thường không xác định. Lĩnh vực phần mềm hệ thống được đặc trưng chủ yếu bởi tương tác với hệ thống máy tính; sử dụng nhiều trong các hệ thống nhiều người dùng, thao tác tương tranh đòi hỏi lập lịch, dùng chung tài nguyên và các quản lý tiến trình phức tạp; cấu trúc dữ liệu phức tạp và nhiều giao diện ngoài. Phần mềm thời gian thực: Phần mềm điều phối, phân tích, kiểm soát các sự kiện của thế giới thực khi chúng xuất hiện gọi là phần mềm thời gian thực. Các yếu tố của phần mềm thời gian thực bao gồm một thành phần thu thập dữ liệu để thu thập và định dạng thông tin từ môi trường bên ngoài, một thành phần phân tích biến đổi thông tin theo yêu cầu của ứng dụng, một thành phẩn kiếm soát/đưa ra để đáp ứng với môi trường bên ngoài, một thành phần điều phối để điều hoà các thành phần khác sao cho có thể duy trì đáp ứng thời gian thực hiện hình. Hệ thống thời gian thực phải đáp ứng những ràng buộc thời gian chặt chẽ. Phần mềm nghiệp vụ: Xử lý thông tin nghiệp vụ là lĩnh vực ứng dụng phần mềm lớn nhất. Các hệ thống rời rạc (như tính lương, kế toán thu/chi, quản lý kho) đã phát triển thành các phần mềm hệ thông tin quản lý thâm nhập vào một hay nhiều cơ sở dữ liệu lớn chứa thông tin nghiệp vụ. Những ứng dụng trong lĩnh vực này cấu trúc lại dữ liệu hiện có theo cách thuận tiện cho các thao tác nghiệp vụ hay quản lý. Bên cạnh các ứng dụng xử lý dữ liệu quy ước, các ứng dụng phần mềm nghiệp vụ còn bao gồm cả các tính toán tương tác (như xử lý các giao dịch cho các điểm bán hàng). Phần mềm khoa học và công nghệ: Phần mềm khoa học và công nghệ được đặc trưng bởi các thuật toán ‘‘máy nghiền số”. Các ứng dụng mở rộng từ thiên văn cho đến núi lửa, từ phân tích về ô tô cho tới sự biến động quỹ đạo tàu con thoi, từ sinh học phân tử đến chế tạo tự động. Tuy nhiên, những ứng dụng mới trong lĩnh vực khoa học và công nghệ đang “di chuyển nhanh” ra khỏi các thuật ngữ quy ước. Thiết kế có sự trợ giúp của máy tính (CAD), mô phỏng hệ thống và những ứng dụng tương tác khác đã bắt đầu kế tục các đặc trưng thời gian thực và thậm chí cả phần mềm hệ thống. Phần mềm nhúng: Các sản phẩm thông minh đã trở nên thông dụng. Phần mềm nhúng nằm trong bộ nhớ chỉ đọc và được dùng để điều khiển các sản phẩm và các hệ thống cho người tiêu dùng và thị trường công nghiệp. Phần mềm nhúng có thể thực hiện các chức năng rất giới hạn như điều khiển bàn phím cho lò vi sóng hay đưa ra các khả năng điều khiển và vận hành như chức năng số hoá trong ô tô, 11
  13. kiểm tra xăng, hiển thị bảng đồng hồ, hệ thống phanh Phần mềm máy tính cá nhân: Xử lý văn bản, đồ họa máy tính, quản trị cơ sở dữ liệu, các ứng dụng tài chính cá nhân và nghiệp vụ, mạng bên ngoài hay thâm nhập cơ sở dữ liệu chỉ là một số lĩnh vực trong hàng trăm ứng dụng, Trong thực tế, phần mềm máy tính cá nhân biểu thị cho một số thiết kế giao diện người - máy được cải tiến nhiều nhất trong các phần mềm, Phần mềm trí tuệ nhân tạo (AI): Phần mềm trí tuệ nhân tạo dùng các thuật toán phi số để giải quyết các vấn đề phức tạp mà tính toán hay phân tích trực tiếp không quản lý được. Hiện nay lĩnh vực trí tuệ nhân tạo hoạt động mạnh nhất là các hệ chuyên gia, còn gọi là các hệ cơ sở tri thức. Tuy nhiên, các lĩnh vực áp dụng khác của phần mềm trí tuệ nhân tạo còn là nhận dạng (hình ảnh và tiếng nói), chứng minh định lý và trò chơi. Trong những năm gần đây, một nhánh mới của phần mềm trí tuệ nhân tạo gọi là mạng nơron nhân tạo, đã phát triển. Mạng nơron mô tả cấu trúc việc xử lý trong não bộ và cuối cùng tạo ra lớp phần mềm mới có thể nhận dạng các mẫu phức tạp và học từ “kinh nghiệm quá khứ”. 2. Công nghệ phần mềm Mục tiêu: Nắm được các định nghĩa công nghệ phần mềm. Định nghĩa công nghệ phân mềm Có nhiều định nghĩa công nghệ phần mềm được đưa ra: Bauer (1969): Công nghệ phần mềm là việc thiết lập và sử dụng các nguyên lý công nghệ đúng đắn để thu được phần mềm vừa kinh tế, tin cậy vừa làm việc hiệu quả trên các máy thực. Pamas (1987): Công nghệ phần mềm là việc xây dựng phần mềm nhiều phiên bản bởi nhiều người. Ghezzi (1991): Công nghệ phần mềm là một lĩnh vực của khoa học máy tính, liên quan đến xây dựng các hệ thống phần mềm vừa lớn vừa phức tạp bởi một hay một số nhóm kỹ sư. IEEE (1993) : Công nghệ phần mềm là: 1. Việc áp dụng phương pháp tiếp cận có hệ thống, bài bản và được lượng hoá trong phát triển vận hành và bào trì phần mềm. 2. Nghiên cứu các phương pháp tiếp cận nói trên. Pressman (1995): Công nghệ phần mềm là sự phát triển của công nghệ phần cứng và hệ thống. Nó là một tập gồm ba yếu tố chủ chốt: Phương pháp, công cụ và thủ tục giúp người quản lý kiểm soát được tiến trình phát triển phần mềm và cung cấp cho người hành nghề một nền tảng để xây dựng phần mềm chất lượng cao có hiệu quả. Các phương pháp công nghệ phần mềm đưa ra các ‘‘cách làm” về mặt kỹ thuật để xây dựng phần mềm. Các phương pháp này bao gồm một phạm vi các nhiệm vụ, bao gồm: Lập kế hoạch và ước lượng dự án, phân tích yêu cầu hệ thống và phần mềm, thiết kế cấu trúc dữ liệu, kiến trúc chương trình và thủ tục thuật toán, mã hoá, kiểm thử và bảo trì. Các phương pháp cho kỹ nghệ phần mềm thường đưa ra các ký pháp đồ hoạ hay hướng ngôn ngữ đặc biệt và đưa ra một tập tiêu chuẩn về chất lượng phần mềm. Các công cụ công nghệ phần mềm cung cấp sự hỗ trợ tự động hay bán tự động cho các phương pháp. Ngày nay đã có các công cụ hỗ trợ cho từng phương pháp được nêu trên. Khi các công cụ được tích hợp đến mức thông tin do công cụ này tạo ra có thể được dùng cho các công cụ khác thì hệ thống hỗ trợ cho việc phát triển phần mềm được thiết lập và còn được gọi là công nghệ phần mềm có sự trợ 12
  14. giúp của máy tính CASE. CASE: tổ hợp phần mềm, phần cứng và cơ sở dữ liệu kỹ nghệ phần mềm (cấu trúc dữ liệu chứa các thông tin quan trọng về việc phân tích, thiết kế, mã hoá và kiểm thử) để tạo ra môi trường kỹ nghệ phần mềm, điều này tương tự như thiết kế có máy tính hỗ trợ/kỹ nghệ có máy tính hỗ trợ (CAD/CASE) cho phần cứng. Các thủ tục công nghệ phần mềm là chất keo dán các phương pháp và công cụ lại với nhau, làm cho chúng được sử dụng hợp lý và đúng hạn trong việc phát triển phần mềm máy tính. Thủ tục xác định trình tự các phương pháp sẽ được áp dụng, những sản phẩm cần bàn giao (tài liệu, báo cáo, mẫu ) cần cho việc kiểm soát để đảm bảo chất lượng và điều hoà thay đổi, xác định những cột mốc để cho người quản lý phần mềm nắm được tiến độ. CÂU HỎI VÀ BÀI TẬP 1. Định nghĩa phần mềm.? 2. Các đặc tính của phần mềm.? 3. Thế nào là một phần mềm tốt.? 4. Ứng dụng của phần mềm? 5. Công nghệ phần mềm là gì?. 13
  15. CHƯƠNG 2: MỘT SỐ MÔ HÌNH VÒNG ĐỜI PHÁT TRIỂN PHẦN MỀM Mã chương: MHLTV 15.2 Mục tiêu: Sau khi học xong bài học này, sinh viên có khả năng: - Nắm được cách giai đoạn của vòng đời phần mềm - Nắm được quy trình phát triển phần mềm - Hiểu được một số mô hình vòng đời phát triển phần mềm - Nêu được đặc trưng cơ bản và cách thức thực hiện của một số mô hình vòng đời phát triển phần mềm. - Trình bày được các mô hình vòng đời phát triển phần mềm. - Phân biệt được ưu nhược điểm của mỗi mô hình. 1. Các khái niệm cơ bản Mục tiêu: - Nắm được cách giai đoạn của vòng đời phần mềm, quy trình phát triển phần mềm 1.1. Vòng đời phần mềm Vòng đời phần mềm là thời kỳ tính từ khi phần mềm được sinh ra cho đến khi chết đi (từ lúc hình thành đáp ứng yêu cầu, vận hành bảo dưỡng cho đến khi loại bỏ không được sử dụng). Quy trình phát triển phần mềm bao gồm 3 giai đoạn chính: Xác định, phát triển và bảo trì. Ba giai đoạn này xuất hiện trong tất cá các công việc phát triển phần mềm, không phụ thuộc vào miền ứng dụng, cỡ dự án hay độ phức tạp. ■ Giai đoạn xác định : Trong giai đoạn xác định, người phát triển phần mềm tập trung vào xác định thông tin nào cần được xử lý, chức năng và hiệu năng nào cần có, giao diện nào cần được thiết lập, ràng buộc thiết kế nào hiện có và tiêu chuẩn hợp lệ nào cần có để xác định ra một hệ thống thành công. Yêu cầu chủ chốt của hệ thống và phần mềm được xác định. Mặc dù các phương pháp được áp dụng trong giai đoạn xác định thay đổi tuỳ theo khuôn cảnh công nghệ phần mềm, nhưng có ba bước luôn xuất hiện dưới dạng: Phân tích hệ thống-. Xác định ra vai trò của từng phần từ trong hệ thống dựa trên máy tính, chỉ ra vai trò của phần mềm. Lập kế hoạch dự án phần mềm: Khi phạm vi của phần mềm được thiết lập, rủi ro được phân tích, tài nguyên được cấp phát, chi phí được ước lượng thì phải xác định nhiệm vụ công việc và lập lịch. Phân tích yêu cầu: Phạm vi được xác định cho phần mềm sẽ đưa ra chiều hướng nhưng cần phải có thêm việc xác định chi tiết lĩnh vực thông tin và chức năng trước khi công việc có thể bắt đầu. ■ Giai đoạn phát triển : Trong khi xác định, người phát triển cố gắng xác định cách cấu trúc dữ liệu và kiến trúc phần mềm cần được thiết kế, cách các chi tiết thủ tục được cài đặt, cách dịch thiết kế vào ngôn ngữ lập trình hay ngôn ngữ phi thủ tục và cách thực hiện kiểm thử. Phưong pháp được áp dụng trong giai đoạn phát triển sẽ thay đổi nhưng có 3 bước đặc thù bao giờ cũng xuất hiện dưới dạng: Thiết kế phần mềm: Thiết kế dịch các yêu cầu về phần mềm thành một tập hợp các biểu diễn (dựa trên đồ hoạ, bảng hay ngôn ngữ) mô tả cấu trúc dữ liệu, kiến trúc, thủ tục thuật toán và đặc trưng giao diện. Mã hoá: Các biểu diễn thiết kế phải được dịch thành ngôn ngữ nhân tạo (ngôn 14
  16. ngữ có thể là ngôn ngữ lập trình quy ước hoặc ngôn ngữ phi thủ tục dùng trong ngôn ngữ thế hệ 4 - 4GT) mà kết quả sẽ tạo ra là các lệnh thực hiện được trên máy tính. Bước mã hoá thực hiện việc này. Kiểm thử phần mềm: Mỗi khi phần mềm đã được cài đặt dưới dạng mã máy thực hiện được cần phải kiểm thử nó để phát hiện các khiếm khuyết khi vận hành, trong logic và trong cài đặt. ■ Giai đoạn bảo trì : Tập trung vào những thay đổi gắn với việc sửa lỗi, thích ứng khi môi trường phần mềm tiến hoá và nâng cao do yêu cầu người dùng. Giai đoạn bảo trì áp dụng lại các bước của giai đoạn xác định và phát triển nhưng làm việc đó trong hoàn cảnh phần mềm hiện có. Có ba kiểu thay đổi gặp phải trong giai đoạn bảo trì: Sửa đổi: Phần mềm luôn có lỗi tiềm tàng. Trong quá trình sử dụng, cho dù các hoạt động bảo đảm chất lượng phần mềm là tốt nhất, khách hàng vẫn có thể sẽ phát hiện ra khiếm khuyết trong phần mềm. Bảo trì sửa đổi thay đổi phần mềm để sửa các khiếm khuyết. Thích nghi: Qua thời gian, môi trường ban đầu để phát triển phần mềm có thể thay đổi. Bảo trì để thích nghi thực hiện việc sửa đổi phần mềm để nó thích hợp với những thay đổi môi trường bên ngoài. Nâng cao:. Khi ph ần mềm được dùng, khách hàng/người dùng sẽ nh ận ra những chức năng phụ có lợi. Bảo trì hoàn thiện mở rộng phần mềm ngoài các yêu cầu chức năng gốc của nó. Bên cạnh những hoạt động cơ bản này, một số công ty còn xem xét tới kỹ nghệ ngược. Dùng một tập riêng các công cụ CASE, phần mềm cũ được kỹ nghệ hoá ngược lại để cho người dùng có thể hiểu và cải tiến sự làm việc bên trong của nó. 1.2. Quy trình phát triển phần mềm Một quy trình phát triển phần mềm có thể được mô tá như hình 2.1. Common Process Framework Framework Activities Umbrella activities Hình 2.1.Quy trình phần mềm Một khung quy trình chung (Common Process Framework) được thiết lập bằng cách xác định một số các hoạt động khung (Frame Activities) có khả năng áp dụng cho mọi dự án phần mềm không phân biệt kích cỡ, độ phức tạp. Tập nhiệm vụ công việc (task sets) - tập hợp các công việc công nghệ phần mềm, các cột mốc dự án, sản phẩm và các điểm bảo đảm chất lượng - cho phép các hoạt động khung thích ứng với các đặc tính của dự án phần mềm và yêu cầu của đội dự án. Cuối cùng các hoạt động bao trùm (umbrella activities) được coi như các bảo đảm cho chất lượng phần mềm, quản lý cấu hình phần mềm, bảo trì - bao trùm mô hình quy trình. Các hoạt động bao trùm độc lập với bất cứ hoạt động khung nào và diễn ra trong suốt quy trình. 15
  17. 2. Một số mô hình vòng đời phát triển phần mềm Mục tiêu: Hiểu được một số mô hình vòng đời phát triển phần mềm. 2.1. Mô hình tuyến tính Điển hình là mô hình vòng đời cổ điển bao gồm các hoạt động sau: Hình 2.2. Mô hình tuyến tính Công nghệ học/hệ thống/thông tin và mô hình hoá: Phần mềm là một phần trong hệ thống lớn, công việc bắt đầu bằng cách thiết lập các yêu cầu cho các thành phần hệ thống sau đó ánh xạ một số tập con các yêu cầu sang phần mềm trong quá trình tương tác giữa phần cứng, con người và cơ sở dữ liệu. Phân tích yêu cầu phần mềm : Hi ểu lĩnh vực thông tin, chức năng, hành vi tính năng và giao diện phần mềm sẽ phát triển. Yêu cầu cho cả hệ thống và phần mềm phải được tư liệu hoá và trao đổi với khách hàng. Thiết kế: Là quá trình nhiều bước tập trung vào 4 thuộc tính chủ y ếu của một chương trình: cấu trúc dữ liệu, kiến trúc phần mềm, biểu diễn giao diện, chi tiết thủ tục (thuật toán). Giống như các yêu c ầu thiết kế c ũng cần tư li ệu hoá và là một phần quan trọng của cấu trúc phần mềm. Tạo mã/Lập trình: Chuyển thiết kế thành một chương trình bằng một ngôn ngữ nào đó. Nếu thiết kế được chi tiết hoá thì lập trình thuần tuý là cơ học. Hỗ trợ/bảo trì: Đáp ứng lại những thay đổi, nâng cấp phần mềm được phát triển theo sự thay đổi của nhu cầu, môi trường. Đây là một mô hình lâu đời nhất và được ứng dụng rộng rãi nhất trong công nghệ phần mềm nhưng mô hình này cũng bộc lộ một số nhược điểm sau: ■ Các dự án hiếm khi tuân theo dòng chảy tuần tự mà mô hình đề nghị. Bao giờ việc lặp lại cũng xuất hiện và nảy sinh các vấn đề khi áp dụng mô hình này. ■ Khách hàng thường không trình bày được tường minh các yêu cầu của mình, mà mô hình lại đòi hỏi điều này nên sẽ không đáp ứng được với những bất trắc tự nhiên tồn tại vào lúc bắt đầu dự án. ■ Khách hàng phải kiên nhẫn chờ đợi trong một thời gian nhất định mới có sản phẩm. Nếu phát hiện lỗi là một thảm họa. 2.2. Mô hình thuần thục khả năng Mô hình này do Software Engineering Institute (SE1) phát triển bao gồm 5 mức sau: Mức 1. Khởi đầu: Một số quy trình được xác định, sự thành công phụ thuộc vào các nỗ lực cá nhân. Mức 2. Lặp lại: Quy trình quản lý dự án cơ bản được thiết lập để theo vết của chi phí, lịch trình, chức năng. Công việc không phụ thuộc vào cá nhân, làm việc theo quy trình. Thành công dự án đáp ứng các ứng dụng cỡ nhỏ. Mức 3. Xác định: Toàn bộ quy trình phần mềm cho cả các hoạt động quản lý 16
  18. và công nghệ được tư liệu hoá, chuẩn hoá. Mức 4. Quản trị: Các độ đo chi tiết của quá trình phần mềm và chất lượng sản phẩm được thu thập. Toàn bộ quy trình và sản phẩm được điều khiển sử dụng các độ đo chi tiết này. Mức này bao gồm các đặc tính xác định ở mức 3. Mức 5. Tối ưu: Tiếp tục cải tiến quy trình sản xuất bằng cách lấy thông tin phản hồi và đưa ra công nghệ mới. SEI cũng đưa ra các lĩnh vực quy trình chủ yếu (key process areas -KPAs) với từng mức trên. KPAs mô tả các chức năng công nghệ phần mềm (ví dụ các kế hoạch dự án phần mềm, quản lý các yêu cầu) đáp ứng cho từng mức cụ thể. Mỗi KPA được xác định dựa trên các đặc tính chủ yếu sau: ■ Mục đích: Mục tiêu tổng thể mà mỗi KPA đạt được. ■ Cam kết: Yêu cầu cần có để đạt được mục đích, cung cấp các bằng chứng về ý muốn đạt được mục đích. ■ Khả năng: Những điều cho phép tổ chức đạt được cam kết. ■ Hoạt động: Các nhiệm vụ cụ thể cần thực hiện để đạt được chức năng của KPA. ■ Phương thức điều khiển thực hiện:Cách thức các hoạt động được điều khiển. ■ Phương thức kiểm tra thực hiện: Cách thức kiểm tra các hoạt động cho K.PA. 18 KPA được xác định trong các mô hình thuần thục được ánh xạ vào trong các mức độ thuần thục, bao gồm: - Mức 1: + Quản lý cấu hình phần mềm; + Bảo đảm chất lượng phần mềm; + Quản lý các nhà thầu phụ; + Theo vết dự án phần mềm; + Lập kế hoạch quản lý dự án phần mềm; + Quản lý yêu cầu. - Mức 2: + Rà soát lại nút mạng; + Điều phối trong nhóm; + Kỹ nghệ sản phẩm phần mềm; + Quản lý phần mềm tích hợp; + Chương trình đào tạo; + Xác định quy trình tổ chức; + Tập trung quy trình tổ chức - Mức 3: + Quản lý chất lượng phần mềm; + Quản lý quy trình số lượng; - Mức 4 : + Quản lý thay đổi quy trình; + Quản lý thay đổi công nghệ; + Phòng ngừa khiếm khuyết. 2.3. Mô hình chế thử Trong nhiều trường hợp, khách hàng đã xác định một tập các mục tiêu tổng quát cho phần mềm, nhưng còn chưa xác định đầu vào, xử lý hay yêu cầu đầu ra hoặc trong các trường hợp khác, người phát triển chưa chắc chắn về tính hiệu quả của thuật toán, việc thích nghi hệ điều hành hay giao diện người - máy cần có. Đối với các trường hợp này, việc làm bản mẫu cho công nghệ phần mềm là cách tiếp cận tốt nhất. 17
  19. Mô hình chế thử là một tiến trình giúp người phát triển phần mềm có khả năng tạo ra một mô hình cho phần mềm cần phải xây dựng. Mô hình này có thể là một trong 3 dạng: ■ Bản mẫu trên giấy hay mô hình dựa trên PC mô tả giao diện người máy giúp cho người dùng hiểu cách các tương tác xuất hiện. ■ Bản mẫu làm việc cài đặt một tập con các chức năng của phần mềm mong muốn. ■ Một chương trình đã có thực hiện một phần hay tất cả các chức năng mong muốn nhưng cần cải tiến thêm các tính năng khác tuỳ theo nỗ lực phát triển mới. Các sự kiện của việc làm bản mẫu được minh họa trong hình 2.3 Nghe khách Tạo sửa trình bày Khách kiểm tra bản mẫu Giống như các cách tiếp cận khác, việc làm bản mẫu bắt đầu với việc thu thập yêu cầu phần mềm. Người phát triển và khách hàng gặp nhau và xác định các mục tiêu tổng thể của phần mềm, xác định các yêu cầu nào đã biết, và miền nào bắt buộc phải xác định thêm, sau đó đến việc “thiết kế nhanh”. Thi ết kế nhanh t ập trung vào việc biểu diễn các khía cạnh của phần mềm thấy được đối với người dùng (như cách đưa vào và định dạng đưa ra). Thiết kế nhanh d ẫn tới việc xây dựng bản mẫu. Bản mẫu được khách hàng/người dùng đánh giá và được dùng để làm mịn dần các yêu cầu đối với phần mềm cần phát triển. Tiến trình được lặp đi lặp lại cho tới khi bản mẫu được vi chỉnh thỏa mãn nhu cầu của khách hàng, đồng thời cũng giúp cho người phát triển hiểu được kỹ hơn cần phải thực hiện nhu cầu như thế nào. Một cách lý tưởng, bản mẫu phục vụ như một cơ chế để xác định các yêu cầu phần mềm. Nếu một bản mẫu làm việc được xây dựng thì người phát triển có thể dùng được các đoạn chương trình đã có hay áp dụng các công cụ (như bộ sinh báo cáo, bộ quản lý cửa sổ, ) để nhanh chóng sinh ra chương trình làm việc. 2.4. Mô hình phát triển ứng dụng nhanh (RAD) Là quy trình phát triển phần mềm gia tăng từng bước với chu trình phát triển ngắn từ 60 đến 90 ngày. Mô hình này xây dựng dựa trên hướng thành phần với khả năng tái sử dụng cao. Mô hình gom một số nhóm, mỗi nhóm làm một RAD theo các pha sau: Mô hình nghiệp vụ: Luồng thông tin được mô hình hoá để trả lời các câu hỏi sau đây: ■ Thông tin nào điều khiển xử lý nghiệp vụ? ■ Thông tin nào được sinh ra? ■ Ai sinh ra nó? ■ Thông tin đi đến đâu? 18
  20. ■ Ai xử lý chúng? Hình 2.4. Mô hình phát triển ứng dụng nhanh Mô hình dữ liệu:. Các đối tượng dữ liệu cần có để hỗ trợ nghiệp vụ, định nghĩa thuộc tính các đối tượng và xác lập mối quan hệ giữa các đối tượng. Mô hình xử lý: Các đối tượng dữ liệu được chuyển sang luồng thông tin thực hiện chức năng nghiệp vụ. Tạo mô tả xử lý để cập nhật (thêm, sửa, xoá, khôi phục) từng đối tượng dữ liệu. Tạo ứng dụng: Dùng các kỹ thuật thế hệ thứ 4 để tạo phần mềm từ các thành phần đã có sẵn hoặc tạo ra các thành phần có thế tái sử dụng sau này. Dùng các công cụ tự động để xây dựng phần mềm. Kiểm thử và đánh giá: Kiểm thử các thành phần mới và kiểm chứng lại mọi giao diện (các thành phần cũ được kiểm chứng và dùng lại). Nếu một ứng dụng nghiệp vụ có thể module hoá sao cho các chức năng chính được thực hiện trong phạm vi ba tháng, khi đó mô hình RAD sẽ là sự lựa chọn phù hợp. Mỗi chức năng chính sẽ được thực hiện bởi một đội RAD riêng rẽ sau đó tích hợp tất cả chúng lại. Tuy nhiên RAD cũng có các hạn chế sau: ■ Cần nguồn nhân lực dồi dào để tạo ra các nhóm chức năng chính. ■ Yêu cầu hai bên giao kèo trong thời gian ngắn phải có phần mềm hoàn chỉnh, thiếu trách nhiệm một bên có thể làm dự án đổ vỡ. ■ RAD không phải là tốt trong mọi ứng dụng, nhất là các ứng dụng không thể module hoá hoặc đòi hỏi tính năng cao. 19
  21. ■ Mạo hiểm kỹ thuật cao thì không nên dùng RAD. 2.5. Mô hình xoắn ốc Mô hình xoắn ốc cho kỹ nghệ phần mềm đã được phát triển bao gồm các tính năng tốt nhất của cả mô hình tuyến tính lẫn mô hình chế thử trong khi vẫn bổ sung thêm các yếu tố mới - phân tích rủi ro - yếu tố bị thiếu trong các mô hình này. Mô hình này được biểu thị theo đường xoắn ốc, chia thành các lĩnh vực nhiệm vụ sau: ■ Giao tiếp khách hàng: Thiết lập mối quan hệ hiệu quả giữa khách hàng và nhà phát triền. ■ Lập kế hoạch: Xác định các tài nguyên, thời gian và các thông tin dự án liên quan khác. ■ Phân tích rủi ro: Phân tích cả rủi ro kỹ thuật và rủi ro quản lý. ■ Kỹ nghệ: Xây dựng một hay nhiều mô tả cho ứng dụng. ■ Xây dựng và xuất xưởng: Xây dựng, kiểm thử, cài đặt và cung cấp các hỗ trợ người dùng (các tài liệu và đào tạo). ■ Khách hàng đánh giá: Các phản hồi của khách hàng dựa trên đánh giá phần mềm tạo ra trong giai đoạn kỹ nghệ và thực hiện trong giai đoạn cài đặt Với mỗi lần lặp xung quanh xoắn ốc (bắt đầu từ tâm và đi ra ngoài theo chiều kim đồng hồ) người ta lại xây dựng thêm các phiên bản được hoàn thiện dần của phần mềm. Trong mạch xoắn thứ nhất, các mục tiêu, phương án và ràng buộc được xác định, các rủi ro được định rõ và phân tích. Tại các vòng xung quanh xoắn ốc, cao điểm của phân tích rủi ro là quyết định tiến hành hay không tiến hành. Nếu rủi ro quá lớn có thể sẽ đình chỉ dự án. Tuy nhiên, trong hầu hết trường hợp, việc đi theo xoắn ốc vẫn tiếp tục, với mỗi con đường lại chuyển người phát triển đi xa hơn, hướng tới mô hình hoàn chình hơn của hệ thống và sau cùng đưa đến chính bản thân hệ thống vận hành. Mô hình xoắn ốc là cách tiếp cận thực tế nhất với việc phát triển các hệ thống và phần mềm có quy mô lớn. Người ta dùng cách tiếp cận tiến hoá đối với kỹ nghệ phần mềm để làm cho người phát triển, khách hàng hiểu được và phản ứng được rủi ro ở mỗi mức tiến hoả. Người ta dùng cách làm bản mẫu như một cơ chế làm giảm bớt rủi ro, nhưng điều quan trọng hơn để làm cho người phát triển áp dụng được cách tiếp cận làm bản mẫu tại mọi giai đoạn tiến hoá của sản phẩm. Nó duy 1. Xác định mức tiếp của cổ đông 20
  22. trì cách tiếp cận từng bước một cách có hệ thống theo cách tiếp cận vòng đời cổ điển gợi ý nhưng tổ hợp cách tiếp cận này vào một khuôn khổ lặp lại, phản ánh được sát thực hơn thế giới thực. Mô hình xoắn ốc yêu cầu việc xem xét trực tiếp các rủi ro kỹ thuật tại mọi giai đoạn của dự án, và nếu áp dụng đúng thì nó sẽ làm giảm rủi ro trước khi chúng trở thành vấn đề thực sự. Tuy nhiên, giống như các mô hình khác, mô hình xoắn ốc vẫn có các hạn chế sau: Khó thuyết phục được khách hàng lớn rằng cách tiếp cận tiến hoá sẽ kiểm soát được. Nó đòi hỏi tri thức chuyên gia đánh giá rủi ro chính xác và dựa trên tri thức chuyên gia này mà đạt được thành công. Nếu một rủi ro chính không được phát hiện ra, vấn đề sẽ xuất hiện. Bản thân mô hình này còn tương đối mới và còn chưa được sử dụng rộng rãi như mô hình tuyến tính hay mô hình chế thử. cần phải có thêm thời gian trước khi người ta có thể xác định được tính hiệu quả của mô hình này với sự chắc chắn an toàn. 2.6. Mô hình theo thành phần Mô hình này gắn với những công nghệ hướng đối tượng thông qua việc tạo các lớp có chứa dữ liệu và các giải thuật xử lý dữ liệu. Nếu thiết kế chính xác, các lớp hướng đối tượng sẽ được sử dụng lại trong các ứng dụng và các cấu trúc hệ thống máy tính khác nhau. Mô hình này có nhiều điểm tương đương với mô hình xoắn ốc. Tuy nhiên, các mô hình lắp ráp thành phần tạo nên ứng dụng từ các thành phần phần mềm đã được đóng gói trước (đôi khi gọi là các lớp). Các hoạt động kỹ nghệ bắt đầu bằng việc xác định các lớp. Công việc này được thực hiện bằng cách kiểm tra các dữ liệu được xử lý trong ứng dụng và các giải thuật được ứng dụng để hoàn thành các thao tác này. Các dữ liệu và thuật toán tương ứng được đóng gói trong các lớp. Mô hình này tái sử dụng các thành phần từ các thư viện/kho các lớp và sẽ tiết kiệm được 70% thời gian, 84% giá thành, chỉ số hiệu suất so với chuẩn công nghiệp là 26,2/16,9. 2.7. Mô hình hình thức Mô hình này còn được gọi là mô hình phòng sạch, tập hợp các công cụ đặc tả toán học phần mềm máy tính từ khâu định nghĩa phát triển đến kiếm soát. Khi sử dụng mô hình này để phát triển, nó cung cấp các kỹ thuật để loại bỏ các vấn đề khó giải quyết khi sử dụng các mô hình khác. Sự mập mờ không hoàn chỉnh, không nhất quán sẽ được tìm ra và giải quyết dễ dàng. Khi sử dụng mô hình này trong thiết kế nó cung cấp một nền tảng kiểm soát chương trình. Do đó cho phép các kỹ sư phần mềm phát hiện và sửa các lỗi khó. Mô hình này thường được áp dụng trong phát triển các phần mềm có độ an toàn rất cao trong y tế, hàng không Tuy nhiên sử dụng mô hình này cũng vấp phải các hạn chế sau: ■ Phát triển một mô hình hình thức tiêu tốn nhiều thời gian và kinh phí. ■ Do chỉ có một số ít các nhà phát triển phần mềm có nền tàng cần thiết để áp dụng các phương pháp hình thức nên khi phát triển mô hình này yêu cầu phải đào tạo các nhà phát triển. ■ Sử dụng mô hình này sẽ gặp phải khó khăn khi làm việc, giao tiếp với khách hàng không có nhiều kiến thức về kỹ thuật và chuyên môn. 2.8. Các công nghệ thế hệ thứ 4 Thuật ngữ công nghệ thử 4 bao gồm một phạm vi rộng các công cụ công nghệ 21
  23. phần mềm có một điểm chung: mỗi công việc đều cho phép người phát triển phần mềm xác định một số đặc trưng phần mềm ở mức cao. Sau đó công cụ đó tự động sinh mã chương trình gốc theo nhu cầu của người phát triền. Các công nghệ thế hệ thứ 4 tập trung vào khả năng xác định phần mềm đối với một máy ở mức độ gần với ngôn ngữ tự nhiên hay dùng một ký pháp có ý nghĩa. Hiện nay, một môi trường phát triển phần mềm hỗ trợ cho các công nghệ thứ 4 bao gồm một số hay tất cả các công cụ sau: ngôn ngữ phi thủ tục cho truy vấn cơ sở dữ liệu, bộ sinh báo cáo, xử lý dữ liệu, tương tác màn hình, tạo mã nguồn, khả năng đồ họa bậc cao, khả năng bảng tính, khả năng giao diện Web. Giống như các mô hình khác, 4GT bắt đầu từ bước thu thập yêu cầu. Một cách lý tường, khách hàng sẽ mô tả các yêu cầu và các yêu cầu đó sẽ được dịch trực tiếp thành bản mẫu vận hành được. Nhưng điều này thực tế không thực hiện được. Khách hàng nhiều khi không chắc chắn mình cần gì, mơ hồ trong việc xác định các sự kiện đã biết, không có khả năng hay không xác định thông tin cần cho công cụ 4GT thực hiện. Hơn nữa, các công cụ 4GT hiện nay cũng chưa đủ độ tinh vi thích ứng với ngôn ngữ tự nhiên thật sự. Với các ứng dụng nhỏ, có thể chuyển trực tiếp từ bước thu thập yêu cầu sang cài đặt bằng cách dùng ngôn ngữ thế hệ thứ 4. Tuy nhiên, với những nỗ lực lớn, cần phải phát triền một chiến lược thiết kế cho hệ thống, ngay cả nếu có dùng 4GT. Việc dùng 4GT thiếu thiết kế với các dự án lớn sẽ gây khó khăn (chất lượng kém, khó bảo trì, người dùng khó chấp nhận). Việc cài đặt dùng 4GT giúp cho người phát triển phần mềm biểu diễn được các kết quả mong muốn theo cách phát sinh tự động chương trình tính ra chúng. Để biến đổi một cài đặt 4GT thành một sản phẩm, người phát triển phải trải qua việc kiểm thử, xây dựng các tài liệu có ý nghĩa và thực hiện các hoạt động chuyển tiếp cần có trong mô hình phần mềm khác. Bên cạnh đó, phần mềm được phát triển theo 4GT phải được xây dựng để việc bào trì có thể được tiến hành nhanh chóng. Có nhiều tranh cãi về mô hình này. Người ủng hộ cho là 4GT làm giảm đáng kể thời gian phát triển phần mềm và làm tăng hiệu suất của người xây dựng phần mềm. Người phản đối cho rằng các công cụ 4GT hiện tại nhiều khi phức tạp hơn các ngôn ngữ lập trình khác, chương trình gốc do các công cụ này tạo ra không hiệu quả và việc bảo trì các hệ thông phần mềm lớn dùng 4GT sẽ phát sinh ra các vấn đề mới. Có thể tóm tắt cách tiếp cận 4GT như sau: ■ Lĩnh vực ứng dụng hiện tại cho 4GT mới chỉ giới hạn trong các ứng dụng thông tin nghiệp vụ đặc biệt, việc phân tích thông tin và làm báo cáo là nhân tố chủ chốt cho các cơ sở dữ liệu lớn. Các công cụ CASE hỗ trợ việc dùng 4GT để tự động sinh ra khung chương trình cho các ứng dụng công nghệ và thời gian thực. ■ Dữ liệu sơ bộ thu thập từ các công ty có dùng 4GT cho thấy thời gian cần thiết để tạo ra phần mềm được giảm đáng kể đối với các ứng dụng vừa và nhỏ và khối lượng thiết kế, phân tích cho các ứng dụng nhỏ cũng giảm bớt. ■ Việc dùng 4GT cho các nỗ lực phát triển phần mềm lớn đòi hỏi tập trung phân tích, thiết kế và kiểm thử nhiều để tiết kiệm thời gian. Tóm lại, các công nghệ thế hệ thứ tư đã trở thành một phần quan trọng của việc phát triển phần mềm trong lĩnh vực ứng dụng hệ thông tin và rất có thể sẽ được sử dụng rộng rãi trong các ứng dụng công nghệ và thời gian thực. 22
  24. 2.9. Mô hình chữ V Mô hình chữ V được thực hiện từ trái sang phải, mô tả dãy các hoạt động phát triển và kiểm thử cơ bản. Mô hình này rất có giá trị vì nó nêu bật sự tồn tại của các mức kiểm thử và mô tả cách mỗi mức kiểm thử này liên quan đến một pha phát triển khác nhau Kiểm thử đơn vị dựa trên mã và được thực hiện đầu tiên bởi người phát triển để chứng minh các phần nhỏ nhất của mã thực thi thích hợp. Kiểm thử tích hợp chứng minh hai hay nhiều đơn vị hoặc các công việc tích hợp phối hợp cùng nhau chính xác và có xu hướng tập trung vào các giao diện được mô tả trong các mức thiết kế cao. Khi mọi đơn vị và các tích hợp của nó được kiểm thử, kiểm thử hệ thống được tiến hành để chứng tỏ ràng hệ thống làm việc end - to - end giống sản phẩm, cung cấp các chức năng nghiệp vụ được mô tả trong thiết kế mức cao. Khi tổ chức kỹ thuật hoàn thành công việc kiểm thử, tức là thực tế đã đạt được yêu cầu nghiệp vụ đặt ra. Tuy nhiên có nhiều người nghi ngờ về tính phù hợp của mô hình này. Mô hình này dựa trên một tập các bước phân tích theo một trình tự cụ thể nhưng không phản ánh thực tế. Mô hình chữ V bắt đầu bằng các yêu cầu, thậm chí ngay cả khi nhiều dự án thiếu các yêu cầu chính xác. Mô hình chữ V nhắc nhở chúng ta kiểm thử mỗi khi thực hiện một pha phát triển nhưng không mô tả chúng ta cần làm gì. CÂU HỎI VÀ BÀI TẬP 1. Định nghĩa công nghệ phần mềm? 2. Vòng đời phần mềm? 3. Quy trình phát triển phần mềm? 4. Một số mô hình vòng đời phát triển phần mềm? 23
  25. CHƯƠNG 3: XÁC ĐỊNH VÀ ĐẶC TẢ YÊU CẦU Mã chương: MHLTV 15.3 Mục tiêu: Sau khi học xong bài học này, sinh viên có khả năng: -Nêu được khái niệm, mục đích yêu cầu phần mềm, đặc tả yêu cầu phần mềm. -Nêu được các ngôn ngữ đặc tả yêu cầu. -Trình bày được quy trình xác định yêu cầu phần mềm. -Trình bày được các kỹ thuật phát hiện và phân tích yêu cầu, các kỹ thuật đặc tả yêu cầu. - Vận dụng được kỹ thuật xác định và đặc tả yêu cầu phù hợp để giải quyết bài toán phần mềm thực tế. 1. Tổng quan về yêu cầu phần mềm Mục tiêu : Nắm được khái niệm yêu cầu phần mềm và phân loại được các yêu cầu phần mềm. 1.1. Khái niệm yêu cầu phần mềm Yêu cầu phần mềm là tất cả các yêu cầu về phần mềm do khách hàng - người sử dụng đưa ra gồm: Các chức năng của phần mềm Hiệu năng của phần mềm. Các yêu cầu về thiết kế và giao diện. Các yêu cầu đặc biệt khác. 1.2. Phân loại các yêu cầu phần mềm Thông thường các yêu cầu phần mềm được phân thành 4 loại sau: ■ Yêu cầu về phần mềm. ■ Yêu cẩu về phần cứng. ■ Yêu cầu về dữ liệu. ■ Yêu cầu về con người. Mục đích của yêu cầu phần mềm là xác định được phần mềm đáp ứng các yêu cầu và mong muốn của khách hàng, người sử dụng. Ta cần phải xác định yêu cầu phần mềm vì khách hàng chỉ có ý tưởng mơ hồ về phần mềm cần xây dựng để phục vụ công việc của họ. Chúng ta phải tiếp thu các ý tưởng và kiên trì theo đuổi để đi từ các ý tưởng mơ hồ đó cho đến khi tạo ra được phần mềm có đầy đủ các tính năng cần thiết. Trong quá trình thiết kế, khách hàng rất hay thay đổi các đòi hỏi của mình vì vậy chúng ta cần tiếp tục nắm bắt các thay đổi đó và sửa đổi các mô hình cho hợp lý. 2. Xác định yêu cầu phần mềm Mục tiêu: Trình bày được quy trình xác định yêu cầu phần mềm. 2.1. Nội dung xác định yêu cầu phần mềm ■ Phát hiện các yêu cầu phần mềm. ■ Phân tích các yêu cầu và thương lượng với khách hàng. ■ Đặc tả các yêu cầu phần mềm. ■ Mô hình hoá hệ thống. ■ Kiểm tra tính hợp lý các yêu cầu phần mềm. ■ Quản lý các yêu cầu phần mềm. 2.2 Phát hiện các yêu cầu phần mềm Ta phải xác định các vấn đề sau: 24
  26. ■ Phạm vi của phần mềm. ■ Hiểu rõ phần mềm. ■ Các thay đổi của hệ thống. Phương pháp xác định yêu cầu phần mềm: ■ Xác định các phương pháp sử dụng phát hiện các yêu cầu phần mềm như phỏng vấn, làm việc nhóm, các buổi họp, gặp gỡ đối tác. ■ Tìm kiếm nhân sự (chuyên gia, người sử dụng) có hiểu biết sâu sắc nhất, chi tiết nhất về hệ thống giúp chúng ta xác định yêu cầu phần mềm. ■ Xác định môi trường kỹ thuật. ■ Xác định các ràng buộc lĩnh vực. ■ Thu hút sự tham gia của nhiều chuyên gia, khách hàng để có được các quan điểm xem xét phần mềm khác nhau từ phía khách hàng Sản phẩm của phát hiện yêu cầu phần mềm: ■ Bảng kê các đòi hỏi và chức năng khả thi của phần mềm. ■ Bảng kê phạm vi ứng dụng của phần mềm. ■ Mô tả môi trường kỹ thuật của phần mềm. ■ Bảng kê các tập hợp các kịch bản sử dụng phần mềm. ■ Các nguyên mẫu xây dựng, phân tích hay sử d ụng trong phần mềm (nếu có). ■ Danh sách nhân sự tham gia vào quá trình phát triển các yêu cầu phần mềm kể cả các nhân sự từ phía công ty khách hàng. 25
  27. 2.3. Phân tích các yêu cầu phần mềm và thương lượng với khách hàng Gồm các công việc sau: • Phân loại các yêu cầu phần mềm và sắp xếp chúng theo các nhóm liên quan. • Khảo sát tỷ mỷ từng yêu cầu phần mềm trong mối quan hệ của nó với các yêu cầu phần mềm khác. ■ Thẩm định từng yêu cầu phần mềm theo các tính chất: phù hợp đầy đủ rõ ràng, không trùng lặp. ■ Phân cấp các yêu cầu phần mềm dựa trên nhu cầu và đòi hỏi của khách hàng/người sử dụng. ■ Thẩm định từng yêu cầu phần mềm để xác định chúng có khả năng thực hiện được trong môi trường kỹ thuật hay không, có khả năng kiểm định các yêu cầu phần mềm hay không. ■ Thẩm định rủi ro có thể xảy ra với từng yêu cầu phần mềm. ■ Đánh giá thô (tương đối) về giá thành và thời gian thực hiện của từng yêu cầu phần mềm trong giá thành sản phẩm phần mềm và thời gian thực hiện phần mềm. ■ Giải quyết tất cả các bất đồng về yêu cầu phần mềm với khách hàng/người sử dụng trên cơ sở thảo luận và thương lượng các yêu cầu đặt ra. 3. Đặc tả yêu cầu Mục tiêu: Nắm được cách xây dựng các tài liệu tạo thành hồ sơ đặc tả. Đây là công việc xây dựng các tài liệu trong đó có thể sử dụng các công cụ như: mô hình hoá, mô hình toán học hình thức, tập hợp các kịch bản sử dụng, các nguyên mẫu. Chất lượng của hồ sơ đặc tả được đánh giá qua các tiêu trí: ■ Tính rõ ràng, chính xác. ■ Tính phù hợp. ■ Tính đầy đủ, hoàn thiện. Các thành phần của hồ sơ đặc tả: ■ Đặc tả phi hình thức (informal specifications) được viết bàng ngôn ngữ tự nhiên. ■ Đặc tả hình thức (formal specifications) được viết bằng tập các ký pháp có các quy định về cú pháp và ngữ nghĩa rất chặt chẽ. • Đặc tả vận hành chức năng (operational specifications) mô tả các hoạt động của hệ thống phần mềm sẽ xây dựng. ■ Đặc tả mô tả (descriptive specifications) đặc tả các đặc tính đặc trưng của phần mềm. ■ Đặc tả chức năng (functional specifications): thông thường khi đặc tả chức năng của phần mềm người ta sử dụng các công cụ sau: - Biểu đồ luồng dữ liệu. - Máy trạng thái hữu hạn. - Mạng Petri. Ta hãy xét lần lượt từng loại công cụ: Biểu đồ luồng dữ liệu (DFD) Diễn tả tập hợp các chức năng xử lý của hệ thống cùng với mối liên hệ của chúng trước và sau chức năng xử lý và chuyển giao dữ liệu cho nhau. Biểu đồ luồng dữ liệu là một mô tả động cung cấp một quan sát tổng thể về hệ thống. Hạn chế của DFD: 26
  28. ■ Ý nghĩa các ký pháp sử dụng được xác định bởi các định danh lựa chọn của khách hàng. ■ Trong DFD không xác định rõ các hướng thực hiện. ■ DFD không xác định rõ sự đồng bộ giữa các chức năng/module. Máy trạng thái hữu hạn Máy trạng thái hữu hạn chứa: ■ Tập các trạng thái Q. ■ Tập các đầu vào I. ■ Các chức năng chuyển tiếp. S:Qxl Các yêu cầu của đặc tả tốt: ■ Dễ hiểu với người dùng, ít rắc rối. ■ Có ít quy ước khi mô tả. ■ Theo phong cách từ trên xuống (top - down). Dễ triển khai cho các pha sau của vòng đời: thiết kế hệ thống và thiêt kế chương trình, giao diện dễ làm, đảm bảo tính nhất quán. 4. Thẩm định yêu cầu Mục tiêu: Nắm được các nhiệm vụ của phân tích yêu cầu và các loại phân tích yêu cầu. 4.1. Nhiệm vụ của phân tích yêu cầu Phân tích yêu cầu là nhiệm vụ công nghệ phần mềm để bắc nhịp cầu qua lỗ hổng giữa việc cấp phát phần mềm mức hệ thống với thiết kế phần mềm. Phân tích phần mềm giúp cho người phân tích hệ thống xác định được chức năng và hiệu suất của phần mềm, chỉ ra giao diện của phần mềm với các phần tử hệ thống khác và thiết lập những ràng buộc thiết kế mà phần mềm phải đáp ứng. Việc phân tích yêu cầu phần mềm cho phép người kỹ sư thiết kế (người phân tích) tinh chế lại việc cấp phát phần mềm và xây dựng mô hình tiến trình, dữ liệu, và các lĩnh vực hành vi sẽ được phần mềm xừ lý. Việc phân tích cung cấp cho người thiết kế phần mềm một cách biểu diễn thông tin và chức năng có thể dịch thành thiết kế dữ liệu, kiến trúc và thủ tục. Cuối cùng, đặc tả yêu cầu cung cấp cho người phân tích và khách hàng các phương tiện để xác định về chất lượng khi phần mềm đã được xây dựng. Việc phân tích các yêu cầu phần mềm có thể chia thành 5 lĩnh vực: 1. Nhận thức vấn đề. 2. Đánh giá và tồng hợp. 3. Mô hình hoá. 4. Đặc tả. 5. Xét duyệt. Ban đầu, người phần tích nghiên cứu bản Đặc tả hệ thống (nếu có) và bản Kế hoạch dự kiến phần mềm. Điều quan trọng là hiểu phần mềm trong hoàn cảnh hệ thống và xem xét phạm vi ứng dụng phần mềm để thiết lập các ước lượng kế hoạch, tiếp đó, cần phải thiết lập trao đổi để người phân tích có thể nhận thức đúng được vấn đề. Người phân tích phải lập được mối quan hệ với cấp quản lý và nhân viên kỹ thuật của tổ chức người dùng/khách hàng và tổ chức phát triển phần mềm. Người quản lý dự án được coi là người điều phối, tạo điều kiện thuận lợi cho việc thiết lập đường trao đổi. Mục tiêu của người phân tích là nhận thức được các vấn đề cơ bản như người dùng/khách hàng đã cảm nhận. Việc đánh giá vấn đề và tổng hợp giải pháp là lĩnh vực chính tiếp theo của nỗ lực đối với người phân tích. Người phân tích phải đánh giá luồng và nội dung 27
  29. thông tin, xác định và soạn thảo các chức năng phần mềm, hiểu hành vi phần mềm theo hoàn cảnh của các sự kiện ảnh hưởng tới hệ thống, thiết lập các đặc trưng giao diện, xác định ra những ràng buộc thiết kế. Các nhiệm vụ này đều phục vụ cho việc mô tả vấn đề sao cho có thể tổng hợp vấn đề theo cách tiếp cận hay tống thể. Khi đã đánh giá được vấn đề hiện tại và thông tin mong muốn (đầu vào và đầu ra), người phân tích bắt đầu tổng hợp thành một hay nhiều giải pháp. Một hệ thống dựa trên thiết bị cuối trực tuyến sẽ giải quyết một tập vấn đề nhưng cần phải xem liệu nó có thích hợp với phạm vi đã được xác định trong bản kế hoạch phần mềm hay không đồng thời phải có một hệ cơ sở dữ liệu để mô phỏng cho khách hàng. Tiến trình ước lượng và tổng hợp được tiếp tục tiến hành cho đến khi cả người phân tích và khách hàng đều cảm thấy rằng phần mềm có thể thích hợp cho các bước phát triển kế tiếp. Thông qua việc ước lượng và tổng hợp giải pháp, người phân tích tập trung chủ yếu vào "cái gì" chứ không phải là “thế nào". Hệ thống tạo ra và sử dụng dữ liệu nào, hệ thống phải thực hiện chức năng nào, giao diện nào cần xác định và hệ thống nằm trong các ràng buộc nào? Trong hoạt động đánh giá và tổng hợp giải pháp, người phân tích tạo ra một mô hình hệ thống để hiểu rõ hơn luồng dữ liệu và điều khiển, xử lý chức năng, thao tác hành vi và nội dung thông tin. Mô hình này là nền tảng cho việc thiết kế phần mềm và là cơ sở cho việc tạo ra đặc tả về phần mềm. Cần lưu ý là không có được đặc tả chi tiết ở giai đoạn này. Khách hàng không chắc chắn mình muốn gì và người phân tích cũng không chắc cách tiếp cận cụ thể có thể thực hiện đúng chức năng và hiệu suất mong muốn hay không. Bởi những lý do này và nhiều lý do khác nữa, cần tiến hành một cách tiếp cận phân tích yêu cầu đó là làm bán mẫu. Khi đã mô tả được thông tin, chức năng, hiệu suất, hành vi và giao diện cơ sở, cần phải xác định các tiêu chuẩn hợp lệ để biểu diễn cách hiểu về việc cài đặt các tiêu chuẩn hợp lệ, từ đó biểu diễn cách hiểu về việc cài đặt phần mềm thành công. Những tiêu chuẩn này là cơ sở cho các hoạt động kiểm thử xuất hiện sau này trong tiến trình công nghệ phần mềm. Một đặc tả yêu cầu hình thức được viết ra để xác định các đặc trưng và thuộc tính phần mềm. Bên cạnh đó, cũng có thể soạn nháp "Tài liệu người dùng xơ lược" cho trường hợp bản mẫu còn chưa được xây dựng xong. Các tài liệu phân tích yêu cầu (bản đặc tả và tài liệu người dùng) được dùng làm cơ sở cho việc xét duyệt của các khách hàng và người phát triển. Cuộc họp xét duyệt yêu cầu bao giờ cũng sẽ nảy sinh việc sửa đổi chức năng, hiệu suất, biểu diễn thông tin, ràng buộc hay tiêu chuẩn hợp lệ. 4.2. Phân tích có cấu trúc Phân tích có cấu trúc giống như các phương pháp yêu cầu phần mềm, là một hoạt động xây dựng mô hình. Bằng cách dùng một ký pháp duy nhất cho phương pháp phân tích có cấu trúc, chúng ta tạo ra các mô hình mô tả các luồng và nội dung thông tin (dữ liệu và điều kiện), phân hoạch hệ thống theo chức năng, hành vi và mô tả bản chất của nội dung phải xây dựng. Cơ chế của phân tích có cấu trúc Tạo biểu đồ luồng dữ liệu Biểu đồ luồng dữ liệu (DFD) giúp kỹ sư phần mềm phát triển được các mô hình về thông tin và chức năng đồng thời. Khi DFD được làm mịn tới các mức chi tiết hơn thì người phân tích thực hiện một sự phân rã chức năng không tường minh của 28
  30. hệ thống. Đồng thời việc làm mịn DFD phát sinh ra một sự làm mịn tương ứng dữ liệu khi nó chuyển qua các tiến trình nằm trong ứng dụng. Một vài hướng dẫn đơn giản sau có thể trợ giúp cho việc suy ra biểu đồ luồng dữ liệu: 1. Biểu đồ luồng dữ liệu mức 0 nên mô tả chỉ là một vòng tròn phần mềm /hệ thống. 2. Đầu vào và đầu ra chính cần được chú thích cẩn thận. 3. Việc làm mịn dần nên bắt đầu từ việc cô lập các tiến trình, khoản mục dữ liệu và kho ứng cử viên được biểu diễn ở mức tiếp. 4. Tất cả các mũi tên và hình tròn nên được gắn nhãn bằng những tên có ý nghĩa. 5. Phải duy trì được tính liên tục luồng thông tin từ mức này sang mức kia. 6. Mỗi lúc chỉ làm mịn một hình tròn. Có một khuynh hướng tự nhiên hay làm phức tạp hoá biểu đồ luồng dữ liệu. Điều này xuất hiện khi người phân tích chỉ ra nhiều chi tiết quá sớm hay biểu diễn các khía cạnh thủ tục của phần mềm thay vì luồng thông tin. Trong DFD mức 0, các tác nhân ngoài chủ yếu tạo ra thông tin cho hệ thống và tiêu thụ các thông tin do hệ thống sinh ra. Các mũi tên có nhãn biểu thị cho khoản mục dữ liệu hợp thành, tức là các dữ liệu thực là một tập hợp của nhiều khoản mục dữ liệu phụ. DFD mức 0 được mở rộng thành DFD mức 1. Một cách tiếp cận đơn giản và hiệu quả là thực hiện “phân tích văn phạm”. Tức là, chúng ta cô lập tất cả các danh từ và cụm danh từ, động từ và cụm động từ trong lời thoại trên. Tất cả các danh từ đều hoặc là các tác nhân ngoài, các khoản mục dữ liệu, các điều khiển hay các kho dữ liệu. Do đó, bằng cách thực hiện phân tích văn phạm lời thuật về xử lý cho một hình tròn ở bất kỳ mức DFD nào chúng ta có thể tạo ra rất nhiều thông tin có ích về cách tiến hành làm mịn cho mức tiếp theo. Các tiến trình được biểu diễn ở DFD mức 1 có thể được làm mịn thêm ở các mức thấp hơn. Việc làm mịn cho các DFD tiếp tục cho đến khi hình tròn thực hiện một chức năng đơn giản, tức là cho tới khi tiến trình được biểu diễn bởi một vòng tròn thực hiện một chức năng dễ dàng, được cài đặt như một thành phần của chương trình. Trong phân tích yêu cầu, người kỹ sư phần mềm có thể phát hiện một số khía cạnh nào đó của hệ thống sẽ thay đổi hay sẽ được nâng cao trong tương lai hoặc chưa được xác định rõ. Một cách khác, người phân tích có thể làm việc trên phần mềm hiện có để tìm ra sự thay đổi. Trong cả hai trường hợp, biểu đồ luồng dữ liệu cho phép dễ dàng cô lập lĩnh vực thay đổi. Bằng việc hiểu rõ luồng thông tin đi qua biên giới lĩnh vực thay đổi. người ta có thể có chuẩn bị tốt cho việc thay đổi trong tương lai, hay có thể tiến hành thay đổi hiện tại mà không làm đảo lộn các phần tử khác của hệ thống. Tạo ra mô hình luồng điều khiển Đối với nhiều kiểu ứng dụng xử lý dữ liệu, biểu đồ luồng dữ liệu là tất cả những điều cần thiết để có được cái nhìn ý nghĩa đối với các yêu cầu phần mềm. Tuy nhiên, như đã lưu ý, tồn tại một lớp ứng dụng rộng rãi hơn, được “điều khiển” bởi các sự kiện thay vì dữ liệu, tạo ra thông tin điều khiển chứ không chỉ là báo cáo hay hiển thị, xử lý thông tin với mối quan tâm chủ yếu về thời gian và hiệu năng. Những ứng dụng như vậy đòi hỏi mô hình luồng điều khiển CFD bên cạnh biểu đồ 29
  31. luồng dữ liệu. Để xét duyệt cách tiếp cận CFD, biểu đồ luồng dữ liệu được loại bỏ mọi mũi tên luồng dữ liệu. Các sự kiện và các khoản mục điều khiển được bổ sung vào biểu đồ và một cửa sổ được vẽ trong đặc tả điều khiển. Để chọn các sự kiện ta có hướng dẫn sau: ■ Liệt kê tất cả các cảm biến mà phần mềm đọc. ■ Liệt kê tất cả các điều kiện ngắt. ■ Liệt kê tất cả các “chuyển mạch” mà thao tác viên dùng. ■ Liệt kê tất cả các điều kiện dữ liệu. ■ Gợi lại việc phân tích danh từ - động từ áp dụng cho lời thuật xử lý xét lại tất cả các "khoản mục điều khiển" như đầu vào/đầu ra. ■ Mô tả hành vi của hệ thống bằng cách xác định trạng thái của nó. Xác định cách đạt đến từng trạng thái và định nghĩa phép chuyển giữa các trạng thái. ■ Tập trung vào những bỏ sót có thể - một lỗi rất thông thường trong xác định các điều khiển như hỏi "Liệu còn cách nào khác để tới hay ra khỏi trạng thái này không?". Đặc tả điều khiển (Control specification) Đặc tả điều khiển (CSPEC) biểu diễn cho hành vi của hệ thống theo hai cách khác nhau. CSPEC chứa một biểu đồ chuyển trạng thái (STD) là đặc tả tuần tự cho hành vi. Nó cũng có thể chứa một bảng kích hoạt chương trình (PAT) - một đặc tả tổ hợp cho hành vi. Bằng cách nghiên cứu STD người kỹ sư phần mềm có thể xác định hành vi của hệ thống và điều quan trọng hơn là xác định được liệu có lỗ hổng nào trong hành vi được đặc tả không. Một kiểu biểu diễn hành vi khác là bảng kích hoạt tiến trình PAT. PAT biểu thị cho thông tin chứa trong hoàn cảnh của tiến trình, không phải là trạng thái. Tức là bảng chỉ ra tiến trình nào (hình tròn nào) trong mô hình luồng sẽ được gọi đến khi sự kiện xuất hiện. PAT được dùng như bảng hướng dẫn cho người thiết kế, người phải xây dựng cách điều hành kiếm soát các tiến trình được biểu diễn ở mức này. CSPEC mô tả hành vi của hệ thống, nhưng nó không cung cấp bất kỳ thông tin nào về cách làm việc của các tiến trình được xem như kết quả của hành vi này Đặc tả tiến trình (Process specification) Đặc tả tiến trình (PSPEC) được dùng để mô tả cho các tiến trình mô hình luồng xuất hiện ở mức cuối của việc làm mịn. Nội dung của đặc tả tiến trình bao gồm đoạn văn tường thuật, ngôn ngữ thiết kế chương trình (PĐL) mô tả thuật toán xử lý, phương trình toán học, bảng, biểu đồ hay lược đồ. Bằng cách đưa PSPEC đi kèm với từng hình tròn trong mô hình luồng, người kỹ sư phần mềm tạo ra một “mini đặc tả" được dùng như bước đầu tiên trong việc tạo ra bản đặc tả các yêu cầu phần mềm và dùng như một hướng dẫn cho việc thiết kế thành phần chương trình sẽ cài đặt cho tiến trình. 4.3. Phân tích hướng đối tượng Khi xây dựng một sản phẩm hay một hệ thống mới, chúng ta mô tả nó như thế nào để thích hợp với công nghệ phần mềm hướng đối tượng? Các đối tượng phù hợp là gì? Chúng liên hệ với nhau như thế nào? Các đối tượng ứng xử như thế nào trong ngữ cảnh của hệ thống? Chúng ta mô tả hoặc mô hình các vấn đề như thế nào để tạo ra được một thiết kế có hiệu quả? Mỗi câu hỏi trên đều có thể trả lời trong ngữ cảnh phân tích hướng đối tượng 30
  32. (OOA). Để xây dựng một mô hình phân tích 5 nguyên tắc sau được áp dụng: 1. Miền thông tin được mô hình. 2. Chức năng module được mô tả. 3. Mô hình hành vi được mô tả. 4. Các mô hình được chia nhỏ để chi tiết hơn. 5. Các mô hình ban đầu mô tả bản chất của vấn đề, các mô hình về sau cung cấp chi tiết thực hiện. Mục đích của OOA là định nghĩa các lớp (và các mối quan hệ, các hành vi liên kết nói chung) phù hợp với vấn đề cần giải quyết. Để thực hiện điều này phải thực hiện các công việc sau: 1. Các yêu cầu cơ bản của người sử dụng phải được liên lạc giữa khách hàng và kỹ sư phần mềm. 2. Các lớp phải được xác định (các phương thức và các thuộc tính phải được định nghĩa). 3. Một cây lớp phải được mô tả. 4. Mối quan hệ đối tượng tới đối tượng phải được mô tả. 5. Một hành vi các đối tượng phải được mô hình hoá. 6. Các công việc từ 1 đến 5 được lặp đi lặp lại cho đến khi mô hình được hoàn tất. Mục đích của phân tích hướng đối tượng là phát triển một tập các mô hình mô tả hệ thống phần mềm máy tính như nó hoạt động để thỏa mãn các yêu cầu người dùng đã được xác định. OOA giống như các phương pháp phân tích thông thường khác xây dựng một mô hình phân tích nhiều phần để đạt mục tiêu trên Cách tiếp cận thông thường và cách tiếp cận hướng đối tượng Phân tích có cấu trúc đã đưa ra một khung nhìn đầu vào – xử lý - đầu ra của yêu cầu. Dữ liệu được xem xét riêng rẽ từ các xử lý chuyển dữ liệu 1 hành vi của hệ thống, mặc dù rất quan trọng chỉ chiếm vị trí thứ yếu trong phân tích có cấu trúc. Fichman và Kemerer đã gợi ý 11 "hướng mô hình" được sử dụng để so sánh phương pháp thiết kế thông thường và phương pháp thiết kế hướng đối tượng: 1. Xác định/phân loại các thực thể. 2. Mô tả chung và toàn bộ mối quan hệ thực thể. 3. Các mối quan hệ thực thể khác. 4. Mô tả thuộc tính các thực thể. 5. Phân chia mô hình phạm vi rộng. 6. Trạng thái và chuyển giữa các trạng thái. 7. Mô tả chi tiết các hàm. 8. Phân tích trên xuống. 9. Dãy xử lý end - to - end. 10. Xác định các dịch vụ thực hiện riêng. 11. Giao tiếp thực thể (bằng thông điệp hay bằng sự kiện). Các phương pháp phân tích hướng đối tượng Phương pháp Booch Phương pháp Booch bao gồm hai quy trình phát triển vi mô và vĩ mô. Mức vi mô xác định tập các nhiệm vụ phân tích được áp dụng lại cho các bước trong quy trình vĩ mô. Do đó, cách tiếp cận tiến hoá được duy trì. Một phác thảo của quy trình phát triển vi mô do Booch đề nghị như sau: ■ Xác định các lớp và đối tượng. - Đưa ra các lớp ứng viên. 31
  33. - Quản lý phân tích hành vi. - Xác định kịch bản thích hợp. - Xác định các thuộc tính và phương thức cho mỗi lớp. ■ Xác định ngữ nghĩa của các lớp và đối tượng - Chọn kịch bản và phân tích. - Phân công trách nhiệm cho các hành vi kế thừa của lớp và đối tượng. - Chọn đối tượng và liệt kê vai trò và nhiệm vụ của nó. - Xác định phương thức thỏa mãn nhiệm vụ. - Tìm kiếm sự cộng tác giữa các đối tượng. ■ Xác định mối quan hệ giữa các lớp và đối tượng. - Xác định tính phụ thuộc tồn tại giữa các lớp. - Mô tả vai trò của mỗi đối tượng cụ thể. - Kiểm tra bảng các kịch bản. ■ Quản lý các hoạt động điều chỉnh thích hợp. - Tạo ra biểu đồ thích hợp cho công việc được quản lý bên trên. - Xác định phân cấp lớp khi thích hợp. - Thực hiện nhóm dựa trên sự tương đồng lớp. ■ Thực thi các kép và đối tượng (trong ngữ cảnh OOA, nó mang ý nghĩa hoàn thành mô hình phân tích). Phương pháp Coad và Yourdon Một phác thảo của quy trình phát triển do Coad và Yourdon đề nghị như sau: ■ Xác định đối tượng sử dụng tiêu chuẩn “tìm kiếm cái gì". ■ Xác định cấu trúc tổng quát - đặc tả. ■ Xác định cấu trúc toàn thể - bộ phận. ■ Xác định chủ đề (mô tả các thành phần hệ thống con). ■ Xác định các thuộc tính ■ Xác định các dịch vụ Phương pháp Jacobson Phương pháp này nhấn mạnh vào các trường hợp sử dụng - mô tả cách người dùng tương tác với sản phẩm hay hệ thống. Một phác thảo của quy trình phát triển do Jacobson đề nghị như sau: ■ Xác định người sử dụng hệ thống và toàn bộ nhiệm vụ của họ. ■ Xây dựng mô hình yêu cầu. - Xác định các tác nhân và trách nhiệm. - Xác định trưởng hợp sử dụng cho mỗi tác nhân. - Chuẩn bị khung nhìn ban đầu của đối tượng hệ thống và các quan hệ. - Xem xét lại mô hình sử dụng trường hợp sử dụng như một kịch bản để kiểm tra. ■ Xây dựng mô hình phân tích - Xác định đối tượng giao diện sử dụng thông tin tác nhân tương tác. - Tạo khung nhìn cấu trúc của đối tượng giao diện. - Mô tả hành vi đối tượng. - Cô lập hệ thống con và mô hình cho chúng. - Xem lại mô hình sử dụng trường hợp sử dụng như một kịch bản để kiểm tra. Phương pháp Rambaugh Kỹ thuật mô hình đối tượng (OM 1) cho phân tích, thiết kế hệ thống và thiết kế mức đối tượng. Các hoạt động phân tích tạo ra 3 mô hình: mô hình đối tượng 32
  34. (mô tả các đối tượng, các lớp, cây và mối quan hệ), mô hình động (mô tả các hành vi của đối tượng và hệ thống) và mô hình chức năng (mô tả giống như DFD mức cao mô tả các luồng thông tin chuyển qua trong hệ thống). Một phác thảo của quy trình phát triển do Rambaugh đề nghị như sau: ■ Phát triển một bản kê phạm vi vấn đề. ■ Xây dựng một mô hình đối tượng. - Xác định các lớp thích hợp cho vấn đề. - Định nghĩa các thuộc tính và liên kết. - Định nghĩa liên kết đối tượng. - Tổ chức lớp đối tượng sử dụng thừa kế. ■ Phát triển mô hình động. - Chuẩn bị kịch bản. - Xác định sự kiện và phát triển vết các sự kiện cho mỗi kịch bản. - Xây dựng biểu đồ luồng sự kiện. - Phát triển biểu đồ trạng thái. - Xem lại hành vi cho tính nhất quán và sự hoàn chỉnh. ■ Xây dựng một mô hình chức năng cho hệ thống. - Xác định đầu vào và đầu ra. - Sử dụng biểu đồ luồng dữ liệu để mô tả sự chuyển luồng. - Phát triển PSPEC cho mỗi chức năng. - Mô tả ràng buộc và các tiêu chuẩn tối ưu. Phương pháp Wirfs - Brock Phưong pháp này không tạo ra sự khác biệt rõ ràng giữa các công việc phân tích và thiết kế. Thay vào đó, một quá trình tiếp diễn bất đầu khi xác định đặc tả khách hàng và kết thúc khi thiết kế được đề xuất. Một phác thảo của quy trình phát triển do Wirfs - Brock đề nghị như sau: ■ Ước lượng đặc tả khách hàng. ■ Sử dụng phân tích ngữ pháp để rút ra các lớp ứng viên từ đặc tả. ■ Nhóm các lớp để xác định các lớp Cha. ■ Định nghĩa trách nhiệm cho mỗi lớp. ■ Phân công trách nhiệm cho mỗi lớp. ■ Xác định sự cộng tác giữa các lớp dựa trên trách nhiệm. ■ Xây dựng mô tả cây của lớp để chỉ ra mối quan hệ thừa kế ■ Xây dựng một biểu đồ công tác cho hệ thống. Mặc dù các bước tiến hành khác nhau với mỗi phương pháp OOA nhưng toàn bộ quy trình OOA có sự tương tự. Để thực hiện phân tích hướng đối tượng, một kỹ sư hệ thống phải thực hiện các bước sau: ■ Thu nhận các yêu cầu của khách hàng cho hệ thống hướng đối tượng (Object Oriented - 00). - Xác định các kịch bản hay các trường hợp sử dụng. - Xây dựng mô hình yêu cầu. ■ Chọn các lớp, các đối tượng sử dụng các yêu cầu cơ bản như là hướng dẫn. ■ Xác định các thuộc tính và các phương thức cho mỗi đối tượng hệ thống. ■ Xác định cấu trúc và cây cho mỗi lớp tổ chức. ■ Xây dựng mô hình quan hệ đối tượng. ■ Xây dựng mô hình hành vi đối tượng. ■ Xem xét lại các phân tích 33
  35. CÂU HỎI VÀ BÀI TẬP 1. Xác định yêu cầu phần mềm? 2. Phân tích có cấu trúc? 3. Phân tích hướng đối tượng? 4. Các phương pháp phân tích hướng đối tượng? 34
  36. CHƯƠNG 4: NGÔN NGỮ LẬP TRÌNH VB.NET Mã chương: MHLTV 15.4 Mục tiêu: Sau khi học xong bài học này, sinh viên có khả năng: -Trình bày được Microsoft.NET Framework. - Trình bày được ADO.NET - Cài đặt được phần mềmVisual Studio 2010. - Xây dựng được chương trình VB.NET. - Làm việc được với các điều khiển trên Toolbox. - Tạo được báo cáo bởi Crystal Report. - Tạo được Form hiển thị báo cáo bằng CrystalReportViewer 1. Giới thiệu về Microsoft.NET Framework Ngày nay .NET Framework đã trở thành một trong công nghệ được sử dụng rộng rãi trên toàn thế giới. Theo số liệu thống kê không chính thức thì số lượng lập trình viên sử dụng ngôn ngữ C# của .NET cũng rơi vào khoảng 6 triệu. Đây là một sự tăng trưởng cực kỳ nhanh nếu như chúng ta biết rằng .NET mới chỉ ra đời được hơn 10 năm. Điều đấy cũng cho thấy mức độ hấp dẫn của .NET đối với lập trình viên lớn như thế nào. .NET framework cùng với hệ sinh thái Microsoft đã phát triển rất nhanh với tất cả các công nghệ có thể giúp lập trình viên xây dựng nên các ứng dụng mất ít thời gian nhất, nó có thể giúp xây dựng từ ứng dụng chạy trên desktop cho đến ứng dụng web và gần đây là cả ứng dụng mobile/tablet. Cách xây dựng ứng dụng bằng .NET tương đối dễ dàng và tiện lợi so với các công nghệ khác vì Microsoft đã làm rất tốt phần việc của mình khi giúp cho lập trình viên không còn phải can thiệt và hiểu quá sâu về hệ thống và cách thức hoạt động của .NET. Tuy nhiên, để có thể nắm vững và sử dụng hiệu quả .NET, tránh những lỗi khó xử lý thì chúng ta cần phải hiểu được kiến trúc của .NET cũng như cách thức hoạt động của nó. Vì vậy trong thời gian tới chúng ta sẽ cùng thảo luận xoay quanh chủ đề này. Bài viết đầu tiên này là giới thiệu cơ bản về .NET và các công nghệ tiền thân của nó để giúp chúng ta có một cái nhìn tổng quan hơn về các công nghệ Microsoft. Công nghệ OLE OLE (Object Linking and Embedding) là công nghệ ra đời đầu tiên của Microsoft trong những năm 90 để đơn giản hóa việc giao tiếp giữa các ứng dụng. Chúng hỗ trợ: 〈 Nhúng tài liệu từ một ứng dụng sang ứng dụng khác 〈 Cho phép một ứng dụng chỉnh sửa các đối tượng trong ứng dụng khác OLE cho phép người dùng phát triển ứng dụng yêu cầu liên kết giữa các sản phẩm khác nhau VD: Word hay Excel. Công nghệ COM Trước khi COM xuất hiện cách phát triển phần mềm thông thường là xây dựng thành một khối duy nhất. Thế nhưng khi chương trình lớn và phức tạp dần lên thì cách làm này dẫn tới một số vấn đề về bảo trì và kiểm thử phần mềm. Để giải quyết vấn đề này Microsoft đã tiến tới mô hình dựa trên các thành phần để phát triển phần mềm. Cách này đơn giản là chia phần mềm thành các module (các thành phần độc lập) mà mỗi module sẽ cung cấp một dịch vụ cụ thể. Mỗi module này có thể kiểm thử và phát triển độc lập sau đó tích hợp vào phần mềm chính. Kỹ thuật này 35
  37. được gọi là mô hình đối tượng dựa trên thành phần COM (Component Object Model). Mô hình này giúp cho việc phát triển phần mềm linh hoạt hơn: 〈 Giảm độ phức tạp của toàn bộ phần mềm 〈 Cho phép phát triển các module phân tán giữa nhiều nhóm, phòng ban 〈 Tăng khả năng bảo trì phần mềm Công nghệ .NET Công nghệ .NET là mô hình dựa trên thành phần thế hệ thứ 3. Nó nâng cấp cách thức liên kết giữa các thành phần trong hệ thống so với công nghệ COM. Trong khi COM cung cấp một cơ chế nhị phân chuẩn để giao tiếp giữa các module thì .NET thay thế c ơ ch ế này b ởi một ngôn ngữ trung gian g ọi là Microsoft Intermediate Language (MSIL) hay IL. Các trình biên dịch .NET khác nhau sẽ dịch code của các module thành mã IL nên sẽ tự động tương thích với các IL của module khác. IL code có một thuộc tính là metadata: data về các dữ liệu và mô tả thuộc tính của nó: kiểu và vị trí. IL giúp cho việc tích hợp giữa các ngôn ngữ khác nhau trở nên dễ dàng. Ngoài IL, .NET còn bao gồm một loạt các công nghệ và công cụ khác giúp cho chúng ta phát triển và xây dựng các ứng dụng dễ dàng hơn. Chúng ta sẽ cùng xem qua bên dưới đây. Cơ bản về .NET Framework Đây là môi trường giúp cho việc xây dựng, phát triển và chạy các ứng dụng trên nền .NET, bao gồm tất cả các lo ại ứng dụng: Windows Form, Web, Siverlight, WPF, Windows Phone .NET Framework bao gồm 3 công nghệ khác nhau: 〈 Common Language Runtime(CLR) 〈 Các lớp cơ sở của framework (Framework Based Classes – FBC) 〈 Các giao diện chương trình (Web, Winform, Windows Phone ) Common Language Runtime (CLR) 36
  38. CLR được coi như trái tim và linh hồn của .NET Framework. CLR như tên ám chỉ cung cấp một môi trường thực thi nơi mà các ứng dụng viết bằng .NET (C#, VB.NET, C++ ) có thể chạy được. CRL cung cấp một số dịch vụ như sau: 〈 Nạp và thực thi chương trình 〈 Phân chia vùng nhớ của ứng dụng 〈 Xác minh tính an toàn của kiểu dữ liệu 〈 Dịch mã IL thành mà máy thực thi được 〈 Cung cấp metadata 〈 Quản lý bộ nhớ tự động (automatic garbage collection) 〈 Thực thi bảo mật 〈 Quản lý lỗi và ngoại lệ 〈 Hỗ trợ các công việc như debug hoặc profile ứng dụng 〈 Liên kết với các hệ thống khác Common Type System (CTS) .NET framework hỗ trợ nhiều ngôn ngữ và đều dùng một thành phần gọi là hệ thống kiểu chung CTS trong CLR. CTS hỗ trợ một loạt kiểu và toán tử có thể thấy trong hầu hết các ngôn ngữ lập trình nên gọi một ngôn ngữ từ một ngôn ngữ khác sẽ không yêu cầu chuyển kiểu. Dẫn đến chúng ta có thể xây dựng các ứng dụng .NET sử dụng cả ngôn ngữ VB.NET lẫn C#, C++ Common Language Specification (CLS) Đặc tả ngôn ngữ chung CLS là một tập con của CTS, nó định nghĩa một tập các quy tắc cho phép liên kết hoạt động trên nền tảng .NET. Các quy tắc này sẽ trợ giúp và chỉ dẫn cho các nhà thiết kế compiler của hãng thứ 3 hoặc những người muốn xây dựng thư viện dùng chung. Microsoft Intermediate Language (MSIL) MSIL hay còn gọi IL là một tập lệnh mà tất cả các chương trình .NET được biên dịch thành. Nó trông hơi giống ngôn ngữ assembly và nó chứa các lệnh để nạp, lưu trữ, khởi tạo, gọi các phương thức trong chương trình. Khi chúng ta biên dịch một chương trình C# hoặc bất kỳ chương trình nào được viết bởi ngôn ngữ tuân theo CLS thì mã của nó sẽ là IL. Managed Code CLR chịu trách nhiệm quản lý việc thực thi mã được biên dịch trên nền tảng .NET. Mã chạy được trên môi trường thực thi CLR được gọi là managed code. Trình biên dịch tương thích với nền tảng .NET sẽ tạo ra managed code. Managed code được tạo bởi C# chính là IL code. Trong bài viết này chúng ta đã cùng tìm hiểu về các công nghệ trước khi .NET xuất hiện cũng như tìm hiểu tổng quan về .NET framework, mà trong đó thành phần quan trọng nhất được xem như trái tim và linh hồn của .NET chính là CLR. 1.1. Cài đặt Visual Studio 2010 Visual Studio 2010 phù hợp cho những người quản lý các dự án lập trình công ty hoặc nhóm. Cùng với sự phát triển của công nghệ, lập trình đang trở thành một nghề cực “hot” hiện nay, một công việc tiêu thụ nhiều chất xám tuy nhiên cũng giúp cho các bạn có mức thu nhập “khủng”. Microsoft đã ra mắt Visual Studio 2010 Ultimate để cung cấp các giải pháp phát triển ứng dụng, hỗ trợ dự báo hiệu suất dự án theo các giai đoạn Đây là những tính năng cần thiết để đảm bảo Hiệu quả công việc ở tất cả các giai đoạn của vòng đời sản phẩm phần mềm. 37
  39. Visual Studio 2010 là gì? Visual Studio 2010 là chương trình hỗ trợ IntelliSense một môi trường phát triển tích hợp (IDE) từ Microsoft. Công cụ này tích hợp các mẫu thiết kế để xây dựng giao diện ứng dụng, thiết kế trang web hoặc thiết kế cơ sở dữ liệu. Phần mềm này tích hợp nhiều ngôn ngữ lập trình khác nhau như C, C ++, C #, VB.NET, HTML, Javascrip, CSS, và rất nhiều ngôn ngữ lập trình khác. Microsoft Visual Studio đã được cập nhật lên rất nhiều các phiên bản mới nhưng một phiên bản được rất nhiều người dùng lựa chọn là Visual Studio 2010. Phiên bản năm 2010 này cung cấp cho bạn môi trường học tập và làm việc tốt nhất hiện nay. Ngoài các phiên bản trả phí, công ty cũng có một vài phiên bản miễn phí để giúp sinh viên học tập. Nếu bạn là người đam mê lập trình, chắc hẳn bạn phải làm quen với công cụ này, phải không? Theo Wikipedia: “Visual Studio bao gồm trình chỉnh sửa mã hỗ tr ợ IntelliSense (thành phần hoàn thành mã) cũng như tái cấu trúc mã. Trình gỡ lỗi tích hợp hoạt động cả như trình gỡ lỗi cấp nguồn và trình gỡ lỗi cấp máy. Các công cụ tích hợp khác bao gồm trình lược tả mã, trình thiết kế để xây dựng các ứng dụng GUI, trình thiết kế web, trình thiết kế lớp và trình thiết kế lược đồ cơ sở dữ liệu. Nó chấp nhận các plugin tăng cường chức năng ở hầu hết mọi cấp độ, bao gồm thêm hỗ trợ cho các hệ thống kiểm soát nguồn (như Subversion và Git) và thêm các bộ công cụ mới như trình soạn thảo và trình thiết kế trực quan cho các ngôn ngữ hoặc bộ công cụ cụ thể cho các khía cạnh khác của phát triển phần mềm Vòng đời (như ứng dụng khách Azure DevOps: Team Explorer).” Tính năng chính của Visual Studio 2010 〈 Cửa sổ khởi động được thiết kế lại giúp cho công việc làm việc của bạn hiệu quả hơn 38
  40. 〈 Cả UI và UX đều được cải tiến rất nhiều với các biểu tượng mới và màu sắc hài hòa hơn 〈 Thanh tìm kiếm Quick Launch cung cấp trải nghiệm tốt hơn nơi các lập trình viên có thể tìm thấy các tập lệnh, cài đặt, v.v. 〈 Các khả năng tái cấu trúc giúp đảm bảo tính nhất quán của mã 〈 Cải thiện hiệu suất gỡ lỗi giúp phát hiện và sửa lỗi tốt hơn 〈 Cải thiện trình gỡ lỗi Snapshot nhắm mục tiêu Trình phục vụ Azure Kubernetes (AKS) và Bộ quy mô máy ảo (VMSS) được cải tiến rất nhiều 〈 IntelliCode: Sử d ụng AI thông minh để đề xu ất cải tiến về ch ất lượng và năng suất trong việc code. Yêu cầu Cấu hình khi cài Visual Studio 2010 〈 Bộ vi xử lý tối thiểu là 1,6 GHz hoặc nhanh hơn. 〈 RAM: 1 GB đối với x86 và 2 GB RAM đối với x64, nếu chạy trong máy ảo thì nhớ thêm 512 MB RAM nhé. 〈 Ổ Cứng: Trống tối thiểu 3GB 〈 Ổ đĩa cứng: 5400 RPM hoặc hơn 〈 Card video DirectX 9 với độ phân giải màn hình hiển thị là 1024 x 768 hoặc cao hơn 〈 Ổ DVD-ROM cần thiết Hướng dẫn Cài Đặt & Crack Visual Studio 2010 Full Bước 1: Bạn Download Visual Studio 2010 Full về máy theo Link tải ở trên. Bước 2: Bạn giải nén File vừa tải về, sau đó Click chọn ‘Setup.exe’ để bắt đầu quá trình cài đặt. Bước 3: Sau khi quá trình Setup xong, bạn Click chọn ‘I have read and accept the license terms’ 39
  41. Bước 4: Sau đó, bạn chọn ‘Full’ và chọn nơi lưu trữ File Virsual Studio 2010, nhấn ‘Install’ để cài đặt. Bước 5: Quá trình cài đặt đang diễn ra, bạn đợi một chút. Bước 6: Sau khi quá trình cài đặt hoàn tất, bạn nhấn ‘Finish’ để kết thúc 40
  42. Bước 7: Sau khi quá trình cài đặt kết thúc, bạn vào lại Visual Studio 2010, nếu phần mềm bắt nhập Key, bạn copy key mình đã dán ở trên và paste vào nhé. Bước 8: Chọn ngôn ngữ lập trình và trải nghiệm Virsual Studio 2010 Full thôi! 1.2 Các phần chính của Microsoft.NET Framework Về cơ bản .Net Framework được chia làm 2 phần là: Common Language Runtime (CLR) : Bộ thực thi ngôn ngữ chung. .Net Framework Class Library Bộ biên dịch CLR : là 1 thành phần trung tâm của .Net framework với nhiệm vụ thực hiện biên dịch các chương trình. cái nào khủng hay nhanh hay không là đều dựa vào cái trình biên dịch của nó này — cái này bên Java là JVM ( Java Vitual Machine) nhé. + Các dịch vụ mà CLR cung cấp cho ta như sau: – Nạp và thực thi chương trình – Phân chia vùng nhớ của ứng dụng – Xác minh tính an toàn của kiểu dữ liệu – Dịch mã IL thành mà máy thực thi được – Cung cấp metadata – Quản lý bộ nhớ tự động (automatic garbage collection) – Thực thi bảo mật – Quản lý lỗi và ngoại lệ – Hỗ trợ các công việc như debug hoặc profile ứng dụng – Liên kết với các hệ thống khác .NET Assemblies 41
  43. Sau khi Project .NET được biên dịch, cho dù bạn dùng ngôn ngữ nào thì ngôn ngữ đó đều được đưa về ngôn ngữ CIL. CIL nằm trong khối Assembly, khối này bao gồm các thành phần sau: § A Windows file header § A CLR file header § CIL code § Type metadata § An assembly manifest § Optional embedded resources Khái niệm thì phức tạp, để đơn giản có thể hi ểu một ứng dụng .NET có thể có nhiều assembly và assembly có thể là *.DLL hoặc *.EXE. Assembly có hai kiểu: § Private Assembly: DLL và EXE chỉ được thực thi bởi một ứng dụng § Public/Shared Assembly: DLL có thể được sử d ụng bởi nhiều ứng dụng cùng lúc. Loại này thường được lưu trữ tại “C:\Windows\Assembly” § Satellite Assembly: Chứa các đối tượng tĩnh và không thể thực thi ví dụ như ảnh. + Cách hoạt động của bộ biên dịch: CLR cung cấp môi trường Run-Time, bạn có thể hiểu đó là một môi trường cung cấp các dịch vụ có sẵn để giúp chương trình .NET chạy được và dễ dàng. Các đoạn mã được viết bằng .Net sẽ được biên dịch thành ra mã trung gian MSIL (Microsoft Intermediate Language). Khi thực thi chương trình 1 lần nữa CLR sẽ biên dịch các mã trung gian MSIL này thành mã máy để thực thi. Nói một cách khác nó biên dịch assembly thành mã máy. 2. Xây dựng chương trình VB.NET 2.1. Chương trình máy tính Tìm hiểu chương trình Luckyseven có giao diện như sau: 42
  44. Form chính gồm có hai nút (quay số và kết thúc), bốn nhãn (1, 2, 3 - chứa ba số ngẫu nhiên, 4 - chứa tên chương trình và hiện dòng “Bạn chiến thắng nếu cả 3 nhãn 1, 2, 3 đều là số 7”). Khi bạn click vào nút Quay số thì chương trình phát sinh ngẫu nhiên ba số ở ba nhãn. Nếu một trong ba số là chữ số 7 thì hiện ảnh trả tiền ở đối tượng picturebox1. Xây dựng giao diện và thuộc tính - Tạo nút button1trên form1: bạn tạo button1theo nhiều cách khác nhau. Đó là kéo từ toolbox vào form; double click vào đối tượng button; click vào đối tượng buttonvà vẽ hình chữ nhật trên giao diện chính của form1. Sau khi tạo xong button1trên form1 bạn đặt thuộc tính như sau: R-click vào button1 trên form1 chọn properties. Trong cửa sổ properties windowsthiết lập các thuộc tính tùy thích (cẩn thận với thuộc tính name - đặt tên không khoảng trắng), bạn chọn thuộc tính text thành Quay số. - Tương tự với button2bạn chọn thuộc tính textlà Kết thúc. Cả hai nút thuộc tính Text Alignđều là Middle Center. - Tạo nhãn label1:Bạn tạo nhãn bằng nhiều cách như với nút nhưng chọn đối tượng LabelLabel từ toolsbox. Bạn đặt con trỏ vào các cạnh của nhãn để chỉnh size cho nó. Nếu không chỉnh được thì bạn nhìn thuộc tính Auto Size của nhãn này trên cửa sổ Properties, chỉnh nó thành False là xong. Sau khi tạo xong lable1 trên form1, bạn đặt thuộc tính cho nó như sau: Text - để trống; TextAlign - Middle center; Các thuộc tính khác tùy thích. - Tương tự với các nhãn lable2, lable3, lable4. Riêng lable4 bạn đặt thuộc tính text là “Chương trình số 7 may mắn”. - Tạo Picturebox1 - đối tượng cho phép chứa ảnh: Tạo picturebox1 tương tự như tạo các đối tượng khác với cách click vào đối tượng 'PictureBox trên Tools box. Thiết lập thuộc tính cho Picturebox1: SizeMode - StretchImage (cho phép ảnh co giãn đúng theo kích cỡ của Picturebox); Visible - False (ảnh không hiện trừ khi mã chưong trình cho phép); Image - bạn chọn ảnh nào tùy thích. Bạn có thể kéo vị trí các đối tượng trên form1 sao cho phù hợp. Viết mã cho chương trình Sự kiện Form1_Load Mã là phần quan trọng và mạnh mẽ nhất dùng để tùy biến và xây dựng chương trình. Để xem mã của form1 ta R-click vào phần Form1 và chọn ViewCode. Kết quả: 43
  45. Public Class Form1 End Class Đây là cấu trúc đặc trưng của vb. Ta tiếp tục bàn về thủ tục form_load. Loadlà sự kiện triệu gọi một form khi thực thi. Để tạo bạn chọn form1eventstừ danh sách xổ xuống như sau: Tiếp đó là chọn sự kiện load từ danh sách xổ xuống kế bên phần chọn sự kiện: Và vs.net tự tạo một thủ tục cho bạn như sau: Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Load End Sub Vì đây là chương trình sinh số ngẫu nhiên nên bạn cần gọi đến hàm rnd() - hàm sinh ngẫu nhiên. Cũng theo đó, ta khai báo trong sự kiện form1_load hàm Randomize(): Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Load Randomize() End Sub Viết mã cho nút nhấn quay số - buttonl Ta muốn chương trình thực hiện quay số ngẫu nhiên khi click vào nút quay số thì phải viết mã hay chính xác hơn là tạo thủ tục có tên Button1_Click xử lý s ự kiện.Việc tạo thủ t ục này như sau: b ạn tiến hành một trong các cách. Thứ nh ất, double click vào nút quay số trên giao diện thiết kế form. Cách thứ hai chọn đối tượng button1 từ danh sách xổ xuống: 44
  46. Tiếp theo chọn sự kiện click bên danh sach xổ xuống bên cạnh: yClick J 1 (Declarations) •/'AutoSizeChanged •/' BackColorChanged •/' BackgroundlmageChanged •/' BackgroundlmageLayoutChanged o Click •/'ClientSizeChanged •/'ContextMenuChanged •/'ContextMenuStripChanged •/' ControlAdded Và nhập chính xác đoạn mã sau vào phần thủ tục tương ứng xuất hiện: Private Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Button1.Click PictureBox1.Visible = False Label1.Text = CStr(Int(Rnd() * 10)) Label2.Text = CStr(Int(Rnd() * 10)) Label3.Text = CStr(Int(Rnd() * 10)) 'Nếu một trong ba nhãn xuất hiện số 7 thì hiện ảnh và kêu beep If (Label1.Text = "7") Or (Label2.Text = "7") Or (Label3.Text = "7") Then PictureBox1.Visible = True Beep() End If If (Label1.Text = "7") And (Label2.Text = "7") And (Label3.Text = "7") Then PictureBox1.Visible = True Beep() Label4.Text &= "Bạn đã chiến thắng!" End If End Sub Viết mã cho nút kết thúc - button2 Tương tự như button1, bạn tạo sự kiện click của button2 và nhập hàm End() vào là xong. Mã đầy đủ của chương trình Public Class Form1 Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click 45
  47. End End Sub Private Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Button1.Click PictureBox1.Visible = False Label1.Text = CStr(Int(Rnd() * 10)) Label2.Text = CStr(Int(Rnd() * 10)) Label3.Text = CStr(Int(Rnd() * 10)) 'Nếu một trong ba nhãn xuất hiện số 7 thì hiện ảnh và kêu beep If (Label1.Text = "7") Or (Label2.Text = "7") Or (Label3.Text = "7") Then PictureBox1.Visible = True Beep() End If If (Label1.Text = "7") And (Label2.Text = "7") And (Label3.Text = "7") Then PictureBox1.Visible = True Beep() Label4.Text &= "Bạn đã chiến thắng!" End If End Sub Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Load Randomize() End Sub End Class 2.2. Thực thi chương trình Chạy chương trình Để chạy chương trình click vào nút start ► trên Standard barhay chọn Debug | start debuggingtừ menu bar. Biên dịch chương trình ra file .exe VS.NEThỗ trợ bạn biên dịch chương trình ra file .exe để chạy trên bất kỳ môi trường nào. Nó đóng gói tất cả các thành phần cần thiết và tạo ra file chạy trên tất cả môi trường windows. Có hai kiểu file chạy: kiểu Debug build(gỡ lỗi) và release build(xây dựng). Trên lý thuyết, kiểu debug buildchạy chậm hơn vì chứa thông tin gỡ lỗi. Trên thực tế thì chúng chạy tương đương nhau. Để tạo ra file thực thi chọn Build | Build luckyseeven. Chương trình sẽ tạo ra một thư mục BIN chứa hai thư mục con là DEBUG và RELEASE có hai file luckyseven.exelà hai file thực thi ta cần. Tổng kết 46
  48. Bạn hãy làm một bảng tổng kết các công việc đã thực hiện và tự làm lại chương trình không cần xem mẫu. 3. . Làm việc với các điều khiển trên Toolbox - Sử dụng các điều khiển Textboxvà Buttontạo chương trình Hello World - Sử dụng điều khiển DateTimePickerhiển thị ngày sinh của bạn - Sử dụng combobox, CheckBox, RadioButton, ListBoxđể xử lý các nhập liệu của người dùng - Sử dụng điều khiển LinkLabelđể hiển thị trang web trên Internet - Cài đặt điều khiển ActiveX TOOLBOX chứa các điều khiển để thiết kế form chương trình. Bạn có thể sử dụng những điều khiển đã có sẵn hay thêm một vài thành phần vào đó để sử dụng sau này. Xây dựng chương trình HELLOWORLD Tìm hiểu chương trình Giao diện chính của chương trình như sau: Nó bao gồm một textbox - ô cho phép nhập chuỗi ký tự có biểu tượng abl TextBox trên TOOLBOX và một button. Khi chương trình chạy, click vào button hiển thị để textbox hiện dòng chữ “HelloWorld” - Xin chào thế giới. Thiết kế chương trình Bạn tạo mới một dự án nh ư đã học. Tại trang start pagechọn tạo mới một Visual Studio Solution.Nhập tên tại ô Namelà HelloWorld, click vào nút Browseđể chọn đường dẫn lưu dự án của mình. Nhấn OK để tạo. Bây giờ bạn đã có một giải pháp trắng. Tiếp theo ta tạo mới một dự án từ giải pháp này. Để tạo R-click vào Solution vừa tạo chọn Add | New Project 47
  49. Một cửa sổ hiện ra, click chọn Windows Applicationtại ô Visual Studio Installed Template. Nhập tên là HelloWorld tại ô Name, đường dẫn như đường dẫn chứa solution mới tạo. Thiết kế: - Tạo một Textbox (textbox1) và một Button (Button1) lên giao diện đồ họa của Form như đã biết TextBox: điều khiển cho phép nhập một chuỗi các ký tự cho chương trình xử lý Button: điều khiển cho phép chương trình có một hành động khi người dùng click lên nó khi chạy chương trình. - Thiết lập thuộc tính cho các điều khiển: Textboxl - Text:Rỗng; Buttonl - Text:Hiển thị. Viết mã: - Tại giao diện chính của Form double click vào Button1 để chuyển qua chế độ viết mã, viết thủ tục Button1_Click - Nhập đoạn mã sau vào đó: TextBox1.Text = "HelloWorld!" Khi bạn gõ textboxl và dấu „.’ thì chương trình tự xổ xuống một danh sách cho bạn chọn lựa, bạn chọn thuộc tính text (Enter). Chạy chương trình: Nhắp nút start như ví dụ trước là xong. Sử dụng điều khiển DATETIMEPICKER DATETIMEPICKER, điều khiển cho phép người dùng chọn thời gian dưới dạng giao diện của lịch biểu. Chương trình Birthday Tìm hiểu chương trình 48
  50. Giao diện của chương trình: Chương trình có một điều khiển DaeTimePicker (trên TOOLBOX là điều khiển có hình DateTimePicker ) cho phép người dùng chọn một ngày bất kỳ để chương trình xử lý và một nút Button1 sẽ thực hiện đưa ra một hộp thông báo bằng MsgBox hiển thị ngày mà người dùng đã chọn. Xây dựng giao diện Bạn cũng tạo mới một Solution trắng có tên Birthday và thêm một Project có tên tương tự ở dạng Windows Application trong ô Visual Studio Installed Template như ví dụ trước. Tại giao diện thiết kế của form1 bạn thêm hai điều khiển là DateTimePicker và Button1 vào, đặt thuộc tính Textcho Buttonl là ‘Hi ện ngày sinh’. Lưu lại tất cả những thiết đặt bằng cách nhấp chọn Save All trên Standard Bar. Nếu chương trình hiện ra một thông báo yêu cầu chọn chế độ lưu thì bạn chọn lưu với mã hóa 65001. Viết mã cho chương trình Bạn chỉ cần viết mã cho Button1 để thực thi hành động hiện ra thông báo khi người dùng đã chọn ngày và click lên nó. Double click vào Button1 tại giao diện thiết kế form1 và nhập mã như sau: MsgBox("Ngày sinh của bạn là: "& DateTimePicker1.Text) MsgBox("Ngày trong năm: "& DateTimePicker1.Value.DayOfYear.ToString) MsgBox("Hôm nay là ngày: "& Now.ToString) Đoạn mã này sẽ hiển thị lần lượt ba thông báo có trong dấu ngoặc đơn. Dấu „&’ để kết nối chuỗi như “Ngày sinh của bạn là” với nội dung là thuộc tính Text của điều khiển DateTimePicker1. Các hàm khác các bạn sẽ làm quen dần trong các chương sau. Thực thi chương trình Bạn thử chạy chương trình và chọn đúng ngày sinh của mình xem sao. Làm quen với các thuộc tính khác của DateTimePicker Bạn click vào đối tượng DateTimePicker1 trên giao di ện chính của form và chọn mở thuộc tính của nó. Trên Properties Windows bạn thử thay đổi các thuộc tính của nó xem sao. Ví dụ, để cho nó hiển thị thông tin về giờ thay vì ngày tháng, bạn thay đổi thuộc tính Format của nó từ long qua Time xem sao. Làm việc với các điều khiển nhập liệu Trong suốt quá trình lập trình, thực tế ta luôn xuay quanh việc lập trình để xử lý 49
  51. các điều khiển nhập liệu. Các điều khiển nhập liệu gồm TextBox cho phép người dùng nhập vào một chuỗi các ký tự, menu thể hiện thông tin dưới dạng chọn lệnh, các loại hộp thoại như Checkbox, ListBox, RadioButton, ComboBox thể hiện thông tin dưới dạng tương tự như menu Tìm hiểu CheckBox Sử dụng CheckBox là điều khiển cho phép người dùng chọn lựa khả n ăng xử lý c ủa chương trình. Ta thử tìm hiểu kỹ hơn về điều khiển này qua bài tập sau: Chương trình MyCheckBox Tìm hiểu chương trình: Chương trình này có hai CheckBox cho phép click chọn. Nếu click chọn vào CheckBox nào thì sẽ hiện một bức ảnh tương ứng với nó. Giao diện chính của nó như sau: Thiết kế giao diện: Tạo một giải pháp mới và thêm vào đó một dự án nh ư đã biết, đặt tên là MyCheckBox. Các điều khiển sử dụng trong form gồm: - CheckBoxl: thuộc tính Checked - False; Text - Máy tính cá nhân - Checkbox2: thuộc tính Checked - False; Text - Máy photocopy - PictureBox1: thuộc tính Image - None; SizeMode: StretchImage - PictureBox2: thuộc tính Image - None; SizeMode: Stretchimage Viết mã chương trình: Vì ta muốn khi người dùng click vào checkbox thì lập tức có thay đổi ẩn/hiện các ảnh ngay nên ta cần xây dựng thủ tục thể hiện sự thay đổi gắn với các checkbox. Trong vb thủ tục đó là thủ t ục CheckBox1_CheckedChanged mà ta có thể t ạo ra bằng cách nhắp đúp vào điều khiển checkbox từ giao diện thiết kế form hay lựa chọn từ danh sách xổ xuống như đã biết. - Bạn double click vào điều khiển Checkbox1để tạo thủ tục CheckBox1_CheckedChanged. Sau đó nhập đoạn mã sau vào: If CheckBox1.CheckState = 1 Then 'PictureBox1.Visible = True PictureBox1.Image = System.Drawing.Image.FromFile _ ("D:\Data\Studying\VS.Net 05\Tung buoc lap trinh vb.net\Tung buoc lap trinh vb.net\3_Chapter3\Bai tap\MyCheckBox\MyCheckBox\Images\Calcultr.bmp") 50
  52. PictureBox1.Visible = True Else PictureBox1.Visible = False End If Chú ý: Dấu „_’ ở dòng mã thứ 3 tư trên xuống là dấu cho phép xuống dòng khi cảm thấy dòng mã quá dài trong VB. Bức ảnh của các bạn muốn cho vào điều khiển PictureBox1 không nhất thiết phải giống như trên. Bạn có thể copy một bức ảnh bất kỳ vào thư mục chứa dự án và kéo trực tiếp từ cửa sổ Solution Explorer vào trong đoạn mã để lây đường dẫn. - Tương tự bạn tạo thủ tục CheckBox2_CheckedChanged như sau: If CheckBox2.CheckState = 1 Then 'PictureBox2.Visible = True PictureBox2.Image = System.Drawing.Image.FromFile _ ("D:\Data\Studying\VS.Net 05\Tung buoc lap trinh vb.net\Tung buoc lap trinh vb.net\3_Chapter3\Bai tap\MyCheckBox\MyCheckBox\Images\CopyMach.bmp") PictureBox2.Visible = True Else PictureBox2.Visible = False End If Chạy chương trình: Bạn thử chạy chương trình xem sao. Một số điều khiển khác Sử dụng Ta thử tìm hiểu tác dụng của một số điều khiển khác như RadioButton, ComboBox, ListBox qua ví dụ InputControls xem sao. Chương trình InputControls Tìm hiểu chương trình: Chương trình này có 6 ô hiện ảnh tương ứng với 5 mặt hàng và một hiển thị đơn vị tiền mà người dùng sẽ chi trả khi mua hàng. Ô thứ nhất sẽ hiển thị các sản phẩm tương ứng với một trong ba radiobutton đặt trong điêu khiển GroupBox - điều khiển cho phép đặt một số điều khiển khác vào (bạn thử tìm xem nó ở đâu trên TOOLBOX) Ô thứ hai, thứ ba và thứ tư hiển thị các sản phẩm tương ứng với các mặt hàng chọn bởi các checkbox đặt trong GroupBox2. Ô thứ 5 hiển thị 1 trong 3 sản phẩm được chọn bởi điều khiển ListBox1. Ô thứ 6 hiển thị ảnh của đơn vị tiền tệ mà người dùng chọn bởi ComboBox1. Thiết kế giao diện: - Tạo hai điều khiển GroupBox - Tạo 3 radioboxđặt vào trong điều khiển GroupBox1. - Tạo 3 CheckBoxđặt vào trong điều khiển GroupBox2. - Tạo 1 điều khiển ListBoxvà không nhập liệu gì cả. - Tạo một điều khiển ComboBox. - Tạo 6 PictureBoxvà 3 Labelcùng 1 Button. - Sửa các thuộc tính sao cho phù hợp với hình trên. Riêng hai điều khiển ListBoxvà ComboBoxthì các dữ liệu sẽ được nhập khi Form được load vào lúc chương trình chạy. Sau đây là giao diện của chương trình: 51
  53. Viết mã chương trình: Dưới đây là toàn bộ mã của chương trình, bạn có thể tham khảo: Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click End End Sub Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged If CheckBox1.CheckState = 1 Then PictureBox2.Image = System.Drawing.Image.FromFile _ ("D:\Data\Studying\VS.Net 05\Tung buoc lap trinh vb.net\Tung buoc lap trinh vb.net\3_Chapter3\Bai tap\InputControls\InputContorls\Images\AnswMach.bmp") PictureBox2.Visible = True Else PictureBox2.Visible = False End If End Sub Private Sub CheckBox2_CheckedChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged If CheckBox2.CheckState = 1 Then PictureBox3.Image = System.Drawing.Image.FromFile _ ("D:\Data\Studying\VS.Net 05\Tung buoc lap trinh vb.net\Tung buoc lap trinh vb.net\3_Chapter3\Bai tap\InputControls\InputContorls\Images\Calcultr.bmp") PictureBox3.Visible = True Else PictureBox3.Visible = False End If End Sub Private Sub CheckBox3_CheckedChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles CheckBox3.CheckedChanged If CheckBox3.CheckState = 1 Then PictureBox4.Image = System.Drawing.Image.FromFile _ ("D:\Data\Studying\VS.Net 05\Tung buoc lap trinh vb.net\Tung buoc lap trinh vb.net\3_Chapter3\Bai tap\InputControls\InputContorls\Images\CopyMach.bmp") PictureBox4.Visible = True 52
  54. Else PictureBox4.Visible = False End If End Sub Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged Select Case ListBox1.SelectedIndex Case 0 PictureBox5.Image = System.Drawing.Image.FromFile _ ("D:\Data\Studying\VS.Net 05\Tung buoc lap trinh vb.net\Tung buoc lap trinh vb.net\3_Chapter3\Bai tap\InputControls\InputContorls\Images\Harddisk.bmp") PictureBox5.Visible = True Case 1 PictureBox5.Image = System.Drawing.Image.FromFile _ ("D:\Data\Studying\VS.Net 05\Tung buoc lap trinh vb.net\Tung buoc lap trinh vb.net\3_Chapter3\Bai tap\InputControls\InputContorls\Images\Printer.bmp") PictureBox5.Visible = True Case 2 PictureBox5.Image = System.Drawing.Image.FromFile _ ("D:\Data\Studying\VS.Net 05\Tung buoc lap trinh vb.net\Tung buoc lap trinh vb.net\3_Chapter3\Bai tap\InputControls\InputContorls\Images\SateDish.bmp") PictureBox5.Visible = True End Select End Sub Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Load ListBox1.Items.Add("Ổ cứng") ListBox1.Items.Add("Máy in") ListBox1.Items.Add("Ăng ten") ComboBox1.Items.Add("USD") ComboBox1.Items.Add("Kiểm tra") ComboBox1.Items.Add("Bảng Anh") End Sub Private Sub RadioButton1_CheckedChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged PictureBox1.Image = System.Drawing.Image.FromFile _ ("D:\Data\Studying\VS.Net 05\Tung buoc lap trinh vb.net\Tung buoc lap trinh vb.net\3_Chapter3\Bai tap\InputControls\InputContorls\Images\PComputr.bmp") PictureBox1.Visible = True End Sub Private Sub RadioButton2_CheckedChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged PictureBox1.Image = System.Drawing.Image.FromFile _ ("D:\Data\Studying\VS.Net 05\Tung buoc lap trinh vb.net\Tung buoc lap trinh vb.net\3_Chapter3\Bai tap\InputControls\InputContorls\Images\Computer.bmp") PictureBox1.Visible = True End Sub Private Sub RadioButton3_CheckedChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged PictureBox1.Image = System.Drawing.Image.FromFile _ ("D:\Data\Studying\VS.Net 05\Tung buoc lap trinh vb.net\Tung buoc lap trinh 53