軟件工程 分析和設(shè)計(jì)工具

2021-10-27 09:40 更新

軟件分析和設(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ù)流圖

數(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 不含有任何控制或分支元素。

DFD的類型

數(shù)據(jù)流圖是邏輯或物理.

  • 邏輯DFD: 這種類型的 DFD 專注于系統(tǒng)進(jìn)程和系統(tǒng)中的流數(shù)據(jù)。例如,在銀行軟件系統(tǒng)中,數(shù)據(jù)是如何的不同實(shí)體之間移動(dòng)。
  • 物理DFD: 這種類型的 DFD 顯示了數(shù)據(jù)流是如在系統(tǒng)中實(shí)際實(shí)現(xiàn)的。它是更具體,更接近于實(shí)現(xiàn)。

DFD組件

DFD 可以使用以下組件集表示數(shù)據(jù)的來源、目的地、存儲和流:

  • 實(shí)體:是信息數(shù)據(jù)的來源和地。實(shí)體是由各自名稱的矩形表示。
  • 過程:對數(shù)據(jù)采取的活動(dòng)和操作由圓形或圓邊矩形表示。
  • 數(shù)據(jù)存儲:數(shù)據(jù)存儲有兩種變體,它可以表示沒有兩個(gè)較小邊的矩形,或者表示為僅缺少一側(cè)的開發(fā)邊矩形。
  • 數(shù)據(jù)流:數(shù)據(jù)的移動(dòng)用尖箭頭表示。數(shù)據(jù)移動(dòng)顯示為從箭頭底部作為其源向箭頭頭部作為目的地。

DFD水平

  • 0級?- 最高抽象層次的 DFD 被稱為 0 級 DFD,它將整個(gè)信息系統(tǒng)描述為一個(gè)隱藏所有底層細(xì)節(jié)的圖表。級別 0 DFD 也被稱為上下文級別 DFD。
  • 1級?- 0 級 DFD 被細(xì)分成更具體的 1 級 DFD。級別 1 DFD 描述了系統(tǒng)中的基本模塊以及各個(gè)模塊之間的數(shù)據(jù)流。1 級 DFD 還提到了基本流程和信息來源。
  • 2級?- 在這個(gè)級別,DFD 顯示了數(shù)據(jù)級別 1 中所提到的模塊內(nèi)的流動(dòng)方式。
    除非達(dá)到所需的規(guī)范級別,否則更高級別的 DFD 可以轉(zhuǎn)換為更具體的更低級別的 DFD,具有更深層次的理解。

結(jié)構(gòu)圖

結(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)圖中使用的符號:

  • 模塊?- 它代表進(jìn)程或子程序或任務(wù)。一個(gè)控制模塊分支到一個(gè)以上的子模塊。庫模塊可重復(fù)使用并可從任何模塊調(diào)用。
  • 狀態(tài)?- 它由模塊底部的小菱形表示。它描述了控制模塊可以根據(jù)某些條件選擇任意的子程序。
  • 跳轉(zhuǎn)?- 顯示的箭頭指向模塊內(nèi)部,表示控件將在子模塊的中間跳轉(zhuǎn)。
  • 循環(huán)?- 彎曲的箭頭表示模塊中的循環(huán)。循環(huán)重復(fù)執(zhí)行模塊覆蓋的所有子模塊。
  • 數(shù)據(jù)流?- 末端帶有空心圓圈的有向箭頭表示數(shù)據(jù)流。
  • 控制流?- 末端帶有實(shí)心圓圈的有向箭頭表示控制流。

HIPO圖

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ì)及其文檔。

結(jié)構(gòu)化英語

大多數(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è)基本步驟:

  • 確定要解決的所有可能條件
  • 確定針對所有已識別條件的操作
  • 創(chuàng)建最大可能規(guī)則
  • 為每個(gè)規(guī)則定義操作

示例

讓我們舉一個(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)系模型

實(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í)體:ER 模型中的實(shí)體是真實(shí)世界的存在,它具有一些稱為屬性的屬性。每個(gè)屬性都由其相應(yīng)的值集定義,稱為域。
    例如, 考慮一個(gè)學(xué)校的數(shù)據(jù)庫。在這里,學(xué)生是一個(gè)實(shí)體。學(xué)生也有各種屬性,如姓名、身份證、年齡和班級等。
  • 關(guān)系:實(shí)體之間的邏輯關(guān)聯(lián)被稱為關(guān)系。關(guān)系以各種方式與實(shí)體映射。映射基數(shù)定義了兩個(gè)實(shí)體之間的關(guān)聯(lián)數(shù)。
    映射基數(shù):
    • 一對一
    • 一對多
    • 多對一
    • 多對多

數(shù)據(jù)字典

數(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è)計(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)行的。

內(nèi)容

數(shù)據(jù)字典中應(yīng)包含以下內(nèi)容的信息

  • 數(shù)據(jù)流
  • 數(shù)據(jù)結(jié)構(gòu)
  • 數(shù)據(jù)元素
  • 數(shù)據(jù)存儲
  • 數(shù)據(jù)處理

數(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ù)元素由數(shù)據(jù)和控制項(xiàng)的名稱和描述、內(nèi)部或外部數(shù)據(jù)存儲等組成,具有以下詳細(xì)信息:

  • 主要名稱
  • 次要名稱 (別名)
  • 用例(如何以及在何處使用)
  • 內(nèi)容描述(符號等)
  • 補(bǔ)充信息(預(yù)設(shè)值,約束等)

數(shù)據(jù)存儲

它存儲數(shù)據(jù)從何處進(jìn)入系統(tǒng)和存在于系統(tǒng)外的信息。數(shù)據(jù)存儲可能包括:

  • 文件
    • 軟件內(nèi)部。
    • 軟件外部,但在同一臺機(jī)器上。
    • 位于不同機(jī)器上的軟件和系統(tǒng)外部。
    • 命名約定
    • 索引屬性

數(shù)據(jù)處理

有兩種類型的數(shù)據(jù)處理:

  • 邏輯:?正如用戶所見。
  • 物理:?正如軟件所見。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號