Tải bản đầy đủ (.doc) (15 trang)

đồ án môn công nghệ phần mềm

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (110.31 KB, 15 trang )

Đáp án môn CNPM:
Câu1: Khái niệm về công nghệ phần mềm? Nêu nội dung cơ bản của
công nghệ phần mềm?
Trả lời:
*, Khái niệm về công nghệ phần mềm:
- Công nghệ phần mềm là một lĩnh vực nghiên cứu của tin học nhằm đưa ra
các nguyên lý, phương pháp, công cụ, phương tiện giúp cho việc thiết kế và
cài đặt một sản phẩm phần mềm đạt được các yêu cầu sau một cách tốt nhất:
+ Phải có tính đúng đắn và khoa học.
+ Dễ tiếp cận và cải tiến.
+ Phổ dụng.
+ Độc lập với các thiết bị.
*, Nội dung cơ bản của công nghệ phần mềm:
- Tìm hiểu yêu cầu của bài toán, yêu cầu của khách hàng, thu thập đầy đủ
các thông tin và phân tích theo mọi khía cạnh kể cả chiều rộng lẫn chiều sâu.
- Đặc tả tại mỗi nút của chương trình ta nêu được các tính chất, đặc trưng
của dữ liệu vào và ra mà không cần quan tâm đến nội dung các thao tác bên
trong của nó. Đặc tả có thể sử dụng các công thức hoặc mô hình toán học để
đặc tả một cách hình thức hoặc dùng ngôn ngữ tự nhiên để diễn tả một cách
phi hình thức kết hoặc kết hợp cả hai.
- Thiết kế chương trình bằng phương pháp lập trình có cấu trúc.
- Kiểm thử chương trình một cách có hệ thống cho nhiều bộ dữ liệu khác
nhau để chạy thử, kiểm tra phát hiện lỗi, kiểm tra tính ổn định, miền nhớ,
miền nháp của chương trình và độ phức tạp theo thời gian, theo thuật toán.
- Chứng minh tính đúng đắn của chương trình.
- Đánh giá chất lượng của chương trình.
- Quản lý việc thiết kế, cài đặt vẫn hành và bảo trì phần mềm, cung cấp các
phần mềm trợ giúp liên quan cho người sử dụng.
Câu 2: Trình bày khái niệm sản phẩm phần mềm? Các nhóm sản phẩm
phần mềm hiện có?Các giai đoạn cho ra đời một sản phẩm phần mềm?
Trả lời:


*, Khái niệm sản phẩm phần mềm:
- Sản phẩm phần mềm là một hoặc một nhóm các chương trình được xây
dựng để giải quyết một vấn đề nào đó. Ví dụ: chương trình quản lý hoạt
động của máy móc và các chương trình ứng dụng.
*, Các nhóm sản phầm phần mềm hiện có:
Hiện nay người ta phân chia thành 7 nhóm phần mềm chính.
- Nhóm các hệ điều hành: Gồm các chương trình quản lí ổ đĩa, màn hình,
1
chương trình quản lí các tệp, quản trị mạng, quản lí thư viện, quản lí các
chương trình dịch.
- Nhóm chương trình dịch: mỗi một ngôn ngữ có một chương trình dịch
riêng.
- Nhóm các chương trình hệ thống: Gồm có những chương trình soạn thảo
văn bản, các chương trình đồ hoạ, chương trình tạo giao diện thân thiện giữa
người dùng và hệ điều hành, các chương trình mở rộng các chức năng tệp.
- Nhóm các tiện ích và trò chơi: chương trình xử lí bảng tính điện tử, chương
trình tìm và diệt virus, tất cả các trò chơi.
- Nhóm các hệ quản trị CSDL
- Nhóm các chương trình ứng dụng có tính hệ thống:
+ Nhóm các chương trình xử lí dữ liệu đa năng: Chương trình phục vụ tính
toán cấp cơ sở, hệ chuyên gia, hệ tương tự, hệ mô phỏng, hệ tự động thiết
kế, dạy học và tự học.
+ Chương trình xử lí nhận dạng, phân tích, tổng hợp tiếng nói, hình ảnh.
+ Tất cả những chương trình điều khiển qui trình công nghiệp.
*, Các giai đoạn để cho ra đời một sản phẩm phần mềm:
- Tìm hiểu nhu cầu của khách hàng:
Đây là giai đoạn đầu tiên và không thể thiếu được trong việc xây dựng phần
mềm cho một hệ thống nào đó. Sản phẩm phần mềm mà nhóm phát triển tạo
ra suy cho đến cùng thì phải đáp ứng được (không phải là toàn bộ) nhu cầu
của khách hàng.

-Xác định rõ các chức năng hệ thống:
Chia ra từng khối lớn tương đối độc lập và giao cho từng nhóm người thực
hiện. Mỗi nhóm người phải chụ trách nhiệm từ việc thiết kế - sản xuất - thử
nghiệm theo một nguyên tắc nhất định và một ngôn ngữ cùng với cơ sở dữ
liệu thống nhất. Sau đó ghép nối các khối thành khối lớn.
- Sửa chữa và thử nghiệm nếu thấy cần thiết:
Đây là giai đoạn mang tính nội bộ của nhóm phát triển phần mềm. Hệ thống
có thể được chia thành nhiều phần nhỏ (module) rời rạc nhau. Do vậy khi
xây dựng xong chúng ta cần phải thử nghiệm cho từng module đó. Sau đó
tiến hành tích hợp các module lại để tạo thành hệ thống hoàn chỉnh. Việc
kiểm thử tích hợp phải được tiến hành. Các thay đổi có thể được thêm vào;
các ý kiến đóng góp của khách hàng cũng được ghi nhận và đưa vào trong
phần mềm tại giai đoạn cuối cùng này.
2
-Bàn giao sản phẩm cho khách hàng, tìm hiểu ý kiến của khách hàng để
quyết định nhân bản nếu nó tốt hoặc là để sửa đổi. Đào tạo người sử dụng :
Trong quá trình từ khi tìm hiểu nhu cầu của khách hàng cho đến khi hoàn
thiện, trong thời kỳ trước kia, trung bình mỗi người trong một ngày chỉ làm
được 5 hoặc 6 lệnh. Khi đó có thể nói “Lập trình phần mềm hết sức nặng
nhọc”. Chính vì vậy người ta phải cố gắng sử dụng những chương trình con
(modul) chương trình của những người đi trước tạo ra (thường để trong thư
viện) và đồng thời người ta cũng tạo ra các modul thêm vào thư viện để
người khai thác có thể dùng.
=> Theo quan điểm hiện nay, các công cụ lập trình đã hỗ trợ rất lớn cho lập
trình viên. Lập trình không còn là một công việc nặng nhọc nữa. Trái lại,
người lập trình lại là người có vai trò cuối cùng trong quá trình sản xuất
phầm mềm. Quan trọng nhất bây giờ hiện tại là nắm bắt và phân tích yêu cầu
của khách hàng. Do vậy người phân tích và thiết kế hệ thống là người đóng
vai trò quyết định đối với toàn bộ hệ thống.
Câu 3: Các mô hình của quá trình phát triển phần mềm? Đánh giá ưu

nhược điểm của từng mô hình ?
Trả lời:
*, Mô hình thác nước: Là mô hình trải qua 4 giai đoạn tuần tự, kết thúc giai
đoạn này chuyển qua giai đoạn sau :
+ Giai đoạn xác định các yêu cầu của bài toán và đề tài.
+ Giai đoạn thiết kế.
+ Giai đoạn thử nghiệm.
+ Giai đoạn tổng hợp.
- Ưu điểm: Được sử dụng quen thuộc từ trước đến nay.
- Nhược điểm: Nhiều khi đến giai đoạn tích hợp thường xảy ra nhiều vấn đề
trục trặc trong vấn đề ghép nối.
*, Mô hình thăm dò: Phát triển càng nhanh càng tốt các chức năng chính sau
đó cải tiến hoàn chỉnh dần cho đến khi thảo mãn tất cả yêu cầu của người sử
dụng.
- Hạn chế: Thích hợp với những pm qui mô vừa và nhỏ.
*, Mô hình tạo nguyên mẫu: Tương tự như mô hình thăm dò, lựa chọn nhanh
những chức năng chính để phát triển sau đó đưa cho người sử dụng đóng
góp ý kiến, đưa người dùng dùng thử cho đến khi đạt yêu cầu.
3
- Ưu điểm: Không có giai đoạn tích hợp, người dùng được tiếp cận với hệ
thống ngay từ những giai đoạn đầu để bổ sung hoàn thiện phần mềm theo
đúng yêu cầu
*, Mô hình biến đổi hình thức: Là môn hình mà người ta đặc tả hệ thống
dưới dạng tổng thể, khái quát rồi cụ thể hoá, chi tiết hoá dần đến khi có thể
chuyển thẳng sang một ngôn ngữ lập trình cụ thể nào đó.
*, Mô hình tập hợp các thành phần dùng lại được: Là mô hình thực hiện với
những phần mềm đã có sẵn được sử dụng từ trước đến nay. Có một số chức
năng vẫn được sử dụng tốt, một số chức năng đã trở lên lạc hậu. Người ta
xây dựng phần mềm mới bằng cách thu lượm tất cả các chức năng modul
còn sử dụng được của phần mềm trước và thêm vào những chức năng mới

cho đến khi thỏa mãn yêu cầu.
- Ưu điểm: Tiết kiệm thời gian, công sức sản xuất ra những cái có rồi.
- Nhược điểm: Tuỳ từng trường hợp, hạn chế trong ngôn ngữ sử dụng.
Câu 4: Hãy nêu các tiêu chuẩn của nhóm thành viên sản xuất phần
mềm ? Theo bạn thành viên nào là quan trọng nhất ? Vì sao ?
Nhóm sản xuất phần mềm gồm :
- Người chủ nhiệm đề tài.
- Người phân tích thiết kế hệ thống.
- Người phụ trách phần cứng.
- Người phụ trách phần mềm.
- Các lập trình viên
- Những người phụ trách marketing
Yêu cầu tối thiểu với những người này là :
- Tri thức phần cứng
- Khả năng tiếp cận hệ thống
- Kiến thức cơ bản về toán và thuật toán
- Những hiểu biết về công nghệ phần mềm
- Biết một số ngôn ngữ lập trình
- Khả năng tiếp thị
Ngoài ra, mỗi người phải khá giỏi về lĩnh vực mình phụ trách.
Cụ thể ,
+ Chủ nhiệm đề tài phải là người có khả năng nhất về mặt tổ chức, quán
xuyến các công việc chung, có khả năng đối nội đối ngoại và khả năng tâm lí
học.
+ Người phân tích thiết kế hệ thống là người giỏi nhất về chuyên môn, phụ
4
trách thu nhận yêu cầu của khách hàng để thiết kế 1 hệ thống đáp ứng của
khách hàng.
+ Tiếp đến là người phụ trách phần mềm, có nhiệm vụ trợ giúp cho cả nhóm,
cung cấp cho nhóm tất cả các chương trình trợ giúp liên quan, các phần mềm

liên quan, các công cụ. Điều đó giúp giảm bớt thời gian, công sức và sự
trùng lặp.
Từ đó,ta thấy rằng người quan trọng nhất là người phân tích thiết kế hệ
thống.
Câu 5: Các lỗi có thể mắc phải trong quá trình thiết kế và cài đặt phần
mềm là gì? Nguyên nhân? Theo bạn lỗi nào là lỗi nặng nhất? Vì sao?
Trả lời:
*, Các lỗi có thể mắc phải trong quá trình thiết kế và cài đặt phần mềm và
nguyên nhân:
- Lỗi thứ 1: Lỗi về ý đồ thiết kế sai. Đây là lỗi nặng nhất. Hệ thống mà
chúng ta xây dựng sẽ không thể đáp ứng được yêu cầu của khách hàng.
- Lỗi thứ 2: Lỗi phân tích các yêu cầu không đầy đủ hoặc lệch lạc. Đây là lỗi
cũng thường xảy ra. Thực tế cho thấy, những người làm chuyên môn thì
không hiểu sâu về tin học nên không cung cấp được những thông tin cần
thiết cho những người làm tin học. Ngược lại, những người làm tin học là
không hiểu hết về chuyên môn nghiệp vụ của khách hàng. Do vậy mà việc
thu thập thông tin sẽ không đầy đủ hoặc thiếu chính xác. Chính vì vậy mà dễ
mắc lỗi. Lỗi này có thể được khắc phục tại các cuộc gặp gỡ giữa hai bên và
giải đáp những điều còn mơ hồ.
- Lỗi thứ 3: Lỗi hiểu sai các chức năng. Đây là lỗi thường hay mắc phải do
trong hệ thống có thể có các chức năng hay lĩnh vực có tính chuyên môn
cao. Các từ chuyên ngành. Dẫn đến khó hiểu đối với nhà phát triển phần
mềm.
+ Ví dụ: Đối với phân số, khi cài đặt để đỡ rắc rối thì ta quan niệm
N (số tự nhiên). Như vậy biểu thức 3/-4 sẽ được hiểu là thương của hai số
nguyên. Khi cài đặt, đôi khi người ta không chú ý đến chuyện này, do vậy có
thể mắc lỗi. Z (số nguyên); Mẫu_số Tử_số
- Lỗi thứ 4: Lỗi bỏ xót các chức năng. Lỗi này các nhà phát triển phần mềm
cũng hay mắc phải, do điều kiện thời gian và chuyên môn có hạn, đôi khi
các chức năng không thể được đưa ra một cách đầy đủ. Lỗi này có thể được

hạn chế (không phải là khắc phục tất cả) qua thời gian làm việc nhiều hơn
với khách hàng, do vậy mà ta có thể biết được nhiều thông tin hơn.
+ Ví dụ: Khi thực hiện các phép toán với Phân_số ta quên rút gọn phân số;
không khởi tạo; kiểm tra phép chia cho số 0, …
+ Một khía cạnh khác nữa, đối với việc thiết kế hướng đối tượng (sẽ nghiên
5
cứu sau), ta cần phải tuân theo nguyên lý về hướng đối tượng (chủ yếu là
tính che dấu thông tin và kế thừa): ta phải biết cách để truy nhập đến từng
thành phần của đối tượng.
- Lỗi thứ 5: Lỗi tại các đối tượng chịu tải. Lỗi xảy ra tại các hàm hoặc các
thủ tục cấp thấp xây dựng lên các thủ tục khác. Lỗi này cũng là một lỗi nặng,
có thể kéo theo sai xót ở một loạt các hàm hoặc thủ tục khác.
+ Xét về nguyên lý và mức độ lỗi thì lỗi nặng nhất vẫn là ở ý đồ thiết kế sai
hoặc là ở thủ tục chịu tải mức thấp nhất.
+ Xét ví dụ sau: Giả sử ta cần thực hiện các phép toán trên một đối tượng
Phân_số. Khi đó cần thực hiện các phép toán + (cộng), - (trừ), * (nhân), /
(chia). Để thực hiện phép +, - thì ta cần gọi thủ tục tìm BSCNN, thủ tục này
lại phải gọi tới thủ tục tìm USCLN để lấy tích chia cho USCLN; các phép
toán + - * / phải rút gọn USCLN. Như vậy ở đây có các đối tượng chịu tải có
mức độ khác nhau và thủ tục USCLN chịu tải nhiều nhất (thủ tục ở cấp thấp
nhất).
Như vậy, nếu như trong quá trình thiết kế hay thực hiện cài đặt thủ tục
USCLN mà có lỗi thì lỗi đó sẽ ảnh hưởng đến toàn bộ hệ thống của chúng
ta.
- Lỗi thứ 6: Lỗi lây lan. Đây là lỗi do virus có thể lây từ chương trình này
sang chương trình khác. Ví dụ, nếu trong thư viện có một chương trình bị
lỗi. Nếu ta gọi thủ tục này thì sẽ có lỗi.
- Lỗi thứ 7: Lỗi cú pháp. Lỗi này sinh ra do việc viết sai các quy định về văn
phạm. Những lỗi này thường được chương trình dịch thông báo ngay khi
dịch theo nguyên lý an toàn: các lỗi nhỏ nhất cũng phải được xử lý ngay khi

dịch đến đó.
- Lỗi thứ 8: Lỗi do hiệu ứng phụ. Lỗi xảy ra do việc sử dụng hàm, thủ tục
hay chương trình con, có các phép tính biến đổi chương trình con nằm ngoài
ý muốn của người lập trình. Xét ví dụ sau:
Var x, y, z : real;
Function FF : real;
Begin
X := 10 + 2*x;
FF := x + y/5;
End;
6
Begin
Write(' x = '); readln(x);
Write(' y = '); readln(y);
Z := FF;
Writeln(' 10 + 2*', x, '+', y, '/5 = ', z);
End.
Chương trình sai là do x là biến toàn cục nên nó tác động trên toàn bộ
chương trình. Có nhiều cách sửa bằng cách sửa chương trình bằng cách thêm
biến phụ hoặc biến địa phương. Hay bằng cách chuyển đổi lại cách in ra (vì
kết quả vẫn đúng). Để tránh hiệu ứng phụ ta cần phải tuân theo:
+ Tất cả các biến được khai báo ở trong chương trình con đều là biến địa
phương.
+ Tất cả các tham biến hình thức được truyền theo tham trị trong chương
trình con dù có trùng tên với biến toàn cục cũng không làm thay đổi giá trị
của biến toàn cục.
+ Đối với các phép tính làm thay đổi giá trị của biến thì phải dùng biến phụ.
Câu 6: Trình bày các tiêu chuẩn của một sản phẩm phần mềm? Tiêu
chuẩn nào là quan trọng nhất ?
Trả lời:

Người ta xác định một số tiêu chuẩn để đánh giá một sản phẩm phần mềm.
- Tiêu chuẩn 1: Tính đúng đắn.(Tiêu chuẩn quan trọng nhấ t^^?)
Các sản phẩm phần mềm phải thực hiện được chính xác các mục tiêu được
đặt ra ở giai đoạn thiết kế, không bị treo máy hoặc ra kết quả sai đối với bộ
dữ liệu nằm trong phạm vi yêu cầu. Để đạt được yêu cầu này, các sản phẩm
phần mềm trước hết phải có thuật toán đúng và chương trình tình phải tương
ứng với thuật toán.
- Tiêu chuẩn 2: Tính khoa học.
+ Tính khoa học về cấu trúc: Các sản phẩm phần mềm được chia thành các
đơn vị nhỏ cân đối và có quan hệ hữu cơ không trùng lặp và có thể tổ hợp
từng nhóm để tạo ra các chức năng mới. Thuật toán và chức năng được xây
dựng một cách có cấu trúc.
+ Tính khoa học về nội dung: Thuật toán được xây dựng dựa trên những
thành tựu mới của toán học và tin học. Các chương trình phải được xây dựng
trên các ngôn ngữ lập trình mới và phổ dụng.
+ Tính khoa học về hình thức thao tác: Mỗi lệnh của chương trình cần phải
được tối ưu. Muốn vậy, các lệnh phải được xây dựng một cách hợp lý, logic
và phù hợp với tư duy tự nhiên của người sử dụng. Các lỗi phải được thông
báo một cách rõ ràng (lỗi số bao nhiêu, vị trí lỗi, nội dung lỗi, cách khắc
phục).
7
- Tiêu chuẩn 3: Tính hữu hiệu. Thể hiện ở các mặt sau:
+ Hữu hiệu về kinh tế: Có giá trị kinh tế hoặc có ý nghĩa giá trị thu được khi
áp dụng sản phẩm đó.
Hữu hiệu về tốc độ xử lý: Có số lượng lớn các đối tượng được xử lý trong
một đơn vị thời gian. Lượng tối đa của sản phẩm quản lý được (ví dụ: trong
Excel quản lý được 65536 bản ghi, FoxPro quản lý được 255 trường).
+ Hữu hiệu về dung lượng bộ nhớ: Tốn càng ít càng tốt.
- Tiêu chuẩn 4: Tính sáng tạo.
Sản phẩm phải mới mẻ và độc đáo. Nếu phát triển trên cái cũ thì phải tiếp

theo được những cái hay của nó đồng thời phải cung cấp được các chức
năng mới tốt hơn so với cái đã có.
- Tiêu chuẩn 5: Tính an toàn.
Sản phẩm phần mềm phải có cơ chế bảo mật chống xâm phạm, sao chép
trộm và làm biến dạng chương trình. Có cơ chế bảo vệ đối tượng mà nó phát
sinh và quản lý, có cơ chế hồi phục khi có sự cố.
- Tiêu chuẩn 6: Tính đầy đủ và toàn vẹn.
Sản phẩm thực hiện được đầy đủ yêu cầu của khách hàng. Các chức năng
phải có tính đối xứng, nghĩa là: có tạo lập thì có xoá bỏ, có mở thì có đóng,
có tiếp theo thì cũng cho phép trở về, …
- Tiêu chuẩn 7: Tính độc lập với các thiết bị.
Sản phẩm có thể sử dụng trên nhiều loại máy khác nhau và sử dụng nhiều
các thiết bị đi kèm khác nhau. Độc lập cả với cấu trúc của đối tượng mà nó
phát sinh ra.
- Tiêu chuẩn 8: Tính phổ dụng.
Có thể sử dụng được rộng rãi trong nhiều lĩnh vực và ở nhiều chế độ làm
việc.
- Tiêu chuẩn 9: Tính dễ học và dễ sử dụng, cải tiến.
Sản phẩm hợp với yêu cầu người dùng về ngôn ngữ, hệ thống các chức năng
(menu), các thông báo, cú pháp đơn giản, rõ ràng, dễ nhớ, dễ thao tác, dễ
tăng cường các chức năng, dễ mở rộng và cải tiến.
Câu 7: Hồ sơ của sản phẩm phần mềm bao gồm những gì? Theo
anh(chị) như thế đã đủ chưa? Có cần thêm những gì nữa không?
Trả lời:
*, Khi bàn giao sản phẩm cho khách hàng ta cần chú ý đến các thành phần
sau của một hồ sơ phần mềm:
+ Phải có chương trình nguồn, chương trình đích để trên đĩa.
+ Đính kèm các phần mềm tiện ích có liên quan.
+ Các bản in chương trình nguồn, trên đó có lời giải thích rõ ràng để tiện cho
việc chứng minh tính đúng đắn của chương trình.

+ Bản mô tả các thuật toán của chương trình.
8
+ Bảng hướng dẫn sử dụng chi tiết, các lỗi có thể có và cách xử lý lỗi.
+ Các thông số đặc trưng của chương trình, sản phẩm gồm: Tên chủ nhiệm
đề tài, chức vụ, nơi công tác, địa chỉ, điện thoại, … Các thông tin về sản
phẩm: tên đầy đủ, tên vắn tắt, số hiệu phiên bản, ngày tháng thiết kế và cài
đặt, các chức năng của hệ thống, chế độ làm việc (hộp hội thoại, menu, …).
+ Cấu hình tối thiểu của hệ thống, các thiết bị đi kèm. Cấu hình tối đa sử
dụng hết công suất của sản phẩm.
+ Giới thiệu về ngôn ngữ lập trình được sử dụng để tạo ra sản phẩm.
+ Cơ chế bảo mật và một số phần mềm tương thích.
+ Cung cấp thêm một số tư liệu khác: phần mềm quốc phòng, một số các kết
quả đã sử dụng ở một số nơi, thời gian sử dụng là bao nhiêu, yêu cầu về bản
quyền, có thể biết khoá bảo mật hay không?
Câu 8: Thế nào là một thiết kế tốt? Chất lượng của thiết kế được thể
hiện qua các yếu tố gì?
Trả lời:
a, Một thiết kế tốt:
- Thiết kế phần mềm được gọi là tốt nếu nó sản sinh ra một chương trình tối
ưu. Càng chặt chẽ, gọn ngàng và nhẹ càng tốt, đồng thời thiết kế dễ bảo
dưỡng thích nghi, bổ sung cải tiến. Dễ đọc, dễ hiểu, các thành phần của thiết
kế phải gắn kết với nhau theo một quan hệ logic chặt chẽ.
- Giữa các thành phần của thiết kế được ghép nối một cách dễ dàng.
b, Các yếu tố đo chất lượng của thiết kế:
*, Sự kết dính:
- Sự kết dính của một thành phần là độ đo về tính khớp lại với nhau giữa các
phần tử trong thành phần đó.
- Độ kết dính giữa các phần tử trong một thành phần được chia thành các
loại theo mức kết dính tăng dần như sau:
+ Kết dính gom góp: Các phần của thành phần không liên quan với nhau,

song lại bị bó vào một thành phần.
+ Kế dính hỗn hợp logic: Các thành phần cùng thực hiện chức năng tương
tự, chẳng hạn như vào, xử lý lỗi… là được đặt vào trong một thành phần.
+ Kết dính theo thời điểm: Tất cả các thành phần cùng hoạt hoá một lúc,
chẳng hạn như khởi sự và kết thúc… là được bó vào với nhau.
+ Kết dính thủ tục: Các phần tử trong thành phần được ghép lại trong một
dãy điều khiển.
+ Kết dính truyền thông: Các phần trong thành phần cùng thao tác trên cùng
một dữ liệu và và đưa ra cùng một dữ liệu ra.
+ Kết dính tuần tự: Trong một thành phần, “ra” của phần tử này là “vào” của
phần tử khác.
9
+ Kết dính chức năng: Mỗi phần của thành phần đều cần thiết để thi hành
một chức năng nào đó.
*, Sự ghép nối:
- Thể hiện tính độc lập cao giữa các thành phần của thiết kế.
- Việc ghép nối là khó khăn nếu các thành phần (modul) dùng chung nhiều
biến tổng thể (hoặc dùng chung nhiều lệnh chuyển quyền điều khiển)
- Việc ghép nối dễ dàng nếu thông tin của các thành phần nằm trọn trong
thành phần đó và việc liên hệ giữa các thành phần thông qua việc truyền
tham số.
*, Độ dễ hiểu: Để đánh giá chúng ta dựa vào các yếu tố:
- Để hiểu được một thành phần này chúng ta có phải tham khảo các thành
phần khác hay không?
- Tên gọi của hàm, biến, hằng, chương trình con có lột tả được ý nghĩa của
nó hay không?
- Các thực thể của thế giới thực có quan hệ rõ ràng với các thành phần của
thiết kế hay không?
*, Độ phức tạp của thuật toán:
- Độ phức tạp của thuật toán càng cao thể hiện mối quan hệ giữa các thành

phần.
- Độ phức tạp của thuật toán chỉ đánh giá một phần độ dễ hiểu của thuật
toán, ngoài ra nó còn phụ thuộc vào việc chọn lựa dữ liệu và cách mô tả thiết
kế.
*, Tính dễ thích nghi: Thuận tiện cho bảo dưỡng và bảo trì hệ thống.
Câu 9: Phân tích ưu nhược điểm của các phương pháp thiết kế hướng
đối tượng và phương pháp thiết kế hướng chức năng
Trả lời:
Phương pháp thiết kế phần mềm gồm:
a, Phương pháp thiết kế hướng chức năng:
- Thiết kế hướng chức năng là một cách tiếp cận thiết kế phần mềm do bản
thiết kế được phân giải thành một bộ các đơn thể tác động qua lại lẫn nhau,
mà mỗi đơn thể có một chức năng được xác định rõ ràng. Các chức năng có
trạng thái cục bộ nhưng chia sẻ nhau trạng thái hệ thống. Trạng thái này là
tập trung và mọi chức năng đều có thể truy cập được.
- Có người nghĩ rằng, thiết kế hướng chức năng đã lỗi thời và nên được thay
đổi bằng cách tiếp cận hướng đối tượng. Thế nhưng, trên thực tế nhiều tổ
chức đã phát triển các chuẩn và các phương pháp dựa trên sự phân rã các
chức năng. Nhiều phương pháp thiết kế kết hợp với các công cụ CASE đều
là hướng chức năng. Vô khối hệ thống đã được phát triển bằng cách sử dụng
phương pháp tiếp cận hướng chức năng. Bởi vậy thiết kế hướng chức năng
10
vẫn còn được sử dụng rộng rãi.
*, Ưu điểm:
- Quen thuộc.
- Xây dựng hệ thống thông qua biểu đồ luồn dữ liệu, mô tả việc biến đổi dữ
liệu một cách logic. Đây là kết quả hợp nhất của nhiều phương pháp diễn tả
dữ liệu vào ra qua một dãy biến đổi. Ngoài ra người ta còn phải xây dựng
các bảng biểu dữ liệu, các mỗi liên kết cũng như lược đồ cấu trúc để thể hiện
cấu trúc của hệ thống.

*, Nhược điểm:
- Do chung nhau trạng thái hệ thống nên việc thay đổi một chức năng nào đó
thì sẽ ảnh hưởng đến các chức năng khác.
=> Phương pháp này chỉ được sử dụng tốt khi các biến dùng chung, các
trạng thái chung ít và phải được xác định một cách rõ ràng.
b, Phương pháp thiết kế hướng đối tượng:
- Phương pháp thiết kế hướng đối tượng là dựa trên việc che dấu thông tin,
nhìn hệ phần mềm như một bộ các đối tượng tương tác với nhau chứ không
phải là bộ các chức năng như cách tiếp cận chức năng. Các đối tượng có một
trạng thái được che dấu và các phép toán trên trạng thái đó. Thiết kế biểu thị
các dịch vụ được yêu cầu cùng với những hỗ trợ cung cấp bởi các đối tượng
có tương tác với nó.
- Không có vùng dữ liệu dùng chung. Các đối tượng trao đổi với nhau bằng
trao đổi thông báo (message) chứ không phải bằng các biến dùng chung.
- Các đối tượng là các thực thể độc lập, dễ thay đổi vì rằng tất cả các trạng
thái và các thông tin biểu diễn chỉ ảnh hưởng trong phạm vi chính đối tượng
đó thôi. Các thay đổi về biểu diễn thông tin có thể được thực hiện không cần
tham khảo (tham chiếu) tới các đối tượng hệ thống khác.
- Các đối tượng có thể phân tán và có thể hành động tuần tự hoặc song song.
*, Ưu điểm:
- Dễ bảo trì vì các đối tượng là độc lập. Các đối tượng có thể hiểu và cải
biến như là một thực thể độc lập. Thay đổi trong thực hiện một đối tượng
hoặc thêm vào các dịch vụ sẽ không làm ảnh hưởng đến các đối tượng hệ
thống khác.
- Các đối tượng là rất tốt cho việc sử dụng lại (do tính độc lập của chúng).
Một thiết kế sau có thể dùng lại các đối tượng đã có trong bản thiết kế trước
đó.
- Có một vài lớp hệ thống thể hiện phản ánh quan hệ rõ ràng giữa các thực
thể có thực (chẳng hạn như các thành phần dùng chung) với các đối tượng
điều khiển trong hệ thống. Điều này làm cho thiết kế trở lên dễ hiểu, dễ tiếp

cận hơn.
*, Nhược điểm:
11
- Sự nhận định về các đối tượng trong hệ thống một cách hợp lý là một điều
khó. Cách nhìn nhận tự nhiên nhiều hệ thống là cách nhìn chức năng và
thích nghi với cách nhìn hướng đối tượng đôi khi là khó khăn. Đây là một
phương thức còn khá mới mẻ trong phân tích và thiết kế hệ thống thông tin.
Câu 10: Thế nào là tránh lỗi và thứ lỗi trong phát triển phần mềm?
Trả lời:
*, Tránh lỗi :
Tất cả mọi người đều muốn phát triển phần mềm không có lỗi, là phần mềm
tuân theo đúng đặc tả. Như vậy, phần mềm không có lỗi là phần mềm thỏa
mãn yêu cầu của người sử dụng vì nếu đặc tả sai hoặc đặc tả không theo
đúng yêu cầu của người sử dụng thì phần mềm tuân theo đúng đặc tả cũng
vậy(cũng sai theo đặc tả sai).Vì vậy để phát triển phần mềm không có lỗi thì
người ta phải tuân theo các yếu tố sau:
o Phát triển phần mềm dựa trên đặc tả hệ thống chính xác
o Phải dựa trên che dấu và bao gói thông tin
o Tăng cường việc duyệt lại trong quá trình phát triển phần mềm
o Đưa chất lượng lên hàng đầu
Lập kế hoạch cẩn thận cho thử nghiệm hệ thống để phát hiện lỗi còn tiềm ẩn
chưa phát hiện trong quá trình duyệt lại trên.
Việc xây dựng 1 phần mềm không lỗi là 1 việc làm rất đắt đỏ. Việc tìm và
phát hiện các lỗi tốn rất nhiều thời gian và công sức. Vì vậy đôi khi người ta
chấp nhận phần mềm với một số lỗi rất nhỏ nhưng giá bán thấp hơn một
chút còn hơn là cố gắng sửa để bán với giá cao hơn 1 chút.
Có một số cấu trúc hay gây lỗi, đó là: lệnh nhảy không điều kiện goto, cấu
trúc số thực dấu phẩy động, con trỏ, đệ qui, xử lí song song, các ngắt…
Những cấu trúc này trong nhiều bài toán làm cho chương trình có thể ngắn
gọn, hiệu quả tuy nhiên những cấu trúc này rất hay gây lỗi.Vì vậy khi sử

dụng phải hết sức thận trọng.
*, Thứ lỗi:
Có một số phần mềm tiềm ẩn 1 số lỗi nhỏ không đáng kể, nhưng rất khó để
khắc phục => coi phần mềm không có lỗi. Việc làm này gọi là thứ lỗi.
Để thứ lỗi, người ta phải tiến hành một số hành động sau:
o Phát hiện lỗi
o Đánh giá mức độ thiệt hại
o Phục hồi sau khi gặp lỗi
Phục hồi tiến : Chỉnh sửa trạng thái hiện tại đang lỗi
Phục hồi lùi : Lui về trạng thái an toàn trước khi gặp lỗi
o Chữa lỗi
12
Câu 11: Phân biệt thẩm định và xác minh phần mềm?Trình bày các loai
và chiến lược kiểm thử phần mềm?
Trả lời:
*, Thẩm định phần mềm:
Là xem phần mềm cho kết quả đúng hay không và có thỏa mãn yêu cầu của
người sử dụng hay không.
*, Xác minh phần mềm:
Là xem sản phẩm có đúng là sản phẩm được yêu cầu không và chương trình
có đúng với đặc tả không.
Thẩm định và xác minh phần mềm là 2 quá trình liên tục, xuyên suốt tử lúc
phân tích các yêu cầu của khách hàng cho đến khi giao sản phẩm, với mục
đích: Xem hệ thống có đáp ứng yêu cầu của khách hàng không, phát hiện lỗi
của phần mềm.
Để thẩm định và xác minh phần mềm người ta phải thử nghiệm.
*, Các loại thử nghiệm:
1. Thử thống kê: cho nhiều bộ dữ liệu khác nhau để chạy thử và tính tần suất
xuất hiện thất bại.
2. Thử khuyết tật: Cho những bộ dữ liệu thật đặc biệt để chạy thử => phải

lựa chọn được những bộ dữ liệu thật đặc biệt. Phép thử được coi là thành
công nhất nếu phơi được nhiều khuyết tật nhất.
3. Thử giới hạn tải(áp lực): Nếu phần mềm có giới hạn tải, ta thử bằng cách
tăng dần tải cho đến khi không chịu được.
Câu 12: Độ tin cậy của phần mềm? Một số cách đo độ tin cậy của phần
mềm?
Trả lời:
*, Độ tin cậy của phần mềm:
- Độ tin cậy của phần mềm là độ đo về mức độ tốt của các dịch vụ mà hệ
thống cung cấp.
- Độ tin cậy của phần mềm là một đặc trưng của hệ thống, là hệ số tỉ lệ
nghịch đối với số thất bị của phần mềm.
- Để đo độ tin cậy của phần mềm ta tiến hành các cách sau.
*,Một số cách đo độ tin cậy của phần mềm:
+ Tính xác xuất xuất hiện thành công hay thất bại.
+ Đo độ dài khoảng thời gian trung bình giữa hai lần thất bại liên tiếp.
+ Khả năng sẵn sàng hoạt động lại của hệ thống.
Câu 13:Khái niệm về dự án và quản lí dự án?
Trả lời:
13
*, Khái niệm chung về dự án:
1. Dự án: là một tập hợp các công việc, được thực hiện bởi một tập thể nhằm
đạt được một kết quả dự kiến, trong một thời gian dự kiến, với một kinh phí
dự kiến. Trong đó, 4 yếu tố không thể thiếu của dự án :
- Tập thể thực hiện dự án: nguồn nhân lực, mỗi người có chuyên môn và
năng lực nhất định.
- Thời gian dự kiến thực hiện dự án: Ngày bắt đầu, ngày kết thúc, thời điểm
trung gian ứng với kết quả trung gian.
- Kết quả dự kiến: Sản phẩm sau cùng của dự án, phải hình dung và mô tả
được. Kết quả có đặc tính/đặc điểm gì, giá trị sử dụng như thế nào? hiệu quả

ra làm sao?
- Kinh phí dự kiến: tiền để thực hiện dự án. Người (hoặc đơn vị) cấp tiền
(cấp vốn) được gọi là chủ đầu tư.
Ví dụ :
Dự án “Xây một ngôi nhà 5 tầng cho cơ quan”.
- Tập thể thực hiện: nhóm kiến trúc sư, công nhân xây dựng, giám sát viên
kỹ thuật.
- Thời gian thực hiện: 6 tháng, Khởi công: ngày N1, dự kiến kết thúc: ngày
N2.
- Kinh phí được cấp: 1tỷ đồng.
- Kết quả cần đạt được: 1 ngôi nhà 5 tầng với đầy đủ tiện nghi làm việc cho
cơ quan.
2. Dự án công nghệ thông tin:
Theo nghị quyết 49/CP ngày 4/8/1996, các dự án CNTT tập trung chủ yếu
vào các nội dung sau:
- Ứng dụng CNTT trong các hoạt động quản lý và nghiệp vụ, trong đó trọng
tâm là Tin học hóa phục vụ điều hành và quản lý Nhà nước;
- Xây dựng hệ thống các Cơ sở dữ liệu (CSDL) quốc gia và chuyên ngành;
- Phát triển tiềm lực và cơ sở hạ tầng về CNTT
Nội dung cơ bản của các dự án đó đều xoay quanh:
- Phần cứng; phần mềm.
- Sự tích hợp giữa phần cứng/phần mềm và con người.
Ví dụ về dự án công nghệ thông tin:
- Nâng cấp HĐH từ Windows 98 thành Windows 2000 cho toàn bộ hệ
thống.
- Xây dựng một hệ thống máy tính cho một trường học.
- Xây dựng và thiết k ế một Web Site.
- Xây dựng một hệ thống bán hàng qua mạng.
14
- Xây dựng hệ thống đào tạo t ừ xa.

- …
3. Phân loại dự án.
Theo tầm cỡ của dự án:
- Dự án lớn.
- Dự án trung bình và nhỏ. (nhỏ <15 người/1 năm)
Theo nội dung của dự án:
- Ứng dụng CNTT trong công tác QL và hoạt động nghiệp vụ.
- Xây dựng cơ s ở hạ tầng về CNTT
- Các dự án nhằm thực hiện nhiệm vụ đã phân công cho các B ộ ngành như
phát triển nền công nghiệp CNTT; đảm bảo đủ cán bộ tin học cho đất nước.
*, Thế nào là quản lý dự án
- Mục đích của quản lý dự án:
Mục đích cuối cùng là nhằm đảm bảo cho dự án đýợc thực hiện thành công.
Nghĩa là đáp ứng 4 vấn đề sau:
o Sản phẩm cuối cùng của dự án thực sự đáp ứng các yêu cầu của người
dùng, đảm bảo thời gian và kinh phí không vượt quá 10-20% dự tính ban
đầu;
o Người dùng hài lòng với quá trình thực hiện dự án, thực sự tham dự và
góp phần công sức của mình trong các hoạt động của dự án. Đặc biệt đối với
các dự án ứng dụng CNTT, vai trò của những cán bộ nghiệp vụ trong việc
xác định yêu cầu, phân tích quy trình, thông tin tại chính đơn vị của mình
là rất quan trọng;
o Các cấp quản lý phía trên của dự án (BCĐ CNTT, Bộ Tài chính ) được
cung cấp đầy đủ thông tin về tình hình thực hiện dự án.
o Những người thực hiện dự án cũng phấn khởi, không bị quá gò bó, tích luỹ
được kinh nghiệm, tăng thêm thu nhập
- Phương pháp và kỹ thuật quản lý dự án.
o Áp dụng các kiến thức, kỹ năng, công cụ và kỹ thuật để thực hiện mục
đích quản lý nêu trên.
o Trong suốt vòng đời của dự án, các công việc ở mỗi giai đoạn phải bao

hàm những nội dung chủ yếu sau:
o Xác định rõ các yêu cầu về phạm vi, thời gian, chi phí, rủi ro, chất lượng.
o Phân công, đôn đốc, theo dõi và kiểm tra các thành viên trong đội dự án.
15

×