軟件設計——約束

作爲軟件開發者 我們設計的每一個軟件都存在於現實生活中,所以一定會存在約束條件的 約束可以驅動 塑造和影響軟件系統的架構 你工作的組織和環境都會給你強加一些約束 影響你的架構

1.時間和預算的約束

也就是時間和金錢 這兩者我們都很熟悉 而且通常不夠。。。

2.技術約束

通俗來說 也就是 你所能達到的技術 你肯定不可以接收一個你的技術達不到的項目 或者說某個功能你的技術達不到 你也不可能硬去實現 或者說你的團隊已經規定了所要使用的技術 列出了技術清單 你便不可以在不申請的情況下使用其他的技術來實現功能
下面是一些常見的技術約束 :

1.批准的技術清單
許多大型組織在開發之前 都會列出一個可以使用的技術清單 如果你需要使用清單上沒有的技術 就需要申請

2.現有系統的互操作性
會規定在整合已有系統的時候可以使用的協議和技術

3.目標部署平臺
構建一個全新的系統是 目標部署平臺是影響技術決策的主要因素之一
舉個例子 每個平臺提供的都不同 對於某些東西 比如本地磁盤操作 你的軟件能做什麼 不能做什麼 能做的次數 每個平臺都不同 所以這是一個技術約束

4.技術成熟度
有些組織喜歡採用有風險的尖端技術 而有些組織則比較保守

5.開放源代碼
有些組織不喜歡用開源項目 而有些組織喜歡 這就產生了 可不可以使用開源項目 或者 開放源代碼的技術約束

6.供應商關係
有些合作是在一些複雜的關係中產生的 所以有時候不得不被迫使用一些技術
比如一個老總請 你的負責人 喝酒 喝醉了 然後就達成了合作 讓你們團隊 使用這個老總的技術 這就長生了技術約束。。。

7.過去的失敗
如果一個公司 以前使用過一個東西 而且失敗了 那麼他可能會不使用這個技術 這也產生了技術約束

8.內部知識產權
你的組織內部 已經有關於某項技術的知識產權 即使有更合適的技術 可能規定你只能使用這一技術。。。

3.人員約束

更常見的是,開發軟件可用的技術和方法 受限於你的人員,比如
你的開發團隊有多大 ?
他們有什麼技能?
如果你的開發團隊需要擴展,能有多快 ?
如果在交付之後,接手你的團隊擁有和你的團隊相同的技能嗎?

4.組織約束

組織政治有時會阻止你實現真正想要的解決方案

約束並不一定都是不好的,一方面約束雖然能降低生產力,但是一定程度上,它也剔除了大量的潛在危險。
另外一點要記住,約束是可以劃分優先級的,就是說有些優先級較高的約束需要嚴格遵守,但有時 爲了保證優先級高的約束的成立也可以在協商成功的情況下放棄一些優先級低的約束
比如說 一個軟件主要約束是 一些技術清單和時間約束 那我們在與對方交流的時候 如果時間約束重要的多 我們可以在確保規定時間內完成的情況下 使用一些技術清單上 沒有的技術(當然是在對方同意的情況下) 約束有時候也需要相互權衡

作爲一個架構師,找出並瞭解爲什麼會有這些約束是你的責任,它們可以幫助你架構你的軟件,做不好這些事情,無視一些約束,搞不好會出大事。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章