Tải bản đầy đủ (.doc) (69 trang)

Loạt bài kĩ nghệ phần mềm thực hành

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

Bài 1: Lịch sử máy tính
Chào mừng các bạn tới với môn Nhập môn về Kĩ nghệ phần mềm. Bạn
đang sắp học môn này bởi vì bạn quan tâm tới Kĩ nghệ phần mềm và
muốn theo đuổi nghề trong việc phát triển và quản lí phần mềm. Đây
là một chọn lựa nghề nghiệp tốt vì xu hướng toàn cầu chỉ ra rằng có sự
khan hiếm trầm trọng về kĩ sư phần mềm – Những người biết cách xây
dựng sản phẩm phần mềm đáp ứng các yêu cầu của khách hàng về
chất lượng, thời gian.
Đây là buổi học đầu tiên trong “Loạt bài kĩ nghệ phần mềm thực
hành,” một chương trình học và dạy duy nhất của Đại học Carnegie
Mellon. Trong buổi này, bạn sẽ được giới thiệu với đa dạng chủ đề
đang được thực hiện trong hầu hết các công ti toàn cầu, bạn sẽ có khả
năng học Kĩ nghệ phần mềm tất cả là gì, loại kĩ năng nào bạn sẽ cần
phát triển, cũng như lĩnh vực nào là đáng quan tâm nhất với bạn. Vì
đây là buổi đầu tiên bạn sẽ được giới thiệu cho nhiều chủ đề ở mức rất
cao để cho bạn có thể hiểu hoàn cảnh, vấn đề và các khái niệm chủ
yếu; các chi tiết sẽ được bao quát sâu hơn trong các buổi kế tiếp.
Mọi bài đều được ghi hình và đặt trực tuyến cho bạn xem trước khi dự
lớp. Vì mọi bài đều trong tiếng Anh, bạn nên xem bài trước rồi dự
phiên lên lớp “sống”. Phần trong lớp theo tiếng nước bạn sẽ có giảng
viên trợ giúp để làm sáng tỏ, thảo luận, hỏi và trả lời. Điều quan trọng
là theo bài trực tuyến cũng như bạn ở trong lớp "sống" để cho bạn có
thể quen thuộc với các khái niệm và thuật ngữ tiếng Anh. Bạn sẽ cần
những kĩ năng ngôn ngữ này đề làm việc quốc tế.
Bạn không nên hỏi các câu hỏi về bài tập về nhà, công việc tổ, và bài
kiểm tra nếu như bạn còn chưa xem bài hàng tuần. Chính sách của
Carnegie Mellon là sinh viên chịu trách nhiệm xem video bài trước và
hoàn thành bài đọc, trước khi tới lớp.
Để thành công trong lớp này, bạn sẽ cần có kỉ luật và phát triển thói
quen nghiên cứu trước. Là kĩ sư phần mềm tương lai, tri thức và kĩ
năng của bạn là mấu chốt cho nghề nghiệp và thăng tiến của bạn


trong tổ chức, cho nên chúng ta hãy bắt đầu và chúc bạn học tập may
mắn.
Nội dung bài giảng
1. Tại sao chúng ta cần nghiên cứu máy tính?
Trả lời: Ngày nay, máy tính chi phối mọi khía cạnh của cuộc sống hàng
ngày và phần mềm là nhân tổ chủ chốt trong chế tạo, ngân hàng, du
lịch, truyền thông, quốc phòng, y tế, nghiên cứu, chính phủ, giáo dục,
giải trí, luật pháp, v.v. Đòi hỏi về những người có kĩ năng về máy tính
đang là nhu cầu cao. Theo dự báo của chính phủ Mĩ cho các năm 2005
tới 2015, các kĩ năng liên quan tới kĩ nghệ phần mềm và máy tính là
nghề nghiệp tăng trưởng nhanh nhất với lương cao nhất. Dựa trên
nghiên cứu này, nhu cầu toàn cầu về phần mềm sẽ tiếp tục tăng có ý
nghĩa và tạo ra sự khan hiếm toàn cầu quãng 3 triệu kĩ sư phần mềm
đến năm 2010.
2. Tại sao chúng ta nghiên cứu Kĩ nghệ phần mềm chứ không phải là
Khoa học máy tính?
Trả lời: Viện các kĩ sư điện và điện tử (IEEE) định nghĩa kĩ nghệ phần
mềm là “việc áp dụng cách tiếp cận hệ thống, có kỉ luật, định lượng
được vào việc phát triển, vận hành, và bảo trì phần mềm.” Hệ thống
phần mềm là cái phức tạp nhất mà con người đã từng tạo ra. Để thiết
kế và xây dựng chúng, người ta cần tuân theo các qui trình và thủ tục
điển hình của các bộ môn kĩ nghệ khác. Thứ nhất, các yêu cầu cần
được xác định cẩn thận. Thế rồi kiến trúc của hệ thống phần mềm cần
được phát triển. Một khi các yêu cầu và kiến trúc được xác định, người
ta có thể bắt đầu phát triển chương trình. Chương trình này cần trắc
nghiệm, kiểm nghiệm và kiểm thử. Các kĩ năng của Kĩ nghệ phần mềm
đòi hỏi việc huấn luyện có ý nghĩa về mọi khía cạnh của phát triển
phần mềm, từ khái niệm bắt đầu cho tới việc cho về hưu phần mềm.
Khoa học máy tính phần lớn hội tụ vào lí thuyết cấu trúc dữ liệu, thao
tác dữ liệu và thuật toán với mục đích mã hoá và kiểm thử. Từ khía

cạnh này, Khoa học máy tính chỉ là một tập con của Kĩ nghệ phần
mềm.
3) Tại sao máy tính và phần mềm trở nên quan trọng thế?
Trả lời: Môi trường làm việc toàn cầu mang tính cạnh tranh mãnh liệt.
Mọi doanh nghiệp đều chịu sức ép cực lớn để tồn tại bằng việc phản
ứng với những điều sau:
Thay đổi nhân khẩu (toàn cầu hoá, phân bố con người, mua, bán và
cạnh tranh toàn cầu)
Tính linh hoạt công ti (hợp nhất, thu nhận, liên minh đa dạng, v.v.)
Kiểm soát chi phí (chứa và giảm chi tiêu)
Chất lượng sản phẩm và dịch vụ
Tri thức & kĩ năng (công nghệ mới, kĩ năng mới v.v )
Qui định (Nhiều ràng buộc, qui tắc, qui định của chính phủ v.v )
Toàn cầu hoá là quá trình tương tác và tích hợp giữa con người, công
ti, và chính phủ của các quốc gia khác nhau. Nó mở ra thị trường mới
cả nội địa và quốc tế và có tác động có ý nghĩa lên môi trường kinh
doanh khắp thế giới.
Thế giới đang thay đổi, doanh nghiệp đang thay đổi, và công nghệ
đang thay đổi. Giữ nhịp cùng với những thay đổi này là một phần của
việc có hiệu quả như một công ti toàn cầu. Công ti toàn cầu là công ti
làm kinh doanh toàn cầu - nơi doanh nghiệp được cộng tác và tích hợp
trên cơ sở toàn cầu với các tài nguyên dùng chung trên cơ sở toàn cầu,
truy nhập vào những thị trường có khối lượng cao nhất và sinh lời bằng
những sản phẩm chất lượng cao nhất với chi phí thấp nhất.
Để làm điều này, công ti cần dùng máy tính và phần mềm để tự động
qui trình, giảm chi phí và tạo ra ưu thế cạnh tranh. Công ti phải đánh
giá đối thủ cạnh tranh để tìm ra cái gì là cần thiết để đạt tới ưu thế tối
đa.
Bài đọc thêm:
Xem tài liệu đọc thêm cho bài này.

1. L1_MIS_1_History_Computer.pdf
3. L1_The_US_Software_Industry.pdf
Sinh viên phải hoàn thành tài liệu đọc thêm trước khi lên lớp và sẵn
sàng tham gia vào thảo luận trên lớp.
Sinh viên được khuyến khích xem bài video và trở nên quen thuộc với
các khái niệm và định nghĩa tổng quan.
Bài tập về nhà và hướng dẫn trả lời: Không có bài tập về nhà cho buổi
học thứ nhất.
Câu hỏi kiểm tra và hướng dẫn trả lời: Không có bài kiểm tra cho buổi
học thứ nhất.
Vật phẩm bài giảng : Không.
Bài 2: Phần cứng và phần mềm
Bài này hội tụ vào các chức năng cơ sở của máy tính (phần cứng và
phần mềm). Bằng việc dự bài học (cả trực tuyến và dự lớp “sống”),
bạn sẽ hiểu các đơn vị chức năng cơ bản của máy tính, cách chúng
khớp với nhau và điều chúng làm. Bạn sẽ có khả năng nhận diện các
kiểu chính và dùng các hệ thống máy tính lớn, mini, vi tính và nêu đại
cương các công nghệ chính và dùng các thiết bị ngoại vi để đưa vào,
đưa ra và lưu giữ.
Bạn cần biết và có khả năng nhận diện các cấu phần và chức năng của
hệ thống máy tính, cũng như mô tả xu hướng trong hệ thống máy
tính. Là người kĩ sư phần mềm tương lai, bạn phải có khả năng nhận
diện các kiểu ứng dụng phần mềm, giải thích mục đích của hệ thống
phần mềm; và nêu đại cương các chức năng của hệ điều hành, ứng
dụng phần mềm, công cụ phần mềm và ngôn ngữ.
Bạn cũng cần biết về internet và ứng dụng phần mềm của nó. Tất cả
những khái niệm này sẽ giúp hướng dẫn bạn trong các bài sau và các
môn học khi bạn tiến bộ dần qua chương trình này.
Chúng tôi khuyến khích bạn tham gia vào thảo luận trên lớp bao quát
các chủ đề mà có thể hay không là một phần của bài. Mục đích của

thảo luận trên lớp là để mở rộng hơn tri thức của bạn và tạo điều kiện
cho việc tự dạy giữa sinh viên và giảng viên của khoa. Bạn càng dồn
nhiều thời gian và nỗ lực vào lớp, bạn sẽ càng học nhiều hơn, và bạn
càng thu được nhiều tri thức, kĩ năng và tri thức của bạn càng tốt sẽ
xác định ra bạn có thể đi xa đến đâu trong việc theo đuổi nghề nghiệp
về kĩ nghệ phần mềm.
Bạn cần biết rằng tất cả máy tính - từ máy lớn tới máy cầm tay, đều
có cùng tổ chức chức năng. Bốn đơn vị chức năng là: CPU, bộ nhớ
ngoài, đơn vị đưa vào và đơn vị đưa ra.
Bạn phải có khả năng hiểu máy vi tính (PC) với bộ vi xử lí và có khả
năng thảo luận việc nổi lên của Intel và Microsoft và cách họ đi tới
thống trị thị trường bộ vi xử lí.
Bạn nên có khả năng nhận ra tất cả các đơn vị nhớ ngoài và trong,
thiết bị đưa vào và thiết bị đưa ra.
Bạn không cần hiểu chi tiết về cấu phần máy tính như được dạy trong
các giáo trình khoa học máy tính hay kĩ nghệ máy tính với định hướng
phần cứng. Chủ đề chính của môn này là cung cấp tri thức rộng về kĩ
nghệ phần mềm bao quát hầu hết "Cái gì" chứ không "Thế nào". Cũng
giống như bạn không cần biết cách mọi bộ phận của chiếc xe vận hành
trước khi bạn học lái xe.
Trong thảo luận trên lớp, bạn phải có khả năng đưa ra những ví dụ về
cấu phần của máy tính (CPU, bộ nhớ, internet, thiết bị truyền thông,
phần mềm, phần cứng, mạng v.v.) và thảo luận điều gì xảy ra nếu
những hệ thống chủ chốt này hỏng? (Chẳng hạn, vi rút máy tính làm
sập một nửa doanh nghiệp ở Mĩ năm 2004, và việc hỏng máy tính ở hệ
thống điều khiển sân bay sẽ làm cắt bỏ nhiều chuyến bay, với việc
chậm trễ tốn kém cho hãng hàng không vài triệu đô la).
Nội dung
Hệ thống máy tính là gì?
Trả lời: Hệ thống máy tính bao gồm phần cứng và phần mềm hệ thống

cộng tác để cho chạy chương trình ứng dụng.
Thông tin được lưu giữ trong máy tính thế nào?
Trả lời: Thông tin bên trong máy tính được biểu diễn như nhóm các mã
nhị phân (Bits) được diễn giải theo những cách khác nhau, tuỳ thuộc
vào ngữ cảnh.
Ứng dụng làm việc với máy tính thế nào?
Trả lời: Ứng dụng hay chương trình được dịch bởi chương trình khác
thành các dạng khác, bắt đầu như văn bản ASCII rồi được trình biên
dịch và trình móc nối dịch thành tệp thực hiện được dạng nhị phân.
Bên trong máy tính làm việc thế nào?
Trả lời: CPU hay bộ xử lí đọc và diễn giải các lệnh nhị phân được lưu
trong bộ nhớ chính. Máy tính để hầu hết thời gian cho việc sao dữ liệu
giữa bộ nhớ, thiết vị đưa vào và đưa ra (I/O) và thanh ghi của CPU, và
thiết bị nhớ.
Bài đọc thêm:
1. L2_How_PC_works.pdf
2. L2_Personal_Computer.pdf
Bạn phải hoàn thành việc đọc tài liệu thêm trước khi lên lớp và sẵn
sàng để tham gia vào thảo luận trên lớp.
Bài tập về nhà và hướng dẫn trả lời: Không có bài tập về nhà cho bài
này;
Có 2 bài kiểm tra trên lớp (một bài kiểm tra đa chọn lựa và một bài
kiểm tra đúng/sai). Sinh viên phải nộp câu trả lời trên lớp để chứng tỏ
rằng họ hiểu các khái niệm cơ bản về phần cứng và phần mềm.
Vật phẩm bài giảng: Không.
Bài 3: Kĩ nghệ phần mềm
Kĩ nghệ phần mềm là rất đáng làm ngày nay, nổi lên như lĩnh vực phát
triển nhanh nhất và là nghề có nhu cầu rất lớn ngày nay trong mọi
công việc phần mềm. Thách thức trí tuệ của Kĩ nghệ phần mềm là có ý
nghĩa bởi vì trong lĩnh vực này, bạn bao giờ cũng bị thách thức phải là

tốt nhất trong số những người ưu tú của ngành công nghiệp phần
mềm.
Kĩ nghệ phần mềm là ứng dụng cách tiếp cận có hệ thống, có kỉ luật,
định lượng được vào việc phát triển, vận hành, và bảo trì phần mềm.
Nó bao gồm các kĩ thuật và thủ tục, thường được điều chỉnh bởi qui
trình phát triển phần mềm, với mục đích cải tiến sự tin cậy và tính bảo
trì của hệ thống phần mềm.
Những người có tài năng là yếu tố quan trọng nhất trong bất kì tổ chức
phần mềm nào. Bước đầu tiên của công ti phần mềm là thuê người giỏi
nhất đang sẵn có. Ứng cử viên càng nhiều kinh nghiệm càng tốt.
Những người chỉ có thể viết một ngôn ngữ lập trình, nhưng không biết
cách phối hợp các hoạt động, kiến trúc hệ thống, hay thiết kế giải
pháp, làm nảy sinh nhiều mảnh việc thiếu.
Lịch sử của phát triển phần mềm là một trong những lịch sử phức tạp
và tăng qui mô. Ban đầu phần mềm được phát triển bởi vài cá nhân,
tạo ra vài chương trình nhỏ. Ngày nay phần mềm không còn chỉ là
chương trình nhỏ, mà là sản phẩm lớn chứa vài triệu dòng mã lệnh đòi
hỏi công việc được phối hợp của nhiều tổ. Các công ti phần mềm thành
công đã học được rằng họ tất cả đều cần những công nhân có kỉ luật,
có cấu trúc, người có thể thực hiện những nhiệm vụ mới này. Ngày nay
trong thế giới đã phát triển, người lập trình đang bị thay thế bởi người
kĩ sư phần mềm.
Trong môn học này, bạn sẽ được giới thiệu cho vào chủ đề trong Kĩ
nghệ phần mềm, hội tụ vào độ lớn mà hầu hết vấn đề phần mềm đều
có tương hỗ với nhau. Chìa khoá trung tâm cho bộ môn Kĩ nghệ phần
mềm là quản lí dự án phần mềm và qui trình phần mềm. Quản lí dự án
phần mềm sẽ được dạy chi tiết hơn trong môn học kế sau, sẽ bao quát
các miền mức cao, hội tụ vào qui trình phần mềm và mọi miền hỗ trợ
của Kĩ nghệ phần mềm. Qui trình phần mềm là tập các công cụ,
phương pháp, và thực hành chúng ta dùng để tạo ra sản phẩm phần

mềm. Mục tiêu của quản lí qui trình phần mềm là để tạo ra sản phẩm
tương ứng theo kế hoạch trong khi đồng thời hỗ trợ cho dự án để tạo
ra sản phẩm có phẩm chất tốt hơn và không có lỗi.
Chúng tôi khuyến khích bạn đọc nhiều hơn về qui trình phần mềm và
tham gia vào thảo luận trên lớp. Điều này sẽ giúp cải tiến khả năng
của bạn để lãnh đạo, để làm việc trong tổ và xây dựng có hiệu quả
niềm tin của bạn khi bạn tiến qua những môn học này.
Kĩ nghệ phần mềm là việc áp dụng cách tiếp cận có hệ thống, có kỉ
luật, định lượng được vào việc phát triển, vận hành và bảo trì phần
mềm. Nó bao quát các kĩ thuật và thủ tục, thường được điều chỉnh bởi
qui trình phát triển phần mềm, với mục đích cải tiến sự tin cậy và tính
bảo trì của hệ thống phần mềm.
Theo cảnh quan kĩ nghệ phần mềm, khoa học máy tính, kĩ nghệ máy
tính, và hệ thông tin nghiệp vụ (Tin học) tất cả đều là các lĩnh vực hỗ
trợ. Việc tổ hợp những bộ môn này và sự hội tụ vào các ứng dụng thực
hành sẽ dẫn tới một loại sinh viên tốt nghiệp khác hơn so với những
người tốt nghiệp từ các chương trình lí thuyết ngày nay.
Thuật ngữ “kĩ nghệ phần mềm” đã được F.L. Bauer tạo ra trong Hội
nghị Kĩ nghệ phần mềm NATO năm 1968 tại đó ông ấy mô tả bộ môn
kĩ nghệ bao gồm tri thức, công cụ và phương pháp để lấy yêu cầu,
kiến trúc, thiết kế, xây dựng, kiểm thử, và bảo trì phần mềm. Ngày
nay, các kĩ sư phần mềm phải có khả năng chứng tỏ năng lực phân
tích, thiết kế, trắc nghiệm, kiểm nghiệm, và bảo trì hệ thống phần
mềm bằng việc dùng các qui trình, mô hình, và cách đo thích hợp
trong phát triển phần mềm. Họ cũng được trông đợi có những kĩ năng
tổ và trao đổi cần thiết để hoạt động trong môi trường phát triển phần
mềm.
Phần mềm đã trở thành yếu tố chủ yếu trong tiến hoá của hệ thống
dựa trên máy tính hay hệ thông tin. Trong bốn mươi năm qua, phần
mềm đã tiến hoá từ một lĩnh vực chuyên môn hoá dành cho các nhà

khoa học và nghiên cứu, thành ngành công nghiệp kiểm soát hầu hết
mọi thứ chúng ta làm ngày nay. Tuy nhiên, khía cạnh “lập trình” của
những năm đầu (Khoa học máy tính, Tin học) đã tạo ra một tập các
vấn đề vẫn còn tồn tại tới ngày nay. Ý định của kĩ nghệ phần mềm là
cung cấp cách tiếp cận mới tới giải quyết vấn đề bằng việc dùng hệ
thống dựa trên máy tính cho một cái nhìn toàn bộ về qui trình phát
triển nảy sinh trong các sản phẩm chất lượng cao hơn đáp ứng cho
trông đợi của người dùng.
Có sự khác biệt căn bản giữa người lập trình và người kĩ sư phần mềm.
Người này hội tụ vào khía cạnh thực hiện (lập trình), trong khi người
kia bao quát toàn bộ vòng đời phát triển từ quan niệm khởi đầu cho tới
sản xuất và bảo trì cuối cùng.
Những thay đổi đã xảy ra một cách toàn cầu nơi "tốc độ" bây giờ là qui
tắc chính, làm khó khăn cho hệ thống giáo dục truyền thống theo kịp
với thay đổi công nghệ và nhu cầu công nghiệp. Tiến hoá của phát
triển phần mềm là một trong những tiến hoá tăng thường xuyên về qui
mô và tốc độ. Hai mươi năm trước đây, vài người có thể xây dựng
những chương trình nhỏ không khó khăn gì. Nhưng trong vài năm lại
đây công việc này đã tăng lên, đòi hỏi sự trưởng thành của các tổ hàng
trăm người, rồi tới vài tổ cỡ vài trăm người để đáp ứng nhu cầu xây
dựng sản phẩm phần mềm cuối cùng, có tới hàng trăm triệu dòng mã
lệnh. Đây là lí do tại sao khái niệm về người lập trình không còn có tác
dụng và phải bị thay thế bằng cách tiếp cận có kỉ luật tới việc xây
dựng phần mềm.
Nội dung
1. Tại sao chúng ta cần nghiên cứu Kĩ nghệ phần mềm thay cho Khoa
học máy tính?
2. Tại sao chúng ta cần hội tụ vào qui trình phần mềm?
3. Các khái niệm chủ yếu của kĩ nghệ phần mềm là gì?
4. Tại sao chúng ta cần công việc tổ?

Bài đọc thêm:
1. L3_Why Software Is So Bad.pdf
2. L3_Future_of_IT_profession.pdf
3. L3_Software_Engineering_Needs.pdf
4. L3_Software Engineering Degree Programs.pdf
5. L3_Software Engineering Issues.pdf
Bạn phải hoàn thành việc đọc tài liệu thêm trước khi lên lớp và sẵn
sàng để tham gia vào thảo luận trên lớp.
Bài tập về nhà: Viết bài báo ngắn (2 – 3 trang) dựa trên kịch bản sau:
Khi phần mềm trở nên quan trọng hơn, rủi ro cho doanh nghiệp do
chương trình lỗi trở thành mối quan tâm ngày càng tăng. Hãy xây
dựng một kịch bản hiện thực để lỗi của chương trình có thể gây tai hại
đáng kể cho doanh nghiệp.
Có 2 bài kiểm tra trên lớp (một bài kiểm tra đa chọn lựa và một bài
kiểm tra đúng/sai). Sinh viên phải nộp câu trả lời trên lớp để chứng tỏ
rằng họ hiểu các khái niệm cơ bản về phần cứng và phần mềm.
Vật phẩm bài giảng: Không.
Nhập môn Kĩ nghệ phần mềm - Bài 4: Qui trình phần mềm
Bài 4: Qui trình phần mềm
Trong bài này, bạn sẽ được giới thiệu với khái niệm về qui trình phần mềm. Qui trình
phần mềm là tập các công cụ, phương pháp, và thực hành chúng ta dùng để tạo ra
sản phẩm mềm. Các mục tiêu của quản lí qui trình phần mềm là để tạo ra sản phẩm
tương ứng theo kế hoạch trong khi đồng thời hỗ trợ cho dự án để tạo ra sản phẩm
với phẩm chất tốt hơn, không có lỗi.
Trong bài này, bạn sẽ học về qui trình phần mềm như một khuôn khổ hay bản lộ
trình để giúp hướng dẫn kĩ sư phần mềm phát triển phần mềm một cách nhất quán
và hiệu quả. Khái niệm chủ yếu của qui trình được dựa trên nguyên tắc: Chất lượng
của sản phẩm phần mềm bị cai quản bởi chất lượng của qui trình được dùng để xây
dựng và bảo trì nó. Để nâng cao chất lượng của sản phẩm, người ta phải cải tiến chất
lượng của qui trình tạo nên sản phẩm.

Trong phát triển phần mềm được dẫn lái theo qui trình, bạn bắt đầu bằng việc xác
định qui trình phát triển cho một dự án đang phát triển, dựa trên các qui trình thành
công đã được chứng minh từ kinh nghiệm trước. Sau khi qui trình đã được xác định,
người kĩ sư phần mềm phải được huấn luyện để tuân theo qui trình đã được xác định
này. Khi bạn thực hiện qui trình này, người quản lí có thể điều phối và đo việc thực
hiện để đảm bảo rằng qui trình được tuân theo và kết quả đáp ứng yêu cầu chất
lượng mong muốn. Bằng việc có cách đo, lỗi có thể được tìm ra. Khi điều này xuất
hiện, qui trình được sửa đổi để chữa lỗi hay nâng cao nó, và nó được cài đặt lại và
được dùng cho phát triển phần mềm.
Phần tử cơ bản của qui trình có thể được tổ chức bằng việc dùng đặc tả ETVX (Entry,
Task, Verification, và Exit). Kí pháp đơn giản này là công cụ mạnh có thể giúp bạn
hiểu qui trình phần mềm và làm cho bạn có khả năng xác định bất kì qui trình nào
bạn muốn.
Hãy để thời gian để hiểu kí pháp đơn giản này và thực hành nó trên nhiều qui trình
mà bạn có thể tìm thấy.
(E) Tiêu chí đi vào - nói tới các yêu cầu tối thiểu để bắt đầu qui trình.
(T) Nhiệm vụ qui trình - nói tới nhiệm vụ cần được hoàn thành.
(V) Trắc nghiệm qui trình - nói tới cách trắc nghiệm rằng nhiệm vụ đã được hoàn
thành theo cách chúng đáng phải vậy, với kết quả mong muốn.
(X) Tiêu chí đi ra - nói tới các yêu cầu tối thiểu để rởi bỏ hay ra khỏi qui trình.
Trong thế giới cạnh tranh toàn cầu này, mọi công ti phần mềm đều muốn chuyển
giao sản phẩm, nhanh hơn và rẻ hơn nhưng họ cũng thấy rằng phần mềm đang ngày
một lớn hơn và phức tạp hơn. Để thành công, các công ti phải có khả năng quản lí và
kiểm soát môi trường phát triển phức tạp này bằng cách áp dụng bộ môn của Kĩ
nghệ phần mềm và hội tụ vào qui trình phần mềm. Chế tạo từ lâu đã thừa nhận tầm
quan trọng của của tính hiệu quả và hiệu lực qui trình. Qui trình giúp lực lượng lao
động của công ti đáp ứng mục đích nghiệp vụ bằng việc giúp cho họ làm việc thông
minh hơn với sự nhất quán được cải thiện. Để kiểm soát thực sự công việc phức tạp
và chất lượng, mọi người đều phải quản lí kế hoạch chi tiết và chính xác.
Nngười được huấn luyện rõ ràng làm việc tốt hơn và người tốt nhất bao giờ cũng

không có đủ. Tổ chức phải hội tụ vào việc huấn luyện và hỗ trợ thay vì tìm người tốt
nhất. Thành công dự án được thiết kế bởi những người hiểu qui trình bởi vì chương
trình có thể được xem như tri thức thực hiện được và người thiết kế chương trình
phải có tri thức áp dụng được để làm việc của họ.
Khái niệm chủ yếu về hội tụ qui trình là nguyên tắc: Chất lượng của sản phẩm phần
mềm được cai quản bởi chất lượng của qui trình được dùng để phát triển và duy trì
nó. Để nâng cao chất lượng của sản phẩm, người ta phải nâng cao chất lượng của qui
trình tạo ra sản phẩm đó.
Nội dung thảo luận: vấn đề mà ngành công nghiệp phần mềm ngày nay đang phải
đương đầu và dùng qui trình như kỉ luật trung tâm của Kĩ nghệ phần mềm.
1) “Tại sao nhiều dự án phần mềm thất bại?”
2) Cái gì là bằng chứng rằng phần mềm đang ngày càng lớn hơn và phức tạp hơn?
3) Tại sao chất lượng phần mềm lại quan trọng thế?
4) “Tại sao chúng ta hội tụ vào qui trình phần mềm?
5) “Tại sao con người là quan trọng trong qui trình phần mềm?
Bài đọc thêm:
1. L4_Process-Models-SE-Encyc.pdf
2. L4_ETVXSummary.pdf
3. L4_The Many Dimensions of the Software Process.pdf
Bài tập về nhà và hướng dẫn trả lời
Viết một bài báo ngắn (2 -3 trang) giải thích tại sao công nhân có kĩ năng (Kĩ sư
phần mềm) là quan trọng trong phát triển phần mềm?
Có 2 bài kiểm tra trên lớp (một bài kiểm tra đa chọn lựa và một bài kiểm tra
đúng/sai).
Vật phẩm bài giảng: Không.
Bài 5: Qui trình được xác định
Bài này hội tụ vào qui trình được xác định, tập các qui trình đã được
chứng tỏ thành công (thực hành tốt nhất) được chấp thuận để dùng
trong tổ chức để tạo ra sản phẩm chất lượng dự đoán được. Qui trình
được xác định cũng là việc trợ giúp trao đổi để đảm bảo rằng từng

thành viên tổ đều hiểu các hoạt động cần được tiến hành khi thực hiện
việc. Qui trình được xác định có thể hỗ trợ cấp quản lí lập kế hoạch cho
mọi hoạt động dự án, cũng như điều phối và đo chất lượng của qui
trình phát triển trước và trong khi tạo ra sản phẩm phần mềm.
Một qui trình nên ngắn, nói rõ vấn đề, dễ đọc và dễ dùng. Nó nên nói
điều cần được thực hiện, cách bạn biết khi nào nhiệm vụ được hoàn
thành, và kết quả cần là cái gì. Như được nói tới trong bài trước, kí
pháp thông thường và đơn giản nhất cho định nghĩa qui trình là ETVX:
(E) Tiêu chí đi vào - nói tới các yêu cầu tối thiểu để bắt đầu qui trình.
(T) Nhiệm vụ qui trình - nói tới nhiệm vụ cần được hoàn thành.
(V) Trắc nghiệm qui trình - nói tới cách trắc nghiệm rằng nhiệm vụ đã
được hoàn thành theo cách chúng đáng phải vậy, với kết quả mong
muốn.
(X) Tiêu chí đi ra - nói tới các yêu cầu tối thiểu để rởi bỏ hay ra khỏi
qui trình.
Một biến thể của ETVX như:
Cái vào - nói về sản phẩm cần thực hiện các tác vụ.
Cái ra hay vật phẩm - nói về sản phẩm công việc của các tác vụ cần
được chuyển giao.
Các bên có trách nhiệm - nói về người chịu trách nhiệm cho các nhiệm
vụ.
Các bên tham gia - nói về người tham gia vào các tác vụ.
Điểm quan trọng khác là ở chỗ qui trình được xác định là hiệu quả nhất
khi chúng bắt nguồn từ những người có liên quan. Qui trình được xác
định cỡ độ một trang, được cập nhật thường xuyên và tiến hoá là tốt
nhất. Đừng nhảy quá nhanh vào giải pháp có vẻ dễ dàng (công cụ và
khuôn mẫu) chừng nào qui trình còn chưa được hiểu hoàn toàn và rõ
tại chỗ.
Mục tiêu doanh nghiệp của tổ chức phần mềm là xây dựng sản phẩm
và dịch vụ chất lượng, tăng thu nhập và lợi nhuận, tăng thị phần và sự

thoả mãn của khách hàng. Mục đích là gióng thẳng khái niệm về bộ
môn Kĩ nghệ phần mềm với mục tiêu doanh nghiệp để kiểm soát chi
phí và lịch biểu và đáp ứng với nhu cầu thay đổi. Phần lớn các giáo
trình Khoa học tính toán không hội tụ vào khía cạnh doanh nghiệp của
doanh nghiệp phần mềm và sinh viên không biết mối quan hệ giữa
doanh nghiệp với sản phẩm và dịch vụ.
Để công ti phần mềm thành công nó phải có khả năng tạo ra sản
phẩm và dịch vụ chất lượng bằng việc chuẩn hoá cách thức sản phẩm
phần mềm được xây dựng, cũng giống như dây chuyền lắp ráp của
công nghiệp ô tô. Vì phần mềm là hoạt động trí tuệ và mang tính
người nhiều, việc chuẩn hoá là khó. Xây dựng qui trình được xác định
có thể làm giảm rủi ro tới mức độ nào đó.
Qui trình được xác định là tập các “Thực hành tốt nhất” đã được chứng
minh và làm việc trong tổ chức. Qui trình được xác định cung cấp cho
tổ chức một khuôn khổ nhất quán nơi mọi người có thể trao đổi về
công việc của họ, dùng cùng từ vựng và chia sẻ thông tin tự do. Nó
giúp người kĩ sư phần mềm xây dựng phần mềm theo cách có trật tự,
tuân theo bản lộ trình nơi họ biết mọi sự ở đây, phải làm gì bây giờ và
tiếp theo, và họ trông đợi gì gì để chuyển giao.
Khái niệm trung tâm của qui trình được xác định là định nghĩa về “thể
lệ hoá.” Điều rất quan trọng với sinh viên là hiểu khái niệm này và có
khả năng giải thích nó. Giảng viên phải nhắc lại khái niệm này nhiều
lần trong môn học để đảm bảo sinh viên hiểu thấu hoàn toàn khái
niệm này, vì nó sẽ còn quan trọng hơn trong các môn kế sau.
Để một qui trình được coi là “được thể lệ hoá”, nó phải “được xác định”
(bạn biết về nó và có thể giải thích được nó), “được làm tài liệu” (bạn
viết nó ra, dùng kí pháp), “được huấn luyện” (bạn nhận sự huấn luyện
về dùng nó hay huấn luyện ai đó khác dùng nó), “được sử dụng” (bạn
thực hành nó, thực hiện nó trong dự án của mình theo tương ứng)
“được đo” (bạn đo cả việc dùng và kết quả bằng việc tuân theo qui

trình), “được trắc nghiệm” (việc dùng qui trình được trắc nghiệm bằng
một thực thể độc lập như Đảm bảo chất lượng hay người quản lí),
“được cải tiến liên tục” (qui trình đã được dùng qua thời gian và được
cải tiến theo dữ liệu đo – về căn bản qui trình có yếu tố thời gian của ít
nhất vài tháng sử dụng – 6 tháng tới 12 tháng là tối thiểu).
Nội dung thảo luận
1. Tại sao chúng ta cần hội tụ vào qui trình được xác định?
2. Chúng ta thiết lập "qui trình được xác định" như thế nào?
3. Cấu trúc của qui trình được xác định là gì?
4. Làm sao chúng ta biết rằng qui trình được xác định là đầy đủ tại
chỗ?
5. Các yếu tố qui trình của qui trình được xác định là gì?
6. Thảo luận về môi trường hỗ trợ qui trình được xác định.
Bài đọc thêm:
1. L5_Process_Small_Project.pdf
2. L5_Defined_Process.pdf
Bài tập về nhà
Viết bài báo ngắn (2 -3 trang) giải thích tại sao, bằng việc tuân theo
qui trình được xác định, tổ chức có thể giải quyết một số vấn đề phần
mềm chủ yếu?
Phân công công việc tổ sinh viên:
Bắt đầu bài này, sinh viên sẽ được tổ chức thành các tổ để chuẩn bị
làm việc theo tổ.
Mục đích của công việc tổ là cho sinh viên kinh nghiệm làm việc theo
sự phân công trong nhóm, nơi họ phải để công việc của mình dựa vào
các bạn thân trong tổ. Họ cũng phải cam kết và làm chỗ dựa cho
nhau.
Phân công công việc tổ đầu tiên: tạo ra danh sách kiểm.
Danh sách kiểm được dùng như việc trợ giúp trí nhớ. Nó giúp đảm bảo
sự nhất quán và đầy đủ trong việc tiến hành nhiệm vụ. Một ví dụ cơ

bản là "danh sách việc cần làm " (danh sách các nhiệm vụ cần được
hoàn thành, như các bước tiến tới hoàn thành dự án). Danh sách
nhiệm vụ được dùng trong quản lí thời gian, danh sách mua hàng,
quản lí nghiệp vụ, quản lí dự án, và phát triển phần mềm. Khi bạn
hoàn thành một trong các mục trong danh sách nhiệm vụ, bạn đánh
dấu kiểm hay dấu X vào nó.
Bằng cách cho tổ luyện tập qua, sinh viên sẽ học nhiều hơn về kiểm
điểm và kiểm định trong Kĩ nghệ phần mềm, như việc tuân thủ qui
trình đảm bảo chất lượng, chuẩn hoá mã và phòng ngừa lỗi, và những
điều khác. Danh sách kiểm được trình bày như danh sách có các hộp
kiểm nhỏ ở bên trái của trang. Hộp kiểm nhỏ được vẽ trong hộp này
sau khi mục đã được hoàn tất.
Ví dụ: Kiểm về việc thể lệ hoá qui trình.
1 Qui trình được xác định chưa?
2 Qui trình được làm tài liệu chưa?
3 Có huấn luyện qui trình không?
4 Mọi người đã được huấn luyện chưa?
5 Qui trình có được dự án dùng không?
6 Qui trình có được người quản lí dự án đo không?
7 Qui trình có được SQA trắc nghiệm không?
8 Qui trình có được liên tục cải tiến trong nhiều tháng không?
Sinh viên được tổ chức thành các tổ 4 tới 5 người theo công việc của tổ
sau giờ lên lớp như sau:
Lựa chọn và tạo ra ba danh sách kiểm từ các hoạt động sau:
Nấu cơm tối; (Dùng tưởng tượng của bạn về món ăn)
Tải nhạc từ internet
Mua quà cho tiệc sinh nhật
Chuẩn bị cho kì thi
Bắt đầu và dùng xe máy đi tới trường
Tổ sinh viên đem danh sách kiểm của mình ra kiểm điểm và thảo luận

trong giờ lên lớp tiếp. Giảng viên sẽ yêu cầu từng tổ kiểm điểm công
việc của tổ khác về tính đầy đủ và đúng đắn.
Có 2 bài kiểm tra trên lớp (một bài kiểm tra đa chọn lựa và một bài
kiểm tra đúng/sai).
Vật phẩm bài giảng: Không.
Bài 6: Mô hình qui trình
Qui trình phát triển phần mềm là một cấu trúc áp lên việc phát triển
sản phẩm phần mềm. Nó có thể được gọi là vòng đời phần mềm hay
qui trình phần mềm. Có vài mô hình cho các qui trình như vậy, mỗi mô
hình mô tả cách tiếp cận tới đa dạng nhiệm vụ hay hoạt động xảy ra
trong qui trình.
Mô hình thác đổ là nơi người phát triển dự định tuân theo một dãy các
bước theo trật tự Yêu cầu, Thiết kế, Xây dựng (thực hiện hay mã), Tích
hợp, Kiểm thử và Gỡ lỗi, và Bảo trì. Sau khi từng bước được kết thúc,
qui trình tiến sang bước tiếp, do vậy mô hình thác đổ yêu cầu rằng
người ta phải đi vào một pha chỉ khi pha trước đó được hoàn thành và
hoàn hảo.
Phát triển gia tăng là chiến lược lập lịch biểu và phân giai đoạn trong
đó các bộ phận đa dạng của hệ thống được phát triển vào những lúc
khác nhau và được tích hợp khi chúng được hoàn tất. Ý tưởng cơ bản
đằng sau việc nâng cao lặp là phát triển hệ thống phần mềm tăng dần,
cho phép người phát triển lấy ưu thế của điều đã được học trong việc
phát triển các phiên bản chuyển giao được trước đó của hệ thống.
Mô hình xoáy ốc là qui trình phát triển phần mềm tổ hợp các yếu tố
của cả thiết kế và làm bản mẫu theo giai đoạn, trong nỗ lực tổ hợp các
ưu điểm của các quan niệm trên xuống và dưới lên. Cũng còn được
biết như mô hình vòng đời xoắn ốc, nó là phương pháp phát triển hệ
thống cho các dự án lớn, đắt và phức tạp.
Tuỳ theo dự án và yêu cầu, người quản lí dự án phải chọn lựa mô hình
thích hợp để áp dụng cho dự án.

Kĩ nghệ phần mềm là bộ môn tích hợp qui trình, phương pháp và công
cụ cho việc phát triển sản phẩm phần mềm. Sai lầm thông thường mọi
người hay tạo ra liên quan tới phần mềm là giả định rằng phần lớn việc
phát triển phần mềm là lập trình. Thực tế, lập trình chỉ là một phần
của qui trình phát triển phần mềm. Ngày nay, phát triển phần mềm
bao gồm nhiều bước và qui trình phát triển được tham chiếu tới như
vòng đời phần mềm hay mô hình. Có nhiều mô hình hay vòng đời,
nhưng tất cả đều chia sẻ các qui trình cơ bản tương tự như kĩ nghệ yêu
cầu, thiết kế, lập trình, tích hợp, chuyển giao, và bảo trì. Danh sách
dưới đây cho mô tả về từng qui trình.
Yêu cầu: Trong qui trình này, người phát triển và khách hàng gặp gỡ
để thảo luận các ý tưởng về sản phẩm phần mềm mới. Người phát
triển dùng đa dạng kĩ thuật để đánh giá nhu cầu thực của khách hàng.
Một kĩ thuật như vậy là làm bản mẫu nhanh trong đó một chương trình
bản mẫu được xây dựng mà có thể bắt chước chức năng của phần
mềm mong muốn. Dùng bản mẫu này, khách hàng có thể hiểu tốt hơn
cách sản phẩm cuối sẽ vận hành và có thể xác định liệu hành vi này là
điều họ thực sự cần hay không. Chừng nào qui trình kĩ nghệ yêu cầu
này còn chưa được thực hiện đúng, phần mềm kết quả sẽ không ích lợi
cho khách hàng cho dù nó có thể chạy đúng. Qui trình yêu cầu được
hoàn tất khi đặc tả cho sản phẩm phần mềm mới được viết ra, trong
một tài liệu chính thức có tên là tài liệu đặc tả yêu cầu.
Thiết kế: Trong qui trình này, người phát triển quyết định cách họ sẽ
xây dựng phần mềm để cho nó đáp ứng đặc tả đã được thoả thuận
trong tài liệu đặc tả yêu cầu. Thông thường thiết kế phần mềm trải
qua vài giai đoạn theo đó nó dần trở nên chi tiết hơn. Cách tiếp cận
này tới thiết kế được gọi là làm mịn dần từng bước, và nó cho phép
người phát triển quản lí độ phức tạp của phần mềm bằng cách trì hoãn
các quyết định về chi tiết chậm nhất có thể được để tập trung vào các
vấn đề thiết kế quan trọng khác. Khi thiết kế hoàn tất, nó được ghi lại

trong tài liệu đặc tả thiết kế.
Lập trình hay viết mã: Trong qui trình này, tổ những người lập trình
viết mã thực cho phần mềm. Phần mềm được chia thành các đơn vị
tách rời được gọi là mô đun để giải quyết độ phức tạp của quá trình lập
trình. Không chỉ các tổ này chịu trách nhiệm cho việc mã mô đun của
họ, họ cũng còn chịu trách nhiệm cho việc mô tả tài liệu đúng và cho
việc kiểm thử mã để đảm bảo tính đúng đắn.
Tích hợp và kiểm thử: Trong qui trình này, từng mô đun của phần
mềm được tổ hợp để tạo nên sảnh phẩm phần mềm tích hợp. Vì các
mô đun đã được phát triển một cách tách biệt, việc kiểm thử là mấu
chốt cho qui trình tích hợp. Ngay cả với thiết kế tốt, sự không tương
thích giữa các mô đun vẫn rất có thể tồn tại. Những vấn đề này cần
được nhận diện và sửa chữa để hoàn thành việc tích hợp.
Chuyển giao hay Đưa ra: Trong qui trình này, người phát triển
chuyển giao phần mềm đã hoàn thành cho khách hàng. Thông thường
khách hàng sẽ tiến hành kiểm thử chấp nhận trên phần mềm này để
xác định liệu nó có đáp ứng đặc tả đã thoả thuận trong tài liệu đặc tả
yêu cầu hay không. Một khi phần mềm được chấp nhận, nó được thiết
đặt và dùng bởi khách hàng.
Bảo trì: Trong qui trình này, phần mềm trải qua những thay đổi đa
dạng sau khi chuyển giao để chữa lỗi, bổ sung chức năng mới, chuyển
phần mềm lên nền mới, hay thích ứng phần mềm với công nghệ mới.
Mặc dầu dường như là phần mềm nên được chấm dứt sau chuyển giao,
điều này là không đúng. Mọi sản phẩm phần mềm thành công đều tiến
hoá theo thời gian để đáp ứng nhu cầu thay đổi của khách hàng.
Có vài mô hình qui trình khác nhau cho Kĩ nghệ phần mềm; mỗi mô
hình đều có điểm mạnh và điểm yếu riêng. Mô hình qui trình được
chọn bởi người kĩ sư phần mềm dựa trên bản chất của dự án và ứng
dụng. Giảng viên phải nêu ra vài mô hình và thảo luận với sinh viên về
những điểm mạnh điểm yếu của chúng:

Mô hình tuần tự tuyến tính hay mô hình thác đổ cổ điển gợi ý một
trình tự bắt đầu bằng yêu cầu, tiến sang thiết kế, viết mã, kiểm thử và
bảo trì. Giảng viên cần chỉ ra rằng các dự án thực hiếm khi tuân theo
luồng tuần tự mà mô hình này đề nghị. Mặc dầu mô hình tuyến tính có
thể điều chỉnh cho lặp, nó bao giờ cũng tạo ra lẫn lộn khi tổ dự án xử
lí. Khó giải thích một cách tường minh cho những người có ảnh hưởng
tới dự án về các yêu cầu, cho nên trình tự tuyến tính có khó khăn để
điều chỉnh sự không chắc chắn trong việc nắm bắt nhu cầu của người
có ảnh hưởng.
Mô hình làm bản mẫu bắt đầu với yêu cầu mà có thể đủ chắc chắn
để làm cho dự án được bắt đầu. Tổ nhanh chóng xây dựng ra một thiết
kế hội tụ vào cái đã biết, thế rồi thực hiện nó như Bản mẫu để được
những người có ảnh hưởng đánh giá, bổ sung thêm nhiều chi tiết và
làm mịn cho tới khi sản phẩm cuối cùng được hoàn tất.
Mô hình tiến hoá hay mô hình gia tăng là một chọn lựa còn tốt hơn
nhiều vì nó tổ hợp các phần tử của trình tự tuyến tính với cách tiếp cận
lặp của bản mẫu. Cách tiếp cận này áp dụng trình tự tuyến tính theo
cách phân giai đoạn nơi từng trình tự đều tạo ra việc tăng vật chuyển
giao hướng tới sản phẩm cuối cùng.
Mô hình xoáy ốc cũng là mô hình tiến hoá có tổ hợp bản chấy lặp với
khía cạnh được kiểm soát của trình tự tuyến tính để cung cấp các
phiên bản gia tăng của sản phẩm phần mềm.
Điều quan trọng với sinh viên là hiểu sự khác biệt giữa các mô hình và
có khả năng chọn mô hình tốt nhất để hỗ trợ cho dự án.
Nội dung thảo luận
1. Các pha điển hình của qui trình phát triển phần mềm là gì?
2. Cái gì sai với mô hình thác đổ?
2. Ưu và nhược điểm của phát triển gia tăng là gì?
Bài đọc thêm:
1. L6_Process-Models-SE-Encyc.pdf

2. L6_Process_Model.pdf
Công việc tổ: 2 tổ cần chuẩn bị và trình bày cho lớp câu trả lời cho các
câu hỏi sau:
Mô hình phần mềm nào sẽ là hiệu quả nhất trong một dự án phần
mềm lớn và phức tạp?
Thảo luận ưu và nhược điểm của từng mô hình qui trình.
Có 2 bài kiểm tra trên lớp (một bài kiểm tra đa chọn lựa và một bài
kiểm tra đúng/sai).
Bài 7: Dự án phần mềm
Trong bài này, bạn sẽ học khái niệm quan trọng nhất trong Kĩ nghệ
phần mềm: quản lí dự án phần mềm. Nêu lưu ý rằng quản lí dự án
phần mềm KHÔNG phải là quản lí dự án như nhiều người đã nói. Có
đào tạo và quản lí dự án nhưng đấy KHÔNG phải là quản lí dự án phần
mềm. Phần mềm khác với các miền khác như phần cứng, tài chính,
nghiệp vụ hay làm nhà hay làm cầu.
Lịch sử của dự án phần mềm là việc tăng kích cỡ và độ phức tạp. Lúc
ban đầu, vài người có thể tạo ra chương trình trên dự án phần mềm
nhỏ. Công việc này nhanh chóng trở nên vượt ra ngoài phạm vi họ, lên
tới tổ mười hay hai mươi người, rồi chúng trở thành cả trăm người. Khi
kích cỡ của dự án phần mềm liên tục tăng trưởng, thành công bị xáo
trộn. Từ tài liệu đọc thêm, bạn có thể thấy rằng dự án phần mềm thất
bại ở tỉ lệ đáng báo động, với 75% dự án phần mềm được hoàn thành
muộn hay bị huỷ bỏ do chi phí phần mềm và lịch biểu bị ước lượng
kém. Phần mềm thường được chuyển trao đầy lỗi. Công việc phát triển
bị sức ép cao và đòi hỏi làm nhiều giờ. Phát triển phần mềm phải gánh
chịu chi phí lớn do việc làm lại và kiểm thử. Trạng thái dự án chính xác
khó nắm được, và trong hầu hết các dự án phần mềm, trông đợi của
người quản lí và khách hàng thường không thực tế và không thể đạt
được.
Từ nhiều điều tra và nghiên cứu, chúng tôi thấy rằng phần lớn những

người quản lí dự án phần mềm đã không có được việc đào tạo thích
hợp. Phần lớn người phát triển phần mềm không đọc sách chuyên môn
hay thuê bao các tạp chí kĩ thuật để nâng cao kĩ năng của mình. Ngày
nay, lịch biểu vẫn là nhân tố quan trọng nhất với cái giá về chất lượng,
chi phí và hiệu quả, với phần lớn các ước lượng dự án phần mềm đều
dựa trên mong đợi hơn là dữ liệu lịch sử.
Bạn có từng hỏi tại sao chúng ta liên tục xây dựng phần mềm cho thế
kỉ 21 mà bằng việc dùng phương pháp phát triển thực tế đã không
thay đổi từ những năm 1960 không? Chúng ta biết rằng có vài cách
tiếp cận tốt hơn nhưng ít công ti đã sử dụng thành chúng thành công.
Ngày nay các dự án phần mềm lớn đòi hỏi nhiều tổ hàng trăm người.
Độ phức tạp đi nhanh hơn khả năng giải quyết vấn đề một cách trực
giác, đặc biệt khi kích cỡ phần mềm tăng lên vài triệu hay hàng trăm
triệu dòng mã. Cách tiếp cận có cấu trúc và kỉ luật tới quản lí phát
triển phần mềm là cần thiết, và câu trả lời là quản lí dự án phần mềm.
Các tổ chức phần mềm thực hiện công việc. Công việc nói chung bao
gồm các dự án có thể được xác định như một tập các hoạt động để tạo
ra sản phẩm hay dịch vụ duy nhất. Mọi dự án đều có ngày bắt đầu và
ngày kết thúc xác định. Dự án có thể bao gồm một người hay nhiều
nghìn người, nó có thể yêu cầu vài trăm giờ để hoàn thành hay nó có
thể kéo dài vài năm. Dự án phần mềm là cấu phần nền tảng của công
việc Kĩ nghệ phần mềm. Nó bao gồm hai miền chủ yếu: Lập kế hoạch
dự án và điều phối và kiểm soát dự án.
Lập kế hoạch dự án xác định công việc và cách nó sẽ được thực hiện.
Nó xác định từng nhiệm vụ bằng ước lượng về thời gian và nỗ lực cần
có. Kế hoạch dự án là rất quan trọng bởi vì nó là bảng chuẩn để so
sánh với hiệu năng thực tế. Việc so sánh này cho phép người quản lí
dự án thấy các lỗi ước lượng của mình và cải thiện độ chính xác ước
lượng.
Điều phối và kiểm soát dự án hội tụ vào theo dõi tiến độ theo kế hoạch

dự án (như chi phí, nỗ lực, lịch biểu, cột mốc thực tế so với ước lượng)
và tiến triển (giá trị thu được, ROI, v.v.) cũng như rủi ro (dữ liệu, kĩ
năng, sự tham dự của người có ảnh hưởng v.v.). Người quản lí dự án
phân tích vấn đề, lấy hành động sửa chữa, rồi theo dõi hành động này
cho tới lúc đóng lại.
Quản lí dự án phần mềm là khái niệm then chốt của Kĩ nghệ phần
mềm. Nó có thể làm giảm mức độ không chắc chắn bằng cách phát
biểu rõ ràng về các mục đích và mục tiêu dự án. Nó cung cấp kế hoạch
tổng thể và kiểm soát công việc; đo sự hoàn thành so với kế hoạch và
mục đích; tạo ra các kênh trao đổi hiệu quả; thiết lập các cuộc kiểm
điểm có cấu trúc cho việc ra quyết định; thừa nhận vấn đề sớm và lấy
hành động sửa chữa; xây dựng cơ chế để quản lí thời gian và chi phó
hiệu quả; nhận diện và giảm bớt rủi ro để giảm trễ lịch biểu và chi phí
quá mức; xây dựng tổ và thiết lập tầm nhìn, sứ mệnh, mục đích và
mục tiêu thống nhất để tránh các vấn đề chung trong hầu hết các dự
án phần mềm.
Là người quản lí dự án thành công, bạn phải có khả năng phát biểu rõ
ràng tầm nhìn và mục đích của dự án để mọi người trong tổ dự án có
thể hiểu được nó. Nếu người quản lí dự án không thể mô tả được mục
đích của bạn thế thì cơ hội của bạn đạt tới nó là không tốt. Người quản
lí dự án phải dành thời gian cùng với những người có ảnh hưởng tới dự
án. Người có ảnh hưởng có thể đóng góp cho dự án từ các yêu cầu
nhận diện ra rủi ro hay có thể đưa ra sự chấp thuận của họ mà là điều
bản chất cho thành công.
Tổ dự án là nhân tố quan trọng nhất cho việc đạt tới thành công dự án.
Sự đóng góp nhiệt tình của họ sẽ làm ra hay phá hỏng dự án của bạn.
Người quản lí dự án phải chăm nom kĩ lưỡng tới họ và chắc chắn tổ
vận hành như một tổ chứ không như tập hợp các cá nhân. Trao đổi tổ
là rất quan trọng để chia sẻ thông tin và thúc đẩy tin cậy. Người quản
lí dự án phải chắc chắn rằng mọi thành viên tổ đều biết điều họ phải

đóng góp cho kết quả cuối cùng.
Sinh viên cần hiểu rõ mối quan hệ giữa kĩ nghệ và kinh doanh. Lập kế
hoạch sản phẩm phần mềm là mấu chốt cho thành công phát triển và
đòi hỏi tri thức về cộng tác đa ngành. Trước khi dự án bắt đầu, người
quản lí dự án phải xem xét liệu dự án có khả thi về mặt kĩ thuật không
và có sự hỗ trợ của cấp quản lí với đủ ngân sách để hoàn thành không.
Người quản lí dự án cần xây dựng hoàn cảnh nghiệp vụ bằng việc tiến
hành phân tích khả thi cùng với chi phí/ích lợi để xác định liệu tiến
hành hay huỷ bỏ. Người quản lí dự án cần ước lượng thu hồi vốn đầu
tư (ROI) của dự án bằng việc xác định bao nhiêu thu nhập có thể được
sinh ra bởi sản phẩm này sau khi trừ đi chi phí của dự án. Điều này sẽ
giúp cấp quản lí ra quyết định liệu có khởi đầu dự án hay huỷ bỏ nó.
Người có ảnh hưởng là người dùng cuối hay khách hàng, người nêu cho
dự án yêu cầu, người sẽ ảnh hưởng tới thiết kế, và chung cuộc sẽ nhận
và dùng sản phẩm hay dịch vụ phần mềm. Điều cực kì quan trọng là
đưa những người có ảnh hưởng vào mọi pha của dự án của bạn vì
những lí do sau:
• Việc tham gia của người có ảnh hưởng vào dự án có thể làm tăng
đáng kể cơ hội cho thành công dự án bằng việc xây dựng vòng phản
hồi tự sửa.
• Người có ảnh hưởng có thể giúp làm sáng tỏ yêu cầu, đặt ra ưu tiên
dự án, giảm rủi ro và tăng trao đổi giữa các thành viên tổ dự án và cấp
quản lí.
• Việc tham gia của người có ảnh hưởng có thể xây dựng niềm tin vào
sản phẩm và sẽ tăng thêm cơ hội người dùng cuối chấp nhận nó.
Ngày nay chủ yếu có hai kiểu doanh nghiệp trong công nghiệp phần
mền; những doanh nghiệp phát triển phần mềm sở hữu riêng như
Microsoft, Oracle, Cisco và những doanh nghiệp phát triển phần mềm
nguồn mở. Phát triển phần mềm sở hữu riêng thì đắt và có bao hàm
việc cấp phép phần mềm và phải bảo vệ phần mềm khỏi sao chép

trộm. Thu hồi tài chính chính về nguồn mở tới từ việc bán dịch vụ, như
huấn luyện và hỗ trợ, thay vì bản thân phần mềm. Nhiều người đóng
góp cho phần mềm nguồn mở (đặc biệt những người phát triển công
cụ phần mềm) cũng cảm thấy rằng có việc thu hồi dài hạn có nghĩa
dưới dạng các nguồn tài nguyên và năng lực được cải tiến bên trong
ngành công nghiệp phần mềm. Mặc dầu làm nhiều kinh doanh trong
phần mềm sở hữu riêng, một số công ti vẫn tham gia vào vào phát
triển phần mềm tự do và nguồn mở để cản trở các công ti độc quyền,
kẻ có thể chiếm một phần thị phần của họ. Tuy nhiên, điều quan trọng
cần lưu ý là có tranh luận dữ dội về việc dùng phần mềm nguồn mở
được dùng trong kinh doanh và công nghiệp. Phần lớn các công ti
KHÔNG muốn dùng phần mềm tự do vì sợ rằng các sản phẩm phần
mềm này có thể chứa vi rút hay rủi ro an ninh và ưa thích dùg phần
mềm sở hữu riêng.
Nội dung thảo luận
1. Tại sao dự án phần mềm có nhiều vấn đề thế?
2. Các pha điển hình của quản lí dự án phần mềm là gì?
3. Mối quan hệ giữa dự án phần mềm và doanh nghiệp là gì?
Bài đọc thêm:
1. L7_Project_management1.pdf
2. L7_PM_Failure_causes.pdf
3. L7_BluePrint_Project.pdf
4.L7_Scope.pdf
5. L7_Risk_Management2.pdf
Phân công Công việc tổ: Sinh viên làm việc trong tổ từ 3 tới 5 người để
chuẩn bị một bài trình bày ngắn giải thích “Tại sao quản lí phần mềm
ngày nay lại quan trọng thế?”
Có 2 bài kiểm tra trên lớp (một bài kiểm tra đa chọn lựa và một bài
kiểm tra đúng/sai).
Bài 8: Quản lí rủi ro phần mềm

Trong bài này, bạn sẽ được giới thiệu cho vấn đề về rủi ro phần mềm.
Rủi ro có thể được định nghĩa là "Khả năng chịu thiệt hại, tổn thất, hay
nguy hiểm." Cho dù bạn không quen thuộc với định nghĩa hình thức,
phần lớn các bạn đều đã có cảm giác bẩm sinh về rủi ro. Nhiều người
trong các bạn nhận biết về nguy hiểm tiềm năng tràn ngập ngay trong
hoạt động thường ngày như bị thương khi đi qua phố mà không nhìn.
Mặc dầu bạn có thể ưa thích không chú ý vào những hiểm nguy bao
quanh bạn, những rủi ro này hình thành nên nhiều trong các hành vi
của bạn.
Tuy nhiên không giống như những hiểm nguy của việc sống hàng
ngày, rủi ro trong Kĩ nghệ phần mềm không được dạy kĩ trong nhiều
đại học và thường chỉ được học khi sinh viên tham gia vào lực lượng
lao động. Chương trình Kĩ nghệ phần mềm nhận diện một số ví dụ điển
hình về các mục rủi ro phần mềm:
• Khan hiếm người
• Lịch biểu và ngân sách không hiện thực
• Phát triển chức năng và tính chất sai
• Phát triển giao diện người dùng sai
• Luồng liên tục những thay đổi yêu cầu
• Thiếu hụt về cấu phần trang bị bên ngoài
Quản lí rủi ro điển hình được bao gồm trong các hoạt động sau:
a) Thẩm định rủi ro (hình dung ra rủi ro là gì và hội tụ vào cái gì)
- làm danh sách tất cả các nguy hiểm tiềm năng sẽ ảnh hưởng tới dự
án
- thẩm định xác suất xuất hiện và tổn thất tiềm năng của từng mục
được liệt kê
- xếp hạng các khoản mục (từ nguy hiểm nhiều nhất tới ít nhất)
b) Kiểm soát rủi ro (làm cái gì đó về chúng)
- đưa ra các kĩ thuật và chiến lược để giảm thiểu rủi ro cấp cao nhất
- thực hiện các chiến lược để giải quyết nhân tố rủi ro cấp cao

- điều phối tính hiệu quả của các chiến lược và thay đổi mức rủi ro
trong toàn dự án
Quản lí rủi ro là kĩ năng quan trọng. Bạn phải hiểu rủi ro và biết cách
quản lí chúng. Rủi ro có hai thuộc tính chủ yếu:
Xác suất rủi ro sẽ xuất hiện. Chúng ta có thể dùng tỉ lệ 0 – 100 để mô
tả xác suất của rủi ro.
Rủi ro có xác suất 0 được gọi là không có cơ hội xuất hiện.
Rủi ro với xác suất 100 được gọi là chắc chắn xảy ra (nói cách khác,
“vấn đề””)
Mọi thứ giữa 0 và 100 đều có cơ hội rủi ro sẽ xuất hiện. Rủi ro với xác
suất 1 được gọi là có 1 trong 100 cơ hội (1%) xảy ra.
Tác động của rủi ro nếu nó xuất hiện. Chúng ta có thể dùng thang 0
-100 để mô tả tác động của rủi ro.
Rủi ro với tác động 0 được gọi là không có tác động.
Rủi ro với tác động 100 được gọi là “đình chỉ - show stopper” (cái gì đó
nghiêm trọng tới mức dự án không tiến được).
Mọi thứ giữa 0 và 100 đều là tác động lên dự án nếu nó xuất hiện. Rủi
ro với tác động 1 được gọi là gần như không có tác động lên dự án.
Cách tốt để nghĩ về xác suất và tác động là xét rủi ro một thiên thạch
xuyên qua mái nhà và giết chết cả tổ dự án. Tác động là khổng lồ, với
cả tổ dự án đi toi dự án sẽ phải dừng lại, tuy nhiên xác suất là rất, rất
thấp.
Mọi rủi ro đều có thể tạo ra vấn đề, do đó bạn phải có qui trình ra
quyết định hệ thống nhận diện hiệu quả rủi ro, thẩm định xác suất
xuất hiện, tác động nếu nó xuất hiện và giải quyết nó một cách hiệu
quả để đạt tới mục đích nghiệp vụ.
Điều quan trọng cần lưu ý rằng rủi ro xảy ra vào bất kì lúc nào, ở bất
kì đâu cho nên việc nhận diện rủi ro được tiến hành liên tục trong mọi
miền nghiệp vụ với tính rõ ràng và sự tham gia của cấp quản lí thích
hợp.

Một khi bạn đã nhận diện rủi ro bạn phải lập kế hoạch để giảm thiểu
nó, kế hoạch nên được đưa vào bản kế hoạch của tổ, và từng hành
động giảm nhẹ nên được đưa vào việc giảm rủi ro liên kết. Hành động
phòng ngừa là rẻ hơn hành động sửa chữa, cho nên cần giải quyết rủi
ro trước khi nó biến thành vấn đề.
Bài này hội tụ vào rủi ro dự án. Rủi ro có thể được định nghĩa là "Khả
năng bị thiệt hại, tổn thất, hay nguy hiểm." Rủi ro là cái gì đó còn
CHƯA xảy ra, do đó nó đòi hỏi việc phòng ngừa.
Rủi ro là cái gì đó mà nếu chúng xảy ra, thì gây ra vấn đề mà có thể là
thảm hoạ cho dự án phần mềm. Mọi dự án đều có rủi ro. Có ba điều
mấu chốt cho quản lí rủi ro:
• Có qui trình quản lí rủi ro được làm tài liệu mà mọi người đều quen
thuộc.
• Nhận diện và định lượng rủi ro liên kết với dự án.
• Làm việc với người có ảnh hưởg để hiểu tác động của rủi ro lên dự án

×