4.3 GIAO DIỆN NGƯỜI SỬ DỤNG
Thời kỳ đầu của máy tính, giao diện chủ yếu giữa người sử dụng với hệ thống là
phần mềm hệ điều hành của nhà sản xuất. Mặc dù đã có tính mềm dẻo, nhưng những
bộ sản phẩm này rõ ràng là cồng kềnh trong sử dụng hàng ngày. Gần đây hơn, xu
hướng ngày càng tiến tới việc sản xuất giao diện phần mềm khá thân thiện với người
sử dụng. Điều này tạo cho thao tác viên (operator) một môi trường tiện lợi và thoải
mái để phát triển và sử dụng phần mềm xử lý ảnh số. Một giao diện người sử dụng
như trên đòi hỏi các công cụ thuận tiện có sẵn, với chi phí tối thiểu. Các bộ phần
mềm xử lý ảnh số hiện đại đặt khả năng xử lý và tính mềm dẻo vào tay người sử
dụng một cách nhanh và dễ dàng. Thiết kế của chúng phục vụ cho trực giác của
người sử dụng và điều này làm cho chúng dễ dàng để học và sử dụng.
4.3.1 Bộ thông dịch dòng lệnh (Command-Line Interpreter)
Kiểu giao diện người sử dụng cũ nhất và đơn giản nhất là bộ thông dịch dòng lệnh
(Hình 4-1). Sử dụng ngôn ngữ nguyên văn (textual language) dành riêng, yêu cầu
người sử dụng phải biết các tuỳ chọn có sẵn, từ bộ nhớ hay tài liệu mở trên bàn. Nó
đưa ra trước mắt người sử dụng một dấu nhắc (prompting character) trên màn hình
báo hiệu rằng nó sẵn sàng xuất phát, nhưng nó không cung cấp sự hỗ trợ vấn đề gì
mà có thể thực hiện được. Điều này yêu cầu độ tin cậy cao vào tài liệu được viết, đặc
biệt trong giai đoạn học (learning phase). Tình hình được cải thiện đáng kể bằng cách
sử dụng những file batch hay script, định rõ một loạt các bước xử lý và có thể được
gọi bằng một lệnh đơn. Tập các file script phong phú có thể làm cho một bộ thông
dịch dòng lệnh giải quyết dễ dàng.
12 trang |
Chia sẻ: thanhle95 | Lượt xem: 671 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài giảng Xử lý ảnh - Chương 4: Phần mềm xử lý ảnh, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
47
CHƯƠNG 4
PHẦN MỀM XỬ LÝ ẢNH
4.1 GIỚI THIỆU
Những phần khác của cuốn sách này sẽ nhằm vào các thuật giải sử dụng trong xử
lý ảnh số và các thành phần phần cứng để thực hiện những công nghệ này. Trong
chương này, chúng ta sẽ nói về sự tổ chức của những chương trình máy tính thực
hiện các phép toán. Đặc biệt, chúng ta sẽ xem xét phần mềm được thiết kế, phát triển
và đưa ra cho người sử dụng như thế nào. Kiến thức về quá trình này có ích đối với
các nhà phát triển và cũng như người sử dụng. Đối với các nhà phát triển, nó có thể
tránh sự cố gắng uổng phí và sự thực hiện chán ngắt. Đối với người sử dụng, nó có
thể trợ giúp sự định giá phần mềm và sự thực hiện dự án.
Chương này cung cấp một cái nhìn khái quát về những chủ đề quan trọng nêu
trên. Chúng tôi lưu ý rằng sự quan trọng của những vấn đề đó có liên quan đặc biệt
đến biểu diễn số và chỉ ra nhiều tài liệu quan trọng về chủ đề này.
Trong dạng đầy đủ nhất của nó, như với sản phẩm phần mềm thương mại, quá
trình phát triển phần mềm bao gồm nhiều giai đoạn. Pha thiết kế nhận thức thiết lập
các đặc tính hoạt động và hàm cơ bản, sau đó một thuật giải sẽ nghiên cứu.......hạn
chế những công nghệ có thể thực hiện được. Tiếp theo, pha mã hoá tạo ra......đầu
tiên... bộ phần mềm. Trong pha chạy thử và duyệt lại, những thiếu sót về kỹ thuật sẽ
được sửa chữa và những ý tưởng mới sẽ được hợp nhất vào chương trình. Sự cung
cấp tài liệu người sử dụng miêu tả cách thức điều khiển hệ thống và sự cung cấp tài
liệu công nghệ giải thích cấu trúc vật lý và logic của nó. Cuối cùng, phần mềm được
phát hành và hỗ trợ trên thị trường. Hoạt động sau cùng bao gồm hướng dẫn khách
hàng, hỗ trợ công nghệ và tiếp tục bảo trì phần mềm. (những dấu .... là do photo bị
mờ không đọc được)
Một dự án ứng dụng khác một dự án phát triển ở chỗ một cái sử dụng phần cứng
hiện tại và một cái sử dụng phần mềm để giải quyết bài toán riêng. Điều này bắt đầu
với sự lựa chọn nền phần cứng và bộ phần mềm được sử dụng. Tiếp theo pha thiết kế
nhận thức là sự tập hợp một bộ ảnh dùng để phát triển và kiểm tra. Theo sau sự phát
triển thuật giải thực sự là việc thực hiện kiểm tra và sau đó đưa công nghệ đi vào sử
dụng. Điều này phải bao gồm việc chứng minh và công bố công nghệ, hướng dẫn
học tập nghiên cứu trong khoảng thời gian hạn chế, hoặc cài đặt hệ thống trong vài
hoạt động hướng vào sự sản xuất (production-oriented).
4.2 CÁC HỆ THỐNG XỬ LÝ ẢNH
Các hệ thống máy tính được sử dụng phổ biến nhất cho xử lý ảnh được chia thành
bốn hạng: (1) Apple Macintosh, với phần mềm hệ điều hành sẵn có của nó và giao
diện người sử dụng; (2) các máy tính tương thích IBM-phần cứng, sử dụng hệ điều
hành đĩa (DOS, PS/2,...) và Microsoft WindowsTM thường xuyên cũng như IBM
OS/2TM; (3) các trạm làm việc đồ hoạ, điển hình là sử dụng hệ điều hành UNIX và
môi trường XWINDOWS; (4) các hệ thống máy tính lớn (mainframe), với tài nguyên
rộng lớn dùng chung (share) cho nhiều người sử dụng (multiple users) định vị tại các
trạm làm việc từ xa. Các nhóm hệ thống gần nhau thường dùng chung tài nguyên và
dữ liệu thông qua mạng cục bộ (Local Area Network-LAN). Chúng cũng thường
xuyên truy cập đến mạng diện rộng (WAN).
48
4.2.1 Khuôn dạng file dữ liệu ảnh
Với tư cách một phạm vi hoạt động, nói chung xử lý ảnh số tạo ra một lượng lớn
các file dữ liệu lớn có liên quan chứa ảnh số. Những file này phải được lưu trữ và
chúng luôn cần được trao đổi giữa những người sử dụng và những hệ thống khác
nhau. Bắt buộc phải có vài khuôn dạng tiêu chuẩn cho việc lưu trữ và truyền các file
ảnh số.
Nhiều dạng file ảnh số đã được định nghĩa và sử dụng. Một vài dạng đã được sử
dụng khá rộng rãi trở thành tiêu chuẩn phổ biến (de facto) không ít thì nhiều. (Xem
ví dụ bảng 4-1) Hầu hết những chương trình xử lý ảnh thương mại có sẵn có thể đọc
và ghi vài khuôn dạng file ảnh phổ biến. Các chương trình khác hiện có hoàn toàn có
thể đọc và hiển thị ảnh lưu trữ dưới nhiều dạng file khác nhau và chuyển đổi chúng
từ dạng này sang dạng khác. Các chương trình đó tự động hiểu dạng file đầu vào đã
định, từ phần mở rộng tên file hoặc từ thông tin định danh trong chính bản thân file.
Khi lưu lại ảnh hiển thị vào một file, người sử dụng có thể chỉ rõ khuôn dạng file
mong muốn.
BẢNG 4-1 KHUÔN DẠNG FILE DỮ LIỆU ẢNH
Tên Kiểu Cách sử dụng
Tagged image format
Encapsulated PostScript
Graphical interchange format
Bit-mapped format
Presentation manager
Macintosh
*.TIF
*.EPS
*.GIF
*.BMP
*.BMP
*.PICT
DOS, UNIX and Macintosh images
Publishing industry format
CompuServe graphics format
Microsoft Windows format
IBM OS/2 Bit-mapped format
Apple Macintosh images
Đa số các khuôn dạng file ảnh lưu trữ nhãn chú thích thêm vào dữ liệu ảnh. Chú
thích này có thể là dữ liệu về sự tạo ra và khuôn dạng ảnh, cũng như chú thích của
người sử dụng.
Thông thường, các thiết bị hiển thị đơn sắc dùng mạch chuyển đổi số-tương tự
(DAC) 8 bit để tạo ra tín hiệu video điều khiển độ sáng các điểm ảnh hiển thị trên
màn hình. Thiết bị này có khả năng cung cấp 256 trạng thái xám. Các thiết bị hiển thị
màu sử dụng các bộ chuyển đổi số-tương tự (DAC) 8 bit tạo ra bao tín hiệu video
điều khiển các thành phần độ sáng đỏ (red), lục (green), lam (blue) của ảnh hiển thị.
Vì thế, chúng có khả năng hiển thị 224, tức là hơn 16 triệu màu khác nhau. Do sự
thiếu hoàn chỉnh thông thường trong các ống hiển thị và sự hạn chế của mắt người
nên số lượng màu có thể nhận thấy rõ ít đi một cách đáng kể.
Ảnh số không những xuất hiện ở khuôn dạng đơn sắc và màu, mà còn ở các mức
độ khác nhau của độ phân giải đo sáng (photometric resolution) (số màu hoặc trạng
thái xám). Với ảnh đơn sắc, số lượng trạng thái xám trong thang xám (gray scale)
phổ biến nhất là 2, 16 hoặc 256 ứng với 1, 4 hoặc 8 bit/điểm ảnh. Những độ phân
giải riêng biêt này dễ dàng được đóng gói thành những byte 8 bit trong bộ nhớ và các
file trên đĩa. Những độ phân giải khác nhau cũng được sử dụng trong các ứng dụng
nào đó.
Bảng màu (palette) là một bảng tra cứu (look-up) liên kết mỗi giá trị điểm ảnh
trong ảnh với màu hiển thị tương ứng. Một ảnh màu 4 bit sử dụng 16 màu cụ thể
chọn trong bảng 16 triệu màu của nó để hiển thị.
Đối với ảnh màu, số lượng màu quy định được biểu thị bởi các giá trị điểm ảnh
khác nhau. Một ảnh màu 4 bit chỉ có thể hiện ra 16 màu phân biệt trên thiết bị hiển
thị. Một bảng màu định nghĩa phép ánh xạ từ 16 giá trị điểm ảnh có thể tồn tại sang
số lượng màu hiển thị lớn nhất. Sự lựa chọn 16 màu cụ thể là ý muốn của người lập
trình và thường bị người sử dụng bỏ qua. Ảnh màu 8 bit được hiển thị với 256 màu
riêng biệt và ảnh màu 24 bit có phạm vi thể hiện 16 triệu màu. Bảng màu chỉ rõ phép
49
ánh xạ đối với một ảnh màu cụ thể thông thường được bao hàm trong file dữ liệu ảnh
và nó điều khiển thiết bị hiển thị khi ảnh được hiển thị hay in ra.
4.3 GIAO DIỆN NGƯỜI SỬ DỤNG
Thời kỳ đầu của máy tính, giao diện chủ yếu giữa người sử dụng với hệ thống là
phần mềm hệ điều hành của nhà sản xuất. Mặc dù đã có tính mềm dẻo, nhưng những
bộ sản phẩm này rõ ràng là cồng kềnh trong sử dụng hàng ngày. Gần đây hơn, xu
hướng ngày càng tiến tới việc sản xuất giao diện phần mềm khá thân thiện với người
sử dụng. Điều này tạo cho thao tác viên (operator) một môi trường tiện lợi và thoải
mái để phát triển và sử dụng phần mềm xử lý ảnh số. Một giao diện người sử dụng
như trên đòi hỏi các công cụ thuận tiện có sẵn, với chi phí tối thiểu. Các bộ phần
mềm xử lý ảnh số hiện đại đặt khả năng xử lý và tính mềm dẻo vào tay người sử
dụng một cách nhanh và dễ dàng. Thiết kế của chúng phục vụ cho trực giác của
người sử dụng và điều này làm cho chúng dễ dàng để học và sử dụng.
4.3.1 Bộ thông dịch dòng lệnh (Command-Line Interpreter)
Kiểu giao diện người sử dụng cũ nhất và đơn giản nhất là bộ thông dịch dòng lệnh
(Hình 4-1). Sử dụng ngôn ngữ nguyên văn (textual language) dành riêng, yêu cầu
người sử dụng phải biết các tuỳ chọn có sẵn, từ bộ nhớ hay tài liệu mở trên bàn. Nó
đưa ra trước mắt người sử dụng một dấu nhắc (prompting character) trên màn hình
báo hiệu rằng nó sẵn sàng xuất phát, nhưng nó không cung cấp sự hỗ trợ vấn đề gì
mà có thể thực hiện được. Điều này yêu cầu độ tin cậy cao vào tài liệu được viết, đặc
biệt trong giai đoạn học (learning phase). Tình hình được cải thiện đáng kể bằng cách
sử dụng những file batch hay script, định rõ một loạt các bước xử lý và có thể được
gọi bằng một lệnh đơn. Tập các file script phong phú có thể làm cho một bộ thông
dịch dòng lệnh giải quyết dễ dàng.
HÌNH 4-1
Hình 4-1 Giao diện bộ thông dịch dòng lệnh
4.3.2 Giao diện điều khiển bằng trình đơn (Menu-Driven Interface)
Thế hệ thứ hai, giao diện điều khiển bằng trình đơn, đưa ra một danh sách các
chọn lựa trên màn hình, sự lựa chọn có thể được hoàn thành bằng một hoặc hai phím
bấm (Hình 4-2). Điều này giảm bớt việc phải ghi nhớ và phụ thuộc của thao tác viên
vào tài liệu được viết rất nhiều, cũng như đòi hỏi sự cố gắng để đưa một quá trình chi
tiết vào hoạt động.
Trong sự hiện diện tiến bộ hơn của mình, giao diện người sử dụng điều khiển
bằng trình đơn hoạt động đáp ứng lại thiết bị con trỏ đồ hoạ (graphic pointer device)
(mouse, trackball,...). Đây là giao diện trỏ và kích (point-and-click), người sử dụng
50
có thể di chuyển con trỏ đến khu vực đã gán nhãn thích hợp và nhấn một nút trên
thiết bị. Người sử dụng cũng có thể kéo xuống (pull down) một trong nhiều trình đơn
(menu) từ thanh trình đơn trên đỉnh màn hình hiển thị nếu cần thiết, theo cách đó sẽ
làm giảm bớt sự lộn xộn trên màn hình, sau đó người sử dụng kích vào một chọn lựa
tuỳ ý và trình đơn xuất hiện.
Các trình đơn có thể hiện hữu theo cấu trúc phân cấp. Việc chọn một mục trên
trình đơn làm xuất hiện một trình đơn con nhiều lựa chọn cụ thể hơn. Mỗi trình đơn
hay mục trên trình đơn có thể cũng kết hợp với một thông báo trợ giúp (help
message) giải thích các tuỳ chọn và cách sử dụng của nó. Điều này cũng có thể xuất
hiện tại những nơi mà thao tác viên yêu cầu trên màn hình.
HÌNH 4-2
Hình 4-2 Giao diện điều khiển bằng trình đơn trong môi trường cửa sổ
4.3.3 Giao diện đồ hoạ (Graphical User Interface)
Thế hệ thứ ba là giao diện người sử dụng bằng đồ hoạ (GUI- phát âm là “gooey”).
Thao tác viên điều khiển một phần hệ thống theo ngôn ngữ trực quan (visual
language) thay vì ngôn ngữ nguyên văn đơn thuần như với bộ thông dịch dòng lệnh.
GUI biểu diễn các tuỳ chọn cho sẵn không phải bằng văn bản, như trong một trình
đơn, mà bằng các biểu tượng đồ hoạ hiển thị trên màn hình. Những biểu tượng (icon)
này không những biểu thị các quá trình, mà còn biểu diễn dữ liệu (ví dụ như ảnh số)
và các thiết bị phần cứng (ổ đĩa, máy in,...).
Với sự thực hiện GUI đầy đủ, ta có thể khởi đầu một công việc - ví dụ, in một ảnh
đã lưu trữ - bằng kỹ thuật kéo và thả (drag and drop). Sử dụng thiết bị con trỏ, thao
tác viên có thể chọn ra biểu tượng biểu diễn ảnh, di chuyển nó sang biểu tượng khác
biểu diễn máy in và nhả nó ra, và quá trình in bắt đầu. Điều này không chỉ nhanh hơn
việc gõ dòng lệnh mà còn thú vị hơn.
4.3.4 Giao diện luồng dữ liệu (Data Flow Interface)
Một kiểu GUI khác sử dụng mạng (network), biểu đồ luồng dữ liệu (data-flow
diagram) bằng đồ hoạ, diễn đạt bằng hình tượng (symbology) (Hình 4-3). Ở đây,
ngôn ngữ trực quan hầu như được sử dụng riêng biệt. Ta lại có một trình đơn các
biểu tượng (các nét chạm-glyphs) biểu diễn các thiết bị, dữ liệu và quá trình sẵn sàng
để sử dụng. Tuy nhiên, trong trường hợp này, bằng cách dùng con trỏ kéo các biểu
tượng, ta có thể tạo ra một lưu đồ (flowchart) miêu tả dãy các bước xử lý đã định trên
màn hình. Mỗi biểu tượng có một hoặc nhiều đường (pad) vào và/hoặc ra (các điểm
kết nối) dành riêng. Người sử dụng định rõ luồng xử lý bằng cách liên kết các đường
với các dòng kẻ sử dụng thiết bị con trỏ.
51
HÌNH 4-2
Hình 4-3 Ví dụ về biểu đồ luồng dữ liệu GUI
Mỗi biểu tượng cũng có các đường điều khiển, khi được chọn bằng con trỏ, mà
bắt đầu thực hiện quá trình hoặc khiến các trình đơn xuất hiện bất kỳ, do đó cho phép
người sử dụng định nghĩa các chi tiết của quá trình. Mỗi biểu tượng biểu thị một chỉ
báo (indicator) trạng thái cho biết (1) nó được định nghĩa đầy đủ hay không, (2) sẵn
sàng hoạt động hay không, (3) đã thực sự hoàn thành các hoạt động của nó chưa.
4.3.5 Cửa sổ
Trong những ngày đầu của xử lý ảnh, người sử dụng có cơ sở để nhận ra rằng
nhiều màn hình hiển thị đã tăng khả năng sử dụng của nó trong hệ thống lên rất
nhiều. Ví dụ, thích hợp để sử dụng các cách hiển thị khác nhau đối với giao diện
người sử dụng và đối với hiển thị ảnh. Một sự lựa chọn hiện nay (và rẻ hơn) là sử
dụng thiết bị hiển thị khuôn dạng đơn và lớn cho các hàm khác nhau cùng một lúc.
Môi trường hướng cửa sổ (Window-oriented environment) là một bộ phần mềm
sử dụng màn hình hiển thị có hiệu quả để trình bày những đối tượng độc lập khác
nhau cùng một lúc. Người sử dụng có thể mở (chẳng hạn, thiết lập hay định nghĩa)
nhiều cửa sổ hiển thị khác nhau và sử dụng mỗi cửa sổ cho một mục đích hiển thị
khác nhau, ngay cả khi ta sử dụng nhiều àn hình hiển thị. Mỗi cửa sổ có thể được
định vị và định kích thước lại trên màn hình, điển hình là dùng thiết bị con trỏ kéo
những đường biên của nó. Ở đây các cửa sổ chồng lên nhsu, một cửa sổ (cửa sổ hoạt
động) che khuất một phần hay toàn bộ cửa sổ hoặc các cửa sổ “ở dưới” nó, như sự
chồng đè lên nhau của các ảnh trên màn hình nền.
Xu hướng thiết kế giao diện người sử dụng là chú ý nhiều vào ngôn ngữ trực
quan, trả giá bằng ngôn ngữ nguyên văn. Cảm giác với giao diện trực quan là dễ
dàng hơn cho người bắt đầu học và nhanh hơn cho chuyên gia sử dụng so với việc
đánh máy văn bản từ bàn phím. Đầu vào bằng tiếng nói cũng là vấn đề thêm vào hữu
ích với chuột và bàn phím. Tiếng nói tổng hợp cho phép hệ thống trả lời thao tác viên
đúng như vậy. Giao diện bằng lời như trên đặc biệt hữu dụng khi thao tác viên phân
chia sự chú ý của mình cho nhiều công việc khác. Trong vài trường hợp, chuỗi các
tín hiệu video số hoá có thể cung cấp sự trợ giúp trực tuyến (on-line) có giá trị khi
cần thiết.
4.4 QUÁ TRÌNH PHÁT TRIỂN PHẦN MỀM
Trong những ngày đầu của lập trình máy tính nói chung và xử lý ảnh số nói riêng,
quá trình phát triển phần mềm, theo cách nói bây giờ, là không có cấu trúc
(unstructured). Những người lập trình máy tính không chỉ hiếm, giống như những
kiểu người tiên phong khác, mà còn có tính chất chủ nghĩa cá nhân.
Có lẽ chỉ với một khái niệm mơ hồ về công việc mà một phần mềm mới được yêu
cầu làm, người lập trình đã có thể bắt tay vào viết mã lệnh, tổng hợp một vấn đề
phức tạp từ những phần đơn giản hơh trong quá trình. Sau đó, toàn bộ thiết kế dược
phát triển song song với việc thực hiện. Những sự giải quyết thiết kế chủ yếu được
thực hiện theo cách từ đầu đến đuôi. Thông thường các mô đun (module) được phát
triển từ dưới lên, với các chương trình con (routine) cơ bản nhất được viết đầu tiên và
52
tiếp theo các chương trình con mức cao hơn dựa vào những chương trình con trước
đó, những người lập trình ban đầu đã khai thác một cách sáng tạo sự phong phú của
ngôn ngữ lập trình cấp cao đương thời để viết mã lệnh nhanh, cô đọng và bản chất là
không thể giải mã được.
Khoảng năm 1970, nhiều vấn đề với cách tiếp cận này đã trở thành hiên nhiên.
Đầu tiên, sự phức tạp của các dự án phần mềm tiến đến mức mà người lập trình khó
lòng giữ tất cả các khía cạnh của chương trình cùng lúc trong đầu. Nghiên cứu tâm lý
học đưa ra giả thiết là con người thật là khó chịu khi cố gắng giữ dấu vết của nhiều
hơn năm đến chín mẩu thông tin cùng một lúc. Hạn chế này lấy đi mất một phần lớn
giá cả và ngân sách của các dự án phát triển phần mềm lớn lặp đi lặp lại nhiều lần.
Thứ hai, với các dự án bao gồm các nhóm những nhà lập trình, sự phối hợp kết
quả của sự cố gắng thành một vấn đề trọng đại. Các mô đun được viết bởi những cá
nhân khác nhau sẽ không thành công trong việc làm cho khớp vào với nhau một cách
trôi chảy. Thứ ba, như khi có sự thay đổi nhân viên, nó trở nên khá tốn phí đối với
những người lập trình mới để giải mã (decipher) mã nguồn hiện tại trong tình trạng
thiếu một vài cấu trúc agreed-upon phổ biến, đặc biệt khi thiếu tài liệu đi kèm. Ví dụ,
theo bố trí của một trường đại học, sự ra đi của một sinh viên hay một cán bộ lập
trình có thể làm cho tất cả phần mềm mà anh ta hay cô ta đã phát triển trong khi làm
việc trên các dự án nghiên cứu không sử dụng.
Các dự án phát triển phần mềm thương mại đòi hỏi sự tác động qua lại lẫn nhau
đáng kể giữa nhiều các nhân để chắc chắn rằng sản phẩm cuối cùng thoả mãn tất cả
các yêu cầu trên (thường cạnh tranh). Hình 4-4 là ví dụ về môt lưu đò sử dụng trong
môt dự án phát triển phần mềm thương mại.
Các bước quan trọng vòng phát triển phần mềm được liệt kê trong bảng 4-2.
Những bước này có thể được thực hiện một cách tuần tự, bằng cách gối chồng lên
nhau, hay lặp. Theo định nghĩa, phân tích là quá trình nghiên cứu vấn đề và chỉ ra
những đặc tính hoạt động của bài giải. Kết quả cho ta là một đặc tả hàm (functional
specification) phần mềm. Thiết kế là thực hiện đặc tả này và thêm những chi tiết yêu
cầu cho việc thực hiện trên một nền phần cứng riêng biệt. Lập trình, dĩ nhiên là viết,
kiểm tra, gỡ rối và cung cấp tài liệu các chương trình máy tính.
BẢNG 4-2 QUÁ TRÌNH PHÁT TRIỂN PHẦN MỀM
1. Phân tích yêu cầu - Requirements analysis
2. Thiết kế sơ bộ - Preliminary design
3. Mẫu - Prototyping (if required)
4. Thiết kế chi tiết - Detailed design
5. Thực hiện - Implementation (coding)
6. Kiểm tra - Testing
7. Bảo trì - Maintenance
HÌNH 4-4
53
Hình 4-4 Ví dụ về một lưu đồ phát triển phần mềm
Mặc dù cách tiếp cận này có thể nảy sinh sự phức tạp quá mức cần thiết, nhưng
kinh nghiệm cho thấy việc thực hiện một công việc lần đầu tiên rẻ hơn là sử dụng
thêm thời gian cho việc thay đổi và gỡ rối một chương trình do nó đã được thực hiện
tồi tệ ngay từ đầu.
4.4.1 Quá trình hoạt động của chương trình
Một chương trình ứng dụng có thể hoạt động ở một trong ba chế độ, tuỳ thuộc vào
vai trò mà nó thực hiện trong quá trình tính toán. Trong chế độ lô (batch mode),
chương trình được đặt vào một hàng đợi (queue) và được thi hành bất cứ lúc nào máy
tính giải quyết xong những công việc trước đó. Mặc dù các câu lệnh phải được thực
hiện tuần tự, không có sự khác nhau mấy giữa những sự thực hiện các lệnh dù nó
diễn ra hàng nano giây hay hàng phút. Vài chương trình xử lý ảnh thuộc vào loại này.
Một chương trình được điều khiển theo sự kiện (event-driven program) tham gia
một vòng lặp sự kiện, chờ đợi sự kiện nào đó xảy ra. Bình thường, thao tác viên gây
ra một hoạt động (nhấn phím, kích chuột,...) tạo thành một sự kiện. Chương trình liên
tục thăm dò (poll) các thiết bị đầu vào, kiểm tra và nhận diện mỗi sự kiện khi nó xảy
ra. Sau đó nó thực hiện chương trình con thích hợp và trở về vòng lặp sự kiện. Bình
thường các chương trình xử lý ảnh ảnh hưởng lẫn nhau thuộc loại này.
Chương trình thời gian thực (real-time) điều khiển một quá trình đang xảy ra, ví
dụ như các hoạt động sản xuất. Bản thân thời gian đóng một vai trò quan trọng trong
các quá trình tính toán. Thường thường, chương trình điều khiển đầu ra của quá trình
trong khi điều chỉnh các tham số điều khiển quá trình. Điều này cũng có thể bao hàm
trong xử lý ảnh.
4.4.2 Thiết kế từ trên xuống (Top-Down)
Vào đầu những năm 1970, những khái niệm lập trình có cấu trúc (structured
progamming) và thiết kế trên xuống (top-down design) xuất hiện để giải quyết các
bài toán do lập trình không có cấu trúc tạo ra. Thiết kế trên xuống đầu tiên cần phải
viết và gỡ rối phần mềm mức cao nhất (giao diện người sử dụng) và sau đó thêm dần
các chương trình con mức thấp hơn, những chương trình con điều khiển phần cứng
thường được vi