Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 24 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
24
Dung lượng
851,7 KB
Nội dung
Xây dựng pm CÂU HỎI ÔN TẬP MÔN XÂY DỰNG PM Câu 1: Trình bày khái niệm xây dựng pm Lên kế hoạch xây dựng phát triền dự án tập trung vào code, debug, unit test thiết kế cụ thể, phần nhỏ tích hợp kiểm chứng tích hợp Xây dựng pm phần lớn trình phát triển pm, kết trình xây dựng pm pm (1 pm bao gồm: yêu cầu pm, kế hoạch phát triển pm, phân tích thiết kế pm, mã nguồn pm, phân tích kiểm thử pm, tích hợp pm, hướng dẫn sd, hướng dẫn cài đặt.) Phần quan trọng xây dựng pm mã nguồn, phần quan trọng pm Xây dựng pm phần trọng tâm bắt buộc trình phát triển pm Xây dựng pm ? Cách viết code sơ đẳng viết code thử, sai bỏ Cách viết code chương trình định nghĩa giống gieo cây, ta viết thử đoạn nhỏ, chạy Nhưng đồ án lớn, đoạn nhỏ không kết nối được, phát sinh lỗi, khơng hiệu Viết code chuẩn hóa dần (viết đoạn nhỏ, đảm bảo tương thích với đoạn code trước đó) Để xây dựng pm tốt, phải lên thiết kế (giống xây dựng nhà), đồ án phức tạp, thiết kế chi tiết Đó điều bắt buộc để xây dựng pm tốt o Trước xdpm cần phải định nghĩa vấn đề cần giải (làm gì, cho gì) o Thứ phải có yêu cầu o Tiếp theo cần phải có phân tích thiết kế hệ thống cụ thể, phải có thành phần nào, lớp liên hệ với sao, phải có sơ đồ ghi rõ trước xây dựng o Sau cần phải chọn ngơn ngữ lập trình o Kế tiếp cần phải chọn tảng công nghệ, thực thư viện viết sẵn để tái sử dụng Vì công nghệ giúp ta tiết kiệm thời gian công sức xây dựng pm o Ta phải cần phải có chuẩn coding Chuẩn coding ta cần quan tâm : Xây dựng pm Định dạng thụt vào code (indentation), vertical alignment: theo hàng dọc có thứ tự Khoảng trống, tab Cách đặt tên biến: tên phải ln ln có nghĩa mang tính gợi nhớ, cần phải viết hoa, viết thường cách hợp lý Boolean values in decision structure: trình bày logic Phép gán Các vịng lặp, khơng q rắc rối, nhiều vịng lặp Mỗi ngơn ngữ có loại chuẩn riêng Mỗi nhóm / cơng ty tự đặt chuẩn coding cho Nếu có chuẩn code, giúp dễ dàng đọc code thành viên, ráp code dễ dàng, giúp làm việc nhóm trơi chảy o Sau có chuẩn code, phải xác định công cụ cần thiết để xây dựng pm o Cuối cần có nơi để lưu trữ mã nguồn, để sử dụng cho tất thành viên nhóm Cái quan trọng xây dựng pm IDE (Mơi trường phát triển tích hợp) IDE thơng thường bao gồm cơng cụ lập trình để biên tập mã nguồn, trình biên dịch / thơng dịch, cơng cụ để build, cuối cần có chương trình để debug Khả tra từ điển phần quan trọng IDE, IDE tự động viết mã nguồn ta phát sinh giao tác xử lý Câu 2: Trình bày khái niệm lợi ích quản lý phiên Quản lý phiên ghi lại tất thay đổi người dùng thao tác - Đối với người làm việc độc lập: + Có thể dễ dàng quay trở phiên cũ + Dễ dàng kiểm tra lại code trước commit lên thùng chứa + Đồng nhiều máy tính - Đối với làm việc tập thể: + Dễ dàng tập trung liệu quản lý cấu hình tập tin có thùng chứa + Dễ dàng đồng liệu máy tính + người tự làm phần việc mà ko làm phiền người khác Xây dựng pm + Merge cách tự động - Lợi ích phân quyền quản lý phiên bản: + Dễ dàng phân nhánh trộn lẫn + Đơn giản hóa việc quản lý phân quyền + Ngắt kết nối hoạt động + Dễ dàng xem, cập nhật liệu, so sánh khác phiên + Có thể tạo patch để làm việc không kết nối mạng + Tạo nhánh cho dự án dễ dàng từ giúp cho developer dễ dàng làm việc với quản lý dự án - Các khái niệm Quản lý phiên bản: + The Repository: thùng chứa đóng vai trị kho lưu trữ thơng tin hình thức hệ thống tập tin, cho phép nhiều client kết nối vào lấy liệu để đọc ghi Thùng chứa tạo đc quy định phiên + Working Copy: Phiên làm việc: tập tin liệu mà người dùng làm việc Có trạng thái: (state) Unchanged, and current Locally changed, and current Unchanged, anh out-of-date Locally changed, and out-of-date + Workspaces: Môi trường làm việc developer tách biệt khỏi Thùng Chứa cô lập với người sử dụng khác + Revision: Phiên Thùng Chứa Revision Numbers: số thứ tự đánh dấu cho phiên Revision Keywords: Base: Phiên vừa đc lấy về, chưa thay đổi Head: Phiên thùng chứa Committed: Phiên file vừa đc đưa vào thùng chứa Xây dựng pm Mixed Revision: Các file thùng chứa có phiên khác Revision Dates: Ngày mà phiên đc đưa vào thùng chứa + Deltas: Sự khác phiên + CheckOut / Update: thực lấy mã nguồn từ Thùng Chứa để thao tác với file liệu + Modify / Edit: Thao tác thay đổi mã nguồn môi trường làm việc developer (workspace) + Check In / Commit: Thực để lưu lại thay đổi liệu đưa vào Thùng Chứa + Conflict: Là tình trạng mà người dùng commit liệu lên Thùng Chứa thời điểm + Lock-Modify-Unlock: Là thao tác dùng để giải tình trạng Conflict Khi người dùng checkout file liệu thực thao tác lock Thùng Chứa lại để ko cho phép người dùng khác check out file liệu từ Thùng chứa Sau thực chỉnh sửa mã nguồn commit lại lên thùng chứa thực Unclock để người dùng khác check out sử dụng file liệu + Copy-Modify-Merge: Là thao tác để kết hợp thay đổi phiên làm việc (working copy) khác thành phiên làm việc + Branch: Là nhánh trình phát triển, tồn độc lập với nhánh phát triển khác + Merging Branches: Là kết hợp thay đổi nhánh vào nhánh khác + Tag/Label: Là điểm ảnh dự án thời điểm Thường dùng để back up file gặp vấn đề + Exclusive Development: Hệ thống cho phép người dùng thời điểm phép làm việc file liệu + Simultaneous Development: Hệ thống cho phép nhiều người làm việc working copy từ file liệu Và hệ thống merge phiên làm việc lại với + Central Repository: Thùng chứa tập trung cho phép người có quyền kết nối lấy liệu Xây dựng pm Thùng chứa tập trung đơn giản dễ sử dụng, thao tác liệu thùng chứa tập trung ảnh hưởng chung đến tất người sử dụng + Distributed Repositories: Là Thùng chứa phân bổ, người dùng có Thùng chứa riêng, kết nối với để cập nhật thay đổi Đối với loại Thùng chứa phân bổ, liệu thùng chứa bị ko ảnh hưởng đến thùng chứa khác Tuy nhiên tốn không gian cho loại thùng chứa +Proxied Repositories: Thùng chứa trung gian bao gồm thùng chứa tập trung nhiều thùng chứa phân bổ Thùng chứa trung gian gây tốn tài nguyên khơng gian +Remote Access To The Repository: Là hình thức truy cập vào thùng chứa Internet Câu 3: Trình bày câu lệnh để làm việc với Subversion Các câu lệnh để làm việc với Subversion -svn: + add: Lệnh đánh dấu việc thêm file hay thư mục vào hệ thống Subversion phiên làm việc File thư mục thực thêm vào Thùng chứa ta thực tiếp lệnh "svn commit" $ svn add PATH + blame: Lệnh xuất nội dung tập tin mà người dùng muốn xem, với tên tác giả số thứ tự phiên đánh dấu dòng nội dung tập tin Tên tác giả username người dùng thay đổi dung dòng tập tin sau cùng, số thứ tự phiên cho biết việc thay đổi nội dung tập tin xảy dòng $ svn blame PATH or $ svn blame URL + cat: Giống với lệnh svn blame nội dung xuất theo dạng chuẩn, ko có đánh dấu số thứ tự phiên blame $ svn cat PATH or Xây dựng pm $ svn cat URL + checkout (co): lệnh lấy phiên tùy chọn từ thùng chứa + cleanup: + commit (ci): đưa file modify lên thùng chứa + copy (cp): + delete (del, remove, rm): + diff (di): Lệnh xuất điểm khác phiên file liệu $ svn diff revision N:M URL or $ svn diff URL1@N URL2@M or $ svn diff revision N:M URL1 URL2 + import: Lệnh dùng để đưa file chưa đánh dấu phiên lên Thùng chứa Khác với lệnh svn add, lệnh đc thực thi mà ko phải chờ đánh dấu phiên làm việc sử dụng lệnh svn commit để đưa file lên thùng chứa Lệnh thường dùng để đưa liệu vào thùng chứa + lock: lệnh khóa file để ko cho khác làm việc + log: Lệnh xuất lịch sử thay đổi nội dung liệu phiên + merge: + mkdir: tạo thư mục + resolved: xử lý bị confict + revert: Lệnh dùng để quay trở phiên + status (stat, st): Lệnh để xuất trạng thái tập tin liệu thùng chứa vừa đc lấy máy người dùng, option -v kèm để yêu cầu xuất đầy đủ thông tin bao gồm số thứ tự phiên tác giả Xây dựng pm + switch (sw): + update (up): cập nhật phiên từ thùng chứa -svnadmin: + create: -svnlook: + info: + tree: In thư mục/tập tin tương ứng phiên thùng chứa định $ svnlook tree -r REViSION REPOSITORY [PATH] - Tạo Thùng chứa: + Dùng lệnh mkdir để tạo thư mục làm thùng chứa + Dùng lệnh svnadmin create [PATH thư mục vừa tạo làm thùng chứa] - Tạo trunk thùng chứa vừa tạo: + Dùng lệnh svn mkdir [URL: http://localhost/svn//trunk] -m ""//option dùng để gửi thông điệp kèm theo - Tạo branches thùng chứa vừa tạo: + Dùng lệnh svn mkdir [URL: http://localhost/svn//braches] -m ""//option dùng để gửi thông điệp kèm theo - Tạo tags thùng chứa vừa tạo: + Dùng lệnh svn mkdir [URL: http://localhost/svn//tags] -m ""//option dùng để gửi thông điệp kèm theo - Đưa source code chưa đánh dấu phiên lên Thùng chứa + Từ máy người dùng thứ 1, PATH đường dẫn đến thư mục chứa source code + Dùng lệnh svn import [URL thư mục nhận source code] -m "" //Lệnh svn import khác svn add chỗ lệnh thực thi mà ko cần đến phiên làm việc (working copy) Xây dựng pm //ai ko hiểu lệnh pm Th :D - Từ máy người dùng thứ lấy liệu từ thùng chứa về: + Từ máy người dùng thứ 2, PATH đường dẫn đến thư mục chứa liệu đc lấy + Dùng lệnh: svn checkout [URL thư mục chứa source code localhost] + Hoặc lệnh: svn co [URL thư mục chứa source code localhost] - Từ máy người dùng: Commit liệu lên thùng chứa + PATH đường dẫn đến thu mục chứa liệu muốn commit + Dùng lệnh: svn commit -m "" [PATH/URL/tên file] + Hoặc dùng lệnh: svn update //lệnh ko cần option theo sau tự động tìm thay đổi phiên làm việc để update với phiên cũ + Kiểm tra lại liệu update/commit lên thùng chứa: Dùng lệnh: svn log [URL/PATH/tên file] Hoặc dùng lệnh: svn diff revision BASE:HEAD/PREV:COMMITTED/ [URL/PATH/tên file] Hoặc dùng lệnh: svn diff [tên file] //lệnh tự so sánh revision file có thùng chứa với phiên làm việc máy người dùng Hoặc dùng lệnh: svn blame [PATH/URL] Hoặc dùng lệnh: svn cat [PATH/URL] Hoặc dùng lệnh: svn status [PATH] //Mọi người tự coi định nghĩa lệnh để so sánh khác lệnh nha - Thao tác Lock-Modify-Unlock: + PATH đường dẫn đến thư mục chứa file liệu muốn check out từ thùng chứa + Dùng lệnh: svn co [URL/PATH] username để check out/update liệu từ thùng chứa máy // username option thêm cần Xây dựng pm + Dùng lệnh: svn lock [URL/PATH file muốn lock] //Khi người dùng khác dùng lệnh: svn commit để gửi file mà người dùng trc lock xuất thơng báo lỗi - Thêm / Xóa + PATH đường dẫn đến thư mục chứa file liệu muốn commit lên Thùng chứa + Thêm: dùng lệnh: svn add [URL/PATH/Tên file muốn thêm] //để đánh dấu file muốn thêm phiên làm việc máy người dùng sau dùng lệnh: svn commit -m "" để thực thi lệnh thêm + Xóa: dùng lệnh: svn delete [URL/PATH/Tên file muốn xóa] //để đánh dấu file muốn xóa phiên làm việc máy người dùng sau dùng lệnh: svn commit -m "" để thực thi lệnh xóa - Giải tình trạng Conflict: Tình trạng xảy người dùng commit liệu lên Thùng chứa thời điểm Do có người phép commit lên người cịn lại gặp thơng báo lỗi conflict + Để giải tình trạng người dùng bị thông báo lỗi conflict phải dùng lệnh: svn update svn co để lấy phiên từ thùng chứa máy Sau dùng lệnh: svn resolved [PATH/URL/Tên file mà người dùng thứ chỉnh sửa] sau dùng tiếp lệnh: svn commit -m "" để commit file lên Thùng Chứa - Tạo tag/branch: + Tạo thư mục Tag/Branch Thùng chứa lệnh: svn mkdir [URL] -m "" + Xem tập tin thư mục thùng chứa phiên lệnh: svnlook tree [PATH] + Dùng lệnh: svn copy [URL1] [URL2] để chép liệu từ URL1 sang URL2 Với URL2 đường dẫn đến thư mục Tag / Branch tạo trc - Merge Branch với Trunk: Xây dựng pm + Xem thư mục: svnlook tree [PATH] + Từ máy người dùng thứ nhất: update lên phiên làm việc nhất: svn update //Chú ý revision + Từ máy người dùng thứ 2: check log: svn log //để kiểm tra revision máy người dùng thứ + Nếu có khác revision dùng lệnh: svn merge -r1:2 [URL2] //ở option r1:2 số revision người dùng có revision nhỏ ngc lại + Giải conflict lệnh: svn resolved [Tên file bị conflict] + Commit lên thùng chứa: svn commit -m "" Câu 4: Trình bày tính thao tác Visual SourceSafe Các tính năng: - - Resource Management: Quản lý mã nguồn thùng chứa sở liệu Workspaces: Cung cấp ko gian làm việc riêng cho thành viên Cooperation Support: Quản lý ảnh hưởng lẫn thành viên Build and release Management: Quản lý việc build release sản phẩm để đảm bảo cấu hình sản phẩm đc đánh dấu release để tiện cho việc bảo trì sử dụng lại Parallel development: Có khả phát triển song song nhiều phiên project Resource Versioning: Bảo trì version khác Resource History Management: Quản lý, đánh dấu phiên dự án Các thao tác bản: - - Tạo CSDL o Trong cửa sổ VSS Administrator -> New Database -> chọn nơi chứa CSDL đặt tên cho CSDL -> chọn chế độ quản lý: Lock-ModifyUnlock/ Copy-Modify-Merge Thêm User vào hệ thống o Trong cửa sổ VSS Administrator -> Menu User -> Add User Quản lý dự án Xây dựng pm - o Dùng Username password Log on vào hệ thống -> Ở hình VSS Explorer -> right click vào folder muốn lưu trữ Project -> chọn Set working folder -> Lấy liệu từ thùng chứa -> Get Kết hợp với Visual Studio.Net o Trong cửa sổ Solution Explorer VS -> right click vào Project chọn Add Solution to Source Control -> right click vào file muốn check out/check in > chọn Check out/Check in o Trong cửa sổ Solution Explorer VS -> right click vào file muốn view History -> chọn View History để xem version Câu 5: Trình bày khái niệm NAnt Nêu cách build dự án NAnt Câu 6: Trình bày thành phần NAnt Build Script Câu 7: Trình bày tác vụ NAnt Câu 8: Trình bày khái niệm MSBuild Nêu cách build dự án MSBuild 1) Khái niệm: MSBuild chế biên dịch khơng có giao diện người dùng, tính dấu bên Công việc biên dịch phụ thuộc vào tệp dựa theo chuẩn XML với phần mở rộng proj 2) Cách build dự án: //Bạn biết viết thêm giùm Câu 9: Trình bày thành phần MSBuild Build Script 1) Properties: khái niệm gồm cặp khóa giá trị xen //Cịn nhiều bạn viết thêm giùm 2) Items: thẻ định phần kèm theo build Xây dựng pm a Thẻ ItemGroup: nhóm nhiều thẻ Item lại với b Thành phần Item: Type: xác định kiểu tập tin Include: dưa đường dẫn tập tin Exclude: liệt kê ko muốn kèm theo build Condition: yêu cầu đưa build 3) Targets: xe thùng chứa Task thực thi a Thuộc tính Name: thuộc tính bắt buộc Thuộc tính cần đến ta gọi Target thực thi b Một số thuộc tính khác: Inputs, Outputs, DependsOnTargets, Condition c Predefined Target: target định nghĩa sẵn sử dụng chúng d DefaultTargets: target định build Nếu ko có target thực thi 4) Tasks: đoạn code, lớp để thực thi hành động build chương trình, kế thừa phương thức MSBuild cung cấp 5) MSBuild Logging: nhật kí ghi lại trình Build MSBuild Logger: chương trình cho phép ghi nhận lại kiện, thông điệp, lỗi xảy hay cảnh báo xảy trình build 6) MSBuild Batching: MSBuild có khả chia tập hợp items thành mục khác dựa item metadata – gọi batch, thực task hay target cho batch a Task batching: cho phép bạn làm đơn giản file project bạn cách chia tập hợp item thành batches truyền batch vào task riêng biệt b Target batching: Msbuild kiểm tra input output target trước thực target Câu 10: Trình bày tác vụ MSBuild (cùng tham số) 1) Copy: thực copy file vào thư mục SourceFiles: file cần copy (nguồn) DestinationFolder: thư mục đích FilesCopied: tập chứa file copy thành công Xây dựng pm 2) Csc: compile project với source C# Source: file source C# TargetType: định dang file output module, library hay file winexe 3) Vbc: tương tự Csc dùng compile project viết VB 4) Delete: xóa file Files: file cần xóa DeletedFiles: file xóa thành cơng 5) Exec: chạy chương trình ứng dụng từ bên ngồi Command: cho biết command cần thực đường dẫn đến file thực thi WorkingDirectory: đường dẫn thư mục nơi command thự 6) MakeDir: tạo thư mục Directories: tên thư mục cần tạo đường dẫn CreatedDirectories: gồm thư mục tạo thành công 7) RemoveDir: xóa thư mục Directories: thư mục cần xóa RemovedDirectories: tên thư mục xóa thành công 8) Message: đưa console chuỗi thông báo 9) MSBuild: build project MSBuild khác Project: project MSBuild cần build Properties: properties tương ứng Targets: target build project ta cần build Câu 11: Trình bày quy tắc tối ưu hóa mã nguồn a Biến - Sử dụng biến mục đích cần dùng Thời gian ràng buộc sớm hơn, độ linh hoạt thấp độ phức tạp giảm b Tránh lồng phân cấp 3-4 mức Xây dựng pm c Làm thứ đơn giản tốt d Độ phức tạp Complexity: Code đơn giản tốt +Bắt đầu Với câu lệnh if, while, repeat, for, and, or cộng +Độ phức tạp từ 0-5: chấp nhận dc từ 6-10: rút gọn code từ 10: tách hàm e Biểu thức Boolean: Phải trình bày theo logic Câu 12: Trình bày khái niệm, lợi ích hạn chế tích hợp liên tục 1) Khái niêm : - Lấy mã nguồn - Phát triển chức - Tạo build máy - Chạy unit test auto - Đưa mả nguồn lên thùng chứa - Build tích hợp 2) Build có thay đổi : - Viết script tự động - Thực phiên build - Tách biệt build script khỏi IDE (vs, netbean) - Tập trung hóa tài nguyên - Tạo cấu trúc thư mục hợp lý - Build có lỗi phải dừng (build fail) - Build phải chạy mơi trường - Sử dụng máy build tích hợp riêng - Sử dụng server tích hợp lien tục riêng - Chạy build script tay - Chạy build nhanh - Build theo cơng đoạn 3) Lợi ích - Giảm rủi ro - Dễ dàng phát xóa lỗi - Những build ln cập nhật - Tiến trình quản lí 4) Rủi ro - Khó khăn việc quản lý nhiều threads chạy ứng dụng Xây dựng pm Câu 13: Trình bày quy tắc tích hợp liên tục - - Build pm mổi thay đổi Tích hợp csdl lien tục Test liên tục Thanh tra lien tục ( continous inspection ) + Giảm độ phức tạp code + Xem xét phần design + Giữ vững code chuẩn + Loại bỏ code lặp lại + Xem xét mức độ truy cập code Triển khai lien tục (continous deployment) + Release làm việc thời điểm, mơi trường + Đánh dấu phiên + Sản phẩm triển khai mơi trường + Đánh dấu tồn tài nguyên + Chạy tất test + Tao feedback + Tạo khả rollback Câu 14: Trình bày khái niệm Unit Test Nêu cách viết Unit Test - Tổng quan unittest: Sau viết code xong, lập trình viên phải thực việc kiểm tra xem code viết có không Công việc gọi unit test Unit test theo cách hiểu đơn giản kiểm tra phận nhỏ source code chương trình, từ phận nhỏ này, ta lại kiểm tra unit lớn có sử dụng unit nhỏ kiểm tra Một số thơng tin unit test: Unit test thực lập trình viên Bộ phận QA thực test khơng phải unit test Mọi lập trình viên phải thực báo cáo kết unit test trước ,trong sau develop Unit test thực tự động, sử dụng đoạn code gọi test script,quá trình gọi automated unit testing Xây dựng pm Trong automated unit testing, ta viết hàm kiểm tra, gọi hàm cần kiểm tra Nếu kết mong đợi kết pass, ngược lại failed Sau thực thi tất hàm kiểm tra, ta có bảng tóm tắt kết quả: Pass, Failed lý Automated unit test scrip lưu chạy lại cách dễ dàng mã nguồn thay đổi Nunit framework giúp thực unit testing NET Ngồi Nunit cịn có Junit cho java, cppunit cho cpp, phpunit cho php - Cách viết Unit test: ta lấy Nunit làm ví dụ Cấu hình : Tạo project Unittest Sau vào File –Open – Project solution – Chọn Project chọn để test (nhớ click chọn vào Add solution) Trong project test ,click phải vào chữ Reference - add reference,sau tìm file nunit.framework thẻ NET Thêm thư viện: using NUnit.Framework vào class project unittest Add dependency cho project unittest (check vào project chọn để test) Cuối tiến hành add reference file dll project chọn để test vào project unittest Viết test: Thêm attribute [TestFixture] vào trước class định nghĩa ,attribute báo cho Nunit biết lớp unit test Khởi tạo đối tượng dùng để test Việc khởi tạo nằm hàm Setup () có thuộc tính [TestFixtureSetUp] đặt phía trước hàm SetUp() Sau test xong,các đối tượng phải hủy ,công việc hủy nằm hàm TearDown() ,và nằm thuộc tính [TestFixtureTearDown] Ta bắt đầu viết test với thuộc tính [Test] đầu dịng Xây dựng pm Các hàm Nunit hỗ trợ việc kiểm tra kết : AreEqual,Less/Greater,GreaterOrEqual /LessorEqual ,IsNull/IsNotNull… result kết mong đợi mà tự gán điều kiện yêu cầu, hàm test Pass ngược lại sai Failed Thuộc tính ExpectedException (typeof(DivideByZeroException)) dùng để báo biết phương thức Divide trả exception DivideByZeroException.Khi exception xảy ,test case pass Thực thi test : vào Nunit – File – Open Project chọn file dll nằm thư mục debug project.Nhấn Open.Sau chạy xong, cho ta biết test pass,test lỗi lý Câu 15: Trình bày loại Mock Objects Nêu phương pháp sử dụng chúng Mock object (MO) đối tượng ảo mô tính chất hành vi giống hệt đối tượng thực truyền vào bên khối mã vận hành nhằm kiểm tra tính đắn hoạt động bên - Phân loại mock: Static mock: viết tay hay phát sinh tự động bước chương trình Synamic mock: phụ thuộc vào proxy interface - Cách sử dụng mock object: ta ví dụ sử dụng Nunit Để sử dụng mock, ta phải add thư viện vào, Nunit thư việc nunit.mocks.dll using package Nunit.Mock.Nunit cung cấp lớp DynamicMock dùng để tạo mock Để sử dụng mock, ta có bước sau : o Bước 1: Bảo cho mock biết đối tượng giả lập có hàm kết hàm Ví dụ : personRepositoryMock.ExpecAndReturn (“GetPeople”,peopleList) Ở ta nói với mock đối tượng giả lặp có hàm tên GetPeople kết trả hàm peopleLisst o Bước 2: Sử dụng mock: Sauk hi thiết lập mock xong, ta lấy đối tượng giả lập câu lệnh : (IPersonReposotory) personRepositoryMock.MockInstance Xây dựng pm Câu lệnh cho ta đối tượng giả lập đối tượng IPersonReposotory Khi đối tượng service gọi hàm GetPeople từ đối tượng này, cho kết peopleList Câu 16: Trình bày khái niệm trình làm việc WiX Wix công cụ cho phép tạo file cài đặt window từ file đặt tả xml Source code wix viết theo dạng chuẩn xml Ta sử dụng Wix môi trường: Command line Visual Studio IDE Wix dùng công cụ candle.exe xử lý trước tập tin đầu vào đuôi wxs, chuyển chúng sang dạng chuẩn tài liệu xml dựa giảng đồ Wix (wix.xsd) Sau tập tin nguồn wxs biên dịch thành tập tin wixobj Tập tin wixobj tổng hợp nguồn cung cấp tham số đầu vào, liệu thô để cung cấp cho cơng cụ Light tìm kiếm đóng gói Tiếp theo công cụ Light, xử lý nhiều tập tin wixobj Light lấy liệu từ tập tin mô tả tạo cài đặt MSI MSM Trình liên kết bắt đầu việc tìm kiếm tập tin wixobj cung cấp dòng lệnh để tìm entry section Nếu có nhiều entry session tìm thấy, Light thất bại trả lỗi (không thể file cài đặt từ trình liên kết) Sau tìm thấy tất tham số đầu vào, Wix hồn tất việc đóng gói cài đặt cho pm Câu 17: Trình bày thành phần WXS Các thẻ quan trọng file Wxs: - : thẻ gốc - : chứa thơng tin sản phần cần build để tạo file msi : chứa thơng tin sản phẩm cần build để tạo file msm : chứa thông tin sản phẩm cần build để tạo file msp - :chứa thông tin đơn vị cần thêm vào file cài đặt Ta xét đơn cử thẻ Product : - Các thuộc tính thẻ : ID: mã sản phẩm Xây dựng pm Codepage: mã số nguyên trang code tên trang web Langue: mã ngôn ngữ Manufacture: tên nhà sản xuất Name: tên sản phẩm UpgradeCode: mã nâng cấp sản phẩm Version: Phiên sản phẩm - Các thẻ thẻ : Chứa thơng tin gói cài đặt : mô tả nơi chứa file cài đặt : Thông tin thư mục chứa file cài đặt,trong directory cịn có thẻ , có thẻ : component : them chiếu đến thẻ khác : chứa thông tin đơn vị cài đặt nhỏ : chứa thông tin icon Câu 18: Trình bày cho ví dụ minh họa Buffer overflow, SQL Injection cách phòng chống a Buffer overflow: khối lượng liệu gửi cho ứng dụng vượt lượng liệu cấp phát khiến cho ứng dụng không thực thi câu lệnh dự định mà thay vào phải thực thi đoạn mã hacker đưa vào hệ thống Hacker làm tràn đệm cho trỏ lệnh trỏ đến đoạn mã tạo giao diếp dịng lệnh(commandline ,ví dụ /bin/sln) Sau chương trình bị tràn đệm ,nó tìm đến địa đoạn mã để thực thi tiếp Nếu chương trình chạy quyền người quản trị ,hacker có giao tiếp dịng lệnh với quyền tương đương điều khiển tồn hệ thống + Ví dụ : Xây dựng pm Ta có đoạn code sau : char buffer[256] strcpy (buffer,ch) Buffer cấp phát 256 byte hàm func buffer nhận 257 kí tự từ ch xảy lỗi tràn đệm + Cách phòng chống : Người thiết kế pm cần phải kiểm tra kĩ kích thước liệu trước sử dụng , Sử dụng vùng nhớ cấp phát động thay cho tĩnh lưu trử liệu,sử dụng kĩ thuật chống tràn stack stack mashing protection ,data execute prevention.Sử dụng kĩ thuật kiểm tra sâu gói tin Tránh dùng hàm khơng cung cấp kiểm tra giới hạn ngôn ngữ C ,thay vào hàm tương đương :fgets,strncpy,strncat… b SQL Injection Là kĩ thuật cho phép khai thác lỗ hổng bảo mật tồn sở liệu ứng dụng thi hành câu lệnh SQL bất hợp pháp.Từ tồn quyền sở liệu ứng dụng ,thậm chí server mà ứng dụng chạy + Ví dụ : Lúc đăng nhập : hacker điền vào user name password : „OR‟a=a‟,câu lệnh select sau: Select from user where username = „‟ OR‟a=a‟ and password = „‟ OR „a=a‟ -> đăng nhập hợp lệ + Phịng chống: Kiểm sốt chặt chẽ liệu nhập :xây dựng hàm để thay dấu nháy đơn thành nháy kép.Tránh dùng đến quyền quản trị hệ thống „sa‟ hay „dbo‟.Sử dụng tham số liên tục : @user,@password code ,sau người dùng truyền chuỗi kí tự tùy ý vào tham số Câu 19: Trình bày cho ví dụ minh họa CSRF, Session fixation, Session poisoning cách phòng chống a CSRF: Xây dựng pm - CSRF ? Là kĩ thuật công cách sử dụng quyền chứng thực người sử dụng website khác.Các ứng dụng web hoạt động theo chế nhận câu lệnh http từ người sử dụng,sau thực thi câu lệnh CSRF lừa trình duyệt người dùng gửi câu lệnh http đến ứng dụng web.Trong trường hợp phiên làm việc người dùng chưa hết hiệu lực câu lệnh dc thực với quyền chứng thực người sử dụng CSRF dc gọi "session riding", "XSRF" - VD CSRF: (tức thơng qua hình ảnh hay cách ,nhử người dùng click vào link ẩn ,link truyền tác vụ chứng thực nạn nhân xử lý tài khoản trang web mà hacker muốn hack) Bob duyệt qua diễn đàn u thích thường lệ.Một người dùng khác,Malory ,đăng tải thông điệp lên diễn đàn Giả sử Malory có ý đồ k tốt muốn lấy tiền từ người có tài khoản ngân hàng Bob.Malory tạo thơng báo,trong có chèn đoạn code có hình ảnh kích thước 0x0 pixel Giả sử Bob vừa truy cập vào tài khoản ngân hàng chưa thực logout để kết thúc.Trình duyệt Bob gửi câu lệnh http get đến địa lưu thẻ "