- Sự trưởng thành phần mềm là mức độ hay quy mô mà một tiến trình phần mềm: o Được định nghĩ tường minh trong tổ chức sản xuất phần mềm o Được vận hành nhờ vào sự Quản lý Kiểm soát
Trang 1Câu 1: Tiến trình phần mềm là gì? Vẽ sơ đồ bức tranh toàn cảnh và trình bày sơ lược Giải thích các pha hoạt động nền tảng.
- Tiến trình phần mềm bao gồm 1 tập hợp các hoạt động được thực hiện bởi con người nhờ
vào:
o Vận dụng các phương pháp , tri thức kinh nghiệm.
o Sử dụng các công cụ hỗ trợ.
- Bức tranh toàn cảnh: Coi đề cương
- Các pha hoạt động nền tảng:
o Đặc tả phần mềm: Các chức năng của phần mềm và điều kiện để nó hoạt động phải
được định nghĩa
o Phân tích, thiết kế: phân tích, thiết kế dữ liệu, xử lý, giao diện
o Phát triển, xây dựng: xây dựng hệ thống
o Xác nhận phần mềm (kiểm thử): kiểm thử chức năng, kiểm lỗi hệ thống
o Bảo trì/ Tiến hoá phần mềm: hỗ trợ sửa lỗi, theo dõi thay đổi yêu cầu, nâng cấp.
Câu 2: Sự trưởng thành phần mềm là gì? So sánh tổ chức phần mềm chưa trưởng thành và tổ chức phần mềm trưởng thành Theo anh chị làm thế nào để nâng cao tính trưởng thành của các tồ chức / công ty phần mềm?
- Sự trưởng thành phần mềm là mức độ hay quy mô mà một tiến trình phần mềm:
o Được định nghĩ tường minh trong tổ chức sản xuất phần mềm
o Được vận hành nhờ vào sự
Quản lý
Kiểm soát
Đánh giá định lượng
- Tổ chức phần mềm chưa trưởng thành:
o Đặt nặng vai trò cá nhân: phụ thuộc vào sự tuỳ biến, linh động, “chữa cháy” của các
chuyên viên và nhà quản lý
o Tiến trình phần mềm (nếu có): không vận dụng nghiêm ngặt, không kiểm soát nghiêm
túc trong quá trình vận hành
o Quản lý đề án: Không kiểm soát được tiến độ, không kiểm soát được kinh phí.
o Chất lượng sản phẩm:
Không có các tiêu chí khách quan để đánh giá
Xem nhẹ các hoạt động cải tiến chất lượng (việc duyệt lại hồ sơ phần mềm, thanh tra sản phẩm, kiểm thử,…) bị rút ngắn thời gian hoặc bỏ hẳn khi đề án có khả năng bị trễ hạn
Khách hàng không thể hình dung rõ về sản phẩm mãi đến khi nào được giao nộp
- Tổ chức phần mềm trưởng thành:
o Tiến trình phần mềm:
Trang 2 Được mô tả tường minh bằng các văn bản, truyền đạt tới mọi thành viên tham gia vào hoạt động sản xuất phần mềm
Phân định rõ ràng các vai trò và trách nhiệm của thành viên tham gia vào tiến trình phần mềm
Được vận hành, kiểm soát định lượng, tuân thủ xuyên suốt trong quá trình sản xuất phần mềm
Được tiến hoá để phù hợp với các thay đổi về môi trường công nghệ
Cập nhật, cải tiến tiến trình phần mềm trên cơ sở phân tích về lợi ích kinh tế
Giảm sự phụ thuộc vào cá nhân, tận dụng sức mạnh đồng đội
o Quản lý đề án:
Chuẩn bị kỹ càng kế hoạch sản xuất
Ước tính ngân sách và kiểm soát được chi phí
Làm chủ thời gian và tiến độ thực hiện các đề án
o Chất lượng sản phẩm: đúc kết được các tiêu chi khách quan và định hướng.
Để đánh giá được chất lượng sản phẩm
Để phân tích các sự cố về sản phẩm
Để đạt được các kết quả mong đợi về sản phẩm
- Để nâng cao tính trưởng thành cần:
o Phát triển năng lực, kỹ thuật cá nhân
o Phát triển, áp dụng các phương pháp, kỹ thuật mới.
o Cải tổ môi trường công nghệ -> Chi phí tăng
o Sử dụng các chuẩn về chất lượng quy trình, chất lượng sản phẩm: ISO (các phiên bản),
PSP, CMMI,…
o Đáp ứng các chuẩn mực quốc tế
o Nâng cao quá trình phát triển phần mềm, tăng nhân lực
o Khó khăn về đào tạo con người -> Chi phí tăng
Câu 3: CMMI là gì? Những lợi ích mà CMMI mang lại cho ngành công nghiệp phần mềm?
- CMMI- Mô hình trưởng thành năng lực tích hợp:
Là một khung các giải pháp tối ưu cho quá trình sản xuất phần mềm
Không tập trung mô tả chính các quá trình mà chỉ mô tả đặc điểm của các quá trình hiệu quả→ đưa ra các chỉ dẫn cho các công ty để họ có thể tự mình phát triển hoặc điều chỉnh các quá trình của họ
- Lợi ích :
Lợi ích chung:
o Nâng cao kiến thức và kỹ năng của lực lượng lao động
o Đảm bảo tính tổ chức, không riêng rẻ từng cá thể
o Duy trì tài sản con người, nguồn nhân lực chủ chốt của tổ chức
Trang 3 Về mặt quản lý:
o Giảm thời gian, chi phí nhưng vẫn đạt chất lượng cao
o Gia tăng khả năng thành công của dự án
o Gia tăng sự hợp tác giữa các chức năng sản xuất
o Gia tăng khả năng theo dõi, điều khiển tổng hợp các dự án
Về mặt nhân sự:
o Trao đổi thông tin dễ dàng thông qua sử dụng thuật ngữ chung
o Nâng cao tinh thần đội ngũ lao động:
Tạo môi trường làm việc ổn định
Vạch rõ vai trò và trách nhiệm của từng vị trí công việc
Đánh giá đúng năng lực, công nhận đúng thành tích
Liên tục phát triển các kỹ năng→ cơ hội thăng tiến
Về mặt kỹ thuật:
o Gia tăng sự tập trung và tính nhất quán trong công việc:
Triển khai và quản lý nhu cầu của tổ chức và người sử dụng
Thiết kế và triển khai hệ thống
Tích hợp hệ thống
Quản lý rủi ro
Đo lường và phân tích
Câu 4: sự ra đời của CMMI? Trình bày sơ lượt 2 thể hiện chính của CMMI(khái niệm, đặc điểm, cấu trúc)?
- Khái niệm:
o Vào năm 1990, Viện công nghệ phần mềm(SEI) đại học Carnegie Mello công bố mô
hình CMM (Capability Maturity Model) – Mô hình trưởng thành năng lực
o Mục đích: giúp các đơn vị sản xuất phần mềm có khả năng khắc phục được các nhược
điểm quan trọng trong quá trình sản xuất phần mềm như:
Kém chất lượng
Chậm trễ trong thực hiện dự án
Lãng phí chi phí quá lớn
Không thoả mãn yêu cầu khách hàng
Kém khả năng dự báo và có nhiều rủi ro
o CMM được tạo ra thông qua việc phân tích hoạt động của các tổ chức sản xuất phần
mềm được quản lý tốt
o CMM bao gồm 316 nguyên tắc hoạt động, được nhóm lại thành 18 hạng mục khác nhau.
Các nguyên tắc này tập trung vào các mặt như:
Quản lý yêu cầu
Quản lý thay đổi
Lập kế hoạch dự án theo dõi việc ước lượng so với thực tế
Trang 4 Theo dõi các hoạt động nhằm đảm bảo chất lượng
Tiến hành các cuộc thảo luận ngang hàng
Huấn luyện nhân viên các kỹ thuật liên quan đến công việc của họ
o CMM chỉ tập trung chủ yếu vào góc độ phần mềm của dự án và nó không nhìn nhận
một cách toàn diện về một tổ chức
o Mô hình CMM được phát triển thành nhiều phiên bản, tương ứng với các đặc thù cũa
từng công ty=> không thể hiện sự thống nhất và gây tốn kém
o Chuẩn CMMi là sự tổng hợp của các biến thể CMM, ra đời nhằm khắc phục các nhược
điểm của CMM, là một sự mở rộng về phạm vi của CMM (từ việc chỉ tập trung vào phần mềm => quản lý đến mức tổ chức)
- Staged Representation
o Khái niệm: Là phương pháp sử dụng một tập các định sẵn (predefined sets) của vùng
tiến trình (PA) nhằm định nghĩa một kịch bản cải tiến (improvement path) cho các tổ chức Ta gọi kịch bản cải tiến này là mức độ trưởng thành (Maturity Level)
o Đặc điểm:
Cung cấp một chuỗi các cải tiến đã được chứng minh, cái trước làm nền tảng cho cái tiếp theo
Sử dụng mức độ trưởng thành để mô tả cả tiến
Cung cấp một đánh giá tổng kết các kết quả thống kê và cho phép so sánh giữa các tổ chức
o Cấu trúc: Xem đề cương
- Continuous Representation
o Khái niệm: là phương pháp cho phép một tổ chức lựa chọn một vùng tiến trình cụ thể
và cải tiến nó (nhiều hay ít)
o Đặc điểm:
Cho phép lựa chọn thứ tự các cải tiến sao cho thích hợp nhất với mục tiêu kinh doanh của tổ chức và làm giảm các rủi ro
Cho phép so sánh giữa các tổ chức dựa trên nền tảng PA-to-PA
Sử dụng mức độ năng lực để mô tả việc cải tiến tiến trình
o Cấu trúc: xem đề cương
Câu 5: Độ đo phần mềm là gì? Trình bày các phép đo cơ bản, cho ví dụ minh họa?
- Tại sao phải đo:
o Để có cơ sở phân tích, đánh giá một các khách quan về một vấn đế hay một đối tượng
nào đó
o Nghi nghờ, đặt giả thuyết, muốn tìm hiểu -> đo -> kết quả -> phân tích -> kết luận, dự
đoán,
Trang 5o Mỗi số đó: không phản ánh hết mọi khía cạnh của đối tượng (độ phức tạp của phần
mềm, của thuật toán,…)
Cần phối hợp nhiều độ đo, vận dụng thêm các tiếp cận định tính (độ hài lòng của khách hàng)
- Các phép đo cơ bản:
o Đo dựa vào tỉ số: chia 1 đại lượng cho 1 đại lượng khác,tử số và mẫu số của tỉ số là số
phần tử của hai tập hợp rời nhau
VD:
Ý nghĩa của tỉ số = số nhân viên xây dựng phần mềm Số nhân viên kiểm tra phần mềm
Thường có phạm vi từ 1:10 đến 1:1 phụ thuộc vào quy mô tổ chức tiến trình phát triển phần mềm
Với các tỉ số nhỏ: đội ngũ xây dựng phần mềm làm cả việc kiểm tra các chức năng chi tiết, trong khi đội ngũ kiểm tra phần mềm thực hiện kiểm tra
ở mức độ hệ thống
Với các tỉ số lớn: đội ngũ kiểm tra phần mềm có trách nhiệm chính trong pha kiểm tra phần mềm và đảm bảo chất lượng
Đề án phi thuyền con thoi: 70 nhân viên kiểm tra, 49 nhân viên phát triển phần mềm, kết quả đo: 7049 ~ 7:5 Lớn hơn nhiều so với các đề án thông thường
o Đo dựa vào tỉ lệ: tỉ lệ khác với tỉ số ở chỗ tử số tham gia vào một phần của mẫu số a+b a
Tỉ số thường dung cho 2 nhóm người, trong khi tỉ lệ có thể dung cho nhiều phạm trù trong một nhóm Có thể nhiều hơn 2 phạm trù: a+b+ c+d +e q
VD:
Tỉ lệ = Tổng số khách hàng sử dụng phần mềm Số khách hàng vừa ý phần mềm
Dùng để khảo sát cho 1 phần mềm bất kỳ
Độ đo này phụ thuộc vào quan niệm khách hàng
o Giá trị đo lớn: Phần mềm có chất lượng tốt
o Giá trị đo nhỏ: Phần mềm có chất lượng không tốt
Có thể không phản ánh được “chất lượng bản chất” của phần mềm đang khảo sát
o Đo dựa vào tỉ lệ phần trăm (%): Tỉ lệ % có được bằng cách nhân tỉ lệ với 100
VD: Xem đề cương
Trang 6Câu 6: Sự cần thiết của độ đo kích thước(độ lớn) của phần mềm? trình bày các loại độ đo kích thước phần mềm.?
- Cần có đơn vị tính kích thước hay độ lớn của phần mềm để có thể:
o So sánh giữa các phần mềm với nhau
o Làm cơ sở để tính năng suất lao động trung bình.
Số đơn vị phần mềm Giờ làm việc
o Làm cơ sở để ước lượng một phần mềm:
“bằng cỡ bao nhiêu đơn vị phần mềm”
o Làm cơ sở để quy ra tiền Ví dụ: hiện trung bình cần 100 USD để sản xuất ra 1 đơn vị
phần mềm
o Làm cơ sở để báo cáo Ví dụ, năm 2013, công ty phần mềm PSV đã xuất khẩu tổng
cộng 453 đơn vị phần mềm
- Độ đo hướng kích thước
o Dựa trên số dòng mã nguồn
o Đơn vị tính: LOC/pm hay KLOC/pm
Kích thước = Số ngườitham gia X thời gian Số dòng mã nguồntổng cộng LOC (Line of Code) hay SLOC
KLOC (Thousand lines of code) hay KSLOC Thời gian thực hiện: quy về tháng (month)
Số người tham gia: person Đơn vị pm: person X month VD: đề cương
o Các vấn đề:
Có thể nhiều chỉ thị/ lệnh nằm trên cùng một dòng -> để có LOC chính xác: chuẩn hoá cách viết, dùng các công cụ hỗ trợ,…
Phụ thuộc vào ngôn ngữ lập trình: khó so sánh năng suất giữa các đề án, giữa các công ty có sử dụng ngôn ngữ lập trình khác nhau
Số dòng mã nguồn chỉ thực sự chính xác sau khi đã hoàn tất phần mềm -> phải có phương pháp để ước tính LOC
o Các phần mềm: Code Analyzer, LocMetrics hoặc VS2010 trở lên.
- Độ đo hướng chức năng:
o Mục đích: có được con số đặc trưng cho hệ thống chức năng của mỗi phần mềm.
Đơn vị tính là FP (Function Point), không phụ thuộc vào ngôn ngữ lập trình
Có thể ước lượng sớm độ lớn phần mềm (nhờ các thông tin từ phân tích yêu cầu, thiết kế tổng thể,… của hệ thống)
Trang 7 Làm cơ sở chung để tính năng suất, chi phí
Ví dụ: Công ty ABC:
Chi phí trung bình là 1150 USD/FP
Mỗi nhân viên có năng suất lao động là 65FP/m (trung bình 65 đơn vị FP được làm ra trong 1 tháng)
o Công thức:
Đo năng suất sản xuất phần mềm = Số ngườitham gia X thời gian Số điểm chức năng
Câu 7: Độ đo PUM? Khuyết điểm của PUM? Các phương pháp làm giảm PUM? Phương pháp nào là tích cực? hãy giải thích.
- PUM – Problems per User Month
- Công thức:
PUM = Tổng số sự cố do khách hàng báo cáo Số bản càiđặt X số thángkhai thác
VD: Triển khai 1 phần mềm cho 15 khách hàng trong 6 tháng, có 65 sự cố báo lại: (15 X 6)65
= 0.72
- Liên hệ giữa PUM và chất lượng
PUM giảm Chất lượng tăng
- Để PUM thấp, có thể chọn những phương án sau:
o Cải tiến quy trình phát triển phần mềm để giảm các lỗi thực sự.
o Giảm các lỗi giả (giải quyết tốt các vấn đề sử dụng, cải tiến tài liệu, huấn luyện khách
hàng, tăng cường các dịch vụ khách hàng,…)
Giảm tử số PUM (tích cực)
o Gia tăng số bản bán được (đẩy mạnh việc bán hàng bằng các biện pháp khuyến mãi,
quảng cáo,…)
Tăng mẫu số PUM (tiêu cực) vì khi các điều kiện thương mại có nhiều thuận lợi, số bản bán được tăng nhanh sẽ làm giảm giá trị PUM, sẽ gây ra ngộ nhận là chúng ta đã giải quyết tốt các vấn đề khách hàng, xem nhẹ việc giảm thiểu thực sự các vấn đề (giảm tử số PUM)
Câu 8: Thế nào là sản phẩm phần mểm đạt chất lượng? trình bày các tiêu chuẩn đảm bảo chất lượng
về sản phẩm và tiến trình phần mềm(nguồn gốc, đặc điểm, vai trò…)
- Sản phẩm phần mểm đạt chất lượng khi:
o Đáp ứng được các yêu cầu kỹ thuật để ra
o Kiểm soát sữ liệu nhập và dự toán được các dữ liệu nhập không hợp lệ
o Đã được kiểm tra và thử nghiệm hoàn toàn bởi những người độc lập
o Có tài liệu hướng dẫn cụ thể rõ ràng
Trang 8o Nhận biết được tỉ lệ lỗi
- Các tiêu chuẩn đảm bảo chất lượng:
o Các kinh nghiệm hoặc các phương pháp hiệu quả nhất, được đề xuất từ các tổ chức IEEE, ISO,…
o Các quy tắc chuẩn hóa để giao tiếp giữa các sản phẩm với nhau
o Có thể do chính tổ chức phát triển PM đề ra
- Đặc điểm của các tiêu chuẩn:
o Tính cần thiết
o Tính khả thi
o Tính đo lường
- Các tiêu chuẩn sản phẩm: định nghĩa các đặc tính chung cần được thể hiện.
- Các tiêu chuẩn về tiến trình: định nghĩa các thực hiện các tiến trình.
- Vai trò của tiêu chuẩn:
o Là chìa khóa tăng hiệu quả quản lý chất lượng
o Tóm lượt được các hoạt động tốt nhất, tránh lặp lại các sai lầm đã qua
o Đảm bảo chất lượng có đúng theo chuẩn đã đưa ra
o Cung cấp nội dung về tiêu chuẩn một cách liên tục để nhân viên mới có thể hiểu và áp dụng
Câu 9: Quản lý cấu hình phần mềm là gì? Nêu và giải thích tại sao cần quản lý cấu hình trong xây dựng phần mềm?
- Quản lý cấu hình phần mềm (Software configuration management – SCM)
o Là tiến trình kiểm soát, theo vết các thay đổi của một hệ thống phần mềm
o Được dùng để quản lý các phiên bản khác nhau của các phần mềm đó
- Lý do cần quản lý cấu hình:
o Phần mềm chạy trên nhiều họ máy tính khác nhau
o Phần mềm chạy trên nhiều hệ điều hành khác nhau
o Gồm các chức năng được phát triển cho một nhóm khách cụ thể
o Sử dụng đa ngôn ngữ
o Cần phải sử dụng cây quản lý cấu hình phần mềm
Chức năng cây quản lý cấu hình:
Theo dõi và quản lý sự khác nhau giữa các phiên bản
Đảm bảo các phiên bản mới được bắt ngồn (kế thừa) từ phiên bản gốc trong một tiến trình được kiểm soát (không được tuỳ tiện, tự phát)
Đảm bảo các phiên bản mới được giao đến đúng khách hàng và đúng thời gian quy định
- Các hoạt động trong tiến trình quản lý cấu hình.
o Hoạch định quản lý cấu hình
o Quản lý sự thay đổi phần mềm
Trang 9o Quản lý phiên bản của phần mềm
o Xây dựng phần mềm từ các thành tố
o Lưu ý:
Tiến trình quản lý cấu hình chỉ thực sự chạy sau khi một phiên bản đầu của hệ thống được phát triển
Tuy nhiên, một số đề xuất hoạch định tiến trình nên bắt đầu ngay khi khởi động đề án
và hoạt động suốt thời gian phát triển hệ thống
-Câu 10: Tiến trình quản lý thay đổi phần mềm gồm những hoạt động nào? Mô tả thuật toán tiến trình quản lý thay đổi?
- Tiến trình quản lý sự thay đổi phần mềm bao gồm:
o Phân tích sự đánh giá về mặt kỹ thuật
o Đánh giá chi phí
o Theo dõi “vết” của thay đổi.
- Thuật toán tiến trình quản lý thay đổi:
Yêu cầu thay đổi bằng cách điền vào “mẫu yêu cầu thay đổi”
Phân tích các yêu cầu thay đổi
Nếu <thay đổi hợp lý> thì
{
Đánh giá sơ bộ cách thức cài đặt các thay đổi
Ước lượng phí tổn
Ghi nhận các yêu cầu thay đổi vào CSDL
Đệ trình yêu cầu thay đổi tới Bộ phận kiểm soát thay đổi
Nếu thay đổi được chấp nhận thì
{
Lặp lại {
Tiến hành phần mềm thay đổi theo yêu cầu Ghi nhận thay đổi, liên kết với yêu cầu thay đổi
Đệ trình phần mềm để phê chuẩn chất lượng } đến khi (chất lượng phần mềm có thể chấp nhận) Tạo phiên bản mới
}
Ngược lại
Bác bỏ yêu cầu thay đổi }
Ngược lại
Bác bỏ yêu cầu thay đổi
Câu 11: Quản lý phiên bản là gì? Trình bày và cho ví dụ về các phương pháp định danh phiên bản?
Trang 10- Quản lý phiên bản là tiến trình định nghĩa, theo dõi và kiểm soát các phiên bản khác nhau nhau
của một hệ thống phần mềm
- Phiên bản (version): là một thể hiện của phần mềm mà có sự thay đổi so với các thể hiện khác của
phần mềm đó
o Thay đổi có thể bao gồm: chức năng mới, cải tiến hiệu năng, sửa đổi lỗi của phiên bản cũ…
Một số phiên bản có thể tương đương hoàn toàn về mặt chức năng nhưng được thiết kế để hoạt động cho các cấu hình phần mềm hay phần cứng khác nhau
- Phiên bản phát hành (realease): là một phiên bản được phân phối đến khách hàng Số lượng
phiên bản của một hệ thống phần mềm nhiều hơn số lượng phiên bản phát hành hệ thống đó
o Cấu trúc tổng quát của một phiên bản phát hành bao gồm:
Các chương trình thực thi hay một tập hợp các chương trình
Các tập tin cấu hình để xác định cách thức, nghi thức cài đặt cho từng môi trường cụ thể
Các tập tin dữ liệu cần cho sự hoạt động hệ thống
Một chương trình cài đặt dùng để cài đặt hệ thống phần mềm
Các tài liệu (giấy/ văn bản điện tử) liên quan đến hệ thống phần mềm (VD: file ReadMe)
- Có 3 phương pháp định danh phiên bản chính:
o Sơ đồ tuyến tính: sơ đồ này giả sử sự tiến hoá của hệ thống phần mềm diễn ra tuần tự,
phiên bản sau tương thích với phiên bản trước:
Phiên bản đầu tiên: 1.0
Các phiên bản cơ sở là: 1.0, 2.0, 3.0,…
Các phiên bản khác bắt nguồn từ phiên bản cơ sở, như: 2.1, 2.1.1, 3.0.1,…
Khó khăn:
Nếu nhiều phiên bản bắt nguồn từ phiên bản cha thì đánh số phiên bản như thế nào?
Nếu nhiều phiên bản của hệ thống được tạo ra và phân phối đến nhiều khách hàng khác nhau, mỗi khách hàng có một phiên bản duy nhất thì định danh thế nào
o Sơ đồ định danh theo dạng mạng: Xem đề cương
o Sơ đồ định danh theo tên:
VD: V1/VMS/DB server -> là phiên bản của DB server chạy trên hệ điều hành VMS
- Lưu ý chung về việc định danh phiên bản:
o Các phương pháp định danh phiên bản đều không phản ánh hết các thuộc tính liên quan đến
mỗi phiên bản phần mềm Các thuộc tính nên được lưu trong CSDL quản lý cấu hình và bao gồm ít nhất các thông tin sau:
Khách hàng
Ngôn ngữ dùng để phát triển
Tình trạng phát triển