BỘ NÔNG NGHIỆP VÀ PHÁT TRIỂN NÔNG THÔN TRƯỜNG CAO ĐẲNG CƠ GIỚI NINH BÌNH GIÁO TRÌNH MÔN HỌC: CÔNG NGHỆ PHẦN MỀM NGHỀ: LẬP TRÌNH MÁY TÍNH TRÌNH ĐỘ: CAO ĐẲNG / TRUNG CẤP Ban hành kèm theo Quyết định số: /QĐ-… ngày…….năm của Trường Cao đẳng Cơ giới Ninh Bình Ninh Bình 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. LỜI GIỚI THIỆU Trong hệ thống kiến thức chuyên ngành trang bị cho sinh viên nghề Lập trình máy tính, môn học góp phần cung cấp những nội dung liên quan đến việc xây dựng các ứng dụng về phân tích xây dựng phần mềm ứng dụng. Các nội dung chính được trình bày trong tài liệu này gồm các bài: - Đặc trưng của phần mềm - Vai trò của phần mềm - Các yếu tố cơ bản của kỹ nghệ phần mềm - Vai trò của người phân tích yêu cầu - Xem xét phần mềm - Một số vấn đề thiết kế Mặc dù 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.
Ninh Bình, ngày…. năm Tham gia biên soạn 1. Chủ biên – Th.S Nguyễn Trung Cương 3.S Nguyễn Xuân Khôi MỤC LỤC Giáo trình 1 Lời giới thiệu 2 Bài 1. Phần mềm và kỹ nghệ phần mềm 7 1.
Một số khái niệm chung. Phương pháp phát triển phần mềm. Tiến trình phần mềm 16 2. Tiêu chuẩn của sản phẩm phần mềm.
Quản lý dự án phần mềm. Lập kế hoạch dự án. Phương pháp luận. Phân tích đặc tả yêu cầu 25 3.
Tìm hiểu, xác định yêu cầu. Phân tích yêu cầu. Đặc tả yêu cầu. Tư liệu hóa yêu cầu phần mềm.
Đặc tính dữ liệu và các kỹ thuật để thu thập dữ liệu. Lập trình hiệu quả 42 4. Đặc điểm của quá trình thiết kế phần mềm. Các hoạt động của quá trình thiết kế phần mềm.
Nền tảng thiết kế. Kiểm thử và bảo trì phần mềm 51 5. Độ tin cậy của phần mềm. Kiểm tra và các chiến lược kiểm tra phần mềm.
Kỹ thuật kiểm thử phần mềm và đặc điểm. Chứng minh toán học tính đúng đắn của chương trình.72 CHƯƠNG TRÌNH MÔ ĐUN CÔNG NGHỆ PHẦN MỀM Mã số môm học: Mh 25 Thời gian môm học: 60 h; (Lý thuyết: 36 h; Thực hành: 24 h) I. VỊ TRÍ, TÍNH CHẤT CỦA MÔ ĐUN - Môn học này được học sau khi học xong các môn học lập trình và các hệ quản trị cơ sở dữ liệu. - Để học tốt mô đun này cần học qua các môn học Tin học căn bản, Lập trình căn bản, cơ sở toán cho tin học, cấu trúc dữ liệu và giải thuật, lập trình hướng đối tượng.
MỤC TIÊU MÔ ĐUN Học xong mô đun này sinh viên có khả năng: - Trình bày được các khái niệm cơ bản về công nghệ phần mềm: Phần mềm, công nghệ phần mềm, quy trình làm phần mềm. - Thực hiện được mô hình làm phần mềm: phù hợp cho yêu cầu của hệ thống cụ thể; - Trình bày được các yêu cầu của phần mềm, xác định phạm vi, hạn chế của phần mềm; - Trình bày được sản phẩm và hướng dẫn sử dụng phần mềm; - Có thái độ nghiêm túc và tích cực trong học tập đảm bảo an toàn cho người và thiết bị. NỘI DUNG MÔ ĐUN 1. Nội dung tổng quát và phân phối thời gian: Số Tên các bài trong mô đun Tổng Lý Thực TT Kiểm tra* số thuyết hành 1 Phần mềm và kỹ nghệ phần mềm 5 5 2 Tiến trình phần mềm 10 6 4 3 Phân tích đặc tả yêu cầu 11 5 4 2 4 Lập trình hiệu quả 9 5 4 5 Kiểm thử và bảo trì phần mềm 25 11 12 2 Cộng: 60 36 20 4 * Ghi chú: Thời gian kiểm tra được tích hợp giữa lý thuyết với thực hành được tính vào giờ thực hành IV.
ĐIỀU KIỆN THỰC HIỆN MÔ ĐUN Sinh viên cần học trước các môn học: - Cơ sở toán cho tin học. - Lập trình căn bản. - Cấu trúc dữ liệu và giải thuật. - Hệ quản trị cơ sở dữ liệu.
- Lập trình hướng đối tượng. * Vật liệu: - Xưởng thực hành đạt chuẩn. - Các mô hình trên giấy in hoặc trên power point. * Dụng cụ: - Máy tính, máy chiếu.
- Bài giảng soạn trên phần mềm dạy học. PHẦN MỀM VÀ KỸ NGHỆ PHẦN MỀM A. MỤC TIÊU CỦA BÀI - Hiểu được định nghĩa công nghệ phần mềm -Software Engineering;. - Sử dụng được phương pháp, công cụ, cách tiếp cận và phương tiện phục vụ cho việc thiết kế và cài đặt các sản phẩm phần mềm; B.
Một số khái niệm chung Mục tiêu của công nghệ phần mềm là tạo ra những phần mềm tốt, giảm đến tối thiểu những may rủi có thể gây cho các người liên quan. Trong quá trình đề cập, chúng ta sử dụng các thuật ngữ: Phần mềm (software): là một tập hợp các câu lệnh được viết bằng một hoặc nhiều ngôn ngữ lập trình, nhằm tự động thực hiện một số các chức năng giải quyết một bài toán nào đó. Công nghệ (engineering): là cách sử dụng các công cụ, các kỹ thuật trong cách giải quyết một vấn đề nào đó. Công nghệ phần mềm (software engineering): là việc áp dụng các công cụ, các kỹ thuật một cách hệ thống trong việc phát triển các ứng dụng dựa trên máy tính.
Đó chính là việc áp dụng các quan điểm, các tiến trình có kỷ luật và lượng hoá được, có bài bản và hệ thống để phát triển, vận hành và bảo trì phần mềm. Theo quan điểm của nhiều nhà nghiên cứu, có thể nhìn công nghệ phần mềm là một mô hình được phân theo ba tầng mà tất cả các tầng này đều nhằm tới mục tiêu chất lượng, chi phí, thời hạn phát triển phần mềm. Mô hình được phân theo ba tầng của công nghệ phần mềm được mô tả như sau: Công cụ Phương pháp Quy trình Ở đây tầng quy trình (process) liên quan tới vấn đề quản trị phát triển phần mềm như lập kế hoạch, quản trị chất lượng, tiến độ, chi phí, mua bán sản phẩm phụ, cấu hình phần mềm, quản trị sự thay đổi, quản trị nhân sự (trong môi trường làm việc nhóm), việc chuyển giao, đào tạo, tài liệu; Tầng phương pháp (methods) hay cách thức, công nghệ, kỹ thuật để làm phần mềm: liên quan đến tất cả các công đoạn phát triển hệ thống như nghiên cứu yêu cầu, thiết kế, lập trình, kiểm thử và bảo trì. Phương pháp dựa trên những nguyên lý cơ bản nhất cho tất cả các lĩnh vực công nghệ kể cả các hoạt động mô hình hoá và kỹ thuật mô tả.
Tầng công cụ (tools) liên quan đến việc cung cấp các phương tiện hỗ trợ tự động hay bán tự động cho các tầng quá trình và phương pháp (công nghệ). Qua sơ đồ trên, ta thấy rõ công nghệ phần mềm là một khái niệm đề cập không chỉ tới các công nghệ và công cụ phần mềm mà còn tới cả cách thức phối hợp công nghệ, phương pháp và công cụ theo các quy trình nghiêm ngặt để làm ra sản phẩm có chất lượng. Kỹ sư phần mềm (software engineer): là một người biết cách áp dụng rộng rãi những kiến thức về cách phát triển ứng dụng vào việc tổ chức phát triển một cách có hệ thống các ứng dụng. Công việc của người kỹ sư phần mềm là: đánh giá, lựa chọn, sử dụng những cách tiếp cận có tính hệ thống, chuyên biệt, rõ ràng trong việc phát triển, đưa vào ứng dụng, bảo trì, và thay thế phần mềm.
Do đặc điểm nghề nghiệp, người kỹ sư phần mềm phải có những kỹ năng cơ bản như: Định danh, đánh giá, cài đặt, lựa chọn một phương pháp luận thích hợp và các công cụ CASE. Biết cách sử dụng các mẫu phần mềm (prototyping). Biết cách lựa chọn ngôn ngữ, phần cứng, phần mềm. Quản lý cấu hình, lập sơ đồ và kiểm soát việc phát triển của các tiến trình.
Lựa chọn ngôn ngữ máy tính và phát triển chương trình máy tính. Đánh giá và quyết định khi nào loại bỏ và nâng cấp các ứng dụng. Mục tiêu của kỹ sư phần mềm là sản xuất ra các sản phẩm có chất lượng cao và phù hợp với các quy trình phát triển chuẩn mực. Việc phát triển (development): được bắt đầu từ khi quyết định phát triển sản phẩm phần mềm và kết thúc khi sản phẩm phần mềm được chuyển giao cho người sử dụng.
Việc sử dụng (operations): là việc xử lý, vận hành hằng ngày sản phẩm phần mềm Việc bảo trì (maintenance): thực hiện những thay đổi mang tính logic đối với hệ thống và chương trình để chữa những lỗi cố định, cung cấp những thay đổi về công việc, hoặc làm cho phần mềm được hiệu quả hơn. Việc loại bỏ (retirement): thường là việc thay thế các ứng dụng hiện thời bởi các ứng dụng mới. Nhân tố con người trong ngành công nghiệp phần mềm Đối với một sản phẩn phần mềm, một người không thể hoàn thành mà là kết quả lao động của một nhóm người-ta gọi là nhóm phát triển phần mềm. Mỗi thành viên trong nhóm không được vị kỷ, thành quả lao động của nhóm được xen như là thành quả chung và phải tuyệt đối trung thành với nhóm.
Như vậy, một nhóm phát triển phần mềm như thế nào gọi là một nhóm hợp lý? Sau đây là một vài yếu tố cần xem xét: Nhóm có bao nhiêu thành viên, Nhóm được tổ chức như thế nào, Tình hình thực tế của mỗi thành viên trong nhóm, Môi trường, điều kiện mà nhóm đang làm việc,. Mỗi thành viên trong nhóm phải có một số kiến thức cần thiết tuỳ thuộc vào vai trò trong nhóm để phát triển phần mềm. Phân loại nghề nghiệp Yêu cầu hiện nay của sự phát triển Công nghệ Thông tin (CNTT) ở Việt nam đòi hỏi cần có những người lao động trong tất cả các ngành kinh tế biết sử dụng hữu hiệu CNTT trong công việc của mình, và đồng thời cần có những người trực tiếp tham gia vào sản xuất, kinh doanh, vận hành về CNTT. Do vậy cần có những lớp người lao động sau: Những người biết vận dụng sáng tạo CNTT vào nghiệp vụ chuyên môn.
Những người tham gia quản lí và vận hành các hệ thống CNTT Những người tham gia trực tiếp vào việc phát triển và xây dựng ra các sản phẩm CNTT,. Việc phân loại nghề nghiệp trong các hệ thống thông tin có thể được phân chia dựa vào các tiêu chuẩn như: mức độ kinh nghiệm, loại hình công việc,.