1. Trang chủ
  2. » Mẫu Slide

Giao trinh CNPM Chuong 5doc

32 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Công cụ CASE lý tưởng cũng có thể cung cấp về mặt kỹ thuật, dữ liệu và thực hiện thiết kế của tổ chức, lập dự án và kiểm tra nhóm làm việc trong các ứng dụng, chuẩn hoá dữ liệu, sơ đồ xâ[r]

(1)

CHƯƠNG 5

CÀI ĐẶT PHẦN MỀM

Cài đặt công đoạn việc phát triển phần mềm xem hệ tất yếu thiết kế Tuy vậy, phong cách lập trình đặc trưng ngơn ngữ lập trình có ảnh hưởng lớn đến chất lượng phần mềm Một chương trình cài đặt tốt đem lại cho ta thuận lợi việc bảo trì sau

5.1 PHONG CÁCH CÀI ĐẶT CHƯƠNG TRÌNH

Sau sinh chương trình đích, chức module phải rõ ràng, không cần tham khảo tới đặc tả thiết kế - nói cách khác, chương trình phải dễ hiểu Phong cách lập trình bao hàm triết lý lập trình nhấn mạnh tới tính đơn giản rõ ràng Viết chương trình máy tính viết dãy câu lệnh ngôn ngữ có Cách thức mệnh đề diễn tả chừng mực xác định tính dễ hiểu tồn chương trình

Các yếu tố phong cách bao gồm tài liệu bên trong, phương pháp khai báo liệu, cách tiếp cận đến việc xây dựng câu lệnh, kỹ thuật vào/ra

5.1.1 Tài liệu chương trình

Tài liệu chương trình hiểu tài liệu bên chương trình gốc Nó bắt đầu với việc chọn lựa tên gọi định danh, tiếp đến vị trí thành phần việc thích, kết luận với cách tổ chức trực quan chương trình

Việc lựa chọn tên gọi định danh có nghĩa điều chủ chốt cho việc hiểu chương trình Những ngôn ngữ giới hạn tên biến hay nhãn có vài ký tự nên tự mang nghĩa mơ hồ Nhưng ý nghĩa thông thường phải áp dụng tên gọi chọn, tên gọi dài khơng cần thiết đơi lúc đưa tiềm lỗi Các nghiên cứu cho dù chương trình nhỏ tên gọi có nghĩa làm tăng tính dễ hiểu Theo ngơn từ mơ hình cú pháp/ngữ nghĩa, tên có ý nghĩa làm "đơn giản hoá việc chuyển đổi từ cú pháp chương trình sang cấu trúc ngữ nghĩa bên trong"

Khả diễn tả lời thích theo ngôn ngữ tự nhiên phần in chương trình gốc ngơn ngữ lập trình cung cấp Tuy nhiên, số vấn đề nảy sinh:

 Bao nhiêu thích "đủ"?  Nên đặt thích vào đâu?

(2)

 Liệu có thích "khơng bảo trì" khơng, khơng tin cậy được? Tuy vậy, điều rõ ràng: phần mềm phải chứa tài liệu bên Lời thích cung cấp cho người phát triển ý nghĩa truyền thông với độc giả khác chương trình gốc Lời thích cung cấp hướng dẫn rõ rệt, dễ hiểu khâu bảo trì cơng nghệ phần mềm

Có nhiều hướng dẫn đề nghị cho việc viết lời thích Các thích mở đầu thích chức hai phạm trù đòi hỏi cách tiếp cận có khác Lời thích mở đầu nên xuất đầu module Định dạng cho lời thích là:

1 Một phát biểu mục đích rõ chức module Mô tả giao diện bao gồm:

a) Mẫu lời gọi,

b) Mô tả đối số,

c) Danh sách tất module thuộc cấp

3 Thảo luận liệu thích hợp biến quan trọng hạn chế giới hạn cách dùng chúng, thông tin quan trọng khác

4 Lịch sử phát triển bao gồm:

a) Tên người thiết kế module (tác giả),

b) Tên người xét duyệt (kiểm toán) ngày tháng, c) Ngày tháng sửa đổi mô tả sửa đổi,

Các thích mơ tả nhúng vào bên thân chương trình gốc dùng để mơ tả cho hàm xử lý Lời thích nên đưa điều phụ trợ, khơng lời diễn giải chương trình Bên cạnh đó, lời thích mơ tả nên:

 Mơ tả khối chương trình, thay thích cho dòng

 Dùng dòng trống hay thụt cấp lời thích phân biệt với chương trình

 Phải đắn; lời thích khơng hay gây hiểu sai cịn tồi tệ khơng có thích

Với tên gọi tượng trưng đắn việc thích tốt, việc làm tài liệu bên thích hợp đảm bảo

Khi thiết kế thủ tục chi tiết biểu diễn cách dùng ngơn ngữ thiết kế chương trình tài liệu thiết kế nhúng trực tiếp vào văn chương trình gốc câu thích Kỹ thuật đặc biệt có ích việc làm tài liệu thực hợp ngữ giúp đảm bảo chương trình thiết kế bảo trì thay đổi thực cho hai

(3)

5.1.2 Khai báo liệu

Độ phức tạp việc tổ chức cấu trúc liệu xác định bước thiết kế phong cách khai báo liệu thiết lập chương trình sinh Thứ tự khai báo liệu nên chuẩn hoá cho dù ngơn ngữ lập trình khơng có u cầu bắt buộc Điều tạo điều kiện thuận lợi cho việc kiểm thử, gỡ rối bảo trì Thậm chí, có nhiều định danh khai báo câu lệnh việc xếp theo trật tự chữ cho tên gọi có giá trị

Nếu thiết kế có mơ tả trước cấu trúc liệu phức tạp nên dùng thích để giải thích điểm đặc thù cài đặt ngơn ngữ lập trình

5.1.3 Xây dựng câu lệnh

Mặc dầu việc xây dựng luồng logic phần mềm thiết lập thiết kế việc xây dựng câu lệnh nằm bước lập trình Thực tế chứng minh, việc xây dựng câu lệnh chương trình nên tuân theo phong cách lập trình cấu trúc Các câu lệnh nên đơn giản trực tiếp, không bị xoắn vào để đảm bảo hiệu

Trong thể chương trình, cách xây dựng câu lệnh đơn việc thụt cấp chương trình minh hoạ cho đặc trưng logic chức giai đoạn này, nên tuân theo dẫn:

+ Tránh dùng phép kiểm tra điều kiện phức tạp, + Khử bỏ phép kiểm tra điều kiện phủ định, + Tránh lồng điều kiện hay chu trình, + Dùng dấu ngoặc để làm sáng tỏ biểu thức,

+ Dùng dấu cách ký hiệu dễ đọc để làm sáng tỏ nội dung câu lệnh, 5.1.4 Vào ra

Phong cách vào/ra thiết lập phân tích thiết kế phần mềm cách thức cài đặt vào/ra lại ảnh hưởng lớn đến người sử dụng hệ thống Phong cách vào/ra thay đổi theo mức độ tương tác người

Với vào/ra theo lơ cách tổ chức vào logic, kiểm tra lỗi vào/ra có nghĩa, phục hồi lỗi vào/ra tốt định dạng báo cáo hợp lý đặc trưng mong muốn Với vào/ra tương tác sơ đồ đưa vào có hướng dẫn, đơn giản, việc kiểm tra lỗi kỹ lưỡng phục hồi, quán định dạng vào/ra lại mối quan tâm chủ yếu

Khi cài đặt vào/ra, cần thoả mãn tiêu chí sau: + Làm hợp lệ vào,

+ Kiểm tra tin cậy tổ hợp liệu vào quan trọng, + Giữ cho định dạng liệu vào đơn giản,

+ Dùng báo cuối liệu thay yêu cầu người sử dụng xác định số khoản mục vào,

+ Đặt nhãn cho liệu vào,

(4)

5.2 NỀN TẢNG CỦA NGƠN NGỮ LẬP TRÌNH

5.2.1 Kiểu liệu, định nghĩa kiểu liệu kiểm tra kiểu liệu

Kiểu liệu loại liệu định nghĩa từ trước ngôn ngữ ngôn ngữ hỗ trợ số kiểu liệu Tất ngôn ngữ hỗ trợ biến, số dùng liệu số liệu ký tự Kiểu liệu hỗ trợ chung là: số nguyên, số thực xâu ký tự

Một số ngơn ngữ hỗ trợ kiểu liệu khác như: Logical, Boolean, Pointer, Object, Bit, Date, kiểu liệu tự định nghĩa

Kiểu Boolean sinh giá trị nhị phân True, False dựa so sánh logic Pointer địa chương trình khác cấu trúc liệu mà dùng để tham chiếu đến chương trình Object xây dựng để đóng gói liệu phương thức Kiểu liệu Date định nghĩa ngày tháng năm khuôn dạng hợp lệ - thay cho việc phải viết chương trình để xử lý kiểu Date, ta sử dụng thủ tục có sẵn ngơn ngữ

Các cấu trúc liệu mảng, bảng, danh sách tuyến tính, loại thứ ba cấu trúc liệu ngôn ngữ Các ngôn ngữ hỗ trợ khơng hỗ trợ kiểu Tuy nhiên, kiểu liệu đơn giản mảng, danh sách tuyến tính, thường hầu hết ngôn ngữ hỗ trợ

Cuối cùng, kiểu liệu tự định nghĩa kiểu liệu lập trình viên định nghĩa có giá trị chương trình ứng dụng định Kiểu liệu tự định nghĩa dùng để định nghĩa kiểu liệu ngôn ngữ không hỗ trợ kiểu liệu

Kiểm tra kiểu liệu việc ngôn ngữ kiểm tra phù hợp kiểu liệu định nghĩa phép toán học tốn tử logic Có bốn mức kiểm tra kiểu, từ không kiểm tra kiểu đến kiểm tra chặt, mức độ chặt chẽ kiểm tra phụ thuộc vào dạng ứng dụng Nói chung tiến trình cần xác, qn ổn định đòi hỏi mức độ kiểm tra kiểu chặt chẽ Trong lập trình hướng đối tượng, kiểm tra kiểu quan trọng tính đa hình cho phép nhiều module thực chức nhiều kiểu liệu khác nhau, kiểm tra kiểu chặt chẽ làm giảm khả chương trình gặp lỗi

+ Không kiểm tra kiểu (typeless checking) nghĩa không tiến hành kiểm tra kiểu cách tường minh

Ví dụ: Trong ngơn ngữ khơng kiểu Basic Cobol, kí tự phép gán integer, gây lỗi trường tham chiếu số nguyên

(5)

+ Mức kiểm tra kiểu ép kiểu tự động (automatic type coercion), nhiều kiểu liệu phép dùng chung, tất dẫn đến lỗi chuyển đổi kiểu khơng tương thích Mức kiểm tra kiểu cịn có tên kiểm tra kiểu dạng hỗn hợp (mixed mode type checking), kiểu liệu khác thuộc phân loại chuyển sang kiểu đích tốn tử kiểu hỗn hợp

Ví dụ, Fortran, trộn lẫn số thực số nguyên tốn tử tốn học dẫn đến kết khơng thể dự đốn kiểu đích (target type) định việc định nghĩa trường kết Nếu trường kết định nghĩa thực, kết tính tốn số thực Nếu trường kết định nghĩa integer, tiến trình làm trịn câu trả lời (số thực) đưa kết integer

+ Kiểm tra kiểu giả chặt (Pseudostrong type checking) mức thứ ba kiểm tra kiểu, cho phép thao tác đối tượng liệu thuộc kiểu liệu, phép kiểm tra kiểu áp dụng chúng định nghĩa module Pascal ngơn ngữ có kiểm tra kiểu giả chặt, hỗ trợ kiểm tra kiểu chặt chẽ module, không hỗ trợ chéo module Cho nên, liệu truyền từ module sang module khác chuyển sang kiểu liệu khác mà không bị bắt lỗi

+ Ở mức cao kiểm tra kiểu ngôn ngữ, kiểm tra kiểu chặt chẽ cho phép thao tác đối tượng liệu có kiểu xác định từ trước, nằm khác module Nếu module có kiểu liệu khơng hợp lệ, ứng dụng dừng đưa thông báo lỗi Ada ngôn ngữ cung cấp kiểm tra kiểu chặt chẽ

5.2.2 Chương trình con

Sự tinh tế ngôn ngữ thể mức độ hỗ trợ module hoá quản lý nhớ Module hố cách thức tạo chương trình hàm Các ngôn ngữ khác cách hỗ trợ chương trình liệu Trước hết, khả định nghĩa chương trình con, hàm quan trọng để có đặc trưng chương trình mong muốn Thứ hai, liệu module quản lý nào? Dữ liệu cục tổng thể Khả có liệu cục quan trọng việc che giấu thông tin giảm thiểu việc liên kết Phạm vi liệu tổng thể cần giới hạn để đảm bảo chất lượng chương trình việc giấu thơng tin liên kết

Trong ngôn ngữ, chương trình gọi thơng qua tên Tuỳ chọn cho xử lý việc gọi bao gồm việc truyền liệu biến, tên, địa chỉ, giá trị Truyền giá trị đòi hỏi định nghĩa liệu cục truyền liệu tên địa sử dụng với liệu cục liệu tổng thể

(6)

lập trình viên cần thành thạo, đảm bảo khả xử lý thành thạo, đảm bảo khả xử lý hoàn hảo Theo nhà lập trình cấu trúc, module thiết kế tốt nên có điểm vào điểm Module vào gây lỗi so với module có nhiều mục vào, điểm

5.2.3 Cấu trúc điều khiển

Về chất, chương trình máy tính mã hoá thuật toán Ở đây, đối tượng chịu thao tác mô tả kiến trúc thông qua cấu trúc liệu cịn thao tác mơ tả thông qua cấu trúc điều khiển Như vậy, cấu trúc điều khiển ngôn ngữ yếu tố định thao tác thao tác liệu mô tả Chúng cung cấp khả xử lý: tuần tự, lặp cách thức lựa chọn cấu trúc liệu

Sự có hai dạng: dịng lệnh dịng lệnh Lập trình viên điều khiển dòng lệnh (between-command sequencing) trật tự lệnh, dịng lệnh thứ tự ưu tiên phép toán -operator precendence- dùng thao tác liệu, ngơn ngữ quy định sẵn Với hai khối lệnh A, B tuân theo phương thức xử lý với R số lần thực khối lệnh ta có RA=RB=1 Cấu trúc ngơn ngữ lập

trình thường tuân theo trật tự từ trái sang phải từ xuống

Cấu trúc lựa chọn ngôn ngữ lập trình thường mơ tả từ khoá If Case Với biểu thức điều kiện lựa chọn E khối lệnh lựa chọn A1,A2, ,An, theo ký hiệu ta có 1=RE>=RA1+ +RAn

Cấu trúc lặp ngơn ngữ lập trình hỗ trợ dạng: lặp biết trước số lần lặp (For), lặp với kiểm tra điều kiện lặp trước - lính canh đặt trước (While do), lặp với kiểm tra điều kiện lặp sau (Do while)

Lặp biết trước số lần lặp đánh dấu biểu thức đếm đầu (D) đến cuối (C) Với khối lệnh A thân vịng lặp, ta có RC=RD=1 RA=C-D+1

C>=D, ngược lại RA=0 C<D

Lặp với kiểm tra điều kiện lặp trước ứng với biểu thức điều kiện lặp E lúc này, khối lệnh A thân vòng lặp tuân theo: 1<=RE=RA+1

Còn lặp với kiểm tra điều kiện lặp sau ứng với biểu thức điều kiện lặp E khối lệnh A thân vòng lặp tuân theo: 1<=RE=RA

Sự tương đương chương trình việc mã hoá cấu trúc điều khiển định lý Boehm&Jaccopini sau: Mọi chương trình P được thể sơ đồ khối tồn chương trình Q tương đương mạnh với nó nhưng dùng hai cấu trúc điều khiển để mô tả cấu trúc cấu trúc lặp với điều kiện lặp xét trước.

(7)

Bên cạnh cấu trúc điều khiển đề cập trên, đệ quy thuộc tính module Chúng xuất module gọi chúng module gọi lẫn Trong số ngôn ngữ lập trình, đệ quy khơng hỗ trợ cách tường minh, lại coi sức mạnh số ngơn ngữ khác- ví dụ ngơn ngữ Prolog Ở chương trình sử dụng đệ quy, địi hỏi khả trì hàng đợi stack chương trình

5.2.4 Vào liệu

Có bốn dạng thơng tin vào/ra (I/O) là: lệnh vào/ra cụ thể, hướng ghi, hướng tập hợp, hướng mảng

Vào/ra hướng ghi đọc ghi ghi vật lý, ghi chứa đựng nhiều ghi logic Các ghi (hoặc đại số quan hệ) nhóm trường liệu có quan hệ với Vào/ra hướng ghi địi hỏi đóng mở file, đọc ghi ghi quản lý người sử dụng tất công việc xử lý file Ví dụ: Cobol, Fortrans, Assembler, Ada ngơn ngữ hướng ghi

Hướng tập hợp giả sử tất ghi (hoặc bộ) coi Ngôn ngữ điều khiển file tiến trình đọc ghi theo lựa chọn mà người sử dụng định nghĩa Ở cuối thủ tục, tập ghi (là kết thủ tục) lưu trữ nhớ phục vụ cho việc in ấn, hiển thị Ví dụ SQL ngơn ngữ hướng tập hợp

Vào/ra hướng mảng đọc ghi chuỗi trường giả thiết kiểu mảng, người sử dụng có nhiệm vụ định nghĩa thao tác kiểu liệu mảng Ngôn ngữ đơn giản đọc ghi cuối mảng liệu Pascal ngôn ngữ hướng mảng Vào/ra trực tiếp danh sách (list-directed I/O) biến thể vào/ra hướng mảng Fortrans sử dụng vào/ra trực tiếp danh sách để định nghĩa danh sách tên biến, tên biến truy cập trực tiếp chúng đọc Nó đọc danh sách đầy xử lý lệnh đọc thực lại Các mục liệu không định dạng cụ thể, mà khuôn dạng ngầm tên biến

5.2.5 Quản lý nhớ

Sự tinh tế ngơn ngữ cịn thể mức độ lập trình viên kiểm sốt điều khiển việc quản lý nhớ Quản lý nhớ khả chương trình phân bổ nhớ máy tính cần Đây tuỳ chọn chúng sử dụng nhiều xử lý danh sách biến ứng dụng thời gian thực quản lý tài nguyên nhiều người sử dụng Các ngơn ngữ có độ tinh tế thấp sử dụng nhớ tĩnh: chương trình nhận lượng nhớ lớn thời điểm khởi tạo Nếu chương trình cần nhiều nhớ lượng cấp phát chương trình bị treo, ngơn ngữ điều khiển nhiệm vụ (job control language) cấp phát lượng nhớ thiếu để chương trình chạy lại Các ngôn ngữ tinh tế sử dụng khả cấp phát nhớ động, tức cấp phát nhớ cần thiết 5.2.6 Quản lý lỗi

(8)

tràn, chia cho 0, lại không chặn lỗi định nghĩa liệu không hợp lệ, đọc cuối file, Ngược lại Smalltalk cho phép chặn lỗi

Tóm lại, ngơn ngữ lập trình khác mức độ chúng hỗ trợ cách khác cho điều khiển liệu, xử lý vào/ra, thao tác tốn học, chương trình con, quản lý nhớ Ngôn ngữ hỗ trợ ngôn ngữ đơn giản Cấu trúc ngôn ngữ phức tạp phạm vi bao qt lớn

5.3 CÁC ĐẶC TRƯNG CỦA NGÔN NGỮ CÀI ĐẶT

Các đặc trưng đánh giá gồm: đồng (uniformity), sáng sủa (ambiguity), cô đọng (compactness), địa phương – cục (locality), tuyến tính (linearity), dễ lập trình, dịch hiệu quả, khả chuyển Tính sẵn có cơng cụ trợ giúp, sinh mã tính sẵn dùng cơng cụ trợ giúp kiểm tra thêm vào nhằm làm tăng tính hấp dẫn ngơn ngữ

Tính đồng cách sử dụng ký hiệu quán ngôn ngữ Một ví dụ khơng qn Focus việc sử dụng dấu ngoặc đơn cho tiêu đề báo cáo người sử dụng tạo dấu ngoặc kép trang báo cáo Ngôn ngữ không quán cản trở người sử dụng học dễ gây lỗi

Tính sáng sủa đề cập đến mức độ người chương trình dịch bất đồng việc dịch câu lệnh ngôn ngữ Lý tưởng ý nghĩa người tương tự với biên dịch trình dịch chương trình dịch giống nhận thức người Thật khơng may, tính sáng sủa có vấn đề cố hữu mình, ứng dụng trí tuệ nhân tạo (ứng dụng suy luận tiến trình), thêm luật, chế vào, thông dịch liệu, luật có lẽ thay đổi

Tính đọng ngơn ngữ nằm ngắn gọn Các đặc trưng chương trình bao gồm kết cấu có cấu trúc, từ khố viết tắt, hàm có sẵn, đơn giản hố việc lập trình Tương phản với hai ngôn ngữ hệ bốn SQL Focus Cobol, ngôn ngữ hệ ba Thực tế cho thấy đến dòng lệnh 4GLs tương đương với 50 đến 150 dịng lệnh ngơn ngữ Cobol Thời gian học Focus ngắn Cobol phần tính động ngơn ngữ

Tính đọng bao hàm tính cục việc cung cấp phân đoạn tự nhiên mã lệnh, làm đơn giản hoá việc học, trực quan hoá phần vấn đề mơ giải pháp Tính cục cung cấp thơng qua khối case, chế phân đoạn (chunks) Sự phân đoạn có lẽ thực thơng qua thực thi đoạn mã ngôn ngữ Cobol, cấu trúc case ngôn ngữ Focus, định nghĩa đối tượng ngôn ngữ Smalltalk

(9)

Trong lựa chọn ngôn ngữ độ khó biên dịch đóng vai trị quan trọng Nói chung, nhiều ngơn ngữ mơ tả, ví dụ SQL, xem xét, cân nhắc sở dễ dàng dịch mã ngữ so với ngôn ngữ thủ tục Fortran Mặc dù vậy, Prolog ngôn ngữ suy diễn khác đơn giản việc mô tả phát triển luật đơn không tầm thường việc định kết hợp luật để tạo tri thức

Tính hiệu trình biên dịch nằm tính hiệu mã assembler nhận sau dịch Tính hiệu thay đổi tuỳ theo ngơn ngữ nhà sản xuất Tính hiệu trình biên dịch đặc biệt quan trọng lập trình hệ thống máy bay hay ứng dụng thường trú tương tác với thành phần hệ thống phần hệ thống lớn

Cùng với tính hiệu quả, tính khả chuyển mã quan trọng Tính khả chuyển khả đáp ứng mã sở thực khác Các sở thực bao gồm phần cứng, hệ điều hành, hay môi trường thực phần mềm Khi ứng dụng dùng chung phân tán phổ biến cần thiết tính khả chuyển ngơn ngữ tăng Lý tưởng nhất, chương trình thực nơi nào, phần cứng hay hệ điều hành

Tóm lại, tảng khơng đóng vai trị để phân biệt ngơn ngữ tính đặc trưng ngơn ngữ trở nên quan trọng việc lựa chọn ngôn ngữ 5.4 PHÂN LỚP VÀ ĐÁNH GIÁ VỀ NGÔN NGỮ CÀI ĐẶT

5.4.1 Các lớp ngơn ngữ

Hiện có hàng trăm ngơn ngữ lập trình, nhiên theo đánh giá người ta chia làm bốn hệ - từ hệ thứ đến hệ thứ bốn

+ Các ngôn ngữ hệ thứ nhất: chương trình viết theo mã máy hợp ngữ Các ngôn ngữ phụ thuộc vào máy có mức độ trừu tượng thấp Ta nên dùng ngôn ngữ ngôn ngữ cấp cao đáp ứng hay không hỗ trợ yêu cầu ứng dụng

+ Các ngôn ngữ hệ thứ hai: phát triển từ cuối năm 1950 đến đầu năm 1960, FORTRAN, COBOL, ALGOL, BASIC, Nó xem tảng cho ngơn ngữ lập trình đại - hệ thứ ba Các ngôn ngữ hệ thứ hai đặt trưng việc sử dụng rộng rãi thư viện phần mềm khổng lồ chấp nhận rộng rãi

(10)

+ Các ngôn ngữ hệ thứ tư: Trọng tâm ngôn ngữ hệ thứ tư nâng mức độ trừu tượng chương trình lên cao Các ngơn ngữ giống ngôn ngữ nhân tạo khác chứa cú pháp phân biệt để biểu diễn điều khiển cấu trúc liệu, nhiên biểu thị cấu trúc mức độ trừư tượng cao cách xoá bỏ yêu cầu xác định chi tiết thuật tốn Một số ngơn ngữ thuộc hệ thứ tư ngôn ngữ vấn đáp, ngôn ngữ hỗ trợ định, ngôn ngữ làm mẫu, 5.4.2 So sánh, đánh giá số ngôn ngữ cài đặt

Ở đây, đánh giá số ngôn ngữ phổ biến dùng tổ chức kinh doanh ngày như: SQL, Focus, Basic, Cobol, Fortran, C, Pascal, Ada, Prolog, Smalltalk Những ngôn ngữ đại diện cho kiểu lập trình chủ yếu xét gồm: lập trình thủ tục (Basic, Cobol, Fortran, Pascal), hướng đối tượng (Smalltalk, Ada), xử lý khai báo (SQL, Prolog), ngôn ngữ hệ thứ tư (Focus), hệ chuyên gia (Prolog)

1 SQL- Structured Query Language

Được xem chuẩn American National Standards Institute ngôn ngữ hỏi đáp sở liệu, SQL ngôn ngữ thành công Ưu điểm SQL hầu hết khơng mang tính kỹ thuật: dễ dàng sử dụng, gọn gàng, đồng nhất, cục bộ, tuyến tính, tính khả chuyển khả tự động công cụ Sự đơn giản ngôn ngữ thể thời gian học ngôn ngữ nhanh người lần đầu sử dụng ngôn ngữ - người học viết câu hỏi vịng phút Và thời gian để trở thành thành thạo so với ngơn ngữ sở liệu khác

Nhiều môi trường hỗ trợ phân tích thiết kế hệ sở liệu logic thơng qua q trình chuẩn hố Các sản phẩm sinh lệnh SQL định nghĩa sở liệu kết thiết kế logic sở liệu

2 Focus

Là ngôn ngữ hệ bốn bao gồm Database Engine ngơn ngữ hỏi đáp tương thích với SQL, hiển thị, hệ hỗ trợ đồ hoạ, thiết kế, bảo trì tiến trình xử lý thơng minh Focus DB hỗ trợ mơ hình quan hệ, mơ hình phân cấp mơ hình mạng, cung cấp giao diện với nhiều khuôn dạng Cũng SQL, mặt mạnh chủ yếu Focus liên quan tới đặc trưng phi kỹ thuật ngơn ngữ, tính đọng, tính cục bộ, tính tuyến tính, khơng bị ràng buộc mã chuyển đổi, tính khả chuyển tính sẵn dùng cơng cụ CASE cho việc phân tích thiết kế liệu Đơi Focus nhập nhằng việc biên dịch phân cấp liệu hay đa kết nối liệu Hàng loạt version Focus hỗ trợ khả đa người sử dụng Focus ngôn ngữ ngầm định không hỗ trợ định nghĩa người dùng tài nguyên khác người sử dụng

3 Basic - Beginers All purpose Symbolic Interchange Code

(11)

học, dễ viết, có tính thống nhất, chặt chẽ hệ thống trợ giúp kiểm tra tự động tốt Các đặc trưng ngơn ngữ cịn lại thay đổi tuỳ thuộc vào phiên Basic khác Khả khả chuyển Basic lệnh vào thường phải thay đổi để phù hợp với môi trường

Basic hỗ trợ thao tác lập trình chuẩn với số giới hạn, số kiểu liệu khơng có chức kiểm tra kiểu Cấu trúc ngôn ngữ bao gồm phép lặp, điều kiện xử lý mảng, đọc/viết file

4 Cobol- Common Business Oriented Language

Là ngôn ngữ sử dụng nhiều lịch sử máy tính Cobol ví xe bus, lập trình Cobol nhiều thời gian, lại phù hợp với số vấn đề thương mại Như ngơn ngữ đa mục đích, Cobol cung cấp tất chức

Các tiến trình vào/ra Cobol hiệu quả, có tính thống cao hỗ trợ hầu hết loại liệu Ngôn ngữ Cobol không phù hợp cho ứng dụng thời gian thực hay ứng dụng đệ quy

Trong đặc trưng phi kỹ thuật, Cobol có tính sẵn dùng cao công cụ trợ giúp, sinh mã, chương trình kiểm tra Như hầu hết ngôn ngữ thông dụng khác Cobol ngôn ngữ phát triển hỗ trợ tự động Đây ngơn ngữ có tính tự động cao hỗ trợ nhiều trình biên dịch Trong đặc trưng phi kỹ thuật khác, Cobol thường SQL Focus tốt nhiều ngôn ngữ thủ tục khác

5 Fortran - Formula Tranlastion

Là ngôn ngữ năm 60 Điểm yếu Fortran lĩnh vực xử lý liệu hỗ trợ cấu trúc file Fortran khơng tích hợp với phần mềm DBMS giới hạn Vì trình vào Fortran thường bị giới hạn nhiều so với ngôn ngữ khác

Điểm mạnh Fortran tính hiệu giải thuật sinh mã để thực trình xử lý số Chương trình dịch Fortran thường hỗ trợ thư viện chương trình chứa nhiều thuật toán ngắn sử dụng thường xun, q trình thiết kế xử lý tốn học Các chương trình thiết kế để dễ dàng định nghĩa sử dụng biến tổng thể biến cục Sự xáo trộn dạng liệu Fortran quan trọng trình xử lý số cho kết khác tuỳ thuộc vào định nghĩa trường liệu xử lý

6 C

C ngôn ngữ cấp cao phát triển để thực xử lý cấp thấp Một chương trình viết C dãy hàm chúng truy cập đến tên chúng mã chương trình

(12)

7 Pascal

Pascal ngôn ngữ thiết kế rõ ràng dùng làm tài liệu giảng dạy cho sinh viên ngành khoa học máy tính Một chương trình viết Pascal thường có khn dạng thoải mái Pascal lại có cấu trúc cú pháp tự nhiên Pascal trở thành ngôn ngữ dễ đọc

Trong thời điểm Pascal cung cấp tiến trình điều khiển thời gian thực Tuy nhiên Pascal chuẩn không cung cấp thư viện thơng thường hồi người ta cho tất module chương trình viết thành chương trình có nghĩa mã chương trình nằm khn khổ chương trình đơn Trong Pascal có số điều khiển nhỏ thực tiến trình ngắt Tiến trình vào giới hạn so với số ngôn ngữ, không hỗ trợ truy cập ngẫu nhiên hạn chế việc xử lý xâu

8 Prolog - Programming in Logic

Là ngôn ngữ phát triển riêng cho lĩnh vực trí tuệ nhân tạo Prolog phát triển trường đại học Marseiller từ sớm (những năm 70) phát triển rộng rãi Mỹ David Warren Prolog ngôn ngữ hướng mục đích, ngơn ngữ đặc tả với cấu trúc mệnh đề luật

Prolog mệnh đề thành phần cụ thể thông tin thực Prolog luật định nghĩa từ mệnh đề giả định để tạo thông tin

9 Smalltalk

Smalltalk phát triển môi trường điều hành ngơn ngữ lập trình vào năm 70 trung tâm nghiên cứu Xerox Palo Alto nhóm Learning Research Đó ngơn ngữ hướng đối tượng, coi thứ đối tượng, chí thể hiện, số nguyên Smalltalk tối ưu mức cao vậy, sử dụng để thiết kế ứng dụng có hiệu

Smalltalk có đầy đủ chức năng, ngơn ngữ lập trình làm việc khơng hạn chế Điểm yếu chủ yếu Smalltalk không hỗ trợ đối tượng liên tục file Nhưng file coi đối tượng, xử lý Smalltalk

Điểm mạnh Smalltalk sử dụng trình xử lý hướng kiện điều khiển tiến trình, việc điều khiển hệ thống điều hồ nhiệt độ, thông báo kịp thời nhu cầu sản xuất Các ứng dụng loại sử dụng thơng điệp khơng liên tục từ mơi trường bên ngồi để điều khiển trình xử lý thực ứng dụng

10 Ada

Ada, ngôn ngữ lập trình thức Bộ Quốc phịng Mỹ với hàng trăm nghìn người sử dụng, có lối tư khác cách lập trình so với ngơn ngữ khác

(13)

hơn hướng đối tượng Trong ứng dụng dựa đối tượng, chương trình hoạt động tập hợp đối tượng, tập hợp đại diện thể vài kiểu đối tượng Tất kiểu đối tượng thành phần mơ hình phân cấp kiểu mà chúng kết nối thông qua trình xử lý việc kế thừa quan hệ Các lớp thường khó phân biệt với kiểu khơng có đối tượng qn file khơng hỗ trợ kế thừa

Khái niệm file Ada giống Smalltalk định nghĩa kiểu cấu trúc ngơn ngữ q trình xử lý kiểu Giống Smalltalk, sức mạnh Ada khả việc hỗ trợ xử lý hướng kiện tên lửa dẫn đường hệ thống phòng thủ quốc gia

Phiên tương lai Ada đáp ứng cấu trúc thừa kế xử lý đa lớp liên kết động đối tượng, xử lý thông điệp thực quán đối tượng quán cung cấp cấu trúc liệu đa dạng Với mở rộng ngơn ngữ Ada thích hợp với ứng dụng ảo Một lưu ý tương tự khác tư hướng đối tượng phần Smalltalk: thiết kế hướng đối tượng phát triển chương trình khác phát triển ứng dụng thủ tục thông thường với ngôn ngữ Cobol

5.4.3 Chọn ngôn ngữ cho ứng dụng

Khi làm việc ứng dụng ta khơng có lựa chọn ngôn ngữ Nhưng ban đầu chọn sai ngôn ngữ phải liên tục sửa đổi yêu cầu để phù hợp với giới hạn ngôn ngữ Việc lựa chọn ngơn ngữ lập trình phải xem ngơn ngữ lập trình có phù hợp với kiểu ứng dụng hay khơng xem có phù hợp với việc dùng để phát triển ứng dụng

Dựa vào đánh giá 5.4.2, ta có bảng thống kê việc lựa chọn ngơn ngữ lập trình dựa tiêu chí ứng dụng sau

Kiểu ứng

dụng SQL Focus Basic Cobol Fortran C Pascal Prolog Ada Smalltalk

Lô X X X X

Trực

tuyến X X X X X X X X

Thời gian

thực X X X

Hỏi đáp

CSDL X X X X X

Hỗ trợ

quyếtđịnh X X X X X X X X

Hệchuyên

gia X

(14)

5.5 HIỆU QUẢ CỦA CHƯƠNG TRÌNH VÀ TẦM QUAN TRỌNG

Trước hết, tính hiệu u cầu hồn thiện thiết lập phân tích u cầu phần mềm Thứ hai thiết kế tốt, sau đến tính hiệu chương trình đơi với tính đơn giản chương trình Cần lưu ý khơng bỏ qua tính rõ ràng, dễ đọc hay đắn để có cải thiện vơ nghĩa tính hiệu

Có hai lý để nghiên cứu việc tăng hiệu suất chương trình Thứ tầm quan trọng mang tính chất nhiều ứng dụng: chi phí thời gian nhớ Lý thứ hai vấn đề giáo dục - mảnh đất tốt để đào tạo Trong giới hạn đây, bàn luận vấn đề cho việc tăng tính hiệu thực tế - đo - chương trình

5.6 MỘT SỐ VẤN ĐỀ TRONG CẢI TIẾN HIỆU SUẤT

Như đề cập trên, ta quan tâm đến vấn đề để giảm thời gian chạy chi phí nhớ cho chương trình

Để minh hoạ cho luận nêu vấn đề trên, đây, ta vấn đề quan tâm thông qua tốn ví dụ minh hoạ

5.6.1 Tốc độ xử lý

Trong hầu hết trường hợp, tốc độ chương trình quan trọng ứng dụng thời gian thực, ứng dụng xử lý sở liệu lớn, Để ứng dụng có tốc độ nhanh, người lập trình chúng phải quan tâm đến nhiều yếu tố như: thuật toán sử dụng, lựa chọn cấu trúc liệu, tinh chế mã cho chương trình,

5.6.1.1 Thuật tốn sử dụng

1 Xác định lại toán

Yêu cầu: Trước bắt tay vào giải toán, tìm hiểu kỹ u cầu mà tốn đặt tận dụng điều biết từ toán

Bài toán minh hoạ: Cho mảng số nguyên gồm 1.000.000 phần tử; giá trị nằm khoảng từ 10 cách ngẫu nhiên Hãy xếp để mảng có thứ tự giảm dần

 Giải toán tổng quát: tốn xếp; dùng đoạn chương trình xếp có sẳn hệ thống hay sử dụng thuật tốn xếp có sẳn Insert -Sort hay Quick - -Sort chẳng hạn Chi phí độ phức tạp o(n2) hay o(nlogn).

 Tuy nhiên, ta bỏ qua tính chất tốn giá trị nằm khoảng 10 Sau nghiên cứu toán ta định sử dụng thuật toán đếm cho việc xếp toán

(15)

+ Vcới giá trị i mảng, tăng biến thứ i lên đơn vị

+ Thực rải giá trị cho mảng ứng với số lần giá trị biến thứ i; Như thế, chi phí độ phức tạp toán o(n)

2 Sức mạnh thuật toán

u cầu: Việc nghiên cứu thuật tốn giúp ích nhiều cho nhà lập trình Các thuật tốn có ảnh hưởng quan trọng đến hệ thống phần mềm đặc biệt chúng tăng nhanh tốc độ vận hành

Bài toán minh hoạ: Quay mảng chiều chứa N phần tử bên trái I vị trí Với N = 8; I = ta mảng ABCDEFGH quay thành DEFGHABC

 Thuật toán 1: Ta giải tốn cách I phần tử mảng sang mảng đoạn; dịch chuyển N - I phần tử lại mảng bên trái I vị trí; sau I phần tử từ mảng tạm cuối mảng Trong trường hợp N I lớn, việc cần mảng tạm tốn nhớ; xét trường hợp nhớ máy không dồi giải nào?

 Thuật tốn 2: Ta viết thủ tục quay mảng X sang bên trái vị trí (như giải vấn đề tốn nhớ cần dùng biến phụ) sau thực thủ tục I lần Tuy nhiên, thủ tục tốn thời gian tỉ lệ với N chương trình tỉ lệ với thời gian I*N; N I lớn điều thực

 Thuật toán 3: Để ý rằng: quay mảng X gồm N phần tử I vị trí, (giả sử quay sang trái), lúc phần tử X[i+1] phần tử X'[1] (ký hiệu X'[i] phần tử thứ i mảng X sau quay); X[2i+1] phần tử X'[i+1], tiếp tục Do ta có thuật tốn sau:

+ Dịch chuyển X[1] đến biến tạm T + Dịch chuyển X[i+1] X[1];

+ Dịch chuyển X[2+i+1] X[i+1],

+ Q trình tiếp tục; số tính theo module N tức vượt N chia lấy dư cho N

+ Quá trình lặp gặp phần tử X[1] lúc dùng giá trị từ biến T trình chấm dứt

Ví dụ: Với trường hợp N = 8, I =  mảng X = ABCDEFGH ta có sau: X = ABCDEFGH; N = 8; I = 3; T = A

+ Dịch chuyển X[i+1]: X[4]  X[1] + Dịch chuyển X[2i+1]: X[7]  X[4]

+ Dịch chuyển X[3i+1]: X[10]  X[2]  X[7]

+ Dịch chuyển X[4i+1]: X[13]  X[5]  X[10]  X[2]

(16)

7  DBCGEFGH (10)2  DBCGEFBH  DECGEFBH  DECGHFBH (11)3  DECGHFBC  3(11) DEFGHFBC (9)1  DEFGHABC T => Dừng

Đây thuật tốn có chi phí vùng nhớ khơng lớn thời gian chạy chấp nhận

3 Các kỹ thuật thiết kế thuật toán tinh chế thuật toán

Yêu cầu: Thực theo nguyên tắc sau:

 Lưu trữ trạng thái cần thiết để tránh tính lại,  Tiền xử lý thơng tin để đưa vào cấu trúc liệu,  Sử dụng thuật tốn thích hợp,

 Chỉ cận thuật toán,  Sử dụng kết tích luỹ,

Bài tốn minh hoạ: Cho vector X chứa N số thực X[1], X[2], ,X[N] Gọi vector X vector mà phần tử phần tử liên tiếp X Tổng vector tính tổng phần tử vector Tính tổng lớn vector con, tức tìm L,U1 N để tổng X[i], iL U lớn

Để đơn giản, vectơ có tổng lớn gọi tắt vectơ lớn Ví dụ, vectơ đầu vào có dạng:

31 -41 59 26 53 58 97 -93 84

Lúc này, kết toán tổng vectơ X[3 7] Bài toán đơn giản tất số số dương - kết thân vectơ X Vấn đề phức tạp có thêm số âm Chúng ta nhận xét tất số âm kết (đó tổng vectơ rỗng)

 Thuật tốn 1: Một chương trình viết xét tất cặp số nguyên L U thoả mãn 1<= L<= U<= N; cặp ta tính tổng vectơ X[L U] so sánh tổng với giá trị lớn có Ta có giã mã cho thuật toán sau:

MaxSoFar := 0; For L := to N For U := L to N

Begin

Sum := 0;

For I := L to U

(17)

/* Sum chứa tổng X[L U] */

MaxSoFar := Max(MaxSoFar, Sum); End;

Chương trình ngắn dễ hiểu, nhiên điều khơng may chạy chậm Độ phức tạp chương trình o(n3)

 Thuật tốn 2: Đối với thuật tốn 1, đa số người lập trình cho viết chương trình chạy nhanh Có hai cách Các cách có độ phức tạp o(n2) Thuật tốn thứ tính nhanh tổng vectơ cách sử dụng

hệ thức: Tổng X[L U] = Tổng X[L U-1] + X[U]; Ta có thuật tốn sau:

MaxSoFar := 0.0; For L := to N

Begin

Sum := 0.0;

For U := L to N Begin

Sum := Sum + X[U];

/* Sum chứa tổng X[L U] */

MaxSoFar := Max(MaxSoFar, Sum); End;

End;

Các lệnh vòng lặp thứ thực N lần Với lần thực lệnh vòng lặp thứ nhất, lệnh vòng lặp thứ hai thực nhiều N lần Vậy ta có độ phức tạp o(n2).

 Thuật toán 3: Thuật toán chia để trị: "Để giải tốn kích thước N, giải cách đệ quy hai tốn kích thước khoảng N/2, kết hợp lời giải chúng để tạo lời giải tồn tốn"

Trong trường hợp toán ta xử lý vectơ độ dài N, cách tự nhiên chia vectơ thành hai vectơ có độ dài gần Chúng ta gọi hai vectơ A B

A B

Sau đó, đệ quy tìm vectơ lớn A B gọi MA MB

MA MB

Để ý kết toán giá trị lớn hai tổng vectơ MA MB Kết tốn tổng vectơ MC chứa đồng thời thành phần A B Ta gọi vectơ vectơ vượt biên

(18)

Như thuật tốn chi để trị tính MA,MB đệ quy tính MC phương pháp khác, kết toán giá trị lớn ba tổng ba vectơ Các mô tả gần đủ để viết chương trình Chúng ta cịn phải mô tả cách quản lý vectơ nhỏ cách tính vectơ MC Phần dễ: Đối với vectơ chứa phần tử, vectơ lớn vectơ rỗng trường hợp phần tử vectơ số âm, vectơ lớn vectơ rỗng vectơ rỗng Để tính MC, nhận xét thành phần vectơ MC nằm vectơ A vectơ lớn tất vectơ vectơ A, biên A B Tương tự thành phần vectơ MC nằm vectơ B Kết hợp tất yếu tố này, có thuật tốn 3, gọi lệnh:

Answer := MaxSum(1,N);

Recursive Function MaxSum(L,U) Begin

if L > U then return 0; /* vectơ rỗng */

if L = U then return Max(0.0, X[L]); /* vectơ phần tử */

M := (L+U) div

/* A vectơ X[L M], B vectơ X[M+1 U]*/ /* Tìm giá trị lớn tổng thành phần bên trái (trong vectơ A) của vectơ vượt biên */

Sum := 0; MaxToLeft := 0;

For I := M downto L Begin

Sum := Sum + X[I]

MaxToLeft := Max(MaxToLeft, Sum) End;

/* Tìm giá trị lớn tổng thành phần bên phải (trong vectơ B) vectơ vượt biên */

Sum := 0;

MaxToRight := 0; for I := M +1 to U Begin

Sum := Sum + X[I]

MaxToRight := Max(MaxToRight, Sum) End;

MaxCrossing := MaxToLeft + MaxToRight; MaxInA := MaxSum(L,M);

MaxInB := MaxSum(M+1,U);

Return Max(MaxCrossing, MaxInA, MaxInB); End;

(19)

 Thuật toán 4: Thuật toán quét: Giả sử giải toán cho vectơ X[1 I-1]; làm để mở rộng kết cho toán với vectơ X[1 I]? Lý luận tương tự thuật toán "chia để trị": tổng lớn vectơ X[1 I-1] (gọi MaxSoFar), tổng lớn tất tổng vectơ kết thúc I (gọi MaxEndingHere)

MaxSoFar MaxEndingHere

Nếu tính MaxEndingHere cách tương tự thuật tốn 3, ta có thuật tốn bình phương (có độ phức tạp o(n2) Để làm nhanh

hơn, nhận xét điều sau: vectơ lớn kết thúc vị trí I vectơ lớn kết thúc vị trí I-1 bổ sung thêm phần tử X[I] cuối vectơ rỗng trường hợp tổng vectơ nhận số âm Ta có thuật tốn sau:

MaxSoFar = 0; MaxEndingHere = 0; For I := to N Begin

/* Bất biến: MaxEndingHere MaxSoFar X[1 I-1]*/

MaxEndingHere := Max(MaxEndingHere + X[I],0); MaxSoFar := Max(MaxSoFar, MaxEndingHere); End;

Chương trình có thời gian chạy o(n) Vì thuật toán gọi thuật toán tuyến tính

Như vậy, xây dựng ứng dụng, việc sử dụng thuật toán phù hợp làm giảm thời gian chạy chương trình cách đáng kể

5.6.1.2 Lựa chọn cấu trúc liệu

Song song với thuật toán, việc chọn lựa cấu trúc liệu ảnh hưởng lớn đến hiệu suất chương trình tác động đến thân thuật toán cấu trúc liệu gắn bó mật thiết với thuật tốn

Việc chọn đắn cấu trúc liệu làm giảm không gian nhớ, giảm thời gian chạy, tăng tính chuyển đặc dễ bảo trì, đặc biệt cấu trúc liệu cao cấp, chúng không thường dùng cần thiết khơng thể thiếu chúng

Ta gặp lại việc chọn lựa cấu trúc liệu phần 5.6.2 sau, phần xét khơng gian nhớ chương trình

5.6.1.3 Tinh chế mã

(20)

Tuy nhiên, tiếp cận bậc thấp tinh chế mã mà thường thực phần tốn chương trình để cải tiến hiệu suất Mặc dù phương pháp lúc cần thiết đơi lúc tạo khác biệt lớn hiệu suất chương trình

Các phương pháp thường dùng tinh chế mã + Tính trước giá trị,

+ Thay tương đương,

+ Dùng biến trung gian thích hợp, khơng tính lại vịng lặp Bài tốn: Cho chuỗi gồm triệu ký tự Hãy phân loại ký tự theo kiểu sau: kiểu chữ in, kiểu chữ hoa, kiểu số kiểu "khác"

 Lời giải mà ta thường làm: thực so sánh ký tự Như vậy, bảng mã ASCII, để xác định ký tự thuộc loại phải nhiều lần so sánh; điểm "nóng" chương trình

 Tinh chế mã: Ở đây, ta xem ký tự số mảng mà thành phần kiểu ký tự Như vậy, kiểu ký tự C mảng [C] để xác định kiểu ký tự, ta cần truy cập đến mảng đơn giản thay phải thực chuỗi so sánh phức tạp

Như vậy, thực tinh chế mã, cần xác định đâu điểm "nóng" chương trình tập trung vào điểm nóng Hơn nữa, ta biết nhiều phương pháp để cải tiến hiệu suất chương trình dùng đến phương pháp sau đôi khi, phương pháp dùng để làm giảm khơng gian chiếm chương trình

5.6.2 Khơng gian nhớ

Trong ngày đầu kỹ thuật máy tính, nhà lập trình bị hạn chế nhớ nhỏ; Ngày vấn đề không cịn điểm "nóng" Tuy vậy, thiết kế chương trình khơng phải lúc ta có đủ nhớ để sử dụng nhiều lý khác

5.6.2.1 Không gian liệu

Nguyên tắc để làm giảm không gian lưu trữ liệu + Đảm bảo tính đơn giản,

+ Trong số trường hợp đừng lưu trữ, tính lại cần thiết,

+ Đặc biệt, việc nghiên cứu kỹ cấu trúc liệu, (thường cấu trúc liệu thưa thớt) làm giảm nhiều không gian cần thiết để lưu trữ thông tin cho trước,

+ Nén liệu sau giải nén dùng,

+ Sử dụng nguyên tắc cấp phát nhớ: chẳng hạn cấp phát nhớ động,

(21)

số nguyên nằm khoảng 200; y số nguyên nằm khoảng 150 Chương trình dùng cặp (x,y) để xác định điểm (nếu có) chọn 2000 điểm cho

 Không gian lưu trữ 1: Một cách hiển nhiên để lưu trữ đồ dùng mảng chiều 200 x 150 số nguyên; ứng với x.y chứa giá trị khoảng từ 2.000 hay chứa giá trị

538

5 965

4 1121

3 17

2 98 162

1

Việc dùng bảng này, thời gian truy cập nhanh; chiếm đến 200 x 150 = 30.000 ô nhớ; giả sử để lưu trữ liệu (ở 2.000) cần byte ta cần 60.000B nhớ

Tuy nhiên, mảng đa số giá trị (giá trị không dùng) Do vậy, ta dùng lưu trữ giá trị cần thiết (ở 2.000 giá trị) việc chiếm nhớ giảm đáng kể

 Không gian lưu trữ 2: Thay dùng mảng chiều trên, ta sử dụng mảng chiều sau:

Value 17 538 1080 98 15 1800 437 832

Row 127 139 12 112 68

FirstCol 6 1999 2001

1 199 200 201

Mảng value dùng để chứa giá trị (ở 2.000) theo cột, cần 2.000 ô nhớ; Mảng Row mảng để chứa hàng tương ứng với giá trị mảng value; cần 2.000 ô nhớ Mảng FirstCol mảng để chứa số cột có - tương ứng với giá trị mảng value; cần 200 ô nhớ; thêm ô nhớ để đánh dấu, nên tổng cộng cần 201 ô

(22)

xác định điểm (trong số 2000 điểm) lưu giữ vị trí (I,J), dùng giãi mã sau:

For K := FirstinCol[I] to FirstinCol[I+1] If Row[K] = J then

/* Tìm thấy vị trí */

Return Value[K]

/* Khơng có điểm vị trí (I,J) */

Else Return 0;

Phương pháp dùng khơng gian nhiều so với phương pháp trước Ở dùng hai mảng 2000 phần tử mảng 201 phần tử (như tất 4201 từ 16 bit thay 30000 từ phương pháp trước đó) Mặc dù chậm (một lần truy nhập phải 150 lần so sánh trường hợp tồi nhất, trung bình cần lần), chương trình chạy tốt người dùng khơng gặp phải vấn đề

Lời giải minh hoạ số điểm tổng quát cấu trúc liệu Vấn đề cổ điển: việc biểu diễn thưa thớt (tức mảng hầu hết phần tử có giá trị, thường giá trị 0) Lời giải có ý tưởng đơn giản dễ cài đặt mảng Chú ý khơng có mảng LastinCol với mảng FirstinCol, sử dụng điều điểm cuối cột điểm đứng trước điểm cột Đay ví dụ tầm thường nguyên tắc tính lại thay lưu trữ Tương tự, khơng có mảng Col với mảng Row truy nhập mảng Row thông qua mảng FirstinCol, ln biết cột thời cột

Nhiều kỹ thuật sử dụng cấu trúc liệu khác làm giảm khơng gian Trong thực tế, tiết kiệm không gian cách thay mảng chiều thành mảng chiều Nếu sử dụng khoá lưu trữ số mảng, khơng cần phải lưu trữ thân khố này; thay vào đó, cần lưu trữ thuộc tính thích hợp nó, chẳng hạn số lần xuất Thêm vào đó, ứng dụng kỹ thuật đánh số khoá vận dụng Trong ví dụ ma trận thưa thớt đây, việc đánh số khố thơng qua mảng FirstinCol cho phép giải vấn đề mà không cần dùng đến mảng Col

5.6.2.2 Không gian chương trình

Trong số chương trình, đơi lúc kích thước thân vấn đề Hãy định nghĩa chương trình hay sử dụng thông dịch chuyên dụng để làm cho chương trình đơn giản, sáng làm cho rõ ràng dễ bảo trì

5.6.3 Lựa chọn hệ thống phần cứng

(23)

Trong xu phát triển phần cứng nay, cần phải tận dụng mạnh phần cứng để có hiệu suất chương trình cao, điều làm hạn chế tính phổ cập yêu cầu phần cứng cao chấp nhận

5.7 CÔNG CỤ TRỢ GIÚP VÀ PHÂN LOẠI

Mọi người biết đắt đỏ khó khăn việc phát triển phần mềm Việc cung cấp cho kỹ sư phần mềm công cụ trợ giúp, cung cấp khả tự động phát triển chương trình hiệu mặt chi phí Trong thời đại nhiều máy móc nay, trợ giúp phát triển thường có sẵn: mơi trường CASE, sinh mã trợ giúp kiểm tra gỡ rối, chương trình biên dịch tăng, mơi trường thực theo kiểu cửa sổ tốc độ phát triển mã hoạt động Bất kỳ ngôn ngữ có trợ giúp tự động,

Như thế, môi trường phát triển phần mềm công cụ phần cứng phần mềm chúng kết lại để trợ giúp cho việc sản sinh hệ thống phần mềm miền ứng dụng chuyên biệt

5.7.1 Công cụ CASE

CASE có loại ICASE, Upper CASE Lower CASE ICASE nghĩa "Intergrated" CASE CASE tích hợp, "Upper" nghĩa công cụ ý tưởng thiết kế logic, "Lower" nghĩa công cụ hỗ trợ lập trình Trong cơng cụ trên, tài liệu tập trung vào công cụ CASE hỗ trợ tối thiểu giai đoạn phân tích hỗ trợ giai đoạn khác; chúng gọi chung "CASE" Chúng ta xác định giai đoạn hỗ trợ (dĩ nhiên giai đoạn thay đổi phát hành)

Môi trường CASE chuẩn bao gồm kho chứa, công cụ đồ hoạ, phần mềm soạn thảo văn bản, phần mềm giao diện kho chứa, phần mềm đánh giá, giao diện người sử dụng

Công cụ xử lý đồ hoạ

Công cụ xử lý văn

Phần mềm phân tích thơng minh

Kho chứa Quản lý kho

chứa Giao diện

(24)

Một kho chứa từ điển liệu hỗ trợ định nghĩa kiểu đối tượng khác quan hệ đối tượng Các công cụ đồ hoạ hỗ trợ cho việc phát triển dạng sơ đồ đánh giá hoàn chỉnh sơ đồ dựa vào luật xác định trước Phần mềm văn cho phép định dạng tên, nội dung, chi tiết phần tử kho chứa Phần mềm giao diện biên dịch xác định dạng liệu dùng (đồ hoạ văn bản) Phần mềm đánh giá trí tuệ CASE Phần mềm phân tích đầu vào sơ đồ kho chứa xác định xem chúng có cú pháp hồn chỉnh hay khơng (ví dụ có thoả mãn định nghĩa kiểu liệu thành phần khơng), chúng có tương thích với đối tượng tồn khác ứng dụng hay không Giao diện người dùng cung cấp hình báo cáo để xử lý tương tác gián tiếp

CASE lý tưởng phải cung cấp đầy đủ hỗ trợ tự động cho toàn chu kỳ tồn dự án, bắt đầu việc phân tích mức xí nghiệp, trì cơng việc kết thúc CASE lý tưởng trở thành tiêu điểm cho công việc nằm công nghệ phần mềm, công việc kỹ sư hệ thống tập trung vào khía cạnh logic thiết kế Cơng cụ CASE lý tưởng cung cấp mặt kỹ thuật, liệu thực thiết kế tổ chức, lập dự án kiểm tra nhóm làm việc ứng dụng, chuẩn hoá liệu, sơ đồ xây dựng sở liệu, xây dựng mã đơn giản ngôn ngữ người sử dụng lựa chọn, tự động kiểm tra mã sinh đề phòng lỗi logic đánh giá hoàn chỉnh đắn q trình làm việc cách thơng minh Cơng cụ CASE thực tiên tiến phải nhận thành phần có kho chứa sử dụng lại việc phân tích, thiết kế mã nguồn

Kho chứa CASE xác định đồng thời hỗ trợ phạm vi đó, hỗ trợ Kho chứa siêu từ điển nhập lưu trữ siêu liệu Chẳng hạn, phần tử liệu ứng dụng liệu, thuộc tính tạo thành liệu trao đổi lưu trữ từ điển Các thuộc tính phần tử bao gồm kiểu liệu, kích thước, dung lượng, tần suất thay đổi tiêu chuẩn soạn thảo Một kho chứa CASE hoạt động hệ quản trị sở liệu phục vụ cho hoạt động kỹ sư, cung cấp khả mở rộng lưu giữ liệu trao đổi, trì tất thành phần mối liên hệ qua lại chúng

Sự thông minh CASE thể hai dạng chính: thơng minh giao diện thơng minh thân sản phẩm CASE Giao diện phải cung cấp kiểu thao tác cho người tập cho người có kinh nghiệm Nó phải cho phép khả công việc lưu giữ tiếp tục lại Cơng cụ thay đổi theo yêu cầu cá nhân người sử dụng Ví dụ, tơi muốn in màu vàng xanh, tơi gọi lược đồ dịng liệu, phải phép thay đổi giá trị ngầm định để dùng thuật ngữ dạng

Các dạng biến đổi giá trị đưa vào phải phản ánh thông qua tập sơ đồ Điều có nghĩa người dùng đưa thực thể thuộc tính vào kho chứa, di chuyển để triển khai lược đồ đồ hoạ quan hệ thực thể, thông tin kho chứa phải phản ánh lược đồ

(25)

xung đột với mục tiêu xí nghiệp Z, phải bật cờ báo để xem ý kiến người quản lý

CASE lý tưởng phải cho phép người sử dụng phân tách tích hợp ứng dụng khác cách dễ dàng Ví dụ, cơng ty muốn tư liệu hoá tất ứng dụng sử dụng bắt đầu quản lý điện tử chúng Khi người sử dụng xác định ứng dụng muốn tích hợp với ứng dụng cũ, họ phải phép để tạo định nghĩa thứ ba để làm sáng tỏ chồng chéo, dư thừa, không chắn vấn đề khác mà cặp tích hợp gặp phải

Theo quy luật 40-20-40 việc triển khai hệ thống, 40% thời gian dự án dùng để phân tích thiết kế, 20% dành cho lập trình 40% cịn lại để chạy thử Hướng nhà bán sản phẩm giảm bớt mã, giảm 20% thời gian phát triển Nhưng CASE lý tưởng cịn giảm 40% thời gian chạy thử Các công cụ kiểm tra CASE không cần thiết vấn đề khác (chẳng hạn cho sản phẩm làm việc tự lỗi)

Trong số sản phẩm thập kỷ 90, nhà sản xuất cung cấp hỗ trợ kiểm tra môi trường CASE họ Một cách lý tưởng, hỗ trợ bao gồm thử nghiệm hộp đen hộp trắng với can thiệp người, không bắt buộc Thử nghiệm hộp đen dùng cho kiểm tra kiểm tra xác đầu dựa đầu vào; thử nghiệm hộp trắng dùng cho sơ đồ logic chương trình Phần mềm thơng minh phân tích kiểu thực xác định chiến lược thử nghiệm thích hợp Thêm vào đó, phát triển liệu thử nghiệm dựa yêu cầu logic, dẫn dắt thử nghiệm trì kết thử nghiệm Các kết thử nghiệm tổng hợp thông qua chạy thử, giai đoạn thử nghiệm, phiên phần mềm, mơi trường phần cứng Khi lỗi tìm ra, phần mềm quay lại chỉnh tìm nguồn gốc lỗi - có khả thơng qua module

Khi phần mềm tạo nên lỗi phải có khả sửa chúng; gây lỗi người lỗi logic, phần mềm phải thông báo cho kỹ sư hệ thống yêu cầu sửa lỗi

Các sản phẩm tương lai thực khắc phục 40% thời gian dự án chúng đủ thông minh để xác định thành phần sử dụng lại ứng dụng Việc sử dụng lại thiết kế tiết kiệm nhiều việc khó khăn Đầu tiên, module mã sử dụng lại, sau đến lượt thiết kế, cuối phân tích logic dùng lại Việc tìm mã sử dụng lại công cụ CASE cung cấp vào năm 90, phần khác cung cấp vào kỷ

(26)

Các cấp độ tổ hợp CASE phân loại Tại mức thấp phổ tích hợp công cụ đơn Khi công cụ riêng lẻ cung cấp tiện ích truyền liệu mức độ tích hợp có đơi chút cải thiện Các cơng cụ sản xuất đầu theo dạng chuẩn tương thích với cơng cụ khác đọc format Trong số trường hợp, người xây dựng cơng cụ CASE hồn chỉnh làm việc với thông qua "cầu nối" tools Single- source intergration xuất nhà sản xuất cơng cụ CASE đơn lẻ tích hợp số lượng công cụ khác bán chúng gói phần mềm

Mức độ tích hợp cao có (IPSE) Intergrated Project Support Environment Các chuẩn cho khối cấu thành mô tả tạo Các nhà sản xuất công cụ CASE sử dụng chuẩn IPSE để xây dựng công cụ tương thích với nhà sản xuất khác theo chuẩn

5.7.2 Phân loại công cụ CASE

5.7.2.1 Các công cụ lập kế hoạch hệ thống tác nghiệp

Bằng cách mơ hình hố u cầu thơng tin chiến lược tổ chức, công cụ lập kế hoạch hệ thống tác nghiệp (Business System Planning Tools) cung cấp siêu mơ hình mà từ hệ thống thơng tin đặc trưng suy Các thông tin tác nghiệp mơ hình hố chuyển từ thực thể tổ chức khác công ty Mục đích cơng cụ phân loại giúp hiểu biết thông tin di chuyển đơn vị tổ chức

Các công cụ cung cấp nội dung quan trọng chiến lược hệ thống thông tin cấu trúc hệ thống phương pháp không hợp với yêu cầu tổ chức

5.7.2.2 Các công cụ quản lý dự án

Nhiều nhà quản lý dự án phần mềm tiếp tục đánh giá, điều khiển theo dõi dự án phần mềm theo cách trước làm từ 1950 Mỉa mai thay, có dãy rộng cơng cụ quản lý dự án CASE có tác động sâu sắc lên chất lượng quản lý dự án cho cố gắng phát triển phần mềm cỡ lớn nhỏ

Hiện nay, phần lớn công cụ quản lý dự án CASE định hướng vào phần đặc trưng quản lý dự án cung cấp hỗ trợ toàn cho hoạt động quản lý Bằng cách sử dụng tập hợp cơng cụ CASE có chọn lọc, quản trị dự án tạo đánh giá hiệu giá thành, nguồn lực, thời gian dự án phần mềm, xác định cấu trúc công việc thời biểu làm việc đồng thời theo dõi dự án Hơn người quản lý sử dụng cơng cụ để thu thập metrics mà cuối cung cấp định chất lượng hiệu phát triển phần mềm

(27)

phức tạp, kinh nghiệm đội ngũ) Các công cụ ước lượng nguồn lực, thời gian dự án gợi ý số lượng người Nhiều cơng cụ số cho phép mơ tình để quản trị định thời gian hoàn thành kiểm tra giá thành khả thực

Các công cụ lập biểu dự án cho phép nhà quản lý xác định nhiệm vụ, tạo mạng công việc, biểu diễn phụ thuộc công việc Phần lớn công cụ sử dụng phương pháp lập đoạn gắng để xác định thời lượng hồn thành dự án

Các cơng cụ theo dõi yêu cầu: Khi hệ thống phát triển lớn dần có nguy rơi vào tình trạng đổ vỡ, hệ thống hồn thiện khơng đáp ứng hoàn toàn yêu cầu khách hàng Mục đích cơng cụ theo dõi u cầu cung cấp cách tiếp cận hệ thống để phân tách yêu cầu, bắt đầu với quy trình gội thầu -RFP (Request For Proposal)- khách hàng đặc tả

Công cụ theo dõi yêu cầu đặc trưng bao gồm định lượng text giao tác người-máy, với hệ thống quản lý sở liệu lưu trữ phân loại yêu cầu hệ thống mà chuyển đến từ RFP đặc tả Phân tích viên phân loại yêu cầu biểu diễn câu đưa chúng vào sở liệu

Các công cụ quản lý độ đo: Các độ đo phần mềm cải thiện khả nhà quản lý để điều khiển phối hợp trình xử lý sản xuất phần mềm khả cộng tác viên để cải thiện chất lượng phần mềm Các công cụ đánh giá độ đo tập trung vào đặc trưng xử lý chế tạo Các công cụ định hướng quản lý thu thập độ đo đặc trưng dự án Các công cụ định lượng kỹ thuật xác định độ đo kỹ thuật Cung cấp điểm quan trọng chất lượng thiết kế mã

Các công cụ quản lý hỗ trợ cho nhà quản lý hệ thống thông tin cho phép ưu tiên dự án có cạnh tranh nguồn tài nguyên hữu hạn Do sử dụng yêu cầu, độ ưu tiên, ràng buộc đặt tổ chức lỗi, rũi ro kỹ thuật nghiệp vụ, công cụ sử dụng kiến thức chuyên gia để đưa gợi ý định cho nhà quản lý

5.6.2.3 Các công cụ hỗ trợ

Các cơng cụ tư liệu hố cho phép cán phát triển ứng dụng tự động hoá cập nhật tài liệu in báo cáo ứng dụng

5.6.2.4 Các cơng cụ phân tích thiết kế

Các cơng cụ phân tích thiết kế cho phép kỹ sư phần mềm tạo mơ hình hệ thống Nó bao gồm biểu diễn cho liệu, luồng điều khiển, nội dung liệu (thông qua đinh nghĩa từ điển yêu cầu), trình xử lý, đặc tả điều khiển, biểu diễn mơ hình hố khác

(28)

Công cụ SA/SD: Phần lớn công cụ phân tích thiết kế sử dụng phương pháp phân tích thiết kế cấu trúc Nó cho phép tạo mơ hình hệ thống phức tạp dần, mức độ yêu cầu kết thúc với sơ đồ kiến trúc

Công cụ PRO/SIM: Các công ty tạo mẫu mô (Prototyping and simulation) cho khả dự đoán trước dáng điệu hệ thống Mặt khác, cho phép khách hàng thời gian ngắn quan sát mơ hình Nhiều công cụ dạng cho phép sản sinh mã

Các công cụ phát triển thiết kế giao diện: Các nghiên cứu công nghiệp cho thấy 50-80% mã ứng dụng tương tác dành cho quản lý giao diện Các công cụ phát triển thiết kế giao diện thực tập hợp công cụ tạo đơn vị chương trình menu, button, windows, Tuy nhiên, công cụ thay công cụ tạo mẫu giao diện cho phép tạo hình theo chuẩn cách nhanh chóng

5.7.2.5.Các cơng cụ lập trình

Các cơng cụ lập trình bao gồm dịch, soạn thảo, gỡ lỗi cho phép dùng phần lớn ngôn ngữ lập trình truyền thống Các cơng cụ có liên quan nhiều tới mơi trường lập trình hướng đối tượng, ngơn ngữ hệ bốn, sản sinh chương trình

Các cơng cụ mã hố truyền thống: Đã có thời cơng cụ mã hố quy ước là: Complier, Editor, Debugger Pressman nói vấn đề sau: "Khi tay bạn có búa, vấn đề giống đinh" Hầu suốt 30 năm, lập trình viên có cơng cụ tay nên vấn đề công nghệ phần mềm quy vấn đề mã hoá

Các cơng cụ mã hố hệ 4: Hệ thống hỏi đáp sở liệu, sinh mã ngôn ngữ hệ làm thay đổi cách lập trình

Các công cụ lúc phân làm số loại, ví dụ như: o Bộ sinh ứng dụng

Ngôn ngữ hệ thứ

Biên dịch 4GL

Mã chương trình thực

Module sinh mã Thư viện mã

COBOL Soạn thảo hình

Soạn thảo báo cáo

(29)

o Bộ sinh mã

Các cơng cụ lập trình hướng đối tượng: Lập trình hướng đối tượng một cơng nghệ "nóng nhất" cơng nghệ phần mềm Vì lý này, nhà chế tạo CASE cung cấp ạt công cụ phát triển phần mềm hướng đối tượng tới thị trường

Các ngôn ngữ phổ biến C++, Eiffel, Smalltalk, Objective-C Môi trường hướng đối tượng đặc trưng thường kết hợp với cung cấp giao diện hệ (menu, mouse, multitasking, ) với chức đặc biệt "browser" - chức cho phép kỹ sư phần mềm kiểm tra tất đối tượng chứa thư viện

5.7.2.6 Các cơng cụ tích hợp kiểm tra

Có ba hạng cơng cụ kiểm tra sử dụng nhiều Nhiều công cụ phải trải hết phân loại nói

Các cơng cụ phân tích tĩnh: Các cơng cụ kiểm tra tĩnh giúp kỹ sư phần mềm việc rút trường hợp kiểm tra Ba kiểu khác công cụ kiểm tra tĩnh dùng công nghiệp: công cụ kiểm tra dựa mã, ngôn ngữ kiểm tra đặc tả công cụ kiểm tra dựa yêu cầu

Code-Based testing tools nhận mã nguồn đầu vào tiến hành số phân tích Căn vào mơ tả đầu vào chương trình thiết kế thủ tục dẫn công cụ kiểm tra tĩnh suy trường hợp kiểm tra sử dụng đường dẫn, kiểm tra điều kiện tiêu chuẩn luồng liệu

Requirements-based testing tools phân tách yêu cầu người dùng khuyên số trường hợp kiểm tra (hoặc lớp kiểm tra) mà thử yêu cầu Để thực tốt công cụ phân hạng phải truy nhập tới đặc tả hình thức phần mềm

Specialized testing languages cho phép kỹ sư phần mềm viết đặc tả kiểm tra chi tiết mà mô tả trường hợp kiểm tra logic cho thực Trong

Ngơn ngữ đặc tả thủ tục

Module sinh mã

Module sinh mã

Module sinh mã

Module sinh mã

COBOL

PL/1

C

(30)

phần lớn trường hợp, công cụ kiểm tra tĩnh tư liệu hố phân loại phép kiểm tra Và so sánh kết thực với kết dự tính

Các cơng cụ phân tích động: Các cơng cụ kiểm tra động tương tác với trình thực chương trình, kiểm tra đường thử, kiểm tra xác nhận giá trị biến, công cụ động loại can thiệp khơng can thiệp Công cụ can thiệp (intrusive) thay đổi phần mềm để kiểm tra Công cụ không can thiệp (nointrusive) sử dụng xử lý phần cứng tách rời chạy song song với xử lý chưa có chương trình kiểm tra Phần lớn công cụ thuộc phân loại phân tích động tạo báo cáo rõ số lượng khối, câu lệnh thực thời gian thực trung bình cho khối lệnh Cơng cụ kiểm tra động dùng để nối tiếp với công cụ kiểm tra tĩnh Các kiểm tra tĩnh tạo trường hợp test sau quản lý công cụ động

Công cụ quản lý test: Công cụ quản lý test dùng để điều khiển phối hợp kiểm tra phần mềm cho bước kiểm tra Các cơng cụ phân loại quản lý phối hợp kiểm tra regression Tiến hành so sánh output thực biểu kiến Nhiều công cụ quản lý test phục vụ điều khiển test

Một điều khiển test đọc nhiều trường hợp test từ file test, định dạng liệu test để phù hợp nhu cầu phần mềm, sau gọi phần mềm để test Cuối cùng, nhà quản lý test làm việc với công cụ theo dõi yêu cầu để cung cấp phân tích coverage yêu cầu cho kiểm tra

5.7.2.7 Các công cụ tạo mẫu

Tạo mẫu dùng rộng rãi tiến hố cơng nghệ phần mềm Các cơng cụ tạo mẫu phân bổ theo hình sau:

Mức thấp nhất, công cụ tạo "mẫu giấy" Cơng cụ chạy máy tạo hình ảnh thực dùng để minh hoạ chức năng, dáng điệu hệ thống Các hình ảnh khơng thể thực Trong số trường hợp, vẽ hình sinh mã để tạo hình Các cơng cụ CASE phức tạp cho phép tạo thiết kế liệu, hình hiển thị báo biểu

5.7.2.8 Các công cụ bảo trì

Các cơng cụ bảo trì phân lại theo chức sau: Mẫu giấy

Soạn thảo hình

PRO/SIM tools

CASE có cơng cụ tạo mẫu

CASE có khả sinh mã

Mức độ áp dụng mẫu trình phát triển phần mềm ứng dụng

(31)

+ Thiết kế ngược với công cụ đặc trưng + Các cơng cụ phân tích cấu trúc lại mã + Các công cụ kiến tạo lại hệ thống trực tuyến

Các công cụ thiết kế ngược: Các công cụ thiết kế ngược tiến hành tạo lại phân tích ban đầu sở chương trình tồn Các cơng cụ phân loại tĩnh động

Một công cụ thiết kế ngược dùng mã nguồn đầu vào phân tích lấy kiến trúc chương trình, cấu trúc điều khiển, luồng logic, cấu trúc liệu, luồng liệu Các công cụ thiết kế phụ thuộc (Dependency analysis tools) tiến hành phần lớn chức trên, ngồi cịn xây dựng sơ đồ graphic biểu diễn phụ thuộc liên kết cấu trúc liệu, khối chương trình, đặc tính khác chương trình

Các cơng cụ thiết kế ngược quan sát phần mềm chạy sử dụng thông tin nhận để xây dựng mơ hình dáng điệu chương trình Mặc dù chúng dùng cần thiết cho việc bảo trì chương trình thời gian thực nhúng hệ thống khác

Các công cụ thiết kế: Các cơng cụ thiết kế lại chia làm hai nhóm: cơng cụ cấu trúc lại mã, cơng cụ thiết kế lại liệu

Các công cụ cấu trúc mã lại nhận mã nguồn phi cấu trúc đầu vào, tạo thiết kế ngược, sau cấu trúc lại mã Mặc dù công cụ hữu ích, chúng tập trung việc thiết kế thủ tục chương trình

Các công cụ thiết kế lại liệu làm việc cực thiết kế Các công cụ truy nhập định nghĩa liệu sở liệu mơ tả ngơn ngữ lập trình ngơn ngữ mơ tả sở liệu Sau chuyển sang dạng biểu diễn graphic phân tích kỹ sư phần mềm

Tương tác với công cụ thiết kế lại, kỹ sư phần mềm thay đổi cấu trúc sở liệu, chuẩn hố liệu, sau tự động sinh mã Các cơng cụ sử dụng hệ chuyên gia

5.7.3 Một số công cụ cung cấp tự động cho việc sinh mã

Các tiện ích CASE xây dựng việc sinh mã hay giao diện phục vụ cho sinh mã, cho phép trộn lẫn mã khác để phù hợp với môi trường phát triển ngôn ngữ sinh

Một số CASE thông dụng như:

Sản phẩm Kỹ thuật

ADW-Construction Workbench Knowledgeware Inc., Atlanta, CA

Xây dựng mã giả modul, dùng cho việc sinh mã cho MsDOS, MVS

Cdevelopment Environment, OOSD/C++ S/Cubed Inc Stamford, CT

Sinh mã Cobol cho Mainframe, AS/400, OS/2 Sinh mã C cho MsDOS, OS/2

(32)

IEW Texas Instruments

Dallas, TX Cho MVS, MsDOS, OS/2.Giao diện cho Telon sinh mã khác

Sản phẩm Kỹ thuật

NeXTStep 3.0 NeXT Computer

Redwood City, CA

Môi trường sở liệu hướng đối tượng

ObjectMaker Mark V Systems

Sinh mã C hay C++ cho MsDOS, VMS, Unix, AIX

Software Through Pictures Intergrated Development

Sinh mã C hay C++ cho Unix, AIX Systems Architect Popkin

Software & System Inc New

York, NY Sinh mã C cho MsDOS, OS/2

Teamwork,Ensemble Cadre Technologies Providence, RI

Sinh mã C hay C++ cho Unix, OS/2, AIX

Visible Analyst Workbench Visible Systems Corp Newton, MA

Sinh mã C cho MsDOS

Những tiện ích cung cấp cách tự động bao gồm tiện ích sinh mã, chương trình biên dịch lớn dần mơi trường tạo chương trình Tồn chúng tiện ích Lower CASE hay Back-End CASE

Câu hỏi

1 Thế phong cách cài đặt chương trình tốt Tài liệu chương trình đem lại lợi ích gì?

3 Các tảng ngơn ngữ lập trình được? Hãy rõ tương đương thiết kế cài đặt để đảm bảo đắn chương trình

4 Với hồ sơ thiết kế hệ thống chương 4, bạn chọn công cụ cài đặc nào, sao?

Ngày đăng: 24/05/2021, 17:25

Xem thêm:

w