1. 程式人生 > >淺談三大文件——需求、概要及詳細

淺談三大文件——需求、概要及詳細

        當今,電腦已經走進了千家萬戶。而用360清理電腦,好像已經是每家每戶經常乾的事情。而我的一個遠親更為誇張,家裡電腦上裝滿了360的套裝。從瀏覽器到安全衛士再到防毒軟體。清理電腦清理的頻繁極了,而且人家還非常關注360軟體的更新,雖然他不知道是怎麼回事兒,軟體一有更新,就更上癮似的去更新。

       下面我們想一個問題:為什麼360能夠通過不斷的升級程式,達到程式的更新,而有的程式一有新的業務,就非得推倒重來呢?

       當然,初期軟體的架構非常重要了。然而無論在軟體設計之初,還是在軟體的使用過程中,維護過程中,專案經理級別的人物交流等等,等等都離不開的,就是文件。

       說到文件,就必須得說需求、概要、詳細三大文件。俗話說:萬事開頭難,這需求分析文件

,就是該系統的頭兒,它主要解決“做什麼”的問題。需求分析時,系統分析員和軟體工程師對客戶的需求進行充分理解,然後把業務需求理解整理成文件。該文件便供架構師對該系統進行架構,包括後續的畫UML圖,編寫概要設計文件和詳細設計文件。

       個人認為,需求分析文件中可以有用例描述。用例描述,是使用者與開發人員之間最好的語言,一般情況下,開發人員很難向聽出來使用者想要什麼系統,而使用者用自己的語言描述半天也表述不清自己要的是啥。而用例圖能夠使他們兩者達成共識。

需求分析裡面,還應該放置使用者特點。俗話說:知己知彼,百戰百勝。只有知道了使用者的特點,才能對症下藥,制定出符合他們的需求系統。

       當然需求裡面也需要放一些其他的東西,比如關於效能描述,非功能性要求等等,這裡不多少說,大家可以去百科裡面查。下面說概要。

       那麼,什麼是概要設計文件,寫完之後又要給誰看呢?

       個人認為,概要設計文件的編寫就是要根據需求文件的要求,把系統具體化。將系統的功能進行模組劃分,建立模組的層次結構呼叫關係、確定模組之間的介面和人機介面等等。

        那麼概要設計文件完成後要給誰看呢?經過昨天激勵的討論,大家一定都知道了。首先,概要設計首先要給專案經理級別的人看的,他通過該文件能夠了解該系統的全域性以及該系統的特色和亮點。然後,概要設計也可以拿給使用者看,使用者經過簡單的培訓,大體上讀懂文件應該沒有問題,他們能夠通過該文件瞭解到這的系統是不是他們所需要的系統;再然後,概要設計還可以起到唬人的作用。比如公司之間外包專案,可以拿概要設計文件對自己專案的兩點和難點吹噓一番,給人眼前以震驚的感覺。

       我們知道了概要設計文件要給誰看,那我們的概要設計要包含哪些內容呢?

       概要設計文件需要有該系統的功能介紹,但是不是功能的具體實現。當然,我們可以在裡面放用例圖。我們可以將我們建模的用例圖放到概要設計裡面,使參看該文件的人能夠對系統的功能一目瞭然。

       另外,我們更可以把系統的主要功能介面放在該文件中,閱讀者多圖的吸收能力遠遠大於文字,簡單的幾幅功能圖片,能夠將你係統的主要功能概述出來。

       此外,我們也可以將資料庫的框架設計、表設計以及系統的整體架構體(也就是包圖),放在概要設計裡面。目的還是一樣,讓使用者能夠從全域性瞭解該系統。

        同時,我們也可以將我們的程式設計規範統一在概要設計文件中。

       個人認為,概要設計就好像人的臉一樣,它就是系統的臉。通過這張臉,我們能夠看到這個系統到底漂亮不漂亮,到底值多少錢,到底有沒有面子,能不能唬人。

        有了概要設計,下面我們來看詳細設計。

        詳細設計文件一定要細緻。因為它主要是給程式設計開發人員看的,大家要嚴格根據詳細設計文件來編寫程式碼,所以該文件的準確性一定要高,可以說該文件出問題,那麼系統就一定會有問題。

        詳細設計文件中,要包含各個層次之間的介面。比如我寫UI層的程式碼,那麼我就必須知道BLL有哪些類,有哪些方法、及其它的引數,返回值等。那麼這些就都必須在詳細設計文件中有詳細的中文說明、英文名稱。

        這是介面,那麼詳細設計中還需要放寫什麼呢?我們還可以將時序圖放在裡面。我都知道,時序圖是對指定功能的具體實現,將該系統的主要功能的時序圖放在詳細設計文件中,使開發人員對層與層之間的呼叫關係,方法名、引數、返回值等更加了解。

        另外,系統的其他方面的具體細節,也應該在詳細設計文件中宣告。比如系統的精度問題、程式必要的功能、效能的描述等。

        概要設計文件給系統分了模組,而詳細設計就要把這各個模組逐步細化,直到開發人員能夠較輕鬆的看懂為止。

相關推薦

三大——需求概要詳細

        當今,電腦已經走進了千家萬戶。而用360清理電腦,好像已經是每家每戶經常乾的事情。而我的一個遠親更為誇張,家裡電腦上裝滿了360的套裝。從瀏覽器到安全衛士再到防毒軟體。清理電腦清理的頻

本地包含利用

文件包含 lfishell nc反向連接 今天在公眾號看到了一個本地文件包含的利用工具,看了下國外大牛對該工具的使用的一個視頻,感覺很厲害,通過該工具可對存在本地文件包含漏洞的站點進行利用並返回一個LFI shell,通過返回的LFI shell再次獲取一個反向連接,從而可執行相關命令,以前對本地

歸檔壓縮傳輸

文件歸檔、壓縮及傳輸1.文件歸檔文件歸檔,就是把多個文件變成一個歸檔文件tar c 創建 f 指定歸檔文件名稱 t 顯示歸檔文件中的內容 r

Python管理亂碼對passwd排序

() oss ora nco ges pool doc post game 1.讀寫文件讀文件: f = open("1.txt") text = f.readlines() print(text)寫文件: f = open(

[整理] BRD——>MRD——>PRD,產品經理三大概念詳解前後邏輯

商業需求文件 Business Requirement Document BRD和MRD,PRD一起被認為是從市場到產品需要建立的文件規範。 是產品生命週期中最早的文件,再早就應該是腦中的構思了,其內容涉及市場分析,銷售策略,盈利預測等,通常是供決策層們討論的演示文件,一般比較短小精煉,沒有產品細節

[整理] BRD——>MRD——>PRD,產品經理三大概念詳解前後邏輯

這部分是PRD寫得最多的內容,也就是傳統意義上的需求分析,我們這裡主要指UC(use case)文件。主要內容有,功能使用的具體描述(每個UC一般有用例簡述、行為者、前置條件、後置條件、UI描述、流程/子流程/分支流程等幾大塊),Visio做的功能點業務流程,介面的說明,demo等。Demo方面,可能用dre

新建開啟關閉的過程

應用程式類的InitInstance()函式在呼叫了AddDocTemplate()函式之後,會通過CWinApp::ProcessShellCommand間接呼叫 CWinApp的OnFileNew

shell之十一別名列表陣列

一、簡介 Shell中別名可以對命令進行重新命名,方便使用者記憶長命名和定製自己熟悉的工作環境;列表是一組命名以邏輯與、邏輯或的關係串在一起,實現指令碼程式的邏輯控制;陣列是一重點,涉及陣列的賦值、操作和字串的處理,以及利用陣列實現堆疊和二維陣列等資料結構的儲存。 二、

內核的MakefileKconfig和.config

模塊 文件夾 語法 配置 推薦 lec 有時 輸出 The Linux內核源碼文件繁多,搞不清Makefile、Kconfig、.config間的關系,不了解內核編譯體系,編譯修改內核有問題無從下手,自己寫的驅動不知道怎麽編進內核,不知道怎麽配置內核,這些問題都和Makef

Fedora 25對比目錄對比工具——Meld——Linux平臺的對比工具

文件夾 linux 英文 軟件 meld 文件對比 處理文件的時候,經常遇到兩個非常相似的文件,需要對比、修改。Meld就是專門做這個工作的一款工具。Meld是一個可視的diff和合並工具。Meld是Linux軟件,用戶使用它可以比較2至3個文件並進行編輯,也可以比較2至3個文件夾並同

windows 如何不顯示帶點的夾?

9.png bsp mage 技術分享 資源管理器 ima lin 顯示 cnblogs 這些以點開頭的文件夾和文件是為了在 linux 中隱藏的。但是在 windows 中如何不顯示他們? 資源管理器: CMD: windows 如何不顯示帶點的文件

【Linux】Linux下統計當前文夾下的個數目錄個數

article logs 過濾 ref bash 輸出 子文件夾 http 輸出信息 統計當前文件夾下文件的個數,包括子文件夾裏的 ls -lR|grep "^-"|wc -l 統計文件夾下目錄的個數,包括子文件夾裏的 ls -lR|grep "^d"

遞歸遍歷取所有。包括子目錄。

文件夾 子目錄 tostring 遍歷 foreach ret ans 進行 urn private int count = 0; private int TransformFiles(string path) {

Linux日誌utmpwtmplastlogmessages

退出 truct utmp 運行 字段 ... 會話 都是 cond 1、有關當前登錄用戶的信息記錄在文件utmp中;==who命令  2、登錄進入和退出紀錄在文件wtmp中;==w命令  3、最後一次登錄文件可以用lastlog命令察看;  4、messages====

Python基礎:Python函數操作遞歸

文件處理 r+ lose 獲取 表示 pyw 全部 truncate 模塊 函數參數函數參數包括位置參數,關鍵字參數,動態參數(*args, **args)三種。傳參的過程是形式參數的賦值。*args傳入的參數是元組形式,**args傳入的參數是字典形式。示例代碼如下:(這

制作根系統使用NFS燒寫編譯使用驅動程序(2)

clas bz2 節點 family 好的 根文件系統 pan ini 驅動 1.制作根文件系統 1.1 先解壓文件系統,/wok/nfs_root 目錄下是已經構造好的各種文件系統:① fs_mini.tar.bz2 是最小的根文件系統,裏面的設備節點是事先建立好的;②

基於commons-net實現ftp創建上傳下載功能

package use style pen 本地 try cal load 登陸 原文:http://www.open-open.com/code/view/1420774470187 package com.demo.ftp; import

Zookeeper--(二)配置講解客戶端使用

臨時 結束 java .com per 客戶端使用 .cn 事務 客戶端 Java操作zookeeper 創建節點 創建子節點 CreateMode.EPHEMETAL臨時節點保證本次回話有效,本次會話結束臨時節點消失,可以實現分布式事務鎖

Linux 查看磁盤分區系統磁盤的使用情況相關的命令和工具介紹

rfs partition pan 包含 logical cor name blocks 為什麽 Linux 磁盤分區表、文件系統的查看、統計的工具很多,有些工具是多功能的,不僅僅是查看磁盤的分區表,而且也能進行磁盤分區的操作;但在本文,我們只講磁盤分區的查看,以及分區的

python學習筆記(集合的使用操作字符編碼與轉碼函數)

函數式編程 close 取值 指定編碼 mage 指定位置 lac 空白 你在 集合 集合(set):把不同的元素組成一起形成集合,是python基本的數據類型。 集合元素(set elements):組成集合的成員 為什麽需要集合? 集合的作用 1 .列表去重復數據