Giáo trình công nghệ phần mềm I Đại học Sư Phạm Huế

Giáo trình công nghệ phần mềm của Đại học Sư Phạm Huế, tài liệu gồm 213 trang giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời bạn đọc đón xem!

1
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 m 2014
2
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 học tập học
phần: Nhập môn Công nghệ phần
mềm. Mã số: TINS4392
3
Lời nói đầu
Nhập môn Công nghệ phần mềm 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 phạm Tin học. Hiện nay đã khá nhiều tài
liệu về môn học 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 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 tóm tắt nội dung học
phần khung chương trình đã quy định để làm mục đích cần đạt được khi
học môn học y của sinh viên phạm Tin học so với sinh viên 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.
Chương 1. 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ì.
4
Trong quá trình biên soạn giáo trình y, chúng tôi tham khảo một số tài
liệu của một số c giả khác nhằm mang lại những kiến thức phong phú, phợp
nhất cho sinh viên, nhưng thể chưa kịp liên hệ được với chính các 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 Viết Hải, 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
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 đặc biệt 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ế.
zungnguyen2003@yahoo.com
http://sites.google.com/site/nguyenthedunghue/
5
Dưới đây trích dẫn mục tiêu 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
Đà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 hiểu được những khái niệm bản thuộc lĩnh
vực này. Trên sở đó sinh viên đị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 y dựng đá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.
6
MỤC LỤC
CHƢƠNG 1. TỔNG QUAN VỀ CÔNG NGHỆ PHẦN MỀM ..... 11
1. Một số khái niệm .......................................................................................... 11
2. Nhân tố con người và phân loại nghề nghiệp trong công nghệ phần
mềm. ................................................................................................................. 17
3. Sản phẩm phần mềm – đặc trưng và phân loại ............................................. 25
Chƣơng 2. QUI TRÌNH PHÁT TRIỂN PHẦN MỀM................... 31
1. Qui trình phát triển phần mềm ..................................................................... 31
2. Mô hình phát triển phần mềm ...................................................................... 37
3. Trợ giúp tự động hoá phát triển .................................................................... 49
Chƣơng 3. PHÂN TÍCH VÀ ĐẶC TẢ YÊU CẦU ......................... 52
1. Đại cương về phân tích và đặc tả yêu cầu. ................................................... 52
2. Phân tích và đặc tả yêu cầu .......................................................................... 56
3. Nguyên lý phân tích và mô hình hóa ............................................................ 69
4. Đặc tả yêu cầu .............................................................................................. 76
5. Thẩm định yêu cầu ....................................................................................... 78
6. Làm bản mẫu trong quá trình phân tích ....................................................... 79
7. Định dạng đặc tả yêu cầu ............................................................................. 82
8. Quản lý yêu cầu ............................................................................................ 84
9. 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) ................................................................................................. 86
Chƣơng 4. THIẾT KẾ .................................................................... 105
1. Khái niệm về thiết kế phần mềm ................................................................ 105
2. Thiết kế hướng chức năng .......................................................................... 116
3. Thiết kế kiến trúc ........................................................................................ 121
4. Thiết kế giao diện người dùng .................................................................... 130
5. Thiết kế thủ tục ........................................................................................... 135
6. Thiết kế hướng đối tượng ........................................................................... 137
Chƣơng 5. LẬP TRÌNH .................................................................. 153
1. Khái niệm ................................................................................................... 153
2. Ngôn ngữ lập trình ...................................................................................... 154
3. Phong cách lập trình ................................................................................... 156
4. Kỹ thuật lập trình ........................................................................................ 158
5. Lập trình hướng hiệu quả thực hiện ........................................................... 160
Chƣơng 6. KIỂM THỬ ................................................................... 163
7
1. Đại cương về kiểm thử phần mềm ............................................................. 163
2. Các mức độ kiểm thử.................................................................................. 165
3. Các hoạt động kiểm thử .............................................................................. 169
4. Chiến thuật kiểm thử phần mềm ................................................................ 171
5. Kỹ thuật kiểm thử ....................................................................................... 174
6. Kiểm thử hướng đối tượng ......................................................................... 180
7. Chứng minh toán học tính đúng đắn của chương trình .............................. 182
Chƣơng 7. TRIỂN KHAI VÀ BẢO TRÌ ....................................... 191
1. Triển khai phần mềm .................................................................................. 191
2. 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 ......................................................................................................... 195
3. Bảo trì ......................................................................................................... 200
8
DANH MỤC BIỂU BẢNG
Hình 1. 1. Các thành phần của phần mềm .............................................. 12
Hình 1. 2. Kỹ nghệ phần mềm .................................................................. 15
Hình 2.1. Vòng đời phát triển hệ thống ................................................... 31
Hình 2. 2. 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 ................................................................................................... 33
Hình 2. 3. Mô hình thác nƣớc ................................................................... 39
Hình 2. 4. Mô hình xoắn ốc....................................................................... 43
Hình 2. 5. Mô hình tăng trƣởng ............................................................... 44
Hình 2. 6. Mô hình RAD ........................................................................... 46
Hình 2.7. Mô hình phát triển dựa trên cấu phần ................................... 47
Hình 3. 1. Các hoạt động của phân tích và đặc tả yêu cầu .................... 57
Hình 3. 2. Qui trình xác định yêu cầu ..................................................... 60
Hình 3. 3. Mô hình xoắn ốc của qui trình xác định yêu cầu .................. 61
Hình 3. 4. Qui trình nắm bắt yêu cầu ...................................................... 65
Hình 3. 5. Các mô hình của bƣớc mô hình hóa yêu cầu. ....................... 71
Hình 3. 6. Ký pháp DFD. .......................................................................... 72
Hình 3. 7. Tiến trình phân tích và thiết kế hƣớng đối tƣợng ................ 87
Hình 3. 8. Mô hình use-case cho bài toán quản lý học tập tại một trung
tâm. ............................................................................................................. 94
Hình 4. 1. Các hoạt động thiết kế phần mềm ....................................... 108
Hình 4. 2. Hoạt động thiết kế và sản phẩm tƣơng ứng ........................ 108
Hình 4. 3. Số lƣợng module và chi phí tích hợp module ...................... 119
Hình 4. 4. Mô hình kiến trúc dữ liệu tập trung .................................... 122
Hình 4. 5. Kiến trúc khách dịch vụ (Client-Server Architecture) ...... 123
Hình 4. 6. Mô hình kiến trúc phân tầng ................................................ 124
Hình 4. 7. Kiến trúc gọi và trả lại .......................................................... 125
Hình 4. 8. Mô hình điều khiển quảng bá ............................................... 126
Hình 4. 9. Mô hình điều khiển hƣớng ngắt ........................................... 126
Hình 4. 10. Tạo kiến trúc từ biểu đồ DFD ............................................ 127
Hình 4. 11. Phân hoạch dọc kiến trúc ................................................... 128
9
Hình 4. 12. Phân hoạch ngang kiến trúc ............................................... 128
Hình 4. 13. Chuyển đổi luồng chuyển đổi ............................................. 129
Hình 4. 14. Chuyển đổi luồng giao dịch ................................................ 130
Hình 4. 15. Các bƣớc thực hiện thiết kế giao diện ............................... 131
Hình 6. 1. Các mức độ kiểm thử ............................................................ 166
Hình 6. 2. Mô hình chữ V ....................................................................... 166
Hình 6. 3. Các hoạt động kiểm thử ........................................................ 169
Hình 6. 4. Mô hình chữ V ....................................................................... 172
Hình 7. 1. Ký hiệu của thành phần ........................................................ 196
Hình 7. 2. Quan hệ liên kết giữa các node ............................................. 199
Hình 7. 3. Qui trình quản lý bảo trì ....................................................... 203
Hình 7. 4. Các hoạt động chính của bảo trì .......................................... 205
Bảng 6. 1. Các giai đoạn kiểm thử và các công việc tƣơng ứng .......... 167
Bảng 7. 1. Bảng thống kê chi phí cho quá trình bảo trì (nguồn [8]) ... 206
Bảng 7. 2. Các độ đo đƣợc sử dụng trong bảo trì ................................. 209
10
BẢNG ĐỐI CHIẾU THUẬT NGỮ VIỆT ANH
Phần mềm
Software
Kỹ thuật thế hệ thứ
4
Fourth
generation
technique
Phần cứng
Hardware
Bàn thợ
Workbenches
Công nghệ phần
mềm
Software
Technology
Đo điểm chuẩn
Benchmarking
Kỹ nghệ phần
mềm
Software
Engineering
Phương pháp cùng
phát triển ứng dụng
Joint
Application
Design
CASE
Computer-Aided
Software
Engineering
đồ phân chức
năng
Function
Decomposition
Diagram
Đặc tả u cầu
phần mềm
Software
Requirement
Specification
Mô hình tiến trình
hợp nhất
Unified Process
Model
Bảo trì
Maintenance
Luồng giao dịch
Transaction
Flow
Architectural
Design
Mẫu hình thức
Stereotype
Cài đặt
Implementation
Kiểm thử
Testing
Triển khai phần
mềm
Software
Deployment
Dò mã
Code browser
11
CHƢƠNG 1. TỔNG QUAN VỀ CÔNG NGHỆ PHN
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ự 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.
1. 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) những thiết bị thể sờ , cầm nắm, trong khi đó phần mềm
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 trbỏ đi các thiết bị các loại phụ kiện
thì phần còn lại chính phần mềm. Theo nghĩa hẹp: Phần mềm 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 tất cả các kthuậ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:
12
Hình 1. 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 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ế 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
Đó 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 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ử 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,...
Nhóm các tư liệu
Đó những liệu hữu ích, giá trị cao cần thiết để phát triển, vận hành
bảo trì phần mềm. Để sản xuất ra phần mềm với độ tin cậy cao cần tạo ra các
liệu chất lượng cao: đặc tả yêu cầu, mô tả thiết kế từng loại, điều kiện kiểm thử,
thủ tục vận hành, hướng dẫn thao tác,…
13
Một số giáo trình về môn học này dùng các thuật ngữ khác nhau về tên
môn học y như Công nhệ phần mềm, Knghệ phần mềm, Công trình học phần
mềm… vậy đây chúng ta cần xem xét một số vấn đề liên quan đến kiến thức
chung là: Khoa học, công nghệ, kỹ nghệ và công nghiệp.
Công nghiệp (Industry) là một bộ phận của nền kinh tế, nh vực sản xuất
hàng hóa vật chất sản phẩm được "chế tạo, chế biến" cho nhu cầu tiêu dùng
hoặc phục vụ hoạt động kinh doanh tiếp theo. Đây hoạt động kinh tế, sản xuất
quy mô lớn, được sự hỗ trợ thúc đẩy mạnh mẽ của các tiến bộ về công nghệ, khoa
họckỹ thuật.
Một nghĩa rất phổ thông khác của từ “công nghiệp” "hoạt động kinh tế
quy lớn, sản phẩm (có thể phi vật thể) tạo ra trở thành hàng hóa". Theo
nghĩa này, những hoạt động kinh tế chuyên sâu khi đạt được một quy mô nhất
định sẽ trở thành một ngành công nghiệp, ngành kinh tế như: công nghiệp phần
mềm máy tính, công nghiệp điện ảnh, công nghiệp giải trí, công nghiệp thời trang,
công nghiệp báo chí, v.v..
Công nghệ (technology) sự tạo ra, sự biến đổi, việc sử dụng, kiến thức
về các công cụ, y móc, kỹ thuật, knăng nghề nghiệp, hthống, phương
pháp tổ chức, nhằm giải quyết một vấn đề, cải tiến một giải pháp đã tồn tại, đạt
một mục đích, hay thực hiện một chức năng cụ thể. Công nghệ cũng thể chỉ
đến một tập hợp những công cụ như vậy, bao gồm máy móc, những sự sắp xếp,
hay những quy trình. Công nghệ ảnh hưởng đáng kể lên khả năng kiểm soát
thích nghi của con người cũng như của những động vật khác vào môi trường tự
nhiên của mình. Thuật ngthể được dùng theo nghĩa chung hay cho những
lĩnh vực cụ thể, ví dụ như "công nghệ xây dựng", "công nghệ thông tin".
Trong tiếng Việt, các từ "khoa học", "k thuật", "công nghệ" đôi khi
được dùng với nghĩa tương tự nhau hay được ghép lại với nhau (chẳng hạn "khoa
học kỹ thuật", "khoa học công nghệ", "kthuật công nghệ"). Tuy vậy, công
nghệ khác với khoa học kỹ thuật. Khoa học toàn bộ hoạt động hthống
nhằm y dựng tổ chức kiến thức dưới hình thức những lời giải thích tiên
đoán có thể kiểm tra được về vũ trụ. Còn kỹ thuật là việc ứng dụng kiến thức khoa
học, kinh tế, hội, thực tiễn để thiết kế, xây dựng, duy trì các cấu trúc,
máy móc, thiết bị, hệ thống, vật liệu, và quá trình.
14
Công nghệ (có nguồn gốc từ technologia, hay τεχνολογια, trong tiếng Hy
Lạp; techne nghĩa thủ công logia nghĩa "châm ngôn") một thuật
ngữ rộng ám chỉ đến các công cụ mưu mẹo của con người. Tu vào từng ngữ
cảnh mà thuật ngữ công nghệ có thể được hiểu:
+ Công cụ hoặc máy móc giúp con người giải quyết các vấn đề;
+ Các kỹ thuật bao gồm các phương pháp, vật liệu, công cụ và các tiến trình
để giải quyết một vấn đề;
+ Các sản phẩm được tạo ra phải hàng loạt và giống nhau.
+ Sản phẩm có chất lượng cao và giá thành hạ.
Kỹ nghệ (engineering) nói tới một tập hợp các công nghệ được bố trí theo
một qui trình nhất định, được con người dùng các phương pháp thực hiện qua
các công cụ để tạo ra những sản phẩm nhất định.
Kỹ nghệ là việc sử dụng phối hợp các công nghệ cần thiết để sản xuất ra các
sản phẩm của một ngành nào đó.
Cần phân biệt công nghệ nói đến những kỹ thuật được phát triển cho một
loại vấn đnào đó, còn kỹ nghệ nói đến các qui trình nghiêm ngặt phối hợp các
công nghệ, phương pháp và công cụ để làm ra sản phẩm có chất lượng.
Định nghĩa công nghệ do Uỷ ban Kinh tế hội khu vực Châu Á - Thái
Bình Dương (ESCAP): Công nghệ kiến thức hệ thống về quy trình k
thuật dùng để chế biến vật liệu thông tin. bao gồm kiến thức, thiết bị,
phương pháp các hệ thống dùng trong việc tạo ra hàng hoá cung cấp dịch
vụ.
Mặc theo tiến trình phát triển, hiện nay khái niệm Kỹ nghệ phần mềm
được dùng cho môn học. Nhưng do yếu tố lịch sử và khách quan của tên môn học
trong khung chương trình chung của sinh viên, nên trong giáo trình y cụm từ
Công nghệ phần mềm Kỹ nghệ phần mềm được dùng với nghĩa tương tnhau.
Rất mong người đọc suy xét.
Theo IEEE [1993]: Kỹ nghệ phần mềm là:
(1) Việc áp dụng phương pháp tiếp cận hệ thống, bài bản và được lượng
hóa trong phát triển, vận hành và bảo trì phần mềm;
15
(2) Nghiên cứu các phương pháp tiếp cận được dùng trong (1)
Theo Pressman [2001]: Kỹ nghệ phần mềm là bộ môn tích hợp cả quy trình,
các phương pháp, các công cụ để phát triển phần mềm máy tính.
Theo Sommerville [2007]: Kỹ nghệ phần mềm lĩnh vực liên quan đến
thuyết, phương pháp và công cụ dùng cho phát triển phần mềm.
Như vậy thể khái quát: Kỹ nghệ phần mềm (Software Engineering):
việc áp dụng các công cụ, các kỹ thuật một cách hệ thống trong việc phát triển các
ứng dụng dựa trên y tính. Đó chính việc áp dụng các quan điểm, các tiến
trình có kỷ luật và lượng hoá được, bài bản và hệ thống để phát triển, vận hành
và bảo trì phần mềm.
Theo quan điểm của nhiều nhà nghiên cứu, thể nhìn nhận k nghệ phần
mềm một hình được phân theo bốn tầng tất cả các tầng y đều nhằm
tới mục tiêu chất lượng, chi phí, thời hạn phát triển phần mềm.
Hình 1. 2. Kỹ nghệ phần mềm
đây, tầng chất lượng hướng đến việc đảm bảo chất lượng kiểm thử
phần mềm.
Tầng quy trình liên quan tới vấn đề quản trị phát triển phần mềm như lập kế
hoạch, quản trị chất lượng, tiến độ, chi phí, mua bán sản phẩm phụ, cấu hình phần
mềm, quản trị sự thay đổi, quản trị nhân sự (trong môi trường làm việc nhóm),
việc chuyển giao, đào tạo, tài liệu;
Tầng phương pháp hay cách thức, công nghệ, kỹ thuật để làm phần mềm:
liên quan đến tất cả các công đoạn phát triển hệ thống như nghiên cứu yêu cầu,
thiết kế, lập trình, kiểm thử bảo trì. Phương pháp dựa trên những nguyên lý
Chất lượng
Quy trình
Phương pháp
Công cụ
16
bản nhất cho tất cả các lĩnh vực công nghệ kể cả các hoạt động mô hình hoá và kỹ
thuật mô tả.
Tầng công cụ liên quan đến việc cung cấp các phương tiện hỗ trợ tự động
hay bán tự động cho các tầng quá trình và phương pháp (công nghệ).
Kỹ phần mềm (software engineer): một người biết cách áp dụng rộng
rãi những kiến thức về cách phát triển ứng dụng vào việc tổ chức phát triển một
cách hệ thống các ứng dụng. Công việc của người k phần mềm là: đánh
giá, lựa chọn, sử dụng những cách tiếp cận tính hệ thống, chuyên biệt, ràng
trong việc phát triển, đưa vào ứng dụng, bảo trì, và thay thế phần mềm.
Do đặc điểm nghề nghiệp, người kỹ sư phần mềm phải có những k năng
bản như:
- Định danh, đánh giá, cài đặt, lựa chọn một phương pháp luận thích
hợp và các công cụ CASE (Computer-Aided Software Engineering).
- Biết cách sử dụng các mẫu phần mềm (Software Prototyping).
- Biết cách lựa chọn ngôn ngữ, phần cứng, phần mềm.
- Quản lý cấu hình, lập đồ kiểm soát việc phát triển của các
tiến trình.
- Lựa chọn ngôn ngữ máy tính và phát triển chương trình máy tính.
- Đánh giá và quyết định khi nào loại bỏ và nâng cấp các ứng dụng.
Mục tiêu của kỹ sư phần mềm là sản xuất ra các sản phẩm có chất lượng cao
và phù hợp với các quy trình phát triển chuẩn mực.
Việc phát triển (development): được bắt đầu từ khi quyết định phát triển sản
phẩm phần mềm và kết thúc khi sản phẩm phần mềm được chuyển giao cho người
sử dụng.
Việc sử dụng (operations): là việc xử lý, vận hành hằng ngày sản phẩm phần
mềm.
Việc bảo trì (maintenance): thực hiện những thay đổi đối với hệ thống
chương trình để sửa những lỗi cố định, cung cấp những thay đổi về công việc,
hoặc làm cho phần mềm được hiệu quả hơn.
17
Việc loại bỏ (retirement): thường là việc thay thế các ứng dụng hiện thời bởi
c ứng dụng mới.
Đối tƣợng nghiên cứu của công nghệ phần mềm
Hướng đến việc xây dựng các phần mềm chất lượng như đã nêu, ngành
công nghệ phần mềm đưa ra 3 đối tượng nghiên cứu chính: Qui trình công nghệ,
Phương pháp phát triển, Công cụ và Môi trường phát triển phần mềm.
- Qui trình công nghệ phần mềm: Hệ thống các giai đoạn mà quá trình phát
triển phần mềm phải trải qua. Với mỗi giai đoạn cần xác định rõ mục tiêu, kết quả
nhận từ giai đoạn trước đó cũng chính kết quả chuyển giao cho giai đoạn kế
tiếp.
- Phương pháp phát triển phần mềm: Hthống c hướng dẫn cho phép
từng bước thực hiện một giai đoạn nào đó trong qui trình công nghệ phần mềm.
- Công cụ môi trường phát triển phần mềm: Hệ thống các phần mềm trợ
giúp chính trong lĩnh vực xây dựng phần mềm. Các phần mềm này sẽ hỗ trợ trong
các bước xây dựng phần mềm theo một phương pháp nào đó với một qui trình
được chọn trước.
2. Nhân tố con ngƣời và phân loại nghề nghiệp trong công nghệ
phần mềm.
2.1. Nhân tố con ngƣời trong ngành công nghiệp phần mềm
Đối với một sản phẩn phần mềm, một người không thể hoàn thành mà là kết
quả lao động của một nhóm người, gọi là nhóm phát triển phần mềm.
Như vậy, một nhóm phát triển phần mềm như thế nào gọi một nhóm hợp
lý? Sau đây là một vài yếu tố cần xem xét:
- Nhóm có bao nhiêu thành viên,
- Nhóm được tổ chức như thế nào,
- Tình hình thực tế của mỗi thành viên trong nhóm,
- Môi trường, điều kiện mà nhóm đang làm việc,...
Mỗi thành viên trong nhóm phải có một số kiến thức cần thiết tuỳ thuộc vào
vai trò trong nhóm để phát triển phần mềm.
18
2.2. Phân loại nghề nghiệp
Yêu cầu hiện nay của sự phát triển Công nghệ Thông tin (CNTT) Việt
nam đòi hỏi cần những người lao động trong tất cả các ngành kinh tế biết sử
dụng hữu hiệu CNTT trong công việc của mình, và đồng thời cần những người
trực tiếp tham gia vào sản xuất, kinh doanh, vận hành vCNTT. Do vậy cần
những lớp người lao động sau:
Những người biết vận dụng sáng tạo CNTT vào nghiệp vụ chuyên môn.
Những người tham gia quản lí và vận hành các hệ thống CNTT
Những người tham gia trực tiếp vào việc phát triển xây dựng các sản
phẩm CNTT.
Việc phân loại nghề nghiệp trong các hệ thống thông tin thể được phân
chia dựa vào các tiêu chuẩn như: mức độ kinh nghiệm, loại hình công việc,...
Loại hình công việc
đây, các loại hình công việc được bàn luận, dựa vào cách phân loại gồm:
Phát triển ứng dụng, hỗ trợ ứng dụng, chuyên ngành kỹ thuật, nhân viên và những
vấn đề khác.
a. Phát triển ứng dụng
Lập trình viên: Các lập trình viên chuyển đổi những đồ án chi tiết kỹ thuật
sang các module tự kiểm tra các đơn vị phần mềm. Các lập trình viên
thể luân phiên chịu trách nhiệm giữa phát triển ứng dụng bảo trì. Những
chuyên gia lập trình trình độ đại học thực hiện những nhiệm vụ bên ngoài việc
lập trình.
Kỹ sư phần mềm: Một kỹ phần mềm thực hiện những chức năng của các
nhà phân tích, các nhà thiết kế các lập trình viên. Các phân tích gia trình độ
đại học luôn luôn tham gia vào tổ chức cấp đcao để lập kế hoạch nghiên
cứu khả thi. Các kỹ phần mềm thể làm cả ba việc phân tích, thiết kế lập
trình cũng như đứng ra lãnh đạo dự án hoặc quản lý dự án. Một kquản lý
phần mềm cấp thường dành nhiều thời gian lập trình trong khi một kỹ
trình độ cao cấp lại tập trung vào việc lập kế hoạch, nghiên cứu khả thi, phân tích
và thiết kế.
19
Phân tích viên hệ thống: Phân tích viên hệ thống đóng vai trò đặc biệt quan
trọng trong tiến trình phân tích. Ngoài kinh nghiệm, một phân tích viên tốt cần
các khả năng sau:
- Khả năng hiểu thấu các khái niệm trừu tượng, khả năng tổ chức lại
thành các phân tích logic và tổng hợp các giải pháp dựa trên từng dải phân chia.
- Khả năng rút ra các sự kiện thích đáng từ các nguồn xung khắc và lẫn lộn.
- Khả năng hiểu được môi trường người dùng/khách hàng.
- Khả năng áp dụng các phần tử hệ thống phần cứng và/hoặc phần mềm vào
môi trường người sử dụng/khách hàng.
- Khả năng giao tiếp tốt ở dạng viết và nói.
- Khả năng trừu tượng hóa/tổng hợp vấn đề từ các sự kiện riêng lẻ.
Kỹ tri thức (Knowledge Engineer): c kỹ tri thức suy luận ra những
hình ngữ nghĩa từ các chuyên gia để từ đó xây dựng những hệ chuyên gia
trí tuệ nhân tạo. c ktri thức tương tự như các kỹ sư phần mềm nhưng được
chuyên môn hoá các kỹ năng để áp dụng vào các vấn đề trí tuệ nhân tạo. Việc phát
triển các hình các chương trình của cấu trúc trí tuệ đòi hỏi khả năng quan
sát, knăng phỏng vấn sâu sắc, khả năng trừu tượng hoá những vấn đ không
phải của chuyên môn nhân để tạo ra những ý thức lập luận thông tin cần
thiết khả năng phát triển những dự đoán về thông tin nh chính xác với các
chuyên gia.
b. Hỗ trợ ứng dụng
Chuyên gia ứng dụng: Chuyên gia ứng dụng có những vùng vấn đề được
chuyên môn hoá cho phép họ tham khảo ý kiến của các đội dự án về một loại ứng
dụng cụ thể. dụ một nhà phân tích cao cấp về chuyển tiền thời gian thực thể
phân chia được thời gian giữa các dự án chuyển tiền trong nước quốc tế, biết
trước được những quy tắc, luật lệ phải tuân theo của các ngân hàng cũng như của
các tổ chức chuyển tiền khác.
Quản trị dữ liệu: Người quản dữ liệu quản lý thông tin như một nguồn
thống nhất. Với chức năng y, bộ phận quản lý dữ liệu giúp cho người sử dụng
xác định được tất cả dữ liệu được sdụng, các dliệu ý nghĩa trong quá trình
20
thực hiện chức năng của công ty. Những người quản lý dữ liệu thiết lập và bảo lưu
những chuẩn mực để thống nhất dữ liệu.
Khi dữ liệu đã được c định, người quản lý dữ liệu sẽ làm việc để định
dạng xác định cấu trúc sở dữ liệu để sử dụng với ứng dụng. Với việc phát
triển ứng dụng mới, những người quản dữ liệu làm việc với bộ phận phát triển
ứng dụng để định vị những số liệu đã được tự động và với bộ phận quản trị CSDL
để cung cấp những nhóm ứng dụng dễ dàng truy nhập những sở dữ liệu đã
được tự động hoá.
Quản trị sở dữ liệu (DBA - DataBase Administrator): Những người quản
sở dữ liệu quản môi trường dữ liệu vật lý của một tổ chức. DBA phân
tích, thiết kế, xây dựng bảo lưu sở dữ liệu cũng như môi trường phần mềm
sở dữ liệu. Làm việc cùng với những người quản dữ liệu xác định dữ liệu.
DBA xác định các cơ sở dữ liệu vật lý và nạp thông tin thực tế vào chúng.
Một người quản lý cơ sở dữ liệu làm việc với các nhóm phát triển ứng dụng
để cung cấp truy nhập đến dữ liệu tự động để định nghĩa ràng cơ sở dữ liệu
cần thiết cho thông tin được tự động.
Kỹ trí tuệ nhân tạo: Các k trí tuệ nhân tạo làm việc như cố vấn giúp
các đội dự án xác định, thiết kế cài đặt trí tuvào các ứng dụng. Ktrí tuệ
nhân tạo cùng với các kỹ tri thức dịch kiểm tra những vấn đmiền dữ liệu
thông tin lập luận bằng một ngôn ngữ của trí tuệ nhân tạo. Các k trí tuệ
nhân tạo đạt được trình độ chuyên môn cao hơn các kỹ sư tri thức.
Nhà vấn: Người vấn thì biết mọi vấn đề và thực hành được tất cả. Số
năm kinh nghiệm càng cao thì kiến thức được càng nhiều. Lĩnh vực chuyên
môn thể bao gồm một vài loại công việc được đề cập đến trong phần này.
Người tư vấn được nhờ đến trong hầu hết các trường hợp lắp đặt hệ thống và cung
cấp những knăng bên ngoài không sẵn có. Bởi vậy họ thường đào tạo đội ngũ
bên trong trong suốt quá trình thực hiện công việc. Khi được nhờ đến, người tư
vấn được mong chờ những knăng chuyên biệt sẽ áp dụng những kỹ năng
này trong việc thực hiện tư vấn.
c. Chuyên ngành kỹ thuật
Nhà phân tích Ktruyền thông: Các nhà phân tích kỹ truyền
thông phân ch, thiết kế, đàm phán và/hoặc i đặt các thiết bị phần mềm
| 1/213

Preview text:

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.
Chương 1. 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ế.
zungnguyen2003@yahoo.com
http://sites.google.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 ..... 11
1. Một số khái niệm .......................................................................................... 11
2. Nhân tố con người và phân loại nghề nghiệp trong công nghệ phần
mềm. ................................................................................................................. 17
3. Sản phẩm phần mềm – đặc trưng và phân loại ............................................. 25
Chƣơng 2. QUI TRÌNH PHÁT TRIỂN PHẦN MỀM................... 31
1. Qui trình phát triển phần mềm ..................................................................... 31
2. Mô hình phát triển phần mềm ...................................................................... 37
3. Trợ giúp tự động hoá phát triển .................................................................... 49
Chƣơng 3. PHÂN TÍCH VÀ ĐẶC TẢ YÊU CẦU ......................... 52
1. Đại cương về phân tích và đặc tả yêu cầu. ................................................... 52
2. Phân tích và đặc tả yêu cầu .......................................................................... 56
3. Nguyên lý phân tích và mô hình hóa ............................................................ 69
4. Đặc tả yêu cầu .............................................................................................. 76
5. Thẩm định yêu cầu ....................................................................................... 78
6. Làm bản mẫu trong quá trình phân tích ....................................................... 79
7. Định dạng đặc tả yêu cầu ............................................................................. 82
8. Quản lý yêu cầu ............................................................................................ 84
9. 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) ................................................................................................. 86
Chƣơng 4. THIẾT KẾ .................................................................... 105
1. Khái niệm về thiết kế phần mềm ................................................................ 105
2. Thiết kế hướng chức năng .......................................................................... 116
3. Thiết kế kiến trúc ........................................................................................ 121
4. Thiết kế giao diện người dùng .................................................................... 130
5. Thiết kế thủ tục ........................................................................................... 135
6. Thiết kế hướng đối tượng ........................................................................... 137
Chƣơng 5. LẬP TRÌNH .................................................................. 153
1. Khái niệm ................................................................................................... 153
2. Ngôn ngữ lập trình ...................................................................................... 154
3. Phong cách lập trình ................................................................................... 156
4. Kỹ thuật lập trình ........................................................................................ 158
5. Lập trình hướng hiệu quả thực hiện ........................................................... 160
Chƣơng 6. KIỂM THỬ ................................................................... 163 6
1. Đại cương về kiểm thử phần mềm ............................................................. 163
2. Các mức độ kiểm thử.................................................................................. 165
3. Các hoạt động kiểm thử .............................................................................. 169
4. Chiến thuật kiểm thử phần mềm ................................................................ 171
5. Kỹ thuật kiểm thử ....................................................................................... 174
6. Kiểm thử hướng đối tượng ......................................................................... 180
7. Chứng minh toán học tính đúng đắn của chương trình .............................. 182
Chƣơng 7. TRIỂN KHAI VÀ BẢO TRÌ ....................................... 191
1. Triển khai phần mềm .................................................................................. 191
2. 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 ......................................................................................................... 195
3. Bảo trì ......................................................................................................... 200 7
DANH MỤC BIỂU BẢNG
Hình 1. 1. Các thành phần của phần mềm .............................................. 12
Hình 1. 2. Kỹ nghệ phần mềm .................................................................. 15
Hình 2.1. Vòng đời phát triển hệ thống ................................................... 31
Hình 2. 2. 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 ................................................................................................... 33
Hình 2. 3. Mô hình thác nƣớc ................................................................... 39
Hình 2. 4. Mô hình xoắn ốc....................................................................... 43
Hình 2. 5. Mô hình tăng trƣởng ............................................................... 44
Hình 2. 6. Mô hình RAD ........................................................................... 46
Hình 2.7. Mô hình phát triển dựa trên cấu phần ................................... 47
Hình 3. 1. Các hoạt động của phân tích và đặc tả yêu cầu .................... 57
Hình 3. 2. Qui trình xác định yêu cầu ..................................................... 60
Hình 3. 3. Mô hình xoắn ốc của qui trình xác định yêu cầu .................. 61
Hình 3. 4. Qui trình nắm bắt yêu cầu ...................................................... 65
Hình 3. 5. Các mô hình của bƣớc mô hình hóa yêu cầu. ....................... 71
Hình 3. 6. Ký pháp DFD. .......................................................................... 72
Hình 3. 7. Tiến trình phân tích và thiết kế hƣớng đối tƣợng ................ 87
Hình 3. 8. Mô hình use-case cho bài toán quản lý học tập tại một trung
tâm. ............................................................................................................. 94

Hình 4. 1. Các hoạt động thiết kế phần mềm ....................................... 108
Hình 4. 2. Hoạt động thiết kế và sản phẩm tƣơng ứng ........................ 108
Hình 4. 3. Số lƣợng module và chi phí tích hợp module ...................... 119
Hình 4. 4. Mô hình kiến trúc dữ liệu tập trung .................................... 122
Hình 4. 5. Kiến trúc khách dịch vụ (Client-Server Architecture) ...... 123
Hình 4. 6. Mô hình kiến trúc phân tầng ................................................ 124
Hình 4. 7. Kiến trúc gọi và trả lại .......................................................... 125
Hình 4. 8. Mô hình điều khiển quảng bá ............................................... 126
Hình 4. 9. Mô hình điều khiển hƣớng ngắt ........................................... 126
Hình 4. 10. Tạo kiến trúc từ biểu đồ DFD ............................................ 127
Hình 4. 11. Phân hoạch dọc kiến trúc ................................................... 128 8
Hình 4. 12. Phân hoạch ngang kiến trúc ............................................... 128
Hình 4. 13. Chuyển đổi luồng chuyển đổi ............................................. 129
Hình 4. 14. Chuyển đổi luồng giao dịch ................................................ 130
Hình 4. 15. Các bƣớc thực hiện thiết kế giao diện ............................... 131
Hình 6. 1. Các mức độ kiểm thử ............................................................ 166
Hình 6. 2. Mô hình chữ V ....................................................................... 166
Hình 6. 3. Các hoạt động kiểm thử ........................................................ 169
Hình 6. 4. Mô hình chữ V ....................................................................... 172
Hình 7. 1. Ký hiệu của thành phần ........................................................ 196
Hình 7. 2. Quan hệ liên kết giữa các node ............................................. 199
Hình 7. 3. Qui trình quản lý bảo trì ....................................................... 203
Hình 7. 4. Các hoạt động chính của bảo trì .......................................... 205
Bảng 6. 1. Các giai đoạn kiểm thử và các công việc tƣơng ứng .......... 167
Bảng 7. 1. Bảng thống kê chi phí cho quá trình bảo trì (nguồn [8]) ... 206
Bảng 7. 2. 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.
1. 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. 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,... Nhóm các tư liệu
Đó là những tư liệu hữu ích, có giá trị cao cần thiết để phát triển, vận hành
và bảo trì phần mềm. Để sản xuất ra phần mềm với độ tin cậy cao cần tạo ra các
tư liệu chất lượng cao: đặc tả yêu cầu, mô tả thiết kế từng loại, điều kiện kiểm thử,
thủ tục vận hành, hướng dẫn thao tác,… 12
Một số giáo trình về môn học này dùng các thuật ngữ có khác nhau về tên
môn học này như Công nhệ phần mềm, Kỹ nghệ phần mềm, Công trình học phần
mềm… Vì vậy ở đây chúng ta cần xem xét một số vấn đề liên quan đến kiến thức
chung là: Khoa học, công nghệ, kỹ nghệ và công nghiệp.
Công nghiệp (Industry) là một bộ phận của nền kinh tế, là lĩnh vực sản xuất
hàng hóa vật chất mà sản phẩm được "chế tạo, chế biến" cho nhu cầu tiêu dùng
hoặc phục vụ hoạt động kinh doanh tiếp theo. Đây là hoạt động kinh tế, sản xuất
quy mô lớn, được sự hỗ trợ thúc đẩy mạnh mẽ của các tiến bộ về công nghệ, khoa học và kỹ thuật.
Một nghĩa rất phổ thông khác của từ “công nghiệp” là "hoạt động kinh tế
quy mô lớn, sản phẩm (có thể là phi vật thể) tạo ra trở thành hàng hóa". Theo
nghĩa này, những hoạt động kinh tế chuyên sâu khi đạt được một quy mô nhất
định sẽ trở thành một ngành công nghiệp, ngành kinh tế như: công nghiệp phần
mềm máy tính, công nghiệp điện ảnh, công nghiệp giải trí, công nghiệp thời trang,
công nghiệp báo chí, v.v..
Công nghệ (technology) là sự tạo ra, sự biến đổi, việc sử dụng, và kiến thức
về các công cụ, máy móc, kỹ thuật, kỹ năng nghề nghiệp, hệ thống, và phương
pháp tổ chức, nhằm giải quyết một vấn đề, cải tiến một giải pháp đã tồn tại, đạt
một mục đích, hay thực hiện một chức năng cụ thể. Công nghệ cũng có thể chỉ
đến một tập hợp những công cụ như vậy, bao gồm máy móc, những sự sắp xếp,
hay những quy trình. Công nghệ ảnh hưởng đáng kể lên khả năng kiểm soát và
thích nghi của con người cũng như của những động vật khác vào môi trường tự
nhiên của mình. Thuật ngữ có thể được dùng theo nghĩa chung hay cho những
lĩnh vực cụ thể, ví dụ như "công nghệ xây dựng", "công nghệ thông tin".
Trong tiếng Việt, các từ "khoa học", "kỹ thuật", và "công nghệ" đôi khi
được dùng với nghĩa tương tự nhau hay được ghép lại với nhau (chẳng hạn "khoa
học kỹ thuật", "khoa học công nghệ", và "kỹ thuật công nghệ"). Tuy vậy, công
nghệ khác với khoa học và kỹ thuật. Khoa học là toàn bộ hoạt động có hệ thống
nhằm xây dựng và tổ chức kiến thức dưới hình thức những lời giải thích và tiên
đoán có thể kiểm tra được về vũ trụ. Còn kỹ thuật là việc ứng dụng kiến thức khoa
học, kinh tế, xã hội, và thực tiễn để thiết kế, xây dựng, và duy trì các cấu trúc,
máy móc, thiết bị, hệ thống, vật liệu, và quá trình. 13
Công nghệ (có nguồn gốc từ technologia, hay τεχνολογια, trong tiếng Hy
Lạp; techne có nghĩa là thủ công và logia có nghĩa là "châm ngôn") là một thuật
ngữ rộng ám chỉ đến các công cụ và mưu mẹo của con người. Tuỳ vào từng ngữ
cảnh mà thuật ngữ công nghệ có thể được hiểu:
+ Công cụ hoặc máy móc giúp con người giải quyết các vấn đề;
+ Các kỹ thuật bao gồm các phương pháp, vật liệu, công cụ và các tiến trình
để giải quyết một vấn đề;
+ Các sản phẩm được tạo ra phải hàng loạt và giống nhau.
+ Sản phẩm có chất lượng cao và giá thành hạ.
Kỹ nghệ (engineering) nói tới một tập hợp các công nghệ được bố trí theo
một qui trình nhất định, được con người dùng các phương pháp và thực hiện qua
các công cụ để tạo ra những sản phẩm nhất định.
Kỹ nghệ là việc sử dụng phối hợp các công nghệ cần thiết để sản xuất ra các
sản phẩm của một ngành nào đó.
Cần phân biệt công nghệ là nói đến những kỹ thuật được phát triển cho một
loại vấn đề nào đó, còn kỹ nghệ nói đến các qui trình nghiêm ngặt phối hợp các
công nghệ, phương pháp và công cụ để làm ra sản phẩm có chất lượng.
Định nghĩa công nghệ do Uỷ ban Kinh tế và Xã hội khu vực Châu Á - Thái
Bình Dương (ESCAP): Công nghệ là kiến thức có hệ thống về quy trình và kỹ
thuật dùng để chế biến vật liệu và thông tin. Nó bao gồm kiến thức, thiết bị,
phương pháp và các hệ thống dùng trong việc tạo ra hàng hoá và cung cấp dịch vụ.
Mặc dù theo tiến trình phát triển, hiện nay khái niệm Kỹ nghệ phần mềm
được dùng cho môn học. Nhưng do yếu tố lịch sử và khách quan của tên môn học
trong khung chương trình chung của sinh viên, nên trong giáo trình này cụm từ
Công nghệ phần mềm và Kỹ nghệ phần mềm được dùng với nghĩa tương tự nhau.
Rất mong người đọc suy xét.
Theo IEEE [1993]: Kỹ nghệ phần mềm là:
(1) Việc áp dụng phương pháp tiếp cận có hệ thống, bài bản và được lượng
hóa trong phát triển, vận hành và bảo trì phần mềm; 14
(2) Nghiên cứu các phương pháp tiếp cận được dùng trong (1)
Theo Pressman [2001]: Kỹ nghệ phần mềm là bộ môn tích hợp cả quy trình,
các phương pháp, các công cụ để phát triển phần mềm máy tính.
Theo Sommerville [2007]: Kỹ nghệ phần mềm là lĩnh vực liên quan đến lý
thuyết, phương pháp và công cụ dùng cho phát triển phần mềm.
Như vậy có thể khái quát: Kỹ nghệ phần mềm (Software Engineering): là
việc áp dụng các công cụ, các kỹ thuật một cách hệ thống trong việc phát triển các
ứng dụng dựa trên máy tính. Đó chính là việc áp dụng các quan điểm, các tiến
trình có kỷ luật và lượng hoá được, có bài bản và hệ thống để phát triển, vận hành và bảo trì phần mềm.
Theo quan điểm của nhiều nhà nghiên cứu, có thể nhìn nhận kỹ nghệ phần
mềm là một mô hình được phân theo bốn tầng mà tất cả các tầng này đều nhằm
tới mục tiêu chất lượng, chi phí, thời hạn phát triển phần mềm. Công cụ Phương pháp Quy trình Chất lượng
Hình 1. 2. Kỹ nghệ phần mềm
Ở đây, tầng chất lượng hướng đến việc đảm bảo chất lượng và kiểm thử phần mềm.
Tầng quy trình liên quan tới vấn đề quản trị phát triển phần mềm như lập kế
hoạch, quản trị chất lượng, tiến độ, chi phí, mua bán sản phẩm phụ, cấu hình phần
mềm, quản trị sự thay đổi, quản trị nhân sự (trong môi trường làm việc nhóm),
việc chuyển giao, đào tạo, tài liệu;
Tầng phương pháp hay cách thức, công nghệ, kỹ thuật để làm phần mềm:
liên quan đến tất cả các công đoạn phát triển hệ thống như nghiên cứu yêu cầu,
thiết kế, lập trình, kiểm thử và bảo trì. Phương pháp dựa trên những nguyên lý cơ 15
bản nhất cho tất cả các lĩnh vực công nghệ kể cả các hoạt động mô hình hoá và kỹ thuật mô tả.
Tầng công cụ liên quan đến việc cung cấp các phương tiện hỗ trợ tự động
hay bán tự động cho các tầng quá trình và phương pháp (công nghệ).
Kỹ sư phần mềm (software engineer): là một người biết cách áp dụng rộng
rãi những kiến thức về cách phát triển ứng dụng vào việc tổ chức phát triển một
cách có hệ thống các ứng dụng. Công việc của người kỹ sư phần mềm là: đánh
giá, lựa chọn, sử dụng những cách tiếp cận có tính hệ thống, chuyên biệt, rõ ràng
trong việc phát triển, đưa vào ứng dụng, bảo trì, và thay thế phần mềm.
Do đặc điểm nghề nghiệp, người kỹ sư phần mềm phải có những kỹ năng cơ bản như:
- Định danh, đánh giá, cài đặt, lựa chọn một phương pháp luận thích
hợp và các công cụ CASE (Computer-Aided Software Engineering).
- Biết cách sử dụng các mẫu phần mềm (Software Prototyping).
- Biết cách lựa chọn ngôn ngữ, phần cứng, phần mềm.
- Quản lý cấu hình, lập sơ đồ và kiểm soát việc phát triển của các tiến trình.
- Lựa chọn ngôn ngữ máy tính và phát triển chương trình máy tính.
- Đánh giá và quyết định khi nào loại bỏ và nâng cấp các ứng dụng.
Mục tiêu của kỹ sư phần mềm là sản xuất ra các sản phẩm có chất lượng cao
và phù hợp với các quy trình phát triển chuẩn mực.
Việc phát triển (development): được bắt đầu từ khi quyết định phát triển sản
phẩm phần mềm và kết thúc khi sản phẩm phần mềm được chuyển giao cho người sử dụng.
Việc sử dụng (operations): là việc xử lý, vận hành hằng ngày sản phẩm phần mềm.
Việc bảo trì (maintenance): thực hiện những thay đổi đối với hệ thống và
chương trình để sửa những lỗi cố định, cung cấp những thay đổi về công việc,
hoặc làm cho phần mềm được hiệu quả hơn. 16
Việc loại bỏ (retirement): thường là việc thay thế các ứng dụng hiện thời bởi các ứng dụng mới.
Đối tƣợng nghiên cứu của công nghệ phần mềm
Hướng đến việc xây dựng các phần mềm có chất lượng như đã nêu, ngành
công nghệ phần mềm đưa ra 3 đối tượng nghiên cứu chính: Qui trình công nghệ,
Phương pháp phát triển, Công cụ và Môi trường phát triển phần mềm.
- Qui trình công nghệ phần mềm: Hệ thống các giai đoạn mà quá trình phát
triển phần mềm phải trải qua. Với mỗi giai đoạn cần xác định rõ mục tiêu, kết quả
nhận từ giai đoạn trước đó cũng chính là kết quả chuyển giao cho giai đoạn kế tiếp.
- Phương pháp phát triển phần mềm: Hệ thống các hướng dẫn cho phép
từng bước thực hiện một giai đoạn nào đó trong qui trình công nghệ phần mềm.
- Công cụ và môi trường phát triển phần mềm: Hệ thống các phần mềm trợ
giúp chính trong lĩnh vực xây dựng phần mềm. Các phần mềm này sẽ hỗ trợ trong
các bước xây dựng phần mềm theo một phương pháp nào đó với một qui trình được chọn trước.
2. Nhân tố con ngƣời và phân loại nghề nghiệp trong công nghệ phần mềm.
2.1. Nhân tố con ngƣời trong ngành công nghiệp phần mềm
Đối với một sản phẩn phần mềm, một người không thể hoàn thành mà là kết
quả lao động của một nhóm người, gọi là nhóm phát triển phần mềm.
Như vậy, một nhóm phát triển phần mềm như thế nào gọi là một nhóm hợp
lý? Sau đây là một vài yếu tố cần xem xét: -
Nhóm có bao nhiêu thành viên, -
Nhóm được tổ chức như thế nào, -
Tình hình thực tế của mỗi thành viên trong nhóm, -
Môi trường, điều kiện mà nhóm đang làm việc,...
Mỗi thành viên trong nhóm phải có một số kiến thức cần thiết tuỳ thuộc vào
vai trò trong nhóm để phát triển phần mềm. 17
2.2. Phân loại nghề nghiệp
Yêu cầu hiện nay của sự phát triển Công nghệ Thông tin (CNTT) ở Việt
nam đòi hỏi cần có những người lao động trong tất cả các ngành kinh tế biết sử
dụng hữu hiệu CNTT trong công việc của mình, và đồng thời cần có những người
trực tiếp tham gia vào sản xuất, kinh doanh, vận hành về CNTT. Do vậy cần có
những lớp người lao động sau:
 Những người biết vận dụng sáng tạo CNTT vào nghiệp vụ chuyên môn.
 Những người tham gia quản lí và vận hành các hệ thống CNTT
 Những người tham gia trực tiếp vào việc phát triển và xây dựng các sản phẩm CNTT.
Việc phân loại nghề nghiệp trong các hệ thống thông tin có thể được phân
chia dựa vào các tiêu chuẩn như: mức độ kinh nghiệm, loại hình công việc,...
Loại hình công việc
Ở đây, các loại hình công việc được bàn luận, dựa vào cách phân loại gồm:
Phát triển ứng dụng, hỗ trợ ứng dụng, chuyên ngành kỹ thuật, nhân viên và những vấn đề khác.
a. Phát triển ứng dụng
Lập trình viên: Các lập trình viên chuyển đổi những đồ án chi tiết kỹ thuật
sang các module mã và tự kiểm tra các đơn vị phần mềm. Các lập trình viên có
thể luân phiên chịu trách nhiệm giữa phát triển ứng dụng và bảo trì. Những
chuyên gia lập trình ở trình độ đại học thực hiện những nhiệm vụ bên ngoài việc lập trình.
Kỹ sư phần mềm: Một kỹ sư phần mềm thực hiện những chức năng của các
nhà phân tích, các nhà thiết kế và các lập trình viên. Các phân tích gia ở trình độ
đại học luôn luôn tham gia vào tổ chức có cấp độ cao để lập kế hoạch và nghiên
cứu khả thi. Các kỹ sư phần mềm có thể làm cả ba việc phân tích, thiết kế và lập
trình cũng như đứng ra lãnh đạo dự án hoặc quản lý dự án. Một kỹ sư quản lý
phần mềm sơ cấp thường dành nhiều thời gian lập trình trong khi một kỹ sư có
trình độ cao cấp lại tập trung vào việc lập kế hoạch, nghiên cứu khả thi, phân tích và thiết kế. 18
Phân tích viên hệ thống: Phân tích viên hệ thống đóng vai trò đặc biệt quan
trọng trong tiến trình phân tích. Ngoài kinh nghiệm, một phân tích viên tốt cần có các khả năng sau:
- Khả năng hiểu thấu các khái niệm trừu tượng, có khả năng tổ chức lại
thành các phân tích logic và tổng hợp các giải pháp dựa trên từng dải phân chia.
- Khả năng rút ra các sự kiện thích đáng từ các nguồn xung khắc và lẫn lộn.
- Khả năng hiểu được môi trường người dùng/khách hàng.
- Khả năng áp dụng các phần tử hệ thống phần cứng và/hoặc phần mềm vào
môi trường người sử dụng/khách hàng.
- Khả năng giao tiếp tốt ở dạng viết và nói.
- Khả năng trừu tượng hóa/tổng hợp vấn đề từ các sự kiện riêng lẻ.
Kỹ sư tri thức (Knowledge Engineer): Các kỹ sư tri thức suy luận ra những
mô hình ngữ nghĩa từ các chuyên gia để từ đó xây dựng những hệ chuyên gia và
trí tuệ nhân tạo. Các kỹ sư tri thức tương tự như các kỹ sư phần mềm nhưng được
chuyên môn hoá các kỹ năng để áp dụng vào các vấn đề trí tuệ nhân tạo. Việc phát
triển các mô hình và các chương trình của cấu trúc trí tuệ đòi hỏi khả năng quan
sát, kỹ năng phỏng vấn sâu sắc, khả năng trừu tượng hoá những vấn đề không
phải của chuyên môn cá nhân để tạo ra những ý thức lập luận và thông tin cần
thiết và khả năng phát triển những dự đoán về thông tin và tính chính xác với các chuyên gia.
b. Hỗ trợ ứng dụng
Chuyên gia ứng dụng: Chuyên gia ứng dụng có những vùng vấn đề được
chuyên môn hoá cho phép họ tham khảo ý kiến của các đội dự án về một loại ứng
dụng cụ thể. Ví dụ một nhà phân tích cao cấp về chuyển tiền thời gian thực có thể
phân chia được thời gian giữa các dự án chuyển tiền trong nước và quốc tế, biết
trước được những quy tắc, luật lệ phải tuân theo của các ngân hàng cũng như của
các tổ chức chuyển tiền khác.
Quản trị dữ liệu: Người quản lý dữ liệu quản lý thông tin như một nguồn
thống nhất. Với chức năng này, bộ phận quản lý dữ liệu giúp cho người sử dụng
xác định được tất cả dữ liệu được sử dụng, các dữ liệu có ý nghĩa trong quá trình 19
thực hiện chức năng của công ty. Những người quản lý dữ liệu thiết lập và bảo lưu
những chuẩn mực để thống nhất dữ liệu.
Khi dữ liệu đã được xác định, người quản lý dữ liệu sẽ làm việc để định
dạng và xác định cấu trúc cơ sở dữ liệu để sử dụng với ứng dụng. Với việc phát
triển ứng dụng mới, những người quản lý dữ liệu làm việc với bộ phận phát triển
ứng dụng để định vị những số liệu đã được tự động và với bộ phận quản trị CSDL
để cung cấp những nhóm ứng dụng dễ dàng truy nhập những cơ sở dữ liệu đã được tự động hoá.
Quản trị cơ sở dữ liệu (DBA - DataBase Administrator): Những người quản
lý cơ sở dữ liệu quản lý môi trường dữ liệu vật lý của một tổ chức. DBA phân
tích, thiết kế, xây dựng và bảo lưu cơ sở dữ liệu cũng như môi trường phần mềm
cơ sở dữ liệu. Làm việc cùng với những người quản lý dữ liệu xác định dữ liệu.
DBA xác định các cơ sở dữ liệu vật lý và nạp thông tin thực tế vào chúng.
Một người quản lý cơ sở dữ liệu làm việc với các nhóm phát triển ứng dụng
để cung cấp truy nhập đến dữ liệu tự động và để định nghĩa rõ ràng cơ sở dữ liệu
cần thiết cho thông tin được tự động.
Kỹ sư trí tuệ nhân tạo: Các kỹ sư trí tuệ nhân tạo làm việc như cố vấn giúp
các đội dự án xác định, thiết kế và cài đặt trí tuệ vào các ứng dụng. Kỹ sư trí tuệ
nhân tạo cùng với các kỹ sư tri thức dịch và kiểm tra những vấn đề miền dữ liệu
và thông tin lập luận bằng một ngôn ngữ của trí tuệ nhân tạo. Các kỹ sư trí tuệ
nhân tạo đạt được trình độ chuyên môn cao hơn các kỹ sư tri thức.
Nhà tư vấn: Người tư vấn thì biết mọi vấn đề và thực hành được tất cả. Số
năm kinh nghiệm càng cao thì kiến thức có được càng nhiều. Lĩnh vực chuyên
môn có thể bao gồm một vài loại công việc được đề cập đến trong phần này.
Người tư vấn được nhờ đến trong hầu hết các trường hợp lắp đặt hệ thống và cung
cấp những kỹ năng bên ngoài không sẵn có. Bởi vậy họ thường đào tạo đội ngũ
bên trong trong suốt quá trình thực hiện công việc. Khi được nhờ đến, người tư
vấn được mong chờ có những kỹ năng chuyên biệt và sẽ áp dụng những kỹ năng
này trong việc thực hiện tư vấn.
c. Chuyên ngành kỹ thuật
Nhà phân tích và Kỹ sư truyền thông: Các nhà phân tích và kỹ sư truyền
thông phân tích, thiết kế, đàm phán và/hoặc cài đặt các thiết bị và phần mềm 20