NGUYỄN THẾ DŨNG NHẬP MÔN CÔNG NGHỆ PHẦN MỀM Trƣờng Đại học Sƣ phạm - Đại học Huế Huế, tháng 11 năm 2014 1 Giáo trình này được viết bởi Nguyễn Thế Dũng, giảng viên Khoa Tin học, Trường Đại học Sư phạm - Đại học Huế. Giáo trình này được dùng để giảng dạy và học tập học phần: Nhập môn Công nghệ phần mềm. Mã số: TINS4392 2 Lời nói đầu Nhập môn Công nghệ phần mềm là môn học bắt buộc trong khung chương trình của hầu hết sinh viên ngành Sư phạm Tin học. Hiện nay đã có khá nhiều tài liệu về môn học này.
Tuy vậy chúng phần lớn được trình bày dưới dạng sách chuyên khảo, do đó sinh viên rất khó khăn trong việc học môn này. Bên cạnh đó với các đặc thù của sinh viên ngành Sư phạm, nên việc học tập môn học mang nặng tính lý thuyết đối với sinh viên. Ngay từ đầu giáo trình, chúng tôi đưa ra mục tiêu và tóm tắt nội dung học phần mà khung chương trình đã quy định để làm rõ mục đích cần đạt được khi học môn học này của sinh viên Sư phạm Tin học so với sinh viên các ngành chuyên về Công nghệ phần mềm. Cuối các chương mục, chúng tôi đưa vào phần ôn tập chương cùng các câu hỏi và bài tập nhằm giúp sinh viên dễ học tập và có một cái nhìn rộng hơn về thực tiễn hay các vấn đề mở mà giáo trình chưa đề cập đến do giới hạn khuôn khổ.
Do trong khung chương trình, phần quản lý dự án phần mềm được tách riêng thành một học phần gồm 2 tín chỉ, nên giáo trình sẽ không bao gồm phần này như thường thấy trong một số giáo trình khác. Giáo trình được chia thành 7 chương. Tổng quan về công nghệ phần mềm; Chương 2. Qui trình phát triển phần mềm; Chương 3.
Phân tích và đặc tả yêu cầu; Chương 4. Thiết kế; Chương 5. Lập trình; Chương 6. Kiểm thử; Chương 7.
Triển khai và bảo trì. 3 Trong quá trình biên soạn giáo trình này, chúng tôi có tham khảo một số tài liệu của một số tác giả khác nhằm mang lại những kiến thức phong phú, phù hợp nhất cho sinh viên, nhưng có thể chưa kịp liên hệ được với chính các tác giả ấy. Mong các Thầy, cô vì sự học của các sinh viên mà niệm tình bỏ quá. Tác giả chân thành cảm ơn các thầy cô Hà Viết Hải, Lê Văn Tường Lân, Nguyễn Thị Hoàng Anh… đã góp ý cho bản thảo rất tận tình.
Đồng thời xin chân thành cảm ơn quý Thầy Cô khác cũng đã giúp đỡ chúng tôi rất nhiều. Chúng tôi cũng gửi lời cảm ơn đến rất nhiều bạn sinh viên đã giúp chúng tôi sưu tầm các tư liệu làm cơ sở để hoàn thành giáo trình này. Giáo trình không tránh khỏi những thiếu sót và đặc biệt là sự thiếu cập nhật thông tin đối với một môn học có tính thời sự công nghệ này. Rất mong sự góp ý, đánh giá, nhận xét của quý Thầy Cô, các bạn Sinh viên… để giáo trình được hoàn thiện hơn.
Xin chân thành cảm ơn. Huế, ngày 10 tháng 09 năm 2014 Nguyễn Thế Dũng Khoa Tin học – ĐHSP Huế.com http://sites.com/site/nguyenthedunghue/ 4 Dưới đây là trích dẫn mục tiêu và tóm tắt nội dung của học phần được khung chương trình đào tạo giáo viên Tin học Trung học phổ thông do Bộ Giáo dục và Đào tạo ban hành năm 2007. Mục tiêu học phần NHẬP MÔN CÔNG NGHỆ PHẦN MỀM Giúp cho sinh viên nắm được quá trình phát triển một phần mềm một cách hiệu quả, mang tính công nghiệp và hiểu được những khái niệm cơ bản thuộc lĩnh vực này. Trên cơ sở đó sinh viên có định hướng đúng đắn khi học tập nghiên cứu các môn khác cũng như đi sâu vào nghiên cứu và thực hành làm phần mềm.
Tóm tắt nội dung học phần NHẬP MÔN CÔNG NGHỆ PHẦN MỀM Nội dung môn học bao gồm: các quy trình xây dựng và đánh giá một phần mềm; vận dụng để xây dựng được những phần mềm cỡ nhỏ đáp ứng thực tế công việc và các đề án. 5 MỤC LỤC CHƢƠNG 1. TỔNG QUAN VỀ CÔNG NGHỆ PHẦN MỀM. Một số khái niệm.
Nhân tố con người và phân loại nghề nghiệp trong công nghệ phần mềm. Sản phẩm phần mềm – đặc trưng và phân loại. QUI TRÌNH PHÁT TRIỂN PHẦN MỀM. Qui trình phát triển phần mềm.
Mô hình phát triển phần mềm. Trợ giúp tự động hoá phát triển. PHÂN TÍCH VÀ ĐẶC TẢ YÊU CẦU. Đại cương về phân tích và đặc tả yêu cầu.
Phân tích và đặc tả yêu cầu. Nguyên lý phân tích và mô hình hóa. Đặc tả yêu cầu. Thẩm định yêu cầu.
Làm bản mẫu trong quá trình phân tích. Định dạng đặc tả yêu cầu. Quản lý yêu cầu. Phân tích và đặc tả yêu cầu theo mô hình tiến trình hợp nhất (Unified Process Model).
Khái niệm về thiết kế phần mềm. Thiết kế hướng chức năng. Thiết kế kiến trúc. Thiết kế giao diện người dùng.
Thiết kế thủ tục. Thiết kế hướng đối tượng. LẬP TRÌNH. Ngôn ngữ lập trình.
Phong cách lập trình. Kỹ thuật lập trình. Lập trình hướng hiệu quả thực hiện. Đại cương về kiểm thử phần mềm.
Các mức độ kiểm thử. Các hoạt động kiểm thử. Chiến thuật kiểm thử phần mềm. Kỹ thuật kiểm thử.
Kiểm thử hướng đối tượng. Chứng minh toán học tính đúng đắn của chương trình. TRIỂN KHAI VÀ BẢO TRÌ. Triển khai phần mềm.
Hiện thực và triển khai phần mềm được xây dựng theo mô hình hướng đối tượng. 200 7 DANH MỤC BIỂU BẢNG Hình 1. Các thành phần của phần mềm. Kỹ nghệ phần mềm.
Vòng đời phát triển hệ thống. Các giai đoạn và các sản phẩm cơ bản của từng giai đoạn tƣơng ứng. Mô hình thác nƣớc. Mô hình xoắn ốc.
Mô hình tăng trƣởng. Mô hình RAD. Mô hình phát triển dựa trên cấu phần. Các hoạt động của phân tích và đặc tả yêu cầu.
Qui trình xác định yêu cầu. Mô hình xoắn ốc của qui trình xác định yêu cầu. Qui trình nắm bắt yêu cầu. Các mô hình của bƣớc mô hình hóa yêu cầu.
Tiến trình phân tích và thiết kế hƣớng đối tƣợng. Mô hình use-case cho bài toán quản lý học tập tại một trung tâm. Các hoạt động thiết kế phần mềm. Hoạt động thiết kế và sản phẩm tƣơng ứng.
Số lƣợng module và chi phí tích hợp module. Mô hình kiến trúc dữ liệu tập trung. Kiến trúc khách dịch vụ (Client-Server Architecture). Mô hình kiến trúc phân tầng.
Kiến trúc gọi và trả lại. Mô hình điều khiển quảng bá. Mô hình điều khiển hƣớng ngắt. Tạo kiến trúc từ biểu đồ DFD.
Phân hoạch dọc kiến trúc. Phân hoạch ngang kiến trúc. Chuyển đổi luồng chuyển đổi. Chuyển đổi luồng giao dịch.
Các bƣớc thực hiện thiết kế giao diện. Các mức độ kiểm thử. Mô hình chữ V. Các hoạt động kiểm thử.
Mô hình chữ V. Ký hiệu của thành phần. Quan hệ liên kết giữa các node. Qui trình quản lý bảo trì.
Các hoạt động chính của bảo trì. Các giai đoạn kiểm thử và các công việc tƣơng ứng. Bảng thống kê chi phí cho quá trình bảo trì (nguồn [8]). Các độ đo đƣợc sử dụng trong bảo trì.
209 9 BẢNG ĐỐI CHIẾU THUẬT NGỮ VIỆT – ANH Phần mềm Software Kỹ thuật thế hệ thứ Fourth 4 generation technique Phần cứng Hardware Bàn thợ Workbenches Công nghệ phần Software Đo điểm chuẩn Benchmarking mềm Technology Kỹ nghệ phần Software Phương pháp cùng Joint mềm Engineering phát triển ứng dụng Application Design CASE Computer-Aided Sơ đồ phân rã chức Function Software năng Decomposition Engineering Diagram Đặc tả yêu cầu Software Mô hình tiến trình Unified Process phần mềm Requirement hợp nhất Model Specification Bảo trì Maintenance Luồng giao dịch Transaction Flow Thiết kế kiến trúc Architectural Mẫu hình thức Stereotype Design Cài đặt Implementation Kiểm thử Testing Triển khai phần Software Dò mã Code browser mềm Deployment 10 CHƢƠNG 1. TỔNG QUAN VỀ CÔNG NGHỆ PHẦN MỀM Mục đích Trình bày các khái niệm thiết yếu của Công nghệ phần mềm như định nghĩa, đối tượng nghiên cứu, con người, sản phẩm… Yêu cầu Biết được những khái niệm thiết yếu trong Công nghệ phần mềm. Biết được tổ chức nhân sự và vai trò của từng thành viên trong nhóm phát triển phần mềm. Biết được các loại tài liệu kỹ thuật.
Một số khái niệm Thuật ngữ phần mềm (software) cần được hiểu trong sự đối chiếu với thuật ngữ phần cứng (hardware) được đưa ra trong ngành điện tử. Theo đó phần cứng (hardware) là những thiết bị có thể sờ mó, cầm nắm, trong khi đó phần mềm là những gì làm cho các thiết bị vô tri vô giác đó có thể hoạt động được. Phần mềm trong Tin học có thể được hiểu bao gồm: - Tập các lệnh máy tính nhằm thực hiện các chức năng xác định; - Các cấu trúc dữ liệu cho phép chương trình thao tác với dữ liệu; - Các tài liệu giúp cho người dùng có thể vận hành được phần mềm. 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à phần mềm.
Theo nghĩa hẹp: Phần mềm là tập các chương trình dịch vụ để tăng khả năng xử lý của phần cứng của máy tính (như hệ điều hành - OS). Theo nghĩa rộng: Phần mềm là 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 mục đích nào đó bằng phần cứng. Nếu hiểu theo nghĩa rộng thì phần mềm bao gồm các nhóm minh họa như dưới đây: 11 Hình 1. Các thành phần của phần mềm 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ể hóa một hệ thống; Các phương pháp tiếp cận giải quyết vấn đề; Các trình tự thiết kế và phát triển được chuẩn hóa; 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, tạo thành 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. Phần mềm cơ bản: với chức năng cung cấp môi trường thao tác dễ dàng cho người sử dụng nhằm tăng hiệu năng xử lý của phần cứng (ví dụ như các hệ điều hành, các chương trình hệ thống). Phần mềm ứng dụng: dùng để xử lý nghiệp vụ thích hợp nào đó (quản lý, kế toán,.), phần mềm đóng gói, phần mềm của người dùng,.