Bài giảng công nghệ phần mềm

350 56 0
Bài giảng công nghệ phần mềm

Đ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

TRƯỜNG ĐẠI HỌC QUẢNG BÌNH KHOA KỸ THUẬT – CÔNG NGHỆ THÔNG TIN BÀI GIẢNG (Lưu hành nội bộ) CÔNG NGHỆ PHẦN MỀM (Dành cho sinh viên CNTT) Giảng viên: TS Hoàng Tuấn Nhã Năm 2017 Công nghệ phần mềm Phần mềm (Software) • • • • • Định nghĩa Vai trò Những đặc trưng chính Phân loại Tiêu chí phần mềm tốt Phần mềm – Định nghĩa • Phần mềm gồm chương trình máy tính tất tài liệu liệu liên quan – Các chương trình – Các tệp cấu hình – Các tài liệu hệ thống – Tài liệu người dùng – Websites cập nhật thông tin sản phẩm • Phần mềm gắn với hệ thống cụ thể Phần mềm – Phân loại • Phần mềm dùng chung – Tác giả sở hữu đặc tả phần mềm – Bán rộng rãi – Microsoft Office, Angry Birds • Phần mềm đặt hàng – Làm riêng cho khách hàng cụ thể – Khách hàng sở hữu đặc tả – Hệ thống quản lý đào tạo Đại học Quốc gia Hà Nội Phần mềm – Vai trò • Làm thay đổi phong cách làm việc tổ chức • Tăng hiệu suất làm việc đơn vị • Ảnh hưởng đến kinh tế quốc gia – Nền kinh tế tất nước phát triển phụ thuộc vào phần mềm – Tiền chi cho phần mềm chiếm tỷ lệ quan trọng GNP của tất nước phát triển Phần mềm – Các đặc trưng chính • Phần mềm phức tạp • Yêu cầu phần mềm không ngừng thay đổi – Nhu cầu con người – Quy trình quản lý – Hạ tầng phần cứng • Nhu cầu sử dụng phần mềm ngày tăng lên Phần mềm – Tiêu chí phần mềm tốt • Tính bảo trì – Phần mềm phải tiến hóa để đáp ứng nhu cầu liên tục thay đổi • Tính tin cậy • Tính hiệu Cái quan trọng nhất? – Phần mềm không nên sử dụng tài nguyên hệ thống cách lãng phí • Tính chấp nhận – Phần mềm thỏa mãn yêu cầu người dùng: người dùng hiểu được, dùng nó, và tương thích với hệ thống khác Phần mềm – Tổng kết • Phần mềm có vai trò quan trọng • Phát triển phần mềm là công việc phức tạp, rủi ro Cần áp dụng các phương pháp tiên tiến Kỹ nghệ phần mềm – Khái niệm • Các lý thuyết, các phương pháp công cụ hỗ trợ cho phát triển phần mềm • Áp dụng lý thuyết, các phương pháp, các công cụ phù hợp trình sản xuất phần mềm ràng buộc tổ chức tài • Phát triển lý thuyết, các phương pháp, các công cụ hỗ trợ trình sản xuất phần mềm Cách tiếp cận có tổ chức và có hệ thống xUnit / JUnit • Các phương thức dạng assert_*_() thường được dùng để kiểm tra trạng thái Chúng định nghĩa trạng thái trông đợi và báo lỗi nếu trạng thái thực không giống như vậy • http://www.junit.org/ • Ví dụ: – – – – assertTrue(4 == (2 * 2)); assertEquals(expected, actual); assertNull(Object object); v.v 335 Example Test Case Listing 2-1: Example test case for the Key Checker class public class CheckerTest { // test case to check that invalid key is rejected @Test public void checkKey_anyState_invalidKeyRejected() { // set up Checker checker = new Checker( /* constructor params */ ); // act Key invalidTestKey = new Key( /*setup with invalid code*/ ); boolean result = checker.checkKey(invalidTestKey); // verify assertEqual(result, false); } } 336 Đặt tên phương thức cho test case Set up Act 〈methodName〉_〈startingState〉_〈expectedResult〉 Verify Ví dụ tên phương thức cho test case với nội dung: kiểm tra hàm checkKey() luôn reject khóa không hợp lệ checkKey_anyState_invalidKeyRejected() 337 Listing 2-2: Example test case for the Controller class public class ControllerTest { // test case to check that the state Blocked is visited @Test public void enterKey_accepting_toBlocked() { Another Test Case Example // set up: bring the object to the starting state Controller cntrl = new Controller( /* constructor params */ ); // bring Controller to the Accepting state, just before it blocks Key invalidTestKey = new Key( /* setup with invalid code */ ); for (i=0; i < cntrl.getMaxNumOfAttempts(); i++) { cntrl.enterKey(invalidTestKey); } assertEqual( // check that the starting state is set up cntrl.getNumOfAttempts(), cntrl.getMaxNumOfAttempts() – ); // act cntrl.enterKey(invalidTestKey); // verify assertEqual( // the resulting state must be "Blocked" cntrl.getNumOfAttempts(), cntrl.getMaxNumOfAttempts() ); assertEqual(cntrl.isBlocked(), true); } } 338 Integration Testing • Horizontal Integration Testing – “Big bang” integration – Bottom-up integration – Top-down integration – Sandwich integration • Vertical Integration Testing 339 Horizontal Integration Testing Controller Level-4 System hierarchy: Level-3 KeyChecker Level-2 KeyStorage Level-1 Bottom-up integration testing: Logger PhotoSObsrv DeviceCtrl Test Logger Test Controller & KeyChecker & KeyStorage & Key & Logger & PhotoSObsrv & DeviceCtrl Test PhotoSObsrv Test DeviceCtrl Test Key & KeyStorage Top-down integration testing: Test Controller Key Test Controller & KeyChecker Test KeyChecker & KeyStorage & Key Test Controller & KeyChecker & KeyStorage & Key Test Controller & KeyChecker & KeyStorage & Key & Logger & PhotoSObsrv & DeviceCtrl 340 Horizontal Integration Testing System hierarchy: Controller Level-4 Level-3 KeyChecker Level-2 KeyStorage Level-1 Logger PhotoSObsrv Key DeviceCtrl 341 Horizontal Integration Testing Bottom-up integration testing: Test Logger Test Controller & KeyChecker & KeyStorage & Key & Logger & PhotoSObsrv & DeviceCtrl Test PhotoSObsrv Test DeviceCtrl Test Key & KeyStorage Test KeyChecker & KeyStorage & Key 342 Horizontal Integration Testing Top-down integration testing: Test Controller Test Controller & KeyChecker Test Controller & KeyChecker & KeyStorage & Key Test Controller & KeyChecker & KeyStorage & Key & Logger & PhotoSObsrv & DeviceCtrl 343 Vertical Integration Testing User story-1 User story-2 User story-N inner feedback loop Write a failing acceptance test Write a failing unit test Make the test pass Refactor outer feedback loop Toàn hệ thống Phát triển user story: Mỗi story phát triển chu trình tích hợp unit test vòng feedback acceptance test vòng feedback 344 Logical Organization of Testing Component code Component code ( Not necessarily how it’s actually done! ) Unit test Unit test Integration test Component code Unit test Ensure that each component works as specified Integrated modules System test System in use Ensures that all components work together Function test Verifies that functional requirements are satisfied Quality test Verifies nonfunctional requirements Acceptance test Customer verifies all requirements Installation test Testing in user environment 345 03 Kiểm thử phần mềm Công nghệ phần mềm 346 Mục đích của kiểm thử • Mục tiêu: tìm lỗi • Các loại lỗi: – Lỗi yêu cầu – Lỗi thiết kế – Lỗi cài đặt • Các loại kiểm thử: – Kiểm thử thẩm định - validation testing: kiểm tra xem chức có yêu cầu hay không – Defect testing: tìm xem có khiếm khuyết không 347 Các loại kiểm thử Developer test – kiểm thử trình phát triển a) Unit test – kiểm thử đơn vị: test lớp, phương thức b) Component test – kiểm thử thành phần: nhóm lớp c) System test – kiểm thử hệ thống: tích hợp thành phần Release test – kiểm thử để chuẩn bị phát hành Validation test + Defect testing a) Scenario based testing – kiểm thử theo kịch (use case) b) Performance testing – kiểm thử hiệu User test – Acceptance test – kiểm thử chấp nhận • Thẩm định xem có yêu cầu • Tìm khiếm khuyết 348 Acceptance Test – Kiểm thử chấp nhận Test được thiết kế với giúp đỡ người dùng – Truyền thống: • • • • do khách hàng thực thực thủ công sau sản phẩm phần mềm bàn giao Dựa use case / user story – Agile software development: • Kiểm thử tự động: JUnit, Fit, • Test được tạo trước user story được cài đặt 349 ... phát triển phần mềm • Phương pháp phần mềm mô tả cách thức thực hoạt động phát triển phần mềm • Công cụ phần mềm hỗ trợ việc xây dựng phần mềm 17 Công nghệ phần mềm Các quy trình phần mềm 18 Nội dung.. .Công nghệ phần mềm Phần mềm (Software) • • • • • Định nghĩa Vai trò Những đặc trưng chính Phân loại Tiêu chí phần mềm tốt Phần mềm – Định nghĩa • Phần mềm gồm chương trình... Tổng kết • Kỹ nghệ phần mềm bao gồm việc phát triển lý thuyết, các phương pháp công cụ hỗ trợ trình sản xuất phần mềm việc áp dụng chúng vào trình sản xuất phần mềm thức tế • Tiến trình phần mềm bao

Ngày đăng: 24/08/2017, 10:06

Tài liệu cùng người dùng

Tài liệu liên quan