摘要:每個軟件系統(tǒng)都提供兩個價值給利益相關(guān)者表現(xiàn)和結(jié)構(gòu)。來自利益相關(guān)者的觀點,開發(fā)者僅僅只提供了一些形態(tài)上的粗略改變,來自開發(fā)者的觀點,老板的需求越來越難。記住,作為一個開發(fā)者,你就是利益相關(guān)者,你需要維護(hù)的軟件里有你的利益。
每個軟件系統(tǒng)都提供兩個價值給利益相關(guān)者:表現(xiàn)和結(jié)構(gòu)。軟件開發(fā)者應(yīng)的確保這兩個價值盡量高負(fù)責(zé)。然而很不幸,程序員很多只關(guān)心其中一個而忽略另一個,甚至更不幸,他們可能關(guān)注的不是這兩個價值,留下沒有價值的系統(tǒng)
表現(xiàn)軟件的第一個價值是他的表現(xiàn),程序員被雇傭來幫利益相關(guān)者讓服務(wù)器來掙錢或省錢,實現(xiàn)這個的方式是依照功能規(guī)范或?qū)懶枨笪臋n,來寫代碼實現(xiàn)這些需求。當(dāng)程序出問題時,程序員修bug。很多程序員相信這就是他們工作的全部,他們就是為了實現(xiàn)功能和修bug而工作,但這是錯誤的。
架構(gòu)第二個價值必須和軟件這個詞一起處理--一個由soft和ware組成的復(fù)合詞。ware意味著產(chǎn)品,soft就是第二價值--”架構(gòu)“的所在的地方
軟件具有柔軟的特性,他打算用一種簡單的方法改變機器的行為。為了達(dá)到目的,軟件必須柔軟,能夠很輕松地改變,當(dāng)利益相關(guān)者想要改一個需求,改變就需要簡單并且可以輕松實現(xiàn),改需求的困難應(yīng)該僅僅是改變的范圍,不是改變的形態(tài)。
范圍和形態(tài)都能驅(qū)動軟件開發(fā)成本上升,但是兩者是不同的。這就是成本不隨需求改變的比例上升的原因,這也是開發(fā)一年比一年更便宜的原因。來自利益相關(guān)者的觀點,開發(fā)者僅僅只提供了一些形態(tài)上的粗略改變,來自開發(fā)者的觀點,老板的需求越來越難。
問題當(dāng)然是系統(tǒng)的架構(gòu),架構(gòu)不好,后面的需求將會越來越難適合現(xiàn)在的架構(gòu)
功能或架構(gòu),誰能提供更大的價值,誰在軟件開發(fā)中更重要,或者誰在添加需求中更能輕松修改系統(tǒng)。如果你問業(yè)務(wù)經(jīng)理,他們可能覺得功能更重要,輪流問開發(fā)者,很多人也贊同這觀點,但是這是錯誤的,我能用一個極端的邏輯工具測試他是錯的。
如果你給我一個能運行,但不可能改變的系統(tǒng),改需求就不能運行,這個系統(tǒng)將無用。
如果給我一個不能運行,但能夠輕松修改的系統(tǒng),我可以讓他適應(yīng)需求,然后運行起來。這個系統(tǒng)就有用了
你可能覺得這個例子不能讓人信服,畢竟沒有不能改變的項目,然而有些系統(tǒng)基本不可能改變,因為改變的成本超過了改變的好處。
為了實現(xiàn)架構(gòu)這一責(zé)任,我們需要加入戰(zhàn)斗,我也許該用奮斗這個詞。坦白地說,基本上都是這樣說的。開發(fā)團隊必須為能讓公司發(fā)展最好的東西而奮斗。管理團隊,市場團隊,銷售團隊,運維團隊也是如此。都要奮斗。
有效率的開發(fā)團隊迎面奮斗。記住,作為一個開發(fā)者,你就是利益相關(guān)者,你需要維護(hù)的軟件里有你的利益。這是你任務(wù)的一部分,責(zé)任的一部分,也是為什么你被雇傭的主要原因
如果你是架構(gòu)師,這個挑戰(zhàn)將會是雙倍難度。架構(gòu)的主要責(zé)任是系統(tǒng)的結(jié)構(gòu),,而不是開發(fā)功能,架構(gòu)師創(chuàng)造一個允許快速開發(fā),修改,擴展功能的架構(gòu)。
記住,如果架構(gòu)來晚了,系統(tǒng)將變得更難維護(hù),修改對于部分或者整個系統(tǒng)最終將變得不可能。如果上述情況發(fā)生,那說明軟件開發(fā)團隊沒有為必要的東西付出足夠的努力。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/12002.html
摘要:在代碼整潔之道,提出一種軟件質(zhì)量,可持續(xù)開發(fā)不僅在于項目架構(gòu)設(shè)計,還與代碼質(zhì)量密切相關(guān),代碼的整潔度和質(zhì)量成正比,一份整潔的代碼在質(zhì)量上是可靠的,為團隊開發(fā),后期維護(hù),重構(gòu)奠定了良好的基礎(chǔ)。 現(xiàn)在的軟件系統(tǒng)開發(fā)難度主要在于其復(fù)雜度和規(guī)模,客戶需求也不再像Winston Royce瀑布模型期望那樣在系統(tǒng)編碼前完成所有的設(shè)計滿足用戶軟件需求。在這個信息爆炸技術(shù)日新月異的時代,需求總是在不停...
摘要:對于專業(yè)的開發(fā)者來說,單元測試是一項必備的技能,多數(shù)的程序員卻不具備測試驅(qū)動開發(fā)的能力。對于工程來說,開源項目基本都嚴(yán)格遵守執(zhí)行單元測試,而很多商業(yè)的工程則在單元測試方面有所缺失。一個擁有單元測試的項目會變得更加容易維護(hù)和更改。 作為一名合格的Java程序員,日常工作除了上班擼代碼就是加班擼代碼。擼碼其實不難,無非詢問Google,StackOverflow,解決方法和demo一籮...
摘要:但大多數(shù)情況下應(yīng)該盡量利用一些機制將二元函數(shù)轉(zhuǎn)換成一元函數(shù)。應(yīng)該為起一個更能描述函數(shù)功能的函數(shù)名副作用在于對這個調(diào)用函數(shù),顧名思義,就是用來檢查密碼。注釋及其描述的代碼之間的聯(lián)系應(yīng)該顯而易見。受控異常的代價就是違反開放閉合原則。 大師級的程序員把系統(tǒng)當(dāng)作故事來講,而不是當(dāng)作程序來寫。 showImg(https://ws3.sinaimg.cn/large/006tKfTcgy1fs0...
閱讀 2507·2021-11-22 12:05
閱讀 3425·2021-10-14 09:42
閱讀 1656·2021-07-28 00:15
閱讀 1971·2019-08-30 11:08
閱讀 1426·2019-08-29 17:31
閱讀 902·2019-08-29 16:42
閱讀 2283·2019-08-26 11:55
閱讀 2091·2019-08-26 11:49