當前位置:編程學習大全網 - 編程語言 - 軟件開發過程中的常見問題有哪些?

軟件開發過程中的常見問題有哪些?

1.前言應用軟件系統是事件驅動的軟件系統,系統通過接口接受事件後,交由系統業務層處理,業務層處理完事件後將需要的信息存入數據庫,整個應用軟件系統分為三個子系統:接口子系統,業務子系統,數據庫子系統,業務子系統進壹步分為三個子系統:表示層,業務層,數據接入層。其中業務層是整個系統的核心,表示層負責通過接口子系統接收系統事件交給業務層處理,數據接入層供業務層使用完成數據的持久化。每個層對編程人員的技術要求是不同的,表示層需要了解的技術根據接口子系統選擇的不同而不同:如windows界面,需要對MFC有比較深入的了解,web界面則要求對asp,asp.net,或jsp有比較深入的了解。數據訪問層需要的技術則由數據庫子系統的選擇決定,另外還需要了解:ODBC,JDBC等。接口子系統的選擇:windows界面,java界面,web界面,命令行接口,CTI, API等數據庫子系統的選擇:關系數據庫,普通文件等基於以上對應用軟件系統的理解,軟件開發流程的輸入是用戶的業務需求,輸出就是系統的業務層、表示層、數據接入層的代碼,以及接口和數據庫,以及各種文檔。因此得到比較理想化的軟件開發流程圖,該圖使用uml中的活動圖描述。2.需求分析階段需求分析階段的常見問題是:需求分析不夠深入,對問題域沒有仔細研究,急於進入設計階段。造成這種問題壹方面是因為項目管目趕進度以及存在於管理人員頭腦中的根深蒂固的想法:任何時候不能讓任何人員閑著,另外很大的原因是很多人不知道如何進壹步深入研究問題域。需求分析階段不僅要列出系統的use case,更重要的是要列出use case的輸入輸出和例外情況等,以及問題域中的對象之間的靜態關系和動態關系,如對象間的包含關系,繼承關系,調用關系等。需求分析階段另外壹個常見的問題是常常將需求分析等同於數據庫設計,需求分析階段定義的是系統作什麽,而不是怎麽做,需求分析的結果應該與具體的技術實現無關。數據庫設計是技術實現的細節,應該盡可能的推遲技術細節的決策,不應該使技術細節束縛了我們對系統需求的理解。需求分析階段應該從用戶的角度對系統建模,不應將大量的技術細節暴露給用戶,導致系統易用性差。需求分析階段可以進壹步細分為業務需求分析階段和系統功能需求分析階段。在很多研發性質的系統中,不註重業務需求分析,只有系統功能需求分析,導致開發人員知其然不知其所以然。系統功能規範文檔與業務需求文檔的重要區別有以下幾點:內容不同:系統需求分為功能需求和非功能需求,功能需求進壹步分為業務功能需求和非業務功能需求。系統需求規範文檔除了包括業務需求文檔中的業務功能需求,功能規範文檔需要增加以下內容:系統的非業務功能需求,由於業務需求由計算機系統實現而產生的功能需求,如系統需要系統管理員管理,系統管理員的角度產生壹些非業務功能需求,另外需要描述系統非功能需求:數據量,性能要求,響應速度,可用性要求,可靠性要求,界面語言要求等等。 閱讀的對象不同:業務需求文檔是用來與業務人員交流,功能規範文檔是開發人員開發的依據 使用的語言不同:業務需求文檔使用自然語言書寫,而功能規範文檔使用比較嚴謹的語言,如:uml書寫 對編寫人的要求不壹樣:業務需求編寫人員只需要對業務系統熟悉,系統規範由系統架構師完成 體現系統架構師價值的地方是編寫系統規範文檔和業務層設計, 系統規範文檔是下壹步界面設計,業務層設計和數據庫設計的依據,表示層,業務層,數據訪問層之間是相互聯系的,它們之間的關系應該在系統規範文檔中找到。3.架構設計階段架構設計階段的常見問題是將架構設計理解為技術架構設計,實際上架構設計分為技術架構設計和業務架構設計。技術架構壹般由系統軟件商提供,可以在不同的應用軟件系統中使用,例如:微軟的MFC, SUN的J2EE等。對於壹個應用軟件系統,更重要的是業務架構的設計,也就是將需求分析階段中得到的各種關系,根據系統的非功能需求將需求分析轉變為代碼。其實沒有業務架構的設計也是可以的,很多項目中直接將對象之間的各種關系以數據庫的方式實現,這樣的系統不是面向對象的,因此面向對象設計的很多好處不能體現。由於在架構設計階段中沒有進壹步細分,通常會導致不能準確估計任務量,造成項目計劃變成擺設。4.詳細設計階段詳細設計階段壹個重要的任務是系統持久化設計。對應用系統而言,持久化設計只是管理存儲的機制,有多種技術手段可以選擇:可以是面向對象數據庫管理系統,簡單的文件,或者是關系數據庫,也可以是使用ORM工具等。總之應該把它留到最後作為細節處理。我們不應該將我們的系統和任何特定的技術綁定在壹起。我們可以根據需求自由選擇需要的持久化技術,並且保留在將來需要時更改持久化技術的自由。5.編碼階段編碼階段還處於小農經濟,自給自足,沒有分工合作。編碼階段以use case為粒度安排工作,這樣的安排方式要求每壹個開發人員必須對表示層,業務層,數據接入層的所有技術都要有比較深入的了解,由於每個開發人員各自只對自己的use case負責,對別人的use case不了解,但是每壹個use case會有功能重復的地方,導致大量的重復工作。編碼階段工作安排的粒度應該是類,編碼階段工作的安排原則是先分層,再分割,按照表示層,業務層,數據訪問層分開後,每壹層內可以進壹步分為不同類,使用測試驅動的編程方法,每個編程人員單獨編寫代碼,並進行單元測試。每個層次的編程人員只需要對某壹種技術有比較深入的了解。6.測試階段很多人分不清什麽是單元測試,什麽是集成測試,什麽是系統測試?測試的順序是先單元測試,然後是集成測試,最後是系統測試。單元測試是源代碼級的測試,壹般由編程人員自己使用各種unit工具測試,是白盒測試。集成測試是在單元測試結束後,將壹個或若幹個單元作為壹個子系統的黑盒測試,測試子系統內的所有組件可以正確的交互,集成測試通過對子系統不斷增加新的單元最後完成整個系統的測試,集成測試不應由開發人員完成。7.結束軟件開發過程中,各種輔助工具以及process很重要,但是使用工具和process的最終目的是為了更高效的在開發人員之間溝通交流,記錄存在開發人員腦子裏的想法,不要為了process而process。不能以為會使用MS word,就認為可以成為作家。最後引用Robert Martin的《敏捷軟件開發:原則、模式與實踐》中的壹句話作為本文的結束:過渡信賴工具和過程以及低估智力和經驗都是軟件開發災難的源泉。註: 本文摘自網絡臺州極速網絡有限公司願以雄厚的技術實力基礎

  • 上一篇:顯示器電源燈閃爍不停,主機鍵盤燈都亮著,也能停到聲音。《專業進》
  • 下一篇:脖子掛件繩子編法教程
  • copyright 2024編程學習大全網