Chương8 - Phần mềmmáy tính
CHƯƠNG 8.PHẦNMỀMMÁY TÍNH
8.1. KHÁI NIỆM PHẦN MỀM
Trong một số ngữ cảnh khác nhau và để nhấn mạnh một khía cạnh nào đó mà có thể có
một số phát biểu về định nghĩa phầnmềmmáytính không hoàn toàn giống nhau. Tuy
nhiên về bản chất thì các định nghĩa đều có sự thống nhất chung về nội dung một phần
mềm máytính bao gồm:
a) Các chương trình máytính được viết để thể hiện thuật toán nhằm giải quyết bài toán,
đáp ứng các yêu cầu về chức năng và hiệu quả cần thiết nào đó do người đặt hàng đưa ra.
b) Các cấu trúc dữ liệu phù hợp đã được lựa chọn sao cho chương trình có thể thao tác
được đúng và hiệu quả.
c) Các tài liệu mô tả toàn bộ bài toán, thuật toán, chương trình và cách sử dụng.
Như vậy, có thể coi phầnmềmmáytính là toàn bộ sản phẩm thu được sau khi thực hiện
các bước giải bài toán trên máy tính. Để viết chương trình, ngoài việc cần có thuật toán khả
thi, hiệu quả, việc lựa chọn ngôn ngữ lập trình, xác định phương pháp tổ chức dữ liệu có ý
nghĩa rất quan trọng. Tài liệu nói ở đây bao gồm 2 loại: tài liệu kỹ thuật nói về phầnmềm
làm việc như thế nào và tài liệu hướng dẫn sử dụng giải thích cách dùng phầnmềm đó. Tài
liệu không những giúp người sử dụng biết dùng chương trình nhất là đối với các chương
trình có quy mô lớn và phức tạp mà còn giúp có sự hiểu biết sâu sắc phầnmềm hơn. Nhờ
vậy có thể có những đề xuất hợp lý để hoàn thiện phầnmềm hơn.
Sau đây ta giới thiệu một số loại phần mềm:
8.2. PHẦNMỀM ỨNG DỤNG
Có rất nhiều phầnmềmmáytính được viết để giúp giải quyết các công việc hàng ngày
cũng như những hoạt động nghiệp vụ như soạn thảo văn bản, quản lý học sinh, quản lý kết
quả học, lập thời khoá biểu, quản lý chi tiêu cá nhân Những phầnmềm như thế gọi là các
phần mềm ứng dụng.
Có những phầnmềm ứng dụng được viết theo đơn đặt hàng riêng có tính đặc thù của một
cá nhân hay tổ chức, ví dụ phầnmềm quản lý tiền điện thoại của Bưu điện, phầnmềm quản
lý điểm, thời khó biểu ở một trường học, phầnmềm điều khiển một dây chuyền sản xuất,
quản lý khách hàng của một công ty
Có những phầnmềm được thiết kế dự trên những yêu cầu chung hàng ngày của nhiều
người chứ không phải của một người hay một tổ chức cụ thể nào. Ví dụ, các phầnmềm
soạn thảo văn bản (như Winword, WordPerfect), phầnmềm tra cứu Internet (như Internet
Explorer, Nescape Navigator), phầnmềm thiết kế bản vẽ (AutoCad), phầnmềm nghe nhạc
hay xem phim trên đĩa CD (như Jet Audio hay Mpeg). Các phầnmềm loại này được viết
rất hoàn chỉnh. Người sử dụng chỉ cần mua về, cài đặt lên máy của mình, thiết lập các chế
độ làm việc phù hợp là có thể sử dụng được. Những phầnmềm như thế gọi là phầnmềm
đóng gói
8.3. PHẦNMỀM CÔNG CỤ
Đối với những người làm tin học trong lĩnh vực phát triển phầnmềm thì phầnmềm ứng
dụng là sản phẩm và là mục tiêu cuối cùng của họ. Để hỗ trợ cho việc làm ra các sản phẩm
phần mềm, người ta lại dùng chính các phầnmềm khác gọi là phầnmềm công cụ. Điều này
cũng giống như để chế tạo động cơ ô tô ta dùng máy công cụ. Các phầnmềm dịch tự động
59
Chương 8 - Phầnmềmmáy tính
các giải thuật viết trong một hệ thống quy ước nào đó thành các chương trình trên mã máy
mà máytính có thể thi hành được, các phầnmềm hỗ trợ tổ chức dữ liệu, những phầnmềm
phát hiện lỗi lập trình và sửa lỗi (debuger) đều thuộc các phầnmềm công cụ. Do các
phần mềm công cụ được dùng với mục đích phát triển phầnmềm nên ta còn gọi phầnmềm
công cụ là phầnmềm phát triển.
8.4. PHẦNMỀM HỆ THỐNG
Nói chung, các chương trình ứng dụng hoặc phầnmềm công cụ được khởi động khi cần
thiết và ngừng hoạt động khi thực hiện xong công việc.
Có những chương trình phải thường trực chỉ vì nó phải cung cấp các dịch vụ theo yêu cầu
của các chương trình khác mà không biết trước các yêu cầu đó xuất hiện khi nào. Các
chương trình như vậy trở thành môi truờng làm việc cho các phầnmềm khác. Những phần
mềm như thế gọi chung là phầnmềm hệ thống.
Phần mềm hệ thống quan trọng nhất là hệ điều hành (operating system). Hệ điều hành có
chức năng điều hành toàn bộ hoạt động của máytính trong suốt quá trình làm việc.
Hệ điều hành không phải là phầnmềm hệ thống duy nhất. Còn có nhiều phầnmềm thường
trực cung cấp môi trường làm việc cho các phầnmềm khác, ví dụ phầnmềm gõ bàn phím
theo kiểu tiếng Việt. Một khi được cài đặt ta có thể gõ tiếng Việt từ nhiều phầnmềm khác.
Một ví dụ khác là các hệ quản trị cơ sở dữ liệu hoạt động theo kiểu khách - chủ. Từ nhiều
máy tính khác nhau cũng như từ nhiều ứng dụng khác nhau ta có thể gửi yêu cầu tra cứu
dữ liệu tới máytính chạy dịch vụ cơ sở dữ liệu, phầnmềm sẽ xử lý và đưa ra kết quả gửi
lại ứng dụng đã yêu cầu.
8.5. PHẦNMỀM TIỆN ÍCH (UTILITY)
Còn có một loại phầnmềm khác chỉ giúp chúng ta cải thiện hiệu quả công việc khi làm
việc với máy tính. Chúng là các công cụ đáp ứng những nhu cầu chung của nhiều người và
không liên quan đến các lĩnh vực công việc cụ thể. Ví dụ, các phầnmềm soạn văn bản có
thể soạn các văn bản đơn giản hay soạn thảo chương trình máy tính, những phầnmềm sao
chép dữ liệu từ nơi này đến nơi kia, những phầnmềm tìm và diệt virus đều là các tiện ích.
Nhiều phầnmềm tiện ích có hiệu quả rất cao. Trong những năm 80 của thế kỷ 20, khi hệ
điều hành DOS còn phổ biến trên các máy vi tính, rất nhiều người đã từng sử dụng tiện ích
Norton Commander (NC) của Symantec. Phầnmềm này thay đổi cơ bản cách giao tiếp của
người với máy tính. Người sử dụng không phải gõ các lệnh của DOS với các tham số phức
tạp mà chỉ cần chọn các chức năng và các file dữ liệu được cài đặt đặt sẵn trên màn hình.
NC còn cung cấp rất nhiều các công cụ có lợi khác như khôi phục các file dữ liệu bị xoá
nhầm, sửa chữa một đĩa bị hỏng, kết nối hai máy vi tính với nhau để truyền dữ liệu từ máy
này sang máy kia, nén dữ liệu để tiết kiệm đĩa
Chính các hệ điều hành cũng thường cung cấp một số tiện ích đi kèm xem như môi trường
giao tiếp cơ bản của người sử dụng với máy tính. Hầu như hệ điều hành nào cũng có tiện
ích soạn thảo văn bản ở mức đơn giản ví dụ Windows có Notepad, UNIX có Vi hay Emag.
DOS từ Ver.4 có Edit. Các hệ điều hành trên PC còn có các tiện ích tạo các đĩa khởi động
hay kiểm tra đĩa cứng có bình thường hay không.
60
Chương 8 - Phầnmềmmáy tính
Hình 34 là sơ đồ tương quan của các lớp phần mềm, đối tượng tạo ra và đối tượng sử dụng
chúng.
Hình 8.1. Sơ đồ tương quan giữa các lớp phần mềm
Sự phân loại nói trên chỉ có ý nghĩa tương đối. Ranh giới của các lớp phầnmềm trên rất
mờ, thậm chí còn xâm lấn vào nhau. Phầnmềm gõ bàn phím tiếng Việt có thể được coi
như một phầnmềm ứng dụng, đồng thời do tính chất cung cấp môi trường cho các ứng
dụng khác mà cũng có thể dược coi như một phần mềm hệ thống. Việc đưa ra phân lớp nói
trên chỉ có thể cho một bức tranh đại thể về các lớp phầnmềm dựa trên mục đích và
phương thức sử dụng.
8.6. QUÁ TRÌNH XÂY DỰNG MỘT PHẦN MỀM
Tuỳ theo từng mục đích cụ thể mà phầnmềm có thể lớn hay nhỏ. Có những phầnmềm chỉ
vẻn vẹn vài trăm dòng lệnh, nhưng cũng có những phầnmềm tới vài trăm nghìn, thậm chí,
ví dụ hệ điều hành Windows 95có vài triệu dòng mã lệnh.
Thời kỳ đầu, máytính điện tử được dùng chủ yếu với các bài toán khoa học kỹ thuật. Khi
đó người lập trình thường chính là các chuyên gia trong lĩnh vực ứng dụng. Họ vừa phải
nghiên cứu cách giải quyết, vừa phải thiết kế và đồng thời tự lập trình và thử nghiệm. Sau
này khi máytính áp dụng rộng rãi vào trong mọi lĩnh vực của đời sống kinh tế - xã hội,
khoa học kỹ thuật thì bắt đầu xuất hiện tình trạng chuyên môn hoá trong lĩnh vực phát
triển phần mềm. Làm phầnmềm trở thành một nghề nghiệp. Người ta phải xây dựng các
phần mềm trong các lĩnh vực mà chính người làm phầnmềm lúc đầu không biết. Chính vì
thế xây dựng một phầnmềm thường là công sức của nhiều người và là công việc phức tạp
vì để làm một phầnmềm trong một lĩnh vực nào đó, người phát triển phầnmềm phải làm
chủ được lĩnh vực đó. Có những người chuyên phân tích hệ thống để làm rõ được yêu cầu
và tình trạng của các hệ thống làm cơ sở cho việc xây dựng các dự án khả thi. Thường các
chuyên viên phân tích cũng là những người thiết kế vì việc thiết kế bao giờ cũng thực hiện
trên cơ sở hiểu biết nhu cầu và khả năng của công nghệ. Người lập trình là người viết
chương trình theo thiết kế. Vì phầnmềm là một sản phẩm trí tuệ nên thường tiềm ẩn rất
nhiều lỗi (đôi khi rất tinh tế) nên để kiểm soát tốt chất lượng của chương trình, người ta
phải áp dụng rất nhiều biện pháp trong đó có kiểm thử chương trình (test). Trong một
61
Phần mềm hệ thống, - các
nhà sản xuất máy tính, các
hãng phầnmềm lớn tạo ra,
các phầnmềm khác sử dụng
chúng
Phần mềm phát triển và các
tiện ích - các hãng phầnmềm
tạo ra - người sử dụng là
những người làm tin học
Phần mềm ứng dụng - những
người làm tin học tạo ra - ai
cũng có thể sử dụng
Máy tính
Các chương
trình dịch
Các tiện ích
Debuger
Các hệ quản
trị CSDL
Các hệ tự động
hoá văn phòng
Các ứng dụng
chuyên ngành
Phần
mềm
giải
trí
Phần mềm
Gíao dục
Chương 8 - Phầnmềmmáy tính
nhóm phát triển phầnmềm có thể có cả những người chuyên kiểm thử. Công việc chuyển
giao phầnmềm cho người sử dụng cũng không đơn giản. Có hàng loạt việc cần làm như
viết tài liệu, mua sắm và lắp đặt thiết bị, xây dựng dữ liệu, cài đặt phầnmềm lên máy, tổ
chức đào tạo. Cuối cùng còn một khâu rất quan trọng là bảo trì (maintenance). Bảo trì khác
với bảo hành và là một đặc thù của sản xuất phần mềm. Nếu người ta mua một sản phẩm bị
lỗi hoặc bị hỏng thì việc bảo hành là khôi phục lại trạng thái chất lượng ban đầu. Người ta
có thể sửa chữa, thay thế phụ tùng hoặc đổi lấy sản phẩm mới. Bảo trì phải làm cho sản
phẩm tốt hơn, phù hợp và hiệu quả hơn. Bảo trì thường gồm các công việc sau đây:
Tìm và sửa hết các lỗi.
Chỉnh sữa phầnmềm cho dễ dùng và phù hợp hơn với môi trường nghiệp vụ. Công
việc này gọi là làm thích nghi.
Bổ sung chức năng, nếu thấy có một chức năng nào cần thiết phải bổ sung thì phải
làm thêm.
Như vậy bảo trì luôn luôn là quá trình làm mới phần mềm. Để bảo trì không chỉ đơn giản
là hiệu chỉnh, lập trình lại mà đôi khi phải phân tích lại, thiết kế lại, lựa chọn thuật toán
khác, ngôn ngữ lập trình khác, thay đổi phương pháp tổ chức dữ liệu cho phù hợp và hiệu
quả hơn. Bảo trì rất tốn kém, nói chung chi phí bảo trì đắt hơn chi phí phát triển ban đầu.
8.7. ĐÁNH GIÁ PHẦN MỀM
Giá thành và chất lượng phầnmềm là một vấn đề rất quan trọng mà người tiêu dùng, các
nhà quản lý luôn quan tâm. Phầnmềm là một sản phẩm trí tuệ nên việc lượng hoá, chuẩn
hoá các tiêu chí đánh giá là những vấn đề rất phức tạp và khó khăn. Cách đánh giá chất
lượng một phầnmềm tốt nhất là thông qua đánh giá của khách hàng đã sử dụng một thời
gian và trong các tình huống thực tế khác nhau đủ để kiểm nghiệm mặt ưu việt cũng như
các hạn chế của phầnmềm đó. Tuy nhiên, để phục vụ những yêu cầu cụ thể, nhất là khi
không có thời gian chờ đợi lâu, người ta cũng theo một số tiêu chí để đánh giá phần mềm.
Tuỳ theo nội dung và lĩnh vực ứng dụng của phầnmềm mà quyết định lựa chọn các tiêu
chí cụ thể cũng như điểm số đánh giá cho từng tiêu chí đó. Sau đây là một số tiêu chí chính
thường được dùng để đánh giá một phần mềm.
a) Tính mới và tính sáng tạo
Đây là tiêu chí đánh giá hàm lượng trí tuệ của một phần mềm:
- Là sản phẩm được cài đặt đầu tiên.
- Khác với các phầnmềm tương tự về nguyên lý và công nghệ sử dụng.
62
Hình 8.2 . Sơ đồ các giai đoạn xây
dựng hệ thống thông tin
Kiểm thử
Kiểm thử
Phân tích
Phân tích
Thiết kế
Thiết kế
Thực hiện
Thực hiện
Chuyển giao
Chuyển giao
Bảo trì
Bảo trì
Chương 8 - Phầnmềmmáy tính
- Có ưu thế nổi trội.
b) Tính hiệu quả đề cập đến: Phạm vi ứng dụng, hiệu quả kinh tế, hiệu quả xã hội do
việc ứng dụng phầnmềm mang lại.
c) Tính đúng đắn thể hiện qua việc thực hiện đúng các chức năng do thiết kế đề ra, sự
tương đương của chương trình và thuật toán và được kiểm chứng qua thử nghiệm
và áp dụng nhiều lần.
d) Tính toàn vẹn và an toàn bao gồm:
- Sản phẩm có cơ chế bảo vệ, bảo mật, chống sao chép hoặc làm biến dạng.
- Không gây ra nhập nhằng trong thao tác.
e) Tính thân thiện mang lại cho đông đảo người sử dụng có những yếu tố tâm lý về:
- Dễ thao tác, dễ học và dễ hoàn thiện các kỹ năng khai thác sản phẩm.
- Ngôn ngữ (tên lệnh, thực đơn, thông báo, …) trong sáng, dễ hiểu, dễ nhớ.
f) Tính khả chuyển
Phần mềm ít phụ thuộc vào đặc tính cụ thể, có khả năng dễ sửa chữa để dùng lại khi
môi trường (chương trình dịch, hệ điều hành, phần cứng, …) thay đổi.
Câu hỏi
1. Hãy trình bày về khái niệm phần mềmmáy tính.
2. Dữ liệu có phải là phầnmềm không? Hãy nêu những đặc điểm các loại 4 lớp phần mềm:
Phần mềm ứng dụng, phầnmềm tiện ích phầnmềm công cụ và phần mềm hệ thống?
3. Hãy kể một số ví dụ phầnmềm ứng dụng ở Việt Nam mà bạn biết.
4. Hãy kể các phầnmềm mà bạn đã và đang sử dụng (hoặc biết).
5. Virus là những chương trình gây nhiễu hoặc phá hoại và có khả năng lây lan. Nói chung
đây là một loại chương trình phá hoại và là sản phẩm có mục đích xấu trong tin học. Hãy
suy nghĩ một chút, nên xếp Virus vào loại phầnmềm nào và phầnmềm chống virus nên
xếp vào nhóm nào?
6. Quy trình xây dựng phầnmềm gồm những bước nào?
7. Hãy trình bày các tiêu chí đánh giá phầnmềm thường được dùng.
63
. Chương 8 - Phần mềm máy tính
CHƯƠNG 8. PHẦN MỀM MÁY TÍNH
8. 1. KHÁI NIỆM PHẦN MỀM
Trong một số ngữ cảnh khác. không.
60
Chương 8 - Phần mềm máy tính
Hình 34 là sơ đồ tương quan của các lớp phần mềm, đối tượng tạo ra và đối tượng sử dụng
chúng.
Hình 8. 1. Sơ đồ tương