II. Kỹ nghệ phần mềm
6. Kỹ nghệ hệ thống và tạo nguyờn mẫu
1.4.2 Cỏc khỏi niệm nền tảng của thiết kế
1.4.2.1 Trừu tượng- khỏi quỏt húa : nghĩa là khả năng túm lược tũan bộ sản phẩm phần mềm gồm những việc chớnh là gỡ.
Cú nhiều mức trừu tượng
o Mức 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 đề.
o Mức vừa: lấy khuynh hướng thủ tục nhiều hơn. Thuật ngữ hướng vấn đề thường đi đụi với thuật ngữ hướng cài đặt trong mụ tả giải phỏp.
o Mức thấp: giải phỏp được phỏt biểu theo thuật ngữ chi tiết để cú thể cài đặt trực tiếp 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 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 quan trọng 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.
Cú nhiều dạng trừu tượng:
Khi chỳng ta chuyển sang mức trừu tượng khỏc nhau, chỳng ta làm việc để tạo ra cỏc trừu tượng thủ tục và dữ liệu. Trừu 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à cú giới hạn. Một vớ dụ về thủ tục trừu tượng là từ “đi vào” cửa. “Đi vào” kộo theo một 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…). 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 sự vật dữ liệu. Vớ dụ về dữ liệu trừu tượng là “sộc thanh toỏn”. Đối tượng dữ liệu này thực chất là một tậ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ế…). Vậy chỳng ta cú thể tham khảo mọi dữ liệu bằng cỏch núi tờn của trừu tượng dữ liệu.
Trừu tượng thủ tục
Tại mức trừu tượng này đó cú việc biểu diễn thủ tục sơ bộ. Thuật ngữ này đó hướng phần mềm (như việc dựng cỏc cấu trỳc do while) và việc dớnh lớu tới module bắt đầu nổi lờn bề mặt.
Khỏi niệm về làm mịn dữ liệu từng bước và module gắn liền với việc trừu tượng. Khi thiết kế phần mềm tiến húa, từng mức module trong cấu trỳc chương trỡnh sẽ biểu diễn cho việc làm mịn dần trong mức trừu tượng của phần mềm.
Giống như trừu tượng thủ tụ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ú.
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ượng dữ liệu và thủ tục. Kiểu trừu tượng dữ liệu nguyờn gốc được dựng như một tiờu bản hay cấu trỳc dữ liệu sinh ra để từ đú cú thể làm thể nghiệm cho cỏc cấu trỳc dữ liệu khỏc.
Trừu tượng điều khiển
Trừu tượng điều khiển là dạng thứ ba của trừu tượng húa được dựng trong thiết kế phần mềm. Giống như trừu tượng dữ liệu và thủ tục, trừu tượng điều khiển ỏp dụng cho cơ chế điều khiển chương trỡnh mà khụng xỏc định cỏc chi tiết bờn trong. Một vớ dụ về điều khiển là cơ chế đồng bộ húa được dựng để điều hũa cỏc hoạt động trong hệ điều hành.
1.4.2.2 Làm mịn:
Làm mịn từng bước là một chiến lượcthiết kế trờn - xuống ban đầu do NIKLAUS WIRTH đề nghị. Kiến trỳc của một chương 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ột 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 bằng ngụn ngữ lập trỡnh.
Làm mịn trước tiờn là một tiến trỡnh khởi thảo. 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 tin 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, sau đú đưa ra ngày càng nhiều chi tiết khi việc làm mịn khởi thảo kế tiếp xuất hiện.
1.4.2.3 Tớnh module
Phần mềm được chia thành cỏc thành phần cú tờn riờng biệt và định địa chỉ được, gọi là cỏc module, sau đú chỳngđược tớch hợp lại để thỏa món yờu cầu.
Người ta núi rằng, tớnh module là thuộc tớnh riờng của phần mềm cho phộp một chương trỡnh 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ương trỡnh lớn chỉ gồm một module). Điều này dẫn đến kết luận chia để trị sẽ dễ giải quyết một vấn đề phức tạp hơn khi chia nú thành những phần quản lý được.
Nỗ lực (chi phớ) để phỏt triển một module phần mềm riờng lẻ khụng giảm đi khi tổng số cỏc module tăng lờn. Với cựng tập hợp cỏc yờu cầu, nhiều module hơn tức là kớch cỡ từng module sẽ nhỏ hơn. Tuy nhiờn khi số cỏc module tăng lờn thỡ nỗ lực liờn kết với việc làm giao diện cho cỏc module cũng tăng lờn. Hỡnh vẽ mụ tả đặc trưng này dẫn đến đường cong tổng phớ :
Cú M module sẽ gõy ra chi phớ phỏt triển tối thiểu, nhưng khụng cú độ phức tạp cần thiết để dự kiến M với sự đảm bảo.
Đường cong được vẽ đưa ra thụng tin cú ớch khi phải xột tớnh tới module. Chỳng ta nờn module húa nhưng cũng phải chỳ ý duy trỡ trong vựng lõn cận của M. Module húa cũn chưa đủ hay qua mức đều nờn trỏnh.
Việc tỡm vựng lõn cận của M, chia module phần mềm đến đõu là cõu hỏi cần trả lời vỡ kớch cỡ của module bị khống chế bởi chức năng của nú và ứng dụng.
1.4.2.4 Kiến trỳc phần mềm
Kiến trỳc phần mềm gồm hai đặc trưng quan trọng của chương trỡnh mỏy tớnh:
1. Cấu trỳc cấp bậc điều khiển cỏc thành phần thủ tục (module, hoặc cấu trỳc chương trỡnh) 2. Cấu trỳc dữ liệu Số cỏc modul Chi phớ hay nỗ lực Tổng chi phớ phần mềm Chi phớ cho giao diện Chi phớ modul Miền chi phớ tối thiểu
Kiến trỳc phần mềm được suy dẫn ra qua tiến trỡnh phõn hoạch và đặ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 thế giới thực, được xỏc định khụng tường minh trong bản phõn tớch yờu cầu.
Sự tiến húa của phần mềm và cấu trỳc dữ liệu bắt đầu từ việc xỏc định 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 trưng trong hỡnh vẽ dưới đõy, biểu 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ế.
Giải phỏp rời rạc
Tổ chức giải phỏp theo 3 cỏch
Một vấn đề cú thể được thỏa món bởi nhiều cấu trỳc khỏc nhau. Phương phỏp thiết kế phần mềm cú thể được dựng để suy ra cấu trỳc, nhưng vỡ từng cấu trỳc lại dựa trờn cỏc khỏi niệm nền tảng khỏc nhau về thiết kế tốt, cho nờn từng 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 với cỏc
P 1 P 2P P3 4 P 5 “Vấn đề” cần giải quyết qua phần mềm S4 S2 S5 S3 S1 “Giải phỏp” phần mềm P “Vấn đề” S1 S2 S3 S4 S5 S1 S4 S5 S3 S2 S4 S1 S2 S5 S3
cõu hỏi “Cỏi nào tốt nhất?”. 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 tổng thể.
1.4.2.5 Cấp bậc điều khiển
Cấp bậc điều khiển cũn gọi là cấu trỳc chương trỡnh, biểu thị cho cỏch tổ chức của cỏc thành phần chương trỡnh (module). Nú khụng biểu thị cỏc khớa cạnh thủ 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. Trong đú độ sõu và chiều 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ương ứng. Số module ra là độ đo, đo số cỏc module trục tiếp bị điều khiển bởi cỏc module khỏc. Số module vào chỉ ra cỏch thức module trực tiếp một điều khiển một module đó cho.
Mối quan hệ điều khiển giữa cỏc module được diễn tả theo cỏch sau: Một module điều khiển một module khỏc thỡ được gọi là thượng cấp của nú, và ngược lại module bị một module khỏc điều khiển thỡ được gọi là thuộc cấp của module điều khiển. Chẳng hạn: module M là thượng cấp của cỏc module a, b và c. Module h là thuộc cấp của module e và cuối cựng là thuộc cấp của module M. Mối quan hệ theo chiều rộng (tức là mối quan hệ giữa cỏc module d và e), mặc dầu cú thể diễn tả trong thực tế nhưng khụng nhất thiết phải được xỏc định bằng thuật ngữ tường minh.
Cấp bậc điều khiển cũng biểu diễn cho hai đặc trưng khỏc nhau của cấu 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ương trỡnh cú thể được gọi hay được dựng như dữ liệu bởi một thành phần đó cho, ngay cả khi điều này được thực hiện giỏn tiếp. Chẳng hạn, một module trong hệ thống hướng đối tượng cú thể thõm nhập vào một mảng rộng cỏc sự vật dữ liệu mà nú đó kế thừa, nhưng chỉ dựng một số nhỏ cỏc cỏc sự vật dữ liệu đú. Tớnh nối được chỉ tập cỏc thành phần trực tiếp được gọi hay được sử
M b c e l g f m h d a j i r Mq p o n Độ sõu Số modul ra Số modul ra Độ rộng k
dụng như dữ liệu bởi một thành phần đó cho. Chẳng hạn, một module trực tiếp gõy ra cho một module khỏc bắt đầu thực hiện là được nối với nú.
1.4.2.6 Cấu trỳc dữ liệu
Cấu trỳc dữ liệu biểu diễn mối quan hệ logic giữa cỏc phần tử dữ liệu riờng lẻ. Vỡ cấu trỳc thụng tin sẽ luụn luụn ảnh hưởng tới thiết kế thủ tục cuối cựng nờn cấu trỳc dữ liệu rất quan trọng như cấu trỳc chương trỡnh để biểu thị kiến trỳc phần mềm.
í nghĩa: Cấu trỳc dữ liệu chi phối cỏch tổ chức, cỏc phương phỏp thõm nhập, mức độ kết hợp và cỏc phương ỏn xử lý thụng tin.
Tổ chức và độ phức tạp của cỏc cấu trỳc dữ liệu chỉ bị giới hạn bởi 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 cổ điển vốn tạo nờn cỏc khối xõy dựng cho nhiều cấu trỳc dữ liệu phức tạp.
Khoả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ướng biểu thị cho một phần tử thụng tin đơn giản cú thể được đỏnh địa chỉ bằng một tờn gọi; tức là việc thõm nhập cú thể được đạt tới bằng cỏch xỏc định chỉ một địa chỉ trong bộ nhớ. Kớch cỡ và định dạng của của một khoản mục vụ hướng cú thể thay đổi bờn trong cỏc giới hạn do ngụn ngữ lập trỡnh khống chế. Chẳng hạn, một khoản mục vụ hướng cú thể là thực thể logic dài 1 bit, một số nguyờn hay số phảy động dài từ 8 bit đến 64 bit, hay một xõu ký tự một trăm hay một nghỡn byte.
Khoản mục vụ hướng
Khụng gian n chiều
Vộc tơ tuần tự Danh sỏch múc nối
Khi cỏc khoản mục vụ hướng được tổ chức như một danh sỏch hay nhúm liờn tục thỡ một
vectơ tuần tự sẽ được hỡnh thành. Vectơ là phần chung nhất của tấ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. Để minh họa cho chỳng ta xem 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) var i: integer;
begin sum:= 0; for i:= 1 to n do
sum:= sum + T[i]; end;
Vectơ tuần tự G (mảng) gồm 100 khoản mục nguyờn vụ hướng, được định nghĩa. Việc thõm nhập vào từng phần tử của G đều được chỉ số húa 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 vectơ 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ột
khụng gian n chiều sẽ được tạo ra. Khụng gian n chiều thụng dụng nhất là ma trận hai chiều. Trong hầu hết cỏc ngụn ngữ lập trỡnh, một khụng gian n chiều được gọi là một mảng.
Khoản mục vộc 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ữ liệu tổ chức cỏc khoản mục vụ hướng, vộc tơ hay khụng gian liờn tục theo một cỏch (cũn gọi là nỳt, đỉnh) làm cho chỳng được xư lý như một danh sỏch. Mỗi đỉnh chứa cỏch tổ chức dữ liệu thớch hợp (như vộc tơ) và một hay nhiều con trỏ chỉ ra địa chỉ trong bộ nhớ của đỉnh tiếp trong danh sỏch. Cú thể bổ xung thờm cỏc đỉnh tại bất kỳ điểm nào trong danh sỏch bằng cỏc định nghĩa lại cỏc con trỏ để thớch hợp với lối vào danh sỏch mới.
Cỏc cấu trỳc 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ả ở trờn. Chẳng hạn, cấu trỳc dữ liệu cấp bậc được điều khiển bằng cỏch sử dụng danh sỏch đa múc nối cú chứa cỏc khoản mục vụ hướng, vộc tơ và cú thể cả khụng gian n chiều. Cấu trỳc cấp bậc thường hay gặp trong cỏc ứng dụng cú đũi hỏi phõn loại và liờn kết thụng tin. Phõn loại bao hàm việc gộp nhúm thụng tin theo một phõn lọai tổng quỏt nào đú.
Tớnh kết hợp hàm ý khả năng liờn kết thụng tin từ cỏc phõn loại khỏc nhau.
Điều quan trọng cần lưu ý rằng, cấu trỳc dữ liệu, giống như cấu trỳc chương trỡnh, cú thể được biểu diễn ở cỏc mức trừu tượng khỏc nhau. Chẳng hạn, ngăn xếp (stack) là một mụ hỡnh khỏi niệm về cấu trỳc dữ liệu cú thể được cài đặt như một vộc tơ hay danh sỏch múc nối.
Cấu trỳc chương trỡnh xỏc định ra cấp bậc điều khiển khụng để ý đến dóy cỏc xử lý và quyết định. Thủ tục phần mềm tập trung vào cỏc chi tiết xử lý cho từng module riờng biệt. Thủ tục phải cung cấp một đặc tả chớnh xỏc về xử lý, kể cả trỡnh tự cỏc sự kiện, cỏc điểm quyết định 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.
Giữa cấu trỳc và thủ tục cú một mối quan hệ chặt chẽ. Việc xử lý được chỉ ra trong từng
module bao gồm một tham khảo tới mọi module cấp dưới của module đang được mụ tả.
1.4.2.8 Che dấu thụng tin
Khỏi niệm về module đưa người thiết 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ột giải phỏp phần mềm ra để thu được tập cỏc module tốt nhất. Nguyờn lý về che dấu thụng tin gợi ý rằng cỏc module nờn được đặc trưng bởi những quyết định thiết kế mà ẩn kớn với mọi module khỏc. Núi cỏch khỏc, module nờn được đặc tả và thiết kế sao cho thụng tin được chứa trong một module này khụng thể thõm nhập tới được từ cỏc module 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 module bằng cỏch xỏc định một tập cỏc module độc lập mà trao đổi giữa module nọ với module kia chỉ là những thụng tin cần