1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Kĩ nghệ phần mềm cách tiếp cận của người thực hành tập 2

78 32 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

Thông tin cơ bản

Định dạng
Số trang 78
Dung lượng 7,19 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chương vé phân tích hướng sự vật và mô hình hóa dữ liệu nêu ra cách xử lí chi tiết cho các kỉ thuật mô hình hóa mới và quan trọng này.Nảm chương hiện cd vé thiết kế phần mềm đã được tảng

Trang 4

^’n sách "Kỉ nghệ phấn Itìểm, cách tiếp cận của người thực hành" của Tiến sỉ Roger s Pressman đă được tái bản lấn thứ 3 vào nám 1992 So vói lán xuất bản đẩu (1982), sách lấn tái bản sau cùng đã được hiệu chỉnh bổ sung nhiéu kiến thức mới, hiện đại của lĩnh vực kỉ nghệ phẩn mểm.

Nội dung của sách phong phú, khá hoàn chỉnh, bao quát háu hết các vấn đé chính yếu của kl nghệ phấn mém

Tiến sỉ Pressman không những là một nhà khoa học tên tuổi

có uy tín về các phương pháp, công cụ kỉ nghệ phán mém mà còn ià một nhà sư phạm nhiẽu kinh nghiệm Các nội dung đã được tác già trình bày một cách hệ thống, cd tính khoa học và

sư phạm cao

Chính vi lẽ đd, sách có thể phục vụ thích hợp sát thực đông đảo bạn đọc Đây là một tài liệu quý, giúp các giáo viên Đại học có thể tham khảo để biên soạn các giáo trỉnh giảng dạy một loạt các chuyên để bậc Đại học và sau Đại học về kỉ nghệ phán mém Sinh viên, học viên cao học, các chuyên gia phát triển phẩn mém cđ thể tỉm thấy trong sách nhiéu kiến thức cơ bản, chuẩn mực giúp họ nám vững các nội dung đang được giảng dạy tại các trường Đại học Các câu hỏi cuối mỗi chương được soạn khá công phu, giúp người đọc tự kiểm tra kỉến thức của niỉnh, qua đó giúp họ hệ thống hda một cách toàn diện, củng

có và nâng cao hiểu biết sâu sác hơn về kỉ nghệ phấn mểm.Hiện nay số lượng giáo trỉnh cd chất lượng cao phục vụ sát thực chuyên ngành Công nghệ thông tin tại các trường Đại học eòn rất hiếm hoi Bản dịch là một đdng góp cd giá trị gdp phắn vào sự nghiệp đào tạo cán bộ Công nghệ thông tin

Xin được giới thiệu với đông đào bạn đọc

IIỒ s i ĐẰM

KHOA CỎNC; NOHỆ T ì ỉ i m ; TIN

LÒI GIỚI THIỆU

Trang 5

Kf NGHỆ PHẦN MỀM Cách tiếp cận của người thực hành

Tảc giả : Tiến sỉ Roger s Pressman

Nhà xuất bản : McGraw-Hill, Inc

Xuất bàn lấn thứ 3 cd sửa chữa và b ổ sung : 1982, 1987, 1992

”Roger Pressman đá viét một cuốn sách hướng dán toàn diện

và nhát quán vè linh vực kỉ nghệ phần mềm cho cả sinh viên CNTT lăn người làm phần mềm vầ các nhà quản Ỉỉ hành ngh^ CNTT hay càn tới việc thực hành CNTT,"

AC M C'om puting Reviews

”Một bản mới nhất, một xù lí sảu sấc v'ê tiến trình ki nghé phàn mèm."

B y ic lkx>k C lub

Trang 6

LÒI TÁC GIẤ

Trong hai thập kỉ qua, kỉ nghệ phần mém đã đi tới một kỉ nguyên mới Ngày nay người ta thừa nhận nó là một bộ môn chính thống, một lỉnh vực nghiên cứu xứng đáng, một khảo cứu

ti mỉ và một lỉnh vực tranh luận sôi nổi Trong toàn bộ ngành công nghiệp, "kỉ sư phẩn mém" đả thay thế cho "người lập trình” xem như một tên gọi công việc Các phương pháp, thủ tục và công cụ ki nghệ phấn mém đă được chấp nhận và ứng dụng thành công trong rất nhiểu lỉnh vực ứng dụng công nghiệp Các nhà quản lí và người hành nghể CNTT đểu nhận ra nhu cấu về một

cách tiếp cận có nguyên tác hơn tới việc phát triển phẩn mém.

Nhưng các vấn để được thào luận trong các lấn xuất bàn thứ nhất và thứ hai của cuốn sách này vản còn lại với chúng

ta Nhiểu cá nhân và công ti vẫn còn phát triển phẩn mểm một cách tùy tiện Nhiểu nhà chuyên môn và sinh viên vản còn chưa biết tới các phương pháp hiện đại Và kết quà là chất lượng phấn mểm mà chúng ta sàn xuất ra bị ảnh hưởng Bên cạnh đó, các cuộc tranh luận vể bản chất thực của cách tiếp cận kỉ nghệ phấn mém vẫn tiếp tục Kỉ nghệ phần mém vẫn

nằm trong tình trạng nghiên cứu trái ngược nhau Cđ những

quan điểm được thay đổi, có những tiến bộ nhất định nhưng còn rất nhiéu việc phải làm để đạt được độ chín muồi của ĩầguyên tác tiếp cận

Lấn xuất bản thứ ba của cuốn Kỉ nghệ phàn mèm : Cách

tiếp cận cùa người thực hànỉi giống như hai lấn đầu dự định

dành cho cả sinh viên lản những người hành nghể CNTT và vẫn duy trì định dạng cùng phong cách như các lán trước, (ịuyển sách vẫn như một tài liệu hướng dẫn cho các nhà chuyên niỏn cõng nghiệp và sách nhập niốn nâng cao cho sinh viên các

Trang 7

Giống như các lán xuất bản trước, các phương pháp kỉ nghệ phấn mềm đươc trỉnh bày theo trinh tự thời gian chúng được

áp dụng trong khi phát triển phấn mềm Tuy nhiên lấn xuát bản thứ ba này còn làm nhiéu điéu hơn là việc chỉ cập nhật đơn thuấn Quyển sách đã được cấu trúc lại để thích hợp với

sự phát triển vượt bậc trong lỉnh vực này và để nhấn mạnh vào những phương pháp và công cụ kỉ nghệ phẩn mém quan trọng Thay vì duy trì một quan điểm vòng đời chật chẽ, lấn xuất bản này trinh bày các hoạt động tổng quát đă được thực hiện bất kể tới mô hlnh kỉ nghệ phẩn mém đâ được chọn.Các chương vẫn còn được giữ lại như các lấn xuất bản trước thì cũng được chỉnh lí và cập nhật để phản ánh khuynh hướng

và kỉ thuật hiện thời Nhiéu mục mới chủ chốt đâ được thêm vào cho các chương vể kỉ nghệ hệ thống máy tính, cơ bản vé phân tích yêu cấu, thiết kế hướng dòng dữ liệu, thiết kế hướng sự vật, thiết kế thời gian thực, đàm bảo chất lượng phấn mém, kỉ thuật kỉểm thử phẩn mém và bảo trì Bên cạnh những cải biên này, tám chương mới đă được thêm vào cho lán xuất bản thứ ba.Chương nguyên gốc ban đẩu vễ quản lí dự án phần mém đã được bỏ đi và thay thế bởi ba chương mới vé cách đo, ước lượng

và lập kế hoạch dự án phán mểm Một chương mối vế phân tích cò cẩu trúc trinh bày các kí pháp và cách tiếp cận tới cả những ứng dụng qui ước lản thời gian thực Chương vé phân tích hướng sự vật và mô hình hóa dữ liệu nêu ra cách xử lí chi tiết cho các kỉ thuật mô hình hóa mới và quan trọng này.Nảm chương hiện cd vé thiết kế phần mềm đã được tảng cường thêm với một chương mới vể thiết kế giao diện người dùng Quản lí cău hình phần mém - một chủ đề đã trở thành

th en ch ố t cho việc p h á t tr iể n phần m ém th àn h côn g bây giờ

được xử lí trong một chương tách biệt Vai trò của tự động hóa trong kỉ nghệ phấn mểtti được xem xét trong hai chương mới

vé kỉ nghệ phần mém cd máy tính trợ giúp (CASE) Một chương nhán mạnh vào cổng cụ phán mém và ứng dụng của chúng còn chương kia thảo luận vé các môi trường và kho CASE tích hợp Chương cuối (cũng mới) hướng tới thế kỉ hai mốt và xem xét lại những thay đổi sẽ ảnh hưởng tới cách tiếp cận của chúng

Trang 8

Nhiéu thí dụ, vấn đé và điểm cấn đào sâu mới đả được bổ sung và cập nhật cho mọi chương.

Cuón sách gốm 24 chương cho lán xuất bản thứ ba này, được chia thành nâm phẩn Điểu này được thực hiện để gói gọn các chủ đé và trợ giúp cho giảng viên, những người không cd đủ thời gian dạy cà cuốn sách trong một học kỉ Phấn I - "Phẩn mém - Tiến trình và việc quản lí ntí” trình bày một bàn luận thấu đáo vé các vấn đế quản lí dự án phẩn mểm Phấn II -

"Phân tích hệ thống và các yêu cấu phần mém" - bao gổm nảm chương bao quát các vấn đé cơ bàn của phân tích và các phương pháp mô hình hóa yêu cáu và kí pháp Phấn III - "Thiết kế

và cài đặt phẩn mém" - trình bày một bàn luận sâu sác vê thiết kế phấn mém, nhấn mạnh tới các định mức thiết kế cơ bản dẫn tới hệ thống chất iượng cao và các phương pháp thiết

kế để dịch một mô hình phân tích thành giải pháp phần mém Phán IV - "Đảm bào, kiểm chứng và duy trì tính toàn vẹn phán méni" - nhấn mạnh vào các hoạt động được ứng dụng để đảm bảo chất lượng trong suốt tiến trinh kỉ nghệ phần mém Phấn V - "Vai trò của tự động hóa" - thảo luận vé tác động của CASE (kỉ nghệ phấn mềm với máy tính hỗ trợ) lên tiến trỉnh phát triển phẩn mểm

Việc tổ chức theo nám phấn của lẩn xuất bản thứ ba này giúp cho giảng viên "gộp chùm” các chủ đé dựa trên thời gian giảng dạy và nhu cấu của sinh viên Cd thể xảy dựng một giáo trin h toàn bộ cho một học phán xung quanh một hay nhiểu phấn trong nãm phấn này Chẳng hạn, "giáo trình thiết kế^ cđ

th ể nhấn mạnh riêng vào phấn III ; "giáo trình phương pháp"

có thể trinh bày các chương được tuyển lựa từ các phấn II, III, IV và V ; còn "giáo trình quản H" sẽ nhấn mạnh vào các phấn I và IV Bằng cách tổ chức lấn xuất bản thứ ba theo cách

mày, tôi có V định c u n g cấp cho các g iả n g viên m ột số p h ư ơ n g íán lựa chọn g iả n g dạy.

Sách Hướng dân giảng viên cho lấn xuất bản thứ ba của íruôn Kỉ nghê phân mèm : Cách tiếp cận của người thực hành

Trang 9

giảo trình kì nghệ phắn mểm, hướng dẫn nhiéu khuyến cáo cho

các dự án phẩn niềm có liên quan tới một giáo trình, trinh bày

các giải pháp cho vấn đề được tuyển lựa và các nguổn tham khào tới các tài liệu giàng dạy bổ sung, để tạo nên một "hệ thống" cho việc giảng dạy kỉ nghệ phấn mểm

Vân đàn kỉ nghệ phán mềm vẫn tiếp tục rộng mở vói một

tỉ lệ bùng nổ Một lần nữa, tôi xin cám ơn nhiéu tác giả sách, báo, tạp chí, những người đã cung cấp cho tôi cái nhìn sáng suốt, các ý tường mới và những bình luận trong suốt thập kỉ qua Nhiểu người đă được nêu trích dản trong các chương sách Tất cả đểu có công do sự đóng góp của họ vào lỉnh vực tiến triển nhanh chdng này T5i cũng muốn cám ơn những người

đã đọc duyệt lại cho lần xuất bản thứ ba, James Cross, Đại học Auburn ; Mahesh Dodavi, Đại học Iowa ; William s Junk, Đại học Idaho ; và Laurie Werth, Đại học Texas Những đóng gdp và phê bỉnh của họ là vô giá

Nội dung của lần xuất bản thứ ba này của cuốn Ki nghệ

phàn mèm : Cách tiếp cận cùa người thực hành đã được ỉàm

sắc nét thêm bởi hàng trâm nhà chuyên môn công nghiệp, giáo

sư đại học và sinh viên, nhừng người đã dùng nhừng lấn xuất bàn thứ nhất và thứ hai của cuốn sách này và đá bỏ thời gian

để trao đổi các gợi ý, phê bình và ý tưởng của họ Bên cạnh

đó tôi cũng xin cám ơn riêng với nhiều khách hàng công nghiệp trong toàn Bác MI và châu Âu, những người chác chán đă dạy cho tôi nhiéu hơn những gỉ tôi có thể dạy cho họ

Cuối cùng, tôi xin cám ơn Barbara, Mathew và Michael vỉ

đã dung thứ cho lịch biểu du hành của tôi, đả hiểu biết vé những tối làni việc tại ván phòng và vản còn tiếp tục cổ vũ tôi cho việc xuất bản tiếp vé "cuốn sách này”

k ( k ; i <: k s p r k s s m a n

Trang 10

THIẾT KẾ VÀ CÀI ĐẶT

PHẨN MỀM

Trang 11

tiên rành áp dụng nhiều k ĩ thuật và nguyên lí với mục đích xức (íịnh

ra một thiết hị, một tiến trình hay một hệ rhống đủ chi tiết icíế cho phép thực hiện nó về mặt vật //.”

Mục tiêu thiết kế là để tạo ra một mô hình hay biểu diễn ciủa một thực thể mà sau này sẽ được xây dựng Tiến trình phát triển mtô hình này tổ hợp trực giác và đánh giá dựa trên kinh nghiệm trong viiệc xây dựng các thực thể iư(Jng lự, một tập các nguyên lí và/hoặc cấc trực cảm hưi3fng dẫn cách tiến triển mô hình này, một tập các tiêu chuẩn

để có thể đánh giá chất lượng, và một tiến trình lặp lại để cuối cùng dẫn ttì biểu diễn thiết kế chung cuộc

Thiết kế phần mồm máy tính, giống như cách liếp cận t h i i í i k í công nghệ trong các lĩnh vực khác, liên tục thay đổi khi các pihưtrnị:

pháp mứi, cách phùn tích lốt hm» vh hiòu biết rộng hơn liên hi rí ICn

Khỏng eiống như thiết kế cư khí hay điộn tử Ihiốl kố phán mềrni có I f

ngay giai đoạn lưitng đối sớm trong sự tiốn hoá cùa IIÓ Chíiiiị: la đ;ì nôu ý tưởng nghiỏm chinh vé Ihiối kố phần mồm (như cái đôi I.ập với

Trang 12

“lập trình” hay “viết mã”) chí ít thì cũng đã hơn ba thập kỉ nay Do

đổ, phUítng pháp luận thiết kế phần mểm thiếu độ sâu, sự mềm dẻo và bản :hất định tính mà thông thường có gắn với nhiểu bộ môn thiết kế

kĩ nghệ cổ điển Tuy nhiên, các kĩ thuật cho thiết kế phần mềm thì đã

có, Iiôu chuẩn vổ chất lượng thiết kế cũng có sẵn, và chúng ta có thể

áp ding được kí pháp Ihiết k ế

Chương này trình bày các khái niệm cơ bản áp dụng được cho tnọi thiết kế phần mềm Các chưcTng 11 cho tới 15 xem xét nhiều phương pháp thiết kế phần mềm

Thiết kế phần mềm nằm ở trung tâm kĩ thuật của tiến trình kĩ nghé phần mém và được áp dụng bất kể tới khuôn cảnh phát triển được sử dụng Một khi các yêu cầu phần mềm đã được phân tích và đặc tả Ihì thiết kế phần mềm là một trong ba hoạt động kĩ thuật -

thiếìkế lập trình và kiểm thừ - những hoạt động cần để xây dựng và

kiểrn chứng phần mổm Từng hoạt động này biến đổi thồng tin theo cácl- cuối cùng tạo ra phần mềm máy tính h(Ịfp lệ

Luồng thông tin trong giai đoạn kĩ thuật này của tiến trình kĩ nghé phần mém được minh hoạ trong Hình 10.1 Các yêu cầu phần inén, được biểu thị bởi các mô hình thông tin, chức năng và hành vi,

là d i vào cho bước thiết kế Bằng việc sử dụng mộl trong một số

ph ưếng pháp thiết kế (được thảo luận Irong các chư(Tng sau), bước ihiiếi kế tạo ra thiết kế dữ liệu, thiết kế kiến trúc và thiết kế thủ tục

Thiià kê dữ liệu chuyển mồ hình lĩnh vực thông tin đã được tạo ra

trorụ bước phân tích thành các cấu trúc dữ liệu sẽ cần cho viộc cài

(lậu )hần mứm Thiết k ế kiến trúc định nghĩa ra mối quan hô giữa các thiàrh phần cấu trúc chính của chưítng trình Thiết k ế thủ tục biến đổi

aíic thành phán cấu trúc thành mô tà thù lục của phần mém Chưtmg irìinằ gốc được.sinh l a rỏi viộc kiổm Ihứ được Ihực hiện để tích hi/ị) và làimhcíỊ) lọ phần mổm

Trang 13

Thiết kế dữ liệu

Thiết kê' kiến trúc

Thiết kê' thủ tục

Mô đun chương trinh

Trang 14

Tầm quan trọng của thiết kế phần mém cổ thể được phát biểu bằng một từ - chất lượng Thiếl kế là n(ti chất lưítng được nuôi dưỡng

irone việc phái triổn phần mổm Thiết kế cung cấp cho ta cách biổu diổn phần mồm cổ thể được xác nhận vể chất lưtmg Thiết kế là cách duy nhất mà chúng la có thể dịch một cách chính xác các yôu cầu của khách hàng ihành sản phẩm hay hệ thống phần mồm cuối cùng Thiết

kế phần mổm phục vụ như một nồn tảng (Hình 10.2) cho mọi bước kĩ nghỏ phần mồm và bảo trì phần mồm sau đổ Không có thiết kế, ta có nguy cơ dựng nôn một hệ thống không ổn định - một hệ thống sẽ thất bại khi có một thay đổi nhỏ; một hệ thông cổ thể khó mà thử được; mộl hộ thống mà neưíM ta khônc Ihể nào xác nhận được chất lưi;mg chừng nào chưa đến cuối liến trình kiôm thử khi thCti eian CÒII rất Iigản và nhiều tiồn đã phải chi ra

'niBíiýi' H

Có thiết kê Không thiết kê

Hinh 10.2 Tẩm quan trọng của thiết kế

Trang 15

10.2 TIẾN TRÌNH THIẾT K Ể

Thiết kế phần mềm là một tiến trình qua dó các yôu cầu ilược dịch thành một biổu diẻn phần mém Ban đầu biểu diỗn mô là cho quan điểm toàn hộ vồ phần mềm Việc làm mịn tiếp sau dẫn tới một biểu diỗn Ihiếl kế rất gần với chưiíng trình gốc

Theo quan diổm quản lí dự án, ihiết kế phần mềm được tiến hành

theo hai bước Thiết k ế sơ hộ quan tâm tới việc dịch các yỏu cầu thành kiến Irúc dữ liệu và phần mồm Thiết k ế chi tiết tập trung vào

việc làm mịn biổu diỗn kiến Irúc để dẫn uíri cấu trúc dữ liệu chi tiết và biểu diễn thuật toán cho phần mổm

Trong phạm vi thiêì kế sư bộ và chi tiết, có xuất hiện một số hoạt động thiết kế khác nhau Bôn cạnh việc thiết kế dữ liệu, kiến trúc và

thủ tục, nhiéu ứng dụne hiện đại có hoạt độnt: thiết k ế giao diện phân

biệt Thiết kế giao diện lập ra cách bô trí và C(T chế tưimg lác cho tưcTng lác người - máy Mối quan hệ giữa các khía cạnh kĩ Ihuậl và quản lí của thiết kế được minh hoạ trong Hình 10.3

Khía cạnh quản lí

Khía cạnh ^

kĩ thuât

Thiết kế dữ liệu

Thiết kê t hú tụcThiết kê giao diện

Hình 10.3 Quan hệ gữa khía cạnh kĩ thuật và quản II của thiết kế

Trang 16

Trong toàn bộ tiến Irình thiết kế, chất lượng của thiết kế tiến hoá

đưực khẳng định bằng mội loạt các cuộc họp xét duyệt k ĩ thuật chính

thức, được mô tả trong Chưcíng 17 Để đánh giá chất lưímg cua một

biểu diỗn thiết kế, chúng ta phải Ihiết lập các tiôu chuẩn cho thiết kế tốt Phần cuối chưctng này chúng ta sẽ mô tả chi tiết các tiồu chuẩn thiết kế Hiện tại, chúng ta đưa ra các hưórng dẫn sau:

1 Thiết kế nôn nôu ra cách tổ chức theo cấp bậc đổ dùng cách kiểm soát ihông minh trong số các thành phần phần mém

2 Thiết kế nôn theo các mô đun; tức là phần mổm nên được phân hoạch một cách logic thành các thành phần thực hiện những chức năng và chức năng con xác định

3 Thiết kế nên chứa cách biểu diễn phân biệt và tách biệt giữa dữ liệu và thủ tục

4 Thiếl kế nên dẫn tóri các mô đun (như chương tnnh con hay thủtục) nôu ra các đặc trưng chức năng đặc biệt

5 Thiếl kế nên dẫn tới giao diện làm rút gọn độ phức tạp của việc nối ghép giữa các mô đun và với mòi trưímg bốn ngoài

6 Thiết kế nồn được hưcíìig theo cách dùng một phưưng pháp lặp lại được điểu khiổn bới thông tin có trong phân tích các yêu cầu phần mồm

Các đặc trưng trôn của một thiết kế tôì không thể có được bởi sự may mắn Tiến trình thiết kế kĩ nghệ phần mểm cổ vũ cho thiết kế tốt

thôing qua việc áp dụng các neuyôn lí thiết kế cơ bản, phưtmg pháp

luậ.n hộ ihống và viôc íiuyỌt xó) thấu đáo

ỈO.2.1 Thiết kế và chất lượng phần mềm

Trang 17

Tiến hoá của thiíl kế phần niổm là một tiến liình liỏn lục đã trải qua ba thập kỉ vừa qua Công trình thiết kế ban đầu tập trung vào các tiôu chuẩn đổ phái Iriổn các chưtmg trình kiểu mô đun và các phưímg pháp làm mịn kiến trúc phần mổm theo cách thức lừ trôn xuống Các khía cạnh ihủ tục của định nghía thiết kế đã tiến hoá thành một triết lí

gọi là l(fp trinh có cấu trúc Công trình về sau đã đề nghị các phưtTng

pháp để dịch từ luổng dữ liệu hay cấu trúc dữ liệu thành một định nghĩa Ihiết kế Các cách tiếp cận mứi h(m đổ nehị vổ tiếp cận hướng

sự vật tới việc suy dẫn ra thiết kế.

Nhiéu phương pháp thiết kế, phát triển từ những cỏng trình đã đưực nôu trỏn, hiộn đang được áp dụng cho loàn bộ ngành cỏng nghiệp Giống như các phưítng pháp phân tích đã được trình bày trong các chương trưtk', mỗi phươnc pháp thiết kế phẩn mềm đổu đưa vào nhữrm cách trực cảm và kí pháp duy nhất, cũng như một cách nhìn thiổn cận thế nào đó vé cái gì đặc Irưng cho chất lưííng thiếl kế

Ây vậy mà mỏi mội phưcrng pháp này (được mô tả chi tiết trong các Chưttng 11 đến 15) đều có một số đặc trưng chunu: (1) một cư chế để dịch từ bidu diễn miển thông lin thành biểu diỗn thiết kế, (2) mộl kí pháp đổ bidu diỗn các thành phần chức nãng và giao diện của chúng,(3) cách trực cảm đổ làm mịn và phân hoạch, và (4) các hưứng dẫn vổ định giá chất lượng

Bất kể phưimg pháp luận Ihiếl kế nào đưực dùng, người kT sư phần mẻm phải áp dụne một lập các khái niộm nổn tảng cho Ihiếl kế

dữ liệu, kiến trúc và thủ tục Từng khái niệm này được xem xét trtnig các mục sau đây

10.2.2 Tiến huá của thiết kê phần mềm

Tập h(Tp các khái nitỉm thiốt kế nén làng dã liốn hoá qua ba lhậ|)

ki Mặc dầu mức độ quan tâm trong từng khái niộm này có thay đổi

Trang 18

qua nhiểu năm, nhưng chúng đã đímg vũíig qua thử thách của thời gian Mỏi khái niệm đều cung cấp cho người thiết kế phẩn mểm một nền tảng để lừ đó người ta có thể áp dụng nhiều phương pháp thiết kế phức tạp Mỗi khái niệm đềũ giúp ngưềrt kĩ sư phần mểtn trả lời cho các câu hỏi sau:

• Có thể dùng tiêu chuẩn nào để phân hoạch phần mềm thành các thành phần riêng lẻ?

• Làm sao phân tách chức năng hay cấu trúc dữ liệu khỏi biểu diễn quan niộm của phần mểm?

• Liệu có những tiốu chuẩn thống nhất để xác định chất lưcmg kĩ thuật của thiết kế phần mềm không?

M A Jackson có lần đã nói: “Cái bắt đầu của sự khôn ngoan đối với người lập trình [kĩ sư phần mểm] là việc thừa nhận sự khác biệt giữa bắt đầu làm chương trình và hiểu vấn để một cách đúng đắn.” Các khái niệm thiết kế phần mềm nền tảng cung cấp một khuôn khổ cần thiết để “hiểu vấn đề một cách đúng đắn.”

10.3.1 Trừu tưcmg

Khi chúng ta xem xél một giải pháp mô đun cho bất kì vấn đề

nào, có ihể đậl ra nhiổu mức âộ trừit tượng Tại mức trừu tượng cao

nhất, một giải pháp được phát biểu theo thuật ngữ đại thể bằng cách dùng ngôn ngữ của môi trường vấn đề Tại mức trừu tượng thấp hơn, người ta lấy khuynh hướng thủ tục nhiều hơn Thuật ngữ hướng vấn ctó thường đi đôi Vííti thuật ngữ hướng cài đặt Irong một nổ lực để phát biểu ra giải pháp Cuối cùng, tại mức trừu tượng thấp nhất, giải pháp dưực phái hiểu theo cách có thổ được cài đặl trực tiếp Waserman nêu

ra một dịnh nghĩa có ích;

Khái iiiỌiTi làm lí về "trừu Wcnig” cho phép người ta tập trung vào vấn

ử niức lổng quát nào (ló không xét tới cac chi ĩiết mức thấp không liên

can: \ ìỌc dùnjỉ Irừii lượng h»á cũng cho phép nguời la làm việc với kháỉiỉỉỆtnL,

ni tiet miK.' tnap icnong iiẽn rời la làm việc với kháỉ iỉỉỆtnL,

Trang 19

và thuật ngO quen thuộc trong môi trường vắùi dổ mà không phải biên đổi chúng thành một cấu trúc ichổng quen thuộc

Mỗi bước trong tiến trình kĩ nghệ phần mểm đều là sự làm mịn cho một mức trừu tượng của giải pháp phần mềm Trong kĩ nghệ hệ thống, phần mềm được dùng như một phần tử của hệ thống dựa trên máy tính Trong phân tích các yêu cầu phần mểm, giải pháp phần mểm được phát biểu dưói dạng “đó là cái quen thuộc trong môi trường vấn đề.” Khi chúng ta chuyển từ thiết kế sơ bộ sang thiết kế chi tiết thì mức độ trừu tượng được rút lại Cuối cùng, ta đi tới mức trừu tượng thấp nhất khi sinh ra chương trình gốc

Khi chúng ta chuyển qua các mức trừu tượng khác nhau, chúng

ta làm việc để tạo ra các trim tượng thủ tục và dữ liệu Trìùi tượng thủ

tục là một dãy các lệnh có tên, có một chức năng xác định và giới

hạn Một thí dụ vể trừu tượng thù tục là từ “đi vào” cửa “Đi vào” kéo theo mộl dãy dài các bước thủ tục (như bước tới cửa, lại gần và nắm lấy quả đấm, xoay quả đấm cửa và kéo cửa ra, bước vào cửa mở v.v ) Trừu tượng dữ liệu là một tập hợp các dữ liệu có tên mô tả cho một sự vật dữ liệu (chương 8) Thí dụ vé trừu tưcỊTng dữ liệu là “séc thanh toán.” Đối tượng dữ liệu này thực chất là một lập hợp nhiéu mẩu thông tin khác nhau (như tên người thanh toán, số tiền thanh toán, tiền thuế, FICA, V.V ) Vậy chúng ta có thể tham khảo tới mọi

dữ liệu bằng cách nói tên của trừu tượng dữ liệu

Để minh hoạ cho phần mềm được xác định bởi ba mức trừu tượng thù tục, chúng ta xét vấn để sau; Phái triển phần mềm thực hiện tất cả các chức năng liên quan tới hệ thống làm bản vẽ hai chiều cho ứng dụng thiết kế có trợ giúp máy tính mức thấp (CAD)

T rừ u tượng I Phần mềm sẽ được tổ hợp vào trong giao diện đồ hoạ máy tính làm cho việc trao đổi trực quan với người vẽ S(t đố thiết

kế thành khả hiện, chuột sẽ thay thế cho bàn vẽ và ô ke Mọi viộc vẽ đường thẳng và đường cong, mọi íính toán hình hục, mọi cách xét theo bộ phận và phụ sè do phần mềm CAD thực hiện Các đưìmg vẽ

Trang 20

sỗ được lưu trữ trong một tệp đ ư ^ g vẽ bao gồm mọi thông tin hình học, văn bản và các thông tin phụ.

Tại mức này của trừu tượng, người ta phát biểu giải pháp dưới dạng môi trường vấn đé

Trừu tượng II

Phần mểm CAD thực hiện:

nhiệm vụ giao tiếp với người dùng;

nhiệm vụ tạo đường vẽ 2 chiều;

nhiệm vụ hiển thị đồ hoạ;

'' nhiệm vụ quản lí tệp đường vẽ;

kết thúc ;

Tại mức trừu tượng này, từng nhiệm vụ phần mềm chính được liên kết với phần mềm CAD đều được ghi ra Thuật ngữ đã vượt ra khỏi môi trường vấn đồ nhưng vẫn chưa mang nghĩa cài đặt riêng

Trừu tưtmg III

procedure: tạo đường vẽ 2-D;

repeat until <nhiệm vụ tạo đường vẽ kết t h ú o

do while < xuất liiện tương tác với thiết bị số hoá>

nhiệm vụ giao tiếp với bộ số hoá;

xác định yêu cầu vẽ;

line: nhiệm vụ vẽ đường;

circle: nhiệm vụ vẽ đường tròn;

end ;

do while < xuất hiện tương tác bàn phítn>

nhiệm vụ giao tiếp với bàn phím;

chọn phân tích/tính toán:

view: nhiệm vụ xem phụ;

section: nhiệm vụ tạo đường cắt;

Trang 21

• « •

end procedure

Tại mức trừu tưcmig này đã có việc biểu diễn thủ tục sư bộ Thuật

ngữ nay đã hướng phần mềm (như việc dùng các cấu trúc như do

while) và việc dính líu tới tính mô đun bắt đầu nổi lên bồ mặt.

Khái niệm về làm mịn từng bước và mô đun (được thảo luận ờ

các mục sau) gắn liền với việc trừu tượng Khi thiết kế phần mổm tiến hoá, từng mức mô đun trong cấu trúc chưtTng trình sẽ biểu diỗn cho việc làm mịn trong mức trừu tư(;ng của phần mềm

Tnìn tượng dữ liệu, giống như trừu tượng thủ lục, làm cho người

thiết kế có thể biểu diễn một sự vật dữ liệu ở các mức chi tiết khác nhau, nhưng điểu quan trọng hơn, là xác định một sự vật dữ liệu trong hoàn cảnh các thao tác (thủ tục) có thể đưực áp dụng vào nó Tiếp tục thí dụ phần mềm CAD ở trôn, chúng ta có thể định nghĩa một sự vật dữ liệu gọi là draw ing Sự vật dữ liệu draw ing bao hàm mộj thông tin nào đó không có sự mở rộng thồm, khi nó được xem xốt trong hoàn cảnh của hệ bàn vè Tuy nhiên người thiết kế có thể

xác định d raw in g như mộl kiểu dữ liệu trừỉi tượng Tức là, các chi

tiết bôn trong của draw ing được xác định:

TYPE drawing IS STRUCTURE DEFINED

number IS STRING LENGTH (12);

Trang 22

Một khi kiểu draw ing (một kiểu dữ liệu trừu tưc«ig) đã được định nghĩa thì chúng ta có thể dùng nó để mô tả cho các đối tưcmg dữ liệu khác, không cần tham khảo đến các chi tiêì bên trong của drawing,

ơ iẳ iụ hạn, tại một vỊ tn khác trong thiết kế dữ liệu, ta có thể nói:

blueprint IS INSTANCE OF drawing:

h a y

schematic IS INSTANCE OF drawing;

kéo theo rằng blueprint và schem atic lấy mọi đặc trưng của dra>^ing như đã đưực định nghĩa ờ trôn Trong Chương 8 chúng ta đã

tham khảo tới tiến trình tạo kiểu là ỉám th ể nghiệm.

Một khi đã định nghĩa trừu tượng dữ liệu thì tập các thao tác có thể áp dụng được vào nó cũng phải định nghĩa Chẳng hạn, chúng ta

có thẩ xác định các thao tác như erase, save, catalog và copy cho kiểu dữ liệu trừu tượng draw ing Theo định nghĩa (theo nghĩa đen), mỗi ihủ tục này đều có thể được xác định mà không cần định nghĩa chi tiít vổ draw ing mỏi khi thủ tục được gọi tới

Một sô' các ngôn ngữ lập trình (như Ada, Modula, CLU) đưa ra

cơ chế để tạo kiểu dữ liệu trừu tượng Chẳng hạn, package của Ada là

một cơ chế ngôn ngữ lập trình đưa ra sự hỗ trợ cho cả trừu tưcttig dữ liệu và thủ tục Kiểu dữ liệu trừu tượng nguyên gốc được dùng như

một liôu bản hay cấu trúc dữ liệu sinh để từ đó có thể ỉờm th ể nghiệm

cho các cấu trúc dữ liệu khác

7rừìt riỉựng điều khiển là dạng thứ ba của trừu tưtmg hoá được

dùng trong thiết kế phần mềm Giống như trừu tượng thủ tục và dữ liệu, trừu tưcmg điổu khiển áp dụng cho cơ chế điều khiển chương trìrih mà không xác định các chi tiết bôn trong Một thí dụ về trừu

tư(fnịi điiíu khiổn là cơ chố đồng bộ hoá được dùng để điổu hoà các

hoạt động trong hộ điều hành Khái niệm vổ trừu tưcỊfng điểu khiển dược thảo luận trong Chương 15

Trang 23

10.3.2 Làm mịn

Làm mịn từng bước là một chiến lược thiết kế trên xuống thủa

ban đầu do Niklaus Wirth đề nghị Kiến trúc của một chưtTng trình được phát triển bằng các mức làm mịn liên tiếp các chi tiết thủ tục Mội cấp bậc được xây dựng nên bằng cách phân tách một phát biểu vĩ

m ô về chức năng (trừu tượng thủ tục) theo kiểu từng bước cho tới khi

* đạt tói phát biểu ngôn ngữ lập trình Wirth nêu ra một tổng quan về khái niệm này:

Trong mỗi bước (làm mịn), mội hay nhiểu ỉệnh cùa chương trình đẫ cho duợc phân rã thành những lệnh chi tiết hơn Việc phân rã hay làm mill liên

tiếp các dạc là này kết ứỉúc khi lất cả các lộnh đã dược diẻn đạt dưới dạng

b ít kì ngổn ngữ lập trình hay ngôn ngữ máy tính nền tảng nào Khi các

ahiệm vụ dã dược làm mịn thì dữ liệu cũng phải dược 1 ^ mịn, dược phân rã

hay dược cấu trúc lại, và diều tự nhiên là song song theo dó làm mịn các (lậc

tả chương trình và dữ liệu.

Mọi bước làm mịn dẻu kéo theo những quyết định thiết kế nào dổ Điều quan trọng là người lập trình cán nhận biết vé các tiêu chuẩn nền tảng (cho quyết định thiết kế) và vể sự tồn tại của các giải pháp khác

Tiến trình làm mịn do Wirth đề nghị cũng tương tự với tiến irình làm mịn và phân hoạch được dùng trong phản tích yẽu cầu Sự khác biệt chỉ ở mức độ chi tiêì được xét lói, không phải ở cách tiếp cận

Làm mịn thực tại là một tiến trình khởi thảo Chúng ta bắt đầu

với một phát biểu về chức nãng (hay mô tả thông tin) đưực xác định như mức trừu tượng cao Tức là, phát biểu mô tả chức năng hay thông tin về mặt quan niệm, nhưng không đưa ra thông lin vé cách làm việc nội bộ của chức năng hay cấu trúc nội bộ của thông tin đó Việc làm mịn buộc người thiết kế phải khởi thảo phát biểu nguyên gốc, đưa ra ngày càng nhiều chi tiết khi từng việc làm mịn (khởi thảo) kế tiếp xuấl hiện

10.3.3 Tính mô dun

Khái niệm về tính mô đun trong phần mổm máy tính đã trớ Ihàiih một phong trào eần bốn thập kỉ nay Kiến trúc phần mềm (được mô

Trang 24

tả trong Mục 10.3.4) c'ụ thể hoá cho tính ipô đun này; tức là, phần mểm được chia thành các thành phần có tên riêng biệt và định địa chl

được, gọi ỉà các mô được tích hợp để thoà mãn yêu cầu của vấh đề.Ngưởi ta đã từng phát biểu rằng “tính ttiô đun là thuộc tính riêng cùa phần mém cho phép một chưcmg trình trở nên quận lí được theo cách thông minh” Người đọc không thể nào hiểu thấu phần mềm nguyên khối (như một chưcmg trình lớn chỉ gồm một mô đun) Số các đưòng dẫn, phạm vi tham khảo, số các biến, và độ phức tạp tổng thể

sẽ làm cho việc hiểu thấu đáo trở thành không thể thực hiện được Để minh hoạ cho điểu này, bạn hãy xét lập luận sau dây dựa tìtn quan sát việc giải quyết vấn đẻ của con người

Gọi Cc.v) ià hàm xác định độ phức tạp cảm nhận được của vấn để

.V, và E(.x) là hàm xác định nỗ lực (theo thời gian) cần để giải quyết

vấn đề .V Vđi hai vấn đề, Pị và nếu

thì ta suy ra rằng

£(/jị) > £(p j) (lO lb)Xem như một trường hợp tổng quát, kết quả này là hiển nhiên về trực giác Quả là phải mất nhiểu thời gian hơn để giải quyêì một vấn đề khó

Một đặc trưng đáng quan tâm khác đã được để lộ ra qua thực nghiệm trong việc giải quyết vấn để của con người Đó là,

Bitẩu thức (10.2) kéo theo rằng độ phức tạp cảm nhận được của vấn đề

có tổ ht;p /7, và còn lổn hơn độ phức tạp cảm nhận được khi từng vấm đề được xcm xét tách biệt Bằng cách xem xét biểu thức (10.2) và diéu kiộn được bao hàm trong các biểu thức (lO la) và (lO lb) ta suy

ra rang

Trang 25

Điều này đẫn đến kết luận “chia để trị” - sẻ dỗ giải quyết niột vấn đề phức tạp hơn khi bạn chia nó thành những mẩu quản lí được Kết quả được diễn đạt trong bất đẳng thức (10.3) có ảnh hường quan trọng đối với tính mô đun và phần mềm Trong thực lế nó là một luận

cứ cho tính mô đun

Có thể rút ra kết luận từ bất đẳng thức (10.3) rằng nếu chúng ta phân chia phần mềm một cách không xác định thì nỗ lực cẩn để phát triển nó sẽ trở thành nhỏ đến mức bỏ qua được! Nhưng khồng may lại còn những lực khác xuâì hiện làm cho kết iuận này (đáng buồn) là không họ^ lệ Tham khảo tới Hình 10.4, nỗ lực (chi phí) để phát triển một mô đun phần mềm riêng lẻ không giảm đi khi tổng số các mô đun tăng lên Với cùng một tập hợp các yỗu cầu, nhiều mô đun hítn

có nghĩa là kích cỡ từng mô đun nhỏ hcĩn Tuy nhiôn, khi số các mô đun tăng lên thì nổ lực (chi phO liên kết vóri việc lằm giao diên cho các mô đun cũng tăng lôn Đặc trưng này dẫn tới đưcmg cong tổng chi

phí hay nổ lực được vẽ ờ trong hình Có M mô đun sẽ gây ra một chi

phí phát triển tối thiểu, nhưng chúng ta không có độ phức tạp cần

thiết để dự kiến M với sự đảm bảo.

Trang 26

Đư(>ng cong được vẽ trong Hình 10.4 đưa ra thông tin có ích khi

ta phải xem xét đến tính mô đun Chúng ta nên mô đun hoá, nhưng

cũng phải chú ý để duy trì trong vùng lân cận của M Mô đun hoá

còn chưa đủ hay mô đun hoá quá mức đều nên tránh cả Nhimg làm

sai) chúng ta biết được “vùng lân cận của M T' Chúng ta làm phần

mểm mô đun đến đâu? Kích cỡ của mô đun sẽ bị khống chế bởi chức năng của nó và ứng dụng Trong Mục 10.4, các cách đo thiết kế giúp xác định số lưctng mô đun thích hợp sẽ được trình bày

Điểu quan trọng cần lưu ý là một hệ thống có thể được thiết kế theo mô đun, cho dù việc cài đật của nó phải là “một cục.” Có nhihig tình huống (như phẩn mềm thời gian thực, phầii mềm vi xử lỌ mà tổng phí vé tốc độ và bộ nhớ iương đối nhỏ do các chương trình con (tức là trình con hay thủ tục) yêu cầu lại là không thể nào chấp nhận được Trong những tình huống như Ihế phần mềm có thể và nên được Ihiết kế có tính mô đun xem như một triết lí bao quát Chưcmg trình

có thể dược phái tricn “viết luôn trên một dòng.” Mặc dẩu chương trình gốc mới nhìn trông không có vẻ mô đun, nhưng triết lí này dã đươc duy trì và chưdne trình sẽ đem lại ích lợi của hộ thống mô đun

10.5.4 Kiến trúc phán mém

Kiến trúc phần mềm ám chỉ hai đặc trưng quan trọng của chưcmg trình máy tính: (1) cấu trúc cấp bậc của các thành phần thủ tục (mô đun) và (2) cấu trúc dữ liệu Kiến trúc phần mềm được suy dẫn ra qua tiến trình phân hoạch đặt mối quan hệ giữa các phẩn tử của giải pháp phđn mồm với các bộ phận cùa vấn để thế giới thực được xác định khỏng tưcVig minh trong phân tích yêu cầu Tiến hoá của phần mềm

\à cấu irúc dữ liệu bắl đầu V (íri một xác định về vấn đồ Giải pháp xuất hiện khi từng phần của vấn đổ được giải quyết bởi một hay nhiều phần tử phẩn mồm Tiến trình này, được biểu diỗn tưỊĩng Ẽníng trong Hình 10.5, hidu thị cho một phép chuyển giữa viộc phân tích yêu cầu phần mềm và thiết kí

Trang 27

Hinh 10.5 Tiến hoá của cấu trúc

Hinh 10.6 Cấu trúc khác biệt

Tham khảo hình 10.6 ta thấy rằng một vấn đề có thể được thoả mãn bời nhiều cấu trúc khác nhau Phương Ị)háp thiết kế phần mềm (ChưtTng 11 cho tới 15) có thể được dùng đe suy ra cấu imc, nhưri| bởi vì từng cấu trúc lại dựa trên các ỉdiái niệm nến lảng khác nhau ve thiết kế “tốt,” cho nôn tĩmg phương pháp sề phát sinh trong một cấu trúc khác biệt đối với cùng tập các yểu cầu phần mềm Không có cầu trả lời dễ dàng đối với câu hổi “Cái nào lốt nhất?” Chúng ta còn chưa tiến tới giai đoạn khoa học đó Tuy nhiên, có những đặc trưng về cấu trúc mà ta có thể kiểm tra để xác định chất lượng tong thể Chúng la

Trang 28

103.5 Cáp bậc điều khiển

Cấp bậc điều khiển, cũng còn gọi là cấu trúc chương trình, biểu

thị cho cách tổ chức (thưòng theo cấp bậc) cùa các thàríh phần chương trình (mô đun) và bao gồm cả một cấp bậc điều khiển Nó khống biểu thị các khía cạnh thu tục của phần mềm như dãy các xử

lí, sự xuất hiện/thứ tự các quyết định hay việc lặp lại các thao tác

Người ta dùng các kí pháp khác nhau để biểu diễn cho cấp bậc điều khiển Thỏng dụng nhất là biểu đồ kiểu cây như vẽ trong Hình 10.7 Tuy nhiôn các kí pháp khác, như các biểu đồ Wamier-Orr hay Jackson (ChưtTng 5) cũng có thể được dùng với hiệu quả tưcmg đương Để thuận tiện cho các thảo luận sau đây về cấu trúc, chúng ta định nghĩa một vài thuật ngữ và phương cách đơn giản Tham khảo Hinh 10.7,

dộ sáu và chiểií rộng đưa ra một chỉ báo về số mức điồu khiển và độ

trải rộng toàn bô của điổu khiển tưiíng ứiig Sô' mỏ đun ra là một độ đo

đo số các mô đun liT/c tiếp bị điéu khiển bởi một mô đun khác S ố mô

(íini vào chỉ ra cách thức mô đun trực tiếp điều khiển một mô đun đã cho.

Số mô Am ra

Độ sâu

Số mô

ifcjnraChiều rộng

Hlnh 10.7 Thuật ngữ cấu trúc

Trang 29

Mối quan hệ điểu khiển giữa các mô đun được diển tả thev) Cikh

sau: Một mô đun điều khiển một mô đun khác thì được gọi là thượng

cấp cùa nó, và ngược lại, một mô đun bị môt mô đun khác điéu khiển

thì đưực gọi là thùộc cấp cua nm điều khien Chẳng hạn, tham khảo tới Hìíih 1Ỏ.7, mô ciun M là thượng cấp của các mô đun a, b và r Mô đun h là thuộc cấp của mỏ đun e và cuối cùng là thuộc cấp của mô đun M Mối quan hệ Iheo chiều rộng (tức là giữa các niô đun d và e),

mậc dầu có thể diễn tả trong thực tế nhưng không nhất thiết phai được xác định bằng thuật ngữ tưò^g minh

Cấp bậc điều khiển cũng biểu diễn cho hai đặc trưng khác nhau

tinh vi củã kiến trúc phần mềm : tính thấy được và tính nối (ỉược

Tính thấy được chỉ ra tập hựp các thành phần chưcmg trình có ỉhể được gọi hay được dùng như dữ liệu bởi một thành phần đã cho, ngay

cả khĩ điều này được thực hiện gián tiồp Chẳng hạn, một mô đun trong một hệ thống hướiig sự vật có thế thâm nhập vào một mảnạ rộng các sự vật dữ ĩiồu mà nó đã kế thừa, nhưng chi dùng một số nho cầc sự vật dữ liệu đổ Tất cả các sự vật đều là thấy được với mô đun

đó Tính nối đữực chỉ ra lập các thành phần trực tiếp đưực gọi hay được sử dụng nhữ dữ liộu bải một thành phần đã cho Chẳng hạn, một

mô đun tậtc tiếp gây ra cho một mô đun khác bắt đầu thực hiện íà được nối với nó.*

10.3.6 Cấu trúc dữ liệu

Cấu trúc dữ liệu là một biểu diễn cho mối quan hệ logic giữa các phần tử dữ liệu riêiig lẻ v i cấu trúc thông tin sẽ luôn luôn ảnh hưcmg tới thiết kế thủ tục cuối cùng nôn cấu trúc dữ liốu cũng quan trọng như cấu trúc chướng trình để biểu thị kiến trúc phẩn mém

Cấu trúc dữ liệu khống chế cách tổ chức, các phưcmg pháp thâm nhập, mức độ kết hựp và cac phưimẹ án xử lí thông tin Toàn bộ các sách giáo khoa đều nói về các chủ đỗ này và một thảo [uận đầy đủ thì nằm ngoài phạm vi cuốn sách này Tuy nhiôn, điéu quan trọng là cần hiổu các phưttng pháp cổ (điển đã có để tổ chức thông tin và các khái niệm làm nển lang cho cấp bậc thông tin

Tổ chức và độ phức tạp của cấu trúc dữ ỉiộu chi bị giứi hạn bi’ti

~ Ig có một sỏ' hạn c h ế các xây dựng cho nhiỏu cấu

• V , Y V 4

tài khéo léo của người thiốt kố Tuy nhiên cũng có một sỏ' hạn chế các cấu trúc dữ liộu co điển vốn tạo nôn các khối xây 1

Trang 30

Irúc dữ liệu phức tạp Các cấu trúc dữ liệu cổ điển được minh hoạ trong hình 10.8.

Khoản mục vô hưởng

lélĩiSĩiii

Không g ia n n chiểu Cây cap bậc

Hình 10.8 Cấu trúc dữ liệu cổ điển

Ktìoàn mục vô hướng là cấu trúc dữ liệu đơn giản nhất trong các

cấu trúc dữ liệu Như tên của nó đã hàm ý, khoản mục vô hưônp; biểu thị cho một phần tử thông tin đttn giản có thể được đánh địa chĩ bằrig niột tôn gọi; tức là việc thâm nhập có thể được đạl tói bằng cách xác dịrĩh chi một địa chỉ trong bộ nhớ Kích cỡ và định dạng của khoản niỊac vô hưtlng có thổ thay đổi bên trong các giới hạn do ngôn ngữ lập trìọh khống chế Chắng hạn, một khoản mục vô hữílíng co thể la thực ihế logic dai 1 bii, một số nguyên hay số dấu phẩy động dài từ 8 đẻn

64 hu hay một xâu kí lự dài mội trãm hay một nghìn byte

Khi các khoản mục vô hưtlng đưực tổ chức như một danh sách

hay rihóm liên lục thì một vec tơ iníhì iự sẽ đưực hình thành Vec tơ ià

Trang 31

phần chung nhất của tâì cả các cấu trúc dữ liệu và mở cánh cửa tới việc làm chỉ số thay đổi cho thông tin Etó minh hoạ chúng ta xcm xét một thí dụ Pascal đơn giản:

type G = array [1 100] of integer;

procedure s ( var T ; G : n : integer; sum : integer)

chỉ s ố hoá trong thủ tục s sao cho các phần tử của cấu trúc dữ liệu

được tham khảo tới theo một trật tự xác định

Khi vec tơ tuần tự được mở rộng thành hai, ba và cuối cùng thành

số chiều bất kì, thì mội khong gian n chiều sẽ được tạo ra Không gian n

chiều thông dụng nhất là nĩa trận hai chiều Trong hầu hết cac ragồn

ngữ lập trình, một không gian II chiều đưực gọi là một mảng.

Khoản mục, vec tơ và không gian có thể được tổ chức theo nhiều

định dạng Danh sách móc nối là một cấu trúc dữ iiệu tổ chức các

khoân mục vô hướng, vec tơ hay không gian không liên tuc theo một

cách (còn gọi là nút đình) làm cho chúng được xử lí như một cianh

sách Mỗi đỉnh chứa cách tổ chức dữ liệu thích hợp (như vec tư) và một hay nhiều con trỏ chỉ ra địa chi trong bộ nhớ cua đỉnh tiếp trong danh sach Có thể bổ sung thểm các đỉnh tại bất kì điểm nào trong danh sách bằng cách định nghĩa lại các con trỏ để thích htTp với lối vào danh sách mới

Các cấu trúợ dữ liệu khác tổ hợp hay được xây dựng bằng cách

dùng các cấu trúc dữ liệu nền tảng được mô tả ở Irên Chang hạn, cấu

trúc dữ liệu cấp bậc được cài đặt bằng cách dùng danh sách đa mổc

nối có chứa các khoản rnục vô hưứng, vec tơ vồ có thể cả không giian

n chiều Cấu trúc cấp bậc Ihường hay gặp trong các ứng dụng có đòi

hỏi phân loại và Hôn kếi thông tin Phân loại bào hàm viCc gôp nhióm thông ũn theo một phân loại tổng quát nào đó (như các ồ tô thu Jgọn hay các bộ vi xử lí 32 bit được hố trợ bởi hệ điều hành UNIX)

Trang 32

Tính kết hựp hàm ý khả năn^ liồn kết thôhg tin từ các phân loại khác nhau - nhữ tìm tất cả các phầri lử trong loại vi xử lí mà giá ít h<Ãi 100$ phàn loại giá), chạy V()i wn sô 25 (phân loại chu trình thời pian), và do nhà sản xuấl Mĩ chế tạo (phân loại nhà sản xuất).

Điểu quan trọng cần lưu ý rang cấu trúc dữ liệu, giống như cấu trúc chưtỵng trình, co thể được biểu diễn ở các mức irữu tượng khác

nhau Chẳng han, chồng là một mô hình khái niệm về cấu trúc dữ liệu

cố thế được càí đãt như một vec tơ hay danh sách móc nối Tuv thèo

mức dộ chi tiết Ihlết kế, cách làm việc bên trong của chồng có thể hay

khôni; thể đưực xác định

10.3.7 Thủ tục phần mểm

Cấu trúc chương ưình xác định rd cấp bậc điều khiển không để ý đến điy các xử lí yà quyết định Thủ tục phan mềm (Hình 10.9) tập trun| vào đó chi tiết xử lí cho tùn^ mô đun nêng biệt Thủ tục phải ciíng một dặc tả chính xác vổ xử h, kể cả trình tự các sự kiệni cac điểm quyet địiih chính xác, các thao tác lặp lại, và ngay cả cấu trúc/tổ chức dữ liệu

Hình 10.9 Thủ tục bên trong mô đun

Trang 33

Tất nhiên, có mộl quan hệ giữa cấu trúc và thủ tục Việc xử lí được chỉ ra trong từng mô đuii bao gồm một tham khẩo tới niợi mô đun cấp dưới của mô đun đang được mô tả Tức là, Itiộl biểu diển thủ tục của phần mềm được phân tầng như minh hoạ trong Hình 10.10.

Hình 10.10 Thủ tục được phàn tầng

IU.3.8 Che dấu thông ỉin

Khái niộm vổ mổ đun đưa ngưÌTi Ihiếl kố phẩn mỏm tới một câu hỏi nền tảng: Làm sao ta phân rã mộl giải pháp phần mỏm ra dc thu

Trang 34

được lập các mô đun tốt nhất? Nguyên lí về che dấu thông tin gợi ý

rằng các mô đun nên được đặc trưng bởi những quyết định thiết kế

mà (mỗi chúng) ẩn kín với mọi mô đun khác.” Nói cách khác, mỗ đun nỗn được đặc tả và thiết kế sao cho thông tin (thủ tục và dữ liệu) được chứa trong một mô đun này là không thể thâm nhập tói được từ các mô đun khác vốn không cần tới những thông tin đó

Việc che dấu kéo theo rằng người ta có thể đạt được tính mô đun bằng cách xác định một tập các mô đun độc lập mà trao đổi giữa mô đun nọ với mô đun kia chỉ là những thông tin cần thiết cho sự vận hành phần mềm Việc trừu tượng hoá giúp cho việc xác định các thực thể thủ tục (hay thông tin) có chứa phần mểm Việc che dấu xác định

và áp đặt các ràng buộc thâm nhập tới cả chi tiết thủ tục bên trong mồ đun đó và bất kì cấu trúc dữ liệu cục bộ nào mà mô đun đó sử dụng.Việc che dấu thông tin như một tiêu chuẩn thiết kế đối với hệ thống mô đun đưa ra những ích lợi lớn nhất khi cần có những thay đổi trong việc kiểm thử và sau này trong bảo trì phần mém Vì phần lớn dữ liệu và thủ tục đều bị che dấu khỏi các bộ phận khác của phần mểrn nên những sai sót bất cẩn bị đưa vào trong khi thay đổi sẽ ít có khả nãng lan truyền sang các vị trí khác bên trong phần mềm

Các nền tảng thiết kế đã đư ạ: mô tà trong mục trước tắt cả đều phục vụ cho việc cô đọng thành thiết kế mô đun Trong thực tế, tính

mỏ đun đã trở thành cách tiếp cận được chấp nhận trong mọi bộ môn cồng nghệ Thiết kế mô đun làm giảm độ phức tạp (xem Mục 10.3.3), làm thuận tiện cho thay đổi (khía cạnh mấu chốt của tính bảo trì phần mém), và cho kết quả trong cài đặt sớm bằng cách cổ vũ sự phát triển song song của các phần khác của hệ thống

10.4.1 Kiểu mỏ đun

Trừu iưựng hoá và che dấu thông tin được dùng để xác định các

mô đun b<ỉn trong kiến trúc phần mểm Cả hai thuộc tính này đểu phải được dịch thành các tính năng vận hành cùa mô đun, được đặc

Trang 35

trưng bời lịch sử thời gian của cái hợp thành, cơ chế kích hoạt và hình mẫu điều khiển.

Lịch sử thời gian của cái hợp thành nói tới thời gian mà một mô

đun được đưa vào bên trong mô tả ngôn ngữ gốc của phần mềm

Chẳng hạn, một mô đun được xác định là macro khi dịch sẽ được

trình biên dịch đưa vào như một dòng chương trình qua một tham khảo được tạo ra trong chương trình do người phát triển cung cấp Một chương trình con qui ước (như trình con hay thủ tục) được đưa vào thông qua việc sinh ra một nhánh chạy và mã móc nối

Người ta thường gặp hai cơ c h ế kích hoạt Theo qui ưóc, một mô đun được gọi tới theo tham khảo (như câu lệnh “call”) Tuy nhiên,

trong những útvg dụng thời gian thực, một mô đun có thể được gọi tới

bởi n g ắ t; tức là, một sự kiện bên ngoài gây ra sự gián đoạn trong việc

xử lí làm nảy sinh việc chuyển điều khiển sang mô đun khác Cơ chế kích hoạt là quan trọng bởi vì chúng có thể ảnh hưởng tới cấu trúc chương trình

Hình mẩu điều khiển của một mô đun mô tả cho cách thức nó

được thực hiện bên trong Các mô đun qui ước có một lối vào và ra và được thực hiộn tuần tự như một phần của một nhiệm vụ người dùng Hình mẫu điiu khiển phức tạp hơn đôi khi cũng cần tới Chẳng hạn,

môt mô đun có thể reentrant (mang tính đồng dụng) Tức là mô đun

được thiết kế sao cho nó không thay đổi bản thân nó hay thay đổi địa chỉ cục bộ mà nó tham khảo theo bất kì cách nào Do đó, mổ đun có thể được dùng bởi nhiều nhiệm vụ một cách tưiTng tranh

Bên trong cấu trúc chương trình, một mô đun có thể đưực phân loại là

Mô đun tuần tự, được tham khảo và thực hiện không bị phần mồm

ứng dụng ngắt

Mô đun tăng trường, có thể bị ngắt trước khi ht>àii tất biVị phàn

mổm ứng dụng và sau đó cho chạy lại tại điểm ngắt

Trang 36

Mô đun song song thực hiện đổng thời với mô đun khác trong

môi trường đa xử lí tương tranh

Mô đun tuán tự thường hay gặp nhất và được đặc trưng bởi các macro khi dịch và các chương trình con qui ước - trình con, hàm hay

thỏ tục Mô đun tảng trưởng, thường được gọi là đồng trình, duy trì

một con trỏ cho phép mô đun được khởi động lại tại điểm ngắt Các

mô đun như vậy cực kì có ích trong các hệ thống điều khiển bởi ngắt

Các mô đun song song, đôi khi còn được gọi là trinh tương tranh

conrouùne, đôi khi cũng gặp tới trong tính toán tốc độ cao (như xử lí

đường Ống) yêu cầu hai hay nhiều CPU làm việc song song Có thể người ta không hay gặp phải cấp bậc điều khiển điển hình khi đổng trình hay trình tương tranh được sử dụng Các cấu trúc phi cấp bậc hay đồng đẳng đòi hỏi các cách tiếp cận thiết kế đặc biệt

Một kiểu mô đun khác cũng hay gẩp trong các ngôn ngữ lâp

trình như Modula và Ada module của -Modula và package của Ada

(xem Chương 16) là các thành phần chương trình có tổ hợp các trừu tượng dữ liệu và các yếu tố thủ tục theo cách thức hướng sự vật

ỈO.4.2 Độc iập chức năng

Khái niệm độc lập chức năng là sự phát triển trực tiếp của tính

mô đun và các khái niệm trừu tượng hoá và che dấu thông tin Trong các bài báo bước ngoặt về thiết kế phần mềm, Pama và Wirth đã ám chi các kĩ thuật làm mịn sẽ làm nâng cao sự độc lập mô đun Cồng trình về sau của Stevens, Myers và Constantine củng cố thêm khái niộm này Sự độc lập chức năng đạt được bởi việc phát triển các mô

đun với chức năng “chuyên dụng” và “ghét” tương tác thái quá với

cá c m ô dun khác N ói th e o cá ch khác, c h ú n g ta m u ốn th iết k ế phần

mổm để cho từng mô đun đề cập đến một chức năng con xác định của yỏu cầu và cổ một giao diện đtín giản khi được xét từ các phần khác của cấu trúc chưưng trình

Trang 37

Cũng nên hỏi tại sao sự độc lập lại quan trọng Phần mém với mô

đun hiệu quả, tức là các mô đun độc lập, thì dễ dàng cho việc phá!

triển bởi vì chức năng có thể được tham biến hoá và giao diện thì được đơn giản hoá (xét việc phân nhánh khi cố mệt nhóm cùng tiến hành công việc) Các mô đun độc lập dễ bảo trì (và kiểm thử) hơn bời vì hạn chế được các hiệu quả phụ gây ra bời những thay đổi thiết kế/chương trình, việc ỉan truyền lỗi được giảm bớt và có thể dùng lại các mô đun Để tóm tắt lại, sự độc lập chức năng là điểu mấu chốt cho thiết kế tốt, còn thiết kế thì lại là điểu mấu chốt cho chất lượng phần mềm

Sự độe ỉập được đo bằng cách dùng hai tiêu chuẩn định tính: tính

cố kết và gắn nối Tính cô' kết là việc đo sức mạnh chức năng tương đối của mô đun Tính gắn nối là việc đo sự độc lập tương đối giữa các

mô đun

10.4.3 Tính cố kết

Tính cố kết là sự mở rộng tự nhiên của khái niệm che dấu thông tin được mô tả trong Mục 10.3.8 Một mô đun cố kết thực hiện một nhiệm vụ đcm giản trong thủ tục phần mềm, đòi hỏi ít tương tác với các thủ tục đang được thực hiện trong các phần khác của một chương trình Nói một cách đơn giản, một mô đun cố kết (một cách lí tưởng)nên làm chỉ một việc.• 1»

Tính cố kết có thể được biểu thị như một “phổ”, như được chì ra trong Hình 10.11 Chúng ta bao giờ cũng cố gắng để có được tính cố kết cao, mặc dầu thường thì một nửa phạm vi của “phổ” là đã chấp nhận được Tỉ lệ cho tính cố kết là không tuyến tính Tức là, tính cô kết về phía đầu thấp ihì “tồi” hơn rất nhiều đoạn giữa, chỏ này gần

“tốt” như tính cố kết ở đầu cao Trong thực tế, ngiíời thỉếl kế khồng cần quan tâm tới việc phân loại tính cố kết trong một mô đun đặc biệt Thay v1 thế, ta nẽn hiểu khái niệm chung và nôn tránh các mức thấp của cố kết khi thiết kế mô đun

Trang 38

Độ đo sức mạnh chức nãug tướng đổỉ của một mô đun

Trùng nhau Tạm thời Truyền thông Chức nàng

FORTRAN không chú giải vói một chương uinh con 2500 dòng! Đ ể đưa

mối ưuờng làm việc tới chỏ hiện dại, ngưòi quản lí phải yêu cẩu nhân viên của mình chuyển thành mô dun một chương trình mà việc bảo trì ngám vản còn đang tiếp diẻn Điểu này dược thực hiẹn “trong lúc bạn n5i.

Theo lênh này, một cô nhân viên dược yêu cẩu (mội cách thành ihậl) dưa ra chiẻu dài đúng cho các mô đun Câu ưả lời đưa ra ià “tóy mươi nhàm dòng lệnh.’’ Rồi cô ấy lấy một chiếc bút đỏ và một cẾùếc thưổc, cứ đo khoảng cách 75 dòng chmmg uình gốc lại kẻ ra một duÈnig

đỏ Irên bản ìn chương uinh, hết đòng nọ đến dòng kia Mỏi dòng đỏ chi

ra biên giới cho một mô dun Kỉ ửỉuật này na ná như việc Ịiiếải uiển phẩn

mém với sự cố kết ưừng khổpỉ

Mộ! mô đun thực hiện một tập các nhiệm vụ có liên quan lản

nhau một cách lỏng lẻo, được gọi là c ố kết trùng khớp Một mô đun

ihực hiện các nhiệm vụ có liên quan về mặt logic với nhau (như một

mô đun tạo ra tất cả các cái ra bất kể kiểu) được gọi là c ố kết logic.

Trang 39

Khi một mô đun chứa các nhiệm vụ có liên quan tới sự kiện là tất cả chúng phải được thực hiện ữong cùng khoảng thòri gian thì mô đun

đổ biểu lộ tính c ố kết tạm thời.

Xem như một thí dụ về cố kết thấp, ta xét một mô đun thực hiện

xử lí lỗi cho bộ trình phân tích kĩ nghệ Mô đun này được gọi tới khi

dữ liệu được tính vượt quá nhũtig giới hạn đã xác định trước Nó thực hiện các nhiệm vụ sau: (1) tính dữ liệu phụ dựa trên dữ liệu tính được nguyên gốc; (2) đưa ra một báo cáo lỗi (với nội dung đồ hoạ) trên trạm làm việc của người dùng; (3) thực hiện các tính toán sau đó do người dùng yêu cầu; (4) cập nhật CSDL; (5) tạo khả năng chọn đơn cho xử lí tiếp sau Mặc dầu các nhiệm vụ trước có quan hệ lỏng lẻo, mỗi một nhiệm vụ này đều là một thực thể chức nãng độc lập có thể được thực hiện tốt nhất như các mô đun tách biệt Việc tổ hợp các chức năng vào trong một mô đun riêng biệt chỉ có thể làm tâng thêm khả năng lan truyền sai sót khi tiến hành sửa đổi một trong những

nhiệm vụ xử lí được nêu ở trên.

Các mức độ cố kết giản dị có iiên quan khá nhiều tứi một vấn đề khác về độ độc lập của mô đun Khi các phần tử xử lí cùa một mô đun có quan hệ và phải được thực hiện theo một thứ tự đặc biệt thì

tồn tại tính c ố kết t h ủ tục Khi tất cả các phần tử xử lí đều tập trung

vào một lĩnh vực cấu trúc dữ liệu thì có tính c ố kết truyền thông Tính

cố kết cao được đặc trưng bời một mô đun thực hiện một nhiệm vụ thủ tục phăn biệt

Đoạn trích dẫn sau đây của Stevens và cộng sự đưa ra một lập hợp các hướng dẫn đơn giản cho việc thiết lập mức độ cố kết (còn được gọi là “kết ghép” trong tham khảo này):

Một kĩ thuật cố ích ưong việc xác định liệu một mô dim có kết ghép

được vể mặt chúc nâng hay không là viết ra một câu mồ tả cho chức nâng

(mục dích) của tnô dun đó và rồi xem xét lại câu này Có thể tiến hành phép

Ngày đăng: 27/03/2020, 23:16

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w