



















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  
