Việc sản xuất phần mềm có tính đặcthù riêng và rất khác so với các quá trình sản xuất thông thường khác; • Để sản xuất ra một sản phẩm phần mềm thì phải có nhiều người tham gia và phảitr
Trang 1BÀI 1 TỔNG QUAN
Trang 2TÌNH HUỐNG DẪN NHẬP
Có những mô hình nào để công ty STT có thể thực hiện được công việc quản lý
và kiểm tra quá trình sản xuất phần mềm một cách có hiệu quả?
• Công ty STT là một công ty phần mềm lớn chuyên sản xuất các phần mềm thươngmại và các phần mềm theo đơn đặt hàng Việc sản xuất phần mềm có tính đặcthù riêng và rất khác so với các quá trình sản xuất thông thường khác;
• Để sản xuất ra một sản phẩm phần mềm thì phải có nhiều người tham gia và phảitrải qua rất nhiều giai đoạn cũng như sử dụng nhiều các tiện ích khác nhau trongquá trình sản xuất;
• Có nhiều quá trình sản xuất phần mềm để cho công ty STT áp dụng theo quytrình kiểm tra giám sát và đáp ứng được một tiêu chuẩn đã được công nhận
Trang 3MỤC TIÊU
Nắm được tổng quan về công nghệ phần mềm;
Trình bày được vai trò của kiểm thử và đảm bảo chất lượng phần mềm;
Trình bày được các mô hình vòng đời phần mềm tiêu biểu;
Trình bày các công đoạn kiểm thử phần mềm;
Xây dựng một ví dụ đơn giản xử dụng một mô hình vòng đời phần mềm
Trang 51 CÁC ĐỊNH NGHĨA
1.1 Tổng quan về công nghệ phần mềm
1.2 Tại sao phải kiểm thử và quản lý chất lượng phần mềm?
Trang 6 Các chương trình chứa các dòng lệnh chỉ thị cho máy tính thực hiện một
công việc nào đó;
Là một tập hợp các chương trình và dữ liệu phục vụ cho một công việc
được tin học hóa nào đó như:
Phần mềm quản lý các dịch vụ bay;
Phần mềm điều khiển lò phản ứng hạt nhân;
Phần mềm điều khiển dịch vụ mobile phone
Trong công nghệ phần mềm:
Phần mềm = Các chương trình + dữ liệu + các tài liệu liên quan
Trang 7Đặc trưng của phần mềm:
• Không mòn, cũ nhưng thoái hoá theo thời gian;
• Không được tạo ra từ các mẫu có sẵn;
• Phần mềm là linh hồn của các hệ thống máy tính;
• Có vai trò nền tảng của mọi hoạt động xã hội như sản xuất, dịch vụ, giải trí,điều hành cũng như hội nhập;
• Các nền kinh tế phụ thuộc rất lớn vào phần mềm;
Trang 8• Các hệ điều hành: Các Driver (chương trình điều khiển), các Monitor, các hệ quản lýtệp, các hệ thống quản lý thư viện chương trình và chương trình dịch, các hệ thốngquản lý mạng máy tính, các ngôn ngữ lập trình như PASCAL, C, C++, Visual Basic,FORTRAN, ADA
• Các phần mềm hệ thống như: Các chương trình soạn thảo văn bản, các chương trìnhđiều khiển các thiết bị ngoại vi, các chương trình mở rộng chức năng quản lý tệp: Sắpxếp, sao chép, cập nhật, các chương trình đồ hoạ, các giao diện thân thiện giữangười sử dụng và hệ điều hành;
• Hệ quản trị cơ sở dữ liệu, quản lý tri thức và các chương trình mở rộng tương ứng;
• Các phần mềm ứng dụng như: Các hệ tự động hoá quản lý chương trình, các hệ tựđộng hoá thiết kế, các hệ thống dạy học, các hệ thống tự học,…;
• Các chương trình tiện ích – Utilities và trò chơi Games: Các chương trình xử lý bảngtính điện tử, các chương trình chuyển đổi (tiền dịch) ngôn ngữ, dịch chéo, khôi phụccác chương trình chống và diệt virus máy tính, các chương trình trò chơi giải trí,…
CÁC LOẠI PHẦN MỀM
Trang 9CÔNG NGHỆ PHẦN MỀM
• Công nghệ phần mềm (Software Engineering): Là cách sử dụng phối hợp các
công nghệ cần thiết để tạo ra các sản phẩm phần mềm
• Các công việc cơ bản để xây dựng phần mềm:
Trang 10• Công nghệ phần mềm (Software Engineer) được đặc trưng bởi tập hợp các
phương pháp để phát triển một phần mềm hay còn gọi là tiến trình phần mềm
(Software Process);
• Công nghệ phần mềm không chỉ là việc lập trình để có một sản phẩm phần
mềm mà là tập hợp của việc triển khai nhiều giai đoạn để dẫn tới việc lập trình;
• Với một dự án phần mềm bất kỳ đều phải phân bổ công việc, kiểm tra quá trình
phát triển, thử nghiệm và đảm bảo chất lượng phần mềm khi hoàn tất
ĐẶC TRƯNG CỦA CÔNG NGHỆ PHẦN MỀM
Trang 11• Mục đích chính của công nghệ phần mềm là sản xuất ra các phần mềm có chấtlượng như đảm bảo tốc độ, dễ sử dụng, cấu trúc, dễ hiểu, …
• Hai yếu tố chất lượng phần mềm:
Những yếu tố chất lượng bên ngoài:
Là yếu tố mà người dùng có thể nhận biết được như tốc độ nhanh, ổnđịnh, dễ sử dụng, dễ thích nghi,
Là mục đích cuối cùng của một sản phẩm phần mềm
Những yếu tố chất lượng bên trong:
Là những yếu tố mà chỉ những người làm tin học chuyên nghiệp mới biếtđược như tính đơn thể, dễ đọc, dễ hiểu,…
Là mấu chốt để đạt được những yếu tố chất lượng bên ngoài
MỤC ĐÍCH CỦA CÔNG NGHỆ PHẦN MỀM
Trang 121.2 TẠI SAO PHẢI KIỂM THỬ VÀ QUẢN LÝ CHẤT LƯỢNG PHẦN MỀM
Tiêu chuẩn của một sản phẩm phần mềm:
Trang 14• Mục tiêu của công nghệ phần mềm là:
Sản xuất ra các phần mềm không có lỗi;
Hoàn thành đúng thời hạn;
Kinh phí cho phép;
Thỏa mãn yêu cầu khách hàng;
Dễ sửa đổi khi người sử dụng cần
• Để đạt được những điều này các kỹ sư phần mềm của STT nói riêng và các công typhần mềm khác nói chung là phải được trang bị các kỹ năng về kỹ thuật cũng như
về quản lý Các kỹ năng này không chỉ thể hiện khi viết chương trình, mà phải được
áp dụng trong các pha xây dựng phần mềm, bắt đầu từ khảo sát yêu cầu kháchhàng cho đến giai đoạn bảo trì
MỤC TIÊU CỦA CÔNG NGHỆ PHẦN MỀM
Trang 15• Mặc dù được tự động hoá một phần bởi các công cụ Tuy nhiên, rất nhiều công đoạntrong quá trình sản xuất phần mềm vẫn được thực hiện bởi con người
Vẫn có khả năng xảy ra lỗi;
• Lỗi có thể xảy ra trong tất cả các giai đoạn của công nghệ sản xuất phần mềm
Do đó phải kiểm thử trước khi chính thức sử dụng;
• Hạn chế chi phí cho các thất bại do lỗi gây ra sau này;
• Có kế hoạch tốt nâng cao chất lượng suốt quá trình phát triển phần mềm;
• Kiểm thử là yếu tố quyết định của quản lý chất lượng phần mềm
TẠI SAO PHẢI KIỂM THỬ PHẦN MỀM?
Trang 16Câu hỏi trắc nghiệm
1 Phần mềm chỉ bao gồm chương trình?
2 Trong các sản phẩm sau đây, sản phẩm nào không phải phần mềm?
a Trình soạn thảo văn bản b Hệ điều hành windows xp
3 Phần mềm được làm bởi đội ngũ kỹ sư có trình độ cao thì không cần kiểm thử?
4 Đâu không phải là mục tiêu của công nghệ phần mềm?
a Sản xuất phần mềm không có lỗi b Hoàn thành đúng thời hạn
c Thỏa mãn yêu cầu khách hàng d Phần mềm có dung lượng lớn
5 Hai yếu tố chất lượng phần mềm là gì?
6 Phát biểu nào là sai về tiêu chuẩn của một phần mềm?
Trang 172 CÁC MÔ HÌNH VÒNG ĐỜI PHẦN MỀM
2.1 Khái niệm
2.2 Tiến trình phát triển phần mềm
2.3 Các mô hình vòng đời phần mềm
Trang 182.1 KHÁI NIỆM
• Vòng đời phần mềm (Software Life-Cycle) là các bước mà một phần mềm phải
trải qua, bắt đầu từ khảo sát nhu cầu khách hàng cho đến khi phần mềm
không còn được sử dụng;
• Phát triển phần mềm (Software Developement) quá trình xây dựng phần mềm
từ bắt đầu cho đến khi chuyển giao cho khách hàng;
• Pha (Phase) là một giai đoạn trong quá trình xây dựng phần mềm Ví dụ pha
xác định yêu cầu, pha phân tích
Trang 192.2 TIẾN TRÌNH PHÁT TRIỂN PHẦN MỀM
Tiến trình phần mềm (Software Process):
• Hay còn gọi là quy trình phần mềm là một tập các hoạt động có cấu trúc nhằmphát triển và tiến hóa một phần mềm;
• Quy trình này là sự kết hợp mô hình vòng đời phần mềm, các công cụ được sửdụng và quan trọng hơn hết, là những người xây dựng nên phần mềm đó;
• Các công ty phần mềm khác nhau có các quy trình phần mềm khác nhau;
• Một tiến trình cụ thể phải trả lời được các câu hỏi: Làm gì, khi nào, ai làm, nhưthế nào, bằng gì, ở đâu, kết quả và tiêu chí đánh giá?
Trang 20Các giai đoạn chính của một tiến trình
CÁC GIAI ĐOẠN CHÍNH CỦA MỘT TIẾN TRÌNH
Giai đoạn xác định yêu cầu: Hệ thống làm gì, những ràng buộc nó cần tuân thủ?
Xác định các tính năng và điều kiện hoạt động của hệ thống (thu thập yêu cầu vàphân tích):
• Phân tích hệ thống: Vai trò phần mềm trong hệ thống, phác họa và chọn phương
án khả thi;
• Lập kế hoạch: Ước lượng, lập lịch, tổ chức;
• Phân tích yêu cầu: Các yêu cầu cụ thể (chức năng, ràng buộc);
• Đặc tả yêu cầu: Kiến trúc, giao diện, xử lý, dữ liệu
Xác định yêu cầu
Phát triển
Thẩm đinh
Trang 21Các giai đoạn chính của một tiến trình
CÁC GIAI ĐOẠN CHÍNH CỦA MỘT TIẾN TRÌNH
Xác định yêu cầu
Phát triển
Thẩm đinh
Giai đoạn phát triển: Tạo ra phần mềm như thế nào?
• Thiết kế phần mềm (Software Design): Chuyển các yêu cầu thành các bản thiết
kế hệ thống như nó tồn tại;
• Mã hóa (Code Generation): Chuyển thiết kế thành chương trình hay còn gọi là
viết code
Trang 22Các giai đoạn chính của một tiến trình
CÁC GIAI ĐOẠN CHÍNH CỦA MỘT TIẾN TRÌNH
Xác định yêu cầu
Phát triển
Thẩm đinh
Giai đoạn thẩm định: Kiểm tra phần mềm (Software Testing):
• Kiểm tra tính hợp lý của phần mềm;
• Kiểm thử: Sửa lỗi, hoàn thiện;
• Tài liệu: Hướng dẫn sử dụng, tham khảo kỹ thuật và phát triển hệ thống
Trang 23Các giai đoạn chính của một tiến trình
CÁC GIAI ĐOẠN CHÍNH CỦA MỘT TIẾN TRÌNH
Xác định yêu cầu
Phát triển
Thẩm đinh
Giai đoạn vận hành và bảo trì:
• Sửa lỗi(Correction): Đảm bảo vận hành trong suốt;
• Thích nghi (Adaptation): Với môi trường (kỹ thuật, nghiệp vụ);
• Tăng cường (Enhancement): Để hoàn thiện hệ thống khi đưa vào sử dụng;
• Nâng cao: Hoàn thiện chức năng, phát triển dự phòng;
• Thêm mới: Thêm các chức năng mới
Trang 24Mô hình tiến trình hay mô hình vòng đời: Là cách biểu diễn trừu tượng tiến trình phầnmềm theo một cách nhìn cụ thể nào đó.
Công việc 1.1.1
Công việc 2.1.1
Giai đoạn 1 Giai đoạn 2 Giai đoạn 3
Trang 252.3 CÁC MÔ HÌNH VÒNG ĐỜI PHẦN MỀM
• Tùy theo quy mô và công nghệ phát triển, có các mô hình sản xuất khácnhau Sau đây là một số mô hình vòng đời phần mềm tiêu biểu:
Mô hình thác nước (Waterfall model);
Mô hình phát triển tiến hóa (Evolutionary);
Mô hình xoắn ốc (Spiral);
Mô hình lặp và tăng dần (Iterative and Incremental);
Mô hình làm bản mẫu (Prototype);
Mô hình phát triển ứng dụng nhanh (RAD);
• Câu hỏi đặt ra là mô hình nào tốt hơn?
• => Mỗi mô hình phù hợp với trình độ phát triển, quy mô sản phẩm và
Trang 26thống và
kiểm thử đơn vị
Kiểm thử tích hợp và
hệ thống Vận hành và
bảo trì
Mô hình thác nước – Waterfall model
Trang 27• Đưa ra lần đầu tiên bởi W.W Royce vào năm 1970;
• Quá trình phát triển phần mềm được coi như một dòng chảy trải qua các pha;
• Các pha trên phải được thực hiện một cách tuần tự; kết thúc pha trước, rồi mớiđược thực hiện pha tiếp theo;
• Có sự tách biệt giữa các pha;
• Đặt nền móng cho các phương pháp phân tích, thiết kế, kiểm tra
ĐẶC ĐIỂM CỦA MÔ HÌNH THÁC NƯỚC
Trang 28• Ưu điểm:
Các giai đoạn được định nghĩa, với đầu vào và đầu ra rõ ràng;
Quy định tốt về tài liệu cho mỗi giai đoạn Mô hình này cơ bản dựa trên tài liệunhất là trong các giai đoạn đầu, đầu vào và đầu ra đều là tài liệu;
Sản phẩm phần mềm được hình thành thông qua chuỗi các hoạt động xây dựngphần mềm theo trình tự rõ ràng;
Đưa ra được mô hình mẫu về các bước mà phần mềm phải trải qua;
Được sử dụng rộng rãi nhất trong công nghệ phần mềm
ƯU NHƯỢC ĐIỂM CỦA MÔ HÌNH THÁC NƯỚC
• Nhược điểm:
Rất khó khăn trong việc thay đổi các pha đã được thực hiện;
Chậm, rất khó áp dụng với các dự án lớn, phức tạp;
Rất dễ gây ra hiện tượng tắc nghẽn;
Yêu cầu khách hàng phải có đặc tả rất chính xác và đầy đủ ngay từ ban đầu;
Người sử dụng không có cơ hội tham gia trong suốt thời gian của các giai đoạntrung gian từ thiết kế cho đến kiểm thử;
Trang 29ỨNG DỤNG
• Yêu cầu phải được định nghĩa rất rõ ràng, chi tiết và hầu như không thay đổi, thườngxuất phát từ sản phẩm đã đạt mức ổn định;
• Yêu cầu mới bổ sung (nếu có) cũng phải được xác định rõ ràng, đầy đủ từ đầu dự án;
• Đội ngũ thực hiện quen thuộc và hiểu rõ tất cả yêu cầu của dự án, và có nhiều kinhnghiệm với các công nghệ được dùng để phát triển sản phẩm;
• Dự án phải gần như không có rủi ro
Trang 302.3.2 MÔ HÌNH PHÁT TRIỂN TIẾN HÓA (EVOLUTIONARY)
Mô hình phát triển tiến hoá (Evolutionary)
Đặc tả
Phát triển
Thẩm định
Đặc tả khái quát
Phiên bản khởi đầu
Phiên bản trung gian Phiên bản cuối cùng
Trang 31ĐẶC ĐIỂM CỦA MÔ HÌNH TIẾN HOÁ
• Mô hình xây dựng tiến triển dựa trên ý tưởng xây dựng một mẫu thử ban đầu và đưacho người sử dụng xem xét Sau đó, tinh chỉnh mẫu thử qua nhiều phiên bản cho đếnkhi thoả mãn yêu cầu của người sử dụng thì dừng lại;
• Là một dạng dựa trên mô hình mẫu;
• Mô hình tiến hóa xây dựng nhiều phiên bản mẫu liên tiếp nhau;
• Những phiên bản mẫu trước sẽ được xây dựng với mục tiêu có thể tái sử dụng trongnhững phiên bản sau;
• Một số phần của hệ thống phần mềm có thể đuợc xây dựng sớm ngay từ giai đoạnthực hiện phân tích yêu cầu và thiết kế
Trang 32Có hai phương pháp để thực hiện mô hình này:
• Phương pháp 1: Phát triển thăm dò
Mục đích là để làm việc với khách hàng và để đưa ra hệ thống cuối cùng từnhững đặc tả sơ bộ ban đầu;
Phương pháp này thường bắt đầu thực hiện với những yêu cầu được tìm hiểu rõràng và sau đó, bổ sung những đặc điểm mới được đề xuất bởi khách hàng;
Cuối cùng, khi các yêu cầu của người sử dụng được thoả mãn thì cũng là lúcchúng ta đã xây dựng xong hệ thống
PHƯƠNG PHÁP ĐỂ THỰC HIỆN MÔ HÌNH TIẾN HOÁ
• Phương pháp 2: Loại bỏ mẫu thử
Mục đích là để tìm hiểu các yêu cầu của hệ thống;
Phương pháp này thường bắt đầu với những yêu cầu không rõ ràng và ít thôngtin Các mẫu thử sẽ được xây dựng và chuyển giao tới cho người sử dụng;
Từ đó, ta có thể phân loại những yêu cầu nào là thực sự cần thiết và lúc này mẫuthử không còn cần thiết nữa;
Trang 33ƯU NHƯỢC ĐIỂM CỦA MÔ HÌNH TIẾN HOÁ
Thường thì với mô hình này, tính chặt chẽ, minh bạch của qui trình kém;
Chỉ nên áp dụng với những hệ thống có tương tác ở mức độ nhỏ hoặc vừa; trên
Trang 34ỨNG DỤNG CỦA MÔ HÌNH TIẾN HOÁ
• Dùng cho các hệ thống nhỏ và vừa: Các chi phí khi thay đổi hệ thống là khôngquá lớn khi cần phải thay đổi sau khi thực hiện Prototype;
• Phần GUI của những hệ thống lớn; những hệ thống cần chu kỳ phát triển ngắn;
• Cần sự cấp bách về thời gian triển khai ngắn Hệ thống cần được đưa vào ứngdụng từng phần trong khoảng thời gian nhất định;
• Trong trường hợp những hệ thống mà việc đặc tả các yêu cầu là rất khó và không
rõ ràng ngay từ đầu;
• Đội ngũ phát triển không quen thuộc với lĩnh vực của dự án
Trang 352.3.3 MÔ HÌNH XOẮN ỐC
Giao tiếp khách hàng
Nâng cấp Làm mới Khái niệm
Trang 36ĐẶC ĐIỂM CỦA MÔ HÌNH XOẮN ỐC
• Mô hình xoắn ốc do Barry Boehm đề xuất năm 1988;
• Mô hình xoắn ốc là sự kết hợp tính lặp của mô hình bản mẫu và tính hệ thống của môhình thác nước;
• Đặt trọng tâm phân tích rủi ro và xem xét kế hoạch để giải quyết chúng, thông quanhiều chu kỳ con nối tiếp được lặp liên tiếp dựa trên bản chất của mô hình lặp;
• Trong mô hình này, việc phân tích và giải quyết những vấn đề có rủi ro cao tập trungvào thiết kế từng khía cạnh cụ thể chứ không dựa vào việc xử lý các vấn đề một cáchchung chung;
• Mô hình mô tả sự phát triển của phần mềm qua các giai đoạn tiến hoá, mỗi giai đoạnđược coi như một mô hình thác đổ:
Ban đầu người ta chưa định nghĩa hệ thống một cách chi tiết, mà chỉ chú ý đếnnhững đặc trưng nổi bật nhất;
Sau đó phần đặc trưng này được xây dựng và khách hàng xem xét, có ý kiến;
Cùng những thông tin phản hồi từ khách hàng, người phát triển trở lại thực hiệncác đặc trưng với mức độ chi tiết hơn
Trang 37ĐẶC ĐIỂM CỦA MÔ HÌNH XOẮN ỐC (tiếp theo)
• Bản chất mô hình xoắn ốc là bắt đầu từ những cái khái quát nhất rồi đi dần đếnchi tiết Trong quá trình đó có lập kế hoạch cho từng giai đoạn làm chi tiết hóasản phẩm và phân tích rủi ro;
• Ví dụ: Khi biên soạn tài liệu theo cách thức "xoắn ốc”, ban đầu nêu các khái niệmchung, về sau đi sâu dần vào các chi tiết;
• Mô hình này với các giai đoạn lặp theo chu kỳ xoay vòng, trong đó mỗi chu kỳbao gồm 4 giai đoạn con như sau:
Xác định mục tiêu chất lượng cho sản phẩm được thực hiện, đồng thời xácđịnh sự lựa chọn mua, tái sử dụng hay tự thiết kế và hiện thực các thànhphần của hệ thống;
Phân tích sự lựa chọn và các rủi ro có thể xảy ra Việc này được thực hiện bởinhiều hoạt động khác nhau thông qua làm mẫu hay mô phỏng;