【軟件工程】技術規格說明書


項目 內容
這個作業屬於哪個課程 軟件工程 羅傑
這個作業的要求在哪里 技術規格說明書
我們在這個課程的目標是 熟悉軟件開發整體流程,提升自身能力
這個作業在哪個具體方面幫助我們實現目標 確定技術規格,撰寫說明書

一、概述

  • 我們團隊的目標是實現一個拖拽式編程的網站,即通過推拽圖形、連線來搭建神經網絡模型,返回pytorch的模型代碼。在確定需求和功能后,我們通過網上調研學習,並且研究學長們之前的項目后,決定采用bootstrap作為前端主要開發框架,Django作為后端服務器開發框架。由於首次版本我們的目的在於實現核心推拽功能,因此數據庫暫時選用MYSQL。

二、前端技術

  • 基本框架采用bootstrap,優點在於:擴展性強、有豐富的插件和組件、前端處理簡潔、擁有大量的現成UI組件

  • 對圖形的拖拽使用的是jquery-ui和jsplumb

  • 使用jquery中基礎的js函數與后端通信

    bootstrap能夠更好地與現實的web開發項目結合,它不斷適應web技術的發展,不斷成熟。在大量的項目中,bootstrap被進行了充分的使用和測試,擁有完善的文檔,兼容各種腳本插件,接受定制。bootstrap為用戶提供了一套響應式優先的流式柵格系統,擁有完備的框架結構。在此考慮基礎上,我們的項目適合使用bootstrap實現前端。

三、后端技術

  • 由於需要用pytorch實現模型代碼,因此pytorch的文檔理解和基本的模型理解是必要的。我們安排了組員去理解pytorch的原理,實現圖形到代碼的核心功能。
  • Django的功能較為完善,同時部分組員有過使用Django的經歷,因此后端框架采用Django,其擁有強大的后台功能以及模板系統,能夠更好的幫助我們實現核心功能。
  • 用戶數據的存儲數據庫暫定為MYSQL。

四、UI模塊

  • 圖中的紅色邊框的長方形是畫布。左邊一欄是基本的圖形結構,根據功能分類,可以在圖形中加入label。
  • 將圖形拖拽進入畫布后,出現的四個點可以和其他圖形進行任意的連接。
  • 在畫布內的圖形可以再經過鼠標的拖拽改變位置,同時可以刪除畫布內不需要的圖形。
  • 可以自由更改或刪除畫布內的連線。

五、與pytorch的交互對接

  • 在此只羅列出關鍵方法的名稱和作用
關鍵方法 作用
jsplumb.getConnections() 獲得界面中連線兩端的圖形的id
save() 統計各個連線兩端的圖形,返回一個數組,包括各個圖形的數目
http請求 請求后端的api接口,獲得后端的數據
gen_pytorch_inputs() 根據傳入的數據,處理輸入層
gen_pytorch_convolution() 根據傳入的數據,處理卷積層
gen_pytorch_concat() 根據傳入的數據,處理拼接層
gen_pytorch_reshape() 根據傳入的數據,處理reshape層
gen_pytorch_softmax() 根據傳入的數據,處理softmax層
gen_pytorch_pooling() 根據傳入的數據,處理pooling層
gen_pytorch_dense() 根據傳入的數據,處理全連接層
pytorch_inputs() 存儲輸入層的代碼,返回給前端(其他層相似,不再贅述)

六、運行環境

  • 該項目的運行基本要求是網絡環境,但對瀏覽器沒有特定的要求。前端使用的Bootstrap擁有完備的框架結構,具有和諧的整體效果,無論是火狐、谷歌、IE瀏覽器都是支持的。

七、錯誤處理

  • 對錯誤進行分類處理,目前定義的錯誤類型有:
錯誤類型 錯誤原因
OutofboundaryException 越界錯誤(例如圖形的數量越界)
StoreException 保存模型代碼出現錯誤
WronginterException 輸入錯誤(例如畫布中有未連接圖形)
PyException 生成錯誤的模型

八、耦合以及應對變化的靈活性

  • 將接口和方法封裝成對應函數,保證了獨立性和耦合性。我們使用的bootstrap和django都是擴展性較好的框架,對於后續其他功能的實現並沒有什么負擔,如果對已有的核心功能進行加強和更新,也不會對接口進行更改,pytorch實現的模型代碼也不會有變動。因此,對變化的靈活性應當是較好的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM