1. Trang chủ
  2. » Công Nghệ Thông Tin

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

69 365 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 69
Dung lượng 299,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

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âydự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àngngà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,

Trang 2

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

Trang 3

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ằngnhữ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

Trang 4

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ĩ

Trang 5

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ànhtrướ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ốngcộ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ớ

Trang 6

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

Trang 7

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áttriể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ảotrì 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ứcphần mềm nào Bước đầu tiên của công ti phần mềm là thuê người giỏinhấ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ànhcô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 naytrong thế giới đã phát triển, người lập trình đang bị thay thế bởi người

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

Trang 8

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ựchà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ớisản xuất và bảo trì cuối cùng

Trang 9

Những thay đổi đã xảy ra một cách toàn cầu nơi "tốc độ" bây giờ là quitắ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àngtră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

Trang 10

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.

Trang 11

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.

Trang 12

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ệnviệc Qui trình được xác định có thể hỗ trợ cấp quản lí lập kế hoạch chomọ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ấtkhi 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

Trang 13

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 ítnhấ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ỗ?

Trang 14

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

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?

Trang 15

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

Trang 16

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íchhợ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ọingười hay tạo ra liên quan tới phần mềm là giả định rằng phần lớn việcphá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êucầ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

Trang 17

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ìnhbả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ơncá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ợicho 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ãncá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ậptrì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

Trang 18

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ếnhoá 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ậnlặ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ì?

Trang 19

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)

Trang 20

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êntới tổ mười hay hai mươi người, rồi chúng trở thành cả trăm người Khikí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ánhchị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áckhó 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ônhay 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

Trang 21

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ạchtổ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

Trang 22

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ấpquả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

Trang 23

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ọngcầ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ì?

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)

Trang 24

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, haynguy 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 tronghoạ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ểnhì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

Trang 25

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,

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

Trang 26

và những đáp ứng được lập kế hoạch để đề cập tới rủi ro

Bao giờ cũng có nhiều rủi ro về dự án phần mềm hơn là người quản lí

dự án có thể quản lí, cho nên người quản lí dự án phải ưu tiên hoá các rủi ro để cho phần lớn những rủi ro lớn đều được đề cập tới

Tư duy công nghiệp hiện thời là viết ra tất cả các rủi ro dự án, nhưng chỉ quản lí tích cực mười rủi ro hàng đầu Tức là, làm việc xác định rủi

ro nào là đủ quan trọng cần quản lí, và dành thời gian và nỗ lực quản límỗi chúng thôi

Nhiều người thường liệt kê các rủi ro, nhưng rồi chẳng làm gì về

chúng, cứ dường như rủi ro sẽ biến đi đơn giản bởi vì chúng đã được liệt kê ra Trong nhiều trường hợp, rủi ro ít nhất phải được đề cập tới bởi việc dành nỗ lực hay thời gian quản lí chúng Rất ít dự án có thể được hoàn thành mà không có rủi ro Cứ cho là bao giờ cũng có rủi ro nào đó, thế thì câu hỏi là bao nhiêu rủi ro là hợp lí để hoàn thành giá trị của dự án

Trong khi bản chất của quản lí rủi ro hiệu quả dựa trên cảm giác thôngthường và được sử dung tới mức độ nào đó bởi người quản lí dự án phần mềm tốt, nhiều kĩ thuật, phương pháp và công cụ hình thức có thể được dùng để nâng cao khả năng giải quyết rủi ro Những kĩ thuật

và công cụ như vậy trải rộng từ miền truyền thống như ước lượng chi phí và đảm bảo chất lượng cho tới miền ít truyền thống hơn như hành

vi tổ chức và ác cảm rủi ro cá nhân

Nội dung thảo luận

1 Tại sao dự án cần thực hiện quản lí rủi ro?

2 Khác biệt giữa rủi ro và vấn đề là gì?

3 Các kiểu rủi ro dự án phần mềm là gì?

4 “Né tránh rủi ro cũng có thể nghĩa là né tránh cơ hôi” nghĩa là gì?

5 Người quản lí dự án có thể nỗ lực để tránh mọi rủi ro dự án được không?

5 L8_Software Risk Factors Table.pdf

Phân công Công việc tổ

Sinh viên sẽ được tổ chức thành các nhóm để chuẩn bị bài trình bày cho lớp Phiên trình bày này được tạo ra để thúc đẩy công việc tổ và

để thám hiểm khả năng của sinh viên hiểu thấu các khái niệm cơ bản

Trang 27

của bài Với việc trình bày này, tổ sẽ hội tụ vào kịch bản sau:

“Là người quản lí dự án của công ti phần mềm bạn đang lãnh đạo một

tổ phát triển phần mềm cho khách hàng ở Mĩ Dự án này là về xây dựng ứng dụng tài chính hỗ trợ cho việc sinh ra thu nhập từ nghiệp vụ xuất và nhập khẩu của khách hàng Dự án này rất quan trọng với công

ti bạn cho nên người quản lí của bạn muốn chắc chắn rằng tổ của bạn

sẽ chuyển giao dự án đúng hạn, với mọi chức năng được chuyển giao theo lịch biểu Sau đây là một số rủi ro:

Khách hàng rất bận và không có thời gian gặp tổ của bạn rất thường xuyên

Ứng dụng này dùng công nghệ mới mà bạn còn chưa quen thuộc

Thành viên tổ đều tương đối mới với công ti, nhiều người chỉ vừa mới

ra tốt nghiệp từ đại học và có kinh nghiệm tối thiểu

Thành viên có kinh nghiệm trong tổ bạn cũng còn hỗ trợ cho các dự ánkhác và không thể dành toàn thời ghian cho dự án của bạn được

Làm tài liệu về những rủi ro này, đưa cả kế hoạch của bạn để giảm bớtchúng và đảm bảo dự án sẽ thành công

Hướng dẫn: Bạn có thể muốn xem xét việc dùng bảng với các cột sau:

Số hiệu rủi ro ID

Mô tả rủi ro, kể cả điều tệ nhất sẽ xảy ra nếu rủi ro xuất hiện Điều rấtquan trọng là mô tả tác động của rủi ro là dưới dạng đo được (thường

là thời gian hay tiền bạc), bằng không thì rất khó xác định được liệu rủi

ro có là ưu tiên cao hay không, và bao nhiêu thời gian, tài nguyên và tiền bạc có thể phải chi tiêu để làm giảm rủi ro Chẳng hạn sẽ không đáng dành ra 2 năm và 10 triệu đô la để làm giảm nhẹ rủi ro mà nếu

nó xuất hiện, sẽ tốn cho dự án 3 tháng và 1 triệu đô la

Xác suất rủi ro (0 – 100)

Tác động rủi ro (0 – 100)

Tầm quan trọng rủi ro (Nhân Xác suất * Tác động)

Ưu tiên rủi ro Lưu ý rằng phần lớn rủi ro sẽ ở cấp quan trọng, nhưng

có những lúc mà ưu tiên của rủi ro có thể nâng lên hay hạ xuống bất

kể tầm quan trọng

Kế hoạch quản lí rủi ro, tài liệu mô tả một hay nhiều cách tiếp cận để quản lí rủi ro Lưu ý rằng một số rủi ro có thể có kế hoạch quản lí về:Điều phối rủi ro (chi phí cho rủi ro có thể còn nhiều hơn tác động của rủi ro, chẳng hạn)

Bảo hiểm rủi ro Đây thường là phương tiện hiệu quả thời gian nhất để giải quyết rủi ro

Giảm thiểu rủi ro Điều này nghĩa là dành thời gian, tiền bạc và tài nguyên để cố gắng ngăn ngừa rủi ro khỏi xảy ra, hay ít nhất cũng làm giảm tác động của rủi ro nếu nó xuất hiện

Trang 28

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).

Trang 29

Bài 9: Phát triển yêu cầu phần mềm

Trong bài này, các bạn sẽ học một trong những bộ môn Kĩ nghệ phần mềm mấu chốt: phát triển yêu cầu Phát triển yêu cầu phần mềm là một phần của dự án trong đó nhu cầu của khách hàng được thu thập

và được dịch thành đặc tả về điều hệ thống phải thực hiện Các dự án phần mềm thành công được xây dựng trên nền tảng các yêu cầu được hiểu rõ Nhiều tổ chức không dành đủ thời gian vào việc thu thập, tuyển lựa, làm tài liệu và kiểm nghiệm các yêu cầu Nhiều người lập trình cũng quá nhanh chóng nhảy và thiết kế và thực hiện (lập trình)

mà không hiểu thấu đáo người có ảnh hưởng thực sự cần gì

Lí do chính nhiều dự án phần mềm bị hỏng thế là bởi vì tổ dự án không

có các qui trình phát triển yêu cầu tốt, gây ra nhiều thay đổi yêu cầu, tạo ra vấn đề trong việc phát triển Trong bài này bạn học về bốn pha của phát triển yêu cầu, ưu tiên hoá yêu cầu, tổ chức và phân tích, cũng như trắc nghiệm và kiểm nghiệm yêu cầu

Xin hãy chú ý tới từ “phát triển” vốn nhấn mạnh vào yêu cầu như hoạt động khám phá, thám hiểm và phát triển của kĩ sư phần mềm để giúp những người có ảnh hưởng hình dung ra điều họ cần (viết ra điều người có ảnh hưởng muốn phần mềm làm là điều không đơn giản.)

Phát triển yêu cầu là hoạt động đầu mở Bạn có thể xem tổ dự án đượckết thúc với các yêu cầu chỉ khi nó đã đạt tới hiểu biết rõ ràng, ổn định

về cách người dùng muốn phần mềm vận hành Phát triển yêu cầu cầnthời gian và nỗ lực và phải được coi xử lí rất nghiêm chỉnh để tránh sai lầm tốn kém Vì mỗi yêu cầu được xác định không đúng, chi phí sẽ tăng 50-200 lần để sửa sai này về sau

Trong bài này bạn sẽ học các khái niệm nền tảng về phát triển yêu cầu, các kĩ thuật và chi tiết thêm sẽ được dạy ở các môn sau

Yêu cầu là mô tả về các thuộc tính cần và đủ của sản phẩm mà sẽ thoả mãn nhu cầu khách hàng Để chuyển giao sản phẩm phần mềm thành công, bạn cần phát triển, làm tài liệu và kiểm nghiệm yêu cầu phần mềm

Yêu cầu phần mềm là mô tả chi tiết về tất cả các yêu cầu chức năng

và không chức năng mà phần mềm phải hoàn toàn đáp ứng nhu cầu của người có ảnh hưởng tới dự án Người có ảnh hưởng là những người

có yêu cầu sẽ được lấy ra, người sẽ ảnh hưởng tới thiết kế và nhận và dùng sản phẩm phần mềm hay ích lợi từ dự án được hoàn thành

Trang 30

Yêu cầu được xác định kém làm phát sinh lỗi trong yêu cầu– lỗi trong yêu cầu bị gây ra bởi các yêu cầu không đúng, không đầy đủ, thiếu hay sai Yêu cầu có lỗi có thể làm cho dự án thất bại, kém chất lượng, chi phí quá mức, làm lại tốn kém và chuyển giao chậm

Nhiều người lập trình tin rằng với mọi dự án đều có một tập các “yêu cầu vững chắc” mà họ có thể thực hiện chính xác và tạo ra sản phẩm hoàn hảo (Phần lớn các lớp lập trình đều bắt đầu bằng các yêu cầu được xác định rõ để cho sinh viên có thể lập trình)

Nắm bắt yêu cầu là khó bởi vì phần lớn những người có ảnh hưởng có thể không biết cách truyền đạt nhu cầu đúng và lẫn lộn nhu cầu với điều mong muốn Phần lớn những người phát triển phần mềm đều không quen thuộc với qui trình nghiệp vụ vận hành và trông đợi nhận được các yêu cầu viết rõ ràng và không nhập nhằng để họ có thể bắt đầu lập trình (đó là điều họ đã được dạy ở trường) Phần lớn những người có ảnh hưởng đều không quen thuộc với khía cạnh kĩ thuật của phần cứng hay phần mềm, điều tập trung vào vào chức năng, nhân tố hiệu năng và ràng buộc thiết kế mà người phần mềm cần xây dựng hệ thống phần mềm Các góc nhìn và định nghĩa khác nhau từ những người tham gia vào phát triển yêu cầu tạo ra lẫn lộn và rủi ro

Yêu cầu phần mềm bao gồm ba mức độ—yêu cầu nghiệp vụ, yêu cầu người dùng, và yêu cầu chức năng Bên cạnh đó, mọi hệ thống đều có các yêu cầu phi chức năng Yêu cầu nghiệp vụ biểu thị cho các mục tiêu mức cao của tổ chức hay khách hàng, người yêu cầu hệ thống Yêu cầu nghiệp vụ về căn bản tới từ người có ảnh hưởng của dự án, (khách hàng, người quản lí, người dùng, bộ phận bán hàng và tiếp thị).Yêu cầu nghiệp vụ mô tả tại sao tổ chức thực hiện hệ thống hay tạo ra sản phẩm phần mềm bao gồm các mục tiêu mà tổ chức hi vọng đạt tới Về căn bản, yêu cầu nghiệp vụ là tầm nhìn và phạm vi của dự án đôi khi còn được gọi là hiến chương dự án hay tài liệu yêu cầu thị trường Yêu cầu người dùng mô tả mục đích hay nhiệm vụ người dùng

mà người dùng phải có khả năng thực hiện cùng sản phẩm Yêu cầu người dùng mô tả điều người dùng sẽ có khả năng làm việc với hệ thống Yêu cầu chức năng xác định chức năng phần mềm mà người phát triển phải xây dựng trong sản phẩm để làm cho người dùng thực hiện được nhiệm vụ của họ, do đó thoả mãn yêu cầu nghiệp vụ

Các yêu cầu chức năng mà những người có ảnh hưởng nêu ra có thể làkhông đủ Bên cạnh những yêu cầu chức năng này, người kĩ sư phần mềm phải đi tới hay suy dẫn ra các yêu cầu phi chức năng Những yêu cầu này bao gồm mục đích hiệu năng và mô tả thuộc tính chất lượng Thuộc tính chất lượng làm tăng mô tả cho chức năng của sản phẩm

Trang 31

bằng việc mô tả các đặc trưng của sản phẩm theo các chiều đa dạng

mà quan trọng cho cả người dùng hay cho người phát triển Những đặctrưng này bao gồm tính sử dụng được, tính khả chuyển, tính toàn vẹn, tính hiệu quả và tính vững chắc Các yêu cầu phi chức năng khác mô

tả cho giao diện bên ngoài giữa hệ thống và thế giới bên ngoài, và những ràng buộc thiết kế và thực hiện Ràng buộc áp đặt những hạn chế lên chọn lựa sẵn có cho việc thiết kế và xây dựng sản phẩm

Thành công hay thất bại của việc phát triển phần mềm tuỳ thuộc rất nhiều vào chất lượng của yêu cầu và chấtt lượng của yêu cầu lại bị ảnhhưởng lớn bởi kĩ thuật được sử dụng trong pha phát triển yêu cầu Đó tất cả là việc biết nhu cầu của người có ảnh hưởng, và trao đổi những nhu cầu đó với người phát triển phần mềm Phát triển yêu cầu bị ảnh hưởng bởi việc người kĩ sư phần mềm hiểu đến đâu qui trình và nhu cầu nghiệp vụ của người có ảnh hưởng

Phát triển yêu cầu bao gồm bốn giai đoạn không tuần tự mà lặp về bản chất Chúng là:

Khêu gợi yêu cầu: Các kĩ thuật được kĩ sư phần mềm sử dụng để xác định nhu cầu của người có ảnh hưởng (khách hàng và người dùng), để cho phần mềm có thể được xây dựng với xác xuất cao thoả mãn cho những nhu cầu này

Phân tích yêu cầu: Các kĩ thuật quyết định tính năng nào là thích hợp cho sản phẩm phần mềm dựa trên nhu cầu của người có ảnh hưởng Đặc tả yêu cầu: Các kĩ thuật làm tài liệu về những đặc trưng của sản phẩm phần mềm sẽ được xây dựng dựa trên các tính năng được lựa ra trong qui trình phân tích

Trắc nghiệm và kiểm nghiệm yêu cầu: Kĩ thuật đảm bảo rằng đặc tả yêu cầu đáp ứng cho nhu cầu của người có ảnh hưởng

Điều cần nhấn mạnh là bản chất lặp của việc phát triển yêu cầu và việc kiểm nghiệm yêu cầu với những người có ảnh hưởng, vì yêu cầu làchủ chốt cho thành công của dự án Trước khi lập kế hoạch dự án, điềubản chất là người kĩ sư phần mềm phải đảm bảo rằng tất cả các yêu cầu đáp ứng cho nhu cầu của người có ảnh hưởng Người kĩ sư phần mềm phải kiểm nghiệm các yêu cầu bằng cách tiến hành kiểm điểm tàiliệu yêu cầu với người có ảnh hưởng để đảm bảo rằng chúng đáp ứng cho các đặc tả của dự án (xây dựng phần mềm đúng theo góc nhìn củangười phát triển)

Một trong những cách tốt nhất để kiểm nghiệm yêu cầu là tạo ra các kiểm thử chấp nhận mức cao với các trường hợp kiểm thử và các kịch đoạn kiểm thử để đảm bảo rằng chúng đáp ứng mục đích và mục tiêu

Trang 32

của dự án (xây dựng phần mềm đúng từ góc nhìn của người dùng) Nếu người kĩ sư không thể xây dựng các trường hợp kiểm thử thì hoặc các yêu cầu là quá mông lung và tham vọng và không thể nào kiểm thử được, hoặc người kĩ sư không hiểu rõ yêu cầu Trong trường hợp

đó người kĩ sư phải quay lại và thảo luận với người có ảnh hưởng để làm sáng tỏ

Kĩ năng của kĩ sư phần mềm trong phát triển yêu cầu là rất quan trọngtrong Kĩ nghệ phần mềm Nghiên cứu tại Carnegie Mellon thấy rằng phần lớn các công ti đều gặp khó khăn trong khêu gợi và viết yêu cầu sản phẩm Tài liệu yêu cầu điển hình chứa xấp xỉ 10 lỗi nghiêm trọng trong mỗi trang Tài liệu yêu cầu bị lỗi lại được trao cho tổ phát triển

để được thực hiện Người có ảnh hưởng và người lập trình dành hơn 5 giờ để gửi email qua lại cho nhau để làm sáng tỏ từng yêu cầu, với hơn

58 giờ được dành cho kiểm thử, gỡ lỗi và kiểm thử lại từng yêu cầu để làm cho nó đúng Với những công ti có tổ kĩ nghệ phần mềm có kĩ năng biết cách áp dụng những kĩ năng này vào công việc yêu cầu hiện thời của họ, kết quả là tài liệu rõ ràng hơn hẳn, và giảm lỗi (Ít hơn 1 lỗi cho mỗi trang và ít thơn 2 giờ chữa lỗi.) Người kĩ sư phần mềm có

kĩ năng biết cách hỏi những câu hỏi mấu chốt khi khêu gợi nhu cầu người dùng, dùng những biểu đồ để trao đổi trực quan về phạm vi hệ thống, và khuôn mẫu để tổ chức và truyền đạt các yêu cầu cho khách hàng, người phát triển và người kiểm thử Họ dùng danh sách kiểm để xác định liệu yêu cầu là tốt hay không trước khi bắt đầu pha thiết kế

Nội dung thảo luận

Tại sao yêu cầu lại khó thu được?

Tại sao yêu cầu chất lượng lại quan trọng thế?

Pha phát triển yêu cầu là gì?

Sai lầm thông thường trong phát triển yêu cầu là gì?

Tại sao ưu tiên hoá yêu cầu ngay lúc đầu dự án lại quan trọng?

Phân công Công việc tổ

Sinh viên sẽ làm việc trong các nhóm để chuẩn bị danh sách kiểm về qui trình phát triển yêu cầu Hoạt động này được tạo ra để thúc đẩy công việc tổ và để thám hiểm khả năng của sinh viên hiểu thấy các khái niệm cơ bản của bài

Trang 33

2 tổ cần trình bày danh sách kiểm cho lớ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)

Trang 34

Bài 10: Quản lí cấu hình phần mềm

Trong bài này bạn sẽ học về Quản lí cấu hình phần mềm Software Configuration Management (SCM), một bộ môn mấu chốt của Kĩ nghệ phần mềm Quản lí cấu hình phần mềm có thể được định nghĩa như qui trình quản lí để thiết lập và duy trì sự nhất quán của hiệu năng sảnphẩm SCM là nhiệm vụ theo dõi và kiểm soát thay đổi trong phần mềm Thay đổi xảy ra trong mọi dự án phần mềm Nếu không được quản lí, nó có thể tạo ra lẫn lộn và thất vọng trong kĩ sư phần mềm Thay đổi các yêu cầu dẫn tới thiết kế, và thiết kế thay đổi ảnh hưởng tới viết mã Việc kiểm thử lỗi được tìm ra làm nảy sinh nhiều thay đổi viết mã và đôi khi làm thay đổi thiết kế Vấn đề thất vọng nhất trong phần mềm là thiếu kiểm soát thay đổi Nó là thất vọng bởi vì phải mất thời gian để sửa và bao giờ cũng xuất hiện vào lúc thời gian gay cấn nhất Chẳng hạn, một lỗi khó được chữa vài tuần trước bỗng nhiên xuất hiện trở lại; một đoạn mã chính được thực hiện tuần trước biến mất một cách bí ẩn; một chức năng đã đuược kiểm thử đầy đủ bỗng nhiên không làm việc chút nào nữa Phần lớn những vấn đề này bị gây

ra bởi các cập nhật không được kiểm soát khi hai hay nhiều người làm việc tách biệt trên cùng một chương trình, với người cuối cùng làm thay đổi thì lại phá huỷ công việc của người khác Để tránh loại lẫn lộn này và phí phạm thời gian, tổ chức phải có hệ thống kiểm soát tại chỗ.Vai trò mấu chốt của cấu hình là nhận diện và kiểm soát thay đổi với

hệ thống phần mềm

Quản lí cấu hình phần mềm là đơn giản về khái niệm nhưng phức tạp

về chi tiết, do đó, chủ đề này được chia thành hai bài để cho sinh viên nhiều thời gian nghiên cứu và hiểu bộ môn này

Quản lí cấu hình phần mềm (SCM) có thể coi như nhiệm vụ theo dõi vàkiểm soát thay đổi trong phần mềm Thay đổi xảy ra trong mọi dự án phần mềm Nếu không được quản lí, nó có thể tạo ra lẫn lộn và thất vọng trong các kĩ sư phần mềm Một số ví dụ về những thay đổi khôngđược kiểm soát, như khi nhiều người làm việc trên cùng một dự án, người cuối cùng làm thay đổi có thể phá huỷ công việc của người khác.Khi nhiều người làm việc trên cùng một dự án, lỗi được người này sửa

có thể tác động tới người khác do người đó không được lưu ý

Quản lí cấu hình phần mềm có thể được xác định như qui trình quản lí

để thiết lập và duy trì nhất quán của hiệu năng sản phẩm, các thuộc tính chức năng và vật lí cùng các yêu cầu của nó, thông tin thiết kế và vận hành qua trọn bộ vòng đời của nó Quản lí cấu hình tiêu biểu bao gồm ứng dụng của chỉ đạo và giám sát kĩ thuật và hành chính để nhậndiện và làm tư liệu các đặc trưng chức năng và vật lí của khoản mục

Ngày đăng: 18/10/2014, 11:07

TỪ KHÓA LIÊN QUAN

w