決,而并非一擁而上。由一個(gè)人來進(jìn)行問題的分解,其他人給予他所需要的支持,以提高效率和生產(chǎn)力。
2.1協(xié)作成本
需要協(xié)作溝通的人員的數(shù)量影響著開發(fā)成本,因?yàn)槌杀镜闹饕M成部分是相互的溝通和交流,以及更正溝通不當(dāng)所引起的不良結(jié)果。所以并不是人越多越好,系統(tǒng)應(yīng)該由盡可能少的人員來開發(fā)。
2.2成員差異
程序員最好的和最差的表現(xiàn)在生產(chǎn)率上平均為10:1;在運(yùn)行速度和空間上具有5:1的驚人差異。
2.3團(tuán)隊(duì)組織關(guān)系
一個(gè)項(xiàng)目中的兩種角色安排的三種可能的關(guān)系,他們是:
1)產(chǎn)品負(fù)責(zé)人和技術(shù)主管是同一個(gè)人。這種方式非常容易應(yīng)用在很小型的隊(duì)伍中,可能是三個(gè)或六個(gè)開發(fā)人員。在大型的項(xiàng)目中則不容易得到應(yīng)用。原因有兩個(gè):
第一,同時(shí)具有管理技能和技術(shù)技能的人很難找到。思考者很少,實(shí)干家更少,思考者-實(shí)干家太少了。
第二,大型項(xiàng)目中,每個(gè)角色都必須全職工作,甚至還要加班。對(duì)負(fù)責(zé)人來說,很難在承擔(dān)全部管理責(zé)任的同時(shí),還能抽出時(shí)間進(jìn)行技術(shù)工作。對(duì)技術(shù)主管來說,很難在保證設(shè)計(jì)的概念完整性,沒有任何妥協(xié)的前提下,擔(dān)任管理工作。
2)產(chǎn)品負(fù)責(zé)人作為總指揮,技術(shù)主管充當(dāng)其左右手。這種方法有一些困難。很難在技術(shù)主管不參與任何管理工作的同時(shí),建立在技術(shù)決策上的權(quán)威。顯然,產(chǎn)品負(fù)責(zé)人必須預(yù)先聲明技術(shù)主管的技術(shù)權(quán)威,在即將出現(xiàn)的絕大部分測(cè)試用例中,他必須支持后者的技術(shù)決定。要達(dá)到這一點(diǎn),產(chǎn)品責(zé)任人和技術(shù)主管必須在基本的技術(shù)理論上具有相似觀點(diǎn);他們必須在主要的技術(shù)問題出現(xiàn)之前,私下討論它們;產(chǎn)品責(zé)任人必須對(duì)技術(shù)主管的技術(shù)才能表現(xiàn)出尊重。
3)技術(shù)主管作為總指揮,產(chǎn)品負(fù)責(zé)人充當(dāng)其左右手。這種組合可以使工作很有效。不幸的是它很少被應(yīng)用。不過,它至少有一個(gè)好處,即項(xiàng)目經(jīng)理可以使用并不很擅長(zhǎng)管理的技術(shù)天才來完成工作。
2.4團(tuán)隊(duì)組成
在一個(gè)大型項(xiàng)目中,軟件項(xiàng)目經(jīng)理必須為成員良好的分工,組成有層次的結(jié)構(gòu)。
1)系統(tǒng)結(jié)構(gòu)師,從上至下地進(jìn)行所有的設(shè)計(jì)。要使工作易于管理,必須清晰地劃分體系結(jié)構(gòu)設(shè)計(jì)和實(shí)現(xiàn)之間的界線,系統(tǒng)結(jié)構(gòu)師必須一絲不茍地專注于體系結(jié)構(gòu)。
2)首席程序員。他親自定義功能和性能技術(shù)說明書,設(shè)計(jì)程序,編制源代碼,測(cè)試以及書寫技術(shù)文檔。
3)程序職員。他負(fù)責(zé)維護(hù)編程產(chǎn)品庫中所有團(tuán)隊(duì)的技術(shù)記錄。
4)編輯、秘書。首席程序員負(fù)責(zé)產(chǎn)生文檔。而編輯進(jìn)行分析和重新組織,提供各種參考信息和書目,對(duì)文檔多個(gè)版本進(jìn)行維護(hù)以及監(jiān)督文檔生成的機(jī)制。
5)工具維護(hù)人員。測(cè)試人員。
3.團(tuán)隊(duì)交流
3.1手冊(cè)、或者書面規(guī)格說明
手冊(cè)是產(chǎn)品的外部規(guī)格說明,它描述和規(guī)定了用戶所見的每一個(gè)細(xì)節(jié);同樣的,它也是結(jié)構(gòu)師主要的工作產(chǎn)物。隨著用戶和實(shí)現(xiàn)人員反饋的增加,規(guī)格說明中難以使用和難以構(gòu)建實(shí)現(xiàn)的地方不斷被指出,規(guī)格說明也不斷地被重復(fù)準(zhǔn)備和修改。然而對(duì)實(shí)現(xiàn)人員而言,修改的階段化是很重要的——在進(jìn)度表上應(yīng)該有帶日期的版本信息。
手冊(cè)不但要描述包括所有界面在內(nèi)的用戶可見的一切,它同時(shí)還要避免描述用戶看不見的事物。后者是編程實(shí)現(xiàn)人員的工作范疇,而實(shí)現(xiàn)人員的設(shè)計(jì)和創(chuàng)造是不應(yīng)該被限制的。體系結(jié)構(gòu)設(shè)計(jì)人員必須為自己描述的任何特性準(zhǔn)備一種實(shí)現(xiàn)方法,但是他不應(yīng)該試圖支配具體的實(shí)現(xiàn)過程。規(guī)格說明的風(fēng)格必須清晰、完整和準(zhǔn)確。用戶常常會(huì)單獨(dú)提到某個(gè)定義