【軟考架構】需求工程中,系統分析與設計的結構化方法

結構化方法誕生于20世紀70年代,是為了應對當時日益復雜的軟件系統開發挑戰(如“軟件危機”)而提出的。它強調系統性、規范性、分解和抽象,目標是提高軟件開發的效率、質量和可維護性,降低復雜性

核心思想:

  1. 自頂向下,逐步求精: 從系統最宏觀、最抽象的整體視圖開始,逐步分解成更小、更具體、更容易理解和實現的模塊或過程。
  2. 功能分解: 將復雜的系統視為一系列功能的集合。分析的核心是理解“系統做什么”,設計則是將這些功能分解、組織并分配到具體的模塊中。
  3. 數據與功能分離: 明確區分系統中的數據(是什么)和功能/過程(對數據做什么)。數據通常用數據模型(如ER圖)描述,功能用過程模型(如數據流圖)描述。
  4. 模塊化: 系統被分解成一組相對獨立、高內聚、低耦合的模塊。每個模塊負責一個明確定義的功能子集。
  5. 使用圖形化建模工具: 大量使用標準化的圖表(如數據流圖、結構圖、實體關系圖、狀態轉換圖等)來可視化地描述系統的不同方面(功能、數據、狀態),取代或補充大量的文字描述,提高溝通效率和清晰度。
  6. 形式化或半形式化的規范: 強調使用清晰、無歧義、相對標準的符號和規則來描述需求和設計。
  7. 關注邏輯模型與物理模型:
    • 邏輯模型: 描述系統“做什么”,獨立于具體的技術實現(如硬件、軟件平臺、數據庫管理系統)。這是分析和需求規格說明階段的核心產出。
    • 物理模型: 描述系統“如何實現”,即邏輯模型在特定技術環境下的具體實現方案。這是設計階段的核心產出。

結構化方法的核心階段與技術:

結構化方法通常貫穿整個系統開發生命周期(SDLC),尤其是在分析(SA - Structured Analysis)和設計(SD - Structured Design)階段最為突出。

  1. 結構化分析:

    • 目標: 理解用戶需求,定義系統“做什么”,建立系統的邏輯模型。
    • 主要技術與工具:
      • 數據流圖: 描述數據在系統中的流動、處理、存儲。是SA的核心工具。包含:外部實體、過程、數據流、數據存儲。
      • 數據字典: 定義DFD中出現的所有數據流、數據存儲和數據項(元素)的精確含義、組成、格式、取值范圍等。是系統數據的中央倉庫。
      • 實體關系圖: 描述系統中的關鍵數據實體、實體屬性以及實體之間的關系。用于建立數據模型(邏輯數據庫設計的基礎)。
      • 過程規格說明: 詳細描述DFD中最底層(不可再分)過程的處理邏輯。常用工具包括:結構化英語(偽碼)、判定表、判定樹。
      • 狀態轉換圖: 對于具有明顯狀態變化的系統(如實時控制系統),描述系統狀態、引起狀態轉換的事件以及狀態轉換時執行的動作。
  2. 結構化設計:

    • 目標: 將分析階段得到的邏輯模型轉化為具體的、可實現的物理模型,即系統“如何做”。重點是設計軟件結構。
    • 主要技術與工具:
      • 結構圖: SD的核心工具。描述程序的模塊層次結構、模塊間的調用關系以及模塊間傳遞的數據(參數)。
      • 設計原則:
        • 模塊化: 將大系統分解成小模塊。
        • 耦合: 衡量模塊間相互依賴的程度。目標是低耦合(模塊間聯系盡可能少且簡單)。
        • 內聚: 衡量一個模塊內部各元素(語句、數據)結合的緊密程度。目標是高內聚(模塊內元素共同完成一個單一、明確的功能)。
      • 從DFD到結構圖的轉換: 有特定的策略(如變換分析、事務分析)將DFD映射為初步的結構圖。
      • 數據設計: 基于ER圖,設計物理數據庫結構(表、字段、索引、關系)。

結構化方法的主要流派/代表:

  • Yourdon/DeMarco 方法: 非常強調DFD和數據字典,是結構化分析最經典的代表。
  • Gane & Sarson 方法: 另一種廣泛使用的結構化分析方法,DFD符號與Yourdon略有不同。
  • Jackson 系統開發方法: 強調數據結構對程序結構的主導作用。
  • 結構化分析與設計技術: 由Douglas Ross提出,使用更豐富的圖形符號集(活動圖、數據圖等)。

結構化方法的優點:

  1. 降低復雜性: 通過分解將大問題轉化為小問題,易于理解和處理。
  2. 提高清晰度與可理解性: 圖形化模型直觀、標準,便于不同角色(用戶、分析師、設計師、程序員)之間的溝通和驗證。
  3. 強調文檔化: 產生詳盡的、標準化的文檔,有利于知識傳遞、維護和審計。
  4. 支持自頂向下開發: 便于早期識別主要問題和架構。
  5. 設計原則明確: 耦合和內聚等原則為設計高質量軟件提供了具體指導。
  6. 適用于數據處理密集型系統: 在處理以數據流和轉換為主的系統(如傳統業務信息系統)方面非常有效。

結構化方法的局限性:

  1. 對需求變化的適應性較差: 相對剛性,需求變更可能引起文檔和設計的大量修改(瀑布模型的通病)。
  2. 數據和功能分離的割裂: 現實世界中的對象往往同時包含數據和操作數據的行為。結構化方法將兩者分離建模,有時不能很好地映射現實。
  3. 對用戶界面和交互密集型系統支持較弱: 早期結構化方法較少關注用戶體驗和人機交互設計。
  4. 可重用性支持有限: 主要關注特定系統的功能分解,對通用組件復用的支持不如面向對象方法。
  5. 可能產生“分析癱瘓”: 在大型復雜項目中,過度強調前期詳盡的文檔和建模可能導致項目進度緩慢。
  6. 與面向對象思維的差異: 現代軟件開發主流是面向對象,結構化方法的思維模式與之不同,學習和轉換有一定成本。

結構化方法與面向對象方法的對比:

特性結構化方法面向對象方法
核心概念功能、過程、數據流、模塊對象、類、屬性、方法、繼承、多態
分解方式功能分解對象分解
數據與功能分離封裝在對象內部
關注點“做什么” (功能)“誰做什么” (對象職責)
建模工具DFD, ERD, 結構圖用例圖, 類圖, 時序圖, 狀態圖等
適應性對穩定需求較好,變更成本較高對需求變化適應性更好
重用性模塊級重用類級、組件級、模式級重用
典型適用數據處理系統,事務處理交互復雜系統,GUI應用,分布式系統

總結:

結構化方法是軟件工程發展史上的重要里程碑。它提供了一套系統化、規范化的分析和設計框架,通過自頂向下分解、功能視角、數據和過程分離、圖形化建模以及強調模塊化設計原則,顯著提高了軟件開發的規范性和可控性。雖然在應對快速變化的需求和構建高度交互的系統方面不如面向對象方法靈活,但其核心思想(如分解、模塊化、低耦合高內聚)仍然是現代軟件設計的基石。理解結構化方法對于掌握軟件工程的基礎原理、閱讀遺留系統文檔以及在某些特定場景(如優化核心算法模塊、設計底層服務)下進行設計仍然具有重要價值。它是學習更現代方法(如面向對象、面向服務)的重要基礎。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/92972.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/92972.shtml
英文地址,請注明出處:http://en.pswp.cn/web/92972.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FPGA常用資源之IO概述

目錄 一、前言 二、I/O資源 2.1 I/O端口資源 2.1.1 IOB 2.1.2 ILOGIC/OLOGIC 2.2 ZHOLD 2.3 IDDR/ODDR 2.4 IDELAY 2.5 ISERDES/OSERDES 2.6 IO Logic Resource連接 2.7 Device示意圖 三、工程示例 3.1 工程代碼 3.2 Device結果 一、前言 FPGA芯片從內部結構看主…

密集遮擋場景識別率↑31%!陌訊輕量化部署方案在智慧零售的實戰解析

一、零售業痛點:當技術遇上客流洪流據《2024智慧零售技術白皮書》統計,高峰期超市顧客密度超3人/㎡時,??目標漏檢率高達48%??。核心挑戰包括:??動態遮擋??:購物車/貨架造成的持續性目標截斷??計算瓶頸??&a…

力扣(O(1) 時間插入、刪除和獲取隨機元素)

一、題目分析(一)功能需求 我們需要實現 RandomizedSet 類,包含以下功能: RandomizedSet():初始化數據結構。bool insert(int val):當元素 val 不存在時,插入該元素并返回 true;若已…

前端開發的面試自我介紹與準備

前端面試自我介紹不知道怎么說的,直接參考下面的模板,然后換成你的經歷 自我介紹控制在1分鐘左右,千萬不要說的太久,面試官會煩的,但是又不好意思打斷你 切記面試是人和人面對面的交流,要有,面試…

10、系統規劃與分析

一、系統規劃步驟系統規劃步驟對現有系統進行初步調查分析和確定系統目標分析子系統的組成和基本功能擬定系統的實施方案擬定系統的可行性研究指定系統建設方案系統規劃階段的產出物:可行性研究報告、系統設計任務書。習題1、擬定系統的實施方案是在系統規劃階段完成…

Nginx學習筆記(六)—— Nginx反向代理

📚Nginx學習筆記(六)—— Nginx反向代理 📌 一、反向代理核心概念 本質原理: #mermaid-svg-UkFRDp2Ut7MK5T2N {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s…

三伍微電子GSR2406 IoT FEM 2.4G PA 射頻前端模組芯片

三伍微電子GSR2406 IoT FEM 2.4G PA 射頻前端模組芯片規格書Product Description The GSR2406 is a high-performance, fully integrated RF front-end module (FEM) designed for Zigbee technology, Thread, and Bluetooth (including low energy) applications. The GSR2406…

開發避坑指南(24):RocketMQ磁盤空間告急異常處理,CODE 14 “service not available“解決方案

異常信息 Caused by: org.apache.rocketmq.client.exception.MQBrokerException: CODE: 14 DESC: service not available now, maybe disk full, CL: 0.94 CQ: 0.94 INDEX: 0.94, maybe your broker machine memory too small.異常背景 一個項目里面用到了rocketmq&#x…

開源WAF新標桿:雷池SafeLine用語義分析重構網站安全邊界

文章目錄前言【視頻教程】1.安裝Docker2.本地部署SafeLine3.使用SafeLine4.cpolar內網穿透工具安裝5.創建遠程連接公網地址6.固定Uptime Kuma公網地址前言 當個人或企業站點上線后面臨的首要威脅往往來自網絡攻擊——據統計,超過60%的Web應用漏洞利用嘗試在流量到達…

Mac M1探索AnythingLLM+SearXNG

SearXNG 能聚合來自多達 200 多個搜索服務,可私有化部署,并提供了靈活自定義選項。 AnythingLLMSearXNG,剛好能解決AnythingLLM因為網絡限制導致web search不可用的問題。 1 安裝docker 下載mac m1版本的docker并安裝。 https://docs.dock…

模式設計:策略模式及其應用場景

簡介 策略模式(Strategy Pattern)是一種行為型設計模式,它允許在運行時動態選擇算法或行為。核心思想是將算法封裝成獨立的類(策略),使它們可以相互替換,讓算法的變化獨立于使用它的客戶端。 核心思想 解耦:將算法的定義與使用分離。每個算法封裝起來,使它們可以互…

Squash Merge(壓縮合并)和Rebase Merge(變基合并)介紹

文章目錄**1. Squash Merge(壓縮合并)****定義****操作步驟****特點****優點****缺點****2. Rebase Merge(變基合并)****定義****操作步驟****特點****優點****缺點****3. 對比總結****4. 選擇建議****5. 示例場景****Squash Merg…

Linux編程 —— framebuffer

一、framebuffer概念framebuffer:幀緩沖,幀緩存技術Linux內核專門為圖形化顯示提供的一套應用程序接口。二、基本操作步驟1. 打開顯示設備(/dev/fb0) 2. 獲取顯示設備相關參數(分辨率,像素格式)---》ioctl 3. 建立顯存…

文件編輯html

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>文件行內容編輯器</title><script src&…

具有熔斷能力和活性探測的服務負載均衡解決方案

一、整體架構設計 1.核心組件 負載均衡器&#xff1a;負責選擇可用的服務節點健康檢查器&#xff1a;定期檢測服務節點的可用性服務節點管理&#xff1a;維護所有可用節點的狀態信息 2.負載均衡策略 輪詢(Round Robin)隨機(Random)加權輪詢(Weighted Round Robin)最少連接(Leas…

技術演進中的開發沉思-62 DELPHI VCL系列:VCL下的設計模式

今天聊聊設計模式&#xff0c;當然這個章節目前僅限于DELPHI VCL,因為接下來梳理的Factory/Factory Method、Bootstrap 和 ForEach 這三種設計樣例&#xff0c;看似獨立&#xff0c;卻在實際開發中相互配合&#xff0c;共同構建起高效、靈活的程序架構。在 DELPHI VCL 開發的技…

Docker 101:面向初學者的綜合教程

掌握 Docker 已成為軟件開發中的一項關鍵技能。本教程探討了容器化的世界&#xff0c;包括其核心概念、優缺點&#xff0c;以及開始使用容器化的分步指南。 無論是 Docker 的新手&#xff0c;還是希望復習基礎知識的更有經驗的開發人員&#xff0c;本指南都能滿足需求。 什么…

RTOS YAFFS

在 YAFFS (Yet Another Flash File System) 的語境中&#xff0c;“Check Point” 并不是一個標準的、核心的官方術語。它更可能是對 YAFFS 關鍵機制 Summary 或 Checkpointing 功能的非正式表述或理解偏差。其核心含義是指 YAFFS 在特定時刻保存文件系統關鍵元數據的狀態&…

【SpringBoot系列-02】自動配置機制源碼剖析

【SpringBoot系列-02】自動配置機制源碼剖析 咱們天天用Spring Boot&#xff0c;一個SpringBootApplication注解扔進去&#xff0c;啥配置都不用寫&#xff0c;項目就跑起來了。你有沒有過這種疑惑&#xff1a;那些DispatcherServlet、DataSource是從哪冒出來的&#xff1f;今天…

51單片機-51單片機最小系統

本章概述思維導圖&#xff1a;51單片機最小系統51單片機最小系統是51系列單片機&#xff08;如AT89C51、STC89C52等&#xff09;能夠獨立工作的最簡電路配置&#xff0c;它為單片機提供了運行所需的基本條件。51單片機最小系統板是嵌入式系統開發的基礎平臺&#xff0c;集成了單…