Bài giảng Công nghệ phần mềm

Chương 1:Tổng quan về Công nghệ Phần mềm

1.1 Mở đầu

Ngày nay, sự phát triển phần mềm ngày càng thực sự khó kiểm soát được; các

dự án phần mềm thường kéo dài và vượt quá chi phí cho phép. Những nhà lập trình

chuyên nghiệp phải cố gắng hoàn thành các dự án phần mềm một cách có chất

lượng, đúng hạn trong chi phí cho phép.

Mục đích của chương này là đưa ra những nhận định cơ bản và tạo nên một

bức tranh cơ sở về những phương pháp tiếp cận khác nhau của công việc trong công

nghệ phần mềm. Các vấn đề cần làm rõ, chi tiết thêm sẽ được trình bày ở các

chương tiếp sau của giáo trình.

pdf 62 trang phuongnguyen 9081
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Công nghệ phần mềm", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Công nghệ phần mềm

Bài giảng Công nghệ phần mềm
Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 
BÀI GIẢNG MÔN HỌC 
MÔN: CÔNG NGHỆ PHẦN MỀM 
Đà Nẵng 2011 
 BỘ GIÁO DỤC VÀ ĐÀO TẠO 
TRƯỜNG ĐẠI HỌC ĐÔNG Á 
Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 
Lời nói đầu 
Nhập môn Công Nghệ Phần Mềm là môn học nhằm giúp cho sinh viên có 
kiến thức cơ bản nhất trong lĩnh vực công nghệ phần mềm. Qua môn học này 
sinh viên có cái nhìn khái quát về qui trình phát triển phần mềm, hiểu biết và 
thực hiện các giai đoạn trong qui trình trên một phần mềm cụ thể dựa trên những 
phương pháp, kỹ thuật trong quá trình thu thập yêu cầu, phân tích, thiết kế và cài 
đặt, viết tài liệu đã được minh họa cụ thể trong giáo trình. Mục tiêu giáo trình 
là sinh viên có thể hiểu được những yêu cầu công việc cần phải làm ở mỗi giai 
đoạn của qui trình, để có thể đảm trách công việc ở một trong các giai đoạn làm 
phần mềm trong những nhóm dự án. 
Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 
Mục lục 
Lời nói đầu ................................................................................................................. 2 
Mục lục ....................................................................................................................... 3 
Danh mục hình vẽ ..................................................................................................... 6 
Danh mục bảng biểu ................................................................................................. 8 
Chương 1: Tổng quan về Công nghệ Phần mềm ................................................... 9 
1.1 Mở đầu............................................................................................................ 9 
1.2 Định nghĩa và đặc tính của sản phẩm phần mềm ........................................... 9 
1.2.1 Định nghĩa phần mềm ........................................................................... 9 
1.2.2 Phân loại và đặc tính của sản phẩm phần mềm. ................................... 9 
1.3 Định nghĩa và các đặc trưng của Công nghệ phần mềm .............................. 12 
1.3.1 Định nghĩa Công nghệ phần mềm ...................................................... 12 
1.3.1 Các đặc trưng của Công nghệ phần mềm ........................................... 12 
1.3.2 Nội dung công việc của một kỹ sư phần mềm .................................... 13 
1.3.3 Lịch sử ngành công nghệ phần mềm .................................................. 13 
1.4 Mô hình phát triển phần mềm ...................................................................... 14 
1.4.1 Các công đoạn trong phát triển phần mềm ......................................... 14 
1.4.2 Các mô hình phát triển phần mềm ...................................................... 15 
1.4.3 Mô hình tuần tự tuyến tính WaterFall – Sequency model .................. 16 
1.4.4 Mô hình bản mẫu Prototype Model .................................................... 16 
1.4.5 Mô hình xoắn ốc Boehm’s Spiral Model ............................................ 17 
1.4.6 Mô hình RAD ..................................................................................... 19 
1.5 Các tiêu chuẩn dùng trong ngành Công nghiệp phần mềm ......................... 19 
Chương 2: Quản lý dự án phần mềm ................................................................... 23 
2.1 Dự án phần mềm và sự cần thiết việc quản lý dự án phần mềm .................. 23 
2.1.1 Định nghĩa dự án và quản lý dự án ..................................................... 23 
2.1.2 Sự cần thiết của Quản lý dự án phần mềm. ........................................ 23 
2.2 Các thành phần trong mô hình làm việc của một dự án phần mềm ............. 23 
2.2.1 Vai trò và nhiệm vụ của các nhóm trong dự án phần mềm ................ 24 
2.2.2 Các nhân sự khác trong dự án ............................................................. 28 
2.2.3 Các yếu tố ảnh hưởng đến các nhóm trong dự án .............................. 28 
2.3 Ước lượng dự án ........................................................................................... 29 
2.3.1 Độ đo ................................................................................................... 29 
2.3.2 Độ đo LOC - Metric hướng quy mô phần mềm ................................. 30 
2.3.3 Điểm chức năng Function Point – Metric hướng chức năng .............. 30 
Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 
2.3.4 Mô hình ước lượng thực nghiệm ........................................................ 32 
2.3.5 Mô hình ước lượng thực nghiệm COCOMO ...................................... 32 
2.4 Lập kế hoạch dự án ................................................................................ 33 
2.4.2 Cấu trúc kế hoạch thực hiện dự án: .................................................... 34 
2.4.3 Quy trình lập kế hoạch thực hiện dự án .............................................. 35 
2.4.4 Lập lịch dự án ..................................................................................... 35 
2.5 Quản lý rủi ro ............................................................................................... 40 
2.5.1 Định nghĩa rủi ro và quản lý rủi ro ..................................................... 40 
2.5.2 Nhận diện rủi ro .................................................................................. 40 
2.5.3 Quy trình quản lý rủi ro ...................................................................... 41 
Chương 3: Phân tích hệ thống ............................................................................... 42 
3.1 Mục tiêu của phân tích hệ thống .................................................................. 42 
3.2 Công việc và các vấn đề chính trong phân tích hệ thống ............................. 42 
3.3 Qui trình phân tích hệ thống ......................................................................... 42 
3.4 Phân thích hệ thống hướng cấu trúc ............................................................. 43 
3.4.1 Lược đồ dòng chảy dữ liệu DFD ........................................................ 45 
3.4.2 Lược đồ dịch chuyển trạng thái STD .................................................. 47 
3.4.3 Lược đồ quan hệ thực thể ERD .......................................................... 47 
3.4.4 Từ điển dữ liệu .................................................................................... 48 
3.5 Phân tích hệ thống hướng đối tượng ............................................................ 49 
3.5.1 Giới thiệu USE CASE ........................................................................ 50 
3.5.2 Sự cần thiết phải có USE CASE ......................................................... 51 
3.5.3 Mô hình hóa USE CASE .................................................................... 51 
3.5.4 Lược đồ USE CASE ........................................................................... 53 
3.5.5 Xây dựng mô hình Use Case .............................................................. 56 
3.5.6 Mô hình đối tượng .............................................................................. 57 
3.5.7 Tổng kết: ............................................................................................. 62 
Chương 4: Thiết kế phần mềm .............................................................................. 63 
4.1 Khái niệm về thiết kế phần mềm .................................................................. 63 
4.1.1 Khái niệm ............................................................................................ 63 
4.1.2 Tầm quan trọng ................................................................................... 63 
4.2 Quá trình thiết kế .......................................................................................... 63 
4.2.1 Các hoạt động thiết kế chính trong một hệ thống phần mềm lớn. ...... 64 
4.2.2 Cơ sở của thiết kế phần mềm .............................................................. 65 
4.3 Thiết kế giao diện người dùng ..................................................................... 65 
4.3.1 Tiêu chuẩn về thiết kế giao diện ......................................................... 65 
Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 
4.3.2 Công cụ thiết kế giao diện .................................................................. 66 
4.3.3 Quy trình thiết kế giao diện ................................................................ 66 
4.3.4 Định hướng về thiết kế giao diện ........................................................ 66 
4.4 Phương pháp thiết kế hướng cấu trúc ........................................................... 67 
4.4.1 Thiết kế phần mềm cổ điển ................................................................. 67 
4.4.2 Phân chia module ................................................................................ 68 
4.4.3 Thiết kế dữ liệu ................................................................................... 70 
4.5 Phương pháp thiết kế hướng đối tượng ........................................................ 70 
4.5.1 Khái niệm mô hình động .................................................................... 71 
4.5.2 Sự cộng tác – Lược đồ cộng tác .......................................................... 72 
4.5.3 Lược đồ tuần tự ................................................................................... 74 
4.5.4 Lược đồ trạng thái ............................................................................... 76 
4.5.5 Lược đồ hoạt động .............................................................................. 78 
4.5.6 Hoàn chỉnh lược đồ lớp chi tiết .......................................................... 79 
4.5.7 Tổng kết: ............................................................................................. 81 
Chương 5: Lập trình ............................................................................................... 82 
5.1 Ngôn ngữ lập trình ....................................................................................... 82 
5.1.1 Đặc trưng của ngôn ngữ lập trình ....................................................... 82 
5.1.2 Lựa chọn ngôn ngữ lập trình ............................................................... 83 
5.1.3 Ngôn ngữ lập trình và và sự ảnh hưởng tới kỹ nghệ phần mềm ........ 84 
5.2 Phong cách lập trình ..................................................................................... 84 
5.2.1 Tài liệu chương trình .......................................................................... 84 
5.2.2 Khai báo dữ liệu .................................................................................. 85 
5.2.3 Xây dựng câu lệnh .............................................................................. 85 
5.2.4 Vào/ra .................................................................................................. 85 
5.3 Lập trình tránh lỗi ......................................................................................... 86 
5.3.1 Lập trình thứ lỗi .................................................................................. 87 
5.3.2 Lập trình phòng thủ ............................................................................. 87 
5.4 Lập trình hướng hiệu quả thực hiện ............................................................. 88 
5.4.1 Tính hiệu quả chương trình ................................................................. 88 
5.4.2 Hiệu quả bộ nhớ .................................................................................. 89 
5.4.3 Hiệu quả vào/ra ................................................................................... 89 
5.5 Tổng kết ........................................................................................................ 89 
Chương 6: Kiểm nghiệm và bảo trì phần mềm ................................................... 90 
6.1 Kiểm nghiệm phần mềm .............................................................................. 90 
6.1.1 Khái niệm kiểm nghiệm phần mềm .................................................... 90 
Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 
6.1.2 Các nguyên lý kiểm nghiệm phần mềm ............................................. 91 
6.1.3 Phương pháp kiểm nghiệm – Test Case ............................................. 91 
6.2 Chiến thuật kiểm nghiệm phần mềm............................................................ 94 
6.2.1 Khái niệm ............................................................................................ 94 
6.2.2 Chiến thuật kiểm nghiệm phần mềm phổ biến ................................... 95 
6.2.3 Kiểm nghiệm từng modul – Unit test ................................................. 95 
6.2.4 Kiểm nghiệm tích hợp ........................................................................ 96 
6.3 Bảo trì phần mềm ....................................................................................... 100 
6.3.1 Khái niệm và phân loại bảo trì .......................................................... 100 
6.3.2 Trình tự nghiệp vụ bảo trì ................................................................. 101 
Tài liệu tham khảo ................................................................................................ 104 
Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 
Chương 1:Tổng quan về Công nghệ Phần mềm 
1.1 Mở đầu 
Ngày nay, sự phát triển phần mềm ngày càng thực sự khó kiểm soát được; các 
dự án phần mềm thường kéo dài và vượt quá chi phí cho phép. Những nhà lập trình 
chuyên nghiệp phải cố gắng hoàn thành các dự án phần mềm một cách có chất 
lượng, đúng hạn trong chi phí cho phép. 
Mục đích của chương này là đưa ra những nhận định cơ bản và tạo nên một 
bức tranh cơ sở về những phương pháp tiếp cận khác nhau của công việc trong công 
nghệ phần mềm. Các vấn đề cần làm rõ, chi tiết thêm sẽ được trình bày ở các 
chương tiếp sau của giáo trình. 
1.2 Định nghĩa và đặc tính của sản phẩm phần mềm 
1.2.1 Định nghĩa phần mềm 
Chương trình máy tính là một trình tự các chỉ thị (lệnh) để hướng dẫn máy 
tính làm việc nhằm hoàn thành một công việc nào đó do con người yêu cầu. 
Phần mềm là một hệ thống các chương trình có thể thực hiện trên máy tính 
nhằm hỗ trợ các nhà chuyên môn trong từng lĩnh vực chuyên ngành thực hiện tốt 
nhất các thao tác nghiệp vụ của mình. Nhiệm vụ chính yếu của phần mềm là cho 
phép các nhà chuyên môn thực hiện các công việc của họ trên máy tính dễ dàng 
và nhanh chóng hơn so với khi thực hiện cùng công việc đó trong thế giới thực. 
Hoạt động của mọi phần mềm là sự mô phỏng lại các họat động của thế giới 
thực trong một góc độ thu hẹp nào đó trên máy tính. Quá trình sử dụng một phần 
mềm chính là quá trình người dùng thực hiện các công việc trên máy tính để 
hoàn tất một công việc tương đương trong thế giới thực. 
1.2.2 Phân loại và đặc tính của sản phẩm phần mềm. 
1.2.2.1 Phân loại sản phẩm phần mềm 
Generic Product: là sản phẩm đóng gói và bán rộng rãi trên thị trường. 
Bespoke Product: là sản phẩm được phát triển theo yêu cầu đặc thù của từng 
khách hàng. 
 ... 
1: do while x=0 
2: if y=0 then 
3: z=0; 
4: elseif k=0 then 
5: z=1; 
6: else x=1; 
7: endif; 
 endif; 
8: enddo 
9: end 
Hình 4.3: Ví dụ xây dựng đồ thị dòng chảy 
Phải phân rã tất cả các điều kiện phức trở thành các điều kiện đơn 
Mỗi node mô tả một điều kiện đơn được gọi là predicate 
Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 
Hình 4.4: Phân rã điều kiện phức thành điều kiện đơn 
Hình 4.5: Ví dụ Procedure AnalyzeTriangle 
Các đường độc lập cơ bản 
- Đường thực thi 
- Đường thực thi cơ bản 
- Các đường thực thi độc lập cơ bản 
Từ node bắt đầu đến node kết thúc, các đường thực thi cơ bản được 
liệt kê theo một thứ tự nào đó để đảm bảo rằng: đường đang liệt kê 
ít nhất đi qua một cạnh chưa được duyệt qua bởi các đường đã liệt 
kê trước đó 
- Tổng số đường thực thi cơ bản độc lập nhau được tính bằng 
V = P + 1; trong đó P là số node phân nhánh (predicate) 
Đối với chương trình con DoSomething 
- Tổng số đường : 
V = 3 + 1 = 4 
- Đường 1: 1-9 
- Đường 2: 1-2-3-8-1 
- Đường 3: 1-2-4-5-7-8-1 
Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 
- Đường 4: 1-2-4-6-7-8-1 
 Chú ý: dấu 3 chấm () mang ý nghĩa “không quan tâm”, từ đó có thể đi theo 
bất kỳ cạnh nào bởi vì các cạnh sau đó đã được duyệt qua rồi 
Đối với chương trình con AnalyzeTriangle 
- Tổng số đường : 
V = 6 + 1 = 7 
- Đường 1: 1-3-12 
- Đường 2: 1-2-3-12 
- Đường 3: 1-2-4-5-12 
- Đường 4: 1-2-4-6-7-12 
- Đường 5: 1-2-4-6-8-7-12 
- Đường 6: 1-2-4-6-8-9-10-12 
- Đường 7: 1-2-4-6-8-9-11-12 
4.1.3.2 Thiết lập các Test Case 
- Thiết lập một test-case cho mỗi đường thực thi cơ bản 
- Dựa vào thuật giải để tìm ra một dữ liệu input, sau đó tính ra dữ liệu output 
hay đáp ứng mong đợi của thuật giải 
- Chú ý: có thể không tạo ra được test-case cho một đường thực thi nào đó 
- Ví dụ Sinh test-case cho chương trình con AnalyzeTriangle 
- Test-case cho đường 1: 
Input: a = 3, b = 2, c = 0 
Output mong đợi: type = “Error” 
- Test-case cho đường 2: 
Input: a = 17, b = 5, c = 4 
Output mong đợi: type = “Error” 
- Test-case cho đường 3: 
 Input: a = 6, b = 6, c = 6 
Output mong đợi: type = “Equilateral” 
4.2 Chiến thuật kiểm nghiệm phần mềm 
4.2.1 Khái niệm 
Chiến thuật kiểm tra phần mềm tích hợp các phương pháp tạo ra test-case 
trở thành một chuỗi các bước có thứ tự để có thể kiểm nghiệm phần mềm thành 
công với chi phí thấp. 
Bao gồm các công việc 
– Lập kế hoạch kiểm nghiệm 
– Sinh test-case 
Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 
– Thực hiện kiểm nghiệm, thu thập kết qủa và đánh giá 
Verification: các hành động để đảm bảo cho phần mềm được hiện thực đúng 
theo một chức năng cụ thể nào đó “Are we building the product right?” 
Validation: các hành động để đảm bảo cho phần mềm được xây dựng theo 
đúng yêu cầu của khách hàng “Are we building the right product?” 
4.2.2 Chiến thuật kiểm nghiệm phần mềm phổ biến 
- Bắt đầu tại từng module rồi tích hợp lớn dần đến toàn bộ hệ thống. 
- Các kỹ thuật khác nhau được sử dụng thích hợp tại các giai đoạn khác 
nhau. 
- Kiểm nghiệm có thể được tiến hành bởi người phát triển phần mềm, nhưng 
đối với các dự án lớn thì việc kiểm nghiệm phải được tiến hành bởi một 
nhóm độc lập. 
- Kiểm nghiệm và sửa lỗi là các hoạt động độc lập nhưng việc sửa lỗi phải 
phù hợp với các chiến thuật kiểm nghiệm. 
Hình 4.6: Chiến thuật kiểm nghiệm phần mềm phổ biến 
4.2.3 Kiểm nghiệm từng modul – Unit test 
- Tiến hành kiểm nghiệm trên từng đơn vị nhỏ nhất của phần mềm, đó là 
module mã nguồn, sau khi đã thiết kế, mã hoá và biên dịch thành công 
- Thường dùng kỹ thuật kiểm nghiệm white-box 
- Có thể tiến hành kiểm nghiệm cùng lúc nhiều module. 
- Một số vấn đề trong việc xây dựng các test case 
+ Test case nào? 
+ Dữ liệu đầu vào và đầu ra có tử đâu? 
+ Tính độc lập/phụ thuộc hoạt động của các module 
Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 
Hình 4.7: Kiểm nghiệm module 
Mỗi module mã nguồn không phải là một chương trình hoàn chỉnh và đôi khi 
phải gọi các module chưa được kiểm nghiệm khác có thể phải thiết lập driver 
và/hoặc stub: phí tổn khá lớn (70%) 
Driver là một chương trình chính có nhiệm vụ nhận dữ liệu kiểm nghiệm, 
chuyển dữ liệu đó xuống cho module để kiểm tra và in ra các kết quả kiểm tra tương 
ứng. 
Stub thay thế các module được gọi bởi module đang kiểm tra. 
 Làm thế nào để giảm các chi phí tạo driver hay stub 
4.2.4 Kiểm nghiệm tích hợp 
- Từng module mã nguồn đã hoạt động đúng. Liệu khi kết hợp chúng lại 
thành một nhóm lớn chúng có hoạt động đúng không ? 
- Phải tiến hành kiểm nghiệm tích hợp để phát hiện lỗi liên quan đến giao 
tiếp giữa các module. 
- Tránh tích hợp kiểu big-bang: tất cả các module được kết hợp lại, và toàn 
bộ chương trình sẽ được kiểm nghiệm một lúc 
- Nên tích hợp tăng dần: từ trên xuống hoặc từ dưới lên 
Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 
4.2.4.1 Kiểm nghiệm tích hợp từ trên xuống 
Hình 4.8: Kiểm nghiệm tích hợp top-down 
- Module chính được dùng như là driver, và stub được thay thế bởi các module 
con trực tiếp của của module chính này. 
- Tuỳ thuộc vào cách tích hợp theo chiều sâu (depth-first) hoặc chiều 
ngang(breath-first), mỗi stub con được thay thế một lần bởi module tương 
ứng đã kiểm nghiệm. 
- Tiến hành kiểm nghiệm khi có sự thay thế mới 
- Tiến hành kiểm nghiệm hồi quy để phát hiện các lỗi khác trong từng module 
- Tích hợp kiểu từ trên xuống theo hình thức depth-first 
- Tiết kiệm được chi phí tạo các driver 
4.2.4.2 Kiểm nghiệm tích hợp từ dưới lên 
- Các module mức thấp nhất được kết hợp thành các nhóm thể hiện một chức 
năng con đặc biệt của phần mềm. 
- Một driver được tạo ra để thao tác các test-case 
- Các module được kiểm nghiệm theo từng nhóm (Cluster): là nhóm các 
module mà module phía trên cần đến khi kiểm nghiệm 
- Driver được bỏ đi và các nhóm module được kết hợp dần lên phía trên trong 
sơ đồ phân cấp của chương trình. 
- Tiết kiệm được chi phí tạo các stub 
Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 
Hình 4.9: Kiểm nghiệm tích hợp bottom-up 
4.2.4.3 Kiểm nghiệm hồi quy 
- Việc kết hợp các module lại với nhau có thể ảnh hưởng đến vòng lặp điều 
khiển, cấu trúc dữ liệu hay I/O chia sẻ trong một số module 
- Điều đó làm lộ ra một số lỗi không thể phát hiện được khi tiến hành kiểm 
nghiệm theo đơn vị 
Phải kiểm nghiệm hồi quy khi tích hợp 
- Kiểm nghiệm hồi quy có thể được tiến hành thủ công bằng cách thực hiện 
lại các test-case đã tạo ra. Hoặc có thể dùng một công cụ capture-playback 
để thực hiện tự động 
4.2.4.4 Kiểm nghiệm tính năng 
Kiểm nghiệm tính năng hiểu theo cách đơn giản nhất là: kiểm tra các chức 
năng của phần mềm đáp ứng được nhu cầu của khách hàng đã được xác định trong 
văn bản đặc tả yêu cầu của phần mềm 
Áp dụng kỹ thuật black-box 
Kiểm nghiệm tính năng bao gồm 
- Xem xét lại cấu hình phần mềm theo lược đồ triển khai 
- Kiểm nghiệm alpha 
- Kiểm nghiệm beta 
Kiểm nghiệm alpha 
- Được tiến hành ngay tại nơi sản xuất phần mềm. 
- Nhà phát triển phần mềm sẽ quan sát người sử dụng dùng sản phẩm 
và ghi nhận lại những lỗi phát sinh để sửa chữa. 
Kiểm nghiệm beta 
- Phần mềm được kiểm tra bên ngoài phạm vi của đơn vị sản xuất. 
Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 
- Khách hành trực tiếp sử dụng và ghi nhận lỗi để báo lại cho nhà phát 
triển sửa chữa. 
4.2.4.5 Kiểm nghiệm hướng đối tượng 
Về cơ bản chiến thuật kiểm nghiệm hướng đối tượng cũng theo thứ tự giống 
như kiểm nghiệm cổ điển: 
Hình 4.10: Kiểm nghiệm hướng đối tượng 
Không thể tách rời từng tác vụ của đối tượng/lớp để kiểm nghiệm 
– Tác vụ được đóng bao trong lớp 
– Các lớp con có thể override một tác vụ nào đó 
Kiểm nghiệm đơn vị hướng đối tượng tập trung vào các lớp kiểm nghiệm 
hành vi của lớp 
4.2.4.6 Kiểm nghiệm tích hợp hướng đối tượng 
Khái niệm sơ đồ phân cấp không còn nhiều ý nghĩa trong chương trình hướng 
đối tượng kiểm nghiệm tích hợp theo cách khác 
Hai hình thức kiểm nghiệm tích hợp hướng đối tượng 
– Kiểm nghiệm trên cơ sở thread: tích hợp các lớp tạo thành một thread 
để phục vụ cho một input nào đó của chương trình 
– Kiểm nghiệm trên cơ sở sử dụng: các lớp client sẽ được tích hợp để sử 
dụng dịch vụ nào đó cung cấp bởi các lớp server 
4.2.4.7 Kiểm nghiệm theo kịch bản 
Dựa vào các use-case để soạn ra các kịch bản 
Ví dụ: một kịch bản cho hệ thống đăng ký môn học qua WEB 
1. Login với username = “e59306547”, password = “6547” 
2. Chọn chức năng đăng ký môn học 
3. Chọn 5 nhóm môn học của 5 môn: CNPM, AI, XLTHS, PTTK, XLSS 
trong đó có 2 nhóm trùng thời khoá biểu 
4. Nhấn nút Submit 
 Chương trình phải báo lỗi và liệt kê 2 nhóm bị trùng thời khoá biểu 
Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 
4.3 Bảo trì phần mềm 
4.3.1 Khái niệm và phân loại bảo trì 
Bảo trì là công việc tu sửa, thay đổi phần mềm đã được phát triển (chương 
trình, dữ liệu, JCL, các loại tư liệu đặc tả, . . .) theo những lý do nào đó 
Các hình thái bảo trì: bảo trì để 
– Tu chỉnh 
– Thích hợp 
– Cải tiến 
– Phòng ngừa 
Bảo trì để tu sửa 
Là bảo trì khắc phục những khiếm khuyết có trong phần mềm. 
Một số nguyên nhân điển hình: 
– Kỹ sư phần mềm và khách hiểu nhầm nhau 
– Lỗi tiềm ẩn của phần mềm do sơ ý của lập trình hoặc khi kiểm thử 
chưa bao quát hết 
– Vấn đề tính năng của phần mềm: không đáp ứng được yêu cầu về bộ 
nhớ, tệp, . . . Thiết kế sai, biên tập sai . . . 
– Thiếu chuẩn hóa trong phát triển phần mềm (trước đó) 
Kỹ nghệ ngược (Reverse Engineering): dò lại thiết kế để tu sửa 
Những lưu ý 
– Mức trừu tượng 
– Tính đầy đủ 
– Tính tương tác 
– Tính định hướng 
Bảo trì để thích hợp 
Là tu chỉnh phần mềm theo thay đổi của môi trường bên ngoài nhằm duy trì và 
quản lý phần mềm theo vòng đời của nó. 
Thay đổi phần mềm thích nghi với môi trường: công nghệ phần cứng, môi 
trường phần mềm. 
Những nguyên nhân chính: 
– Thay đổi về phần cứng (ngoại vi, máy chủ,. . .) 
– Thay đổi về phần mềm (môi trường): đổi OS 
– Thay đổi cấu trúc tệp hoặc mở rộng CSDL 
Bảo trì để cải tiến 
Là việc tu chỉnh hệ phần mềm theo các yêu cầu ngày càng hoàn thiện hơn, đầy 
đủ hơn, hợp lý hơn. 
Những nguyên nhân chính: 
Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 
– Do muốn nâng cao hiệu suất nên thường hay cải tiến phương thức truy 
cập tệp. 
– Mở rộng thêm chức năng mới cho hệ thống. 
– Cải tiến quản lý kéo theo cải tiến tư liệu vận hành và trình tự công 
việc. 
– Thay đổi người dùng hoặc thay đổi thao tác. 
Còn gọi là tái kỹ nghệ (re-engineering). 
Mục đích: đưa ra một thiết kế cùng chức năng nhưng có chất lượng cao hơn. 
Các bước thực hiện: 
– Xây dựng lưu đồ phần mềm 
– Suy dẫn ra biểu thức Bun cho từng dãy xử lý 
– Biên dịch bảng chân lí 
– Tái cấu trúc phần mềm 
Bảo trì để phòng ngừa 
Là công việc tu chỉnh chương trình có tính đến tương lai của phần mềm đó sẽ 
mở rộng và thay đổi như thế nào. 
Thực ra trong khi thiết kế phần mềm đã phải tính đến tính mở rộng của nó, nên 
thực tế ít khi ta gặp bảo trì phòng ngừa nếu như phần mềm được thiết kế tốt . 
Mục đích: 
– Sửa đổi để thích hợp với yêu cầu thay đổi sẽ có của người dùng 
– Thực hiện những thay đổi trên thiết kế không tường minh 
– Hiểu hoạt động bên trong chương trình 
– Thiết kế / lập trình lại 
– Sử dụng công cụ CASE 
4.3.2 Trình tự nghiệp vụ bảo trì 
Quy trình bảo trì là gì ? Đó là quá trình trong vòng đời của phần mềm, cũng 
tuân theo các pha phân tích, thiết kế, phát triển và kiểm thử từ khi phát sinh vấn đề 
cho đến khi giải quyết xong. 
Thao tác bảo trì: Gồm 2 loại 
– Tu chỉnh cái đã có (loại 1) 
– Thêm cái mới (loại 2) 
Hiểu phần mềm đã có 
- Theo tài liệu nắm chắc các chức năng 
- Theo tài liệu chi tiết hãy nắm vững đặc tả chi tiết, điều kiện kiểm thử,... 
- Dò đọc chương trình nguồn, hiểu trình tự xử lý chi tiết của hệ thống 
3 việc trên đều là công việc thực thi trên bàn 
Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 
Tu sửa phần mềm đã có 
- Bảo trì chương trình nguồn, tạo các môđun mới và dịch lại 
- Thực hiện kiểm thử unit và tu chỉnh những mục liên quan có trong tư 
liệu đặc tả 
- Chú ý theo sát tác động của môđun được sửa đến các thành phần khác 
trong hệ thống 
Phát triển phần mềm mới 
- Khi thêm chức năng mới phải phát triển chương trình cho phù hợp với 
yêu cầu 
- Cần tiến hành từ thiết kế, lập trình, gỡ lỗi và kiểm thử unit 
- Phản ảnh vào giao diện của phần mềm (thông báo, phiên bản,...) 
Hình 4.11: Sơ đồ bảo trì 
Lập biểu quản lý bảo trì 
Cần quản lý tình trạng bảo trì 
Lập biểu quản lý tình trạng bảo trì 
- Ngày tháng, giờ 
- Nguyên nhân 
- Tóm tắt cách khắc phục 
- Chi tiết khắc phục, hiệu ứng làn sóng 
- Người làm bảo trì 
- Số công 
Những vấn đề lưu ý khi bảo trì phần mềm 
Phương pháp cải tiến thao tác bảo trì: 
Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 
- Sáng kiến trong quy trình phát triển phần mềm 
- Sáng kiến trong quy trình bảo trì phần mềm 
- Phát triển những kỹ thuật mới cho bảo trì 
Sáng kiến trong quy trình phát triển phần mềm 
1. Chuẩn hóa mọi khâu trong phát triển phần mềm 
2. Người bảo trì chủ chốt tham gia vào giai đoạn phân tích và thiết kế 
3. Thiết kế để dễ bảo trì 
Sáng kiến trong quy trình bảo trì phần mềm 
1. Sử dụng các công cụ hỗ trợ phát triển phần mềm 
2. Chuẩn hóa thao tác bảo trì và thiết bị môi trường bảo trì 
3. Lưu lại những thông tin sử bảo trì 
4. Dự án nên cử một người chủ chốt của mình làm công việc bảo trì sau 
khi dự án kết thưc giai đoạn phát triển 
Phát triển những kỹ thuật mới cho bảo trì 
- Công cụ phần mềm hỗ trợ bảo trì 
- Cơ sở dữ liệu cho bảo trì 
- Quản lý tài liệu, quản lý dữ liệu, quản lý chương trình nguồn, quản lý 
dữ liệu thử, quản lý sử bảo trì 
- Trạm bảo trì tính năng cao trong hệ thống mạng lưới bảo trì với máy 
chủ thông minh 
Đại học Đông Á Bài giảng môn Công nghệ Phần mềm 
Tài liệu tham khảo 
1. Bài giảng Công nghệ Phần mềm – Nguyễn Cao Trí, Đại học Bách 
Khoa Tp Hồ Chí Minh 
2. Bài giảng Công nghệ Phần mềm – Bộ môn Công nghệ Phần mềm, 
Viện Công nghệ Thông tin và Truyền thông, Đại học Bách Khoa Hà 
Nội. 
3. Bài giảng Công nghệ Phần mềm – Nguyễn Việt Hà, Đại học Bách 
Khoa Hà Nội 
4. Bài giảng Công nghệ Phần mềm – Nguyễn Văn Vỵ, Đại học Công 
Nghệ, Đại học Quốc gia Hà Nội 
5. Giáo trình Phân tích và thiết kế hệ thống thông tin với UML – Ts 
Dương Kiều Hoa, Tôn Thất Hoà An 
6. Giáo trình Phân tích thiết kế hệ thống thông tin – Học viện Công 
nghệ Bưu chính Viễn thông. 
7. Introduction to Software Engineering – Ronald J. Leach, CRC Press 
8. Software Engineering – Ian Sommerville , Fifth edition 
9. Software Engineering – A practitioner’s approach, R.S.Pressman, 
McGraw-Hill, 1997 
10. OMG Unified Modeling Language Specification, version 1.3, Object 
Management Group (www.omg.org), 1999 
11. UML Toolkit, Hans – Erik Eriksson & Magnus Penker, 1998 
12. Object–Oriented Software Engineering, A Use-Case Driven 
Approach, I. Jacobson, ACM Press/Addison-Wesley, 1992 
13. Object– Oriented Analysis and Design with Applications, G. Booch, 
The Benjamin Cummings Publishing Company, 1994 
14. Website: www.dayhoctructuyen.com, 

File đính kèm:

  • pdfbai_giang_cong_nghe_phan_mem.pdf