ĐỀ CƯƠNG ÔN TẬP MÔN CÔNG NGHỆ PHẦN MỀM(CTB) Câu 1: • Khái niệm phần mềm: Phần mềm gồm 3 phần: Chương trình máy tính: mã nguồn, mã máy Cấu trúc dữ liệu: cấu trúc làm việc ( bộ nhớ trong ), cấu trúc lưu trữ (bộ nhớ ngoài) Các tài liệu liên quan: Hướng dẫn sử dụng, tham khảo kỹ thuật, tài liệu phát triển. • Phân biệt phần mềm và phần cứng: Phần cứng là các cơ phận (vật lý) cụ thể của máy tính hay hệ thống máy tính như màn hình, chuột, bàn phím, máy in, máy quét, CPU, loa,…. Phần mềm là 1 tập hợp những câu lệnh hoặc chỉ thị được viết bằng một hoặc nhiều ngôn ngữ lập trình theo một trật tự xác định, và các dữ liệu hay tài liệu liên quan nhằm tự động thực hiện một số nhiệm vụ hay chức năng hoặc giải quyết một vấn đề cụ thể nào đó. Phần mềm là một khái niệm trừu tượng, nó khác với phần cứng ở chỗ là phần mềm không thể sờ hay đụng vào, và nó cần phải có phần cứng mới có thể thực thi được. • Phân loại phần mềm: Theo mức độ hoàn thiện: + Chương trình + Sản phẩm phần mềm Theo chức năng thực hiện:+ Phần mềm hệ thống + Phần mềm nghiệp vụ + Phần mềm công cụ Theo lĩnh vực ứng dụng:+ Phần mềm hệ thống +Phần mềm thời gian thực +Phần mềm nghiệp vụ +Phần mềm khoa học kỹ thuật +Phần mềm nhúng +Phần mềm máy tính cá nhân +Phần mềm trí tuệ nhân tạo +Phần mềm dựa trên nền web
Trang 1ĐỀ CƯƠNG ÔN TẬP MÔN CÔNG NGHỆ PHẦN MỀM(CTB)
Câu 1:
Khái niệm phần mềm: Phần mềm gồm 3 phần:
- Chương trình máy tính: mã nguồn, mã máy
- Cấu trúc dữ liệu: cấu trúc làm việc ( bộ nhớ trong ), cấu trúc lưu trữ (bộ
nhớ ngoài)
- Các tài liệu liên quan: Hướng dẫn sử dụng, tham khảo kỹ thuật, tài liệu
phát triển
Phân biệt phần mềm và phần cứng:
- Phần cứng là các cơ phận (vật lý) cụ thể của máy tính hay hệ thống máy
tính như màn hình, chuột, bàn phím, máy in, máy quét, CPU, loa,…
- Phần mềm là 1 tập hợp những câu lệnh hoặc chỉ thị được viết bằng một
hoặc nhiều ngôn ngữ lập trình theo một trật tự xác định, và các dữ liệu hay tài liệu liên quan nhằm tự động thực hiện một số nhiệm vụ hay chức năng hoặc giải quyết một vấn đề cụ thể nào đó Phần mềm là một khái niệm trừu tượng, nó khác với phần cứng ở chỗ là "phần mềm không thể
sờ hay đụng vào", và nó cần phải có phần cứng mới có thể thực thi được
Phân loại phần mềm:
- Theo mức độ hoàn thiện: + Chương trình
+ Sản phẩm phần mềm
- Theo chức năng thực hiện:+ Phần mềm hệ thống
+ Phần mềm nghiệp vụ + Phần mềm công cụ
- Theo lĩnh vực ứng dụng:+ Phần mềm hệ thống
+Phần mềm thời gian thực +Phần mềm nghiệp vụ +Phần mềm khoa học kỹ thuật +Phần mềm nhúng
+Phần mềm máy tính cá nhân +Phần mềm trí tuệ nhân tạo +Phần mềm dựa trên nền web
Câu 2:
Trang 2 Kiến trúc phần mềm: là cấu trúc của các thành phần trong một chương trình máy tính hay một hệ thống tính toán Kiến trúc phần mềm bao gồm các phần
tử phần mềm, các thuộc tính và mối quan hệ giữa chúng
Thế nào là một phần mềm tốt?
Phần mềm phải đáp ứng các chức năng theo yêu cầu, có hiệu năng tốt, có khả năng bảo trì, đáng tin cậy và được người sử dụng chấp nhận
Câu 3:
Vai trò của phần mềm:
- Là linh hồn của các hệ thống máy tính
- Là nền tảng của mọi hoạt động xã hội tổ chức
- Mọi nền kinh tế phụ thuộc rất lớn vào phần mềm
- Phần mềm sai, hỏng, thì kinh tế sẽ tổn thất lớn
Đặc trưng của phần mềm:
- Không mòn, cũ nhưng thoái hóa theo thời gian
- Không được lắp rắp từ mẫu có sẵn
- Phức tạp, khó hiểu, vô hình
- Thay đổi là bản chất
- Cần phát triển theo nhóm
Câu 4:
Vắn tắt các giai đoạn phát triển của phần mềm:
- Giai đoạn 1: 1950-1960
+ Chương trình nhỏ, tính toán chuyên dụng
+ Xử lý số, theo lô
+ Ngôn ngữ máy, hợp ngữ, đặc thù cho từng máy
+ Tiêu chí đánh giá: Tính nhanh và giải được bài toán
- Giai đoạn 2: Giữa thập kỷ 70:
+ Sản phẩm: đa dạng, đa người sử dụng
+ Xử lý số, ký tự, theo lô, thời gian thực
+ Xuất hiện lưu trữ trực tuyến
+ Ngôn ngữ: Algol, Fortran
+ Tiêu chí đánh giá: Nhanh, giải được bài toán lớn, nhiều người dùng
- Giai đoạn 3: Đầu những năn 1990:
+ Phần mềm cá nhân và mạng, hệ lớn, chia sẻ được
+ Ra đời phần mềm nhúng
Trang 3+ Xử lý số, ký tự, âm thanh, hình ảnh; theo lô, thời gian thực, phân tán, song song
+ Truy nhập dữ liệu phát triển, từ xa
+ Ngôn ngữ: bậc cao, hướng đối tượng, logic
+ Tiêu chí: Tiện dụng, tin cậy, dễ bảo trì
- Giai đoạn 4: Từ năm 1990 đến nay:
+ Phần mềm lớn, tinh vi, tin cậy, hướng người dùng
+ Hệ chuyên gia, trí tuệ nhân tạo, phần mềm nhúng, webserrvice sử dụng rộng rãi, internet mở rộng
+ CSDL hướng đối tượng, kho dữ liệu phát triển
+ Ngôn ngữ: hướng đối tượng, thế hệ thứ 4, visual
+ Tiêu chí: Tiện dụng, tinh vi, tin cậy, dễ bảo trì
Câu 5:
Tiêu chí để đánh giá một phần mềm tốt hiện nay:
- Người dùng:
+Đủ chức năng nghiệp vụ
+Dễ sử dụng, tinh vi (tính thông minh)
+Tin cậy, an toàn
- Nhà phát triển: Dễ bảo trì
Câu 6:
Vòng đời của phần mềm: là thời kỳ tính từ khi phần mềm được sinh (tạo) ra cho đến khi chết đi (từ lúc hình thành đáp ứng yêu cầu, vận hành, bảo
dưỡng, cho đến khi loại bỏ không người dùng)
Mô hình vòng đời phần mềm của Boehm:
Trang 4Câu 7:
Mô hình thác nước:
- Phân tích: tập trung vào việc thu thập phân tích các thông tin cần cho
phần mềm, các chức năng phần mềm cần phải thực hiện, hiệu năng cần
có của mỗi chức năng, các giao diện cho người sử dụng, các ràng buộc
mà phần mềm cần tuân thủ…
- Thiết kế: là quá trình chuyển hóa các yêu cầu phần mềm thành các mô tả
thiết kế mà từ đó nhà phát triển và lập trình có thể lắp đặt hệ thống và chuyển thiết kế thành chương trình vận hành được
- Mã hóa: Dịch các đặc tả thiết kế thành các chương trình mã nguồn trong
một ngôn ngữ lập trình nào đó mà mã mãy có thể thực hiện được
- Kiểm thử: Phát hiện lỗi và sửa lỗi trong chương trình.
- Bảo trì: trong môi trường hoạt động thực tế, hệ thống có đáp ứng được
các yêu cầu đặt ra ban đầu và đề xuất những thay đổi, bổ sung để hoàn thiện hệ thống
Ưu và nhược điểm của mô hình thác nước:
Trang 5- Thực tế các dự án ít khi tuân theo dòng tuần tư của mô hình, mà thường
có lặp lại
- Khách hàng ít khi tuyên bố rõ ràng khi nào xong hết các yêu cầu
- Khách hàng phải có lòng kiên nhẫn chờ đợi thời gian nhất định mới có
sản phẩm Nếu phát hiện ra lỗi nặng thì là một thảm họa
Câu 8:
Mô hình xoắn ốc:
- Giao tiếp khách hàng: giữa người phát triển và khách hàng để tìm hiểu
yêu cầu, ý kiến
- Lập kế hoạch: Xác lập tài nguyên, thời hạn và những thông tin khác.
- Phân tích rủi ro: xem xét mạo hiểm kỹ thuật và mạo hiểm quản lý
- Kỹ nghệ: xây dựng một hay một số biểu diễn của ứng dụng.
- Xây dựng và xuất xưởng: xây dựng, kiểm thử, cài đặt và cung cấp hỗ trợ
người dùng (tư liệu, huấn luyện…)
- Đánh giá của khách hàng: nhận các phản hồi của người sử dụng về biểu
diễn phần mềm trong giai đoạn kỹ nghệ và cài đặt
Ưu và nhược điểm của mô hình xoắn ốc:
- Tốt cho các hệ phần mềm quy mô lớn
- Dễ kiểm soát các mạo hiểm ở từng mức tiến hóa
- Khóa thuyết phục khách hàng là phương pháp tiến hóa xoắn ốc có thể
kiểm soát được
- Chưa được dùng rộng rãi như các mô hình tuyến tính hoặc chế thử
Câu 9:
- Khái niệm yêu cầu phần mềm: Yêu cầu phần mềm là cơ sở xem xét:
Xem xét chất lượng
Trang 6 Yêu cầu thể hiện ra bằng đặc tả- đặc tả có chuẩn mới kiểm tra, đo đạc được:
+Các chuẩn đặc tả là một bộ các tiêu chuẩn phát triển và hướng dẫn cách thức làm ra phần mềm
+Không tuân thủ các tiêu chuẩn đó thì chắc chắn là chất lượng sẽ kém
- Phân loại yêu cầu phần mềm:
Yêu cầu chức năng
Yêu cầu phi chức năng
Yêu cầu về sản phẩm
Yêu cầu về tiếng trình phát triển
Yêu cầu về ngoại lại
- VD minh họa: ………
Câu 10:
Các kỹ thuật đặc tả yêu cầu:
- Đặc tả bằng ngôn ngữ hướng cấu trúc
- Đặc tả dựa biểu mẫu
- Đặc tả dựa bằng biểu đồ trình tự
Câu 11:
Qui trình xác định yêu cầu:
Câu 12:
Kĩ thuật phân tích và xác định yêu cầu:
- Tiếp cận định hướng cách nhìn
- Kĩ thuật phân tích yêu cầu dựa trên mô hình
- Kĩ thuật phân tích hình thức hóa
Câu 13:
Trang 7Các kỹ thuật và phương pháp hỗ trợ phân tích yêu cầu:
- Các mô hình hệ thống: Phương pháp biểu diễn yêu cầu hệ thống một cách
có kỹ thuật
- Use Case: chỉ ra chức năng của một hệ thống bằng cách mô tả hành vi
của hệ thống
- Data Flow Diagram (DFD): Thể hiện dòng dữ liệu trong một hệ thống,
biểu diễn sự di chuyển dữ liệu giữa các tiến trình xử lý dữ liệu
- Các mô hình khác:
+ Mô hình ER cho phân tích dữ liệu
+ Mô hình đối tượng cho phân tích dữ liệu
Câu 14:
Kiến trúc phần mềm: là cấu trúc của các thành phần trong một chương trình máy tính hay một hệ thống tính toán Kiến trúc phần mềm bao gồm các phần
tử phần mềm, các thuộc tính và mối quan hệ giữa chúng
Vai trò kiến trúc phần mềm:
- Có vai trò quan trọng trong p/triển phần mềm:
+ Công cụ giao tiếp giữa những người liên quan
+ Để phân tích hệ thống
+ Sử dụng lại ở quy mô lớn
- Cho phép các kỹ sư phần mềm thực hiện công việc:
+ Tăng cường hiểu biết về hệ thống cần xây dựng
+ Phân tích hiệu quả
+ Xem xét, sửa đổi kiến trúc từ sớm, giảm rủi ro
Mô hình kiến trúc phần mềm:
- Mô hình kiến trúc tĩnh
- Mô hình tiến trình động
- Mô hình giao diện
- Mô hình liên kết
- Mô hình phân tán
Câu 15:
- Khái niệm thiết kế: Thiết kế phần mềm là quá trình chuyển các đặc tả yêu
cầu phần mềm thành một biểu diễn thiết kế của hệ thống phần mềm cần xây dựng sao cho người lập trình có thể ánh xạ nó thành chương trình vận hành được
Trang 8- Vai trò của thiết kế:
Là cách duy nhất để chuyển hóa một cách chính xác các yêu cầu của khách hàng thành mô hình thiết kế hệ thống phần mềm cuối cùng, làm cơ sở cho việc triển khai chương trình phần mềm
Là công cụ giao tiếp giữa nhóm cùng tham gia vào việc phát triển sản phẩm, để quản lý các rủi ro, đạt đến phần mềm hiệu quả
Là tài liệu cung cấp đầy đủ các thông tin cần thiết cho những người
kỹ sư hệ thống để bảo trì hệ thống sau này
Nếu ko có thiết kế thì hệ thống ko tin cậy nguy cơ thất bại cao
Thiết kế tốt là chìa khóa làm cho phần mềm hữu hiệu
Câu 16:
Các bước trong giai đoạn thiết kế:
Hình thức biểu diễn thiết kế:
- Các biểu đồ
- Ngôn ngữ mô tả chương trình
- Dạng văn bản không hình thức hóa
Câu 17:
Phương pháp thiết kế cấu trúc:
- Phát biểu lại bài toán như 1 DFD( Data Flow Diagram)
- Chỉ ra các thành phần dữ liệu vào/ra
- Phân chia mức cao
Trang 9- Phân chia ở mức chi tiết
Câu 18:
Phương pháp thiết kế hướng đối tượng:
- Hệ thống được nhìn nhận như 1 bộ các đối tượng tương tác với nhau, đối
tượng gồm dữ liệu vào thao tác
- 1 lớp được xác định bằng thuộc tính và phương thức, có tính kế thừa cao
- Các đối tượng liên lạc với nhau bằng các thông điệp
- 1 số công cụ hỗ trợ mạnh như: Jbuilder
Câu 19:
Sự khác nhau giữa thiết kế hướng chức năng và thiết kế hướng đối tượng:
Cách tiếp cận truyền thống Cách tiếp cận hiện đại
Tập trung vào thông tin Tập trung vào cả thông tin và cách hoạt
động Tính tái sử dụng thấp Tính tái sử dụng cao
Thiết kế ngân hàng dữ liệu theo
những thông tin người dùng yêu cầu
Ánh xạ các thành phần trong bài toán vào
các đối tượng ngoài đời thực
Câu 20:
- Khái niệm UI(User Interface): Là không gian nơi mà sự tương tác giữa
người sử dụng và máy tính được thực hiện
- Mục đích thiết kế giao diện người dùng:
Tương tác của người sử dụng: thao tác trực tiếp, lựa chọn menu, nhập form,…
Trình bày thông tin: Một số câu hỏi để xác định kiểu trình bày thông tin:
+Người sử dụng quan tâm tới độ chính xác thông tin hay là mối quan hệ giữa các giá trị dữ liệu?
+Người sử dụng có phải tương tác với thông tin trình bày?
+Kiểu dữ liệu trình bày là gì?
Trang 10Câu 21:
Một ngôn ngữ lập trình có các yếu tố đặc trưng cơ bản:
- Dễ dịch thiết kế sang chương trình
- Từ khóa gần với ngôn ngữ tự nhiên
- Có trình biên dịch hiệu quả
- Khả năng chuyển chương trình gốc
- Có sẵn công cụ phát triển
- Dễ bảo trì
Câu 22:
Khi nói về phong cách lập trình là nói về những yếu tố:
- Tính đơn giản và rõ ràng của chương trình
- Tài liệu bên trong
- Phương pháp khai báo dữ liệu
- Cách tiếp cận đến việc xây dựng câu lệnh
- Các kĩ thuật vào ra
Câu 23:
- Lời chú thích trong mã nguồn chương trình thường được đặt ở đầu
chương trình, đầu các mô đun, đầu các hàm hoặc trước các khối lệnh
- Nội dung: truyền thông với các độc giả về chương trình gốc, mô tả các
hàm xử lý, hỗ trợ và diễn giải chương trình, ngày tháng và lịch sử phát triển chương trình, cách sử dụng chương trình, cách truyền đối số cho các hàm
Câu 24:
Khi lựa chọn ngôn ngữ lập trình để viết phần mềm thường dựa trên các yếu tố:
- Các yếu tố về ngôn ngữ lập trình sẽ quyết định: miền ứng dụng của ngôn
ngữ lập trình đó Miền ứng dụng là yếu tố chính để lựa chọn ngôn ngữ lập trình
- Dựa vào năng lực và thói quen của người lập trình
Câu 25:
Tính hiệu quả của chương trình thể hiện trên những yếu tố: Hiệu quả về tốc độ, về bộ nhớ và hiệu quả về vào ra
Câu 26:
Trang 11Để cải thiện hiệu xuất của chương trình cần làm:
- Cải thiện về thuật toán
- Lựa chọn cấu trúc dữ liệu, ko gian dữ liệu
- Sử dụng nguyên tắc cấp phát bộ nhớ phù hợp, lựa chọn phần cứng phù
hợp
Câu 27:
Hiểu biết của về lập trình hướng thủ thục:
- Là phương pháp truyền thống phổ biến sử dụng các thủ tục
- Lập trình có cấu trúc, chia 1 chương trình lớn thành các chương trình nhỏ
- Giảm độ phức tạp
- Nhược điểm: vùng dữ liệu dùng chung khó khăn khi có các thay đổi Câu 28:
Hiểu biết về lập trình hướng đối tượng:
- Chương trình gồm các đối tượng: Bao gói/che dấu thông tin, Kế thừa, Đa
hình
- Vùng dữ liệu dùng chung nhỏ, phù hợp với các dự án lớn
Câu 29:
Kiểm thử phần mềm là:
- Kiểm tra xem phần mềm có đúng đặc tả ko
- Kiểm tra xem phần mềm có đạp ứng đúng nhu cầu người dùng ko
Câu 30:
Có những loại kiểm thử:
- Kiểm thử tĩnh
- Kiểm thử động
- Kiểm thử thống kê
- ….
Câu 31:
Những hạn chế thường gặp phải khi kiểm thử phần mềm:
- Ko thể khẳng định tính đúng của chương trình do bản chất qui nạp toán
học
- Nhiều trường hợp kiểm thử ở giai đoạn cuối nhưng lỗi phát sinh ở giai
đoạn đầu
- Bộ dữ liệu kiểm thử ko được thay đổi
- Người kiểm thử lại là người xây dựng phần mềm
Trang 12- Phát hiện lỗi bị hạn chế do thủ công là chính
- Dễ bị ảnh hưởng tâm lý khi kiểm thử
- Khó đảm bảo tính đầy đủ khi kiểm thử
Câu 32:
Có những mức kiểm thử phần mềm:
- Kiểm thử đơn vị
- Kiểm thử mô đun
- Kiểm thử hệ thống
- Kiểm thử chấp nhận
- Kiểm thử tích hợp
Câu 33:
Khi kiểm thử phần mềm phải tuân thủ các nguyên tắc:
- Nguyên tắc khách quan
- Nguyên tắc ngẫu nhiên
- Nguyên tắc “người dùng kém”
- Nguyên tắc “kẻ phá hoại”
Câu 34:
Hiểu biết về kiểm thử hộp trắng:
- Xét duyệt thiết kế
- Xét duyệt yêu cầu
- Nghiên cứu mã nguồn
- Kiểm tra tính đúng của chương trình
- Có thể phát hiện hết các lỗi của chương trình nhưng ko đánh giá được
tính hiệu quả của chương trình, tốn kém thời gian và công sức
Câu 35:
Hiểu biết về kiểm thử hộp đen:
- Được tiến hành sau khi có chương trình
- Ưu: + nhanh, dễ tiến hành
+ có nhiều công cụ hỗ trợ
- Nhược: phụ thuộc nhiều vào bộ dữ liệu
Câu 36:
Việc kiểm thử phần mềm nên được làm ở những giai đoạn nào của quá trình phát triển phần mềm: Ở toàn bộ quá trình phát triển, ở giai đoạn nào
Trang 13cũng cần phải rà soát sửa đổi các lỗi và lỗi được phát hiện càng sớm càng tốt, càng đỡ tốn kém Nếu lỗi phát hiện muộn thì chi phí sửa đổi lớn