軟件分析和設(shè)計(jì)包括所有有助于將需求規(guī)格說明轉(zhuǎn)換為實(shí)現(xiàn)的活動(dòng)。需求規(guī)格說明指定了軟件的所有功能和非功能的期望。這些需求規(guī)范以人類可讀和可理解的文檔形式出現(xiàn),計(jì)算機(jī)與之無關(guān)。
軟件分析和設(shè)計(jì)中間階段,幫助將人類可讀的需求轉(zhuǎn)化為實(shí)際代碼。
讓我們來看看設(shè)計(jì)師使用的幾個(gè)分析和設(shè)計(jì)工具:
數(shù)據(jù)流圖是在信息系統(tǒng)中數(shù)據(jù)流的圖形表示。它是能夠描述輸入數(shù)據(jù)流,輸出數(shù)據(jù)流和存儲數(shù)據(jù)。DFD中沒有提到有關(guān)數(shù)據(jù)如何流經(jīng)系統(tǒng)的任何內(nèi)容。
DFD 和流程圖之間有著一個(gè)顯著的差異。流程圖描述了在流動(dòng)的程序模塊的控制流程。 DFD的描述了系統(tǒng)中各個(gè)級別的數(shù)據(jù)流。 DFD 不含有任何控制或分支元素。
數(shù)據(jù)流圖是邏輯或物理.
DFD 可以使用以下組件集表示數(shù)據(jù)的來源、目的地、存儲和流:
結(jié)構(gòu)圖是衍生自數(shù)據(jù)流圖的圖表。它比 DFD 更詳細(xì)地表示系統(tǒng)。它將整個(gè)系統(tǒng)分解為最低的功能模塊,比 DFD 更詳細(xì)地描述系統(tǒng)每個(gè)模塊的功能和子功能。
結(jié)構(gòu)圖表示模塊的層次結(jié)構(gòu)。在每一層執(zhí)行某一特定任務(wù).
以下是在建結(jié)構(gòu)圖中使用的符號:
HIPO(HIerarchical Input Process Output,分層輸入過程輸出)圖是結(jié)合兩種有組織的方法來分析系統(tǒng)并提供文檔的手段。HIPO 模型由 IBM 于 1970 年開發(fā)。
HIPO 圖表示軟件系統(tǒng)模塊的層次結(jié)構(gòu)。分析師使用 HIPO 圖,以獲得對系統(tǒng)功能的高級視圖。它以分層方式將功能分解為子功能。它描述了系統(tǒng)執(zhí)行的功能。
HIPO 圖適用于文檔目的。它們的圖形表示使設(shè)計(jì)人員和管理人員更容易獲得系統(tǒng)結(jié)構(gòu)的圖形概念。
與描述模塊中控制和數(shù)據(jù)流的 IPO(Input Process Output,輸入過程輸出)圖相比,HIPO 不提供任何有關(guān)數(shù)據(jù)流或控制流的信息。
HIPO圖、層級表示的 IPO 圖這兩個(gè)部分都用于軟件程序的結(jié)構(gòu)設(shè)計(jì)及其文檔。
大多數(shù)程序員不了解軟件的大局,所以他們只依賴于他們的經(jīng)理告訴他們做什么。為程序員提供準(zhǔn)確的信息以開發(fā)準(zhǔn)確而快速的代碼是高級軟件管理人員的責(zé)任。
因此,該軟件的分析師和設(shè)計(jì)師提出了諸如結(jié)構(gòu)化英語之類的工具。它只不過是對編碼所需的內(nèi)容以及如何編碼的描述。結(jié)構(gòu)化英語幫助程序員編寫無錯(cuò)誤的代碼。
使用圖形或圖表的其他形式的方法有時(shí)可能會被不同的人以不同的方法理解。在這里,結(jié)構(gòu)化英語和偽代碼試圖縮小這種理解差距。
結(jié)構(gòu)化英語是它在結(jié)構(gòu)化編程范式中使用簡單的英語單詞。但這不是最終的代碼,而是一種描述需要編碼什么以及如何編碼。以下是結(jié)構(gòu)化編程的一些標(biāo)記。
IF-THEN-ELSE,
DO-WHILE-UNTIL
分析師使用相同的變量和數(shù)據(jù)的名稱,它存儲在數(shù)據(jù)字典,這使得編寫和理解代碼變的更加簡單。
我們以在線購物環(huán)境中的客戶身份驗(yàn)證為例。此驗(yàn)證客戶的程序可以用結(jié)構(gòu)化英語編寫為:
Enter Customer_Name
SEEK Customer_Name in Customer_Name_DB file
IF Customer_Name found THEN
Call procedure USER_PASSWORD_AUTHENTICATE()
ELSE
PRINT error message
Call procedure NEW_CUSTOMER_REQUEST()
ENDIF
用結(jié)構(gòu)化英語編寫的代碼更像是日??谡Z。它不能直接作為軟件代碼來實(shí)現(xiàn)。結(jié)構(gòu)化英語獨(dú)立于編程語言。
偽代碼的編寫更接近于編程語言。它可以被認(rèn)為是增強(qiáng)的編程語言,充滿了注釋和描述。
偽代碼避免了變量聲明,但它們使用一些實(shí)際的編程語言結(jié)構(gòu)編寫的,如 C,F(xiàn)ortran 和 Pascal 等。
偽代碼包含比結(jié)構(gòu)化英語更多的編程細(xì)節(jié)。它提供了一種執(zhí)行任務(wù)的方法,就好像計(jì)算機(jī)正在執(zhí)行代碼一樣。
打印最多 n 個(gè)數(shù)字的斐波那契數(shù)列的程序。
void function Fibonacci
Get value of n;
Set value of a to 1;
Set value of b to 1;
Initialize I to 0
for (i=0; i< n; i++)
{
if a greater than b
{
Increase b by a;
Print b;
}
else if b greater than a
{
increase a by b;
print a;
}
}
決策表以結(jié)構(gòu)化的表格格式表示條件以及為解決這些條件而要采取的相應(yīng)措施。
它是調(diào)試和防止錯(cuò)誤的強(qiáng)大工具。它有助于將相似的信息分組到一個(gè)表中,然后通過組合表來提供簡單方便的決策。
要建立決策表,開發(fā)人員必須遵循四個(gè)基本步驟:
讓我們舉一個(gè)簡單的例子來說明我們的互聯(lián)網(wǎng)連接的日常問題。我們首先確定啟動(dòng)互聯(lián)網(wǎng)時(shí)可能出現(xiàn)的所有問題及其各自可能的解決方案。
我們列出了列條件下所有可能的問題以及列操作下的預(yù)期操作。
- | Conditions/Actions | Rules | |||||||
---|---|---|---|---|---|---|---|---|---|
Conditions | Shows Connected | N | N | N | N | Y | Y | Y | Y |
- | Ping is Working | N | N | Y | Y | N | N | Y | Y |
- | Opens Website | Y | N | Y | N | Y | N | Y | N |
Actions | Check network cable | X | |||||||
- | heck internet router | X | X | X | X | ||||
- | tart Web Browser | X | |||||||
- | ontact Service provider | X | X | X | X | X | X | ||
- | Do no action |
表 : 決策表 – 在內(nèi)部網(wǎng)絡(luò)故障排除
實(shí)體關(guān)系模型是一種基于現(xiàn)實(shí)世界實(shí)體和它們之間的關(guān)系概念的數(shù)據(jù)庫模型。我們可以將現(xiàn)實(shí)世界的場景映射到 ER 數(shù)據(jù)庫模型上。ER 模型創(chuàng)建一組實(shí)體及其屬性、一組約束和它們之間的關(guān)系。
ER 模型最適用于數(shù)據(jù)庫的概念設(shè)計(jì)。 ER 模型可以如下表示:
數(shù)據(jù)字典是關(guān)于數(shù)據(jù)信息的集中收集。它存儲數(shù)據(jù)的含義和來源、它與其他數(shù)據(jù)的關(guān)系、使用的數(shù)據(jù)格式等。數(shù)據(jù)字典對所有名稱都有嚴(yán)格的定義,以方便用戶和軟件設(shè)計(jì)人員。
數(shù)據(jù)字典通常被稱為元數(shù)據(jù)(關(guān)于數(shù)據(jù)的數(shù)據(jù))存儲庫。它是與軟件程序的 DFD(數(shù)據(jù)流圖)模型一起創(chuàng)建的,并且預(yù)計(jì)會在 DFD 更改或更新時(shí)進(jìn)行更新。
在設(shè)計(jì)和實(shí)現(xiàn)軟件時(shí)通過數(shù)據(jù)字典引用數(shù)據(jù)。數(shù)據(jù)字典消除了任何歧義的可能性。它有助于保持程序員和設(shè)計(jì)人員的工作同步,同時(shí)在程序中的任何地方使用相同的對象引用。
數(shù)據(jù)字典為整個(gè)數(shù)據(jù)庫系統(tǒng)提供了一種在一個(gè)地方記錄的方式。DFD 的驗(yàn)證是使用數(shù)據(jù)字典進(jìn)行的。
數(shù)據(jù)字典中應(yīng)包含以下內(nèi)容的信息
數(shù)據(jù)流是通過前面研究過的 DFD 來描述的,并以所描述的代數(shù)形式表示。
= | Composed of |
---|---|
{} | Repetition |
() | Optional |
+ | And |
[ / ] | Or |
Address = House No + (Street / Area) + City + State
Course ID = Course Number + Course Name + Course Level + Course Grades
數(shù)據(jù)元素由數(shù)據(jù)和控制項(xiàng)的名稱和描述、內(nèi)部或外部數(shù)據(jù)存儲等組成,具有以下詳細(xì)信息:
它存儲數(shù)據(jù)從何處進(jìn)入系統(tǒng)和存在于系統(tǒng)外的信息。數(shù)據(jù)存儲可能包括:
有兩種類型的數(shù)據(jù)處理:
更多建議: