##1 需求分析
###1.1 需求分析組成部分
需求分析的內容是針對待開發軟件提供完整、清晰、具體的要求,確定軟件必須實現哪些任務。具體分爲功能性需求、非功能性需求與設計約束三個方面.
(1).功能性需求
功能性需求即軟件必須完成哪些事,必須實現哪些功能,以及爲了向其用戶提供有用的功能所需執行的動作。功能性需求是軟件需求的主體。開發人員需要親自與用戶進行交流,覈實用戶需求,從軟件幫助用戶完成事務的角度上充分描述外部行爲,形成軟件需求規格說明書。
(2).非功能性需求
作爲對功能性需求的補充,軟件需求分析的內容中還應該包括一些非功能需求。主要包括軟件使用時對性能方面的要求、運行環境要求。軟件設計必須遵循的相關標準、規範、用戶界面設計的具體細節、未來可能的擴充方案等。
(3).設計約束
一般也稱做設計限制條件,通常是對一些設計或實現方案的約束說明。例如,要求待開發軟件必須使用Oracle數據庫系統完成數據管理功能,運行時必須基於Linux環境等。
成果物:
需求分析文檔
###1.2 軟件需求分析模板
1、分析業務需求
(1) 時間需求:輸入、輸出頻率,輸入、輸出響應時間,各種功能恢復時間等;
(2) 處理容限、精度、採樣參數的分辨率,誤差處理等;
(3) 可靠性的MTBF要求,可維護性、安全性要求等。(對可能的不正常的輸入給以正常響應是可靠性的重要內容,這屬於功能性需求。)
2、分析用戶需求
1)誘導客戶需求 — 溝通過程
2)確認客戶需求
###3、分析功能需求
1)功能需求的完整性和一致性
對功能的描述應包含與功能相關的信息,並應具有內在的一致性(即各種描述之間不矛盾、不衝突)。應注意以下幾點:
(1) 給出觸發功能的各種條件(如:控制流、運行狀態、運行模式等);
(2) 定義各種可能性條件下的所有可能的輸入(包括合法的輸入空間和非法的輸入空間);
(3) 給出各種功能間可能的相互關係(如各個功能間的控制流、數據流、信息流,功能運行關係:順序、重複、選擇、併發、同步);
(4) 給出功能性的主要級別(如:基本功能、可由設計者選擇逐步實現的功能、可由設計者改變實現的功能等);
(5) 儘可能不使用“待定”這樣的詞。所有含有待定內容的需求都不是完整的文件,如果出現待定的部分,必須進行待定部分內容說明,落實負責人員、落實實施日期。
2)功能描述的無岔意性和可追蹤性
需求功能描述的無岔意性、可追蹤性和規範化:
(1) 功能描述必須清晰地描述出怎樣輸入到怎樣輸出,並且輸入、輸出描述應對應有數據流描述、控制流描述圖,這些描述必須與其它地方描述一致;
(2) 可以用語言、方程式、決策表、矩陣或圖等對功能的描述。如果選用語言描述必須使用結構化的語言,描述前必須說明該步驟(或子功能)的執行是順序,選擇,重複,還是併發,然後說明步驟邏輯。整個描述必須單入單出。
(3) 描述時,每一個功能名稱和參照編號必須唯一,且不要將多個功能混在一起進行描述,這樣便於功能的追蹤和修改。
(4) 功能描述應注意需求說明和程序設計的區別。需求設計僅僅是軟件的功能設計,它給出軟件運行的的外部功能描述,以及爲了實現這一外部功能必須做哪些事情(採用和種數據結構,定義多個模塊,接口間的接口等)是設計階段的事情,功能描述不應涉及到那些細節問題,以避免給軟件設計帶來不必要的約束。
###4、需求分析相關工具
效果圖描述。主要是用戶UI界面的描述反映用戶需求功能;
邏輯圖描述。根據用戶需求功能,使用抽象化理論,以及需求分析理論,對用戶需求功能進行全面的分析,建立功能性邏輯關係圖,流程邏輯關係圖等;
關係圖表描述。主要是對信息關係、數據庫表格、接口函數等描述;
工程數學描述。分析用戶需求,分析用戶需求信息,運用工程數學進行算法推導,進行合理化需求分析推導;
甘地圖描述。主要是軟件項目工作安排,開發週期預估;
其它方法描述。保證完整性合理性的有效描述
###5、需求評估
1)滿足客戶需求
2)保證可實施
3)工作週期
4)需求不可更改性
##2 本項目的需求分析
###2.1 功能性需求
圖文前端功能:
(1)圖文分類標籤
(2)圖文卡片式展示
(3)分頁功能
(4)搜索功能實現
(5)圖文詳情頁面
圖文後端功能
(1)標籤自定義,內容增刪改查功能
(2)文章內容管理,增刪改查
(3)圖片上傳
(4)美化編輯器模塊
數據統計頁面
(1)頁面佈局(左側樹形導航)
(2)美化表格展示
(3)highcharts實現統計圖展示
###2.2 非功能性需求
性能:用戶訪問量最高支持達到 QPS:1w/s (1) 響應時間 (2) QPS, TPS
QPS: query per second
TPS: transition per second
運行環境: Ubuntu-16.04
遵循標準:PEP8
用戶界面設計的具體細節:頁面儘量美觀,支持搜索,分頁展示,有圖片文件上傳,有編輯器,有圖表
未來可能的擴充方案: 接入爬蟲系統,將原始數據進行爬蟲採集
###2.3 設計約束
數據庫:MySQL
環境:Ubuntu
##3 詳細設計
成果物:產生詳細文檔。
主要包括部分有:功能模塊劃分,接口定義,類圖,業務流程圖,數據庫設計 (使用工具:visio, rose設計), 技術選型(採用什麼技術路線,架構設計)等。
關於軟件詳細設計文檔模板見附件《軟件詳細設計文檔模板.doc》
###3.1 功能模塊劃分
整個平臺系統分爲三個模塊
(1)美文前端模塊
(2)美文後端管理模塊
(3)數據統計模塊
###3.2 接口定義
提供接口通信方式:RPC(thrift協議), HTTP(S) 協議
RPC協議:
RPC是一種C/S架構的服務模型,server端提供接口供client調用,client端向server端發送數據,server端接收client端的數據進行相關計算並將結果返回給client端。
HTTP協議:
HTTP協議是建立在B/S架構的服務基礎上。接口通信:HTTP協議 — 基於TCP協議的, 建立三次握手才能進行HTTP應用層數據收發。
HTTPS協議:
基於HTTP協議,HTTP + SSL
訪問接口說明:
(1)首頁卡片式頁面展示:
接口URL: /art/index?page=1&t=1
方法:GET
輸入參數說明:
page: 第幾頁
t: 標籤類別,整數標識 eg: 0--全部 1--愛情小說 2—科幻小說
輸出:
渲染首頁卡片式頁面
(2) 頁面搜索功能:
接口URL: /art/search?key=XXX&page=1
方法:GET
輸入參數說明:
key: 搜索的關鍵詞
輸出:
渲染搜索列表頁面
(3)詳情頁面功能:
接口URL: /art/detail?id=7
方法:GET
輸入參數說明:
id: 文章id,(點擊某一個具體的文章,傳入文章id)
輸出:
渲染詳情頁面
(4) 數據統計頁面:
創建一個新的app名稱: statics
接口URL: /statics/index
方法:GET
輸入參數說明:
無
輸出:
渲染統計頁面佈局
(5)xadmin 登陸功能
接口URL: /xadmin
/xadmin
方法:GET
輸出:
渲染xadmin管理頁面(支持主題)
(6) 會員的登陸和註冊
和xadmin管理後臺用戶信息不同,會員信息是用戶登陸前端頁面的用戶信息。
註冊接口:/art/register/
功能點:實現提交用戶名, 密碼,郵箱 三個維度信息。註冊表單,會員數據模型,註冊邏輯處理
登陸接口:/art/login/
功能點:
(7) 留言板
接口url: /message
方法:POST
功能:通過定義消息表單,處理用戶提交的留言信息,提交信息到後臺,字段校驗,錯誤信息展示等