日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

文档知多少---走出软件作坊:三五个人十来条枪 如何成为开发正规军(二十五)[转]...

發(fā)布時(shí)間:2025/7/14 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文档知多少---走出软件作坊:三五个人十来条枪 如何成为开发正规军(二十五)[转]... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

去年,我們要讓軟件開發(fā)團(tuán)隊(duì)管理上臺(tái)階。

我們由于處于企業(yè)管理軟件開發(fā)領(lǐng)域,而對(duì)日外包大部分接的單子都是管理軟件之類的單子,但是人家的項(xiàng)目管理、進(jìn)度、質(zhì)量都比我們好,如果他們?cè)倥浜瞎芾碜稍児咀鳛楹献骰锇?#xff0c;再加上大規(guī)模的服務(wù)呼叫中心,像我們之類豈有出路?

于是我們就想到了引入對(duì)日外包的開發(fā)過程管理。

大家一想起對(duì)日外包,就想到了大量的文檔和大量的代碼工人,想到了詳細(xì)設(shè)計(jì)說明書甚至到函數(shù)級(jí)、偽代碼級(jí)。

要不要引入的時(shí)候,我們內(nèi)部也做了爭論。覺得對(duì)日外包,人家接的單子額比國內(nèi)客戶大,所以也能招聘大規(guī)模的員工,而且對(duì)日外包,日本人是很理性的看待項(xiàng)目周期的(國內(nèi)客戶要求一個(gè)月開發(fā)完上線),而且日本人都做了半年到一年的調(diào)研和設(shè)計(jì)分析(國內(nèi)調(diào)研幾乎只是一個(gè)上午,坐在一起瞎聊,根本不成方法)。所以對(duì)日外包不適合咱們。咱們沒有錢招聘一定數(shù)量的人(即使我們只需要普通員工,而不是人才,我們也沒多余的錢),當(dāng)然我們也無法分離那么多專職的項(xiàng)目管理、開發(fā)、測(cè)試、文檔、配置管理崗位。我們的客戶對(duì)于軟件的認(rèn)知決定了我們無法在調(diào)研、設(shè)計(jì)上下太多功夫(單子額就那么大,客戶認(rèn)為軟件就值那么多錢,當(dāng)然無須對(duì)軟件生產(chǎn)各個(gè)環(huán)節(jié)進(jìn)行重視)。

不過,我還是堅(jiān)持進(jìn)行引入。是騾子是馬,咱們拉出來遛遛。還沒遛,就說不行。這不是小時(shí)候的小馬過河了么?

引了進(jìn)來,合作伙伴給我們派了一位質(zhì)量控制部的人員。

一入手,發(fā)現(xiàn)有個(gè)很關(guān)鍵的問題,方法的源頭。

因?yàn)閷?duì)日外包,都是接單生產(chǎn),主要是編碼、測(cè)試,保證生產(chǎn)進(jìn)度和質(zhì)量要求。但編碼之前的所有環(huán)節(jié),對(duì)日外包公司并不清楚。他們只知道拿人家給的設(shè)計(jì)書開始coding,設(shè)計(jì)書怎么來的,前面環(huán)節(jié)產(chǎn)生過哪些文檔,不清楚。

幸虧我們過去有系統(tǒng)的調(diào)研方法,從調(diào)研描述現(xiàn)狀、然后分析優(yōu)化的組織結(jié)構(gòu)、工作流程、考核報(bào)表、崗位職責(zé)四大塊來描述需求。客戶優(yōu)化后的流程、工具中包含手工紙張信息、EXCEL信息、軟件信息。

把這些轉(zhuǎn)變?yōu)檐浖械墓δ?、?quán)限、報(bào)表也一氣呵成。組織結(jié)構(gòu)和崗位職責(zé)決定了功能點(diǎn)和功能權(quán)限、工作流程決定了軟件流程、工作流程中使用的紙張信息、EXCEL信息、軟件信息就是數(shù)據(jù)輸入,報(bào)表就是數(shù)據(jù)輸出。這就是一個(gè)企業(yè)管理軟件的四大塊:組織權(quán)限、輸入、處理流程、輸出。

所以說,企業(yè)管理軟件的開發(fā)是有方法和規(guī)律的,比較容易,就連最難的調(diào)研和需求管理也有方法。所以企業(yè)管理軟件的開發(fā),現(xiàn)在主要集中在大規(guī)模開發(fā)團(tuán)隊(duì)的組織、任務(wù)調(diào)度、人員培訓(xùn)(大規(guī)模的開發(fā),必然需要的是一般素質(zhì)的人員,而非高級(jí)人才,否則不可能有那么多資金來實(shí)現(xiàn)大規(guī)模開發(fā))、大規(guī)模開發(fā)團(tuán)隊(duì)的質(zhì)量和進(jìn)度(人多了,各個(gè)層次各個(gè)水平的人都有,理解都不同,如何保證質(zhì)量和進(jìn)度是很關(guān)鍵的,否則很容易項(xiàng)目預(yù)算失控。一般素質(zhì)的人多了,對(duì)于管理的要求是很高的,很容易成為烏合之眾,只消耗不產(chǎn)出)。我特羨慕KFC,不管我們?cè)诖蠼媳蹦睦?#xff0c;遲到的KFC是一樣的口味和品質(zhì),享受的服務(wù)和環(huán)境也差不多,這很難。那么多店,而且都是授權(quán)店而非自主經(jīng)營店,那么多一般員工,而且員工流失和臨時(shí)員工也非常多,居然能保證一樣,管理水平實(shí)在了得。所以我經(jīng)常學(xué)習(xí)KFC和豐田,如何使一般員工大規(guī)模配合工作。

對(duì)于企業(yè)管理軟件開發(fā)過程中的文檔,我們一般有需求分析說明書,其編寫格式和思路,和我們的需求調(diào)研方法一致,也就是說,我們的需求調(diào)研的結(jié)果,落實(shí)到紙面,就有需求分析說明書,另外還有一份需求調(diào)研報(bào)告,是偏向于項(xiàng)目過程敘述的。

需求分析說明書回來,研發(fā)部內(nèi)部會(huì)進(jìn)行大家一起學(xué)習(xí)理解,然后討論。

討論主要由:需求調(diào)研人、業(yè)務(wù)組組長、測(cè)試組組長來參加。一個(gè)個(gè)的過流程。因?yàn)樵谛枨笳{(diào)研期間,去的只是調(diào)研人,可能有想不全的地方。如果這樣就直接進(jìn)行開發(fā),無疑會(huì)有很多漏洞。這樣給開發(fā)、測(cè)試,都帶來了返工修改,給項(xiàng)目管理也帶來了項(xiàng)目進(jìn)度、任務(wù)分配的調(diào)整,計(jì)劃的打亂也間接影響了質(zhì)量管理。

根據(jù)大家討論補(bǔ)充后的需求分析說明書,就比較容易得到我們下面環(huán)節(jié)的文檔。

首先我們會(huì)出功能點(diǎn)文檔。

我們會(huì)把需求分析說明書中的業(yè)務(wù)功能都列出來清單,屬于組織結(jié)構(gòu)建立、組織角色、權(quán)限分配、登陸驗(yàn)證、基礎(chǔ)數(shù)據(jù)維護(hù)之類的都?xì)w類到系統(tǒng)功能中。系統(tǒng)管理,各個(gè)企業(yè)管理軟件差不多,我們又有公共的系統(tǒng)管理模塊,就不需要重新發(fā)明輪子了。所以,我們主要重點(diǎn)是分析業(yè)務(wù)功能。

根據(jù)需求分析說明書中的每個(gè)流程,都先提出來成為一個(gè)功能點(diǎn)。然后針對(duì)現(xiàn)在整理出來的功能點(diǎn),再一個(gè)個(gè)對(duì)照流程,如果這個(gè)流程復(fù)雜,就拆分,把這個(gè)功能點(diǎn)拆成幾個(gè)復(fù)雜性和預(yù)估工作量差不多的功能點(diǎn)。經(jīng)過這樣的拆分,就形成了最終的功能點(diǎn)文檔。

而功能點(diǎn)之間,根據(jù)上述方法的拆分,就形成了功能群。

功能點(diǎn)就成為功能權(quán)限控制的最小單位。功能群就成了軟件菜單中的一項(xiàng)。幾個(gè)相關(guān)聯(lián)的功能群就成為了一個(gè)業(yè)務(wù)子系統(tǒng)。

就這樣的方法,使子系統(tǒng)-功能菜單-功能點(diǎn)(可能是某個(gè)功能窗口上的功能按鈕)三級(jí)分開,與組織結(jié)構(gòu)-員工-角色-用戶-權(quán)限結(jié)合。一個(gè)軟件,未來會(huì)成為什么樣子,大框架就出來了。

做功能點(diǎn)清單,就類似于跑馬圈地,這個(gè)項(xiàng)目到底多大,我先把項(xiàng)目邊界框起來,而不要讓這個(gè)項(xiàng)目無邊無界,那自然也不會(huì)有可落實(shí)的項(xiàng)目進(jìn)度和項(xiàng)目管理。知道了項(xiàng)目最大做到多大,就能決定是虧是賺,是做還是不做,能不能做了,有可用的時(shí)間和人力來做否。

然后,我們會(huì)根據(jù)功能點(diǎn)清單,為每一個(gè)功能進(jìn)行優(yōu)先級(jí)的標(biāo)示。我們通常會(huì)把優(yōu)先級(jí)分為三級(jí)。這就意味著一個(gè)項(xiàng)目,大致分為三個(gè)階段。一級(jí)是必須要做的,即使延期也要做,必須調(diào)度多加人手多加班也要完成。一級(jí)做完后,如果有時(shí)間,就把二級(jí)完成。如果時(shí)間超期,有適度的盡量去完成二級(jí),可以延期,但也要根據(jù)預(yù)算和時(shí)間。如果適當(dāng)延期也無法完成,我們會(huì)給客戶去上線實(shí)施,變實(shí)施邊并行開發(fā),使實(shí)施團(tuán)隊(duì)和開發(fā)團(tuán)隊(duì)進(jìn)行并行工作。所以,二級(jí)也是重要的功能。三級(jí)就是如果時(shí)間用完,三級(jí)的功能就要舍棄掉不開發(fā)。

一般是,按功能的重要性來劃分優(yōu)先級(jí),我們?cè)谥耙呀?jīng)講過,我們調(diào)研需求的時(shí)候,就把常用業(yè)務(wù)和異常業(yè)務(wù)分開,把每天做的業(yè)務(wù),和每周、每月、每季、每年做的業(yè)務(wù)分開。幾個(gè)結(jié)合特別緊密的,互相關(guān)聯(lián)的,我們也會(huì)把他們劃分在同一個(gè)優(yōu)先級(jí),需要單獨(dú)開發(fā)的基礎(chǔ)數(shù)據(jù)維護(hù)界面,我們也會(huì)放在同一個(gè)優(yōu)先級(jí)。這樣,只要我們項(xiàng)目到期,或者我們迫于競(jìng)爭突變,我們會(huì)隨時(shí)推出一個(gè)可以完整使用的系統(tǒng)。雖然這個(gè)系統(tǒng)可能功能簡陋,但可以完整處理整個(gè)常用業(yè)務(wù)流程,而不會(huì)造成中斷,無法處理下去。

很多開發(fā)團(tuán)隊(duì),開發(fā)的方法是先字典功能,然后是業(yè)務(wù)功能,然后是報(bào)表。這種開發(fā)方法就導(dǎo)致了很多業(yè)務(wù)系統(tǒng),客戶上線使用了,光輸入數(shù)據(jù),沒有輸出,業(yè)務(wù)系統(tǒng)成了一個(gè)悶葫蘆,用戶得不到使用價(jià)值,可能只是減輕了工作量,加快了工作效率,提高了部門間的自動(dòng)配合。更有甚者,業(yè)務(wù)功能開發(fā)了一半,到處都是斷路,走不下去,無法成為一個(gè)完整的系統(tǒng),就是個(gè)半成品,上不上下不下,無法適應(yīng)競(jìng)爭變化。

我們開始針對(duì)功能點(diǎn)清單編寫我們的功能設(shè)計(jì)說明書。

我們是按照優(yōu)先級(jí)來編寫功能設(shè)計(jì)說明書的。我們并不會(huì)把功能設(shè)計(jì)說明書都編寫完畢后才開始編碼。而是,我們先把優(yōu)先級(jí)為一的詳細(xì)功能設(shè)計(jì)編寫出來,就開始開發(fā)。二級(jí)的功能編寫會(huì)在開發(fā)人員進(jìn)行一級(jí)功能編碼的時(shí)候并行。

功能詳細(xì)設(shè)計(jì)說明書由業(yè)務(wù)開發(fā)組的組長來編寫,屬于系統(tǒng)類功能或公共類的功能,都?xì)w給公共代碼人員來編寫,需要復(fù)雜的算法,高性能,高安全,高數(shù)據(jù)量,需求一直未確定最終解決方案的未來未知變化的接口,也都由公共代碼人員來編寫。所以,一個(gè)開發(fā)團(tuán)隊(duì),有高技術(shù)的公共代碼人員,有深刻理解業(yè)務(wù)的業(yè)務(wù)開發(fā)組組長,有普通的coding人員。業(yè)務(wù)開發(fā)組的組長一般由熟悉客戶業(yè)務(wù),編碼經(jīng)驗(yàn)較多但技術(shù)能力一般、踏實(shí)細(xì)心負(fù)責(zé)適合團(tuán)隊(duì)管理的人擔(dān)任。

功能設(shè)計(jì)說明書,根據(jù)每個(gè)功能點(diǎn)詳細(xì)展開描述。一般一個(gè)功能點(diǎn)由一個(gè)EXCEL文檔來詳細(xì)描述。

EXCEL文檔第一個(gè)sheet中是版本信息,每次修改都有變更記錄。第二個(gè)sheet是頁面布局。我們通常會(huì)用PPT或開發(fā)工具建立個(gè)界面草圖,然后貼上去。第三個(gè)sheet是頁面上面的每個(gè)字段的說明,如默認(rèn)值、不可為空、輸入約束、主鍵唯一、輸入長度、參照錄入等等。第四個(gè)sheet,如果有必要,可以用VISIO畫出業(yè)務(wù)流程圖。第五個(gè)sheet是關(guān)于運(yùn)行要求,如易用性、安全性、性能、數(shù)據(jù)量、并發(fā)性,這幾個(gè)特性都分為高中低三個(gè)等級(jí)。另外,對(duì)運(yùn)行的操作系統(tǒng)、內(nèi)存都做了最低要求。一個(gè)功能,必須考慮它的用戶的計(jì)算機(jī)水平,否則功能很實(shí)用,但就操作不習(xí)慣,客戶非要改成客戶習(xí)慣的方法,我們經(jīng)常會(huì)面臨這樣的要求。與其那樣讓客戶趕著我們,還不如我們自己提前在設(shè)計(jì)的時(shí)候就要求我們自己。我們?cè)谛枨笳{(diào)研的階段會(huì)調(diào)研客戶的信息化現(xiàn)狀,如IT維護(hù)人員能力,信息化應(yīng)用能力,客戶老板對(duì)信息化認(rèn)知理解,最終用戶信息化操作能力。

我經(jīng)??匆姴簧倏蛻魶]有IT維護(hù)人員,不知道有服務(wù)器這一說法,更不知道什么是SQLSERVER,也不知道備份。對(duì)于信息化的理解就是上套軟件,裝個(gè)XP還不知道WINDOWS要升級(jí)(很多上網(wǎng)的機(jī)器連XP SP2都不裝,什么防火墻放木馬的都沒有),就知道裝個(gè)瑞星殺毒,天天抱怨機(jī)器超慢。一看機(jī)器,也確實(shí)是老了,2002年的機(jī)器,128M內(nèi)存。而且操作者打字和鼠標(biāo)都不靈光,讓他雙擊或鼠標(biāo)右鍵,他根本不理解。跟他電話里說打開某個(gè)功能菜單,他很莫名其妙電腦中怎么會(huì)有菜單?如果你的軟件是基于.net的,他連.net 運(yùn)行時(shí)都不知道到哪里去下載。所以我們的軟件需要在什么硬件上什么基礎(chǔ)軟件上運(yùn)行,數(shù)據(jù)量多大仍然可以運(yùn)行流暢,我們的軟件要達(dá)到的易用操作程度,要達(dá)到的易用維護(hù)程度等等,我們必須在設(shè)計(jì)期考慮到。

很多做軟件開發(fā)的,尤其不注重這方面,所以我在這里重點(diǎn)強(qiáng)調(diào)啰嗦一下。大家不要恥笑用戶,大家的工資都是他們給咱們的,而不是老板。用戶不是計(jì)算機(jī)高手,他們不懂雙擊、滾動(dòng)、鼠標(biāo)右鍵很正常。我們的衣食父母,我們要好好對(duì)待。我們不要和我們的錢作對(duì)。

EXCEL功能設(shè)計(jì)文檔到此,其實(shí)還缺一塊。就是數(shù)據(jù)操作流程。

我們先不編寫數(shù)據(jù)操作流程。我們會(huì)先交給測(cè)試組的人員來校驗(yàn)這個(gè)功能點(diǎn)的詳細(xì)設(shè)計(jì),是否和需求流程和需求要求吻合,不符合的地方就整改。

整改后的功能設(shè)計(jì)文檔,算是和需求說明文檔一致,設(shè)計(jì)正確。這時(shí)候才涉及到具體的實(shí)現(xiàn)說明。

我們會(huì)讓公共代碼人員出界面輸入輸出和業(yè)務(wù)流程圖中整理出數(shù)據(jù)結(jié)構(gòu)。我們?yōu)槭裁床蛔寴I(yè)務(wù)開發(fā)組的組長來整理表結(jié)構(gòu),就是由于業(yè)務(wù)開發(fā)組的組長熟知業(yè)務(wù)卻對(duì)技術(shù)并不精通。數(shù)據(jù)結(jié)構(gòu)很影響未來的性能、擴(kuò)展,所以應(yīng)該由公共代碼人員來設(shè)計(jì)表結(jié)構(gòu),并且建立視圖和存儲(chǔ)過程。

公共代碼人員為了考慮性能和擴(kuò)展,表結(jié)構(gòu)的設(shè)計(jì)可能就被打散成多個(gè)表,而不是業(yè)務(wù)開發(fā)組長自然理解的存儲(chǔ)結(jié)構(gòu)。所以公共代碼人員建立了視圖,保證在視圖的層面上讓業(yè)務(wù)代碼開發(fā)組的人看到的是一個(gè)自然的業(yè)務(wù)實(shí)體數(shù)據(jù)結(jié)構(gòu),根本無須理解內(nèi)部的表結(jié)構(gòu)之間的關(guān)聯(lián)關(guān)系。而且有存儲(chǔ)過程來保證如何無須知道表之間的關(guān)聯(lián)關(guān)系就可以增刪改數(shù)據(jù)。

從這種分工配合來看,我們采取的是從后到前的開發(fā)方法。先有數(shù)據(jù)層,有基礎(chǔ)表結(jié)構(gòu)、視圖、存儲(chǔ)過程,然后基于視圖和存儲(chǔ)過程進(jìn)行業(yè)務(wù)流程代碼開發(fā),最終由普通的業(yè)務(wù)開發(fā)人員進(jìn)行界面拖控件繪制界面。所以業(yè)務(wù)開發(fā)人員既不熟悉業(yè)務(wù),也不熟悉技術(shù)。

公共代碼人員把設(shè)計(jì)完畢的數(shù)據(jù)結(jié)構(gòu)交給業(yè)務(wù)開發(fā)組組長,組長來編寫每個(gè)功能的數(shù)據(jù)增刪改查操作文檔。增加這部分文檔到EXCEL中,成為第六個(gè)sheet。

我沒有研究過測(cè)試驅(qū)動(dòng)。我一直提倡的是全程測(cè)試,從需求到設(shè)計(jì)到代碼到文檔到打包,都要經(jīng)過測(cè)試。只有每個(gè)環(huán)節(jié)都能保證正確,結(jié)果才會(huì)正確。如果到了代碼編寫完后才發(fā)現(xiàn)了不對(duì),甚至是需求一開始就理解的不對(duì)或有矛盾流程,這就糟糕了。許多人喊需求總變,項(xiàng)目進(jìn)度無法保證,不僅僅是沒有配備需求調(diào)研人、業(yè)務(wù)開發(fā)組組長、測(cè)試人,更是研發(fā)流程方法上有問題,沒有采取全程測(cè)試。

文檔編寫完畢一個(gè)整塊(不是全部的一級(jí)功能編寫完畢后),我們就會(huì)交付給業(yè)務(wù)開發(fā)組去開發(fā)。具體開發(fā)人員任務(wù)安排,由業(yè)務(wù)開發(fā)組組長來決定。需要由公共開發(fā)人員來開發(fā)的,業(yè)務(wù)開發(fā)組組長都會(huì)根據(jù)自己的開發(fā)計(jì)劃和公共開發(fā)人員的任務(wù)列表(我們用需求管理系統(tǒng)來安排每個(gè)人的開發(fā)任務(wù)),告知公共開發(fā)人員預(yù)期的實(shí)現(xiàn)完畢時(shí)間。

這樣,公共開發(fā)和業(yè)務(wù)開發(fā)在并行,設(shè)計(jì)編寫和功能開發(fā)在并行,設(shè)計(jì)和設(shè)計(jì)測(cè)試在并行,代碼和代碼測(cè)試在并行(我們采取的是版本管理和每日構(gòu)建)。這樣的情形就跟流水線工作一樣,頗有點(diǎn)像豐田的流水線生產(chǎn),一旦發(fā)現(xiàn)某個(gè)環(huán)節(jié)出現(xiàn)問題,理解集中人力來解決,而不會(huì)讓這個(gè)問題的這個(gè)人延期鉆牛角尖,否則,所有的項(xiàng)目進(jìn)度管理都成了一句空話。沒有了實(shí)質(zhì)的進(jìn)度,也就沒有了實(shí)質(zhì)的項(xiàng)目預(yù)算管理。那到底能不能賺錢,真成了一個(gè)鬼才知道的問題。

很多朋友在開發(fā)當(dāng)中沒有寫過文檔,一旦有想法要正規(guī)化研發(fā)管理,就動(dòng)輒要求全程文檔,這文檔,那文檔,把開發(fā)人員累的,最后產(chǎn)品質(zhì)量和產(chǎn)品進(jìn)度都沒有保證。一看試驗(yàn)失敗,就全盤否定編寫文檔,再回歸到一無所有的狀況。真是走兩個(gè)極端。

希望這篇文章能夠給大家以平和的心態(tài)看待編寫文檔。我們并不是為了正規(guī)才編寫文檔,我們寫的每一個(gè)文檔都有作用。我們也在力求能少寫就少寫,根據(jù)團(tuán)隊(duì)的、客戶的磨合理解共識(shí)程度,哪個(gè)文檔或哪個(gè)環(huán)節(jié)不需要寫,我們就砍掉。

我們并不在乎正規(guī)不正規(guī),我們也并不在乎我們看上去很美,那沒有用。我們只是商業(yè)開發(fā),我們要的是可控,在有限的人力資源、合同額、合同周期內(nèi)交付出客戶認(rèn)可的質(zhì)量產(chǎn)品(不是高質(zhì)量,是客戶能接受的質(zhì)量,我們從來不為沒有利益回報(bào)的東西多付出)。

轉(zhuǎn)載于:https://www.cnblogs.com/dotnet010/archive/2008/08/21/1272997.html

總結(jié)

以上是生活随笔為你收集整理的文档知多少---走出软件作坊:三五个人十来条枪 如何成为开发正规军(二十五)[转]...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。