Xem mẫu
- 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 ĐHSP - Đạ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
Môn học Nhập môn Công nhệ phần mềm là học phần 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 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 suông đố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ô, 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 đưa ra 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 ....... 9
1. Một số khái niệm ............................................................................................ 9
2. Nhân tố con người và phân loại nghề nghiệp trong công nghệ phần
mềm. ................................................................................................................. 15
3. Sản phẩm phần mềm – đặc trưng và phân loại............................................. 22
Chƣơng 2. QUI TRÌNH PHÁT TRIỂN PHẦN MỀM................... 28
1. Qui trình phát triển phần mềm ..................................................................... 28
2. Mô hình phát triển phần mềm ...................................................................... 34
3. Trợ giúp tự động hoá phát triển .................................................................... 46
Chƣơng 3. PHÂN TÍCH VÀ ĐẶC TẢ YÊU CẦU ......................... 49
1. Đại cương về phân tích và đặc tả yêu cầu. ................................................... 49
2. Phân tích và đặc tả yêu cầu .......................................................................... 53
3. Nguyên lý phân tích và mô hình hóa ............................................................ 66
4. Đặc tả yêu cầu .............................................................................................. 74
5. Thẩm định yêu cầu ....................................................................................... 76
6. Làm bản mẫu trong quá trình phân tích ....................................................... 77
7. Định dạng đặc tả yêu cầu ............................................................................. 79
8. Quản lý yêu cầu ............................................................................................ 82
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). ................................................................................................ 84
Chƣơng 4. THIẾT KẾ .................................................................... 102
1. Khái niệm về thiết kế phần mềm ................................................................ 102
2. Thiết kế hướng chức năng .......................................................................... 114
3. Thiết kế kiến trúc ........................................................................................ 118
4. Thiết kế giao diện người dùng .................................................................... 128
5. Thiết kế thủ tục ........................................................................................... 133
6. Thiết kế hướng đối tượng ........................................................................... 135
Chƣơng 5. LẬP TRÌNH .................................................................. 151
1. Khái niệm ................................................................................................... 151
2. Ngôn ngữ lập trình ...................................................................................... 152
3. Phong cách lập trình ................................................................................... 154
4. Kỹ thuật lập trình ........................................................................................ 156
5. Lập trình hướng hiệu quả thực hiện ........................................................... 158
Chƣơng 6. KIỂM THỬ ................................................................... 161
6
- 1. Đại cương về kiểm thử phần mềm ............................................................. 161
2. Các mức độ kiểm thử.................................................................................. 163
3. Các hoạt động kiểm thử .............................................................................. 167
4. Kỹ thuật kiểm thử ....................................................................................... 169
5. Chiến thuật kiểm thử phần mềm ................................................................ 169
6. Kiểm thử hướng đối tượng ......................................................................... 178
7. Chứng minh toán học tính đúng đắn của chương trình. ............................. 180
Chƣơng 7. TRIỂN KHAI VÀ BẢO TRÌ ....................................... 189
1. Triển khai phần mềm .................................................................................. 189
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 ......................................................................................................... 193
3. Bảo trì ......................................................................................................... 198
7
- BẢNG THUẬT NGỮ
Phần mềm Software 9
Phần cứng Hardware 9
Công nghệ phần Software 5
mềm Technology
Kỹ nghệ phần Software 13
mềm Engineering
CASE Computer-
aided
software
engineering
Đặc tả yêu cầu Software
phần mềm Requirement
Specification
8
- 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:
9
- 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,…
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
10
- mềm… Nên ở đâ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, 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ệ (tiếng Anh: 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.
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
11
- 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;
(2) nghiên cứu các phương pháp tiếp cận được dùng trong (1)
12
- 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
Ở đâ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ơ
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ả.
13
- 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 mang tính logic đố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.
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
14
- 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, ta 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.
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
15
- 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 ra 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ị. 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ế.
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.
16
- - 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 ngân hàng dự trữ liên bang
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
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
17
- để 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
truyền thông. Họ đòi hỏi liên quan chặt chẽ tới kỹ thuật truyền thông và có thể
làm việc trên mainframe hoặc các mạng truyền thông dựa vào máy tính cá nhân.
Để bắt đầu ở mức xuất phát thì nền tảng kiến thức phải có là điện tử, kỹ thuật, các
ứng dụng, khoa học máy tính và truyền thông.
Chuyên gia về mạng cục bộ: Các chuyên gia mạng cục bộ đặt kế hoạch, lắp
đặt, quản lý và duy trì những khả năng của mạng cục bộ. Điểm khác nhau duy
18
- nhất giữa các chuyên gia mạng cục bộ và các chuyên gia truyền thông là phạm vi.
Các chuyên gia truyền thông làm việc với nhiều mạng kể cả mainframe; còn
chuyên gia mạng cục bộ chỉ làm việc trên những mạng có giới hạn về mặt địa lý
và được cấu thành bởi nhiều máy tính cá nhân.
Một người quản lý mạng cục bộ tạo ra người sử dụng mới, thực hiện hoặc
thay đổi mức hoặc mã bảo mật, cài đặt những version mới của phần mềm điều
hành mạng cục bộ, cài đặt những version mới của cơ sở dữ liệu hoặc phần mềm
cơ sở mạng cục bộ khác. Giám sát tài nguyên cung cấp qua mạng cục bộ, cung
cấp bản sao và khả năng phục hồi cho mạng cục bộ, và quản lý cấu hình mạng cục
bộ.
Lập trình viên hệ thống: Các lập trình viên hệ thống cài đặt và bảo dưỡng hệ
điều hành và ứng dụng hỗ trợ phần mềm. Định giá những đặc điểm mới và xem
xét chúng có cần thiết ở một thời điểm nào đó không là một kỹ năng mà lập trình
viên hệ thống cần phát triển. Giám sát hàng trăm ứng dụng để xem xét những rắc
rối của nó có liên quan đến vấn đề của hệ thống hay không là một nhiệm vụ quan
trọng.
Chuyên gia hỗ trợ phần mềm (SSP – Sofware Support): Hỗ trợ phần mềm
ứng dụng tương tự nhưng khác với lập trình viên hệ thống. SSP cài đặt và bảo
dưỡng gói phần mềm sử dụng bởi cả các nhà phát triển ứng dụng và người sử
dụng. Chúng có thể là cơ sở dữ liệu, ngôn ngữ hỏi đáp, sao lưu và phục hồi, bảng
tính, quản lý khoảng trống đĩa, giao diện, truyền thông.
d. Nhân viên
Chuyên gia về bảo mật: Một chuyên gia bảo mật chịu trách nhiệm bảo mật
và sẵn sàng phục hồi thảm hoạ. Để bảo mật, một chuyên gia phải thiết lập các
chuẩn cho bảo mật dữ liệu, giúp đỡ các đội dự án trong việc quyết định các yêu
cầu bảo mật và thiết lập các chuẩn cho trung tâm bảo mật dữ liệu. Tương tự để
phục hồi thảm hoạ, chuyên gia bảo mật giúp đỡ những người quản lý và các đội
dự án trong việc xác định các dữ liệu nguy cấp cần thiết cho tổ chức. Sau đó
chuyên gia giúp trung tâm dữ liệu và các đội dự án trong việc phát triển và thử
nghiệm các kế hoạch phục hồi thảm hoạ.
Kiểm soát viên: Các kiểm soát viên thực hiện việc kiểm tra khả năng tin cậy
của những thiết kế ứng dụng. Bất kỳ ứng dụng nào duy trì những quy định hợp
19
- pháp, trách nhiệm hoặc dùng bản hướng dẫn của công ty cũng có thể bị tạo lại bất
kỳ giao dịch nào và phát hiện ra tiến trình của nó. Các kiểm soát viên đảm bảo
rằng những mất mát của công ty là nhỏ nhất qua việc thiết kế những ứng dụng tốt.
Những khía cạnh thiết kế được các kiểm soát viên đánh giá là rãnh kiểm soát, khả
năng phục hồi và bảo mật.
Đào tạo: Một người đào tạo kỹ thuật học công nghệ mới, các sản phẩm đại
lý, những đặc điểm ngôn ngữ mới,... sau đó dạy những người khác trong tổ chức
sử dụng. Đào tạo có thể thực hiện trong nội bộ tổ chức những cũng có thể do một
công ty đào tạo có chuyên môn đảm nhận.
Người viết các chuẩn và kỹ thuật: Những người phát triển chuẩn làm việc
với những người quản lý để định ra những mặt công việc họ muốn chuẩn hoá và
để tiêu chuẩn hoá những yêu cầu thành những chính sách và thủ tục chuẩn hoá
cho tổ chức. Những kỹ năng quan trọng nhất đối với người phát triển chuẩn là
ngôn ngữ và chữ viết truyền thông.
Phát triển tiêu chuẩn và việc viết kỹ thuật là các hoạt động có liên quan với
nhau. Người viết kỹ thuật lấy thông tin và sản phẩm phần mềm, ứng dụng hoặc
những sản phẩm công nghệ thông tin khác và viết tài liệu để mô tả những đặc
điểm, chức năng, công dụng của chúng. Người viết kỹ thuật phải có kỹ năng giao
tiếp tốt trong cả lĩnh vực kỹ thuật và phi kỹ thuật. Người viết dùng các kỹ năng
giao tiếp kỹ thuật để nói và phát triển sự hiểu biết về sản phẩm được giới thiệu.
Đảm bảo chất lượng (QA): Các dạng kiểm tra khác nhau tuỳ thuộc vào sản
phẩm được duyệt. Một phân tích đảm bảo chất lượng thường được thực hiện với
một kế hoạch phát triển khi nó bắt đầu. Anh ta hay cô ta cần phải tham gia đến khi
sản phẩm đầu tiên của nhóm phát triển xuất hiện. Sau đó khi mà tài liệu đã có,
người phân tích đảm bảo chất lượng phải xem xét sự thống nhất, hoàn thiện, chính
xác uyển chuyển linh động của nó. Bất cứ vấn đề nào xuất hiện trong quá trình
xem xét phải được ghi lại để trình lên người quản lý dự án.
Những người phân tích đảm bảo chất lượng phải có kỹ năng giao tiếp, kỹ
năng giải quyết vấn đề để thực hiện công việc kiểm tra chất lượng. Họ cần phải có
kinh nghiệm trong tất cả các khía cạnh phát triển của dự án để biết nên làm cái gì
và vấn đề nảy sinh từ đâu. Đồng thời sự nhạy cảm và khả năng phát hiện ra những
vấn đề cần phê bình cũng rất quan trọng. Không ai muốn bị nói trước công chúng
20
nguon tai.lieu . vn