造成軟體複雜性的原因

2021-07-10 23:02:03 字數 957 閱讀 5009

1、問題域的複雜性,造成這種複雜性的主要原因,還是使用者與開發者之間的「溝通問題」,使用者常常對某個需求只存在

乙個模糊的概念,對具體要實現成乙個什麼樣子沒有特別明顯的想法。並且由於使用者與開發者思維的不一致,使用者很

難將他的意思很清晰的傳達給開發者。通常這種情況下,我們開發者也只能借助些工具,例如:axurerp圖形介面工

具,word文件配合插圖等方式,按照開發者的理解設計為原型系統,再同客戶進行多次的**。開發過程中,一定要

在系統的早期就盡可能的降低問題域,使系統逐漸明朗。開發後期,如果由於早期需求理解不透徹或者客戶需求發生

變化造成的問題,是乙個很麻煩的事情。

2、管理開發過程中的困難性,企業級應用開發都是以團隊的方式存在,通常團隊人員完成的功能也是按照模組化進

行劃分,或者按照層次進行劃分,每乙個人完成的塊都只是系統的乙個相對較小的部分,可以這樣說,沒有乙個人對

整個系統是完全了解的。團隊的配備上,理想中的情況是團隊內部成員相互了解,技術能力都很高超。團隊的人員越

少越好,因為更多的成員需要花費更多的時間來維護需求的一致性。人越多往往溝通越複雜,也更加能以協調,特別

是分居多地的這種更為困難。歸根到底,主要的管理挑戰還是**於如何去維護設計的一致性和完整性。

3、軟體隨處可能出現的靈活性,前面第2點中提到的團隊的情況,實際上該點也依賴於第2點來產生。在開發早期階

段,可能也制定了一系列的底層設計規則,但是由於開發者不是由乙個人構成,那麼對底層設計上又各有不同,出現

了靈活性的體現。但正是這種靈活性的體現,可能會導致後期的很多問題,比如:維護……。

4、描述離散系統行為的問題,首先,要知道什麼是「離散狀態」,就我分析,所謂的「離散狀態」就是說系統除了我們可

預知的問題以外,還有很多外部不可**的問題會導致系統的狀態變得不穩定。所有的外部事件都有可能會影響系統

內部狀態的任何部分。當然,這也是為什麼專案開發中一直強調多方面測試的原因。

軟體固有的複雜性

brooks曾指出 愛因斯坦認為自然界必定存在著簡單的解釋,因為上帝不是反覆無常或隨心所欲的。軟體工程師沒有這樣的信仰來提供安慰。許多必須控制的複雜性是隨心所欲的複雜性。定義軟體的複雜性。軟體確實有較為簡單的軟體,系統簡單,沒有什麼複雜的變化,甚至不需要系統的學習,你就可以寫出乙個和他一樣的軟體或比...

簡化根本複雜性,消除偶發複雜性

根本複雜性 essential complexity 指的是問題與生俱來的,無法避免的困難。比如,協調全國的空中交通就是乙個 天生的 複雜問題,必須實時跟蹤每架飛機的位置 包括飛行高度 航速 航向和目的地,才能預防空中和地面上的衝突。像天氣驟變這樣的情況會令航班計畫全盤失效,航班時刻表必須適應不斷變...

複雜性思考

複雜性思考 基本資訊 原書名 think complexity 原出版社 o reilly media 譯者 張龍 叢書名 o reilly精品圖書系列 出版社 機械工業出版社 isbn 9787111419990 出版日期 2013 年5月 開本 16開 頁碼 117 版次 1 1 所屬分類 計算...