-
Thông tin
-
Quiz
Công nghệ phần mềm ôn tập cuối kỳ | Công nghệ phần mềm | Trường Đại học Công nghiệp TP.HCM
Công nghệ phần mềm ôn tập cuối kỳ môn Công nghệ phần mềm của Trường Đại học Công nghiệp Thành phố Hồ Chí Minh. Hi vọng tài liệu này sẽ giúp các bạn học tốt, ôn tập hiệu quả, đạt kết quả cao trong các bài thi, bài kiểm tra sắp tới. Mời các bạn cùng tham khảo chi tiết bài viết dưới đây nhé.
Công nghệ phần mềm (Software Engineering) 28 tài liệu
Đại học Công nghiệp Thành phố Hồ Chí Minh 405 tài liệu
Công nghệ phần mềm ôn tập cuối kỳ | Công nghệ phần mềm | Trường Đại học Công nghiệp TP.HCM
Công nghệ phần mềm ôn tập cuối kỳ môn Công nghệ phần mềm của Trường Đại học Công nghiệp Thành phố Hồ Chí Minh. Hi vọng tài liệu này sẽ giúp các bạn học tốt, ôn tập hiệu quả, đạt kết quả cao trong các bài thi, bài kiểm tra sắp tới. Mời các bạn cùng tham khảo chi tiết bài viết dưới đây nhé.
Môn: Công nghệ phần mềm (Software Engineering) 28 tài liệu
Trường: Đại học Công nghiệp Thành phố Hồ Chí Minh 405 tài liệu
Thông tin:
Tác giả:



















Tài liệu khác của Đại học Công nghiệp Thành phố Hồ Chí Minh
Preview text:
lOMoARcPSD|40651217
Phần lý thuyết
Chủng: 1, 2
Tuyền: 3, 5
Kiệt: 4
Hạn trước 20h T3
Nội dung thi cuối kỳ
Môn: Công nghệ phần mềm
Thời gian: 60 phút
Tham khảo tài liệu là 4 trang A4, viết bằng chữ viết tay của chính mình Nội dung thi:
Phần 1: Lý thuyết
- Thiết kế kiến trúc
- Thiết kế giao diện
- Kiểm thử phần mềm
- Quản lý dự án phần mềm
- Quản lý chất lượng phần mềm
Phần 2: Bài tập
- Thiết kế một giao diện đáp ứng được đặc tả cho trước và không vi phạm 10 kinh nghiệp thiết kế của Nielsen
- Thiết kế các trường hợp test (test case), dữ liệu test (test data) cho một giao diện (kiểm thử hộp đen) theo đặc tả cho trước.
- Thiết kế các trường hợp test (test case), dữ liệu test (test data) cho một thuật toán cho trước (kiểm thử hộp trắng)
- Tính các độ đo sản phẩm phần mềm từ đặc tả cho trước (cắt bỏ)
Gựi ý ôn tập
Phần 1: Lý thuyết – một số câu hỏi tham khảo
1. Thiết kế kiến trúc
- Kiến trúc phần mềm là gì?
- Là một sự tổ chức có tính căn bản của một hệ thống chứa những thành phần, những mối quan hệ lẫn nhau của các thành phần này và của các thành phần này với môi trường. Nó cũng chứa đựng những nguyên lý định hướng cho việc thiết kế và tiến hóa kiến trúc. Ngoài ra nó còn có tính tổng thể.
- Tại sao phải một phần mềm nên có một kiến trúc tường minh?
- Giao tiếp với các stakeholder: Kiến trúc là biểu diễn mức cao của hệ thống, được sử dụng để thảo luận với các stakeholder.
- Phân tích hệ thống: Là cách để phân tích xem liệu hệ thống có đáp ứng được các yêu cầu phi chức năng hay không.
- Tái sử dụng: Kiến trúc có thể được tái sử dụng cho nhiều hệ thống khác
- Liệt kê ba mẫu kiến trúc (Architectural Pattern) mà bạn biết. Mô tả sơ lược một mẫu kiến trúc mà bạn thích (mô tả, khi nào dùng, ưu điểm, nhược điểm) - Kiến trúc MVC(Model – View - Controller):
- Kiến trúc phân tầng(Layered)
- Kiến trúc Repository (Repository Architecture)
- Kiến trúc Client – Server
- Kiến trúc Pipe and Filter
- Mẫu kiến trúc MVC (Model-View-Controller) phù hợp cho những ứng dụng dạng nào? Tại sao?
- Mô hình kiến trúc MVC (Model-View-Controller) thích hợp cho nhiều loại ứng dụng web và desktop. Đặc biệt, nó phù hợp với các ứng dụng có quy mô lớn hoặc có nhiều tính năng phức tạp.
- Giải thích(nêu 3 - 4):
+ Phân chia rõ ràng các phần của ứng dụng: MVC tách biệt ứng dụng thành ba phần chính: Model, View và Controller. Model đại diện cho dữ liệu và logic xử lý,
View là giao diện người dùng và Controller là thành phần điều khiển. Việc này
giúp dễ dàng quản lý và phát triển từng phần một mà không làm ảnh hưởng đến các phần khác.
+ Tính tái sử dụng cao: Do mỗi phần trong MVC có trách nhiệm riêng biệt, nó tạo điều kiện cho việc tái sử dụng mã code một cách hiệu quả. Model có thể được sử dụng lại ở nhiều nơi mà không cần thay đổi, View có thể được thay đổi mà không ảnh hưởng đến Controller và ngược lại.
+ Dễ dàng bảo trì và mở rộng: Với cấu trúc rõ ràng và sự phân chia rõ ràng giữa các phần, việc bảo trì và mở rộng ứng dụng trở nên dễ dàng hơn. Khi cần thêm tính năng mới, bạn chỉ cần tập trung vào việc mở rộng một trong ba phần mà không làm ảnh hưởng đến các phần khác.
+ Tính linh hoạt trong thiết kế giao diện: Với phần View riêng biệt, bạn có thể dễ dàng thay đổi giao diện mà không ảnh hưởng đến logic xử lý hay dữ liệu. Điều này cho phép bạn thích ứng với các yêu cầu thiết kế mới mà không cần phải thay đổi toàn bộ ứng dụng.
+ Quản lý dữ liệu hiệu quả: MVC giúp quản lý dữ liệu một cách hiệu quả bằng cách đưa logic xử lý dữ liệu vào phần Model. Điều này giúp tránh việc trùng lặp mã code và đảm bảo tính nhất quán của dữ liệu trong toàn bộ ứng dụng.
Mẫu kiến trúc phân tầng (Layered) phù hợp cho những ứng dụng dạng nào? Tại sao?
- Mô hình kiến trúc phân tầng (Layered Architecture) thích hợp cho nhiều loại ứng dụng, đặc biệt là những ứng dụng có quy mô lớn, yêu cầu tính bảo mật cao và cần có sự phân chia rõ ràng giữa các lớp chức năng.
- Giải thích(nêu 3 - 4):
+ Phân chia rõ ràng chức năng: Kiến trúc phân tầng chia ứng dụng thành các lớp hoặc tầng với mỗi lớp có trách nhiệm cụ thể. Thông thường, các lớp bao gồm Presentation Layer (tầng trình bày), Business Logic Layer (tầng logic kinh doanh),
Data Access Layer (tầng truy cập dữ liệu) và có thể có nhiều lớp khác như Service Layer, Utility Layer, và Persistence Layer. Việc này giúp rõ ràng hóa và tổ chức mã nguồn một cách có hệ thống.
+ Dễ dàng bảo trì và mở rộng: Mỗi lớp trong kiến trúc phân tầng có trách nhiệm cụ thể, giúp dễ dàng trong việc bảo trì và mở rộng ứng dụng. Khi cần thay đổi một tính năng cụ thể, bạn chỉ cần can thiệp vào lớp tương ứng mà không làm ảnh hưởng đến các phần khác của ứng dụng.
+ Tính tái sử dụng mã code: Mỗi lớp có thể được tái sử dụng trong các phần khác nhau của ứng dụng hoặc trong các dự án khác, giúp giảm thiểu việc viết lại mã code và tăng hiệu suất phát triển.
+ Tính linh hoạt và mở rộng: Với cấu trúc phân tầng, bạn có thể dễ dàng mở rộng hoặc thay đổi một lớp mà không ảnh hưởng đến các lớp khác. Điều này cho phép ứng dụng thích ứng với các yêu cầu mới một cách linh hoạt.
+ Tính bảo mật: Kiến trúc phân tầng cung cấp một môi trường bảo mật tốt bằng cách phân chia dữ liệu và logic xử lý thành các lớp khác nhau. Điều này giúp kiểm soát quyền truy cập vào dữ liệu và đảm bảo tính bảo mật của hệ thống.
Mẫu kiến trúc Repository phù hợp cho những ứng dụng dạng nào? Tại sao?
- Mô hình kiến trúc Repository thích hợp cho nhiều loại ứng dụng, đặc biệt là các ứng dụng có yêu cầu về quản lý và truy cập dữ liệu một cách hiệu quả.
- Giải thích(nêu 3 - 4):
+ Ứng dụng có yêu cầu truy cập dữ liệu phức tạp: Mô hình Repository giúp tạo ra một lớp trung gian (Repository) giữa lớp Logic (hoặc Service) và lớp truy cập dữ liệu (Data Access Layer). Điều này giúp che giấu chi tiết về cách dữ liệu được lấy và lưu trữ, giúp đơn giản hóa việc truy cập dữ liệu phức tạp như truy vấn phức tạp, kết hợp dữ liệu từ nhiều nguồn, hoặc thao tác với nhiều bảng trong cơ sở dữ liệu. + Tính linh hoạt trong việc thay đổi cơ sở dữ liệu: Với mô hình Repository, lớp Logic hoặc Service chỉ giao tiếp thông qua các phương thức của Repository mà không cần biết chi tiết về cơ sở dữ liệu đằng sau. Điều này giúp dễ dàng thay đổi hoặc chuyển đổi cơ sở dữ liệu mà không ảnh hưởng đến các phần khác của ứng dụng.
+ Tính tái sử dụng mã code: Repository cung cấp một cách tiếp cận thống nhất cho việc truy cập dữ liệu trong toàn bộ ứng dụng. Điều này giúp tăng tính tái sử dụng của mã code, vì logic truy cập dữ liệu có thể được sử dụng lại ở nhiều nơi trong ứng dụng.
+ Tách biệt logic kinh doanh và logic truy cập dữ liệu: Mô hình Repository giúp tách biệt logic kinh doanh (trong lớp Logic hoặc Service) và logic truy cập dữ liệu (trong Repository). Điều này tạo điều kiện cho việc quản lý mã code một cách hiệu quả và dễ dàng duy trì ứng dụng.
+ Tính kiểm soát và bảo mật: Repository cung cấp một cách tiếp cận kiểm soát được quyền truy cập vào dữ liệu. Các phương thức của Repository có thể được kiểm soát quyền truy cập, giúp đảm bảo tính bảo mật của hệ thống.
Mẫu kiến trúc Client - Server phù hợp cho những ứng dụng dạng nào? Tại sao?
- Mô hình kiến trúc Client-Server phù hợp cho nhiều loại ứng dụng, đặc biệt là các ứng dụng mạng có nhu cầu tương tác giữa client và server để yêu cầu chia sẻ dữ liệu giữa nhiều người dùng như là ứng dụng web, ứng dụng di động, ứng dụng game trực tuyến.
- Giải thích:
+ Tăng khả năng chia sẻ dữ liệu: Mẫu Client-Server giúp dễ dàng chia sẻ dữ liệu giữa nhiều người dùng đồng thời truy cập ứng dụng.
+ Tăng tính bảo mật: Mẫu Client-Server giúp dễ dàng kiểm soát quyền truy cập vào dữ liệu và bảo vệ dữ liệu khỏi các hành vi truy cập trái phép.
+ Tăng khả năng mở rộng: Mẫu Client-Server có thể dễ dàng mở rộng bằng cách thêm máy chủ mới để đáp ứng nhu cầu tăng trưởng của lượng người dùng. + Tăng tính sẵn sàng cao: Mẫu Client-Server có thể được cấu hình để đảm bảo tính sẵn sàng cao, giúp ứng dụng luôn hoạt động ngay cả khi một số máy chủ gặp sự cố. + Giảm tải cho máy client: Máy client chỉ cần chịu trách nhiệm hiển thị giao diện người dùng và thu thập dữ liệu từ người dùng, do đó giảm tải cho máy client.
2. Thiết kế giao diện
Ba luật vàng của thiết kế giao diện là gì? Tại sao phải tuân thủ từ luật vàng đó
- 1. Đặt người dùng vào quyền kiểm soát(Place the User in Control)
“Để điều khiển máy tính, không có điều khiển máy tính”,
“Hệ thống đọc được suy nghĩ của họ, nó biết những gì người dùng muốn làm trước khi người dùng cần làm”
+ Xác định các phương thức tương tác theo cách không buộc người dùng làm những việc không cần thiết hoặc không mong muốn hành động.
+ Cung cấp sự tương tác linh hoạt.
+ Cho phép tương tác của người dùng không bị gián đoạn và không thể hoàn tác được.
+ Hợp lý hóa sự tương tác khi trình độ kỹ năng nâng cao và cho phép sự tương tác được tùy chỉnh.
+ Ẩn nội dung kỹ thuật đối với người dùng thông thường.
+ Thiết kế để tương tác trực tiếp với các đối tượng xuất hiện trên màn hình.
- 2. Giảm tải bộ nhớ của người dùng
+ Giảm nhu cầu về trí nhớ ngắn hạn.
+ Thiết lập các giá trị mặc định có ý nghĩa.
+ Xác định các phím tắt trực quan.
+ Bố cục trực quan của giao diện phải dựa trên một phép ẩn dụ trong thế giới thực. + Công bố thông tin một cách tiến bộ.
- 3. Làm cho giao diện nhất quán
+ Cho phép người dùng đặt tác vụ hiện tại vào một bối cảnh có ý nghĩa.
+ Duy trì sự nhất quán trong một gia đình các ứng dụng.
+ Nếu các mô hình tương tác trước đây đã tạo ra người dùng mong đợi, đừng thực hiện thay đổi trừ khi có một lý do thuyết phục để làm như vậy.
| Trình bày quy trình thiết kế giao diện người dùng |
Xác thực giao diện
Phân tích giao diện và mô hình hóa
Xây dựng giao diện
Thiết kê giao diêṇ
1. Phân tích người dùng và nhu cầu của họ:
Các nguồn thông tin: Phỏng vấn người dùng, ý kiến từ bộ phận bán hàng, marketing, hỗ trợ. Người dùng là chuyên viên được đào tạo, kỹ thuật viên, nhân viên
văn phòng, hay công nhân sản xuất? Trình độ học vấn chính thức trung bình của người dùng là gì? Người dùng có khả năng tự học từ tài liệu viết không, hay họ đã bày tỏ mong muốn được đào tạo trong lớp học? Người dùng là người gõ máy tính nhanh hay sợ hãi bàn phím? Phạm vi tuổi của cộng đồng người dùng là từ bao nhiêu đến bao nhiêu?
Người dùng chủ yếu sẽ thuộc về một giới tính nào?
- 2. Phác thảo các bước tiếp cận ban đầu hoặc wireframes. o 3. Prototype giao diện người dùng. o 4. Thực hiện các bài kiểm thử người dùng và thu thập phản hồi.
- 5. Lặp lại từ các bước trước, dựa trên feedback và kết quả kiểm thử để cải tiến thiết kế.
- Phân tích giao diện: 1. những người (người dùng cuối) sẽ tương tác với hệ thống thông
qua giao diện; 2. những công việc mà người dùng cuối cần thực hiện để làm việc của họ,
3. nội dung được trình bày như một phần của giao diện 4. môi trường mà những công việc này sẽ được tiến hành.:
Tại sao trong thiết kế giao diện, chúng ta phải phân tích người dùng? Nếu không phân tích thì điều gì xảy ra?
Phân tích người dùng là một phần quan trọng của quy trình thiết kế giao diện người dùng vì nó giúp đảm bảo rằng giao diện được tối ưu hóa để đáp ứng nhu cầu, mong muốn và khả năng của người dùng.
- Lý do phải phân tích:
+ Hiểu rõ đối tượng sử dụng: Phân tích người dùng giúp thiết kế giao diện dựa trên sự hiểu biết về người sử dụng cuối cùng của sản phẩm hoặc ứng dụng. Điều này giúp tăng khả năng hiểu được nhu cầu, mong muốn và môi trường sử dụng của họ. + Tối ưu hóa trải nghiệm người dùng: Bằng cách phân tích người dùng, bạn có thể tạo ra một giao diện dễ sử dụng, thân thiện và phản ánh đúng những yêu cầu của người dùng. Điều này tạo ra một trải nghiệm người dùng tốt hơn, từ đó tăng cơ hội sử dụng sản phẩm hoặc ứng dụng.
+ Xác định nhu cầu và mong muốn của người dùng: Phân tích người dùng giúp xác định những gì người dùng thực sự cần và muốn từ giao diện. Điều này giúp tạo ra các tính năng và chức năng có ý nghĩa và hữu ích cho người dùng.
+ Giảm rủi ro và chi phí: Bằng cách hiểu rõ người dùng, bạn có thể tránh được những sai sót trong thiết kế và phát triển, giảm thiểu rủi ro và chi phí phát sinh do việc phải sửa đổi hoặc cải thiện giao diện sau này.
+ Tăng khả năng chấp nhận và sử dụng: Khi giao diện được thiết kế dựa trên nhu cầu và mong muốn của người dùng, khả năng chấp nhận và sử dụng của họ sẽ tăng lên. Điều này làm tăng giá trị của sản phẩm hoặc ứng dụng trong mắt người dùng.
- Nếu không phân tích thì sẽ xảy ra:
+ Không đáp ứng nhu cầu của người dùng: Giao diện có thể khó sử dụng, không trực quan hoặc không phù hợp với mục tiêu của người dùng.
+ Gây khó khăn cho người dùng: Người dùng có thể gặp khó khăn trong việc tìm kiếm thông tin, hoàn thành nhiệm vụ hoặc sử dụng phần mềm.
| Hãy cho ví dụ một thiết kế giao diện phù hợp với người dùng. |
Một ứng dụng đọc sách điện tử có chế độ ban đêm và tự động điều chỉnh độ sáng màn hình dựa trên môi trường xung quanh, rất phù hợp với người dùng thường xuyên đọc sách vào buổi tối.
Tại sao trong thiết kế giao diện, chúng ta phải phân tích tác vụ? Nếu không phân tích thì điều gì xảy ra?
Phân tích tác vụ (Task Analysis) trong thiết kế giao diện là quan trọng vì nó giúp hiểu rõ các công việc mà người dùng sẽ thực hiện trên giao diện và cách họ sẽ thực hiện chúng - Lý do phải phân tích:
+ Hiểu rõ quy trình làm việc của người dùng: Phân tích tác vụ giúp xác định các bước và quy trình mà người dùng sẽ thực hiện khi sử dụng giao diện. Điều này giúp thiết kế giao diện sao cho phản ánh đúng quy trình làm việc của người dùng. + Xác định tính năng và chức năng cần thiết: Bằng cách hiểu rõ các tác vụ mà người dùng sẽ thực hiện, bạn có thể xác định những tính năng và chức năng cần thiết để hỗ trợ và tối ưu hóa quy trình làm việc của họ trên giao diện.
+ Tối ưu hóa luồng làm việc: Phân tích tác vụ giúp bạn xác định và tối ưu hóa luồng làm việc của người dùng trên giao diện. Điều này giúp giảm thiểu số lượng bước cần thực hiện và tăng tính hiệu quả của quy trình làm việc.
+ Đảm bảo dễ sử dụng và hiệu quả: Bằng cách hiểu rõ các tác vụ và quy trình làm việc của người dùng, bạn có thể thiết kế giao diện sao cho dễ sử dụng và hiệu quả nhất. Điều này giúp tăng trải nghiệm người dùng và giảm bớt khả năng gặp phải lỗi và trục trặc trong quá trình sử dụng.
- Nếu không phân tích thì sẽ xảy ra:
+ Giao diện có thể không phản ánh đúng quy trình làm việc của người dùng, dẫn đến sự không hài lòng và khó chịu khi sử dụng.
+ Có thể thiết kế các tính năng và chức năng không cần thiết hoặc không hữu ích cho người dùng, làm phức tạp hóa quy trình làm việc.
+ Giao diện có thể không tối ưu hóa được luồng làm việc của người dùng, dẫn đến việc tăng thời gian và công sức cần thiết để hoàn thành tác vụ.
| Hãy cho ví dụ một thiết kế giao diện phù hợp với tác vụ. |
|
Một ứng dụng thanh toán trực tuyến cho phép thực hiện giao dịch chỉ với một vài thao tác đơn giản, nhấn mạnh tính năng quét mã QR để chuyển tiền.
Tại sao trong thiết kế giao diện, chúng ta phải phân tích môi trường làm việc? Nếu không phân tích thì điều gì xảy ra?
Phân tích môi trường làm việc (Environment Analysis) trong thiết kế giao diện là quan trọng vì nó giúp đảm bảo rằng giao diện được thiết kế để phản ánh và phù hợp với môi trường sử dụng của người dùng.
- Lý do phải phân tích:
+ Hiểu rõ ngữ cảnh sử dụng: Phân tích môi trường làm việc giúp hiểu rõ ngữ cảnh sử dụng của người dùng, bao gồm các điều kiện vật lý và điều kiện công việc mà họ sẽ sử dụng giao diện trong đó. Điều này giúp đảm bảo rằng giao diện được thiết kế phù hợp với môi trường sử dụng cụ thể đó.
+ Tối ưu hóa trải nghiệm người dùng: Bằng cách hiểu rõ môi trường làm việc của người dùng, bạn có thể tối ưu hóa giao diện để đảm bảo rằng nó hoạt động tốt và cung cấp trải nghiệm người dùng tốt nhất trong mọi điều kiện.
+ Xác định yêu cầu kỹ thuật: Phân tích môi trường làm việc giúp xác định các yêu cầu kỹ thuật cụ thể cho giao diện, bao gồm yêu cầu về kích thước màn hình, độ phân giải, môi trường ánh sáng và âm thanh, và yêu cầu về khả năng tương thích với các thiết bị và hệ điều hành khác nhau.
+ Tăng khả năng sử dụng và chấp nhận: Bằng cách thiết kế giao diện sao cho phù hợp với môi trường làm việc của người dùng, bạn tăng cơ hội để họ chấp nhận và sử dụng giao diện một cách dễ dàng và thoải mái hơn.
- Nếu không phân tích thì sẽ xảy ra:
+ Giao diện có thể không phản ánh đúng môi trường sử dụng của người dùng, dẫn đến sự không hài lòng và khó chịu khi sử dụng.
+ Có thể thiết kế giao diện không phù hợp với các yêu cầu kỹ thuật của môi trường làm việc, làm giảm hiệu suất hoặc gây ra các vấn đề kỹ thuật khác.
+ Người dùng có thể gặp khó khăn trong việc sử dụng giao diện do không phù hợp với điều kiện môi trường sử dụng của họ.
| Hãy cho ví dụ một thiết kế giao diện phù hợp với môi trường làm việc. |
|
Giao diện của một phần mềm CAD được thiết kế để sử dụng trên các máy trạm mạnh mẽ với nhiều màn hình cỡ lớn, tối ưu hóa không gian làm việc và hiển thị thông tin cần thiết một cách rõ ràng.
Hãy kể ra 10 kinh nghiệm thiết kế tiện dụng của Nielsen áp dụng cho thiết kế giao diện
H1: Visibility of system status(cho thấy trạng thái của hệ thống)
H2: Match between system & real world (phù hợp với thế giới thực)
H3: User control & freedom (Người dùng – kiểm soát và tự do)
H4: Consistency & standards (Toàn vẹn và tiêu chuẩn)
H5: Error prevention (ngăn ngừa lỗi)
H6: Recognition rather than recall (Nhận thức hơn là nhớ)
H7: Flexibility and efficiency of use (mềm dẽo và hiệu quả)
H8: Aesthetic & minimalist design (thiết kế mỹ thuật và tối thiểu)
H9: Help users recognize, diagnose, & recover from errors (giúp nhận thức, phân tích và phục hồi lỗi)
H10: Help and documentation (trợ giúp và tài liệu)
| Hãy cho ví dụ một thiết kế giao diện thỏa kinh nghiệm thứ 6 của Nielsen |
|
Một ứng dụng quản lý email hiển thị icon nhận biết ngay lập tức như "đã gửi", "chưa đọc", và "lưu nháp"; giúp người dùng nhận dạng nhanh chóng trạng thái của email mà không cần phải nhớ
| Hãy cho ví dụ một thiết kế giao diện thỏa kinh nghiệm thứ 1 của Nielsen |
|
Một trang web thương mại điện tử cung cấp thanh trạng thái đơn hàng, nơi người dùng có thể theo dõi quá trình xử lý đơn hàng của mình từ lúc đặt hàng, đóng gói, vận chuyểnđến khi giao hàng
3. Kiểm thử phần mềm
- Mục tiêu của kiểm thử phần mềm là gì?
- Xác định lỗi, lỗ hổng: Xác định lỗi trong phần mềm càng sớm càng tốt, trước khi sản phẩm được tung ra thị trường. Việc phát hiện lỗi sớm giúp tiết kiệm chi phí sửa chữa, đồng thời giảm thiểu rủi ro cho người dùng.
- Tìm ra yêu cầu còn thiếu so với yêu cầu thực tế: đảm bảo rằng phần mềm đáp ứng tất cả các yêu cầu đã được đề ra, bao gồm yêu cầu chức năng, yêu cầu phi chức năng và yêu cầu kinh doanh.
- Đánh giá chất lượng: Kiểm thử cung cấp thông tin về chất lượng của phần mềm, giúp các bên liên quan đưa ra quyết định sáng suốt về việc phát triển, triển khai và sử dụng sản phẩm.
- Ai là người thực hiện việc kiểm thử phần mềm
- Kỹ sư kiểm thử phần mềm (Tester): Là người trực tiếp thực hiện các công việc kiểm thử, bao gồm thiết kế, thực thi và báo cáo kết quả kiểm thử.
- Lập trình viên: Tham gia vào một số hoạt động kiểm thử, đặc biệt là kiểm thử đơn vị (unit testing).
- Chuyên gia kiểm thử: Là người có trình độ chuyên môn cao về kiểm thử phần mềm, thường đóng vai trò quản lý hoặc tư vấn cho các hoạt động kiểm thử. Có thể tham gia vào việc thiết kế chiến lược kiểm thử, đánh giá quy trình kiểm thử và đào tạo tester.
- Người dùng: Đóng góp vào việc kiểm thử phần mềm thông qua việc phản hồi và báo cáo lỗi.
- Hãy nói về mối quan hệ giữa việc kiểm thử phần mềm và chi phí
Hiệu quả về chi phí: Đây là một trong những lợi thế quan trọng của kiểm thử phần mềm. Kiểm tra bất kỳ dự án CNTT nào đúng thời hạn sẽ giúp bạn tiết kiệm tiền của mình trong thời gian dài. Trong trường hợp nếu các lỗi được phát hiện ở giai đoạn kiểm thử phần mềm trước đó thì chi phí sửa chữa sẽ ít hơn.
+ Phát hiện lỗi sớm: Việc phát hiện lỗi càng sớm càng tốt sẽ giúp tiết kiệm chi phí sửa chữa, vì việc sửa lỗi ở giai đoạn sau của dự án thường tốn kém hơn nhiều.
+ Ngăn ngừa lỗi: Kiểm thử giúp ngăn ngừa lỗi xảy ra trong tương lai, từ đó giảm thiểu chi phí sửa lỗi và bảo trì.
+ Cải thiện chất lượng sản phẩm: Sản phẩm có chất lượng cao sẽ ít gặp sự cố hơn, dẫn đến ít yêu cầu hỗ trợ khách hàng hơn và do đó tiết kiệm chi phí.
+ Tăng cường sự hài lòng của khách hàng: Khách hàng sẽ hài lòng hơn với sản phẩm chất lượng cao, ít lỗi, từ đó giúp doanh nghiệp tiết kiệm chi phí marketing và bán
hàng.
Trình bày các hoạt động cần thực hiện trong quá trình kiểm thử phần mềm
1. Đánh giá kế hoạch và trạng thái phát triển:
- Ở bước này, tester sẽ đánh giá kế hoạch phát triển phần mềm để xác định phạm vi kiểm thử, rủi ro tiềm ẩn và các yêu cầu cần thiết cho hoạt động kiểm thử.
- Tester cũng sẽ đánh giá trạng thái phát triển hiện tại của phần mềm để xác định các phần nàođã sẵn sàng cho việc kiểm thử.
2. Phát triển kế hoạch và trường hợp kiểm thử:
- Trong bước này, tester sẽ xây dựng kế hoạch kiểm thử chi tiết, xác định các mục tiêu kiểm thử, phạm vi kiểm thử, phương pháp kiểm thử và lịch trình thực hiện.
- Tester cũng sẽ phát triển các trường hợp kiểm thử cụ thể cho từng yêu cầu chức năng và phi chức năng của phần mềm.
3. Tạo trường hợp kiểm thử:
- Ở bước này, tester sẽ tạo ra các trường hợp kiểm thử dưới dạng văn bản hoặc sử dụng các công cụ hỗ trợ kiểm thử tự động.
- Các trường hợp kiểm thử cần được viết rõ ràng, súc tích và dễ hiểu, đồng thời phải đảm bảo bao phủ đầy đủ các yêu cầu kiểm thử.
4. Cài đặt môi trường kiểm thử:
- Trong bước này, tester sẽ thiết lập môi trường kiểm thử, bao gồm cài đặt phần mềm, phần cứng và dữ liệu cần thiết cho việc thực hiện các bài kiểm tra.
- Môi trường kiểm thử cần phải mô phỏng môi trường thực tế mà phần mềm sẽ được sử dụng để đảm bảo tính chính xác của kết quả kiểm thử.
5. Thực hiện bài kiểm tra:
- Ở bước này, tester sẽ thực hiện các bài kiểm tra theo kế hoạch đã được xây dựng.
- Tester sẽ ghi lại kết quả kiểm thử, bao gồm cả các lỗi được phát hiện và các bước để tái tạo lỗi.
6. Báo cáo kết quả kiểm thử:
- Trong bước này, tester sẽ tổng hợp kết quả kiểm thử và báo cáo cho các bên liên quan, bao gồm nhà phát triển, quản lý dự án và khách hàng.
- Báo cáo cần bao gồm thông tin về số lượng lỗi được phát hiện, mức độ nghiêm trọng của lỗi và các đề xuất sửa lỗi.
Sự khác biệt giữa Kiểm thử hợp trắng và kiểm thử hộp đen
White Box Testing Black Box Testing
Cũng được gọi là kiểm thử dựa trên mã Tập trung vào chức năng của phần mềm nguồn. từ góc nhìn của người dùng bên ngoài.
Tập trung vào kiểm tra các chi tiết bên trong Không yêu cầu kiểm thử viên biết về cấu của mã nguồn. trúc hoặc mã nguồn của phần mềm.
Kiểm thử viên có kiến thức về cấu trúc, logic, Các kỹ thuật như kiểm thử các biên, kiểm và luồng đi của mã nguồn. thử tải, kiểm thử phi chức năng được sử Các kỹ thuật như kiểm thử dòng mã, kiểm dụng.
thử nhánh, kiểm thử điều kiện được sử dụng. Mục tiêu chính là đảm bảo rằng phần Mục tiêu chính là tìm ra lỗi trong mã nguồn, mềm hoạt động đúng với các yêu cầu và xác định các nhánh điều kiện không được kỳ vọng của người dùng mà không cần kiểm tra hoặc các lỗ hổng logic. biết chi tiết cài đặt bên trong.
Tóm lại, trong khi kiểm thử hợp trắng tập trung vào việc kiểm tra các chi tiết bên trong của mã nguồn, kiểm thử hộp đen tập trung vào chức năng và hành vi của phần mềm từ góc nhìn của người dùng. Cả hai phương pháp đều cần thiết và bổ sung cho nhau để đảm bảo chất lượng phần mềm.
Sự khác biệt giữa kiểm thử tích hợp và kiểm thử hệ thống
Kiểm thử tích hợp | Kiểm thử hệ thống |
Giai đoạn kiểm thử này tập trung vào việc kiểm tra các thành phần (module, class, chức năng) của phần mềm khi chúng được kết hợp lại với nhau để hình | Giai đoạn kiểm thử này tập trung vào việc kiểm tra toàn bộ hệ thống phần mềm như một đơn vị duy nhất, bao gồm tất cả các thành phần đã được tích hợp. |
thành một hệ thống hoàn chỉnh. Mục tiêu là xác minh tính tương tác giữa các thành phần và đảm bảo rằng chúng hoạt động một cách hợp lý khi được tích hợp. Các kỹ thuật kiểm thử thường bao gồm kiểm thử dòng, kiểm thử nhánh, kiểm thử giao diện, và kiểm thử các luồng điều kiện khác nhau giữa các thành phần. | Mục tiêu là xác minh rằng hệ thống hoạt động đúng đắn và đáp ứng được các yêu cầu chức năng và phi chức năng đã được xác định trước. Các kỹ thuật kiểm thử có thể bao gồm kiểm thử chức năng, kiểm thử hiệu suất, kiểm thử bảo mật, và các dạng kiểm thử phi chức năng khác như kiểm thử tải và kiểm thử bảo mật. |
Tóm lại, kiểm thử tích hợp tập trung vào kiểm tra tính tương tác giữa các thành phần |
riêng lẻ của hệ thống, trong khi kiểm thử hệ thống tập trung vào kiểm tra toàn bộ hệ thống như một đơn vị hoạt động và đảm bảo rằng nó đáp ứng được các yêu cầu chức năng và phi chức năng.
4. Quản lý dự án phần mềm
Mục tiêu của quản lý rủi ro trong dự án phần mềm
Mục tiêu của quản lý rủi ro trong dự án phần mềm là nhận biết, đánh giá và quản lý các rủi ro có thể ảnh hưởng đến dự án. Điều này bao gồm nhận dạng các rủi ro liên quan đến công nghệ, con người, yêu cầu và các khía cạnh kinh doanh khác, sau đó đề xuất và triển khai các biện pháp để giảm thiểu hoặc tránh những ảnh hưởng tiêu cực của rủi ro đó.
Nhận biết rủi ro: Xác định và ghi nhận các rủi ro tiềm ẩn và hiện hữu có thể ảnh hưởng đến dự án phần mềm. Điều này có thể bao gồm nhận diện các rủi ro liên quan đến công nghệ, con người, yêu cầu và các khía cạnh kinh doanh khác của dự án.
Đánh giá rủi ro: Phân tích xác suất xảy ra và hậu quả của từng rủi ro để hiểu rõ mức độ ảnh hưởng của chúng đối với dự án. Điều này giúp ưu tiên và tập trung vào các rủi ro quan trọng nhất.
Quản lý rủi ro: Phát triển và triển khai các biện pháp phòng ngừa và ứng phó để giảm thiểu hoặc loại bỏ các rủi ro tiềm ẩn và giảm thiểu ảnh hưởng của các rủi ro không thể tránh được. Điều này bao gồm cả việc phát triển kế hoạch rủi ro chi tiết và thiết lập các biện pháp dự phòng.
Thế nào là một dự án được xem là thành công
Một dự án được xem là thành công khi nó được hoàn thành đúng tiến độ, đúng ngân sách và đáp ứng được các yêu cầu và mục tiêu ban đầu. Ngoài ra, dự án cũng cần phải đảm bảo chất lượng sản phẩm, sự hài lòng của khách hàng và cơ sở hạ tầng tổ chức phù hợp để hỗ trợ và duy trì sản phẩm sau khi triển khai.
- Hoàn thành đúng tiến độ: Dự án được hoàn thành theo kế hoạch, không gặp trễ lịch trình quan trọng và không làm ảnh hưởng đến các dự án khác.
- Hoàn thành đúng ngân sách: Dự án được thực hiện trong ngân sách được phê duyệt, không có sự vượt quá ngân sách đáng kể và không gây ảnh hưởng tiêu cực đến tài chính của tổ chức.
- Đạt được các yêu cầu và mục tiêu: Sản phẩm hoặc dịch vụ cuối cùng đáp ứng được các yêu cầu và mục tiêu đã định rõ, đáp ứng được nhu cầu của khách hàng và người sử dụng.
- Chất lượng cao: Sản phẩm được sản xuất với chất lượng cao, không có lỗi quan trọng và đáp ứng được các tiêu chuẩn và yêu cầu chất lượng.
- Sự hài lòng của khách hàng: Khách hàng hài lòng với sản phẩm hoặc dịch vụ được cung cấp và thấy rằng nó đáp ứng được nhu cầu và mong đợi của họ.
- Các hoạt động nào có trong quản lý dự án phần mềm, nêu mục tiêu của hoạt động đó.
- Rủi ro nhận biết: Xác định các rủi ro có thể ảnh hưởng đến dự án.
- Phân tích rủi ro: Đánh giá xác suất và hậu quả của mỗi rủi ro.
- Kế hoạch rủi ro: Phát triển chiến lược để quản lý hoặc giảm thiểu các rủi ro.
- Theo dõi rủi ro: Theo dõi và đánh giá các rủi ro trong suốt dự án. Hãy cho hai rủi ro liên quan đến công nghệ (Technology) (GPT)
Hiệu suất cơ sở dữ liệu không đạt yêu cầu: Trong quá trình triển khai, có thể xảy ra tình huống mà cơ sở dữ liệu không thể xử lý được số lượng giao dịch mỗi giây (TPS - Transactions Per Second) như đã dự kiến. Điều này có thể gây ra sự trễ hạn trong việc xử lý dữ liệu, làm giảm hiệu suất hoạt động của hệ thống và ảnh hưởng đến trải nghiệm người dùng.
Sự không hiệu quả của các công cụ công nghệ phần mềm: Có thể xảy ra tình trạng khi các công cụ công nghệ phần mềm (ví dụ: CASE tools) không hoạt động như mong đợi hoặc không tương thích với nhau, dẫn đến sự không hiệu quả trong quá trình phát triển phần mềm. Điều này có thể làm chậm tiến độ dự án và tăng chi phí do cần phải thay đổi hoặc sửa chữa các công cụ hoặc tìm kiếm các giải pháp thay thế.
- Hãy cho hai rủi ro liên quan đến con người (People) (GPT)
Hãy cho Khó khăn trong tuyển dụng nhân viên có kỹ năng cần thiết: Trong một số trường hợp, dự án có thể gặp khó khăn khi tìm kiếm và tuyển dụng nhân viên có đủ kỹ năng và kinh nghiệm cần thiết để tham gia vào dự án. Điều này có thể gây ra sự trễ hạn trong việc hoàn thành các nhiệm vụ, hoặc thậm chí làm ảnh hưởng đến chất lượng của sản phẩm cuối cùng do sự thiếu hụt về nguồn lực chất lượng.
Sự vắng mặt của nhân viên chủ chốt: Nếu nhân viên chủ chốt hoặc nhóm quản lý khóa không có mặt hoặc không có sẵn vào các thời điểm quan trọng trong dự án do lý do sức khỏe, nghỉ thai sản, hoặc các tình huống khẩn cấp khác, có thể dẫn đến sự trễ hạn trong quá trình ra quyết định hoặc thực hiện các nhiệm vụ quan trọng. Điều này có thể ảnh hưởng đến tiến độ và hiệu suất của dự án.
- Hai rủi ro liên quan đến yêu cầu (Requirements) (GPT)
Thay đổi yêu cầu đột ngột và không kiểm soát được: Trong quá trình phát triển dự án, có thể xuất hiện các thay đổi đột ngột và không kiểm soát được từ phía khách hàng hoặc các bên liên quan khác về yêu cầu sản phẩm. Điều này có thể làm thay đổi phạm vi dự án, tăng thêm công việc và chi phí, và gây ra sự không chắc chắn và căng thẳng cho đội ngũ phát triển.
Sự hiểu lầm về yêu cầu giữa các bên liên quan: Có thể xảy ra sự hiểu lầm hoặc không thống nhất giữa các bên liên quan về yêu cầu của sản phẩm phần mềm. Điều này có thể dẫn đến việc triển khai sản phẩm không đúng với mong đợi của khách hàng hoặc gây ra sự bất mãn và tranh cãi giữa các bên liên quan.
- Tại sao phải có hoạt động phân tích rủi ro (Risk analysis)
Hoạt động phân tích rủi ro cần thiết để đánh giá xác suất và hậu quả của mỗi rủi ro. Điều này giúp dự án định hình các biện pháp phòng ngừa và quản lý rủi ro một cách hiệu quả, từ đó giảm thiểu các rủi ro có thể ảnh hưởng đến dự án.
Đánh giá xác suất và hậu quả: Phân tích rủi ro giúp đánh giá xác suất xảy ra và mức độ nghiêm trọng của các rủi ro tiềm ẩn. Bằng cách này, nhóm dự án có thể hiểu được mức độ nguy cơ của từng rủi ro và ưu tiên những rủi ro quan trọng nhất cần được quản lý.
- Hãy cho biết tầm quan trọng của hoạt động nhóm trong các dự án công nghệ phần mềm
Hoạt động nhóm là tương tác giữa các thành viên nhóm để cùng nhau hoàn thành các nhiệm vụ dự án. Trong các dự án công nghệ phần mềm, hoạt động nhóm rất quan trọng vì nó tạo ra một môi trường làm việc hợp tác và sáng tạo, giúp giải quyết các vấn đề kỹ thuật phức tạp và thúc đẩy sự tiến triển của dự án.
Phân chia và phối hợp công việc: cho phép phân chia công việc một cách hiệu quả và phối hợp giữa các thành viên để đảm bảo rằng mọi người đều biết rõ trách nhiệm của mình và làm việc cùng nhau để đạt được mục tiêu dự án.
Chia sẻ kiến thức và kinh nghiệm: tạo điều kiện cho việc chia sẻ thông tin, học hỏi từ nhau và phát triển kỹ năng cá nhân, tạo nên một môi trường làm việc tích cực và sáng tạo.
Tăng cường sức mạnh tập thể: Nhóm làm việc có thể tận dụng sức mạnh của tập thể bằng cách kết hợp các kỹ năng và năng lực khác nhau của các thành viên. Khi làm việc cùng nhau, nhóm có thể đạt được những kết quả mà một cá nhân không thể làm được.
Giảm thiểu rủi ro: Bằng cách chia sẻ trách nhiệm và kinh nghiệm, nhóm có thể giảm thiểu rủi ro và tăng khả năng thành công của dự án. Các thành viên có thể hỗ trợ lẫn nhau trong việc giải quyết các vấn đề và đối mặt với các thách thức.
Tạo sự đồng thuận và cam kết: Khi mọi người làm việc cùng nhau và hỗ trợ lẫn nhau, họ có xu hướng cảm thấy tự hào về công việc của mình và cam kết hơn với mục tiêu và giá trị của dự án.
5. Quản lý chất lượng phần mềm
- Nêu mục tiêu của quản lý chất lượng phần mềm
- Ở cấp độ tổ chức, quản lý chất lượng liên quan đến thiết lập một khuôn khổ các quy trình tổ chức và tiêu chuẩn sẽ dẫn đến phần mềm chất lượng cao.
- Ở cấp độ dự án, quản lý chất lượng liên quan đến việc áp dụng các các quy trình chất lượng cụ thể và kiểm tra xem các quy trình này đã được hoạch định chưa các quy trình đã được tuân theo.
- Ở cấp độ dự án, quản lý chất lượng cũng liên quan đến xây dựng kế hoạch chất lượng cho dự án. Kế hoạch chất lượng phải được thiết lập đưa ra các mục tiêu chất lượng cho dự án và xác định những quy trình nào và tiêu chuẩn sẽ được sử dụng.
- Hãy liệt kê 3 thuộc tính để đánh giá chất lượng phần mềm?
- Tính chính xác (Correctness): Phần mềm phải đáp ứng đúng và đầy đủ các yêu cầu đã được đề ra, bao gồm cả yêu cầu chức năng và yêu cầu phi chức năng. Điều này có nghĩa là phần mềm phải thực hiện đúng các chức năng mong muốn, hoạt động chính xác theo thông số kỹ thuật và đáp ứng các tiêu chuẩn về hiệu suất, độ tin cậy, bảo mật, v.v.
- Tính khả dụng (Usability): Phần mềm phải dễ sử dụng, dễ học và dễ hiểu đối với người dùng mục tiêu. Giao diện người dùng phải trực quan, dễ điều hướng và cung cấp phản hồi rõ ràng cho người dùng. Phần mềm cũng cần có tài liệu hướng dẫn sử dụng đầy đủ và dễ hiểu.
- Tính tin cậy (Reliability): Phần mềm phải hoạt động ổn định và đáng tin cậy trong điều kiện sử dụng bình thường. Phần mềm cần phải hạn chế tối đa lỗi, sự cố và gián đoạn trong quá trình hoạt động. Khả năng phục hồi sau lỗi cũng là một yếu tố quan trọng để đánh giá tính tin cậy của phần mềm.
- Tính hiệu quả (E昀케ciency): Phần mềm phải sử dụng hiệu quả tài nguyên hệ thống như CPU, bộ nhớ, dung lượng lưu trữ và băng thông mạng.
- Tính bảo mật (Security): Phần mềm phải bảo vệ dữ liệu và thông tin của người dùng khỏi các truy cập trái phép, sửa đổi hoặc phá hủy.
- Tính bảo trì (Maintainability): Phần mềm phải dễ dàng sửa đổi, cập nhật và nâng cấp để đáp ứng các yêu cầu mới hoặc sửa lỗi.
- Tính di động (Portability): Phần mềm phải có thể dễ dàng cài đặt và chạy trên nhiều nền tảng phần cứng và hệ điều hành khác nhau.
Phần 2: Bài tập – một số ví dụ tham khảo
1. Thiết kế một giao diện đáp ứng được đặc tả cho trước và không vi phạm 10 kinh nghiệm thiết kế của Nielsen
Thông tin đăng ký tài khoản người dùng gồm có: Họ tên, ngày tháng năm sinh, giới tính, số điện thoại, địa chỉ email, loại người dùng. Trong đó giới tính có giá trị là “Nam” hoặc “Nữ”, Loại người dùng là “sinh viên” hoặc “giáo viên” hoặc “tự do”. Hãy thiết kế một giao diện đăng ký tài khoản người dùng trên hệ thống thư viện điện tử của IUH dựa vào thông tin đã cho và dựa vào 10 kinh nghiệm thiết kế của Nielsen.
Đặt tả thiết kế
Thành phần | Mô tả thành phần | Ràng buộc |
Mô tả cho rõ |
Vẽ giao diện
Bài 2: Thông tin của sách gồm: mã sách, ISBN, tựa sách, tác giả, nhà xuất bản, năm xuất bản, phiên bản, số trang, loại sách, ảnh bìa sách, ngày sách về thư viện. Biết rằng: một quyển sách có thể có nhiều hơn một tác giả, loại sách có thể là sách giấy hoặc sách điện tử. Nếu là sách điện tử thì có chỗ để submit sách dưới dạng Pdf. Ảnh bìa sách là một dạng file ảnh. Các trường dữ liệu khác tự chọn sao cho hợp lý nhất.
Thiết kế một giao diện cho phép thủ thư đưa thông tin của một quyễn sách vào hệ thống quản lý sách của một ứng dụng thư viện điện tử của IUH. Giao diện thiết kế sao cho phù hợp với 10 kinh nghiệm thiết kế của Nielsen
- Thiết kế các trường hợp test (test case), dữ liệu test (test data) cho một giao diện (kiểm thử hộp đen) theo đặc tả cho trước.
Bài 1: Cho chương trình chuyển số thập lục phân sang số thập phân với giao diện như sau:
- Tự đưa ra đặc tả cho chương trình trên để có thể thiết kế các trường hợp kiểm thử.
- Đưa ra kế hoạch kiểm thử và dữ liệu liệu kiểm thử dựa trên đặc tả tự nêu ở trên. Bài 2:
- Tự đưa ra đặc tả cho chương trình trên để có thể thiết kế các trường hợp kiểm thử.
- Đưa ra kế hoạch kiểm thử và dữ liệu liệu kiểm thử dựa trên đặc tả tự nêu ở trên.
- Thiết kế các trường hợp test (test case), dữ liệu test (test data) cho một thuật toán cho trước (kiểm thử hộp trắng)
Bài 1
Yêu cầu của chương trình
Yêu cầu bài:
(a) Vẽ đồ thị luồng điều khiển (CFG) (số thứ tự node dựa vào số thứ tự dòng) (b) Liệt kê các đường cơ bản (path) có thể có.
- Thiết kế các trường hợp test theo path ứng với dữ liệu đầu vào và dữ liệu đầu ra mong đợitheo bảng sau:
STT | Path | INPUT | EX. RESULT | ||
bt1 | bt2 | btc 3 | |||
1 | |||||
Bài 2:
Yêu cầu bài:
(a) Dựa vào chương trình trên, hãy tìm hiểu xem chương trình thực hiện công việc gì? (b) Vẽ đồ thị luồng điều khiển (CFG) (số thứ tự node dựa vào số thứ tự dòng) (c) Liệt kê các đường cơ bản (path) có thể có.
- Thiết kế các trường hợp test theo path ứng với dữ liệu đầu vào và dữ liệu đầu ra mongđợi.