Tải bản đầy đủ (.pdf) (129 trang)

GIÁO TRÌNH NHẬP MÔN CÔNG NGHỆ PHẦN MỀM

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.97 MB, 129 trang )

TRƢỜNG ĐẠI HỌC AN GIANG
KHOA KỸ THUẬT - CÔNG NGHỆ - MÔI TRƢỜNG

NHẬP MÔN CÔNG NGHỆ PHẦN MỀM

ThS. NGUYỄN THỊ MỸ TRUYỀN

AN GIANG, 4-2017



Tài liệu giảng dạy “Nhập môn công nghệ phần mềm”, do tác giả ThS.
Nguyễn Thị Mỹ Truyền, công tác tại Khoa Kỹ thuật – Công nghệ - Môi trường thực
hiện. Tác giả đã báo cáo nội dung và được Hội đồng Khoa học và đào tạo Khoa
thông qua ngày 30 tháng 3 năm 2017.

Tác giả biên soạn

ThS. NGUYỄN THỊ MỸ TRUYỀN

P. Trƣởng đơn vị

P. Trƣởng bộ môn

TS. ĐOÀN THANH NGHỊ

ThS. PHẠM HỮU DŨNG

Hiệu trƣởng

AN GIANG, 4-2017







LỜI NÓI ĐẦU
Ngày nay, ngành công nghiệp phần mềm trên thế giới đang rất phát triển.
Nhiều người đã thống nhất rằng công nghiệp phần mềm đã trở thành một mũi nhọn
để con người tiến nhanh vào nền kinh tế tri thức. Tuy nhiên, việc tạo ra một sản
phẩm phần mềm không phải là một công việc đơn giản và dễ dàng. Để làm ra một
sản phẩm phức tạp và ít hữu hình này đòi hỏi những người tham gia phát triển phải
có những phần kiến thức chuyên môn sâu - đủ để tạo ra được một sản phẩm phần
mềm chất lượng, đáp ứng yêu cầu người dùng và mang lại hiệu quả kinh tế cao.
Vì vậy kiến thức về công nghệ phần mềm là một phần rất cần thiết đối với
những người bắt đầu tiếp cận với lĩnh vực công nghệ thông tin nói chung và đặc biệt
là đối với sinh viên ngành Công nghệ thông tin và Kỹ thuật phần mềm nói tiêng tại
Đại học An Giang. Tài liệu nhập môn công nghệ phần mềm được biên soạn nhằm
mục tiêu trang bị kiến thức nền tảng giúp sinh viên tiếp cận với chuyên môn được tốt
hơn. Nội dung tài liệu giới thiệu tổng quan kiến thức về các giai đoạn trong qui trình
phát triển phần mềm như lập kế hoạch, quản lý, phân tích, thiết kế, viết mã, kiểm
thử,… dựa trên những phương pháp, kỹ thuật đã được thực hiện trong lĩnh vực phát
triển phần mềm. Đồng thời, kiến thức của môn học này được dùng làm cơ sở để sinh
viên học tiếp các môn chuyên ngành ở các học kì tiếp theo. Nội dung tài liệu bao
gồm 5 chương:
Chương 1 trình bày về quá trình phát triển của công nghệ phần mềm và giới
thiệu các mô hình phát triển phần mềm đã và đang áp dụng.
Chương 2 giới thiệu các kiến thức cơ bản về quản lý dự án phần mềm và các
hoạt động được thực hiện trong việc quản lý dự án phần mềm.
Chương 3 giới thiệu các hoạt động phân tích yêu cầu và giới thiệu một số mô
hình được thực hiện trong quá trình phân tích phần mềm.

Chương 4 giới thiệu các hoạt động thiết kế và mã hóa (code).
Chương 5 giới thiệu các khái niệm, phương pháp và kỹ thuật trong kiểm thử
phần mềm, trong đó giới thiệu một số ví dụ kiểm thử theo phương pháp white box
dùng kỹ thuật đồ thị dòng chảy để thiết kế ca kiểm thử.
Do lần đầu tiên biên soạn tài liệu nên không thể tránh khỏi những hạn chế và
thiếu sót. Rất mong nhận được sự góp ý chân thành từ các bạn sinh viên, các đồng
nghiệp và các chuyên gia trong chuyên môn để tài liệu được hoàn thiện tốt hơn.
An Giang, tháng 3 năm 2017
Ngƣời biên soạn

ThS. Nguyễn Thị Mỹ Truyền
i


ii


LỜI CAM ĐOAN
Tôi xin cam đoan đây là tài liệu giảng dạy của riêng tôi. Nội dung tài liệu
giảng dạy có xuất xứ rõ ràng.
Long Xuyên, ngày 25 tháng 3 năm 2017
Ngƣời biên soạn

ThS. Nguyễn Thị Mỹ Truyền

iii


iv



MỤC LỤC
Trang
CHƢƠNG 1 TỔNG QUAN VỀ CÔNG NGHỆ PHẦN MỀM .............................. 1
1.1 GIỚI THIỆU TỔNG QUAN ............................................................................ 1
1.1.1 Sự cần thiết của công nghệ phần mềm ....................................................... 1
1.1.2 Đặc điểm của phần mềm ............................................................................ 4
1.2 ĐỊNH NGHĨA ................................................................................................... 5
1.2.1 Định nghĩa phần mềm ................................................................................ 5
1.2.2 Định nghĩa công nghệ phần mềm .............................................................. 5
1.2.3 Phân loại phần mềm ................................................................................... 7
1.2.4 Chu trình phát triển phần mềm (System development life cycle – SDCL) 8
1.2.5 Chất lượng phần mềm .............................................................................. 10
1.3 CÁC MÔ HÌNH PHÁT TRIỂN PHẦN MỀM ............................................... 11
1.3.1 Nhóm mô hình tuyến tính ........................................................................ 13
1.3.2 Nhóm mô hình lặp ................................................................................... 15
1.3.3 Mô hình khác ........................................................................................... 17
Câu hỏi cuối chương ............................................................................................. 22
Bài tập thảo luận ................................................................................................... 23
Vấn đề của phát triển phần mềm kiểu cổ điển .................................................. 23
Câu hỏi thảo luận .............................................................................................. 33
CHƢƠNG 2 QUẢN LÝ DỰ ÁN PHẦN MỀM..................................................... 34
2.1 ĐẶT VẤN ĐỀ ................................................................................................ 34
2.2 CÁC KHÁI NIỆM .......................................................................................... 35
2.2.1 Dự án........................................................................................................ 35
2.2.2 Quản lý dự án ........................................................................................... 35
2.3 QUẢN LÝ DỰ ÁN PHẦN MỀM................................................................... 35
2.3.1 Vai trò của người quản lý dự án............................................................... 35
2.3.2 Các lĩnh vực cần quản lý: ......................................................................... 36
2.4 CÁC HOẠT ĐỘNG QUẢN LÝ DỰ ÁN ....................................................... 37

2.4.1 Lập kế hoạch dự án (project planning) .................................................... 37
2.4.2 Lập lịch dự án (project scheduling) ......................................................... 39
2.4.3 Ước lượng dự án ...................................................................................... 41
2.4.4 Quản lý rủi ro ........................................................................................... 46
2.4.5 Quản lý nhân lực dự án ............................................................................ 47

v


Câu hỏi cuối chương ............................................................................................. 49
Bài tập thảo luận.................................................................................................... 50
CHƢƠNG 3 PHÂN TÍCH YÊU CẦU PHẦN MỀM............................................ 54
3.1 GIỚI THIỆU ................................................................................................... 54
3.2 PHÂN LOẠI YÊU CẦU ................................................................................. 55
3.2.1 Yêu cầu người dùng và yêu cầu hệ thống................................................. 55
3.2.2 Yêu cầu chức năng và yêu cầu phi chức năng.......................................... 56
3.3 PHÂN TÍCH YÊU CẦU ................................................................................. 57
3.3.1 Khảo sát hiện trạng ................................................................................... 58
3.3.2 Thu thập và xác định yêu cầu ................................................................... 58
3.3.3 Đặc tả yêu cầu .......................................................................................... 61
3.3.4 Đánh giá yêu cầu ...................................................................................... 62
3.3.5 Tài liệu hóa yêu cầu.................................................................................. 62
3.4 CÁC MÔ HÌNH PHÂN TÍCH ........................................................................ 63
3.4.1 Vai trò của mô hình phân tích .................................................................. 63
3.4.2 Các loại mô hình phân tích ....................................................................... 64
Câu hỏi cuối chương ......................................................................................... 68
Bài tập thảo luận ................................................................................................ 69
CHƢƠNG 4 THIẾT KẾ VÀ THỰC HIỆN PHẦN MỀM ................................... 72
4.1 THIẾT KẾ ....................................................................................................... 72
4.1.1 Tổng quan trong thiết kế .......................................................................... 72

4.1.2 Thiết kế kiến trúc...................................................................................... 77
4.1.3 Thiết kế dữ liệu......................................................................................... 77
4.1.4 Thiết kế thủ tục ......................................................................................... 78
4.1.5 Thiết kế giao diện ..................................................................................... 78
4.1.6 Design pattern (tạm dịch mẫu thiết kế) .................................................... 84
4.2 THỰC HIỆN ................................................................................................... 86
4.2.1 Vai trò của lập trình .................................................................................. 86
4.2.2 Các chiến lược cài đặt và tích hợp mô đun............................................... 89
Câu hỏi cuối chương ......................................................................................... 92
CHƢƠNG 5 KIỂM THỬ VÀ BẢO TRÌ PHẦN MỀM........................................ 93
5.1 KIỂM THỬ PHẦN MỀM ............................................................................... 93
5.1.1 Giới thiệu .................................................................................................. 93
5.1.2 Các khái niệm ........................................................................................... 95
5.1.3 Phương pháp kiểm thử ............................................................................. 97

vi


5.1.4 Công cụ kiểm thử ................................................................................... 103
5.2 BẢO TRÌ PHẦN MỀM ................................................................................ 103
5.2.1 Giới thiệu bảo trì phần mềm .................................................................. 103
5.2.2 Phân loại bảo trì ..................................................................................... 104
5.2.3 Các vấn đề trong bảo trì ......................................................................... 105
Câu hỏi cuối chương ....................................................................................... 106
TÀI LIỆU THAM KHẢO .................................................................................... 107

vii


viii



DANH SÁCH BẢNG
Bảng 1. Tỉ lệ thành công, thách thức và thất bại của các dự án ....................... 2
Bảng 2. Các công cụ hỗ trợ cho các giai đoạn phát triển phần mềm ............. 10
Bảng 3. TUFP cho dự án có mức độ phức tạp: trung bình ............................ 44
Bảng 4. Ngôn ngữ lập trình và tỉ lệ LOC/FP ................................................. 44
Bảng 5. Cho bảng tham số cơ sở .................................................................... 45
Bảng 6. Thông tin so sánh giữa các cách tiếp cận ......................................... 91

ix


x


DANH SÁCH HÌNH
Hình 1. Tỉ lệ thành công, thách thức và thất bại năm 2012 ............................. 2
Hình 2. Chương trình và cấu trúc dữ liệu......................................................... 5
Hình 3. Các lĩnh vực chuyên môn có liên quan .............................................. 6
Hình 4. Hoạt động xây dựng căn nhà ............................................................... 9
Hình 5. Các giai đoạn của mô hình thác nước ............................................... 14
Hình 6. Mô hình RAD.................................................................................... 15
Hình 7. Mô hình bản mẫu .............................................................................. 16
Hình 8. Mô hình xoắn ốc ............................................................................... 17
Hình 9. Mô hình chữ V .................................................................................. 18
Hình 10. Mô hình cấu trúc hệ thống các đối tượng........................................ 19
Hình 11. Tiến trình phát triển hướng sử dụng lại ........................................... 19
Hình 12. Mô hình phát triển khung làm việc ................................................. 21
Hình 13. Phát triển phần mềm theo Agile ...................................................... 25

Hình 14. Ba tiêu chí đánh giá thành công của một dự án phần mềm............. 27
Hình 15. Agile và Scrum ................................................................................ 28
Hình 16. Mô hình scrum ................................................................................ 31
Hình 17. Các thành viên tham gia dự án ........................................................ 36
Hình 18. Các nhóm qui trình quản lý dự án ................................................... 37
Hình 19. Qui trình lập kế hoạch dự án (Iam Sommerville, trang 625, 2011 ) 38
Hình 20. Qui trình lập lịch biểu dự án ........................................................... 39
Hình 21. Ví dụ danh sách các hoạt động của dự án ....................................... 40
Hình 22. Mạng các hoạt động ........................................................................ 40
Hình 23. Biểu đồ thời gian thực hiện các hoạt động ...................................... 41
Hình 24. Biểu đồ phân bổ nhân sự ................................................................. 41
Hình 25. Mức chi phí phải trả do sót lỗi qua các giai đoạn ........................... 54
Hình 26. Các yêu cầu phi chức năng.............................................................. 57
Hình 27. Nhìn hệ thống từ nhiều góc độ ........................................................ 63
Hình 28. Ví dụ sơ đồ cây chức năng .............................................................. 64
Hình 29. Mô hình DFD xử lý đặt hàng - cửa hàng nước giải khát ................ 65
xi


Hình 30. Ví dụ các trạng thái của một đơn đặt hàng nước giải khát .............. 65
Hình 31. Ví dụ mô hình thực thể kết hợp - cửa hàng nước giải khát (NGK) 66
Hình 32. Mô hình hướng đối tượng – lớp (class) ........................................... 67
Hình 33. Mô hình - SafeHome ....................................................................... 69
Hình 34. Mô hình xử lý đơn hàng .................................................................. 69
Hình 35. Mô hình quản lý giải bóng đá.......................................................... 70
Hình 36. Mô hình đăng ký học phần trực tuyến ............................................. 70
Hình 37. Mô hình hướng đối tượng ............................................................... 71
Hình 38. Các yếu tố ảnh hưởng đến phân chia mô đun ................................. 74
Hình 39. Trừu tượng thủ tục........................................................................... 76
Hình 40. Trừu tượng dữ liệu .......................................................................... 76

Hình 41. Làm mịn từng bước ......................................................................... 77
Hình 42. Kiến trúc môđun theo chức năng .................................................... 77
Hình 43. Giao diện 1 ...................................................................................... 81
Hình 44. Giao diện 2 ...................................................................................... 81
Hình 45. Giao diện 3 ...................................................................................... 81
Hình 46. Giao diện tương tác trực tiếp ........................................................... 82
Hình 47. Giao diện dạng thực đơn ................................................................. 82
Hình 48. Giao diện dạng menu....................................................................... 83
Hình 49. Dạng biểu đồ ................................................................................... 83
Hình 50. Cấu trúc mẫu Abstract Factory Method Pattern .............................. 86
Hình 51. Sơ đồ lớp quản lý địa chỉ và số điện thoại ...................................... 86
Hình 52. Định dạng tốt ................................................................................... 89
Hình 53. Định dạng không đạt ....................................................................... 89
Hình 54. Các mô đun được phân chia như hình cây ...................................... 90
Hình 55. Mô đun logic và mô đun hoạt động................................................. 91
Hình 56. Mô hình kiểm thử chữ V ................................................................. 96
Hình 57. Qui trình kiểm thử (Iam Sommerville, trang 210, 2011) ................ 97
Hình 58. Đồ thị dòng chảy theo cấu trúc lệnh cơ bản .................................... 99
Hình 59. Chuyển từ lưu đồ sang đồ thị dòng chảy ......................................... 99
Hình 60. Chuyển từ các dòng lệnh sang đồ thị dòng chảy ............................. 99
xii


Hình 61. Ví dụ đồ thị ................................................................................... 100
Hình 62. Ví dụ đồ thị dòng chảy xác định tam giác..................................... 100

xiii


xiv



DANH MỤC TỪ VIẾT TẮT
Từ viết tắt

Diễn giải

CMM

Capability Maturity Model – Tiêu chuẩn chất lượng phần mềm

CSDL

Cơ sở dữ liệu

DFD

Data Flow Diagram - Mô hình dòng dữ liệu

ERD

Entity Relationship Diagram - Mô hình thực thể kết hợp

FP

Function Point – điểm chức năng

J2EE

Java 2 Platform, Enterprise Edition


ISO

International Organization for Standardization – Tổ chức tiêu chuẩn

JAD

Join Application Design - Thiết kế kết hợp người dùng

LOC

Lines Of Code – số dòng mã lệnh

MHC-PMS

Hệ thống quản lý chăm sóc sức khỏe bệnh nhân

RAD

Rapid Application Development – Phát triển nhanh ứng dụng

SDLC

System Development Life Cycle – Chu trình phát triển phần mềm

STD

Mô hình trạng thái, mô hình hành vi

TUFP


Total unadjusted function points – Tổng điểm chức năng chưa điều
chỉnh

xv


xvi


CHƢƠNG 1
TỔNG QUAN VỀ CÔNG NGHỆ PHẦN MỀM
Trong cuộc sống hiện đại ngày nay, phần mềm có mặt khắp nơi để trợ giúp
con người dưới hình thức của chiếc máy tính (computer) hay các thiết bị điện tử.
Phần mềm đã góp phần làm cho cuộc sống của chúng ta hiện đại hơn, nhiều công
việc được trở nên dễ dàng và đơn giản hơn. Để hiểu hơn về lĩnh vực phát triển phần
mềm, chương tổng quan này sẽ trình bày vai trò quan trọng của phần mềm trong
cuộc sống và sự phát triển của lĩnh vực phần mềm. Nội dung chương này sẽ tập trung
giới thiệu một số khái niệm và các mô hình phát triển phần mềm phổ biến. Kiến thức
về các mô hình phát triển phần mềm có thể giúp sinh viên hiểu được các mô hình
phát triển phần mềm cơ bản, phân biệt được sự khác nhau giữa các mô hình, nắm
được ưu và nhược điểm của từng mô hình và có thể xác định loại hệ thống nào nên
áp dụng mô hình phát triển phần mềm nào cho phù hợp.
1.1 GIỚI THIỆU TỔNG QUAN
1.1.1 Sự cần thiết của công nghệ phần mềm
Ngày nay, phần mềm giữ một vai trò rất quan trọng trong các hệ thống máy
tính. Phần mềm vừa là nền tảng của nhiều hoạt động xã hội và tổ chức, vừa góp phần
tạo ra phong cách làm việc hiện đại, hiệu quả và tăng năng suất lao động đáng kể cho
con người. Ngày càng nhiều hệ thống được phần mềm điều khiển, trợ giúp. Ứng
dụng phần mềm có mặt trong mọi lĩnh vực xã hội, kinh tế, chính trị, quân sự…. Đến

thế kỉ thứ 21, phần mềm đã trở thành nhân tố quyết định về những cơ hội mới trong
mọi lĩnh vực từ giáo dục cơ bản cho đến công nghệ phát sinh.
Tuy nhiên, sự phát triển của phần mềm luôn phải đối đầu với nhiều khó khăn
và thách thức. Trước nhất là phần cứng và hệ điều hành đã ảnh hưởng không nhỏ đến
sự phát triển của phần mềm. Ngoài ra, yếu tố kinh tế luôn là vấn đề quan trọng trong
quá trình phát triển phần mềm. Để xây dựng một hệ thống phần mềm, chúng ta
thường phải đầu tư một khoản ngân sách khá lớn. Theo nhiều thống kê cho thấy, chi
phí cho việc xây dựng phần mềm chiếm một phần đáng kể của GNP (chỉ tiêu kinh tế)
ở tất cả các nước phát triển. Để giảm bớt khó khăn này nhà phát triển phần mềm
thường dùng giải pháp lựa chọn kỹ thuật thực hiện nhanh hơn để giảm giá thành.
Mặc khác, kỹ thuật mới mang lại không ít khó khăn mới cho các công ty phần mềm
như khó bảo trì, thời gian huấn luyện dài, thiếu kinh nghiệm làm việc với kỹ thuật
mới,… Theo kết quả thực hiện của hơn 9000 dự án hoàn thành trong năm 2004, tỉ lệ
thành công một cách trọn vẹn chỉ chiếm khoảng 29% số lượng các dự án phần mềm.
Cuộc khủng hoảng phần mềm bắt đầu từ năm 1970. Vào thời điểm này rất
nhiều dự án phần mềm vượt quá kết ra như sau:
- Mọi con đường độc lập trong một mô đun cần được thực hiện ít nhất 1 lần
- Mọi ràng buộc lôgic được thực hiện cả phía đúng (true) & phía sai (false)
- Tất cả các vòng lặp ở biên và cả các biên vận hành phải được thực hiện
- Mọi cấu trúc dữ liệu nội tại được dùng để bảo đảm hiệu lực thi hành của nó.
Các bƣớc kiểm thử hộp trắng
1. Chuẩn bị test case:
-

Xây dựng đồ thị dòng chảy
Xác định các đường thực thi độc lập cơ bản
Xây dựng các test case tương ứng với đường thực thi độc lập cơ bản

2.


Vận hành kiểm thử

3.

So sánh kết quả

4.

Sửa lỗi.

 Đồ thị dòng chảy
 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 công thức:
V = P + 1; trong đó P là số node phân nhánh (predicate)
 Đồ thị dòng chảy

98


-

Mỗi node hình tròn biểu diễn một hoặc một vài tác vụ (hơi khác so với
lưu đồ thuật giải)

-

Cạnh có hướng miêu tả đường thực thi


-

Đồ thị dòng chảy được xây dựng từ lưu đồ thuật giải

Hình 58. Đồ thị dòng chảy theo cấu trúc lệnh cơ bản

Hình 59. Chuyển từ lưu đồ sang đồ thị dòng chảy

procedure: DoSomething
1:

do while x=0

2:

if y=0 then

3:
4:

z=0;
elseif k=0 then

5:

z=1;

6:


else x=1;

7:

endif;
endif;

8: enddo
9: end
Hình 60. Chuyển từ các dòng lệnh sang đồ thị dòng chảy

99


Ví dụ:
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…
Đườ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
Ví dụ: Đối
AnalyzeTriangle

với

chương


trình

con
Hình 61. Ví dụ đồ thị

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

Hình 62. Ví dụ đồ thị dòng chảy xác định tam giác

Đường 7: 1-2-4-6-8-9-11-12
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:
Output mong đợi:

a = 3, b = 2, c = 0
type = “Error”


Test-case cho đường 2:
Input:
100

a = 17, b = 5, c = 4


×