Nhập môn Công nghệ phần mềm - Trần Đình Quế
MỤC LỤC
MỤC LỤC . 3
CHƯƠNG 1: MỞ ĐẦU . 7
1.2 CÁC KIỂU PHẦN MỀM . 7
1.3 KHÍA CẠNH LỊCH SỬ . 7
1.4 KHÍA CẠNH KINH TẾ . 8
1.5 KHÍA CẠNH BẢO TRÌ . 8
1.6 KHÍA CẠNH PHÂN TÍCH VÀ THIẾT KẾ . 9
1.7 KHÍA CẠNH LẬP TRÌNH NHÓM . 10
1.8 PHƯƠNG PHÁP HƯỚNG ĐỐI TƯỢNG . 10
CHƯƠNG 2: CÁC PHA PHÁT TRIỂN PHẦN MỀM . 13
2.1 TIẾN TRÌNH THÀNH PHẦN . 13
2.2 SQA LÀ GÌ? . 14
2.3 PHA YÊU CẦU . 14
2.4 PHA ĐẶC TẢ . 14
2.5 PHA THIẾT KẾ . 15
2.6 PHA CÀI ĐẶT . 16
2.7 TÍCH HỢP . 16
2.8 CẢI TIẾN TIẾN TRÌNH PHẦN MỀM . 16
CHƯƠNG 3 . 21
CÁC MÔ HÌNH VÒNG ĐỜI PHẦN MỀM . 21
3.1 PHÁT TRIỂN PHẦN MỀM . 21
3.1.1 Theo lý thuyết phát triển phần mềm: . 21
3.1.2 Thực tế phát triển phần mềm . 21
3.1.3 Bài toán Winburg Mini . 21
3.2 MÔ HÌNH XÂY SỬA . 22
3.3 MÔ HÌNH TIẾN HÓA . 22
3.4 MÔ HÌNH BẢN MẪU NHANH . 23
3.5. MÔ HÌNH LẶP VÀ TĂNG . 24
3.6 MÔ HÌNH UP . 28
3.7 MÔ HÌNH XOẮN ỐC . 33
3.8 MÔ HÌNH MÃ NGUỒN MỞ . 34
CHƯƠNG 4: KIỂM THỬ . 37
4.1 VẤN ĐỀ CHẤT LƯỢNG PHẦN MỀM . 37
4.1.1 Đảm bảo chất lượng phần mềm (SQA) . 37
4.1.2. Độc lập trong quản lý . 37
4.2 KIỂM CHỨNG PHẦN MỀM . 38
4.3 CÁC PHƯƠNG PHÁP KIỂM CHỨNG . 38
4.3.1. Kiểm thử không có sự thực thi . 38
4.3.2 Kiểm thử có dựa trên sự thực thi . 42
4.4 NHỮNG VẤN ĐỀ TRONG KIỂM THỬ . 42
4.4.1 Cái gì nên được kiểm thử? . 42
4.4.2 Kiểm thử và sự kiểm chứng tính chính xác . 44
4.4.3 Sự kiểm chứng tính chính xác và kỹ nghệ phần mềm . 45
4.4.4 Ai thực hiện kiểm thử phần mềm . 46
4.4.5 Khi nào kiểm thử dừng . 46
CHƯƠNG 5: LẬP KẾ HOẠCH VÀ ƯỚC LƯỢNG . 48
5.1 VẤN ĐỀ LẬP KẾ HOẠCH VÀ ƯỚC LƯỢNG DỰ ÁN PHẦN MỀM . 48
5.2 ƯỚC LƯỢNG THỜI GIAN VÀ CHI PHÍ . 49
5.2.1 Thước đo kích cỡ của sản phẩm phần mềm . 49
5.2.2 Các kỹ thuật ước lượng chi phí . 52
5.2.3 COCOMO trung gian . 53
5.2.4 COCOMO II . 55
5.2.5 Theo dõi ước lượng thời gian và chi phí . 55
5.3 CÁC THÀNH PHẦN CỦA VIỆC LẬP KẾ HOẠCH PHÁT TRIỂN PHẦN MỀM . 57
5.3.1Khung kế hoạch quản lý dự án phần mềm(SPMP) . 57
5.3.2 Kế hoạch quản lý dự án phần mềm IEEE . 57
5.3.3 Việc lập kế hoạch kiểm thử . 58
5.3.4 Yêu cầu đào tạo . 58
5.3.5 Các chuẩn tài liệu . 58
5.3.6 Công cụ CASE cho việc lập kế hoạch và ước lượng . 59
5.4 KIỂM THỬ VIỆC LẬP KẾ HOẠCH . 59
5.5 LẬP KẾ HOẠCH CHO CÁC DỰ ÁN PHẦN MỀM HƯỚNG ĐỐI TƯỢNG . 59
CHƯƠNG 6: PHA XÁC ĐỊNH YÊU CẦU . 60
6.1 XÁC ĐỊNH YÊU CẦU CỦA KHÁCH HÀNG . 60
6.2 TỔNG QUAN VỀ LUỒNG CÔNG VIỆC XÁC ĐỊNH YÊU CẦU . 60
6.2.1 Hiểu lĩnh vực ứng dụng . 61
6.2.2 Mô hình nghiệp vụ . 61
6.2.3 Các use case . 63
6.2.4 Các yêu cầu ban đầu . 65
6.3 PHA XÁC ĐỊNH YÊU CẦU CỔ ĐIỂN . 65
6.4 BẢN MẪU NHANH . 66
6.5 NHÂN TỐ CON NGƯỜI . 66
6.6 SỬ DỤNG LẠI BẢN MẪU NHANH . 67
6.7 CÁC CÔNG CỤ CASE CHO XÁC ĐỊNH YÊU CẦU . 67
6.8 CÁC THƯỚC ĐO CHO XÁC ĐỊNH YÊU CẦU . 68
6.9 NHỮNG THỬ THÁCH CHO PHA XÁC ĐỊNH YÊU CẦU . 68
6.10 CASE STUDY CHO PHA XÁC ĐỊNH YÊU CẦU . 68
6.10.1 Bài toán . 68
6.10.2 Xây dựng sơ đồ use case tổng quan. 70
6.10.3 Mô tả các use case . 71
CHƯƠNG 7: CÁC PHƯƠNG PHÁP PHÂN TÍCH TRUYỀN THỐNG. 75
7.1 YÊU CẦU TÀI LIỆU ĐẶC TẢ . 75
7.2 CÁC PHƯƠNG PHÁP ĐẶC TẢ . 76
7.2.1 Đặc tả phi hình thức . 76
7.2.2 Phân tích hướng cấu trúc . 77
CHƯƠNG 8: PHƯƠNG PHÁP PHÂN TÍCH HƯỚNG ĐỐI TƯỢNG . 79
8.1 LUỒNG CÔNG VIỆC PHÂN TÍCH . 79
8.2 VIỆC TRÍCH RÚT CÁC LỚP THỰC THỂ . 79
8.3 PHÂN TÍCH HƯỚNG ĐỐI TƯỢNG CHO BÀI TOÁN THANG MÁY . 80
8.4 MÔ HÌNH HÓA CHỨC NĂNG . 80
8.5 MÔ HÌNH HÓA LỚP THỰC THỂ . 82
8.5.1 Trích rút danh từ . 82
8.5.2 CRC Cards . 84
8.7 KIỂM THỬ TRONG PHÂN TÍCH HƯỚNG ĐỐI TƯỢNG. 86
8.8 CÁC CÔNG CỤ CASE CHO PHÂN TÍCH HƯỚNG ĐỐI TƯỢNG . 90
8.9 CASE STUDY CHO PHA PHÂN TÍCH HƯỚNG ĐỐI TƯỢNG . 90
8.9.1. Các scenario . 90
8.9.2 Trích các lớp thực thể . 94
8.9.3 Viết lại các scenario . 96
CHƯƠNG 9: PHA THIẾT KẾ . 97
9.1 TỔNG QUAN VỀ PHA THIẾT KẾ . 97
9.1.1 Dữ liệu và các hành động . 97
9.1.2 Thiết kế và trừu tượng . 97
9.1.3 Thiết kế . 98
9.1.4 Kiểm thử trong pha thiết kế . 99
9.1.5 Kỹ thuật hình thức cho thiết kế chi tiết . 100
9.1.6 Kỹ thuật thiết kế hệ thống thời gian thực . 100
9.1.7 Công cụ CASE cho thiết kế . 101
9.1.8 Thước đo cho thiết kế . 101
9.1.9 Những thách thức của pha thiết kế . 102
9.2 THIẾT KẾ HƯỚNG HÀNH ĐỘNG . 102
9.3 PHÂN TÍCH VA THIẾT KẾ DÒNG DỮ LIỆU . 103
9.3.1 Phân tích dòng dữ liệu . 103
9.3.2 Thiết kế dòng dữ liệu . 108
9.4 THIẾT KẾ HƯỚNG ĐỐI TƯỢNG . 108
9.5 CASE STUDY CHO PHA THIẾT KẾ . 111
9.5.1 Thiết kế cơ sở dữ liệu . 112
9.5.2 Thiết kế dùng bean thay cho control . 114
9.5.3 Thiết kế dùng control DAO và thực thể thuần . 122
9.5.4 Thiết kế theo MVC cải tiến, dùng control DAO và thực thể thuần . 129
CHƯƠNG 10: PHA CÀI ĐẶT VÀ TÍCH HỢP . 136
10.1 CÁC PHƯƠNG PHÁP CÀI ĐẶT VÀ TÍCH HỢP . 136
10.1.1 Luồng công việc cài đặt . 136
10.1.2 Tích hợp . 145
10.2 KIỂM THỬ PHA CÀI ĐẶT VÀ TÍCH HỢP . 149
10.2.1 Luồng công việc kiểm thử cài đặt . 149
10.2.2 Kiểm thử tích hợp . 162
10.4 KIỂM THỬ CHẤP NHẬN . 163
10.5 CASE STUDY CHO PHA CÀI ĐẶT: VIẾT TEST CASE . 163
10.5.1 Test case cho modul thêm phòng mới của khách sạn. 163
10.5.2 Test case cho modul sửa thông tin phòng của khách sạn . 166
10.5.3 Test case cho modul đặt phòng . 168
CHƯƠNG 11: PHA BẢO TRÌ . 177
11.1 PHA BẢO TRÌ SAU KHI CHUYỂN GIAO . 177
11.1.1 Tại sao bảo trì sau khi chuyển giao là cần thiết . 177
11.1.2 Người lập trình bảo trì sau khi chuyển giao yêu cầu những gì? . 177
11.1.3 Quản lý bảo trì sau khi chuyển giao . 179
11.1.4 Bảo trì sau khi chuyển giao với kỹ năng phát triển . 181
11.1.5 Kỹ nghệ ngược . 181
11.1.6 Công cụ CASE cho bảo trì sau khi chuyển giao. 182
10.1.7 Thước đo của bảo trì sau khi chuyển giao . 182
10.1.8 Những thách thức của bảo trì sau khi chuyển giao . 182
11.2 BẢO TRÌ HỆ PHẦN MỀM HƯỚNG ĐỐI TƯỢNG. 183
huyển giao là một khía cạnh thử thách nhất của phần mềm và bạc bẽo nhất Những người quản lý phải chỉ định công việc bảo trì cho những người lập trình giỏi nhất và Trả lương cho họ phù hợp 11.1.3 Quản lý bảo trì sau khi chuyển giao Các vấn đề khác nhau về mặt quản lý bảo trì sau khi chuyển giao cần được xem xét Trước tiên, người lập trình bảo trì nên xem xét tệp bản ghi khuyết điểm Nó bao gồm o Tất cả các lỗi đã được ghi lại mà chưa sửa và o Những đề nghị về các công việc sẽ thực thiện về những khuyết điểm đó Trong một thế giới lý tưởng o Sửa tất cả mọi lỗi ngay lập tức o Sau đó chúng ta công bố phiên bản phần mềm mới ở mọi vị trí Trong thế giới thực o Phân bố các bản ghi lỗi ở tất cả các vị trí o Không có nhân viên để bảo trì ngay lập tức o Thực hiện nhiều thay đổi ở cùng một lúc sẽ rẻ hơn, đặc biệt nếu có nhiều vị trí cài đặt a- Các bản ghi khuyết điểm Cần một cơ chế đối với việc thay đội sản phẩm phần mềm Nếu sản phẩm phần mềm xuất hiện một chức năng không đúng, thì người dùng đưa ra một bản ghi khuyết điểm o Bản ghi đó phải đủ thông tin để cho phép người lập trình bảo trì tái tạo lại vấn đề Theo lý tưởng, mỗi khuyết điểm nên được cố định ngay lập tức o Trong thực tế, tốt nhất chúng ta có thể làm là nghiên cứu sơ bộ ngay lập tức Nếu khuyết điểm đã được ghi lại trước đó: Đưa thông tin trong tệp bản ghi khuyết điểm tới người dùng Nếu nó là một khuyết điểm mới: o Người lập trình bảo trì nên cố gắng tìm Nguyên nhân, Cách để sửa khuyết điểm đó, và Cách làm việc xung quanh vấn đề đó o Khuyết điểm mới được ghi lại vào tệp tường trình phát hiện lỗi, cùng với tài liệu Dánh sách (Listings) Thiết kế (Designs) Sổ tay (Manuals) P T I T Chương 11: Pha bảo trì 180 o Tệp bản ghi khuyết điểm cũng nên chứa những yêu cầu cảu khách hàng để bảo trì thích hợp và hoàn thiện chức năng Nội dung của tệp phải được định độ ưu tiên bởi khách hàng Những chỉnh sửa tiếp theo là một trong những nội dung có độ ưu tiên cao nhất trong tệp o Các bản sao của bản ghi khuyết điểm phải lưu hành tới tất cả Bao gồm: ước lượng khi nào khuyết điểm được sửa o Nếu cùng thất bại xảy ra ở một vị trí khác, người dùng có thể xác định Khả năng làm việc xung quanh khuyết điểm Thời gian mà khuyết điểm được sửa b- Cho phép thay đổi phần mềm Bảo trì sửa lỗi o Chỉ định một người lập trình bảo trì xác định lỗi và nguyên nhân của lỗi, sau đó sửa lỗi đó o Kiểm thử sửa chữa, kiểm thử toàn bộ phẩn mềm (kiểm thử hồi quy) o Cập nhật tài liệu để phản ánh những thay đổi đã thực hiện o Cập nhật những lời giải thích ban đầu để phản ánh Những gì đã thay đổi, Tại sao nó được thay đổi, Ai thực hiện thay đổi, và Khi nào Bảo trì thích hợp và hoàn thiện o Giống với bảo trì sửa lỗi, ngoại trừ không có bản ghi khuyết điểm o Thay vì có thay đổi trong yêu cầu Điều gì sẽ xảy ra nếu người lập trình không kiểm thử những lỗi đã được sửa một cách thích đáng? o Trước khi phần mềm được phân phối, thì phần mềm phải được kiểm thử bởi nhóm SQA Bảo trì sau khi chuyển giao là cực kỳ khó Kiểm thử là khó và tiêu tốn thời gian o Được thực hiện bởi nhóm SQA Kỹ thuật phiên bản cơ sở và các bản sao riêng phải được sử dụng Người lập trình thực hiện các thay đổi đối với các bản sao chép riêng của các mô đun mã và kiểm thử chúng Người lập trình đóng băng phiên bản trước đó, và đưa ra phiên bản chỉnh sửa cho nhóm SQA để kiểm thử SQA thực hiện kiểm thử trên phiên bản cơ sở của tất cả các mô đun mã c- Bảo đảm việc bảo trì Bảo trì không là sự cố gắng một lần (Maintenance is not a one-time effort) Phải lập kế hoạch cho bảo trì xuyên suốt toàn bộ vòng đời phần mềm o Luồng công việc thiết kế - sử dụng kỹ thuật ẩn dấu thông tin o Luồng cài đặt – lựa chọn đặt tên có ý nghĩa để thuận tiện cho những người lập trình trong tương lai P T I T Chương 11: Pha bảo trì 181 o Tài liệu phẩi được hoàn thiện và chính xác và phản ánh đúng phiên bản hiện thời của mỗi mô đun mã Trong suốt quá trình bảo trì sau khi chuyển giao, bảo trì không phải giàn o Luôn luôn biết rõ việc bảo trì trong tương lai là không thể tránh được d- Vấn đề của bảo trì lặp Việc thay đổi những yêu cầu phần mềm gây nhiều khó khăn cho đội phát triển Việc thay đổi thường xuyên thường gây bất lợi cho việc bảo trì phần mềm Thay đổi bài toán đích The problem is exacerbated during postdelivery maintenance Càng nhiều thay đổi o Thì sản phẩm phần mềm càng khác xa so với thiết kế ban đầu o Việc thay đổi trong tương lai càng trở nên khó hơn o Tài liệu trở nên kém tin cậy hơn bình thường o Các file kiểm thử hồi quy không được cập nhật o Viết lại toàn bộ có thể cần thiết đối với bảo trì trong tương lai Giải pháp hiển nhiên o Đóng băng các đặc tả khi chúng được ký đến tận khi chuyển giao sản phẩm phần mềm o Sau mỗi yêu cầu của bảo trì hoàn thiện, đóng băng các đặc tả trong 3 tháng hoặc 1 năm Trong thực tế o Khách hàng có thể đưa ra những thay đổi ngay ngày hôm sau o Nếu bằng lòng với giá cả, thì khách hàng có thể đưa ra những thay đổi hàng ngày “Ai trả tiền thì người ấy có tiền”(“He who pays the piper calls the tune”) 11.1.4 Bảo trì sau khi chuyển giao với kỹ năng phát triển Những kỹ năng cần thiết cho bảo trì gồm o Khả năng xác định nguyên nhân gây ra lỗi của một phần mềm lớn Cũng cần thiết trong suốt quá trình tích hợp và kiểm thử sản phẩm o Khả năng thực hiện chức năng có hiệu quả mà không cần có tài liệu chính xác Tài liệu hiếm khi được hoàn thiện đến tận khi chuyển giao o Kỹ năng phân tích, thiết kế, cài đặt và kiểm thử Tất cả bốn hoạt động được thực thi trong suốt quá trình phát triển Những kỹ năng cần thiết cho bảo trì sau khi chuyển giao giống với những kỹ năng của tất cả các luồng công việc khác Điểm chính o Người lập trình bảo trì không phải chỉ có kỹ năng rộng ở mọi lĩnh vực mà những kỹ năng đó phải ở trình độ cao o Sự chuyên môn hóa không thể có ở những người lập trình bảo trì 11.1.5 Kỹ nghệ ngược Khi nào tài liệu duy nhất đối với bảo trì sau khi chuyển giao là mã nguồn thì o Bắt đầu với mã o Tái tạo lại thiết kế o Tái tạo lại các đặc tả (cực kỳ khó) o Công cụ CASE có thể trở giúp ((flowcharters, các mục đích trực quan khác) P T I T Chương 11: Pha bảo trì 182 Kỹ nghệ lại o Kỹ nghệ ngược, được sinh ra bởi kỹ nghệ tiên tiến (Reverse engineering, followed by forward engineering) o Mức độ thấp hơn tới cao hơn tới thấp hơn của trừu tượng (Lower to higher to lower levels of abstraction) Xây dựng lại o Việc cải thiện sản phẩm phần mềm mà không có thay đổi chức năng phần mềm o Ví dụ: Cải thiện việc bảo trì Xây dựng lại(XP, agile processes) Điều gì sẽ xảy ra nếu chúng ta chỉ có mã thực thi? o Xem xét phần mềm như hộp đen o Suy luận những đặc tả từ hành vi của phần mềm hiện thời 11.1.6 Công cụ CASE cho bảo trì sau khi chuyển giao Công cụ điểu khiển cấu hình là cần thiết o Công cụ thương mại CCC o Công cụ mã nguồn mở cvs Các công cụ kỹ nghệ lại o Các công cụ thương mại IBM Rational Rose, Together o Các công cụ mã nguồn mở Doxygen Các công cụ theo dõi – phát hiện o Công cụ thương mại IBM Rational ClearQuest o Công cụ mã nguồn mở Bugzilla 10.1.7 Thước đo của bảo trì sau khi chuyển giao Về bản chất, các hoạt động của bảo trì sau khi chuyển giao là những hoạt động của quá trình phát triển o Các thước đo đối với luồng công việc phát triển Các thước đo bản ghi khuyết điểm (Defect report metrics) o Sự phân loại khuyết điểm o Trạng thái khuyết điểm (Defect status) 10.1.8 Những thách thức của bảo trì sau khi chuyển giao Chương này miêu tả rất nhiều thách thức Thách thức khó nhất cần giải quyết o Bảo trì khó hơn phát triển, nhưng o Những người phát triển có xu hướng nhìn xuống (tend to look down) những người bảo trì và o Thường xuyên được trả tiền lương nhiều hơn P T I T Chương 11: Pha bảo trì 183 11.2 BẢO TRÌ HỆ PHẦN MỀM HƯỚNG ĐỐI TƯỢNG Bề ngoài, mô hình hướng đối tượng khuyến kích việc bảo trì theo bốn cách o Phần mềm bao gồm các đơn vị độc lập o Đóng gói (độc lập về mặt khái niệm) o Ẩn giấu thông tin (độc lập về mặt vật lý) o Truyền tham số là các giao tiếp duy nhất (Message-passing is the sole communication) Thực thế hơi khác (The reality is somewhat different) Ba cản trở Một là: Cây phân cấp kế thừa có thể lớn Để hình dung ra những gì displayNode làm trong BalancedBinaryTreeClass, chúng ta phải kiểm tra tỉ mỉ cây hoàn thiện o Cây hoàn thiện có thể trải rộng toàn bộ phần mềm o Khác xa “những đơn vị độc lập ” (A far cry from “independent units” ) o Giải pháp o Công cụ CASE có thể dàn mỏng cây kế thừa (A CASE tool can flatten the inheritance tree) Hai là:Hậu quả của liên kết động và đa hình P T I T Chương 11: Pha bảo trì 184 Hệ thống không hoạt động khi gọi myFile.open () Phiên bản nào của open có chứa lỗi? o Công cụ CASE không thể trợ giúp (công cụ tĩnh) o Chúng ta phải theo dõi (kiểm tra) Liên kết động và đa hình có thể có o Ảnh hưởng tích cực tới đội phát triển nhưng o Ảnh hưởng tiêu cực đối với bảo trì Ba là: Hậu quả của kế thừa Tạo một lớp mới qua kế thừa Lớp con mới o Không ảnh hưởng tới lớp cha, và o Không ảnh hưởng tới bất cứ lớp con o Chỉnh sửa lớp con mới này o Một lần nữa, không ảnh hưởng o Chỉnh sửa lớp cha o Tất cả các lớp con kế thừa đều bị ảnh hưởng o “Fragile base class problem” Kế thừa có o Ảnh hưởng tích đối với người phát triển, nhưng o Ảnh hưởng tiêu cực đối với bảo trì 11.3 KIỂM THỬ PHA BẢO TRÌ Người bảo trì xem xét phần mềm như một tập các thành phần có liên quan lỏng lẻo o Chúng không liên quan đến sự phát triển phần mềm Kiểm thử hồi quy là cần thiết o Lưu giữ các trường hợp kiểm thử và đầu ra của chúng, chỉnh sửa nếu cần thiết P T I T
File đính kèm:
- Nhập môn Công nghệ phần mềm - Trần Đình Quế.pdf