1.1.2. Đặc trưng của phần mềm
Đặc trưng của phần mềm khác với các đặc trưng của phần cứng, nên việc phát
triển phần mềm gặp rất nhiều khó khăn và chi phí cho phần mềm cao. Dưới đây là các
yếu tố tạo ra sự phức tạp trong quá trình phát triển cũng như sử dụng và bảo trì phần
mềm.
a. Phần mềm không được chế tạo theo nghĩa cổ điển
Phần mềm cũng được thiết kế, phát triển như phần cứng, nhưng nó không định
hình trước. Chỉ khi phát triển xong người ta có sản phẩm cụ thể mới hiểu được nó có
hiệu quả hay không.
Giá thành của phần cứng chủ yếu bị chi phối bởi giá thành nguyên vật liệu và
chúng ta tương đối dễ kiểm soát. Trong khi đó, giá thành phần mềm chủ yếu tập trung
vào chi phí nhân công. Quá trình phát triển phần mềm phụ thuộc vào con người (hiểu
biết, khả năng vận dụng, kinh nghiệm và cách thức quản lý) và được tiến hành phát triển
trong điều kiện môi trường (kỹ thuật, xã hội) đa dạng và không ngừng thay đổi. Do đó,
chúng ta rất khó ước lượng được chi phí cũng như hiệu quả của phần mềm.
b. Phần mềm không hỏng đi nhưng thoái hóa theo thời gian
Phần mềm không cảm ứng đối với những tác động của môi trường vốn gây cho
phần cứng bị mòn cũ đi, nhưng nó cũng thoái hóa theo thời gian.
Thực tế, phần mềm trải qua thời gian sử dụng thì cần phải được thay đổi (bảo trì)
đề đáp ứng nhu cầu luôn thay đổi của tổ chức sử dụng nó. Mỗi khi thay đổi, phần mềm
sẽ xuất hiện thêm một số khiếm khuyết mới không thể tránh, điều này làm cho số lỗi
tiềm ẩn trong phần mềm tăng lên. Dần dần, phần mềm bị thoái hóa do tỷ lệ sai hỏng
ngày cảng tăng lên đến mức gây nên những thiệt hại không thể chấp nhận được.
Việc bảo trì phần mềm phức tạp hơn nhiều và có bản chất khác hẳn so với bảo trì
phần cứng do sự phức tạp của hệ thống phần mềm và sự không có sẵn phần thay thế cho
bộ phận bị lỗi. Chúng ta không thay thế bộ phận bị lỗi bởi cái có sẵn mà thực thế phải
tạo ra một module mới. Do đó, thông thường chỉ có nhà sản xuất phần mềm mới bảo trì
(sửa chữa) được hỏng hóc.B
c. Phần lớn phần mềm được xây dựng từ đầu, ít khi được lắp ráp từ thành
phần có sẵn
- Phần mềm không có danh mục các thành phần cố định như phần cứng.
- Phần mềm thường được đặt hàng theo một đơn vị hoàn chỉnh, theo yêu cầu riêng
của khách hàng.
- Phần mềm ít khi có thể lắp ráp theo một khuôn mẫu có sẵn. Yêu cầu với phần
mềm thay đổi theo môi trường cụ thể mà ở đó nó được xây dựng. Môi trường của
phần mềm (gồm phần cứng, phần mềm nền, con người và tổ chức) không thể
định dạng từ trước và lại thay đổi thường xuyên.
63 trang |
Chia sẻ: thanhle95 | Lượt xem: 526 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Bài giảng Công nghệ phần mềm (Phần 1) - Phạm Thị Minh Thương, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TRƯỜNG ĐẠI HỌC PHẠM VĂN ĐỒNG
KHOA CÔNG NGHỆ THÔNG TIN
----
PHẠM THỊ MINH THƯƠNG
BÀI GIẢNG
CÔNG NGHỆ PHẦN MỀM
Dành cho sinh viên bậc Đại học chuyên ngành Công nghệ thông tin
Quảng Ngãi, tháng 12 năm 2018
TRƯỜNG ĐẠI HỌC PHẠM VĂN ĐỒNG
KHOA CÔNG NGHỆ THÔNG TIN
----
PHẠM THỊ MINH THƯƠNG
BÀI GIẢNG
CÔNG NGHỆ PHẦN MỀM
Dành cho sinh viên bậc Đại học chuyên ngành Công nghệ thông tin
--TÀI LIỆU LƯU HÀNH NỘI BỘ--
Bài giảng Công nghệ phần mềm
MỤC LỤC
LỜI NÓI ĐẦU ................................................................................................................ 1
Chương 1. MỞ ĐẦU ...................................................................................................... 2
1.1. PHẦN MỀM VÀ CÁC LỚP PHẦN MỀM ...................................................... 2
1.1.1. Phần mềm ................................................................................................ 2
1.1.2. Đặc trưng của phần mềm ........................................................................ 3
1.1.3. Các lớp phần mềm ................................................................................... 4
1.1.4. Phân loại phần mềm ................................................................................ 4
1.2. KIẾN TRÚC CÁC THÀNH PHẦN CỦA PHẦN MỀM .................................. 6
1.2.1. Thành phần giao tiếp (giao diện) ............................................................ 6
1.2.2. Thành phần dữ liệu .................................................................................. 6
1.2.3. Thành phần xử lý .................................................................................... 7
1.3. CÔNG NGHỆ PHẦN MỀM ............................................................................. 8
1.3.1. Lịch sử ra đời .......................................................................................... 8
1.3.2. Định nghĩa và mục tiêu ........................................................................... 9
1.3.3. Chất lượng phần mềm ........................................................................... 10
1.3.4. Các đối tượng nghiên cứu ..................................................................... 12
1.4. VÒNG ĐỜI PHÁT TRIỂN PHẦN MỀM....................................................... 12
1.4.1. Giai đoạn xác định ................................................................................ 12
1.4.2. Giai đoạn phát triển ............................................................................... 13
1.4.3. Giai đoạn bảo trì .................................................................................... 13
1.5. QUY TRÌNH CÔNG NGHỆ PHẦN MỀM .................................................... 14
1.5.1. Quy trình 2 giai đoạn............................................................................. 14
1.5.2. Quy trình 3 giai đoạn............................................................................. 15
1.5.3. Quy trình 4 giai đoạn............................................................................. 16
1.5.4. Quy trình 5 giai đoạn............................................................................. 17
1.5.5. Quy trình 6 giai đoạn............................................................................. 18
1.6. MÔ HÌNH TIẾN TRÌNH PHẦN MỀM .......................................................... 19
1.6.1. Mô hình thác nước – Waterfall model .................................................. 20
1.6.2. Mô hình mẫu thử – Prototyping model ................................................. 21
1.6.3. Mô hình xoắn ốc – Sprial model ........................................................... 22
1.6.4. Mô hình tăng trưởng ............................................................................. 24
1.6.5. Mô hình chữ V ...................................................................................... 25
1.6.6. Các công nghệ thế hệ thứ 4 (Fourth Generation Techniques – 4GT) ... 26
Bài giảng Công nghệ phần mềm
1.7. PHƯƠNG PHÁP, CÔNG CỤ PHÁT TRIỂN PHẦN MỀM .......................... 27
1.7.1. Phương pháp xây dựng phần mềm ........................................................ 27
1.7.2. Công cụ và môi trường phát triển phần mềm ....................................... 30
1.8. CÂU HỎI TRẮC NGHIỆM, BÀI TẬP THẢO LUẬN .................................. 31
Chương 2. XÁC ĐỊNH YÊU CẦU, PHÂN TÍCH VÀ ĐẶC TẢ YÊU CẦU .............. 32
2.1. MÔ TẢ YÊU CẦU ......................................................................................... 32
2.1.1. Tên công việc ........................................................................................ 32
2.1.2. Người thực hiện ..................................................................................... 33
2.1.3. Thời gian, địa điểm ............................................................................... 33
2.1.4. Cách thức tiến hành và các quy định liên quan ..................................... 33
2.2. PHÂN LOẠI YÊU CẦU ................................................................................. 34
2.2.1. Yêu cầu chức năng ................................................................................ 34
2.2.2. Yêu cầu phi chức năng .......................................................................... 36
2.3. CÁC BƯỚC XÁC ĐỊNH YÊU CẦU ............................................................. 37
2.3.1. Khảo sát hiện trạng ................................................................................ 37
2.3.2. Lập danh sách các yêu cầu .................................................................... 39
2.4. PHÂN TÍCH VÀ ĐẶC TẢ YÊU CẦU .......................................................... 41
2.4.1. Đại cương .............................................................................................. 41
2.4.2. Nghiên cứu khả thi ................................................................................ 42
2.4.3. Các nguyên lý phân tích ........................................................................ 43
2.4.4. Phân tích có cấu trúc ............................................................................. 44
2.4.5. Phân tích hướng đối tượng .................................................................... 46
2.4.6. Đặc tả yêu cầu phần mềm ..................................................................... 48
2.5. MÔ HÌNH HÓA YÊU CẦU ........................................................................... 51
2.5.1. Mô hình luồng dữ liệu ........................................................................... 52
2.5.2. Các bước lập sơ đồ luồng dữ liệu .......................................................... 52
2.6. LÀM BẢN MẪU TRONG QUÁ TRÌNH PHÂN TÍCH ................................ 54
2.6.1. Các bước làm bản mẫu .......................................................................... 54
2.6.2. Lợi ích và hạn chế của phát triển bản mẫu ............................................ 55
2.7. CÂU HỎI TRẮC NGHIỆM, BÀI TẬP THẢO LUẬN .................................. 56
Chương 3. THIẾT KẾ PHẦN MỀM ............................................................................ 58
3.1. TỔNG QUAN ................................................................................................. 58
3.1.1. Khái niệm thiết kế phần mềm ............................................................... 58
3.1.2. Tầm quan trọng ..................................................................................... 59
3.1.3. Kết quả thiết kế phần mềm ................................................................... 60
Bài giảng Công nghệ phần mềm
3.1.4. Phương pháp thiết kế phần mềm ........................................................... 62
3.1.5. Thiết kế phần mềm và các yêu cầu chất lượng ..................................... 63
3.1.6. Chất lượng thiết kế ................................................................................ 65
3.2. THIẾT KẾ DỮ LIỆU ...................................................................................... 69
3.2.1. Tổng quan .............................................................................................. 69
3.2.2. Kết quả của thiết kế dữ liệu ................................................................... 69
3.2.3. Quá trình thiết kế ................................................................................... 70
3.2.4. Thiết kế dữ liệu và yêu cầu về chất lượng ............................................ 70
3.3. THIẾT KẾ GIAO DIỆN ................................................................................. 75
3.3.1. Tổng quan .............................................................................................. 75
3.3.2. Kết quả thiết kế ..................................................................................... 76
3.3.3. Phân loại màn hình giao diện ................................................................ 77
3.3.4. Quá trình thiết kế ................................................................................... 77
3.3.5. Nguyên tắc thiết kế giao diện người dùng của Jakob Nielsen .............. 77
3.4. THIẾT KẾ HƯỚNG CHỨC NĂNG .............................................................. 80
3.5. THIẾT KẾ HƯỚNG ĐỐI TƯỢNG ................................................................ 80
3.5.1. Cách tiếp cận ......................................................................................... 80
3.5.2. Các đặc trưng ........................................................................................ 81
3.5.3. Cơ sở của thiết kế hướng đối tượng ...................................................... 81
3.5.4. Các bước thiết kế ................................................................................... 82
3.5.5. Ưu, nhược điểm của thiết kế hướng đối tượng ..................................... 83
3.6. CÂU HỎI TRẮC NGHIỆM, BÀI TẬP THẢO LUẬN .................................. 83
Chương 4. CÀI ĐẶT, KIỂM THỬ VÀ BẢO TRÌ PHẦN MỀM ................................ 84
4.1. CÁC NGÔN NGỮ LẬP TRÌNH .................................................................... 84
4.1.1. Các đặc trưng ........................................................................................ 84
4.1.2. Lựa chọn ngôn ngữ lập trình ................................................................. 86
4.1.3. Phong cách lập trình .............................................................................. 86
4.2. KIỂM THỬ PHẦN MỀM ............................................................................... 88
4.2.1. Khái niệm kiểm thử ............................................................................... 88
4.2.2. Mục tiêu và giới hạn.............................................................................. 90
4.2.3. Các loại kiểm thử .................................................................................. 90
4.2.4. Các mức độ kiểm thử ............................................................................ 97
4.2.5. Những lỗi phần mềm ........................................................................... 102
4.2.6. Nguyên tắc kiểm thử ........................................................................... 104
4.2.7. Thiết kế test case ................................................................................. 105
Bài giảng Công nghệ phần mềm
4.2.8. Lập kế hoạch và tài liệu kiểm thử ....................................................... 108
4.3. BẢO TRÌ PHẦN MỀM ................................................................................. 108
4.3.1. Hoạt động bảo trì phần mềm và phân loại .......................................... 108
4.3.2. Đặc điểm của bảo trì phần mềm .......................................................... 110
4.4. CÂU HỎI TRẮC NGHIỆM, BÀI TẬP THẢO LUẬN ................................ 112
TÀI LIỆU THAM KHẢO .......................................................................................... 114
Bài giảng Công nghệ phần mềm
1
LỜI NÓI ĐẦU
Ngày nay, Công nghệ phần mềm đã đi tới một kỷ nguyên mới, là lĩnh vực nghề
nghiệp “có sức đề kháng” cao với tình trạng suy thoái của nền kinh tế. Điều đó cho thấy
tiềm năng của ngành công nghệ phần mềm trong lĩnh vực công nghệ thông tin nói riêng
và thị trường nhân sự nói chung.
Bài giảng Công nghệ phần mềm được biên soạn theo nội dung phân phối chương
trình do Trường Đại học Phạm Văn Đồng xây dựng. Nội dung của bài giảng Công nghệ
phần mềm bao gồm 4 chương với thời lượng 30 tiết, sẽ cung cấp cho sinh viên những
kiến thức cơ bản về phát triển một phần mềm, từ khi phần mềm được đặt hàng sản xuất
cho đến khi phần mềm được đưa vào sử dụng. Quá trình này trải qua các giai đoạn: xác
định yêu cầu, phân tích đặc tả yêu cầu, thiết kế, cài đặt, kiểm thử, bảo trì; tương ứng với
mỗi giai đoạn sẽ có những phương pháp và công cụ hỗ trợ đi theo.
Mặc dù bản thân có cố gắng biên soạn nhưng bài giảng chắc không tránh khỏi
những thiếu sót, rất mong nhận được nhiều ý kiến đóng góp của bạn đọc, đồng nghiệp
và sinh viên.
Bài giảng có sử dụng tư liệu của các đồng nghiệp.
Bài giảng Công nghệ phần mềm
2
Chương 1. MỞ ĐẦU
Thời lượng: 07 tiết lý thuyết
Kết thúc chương này, sinh viên có thể:
- Biết được kiến trúc và các lớp phần mềm
- Hiểu được tại sao phải ra đời Công nghệ phần mềm
- Biết được các mô hình phát triển phần mềm
- Biết được các phương pháp, công cụ phát triển phần mềm
1.1. PHẦN MỀM VÀ CÁC LỚP PHẦN MỀM
1.1.1. Phần mềm
Chương trình máy tính là một trình tự các chỉ thị để 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. Trong đó,
- Lĩnh vực chuyên ngành: Các lĩnh vực trong mọi mặt của đời sống, xã hội: Giáo
dục, Y tế, Kinh doanh,
- Nhà chuyên môn: Người hoặc bộ phận tham gia vào các hoạt động trong lĩnh vực
tương ứng.
- Thao tác nghiệp vụ: Các công việc của các nhà chuyên môn trong thế giới thực
của lĩnh vực tương ứng.
Nhiệm vụ chính 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 hoạt độ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. Quá trình này gồm 3 bước:
- Bước 1: Chọn công việc muốn thực hiện, chẳng hạn. Thuê băng đĩa. Trả băng
đĩa
- Bước 2: Cung cấp các dữ liệu liên quan đến công việc cần thực hiện
Bài giảng Công nghệ phần mềm
3
- Bước 3: Xem các kết quả của việc thực hiện các công việc thông qua các màn
hình kết quả hay các báo biểu được in ra.
1.1.2. Đặc trưng của phần mềm
Đặc trưng của phần mềm khác với các đặc trưng của phần cứng, nên việc phát
triển phần mềm gặp rất nhiều khó khăn và chi phí cho phần mềm cao. Dưới đây là các
yếu tố tạo ra sự phức tạp trong quá trình phát triển cũng như sử dụng và bảo trì phần
mềm.
a. Phần mềm không được chế tạo theo nghĩa cổ điển
Phần mềm cũng được thiết kế, phát triển như phần cứng, nhưng nó không định
hình trước. Chỉ khi phát triển xong người ta có sản phẩm cụ thể mới hiểu được nó có
hiệu quả hay không.
Giá thành của phần cứng chủ yếu bị chi phối bởi giá thành nguyên vật liệu và
chúng ta tương đối dễ kiểm soát. Trong khi đó, giá thành phần mềm chủ yếu tập trung
vào chi phí nhân công. Quá trình phát triển phần mềm phụ thuộc vào con người (hiểu
biết, khả năng vận dụng, kinh nghiệm và cách thức quản lý) và được tiến hành phát triển
trong điều kiện môi trường (kỹ thuật, xã hội) đa dạng và không ngừng thay đổi. Do đó,
chúng ta rất khó ước lượng được chi phí cũng như hiệu quả của phần mềm.
b. Phần mềm không hỏng đi nhưng thoái hóa theo thời gian
Phần mềm không cảm ứng đối với những tác động của môi trường vốn gây cho
phần cứng bị mòn cũ đi, nhưng nó cũng thoái hóa theo thời gian.
Thực tế, phần mềm trải qua thời gian sử dụng thì cần phải được thay đổi (bảo trì)
đề đáp ứng nhu cầu luôn thay đổi của tổ chức sử dụng nó. Mỗi khi thay đổi, phần mềm
sẽ xuất hiện thêm một số khiếm khuyết mới không thể tránh, điều này làm cho số lỗi
tiềm ẩn trong phần mềm tăng lên. Dần dần, phần mềm bị thoái hóa do tỷ lệ sai hỏng
ngày cảng tăng lên đến mức gây nên những thiệt hại không thể chấp nhận được.
Việc bảo trì phần mềm phức tạp hơn nhiều và có bản chất khác hẳn so với bảo trì
phần cứng do sự phức tạp của hệ thống phần mềm và sự không có sẵn phần thay thế cho
bộ phận bị lỗi. Chúng ta không thay thế bộ phận bị lỗi bởi cái có sẵn mà thực thế phải
tạo ra một module mới. Do đó, thông thường chỉ có nhà sản xuất phần mềm mới bảo trì
(sửa chữa) được hỏng hóc.
Bài giảng Công nghệ phần mềm
4
c. Phần lớn phần mềm được xây dựng từ đầu, ít khi được lắp ráp từ thành
phần có sẵn
- Phần mềm không có danh mục các thành phần cố định như phần cứng.
- Phần mềm thường được đặt hàng theo một đơn vị hoàn chỉnh, theo yêu cầu riêng
của khách hàng.
- Phần mềm ít khi có thể lắp ráp theo một khuôn mẫu có sẵn. Yêu cầu với phần
mềm thay đổi theo môi trường cụ thể mà ở đó nó được xây dựng. Môi trường của
phần mềm (gồm phần cứng, phần mềm nền, con người và tổ chức) không thể
định dạng từ trước và lại thay đổi thường xuyên.
1.1.3. Các lớp phần mềm
Lớp phần mềm là hệ thồng các phần mềm trên cùng lĩnh vực hoạt động nào đó.
Do cùng lĩnh vực hoạt động nên các phần mềm này thường có cầu trúc và chức năng
(công việc mà người dùng thực hiện trên máy tính) tương tự nhau. Mục tiêu của ngành
công nghệ phần mềm là hướng đến không những xây dựng được các phần mềm có chất
lượng mà còn cho phép xây dựng dễ dàng một phần mềm mới từ các phần mềm đã có
sẵn trong các lĩnh vực (thậm chí trong các lĩnh vực khác).
Bảng 1. 1. Các phần mềm và lớp phần mềm tương ứng
STT Lớp phần mềm Các phần mềm
1 Trò chơi Cờ ca rô, cờ tướng, tetris,
2 Bán hàng Thuốc tây, vật liệu xây dựng, máy tính,
3 Cho mượn Sách, truyện, phim,..
4 Quản lý học sinh Mầm non, trung học, trung tâm,
1.1.4. Phân loại phần mềm
Chúng ta có thể chia phần mềm theo miền ứng dụng thành 7 loại như sau:
a. Phần mềm hệ thống
- Là một tập hợp các chương trình được viết để phục vụ cho các chương trình khác.
- Xử lý các cấu trúc thông tin phức tạp nhưng xác định (trình biên dịch, trình soạn
thảo, tiện ích quản lý tệp).
- Đặc trưng bởi tương tác chủ yếu với phần cứng máy tính
Bài giảng Công nghệ phần mềm
5
- Phục vụ nhiều người dùng
- Cấu trúc dữ liệu phức tạp và nhiều giao diện ngoài
b. Phần mềm thời gian thực
Phần mềm điều phối, phân tích hoặc kiểm soát các sự kiện thế giới thực ngay khi
chúng xuất hiện được gọi là phần mềm thế giới thực. Điển hình là các phần mềm điều
kiện các thiết bị tự động. Hệ thống thời gian thực phải đáp ứng những ràng buộc thời
gian chặt chẽ. Phần mềm thời gian thực bao gồm các thành phần:
- Thành phần thu thập dữ liệu để thu và định dạng thông tin từ môi trường ngoài
- Thành phần phân tích để biến đổi thông tin theo yêu cầu của ứng dụng
- Thành phần kiểm soát hoặc đưa ra đáp ứng môi trường ngoài
- Thành phần điều phối để điều hòa các thành phần khác sao cho có thể duy trì việc
đáp ứng thời gian thực
c. Phần mềm nghiệp vụ
Phần mềm nghiệp vụ là các phần mềm phục vụ các hoạt động kinh doanh hay
các nghiệp vụ của tổ chức doanh nghiệp. Đây có thể coi là lĩnh vực ứng dụng phần mềm
lớn nhất. Điển hình là các hệ thống thông tin quản lý gắn chặt với cơ sở dữ liệu (CSDL),
các ứng dụng tương tác như xử lý giao tác cho các điểm bán hàng.
d. Phần mềm k