<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Dev@Free

    zJun's Tech Weblog

    [轉(zhuǎn)]如何用正確的方法來寫出質(zhì)量好的軟件的75條體會

    剛剛看到的一篇好文,深有感觸,收獲良多,轉(zhuǎn)貼如下: 來自這里。


    1.?你們的項目組使用源代碼管理工具了么?
    應該用。VSS、CVS、PVCS、ClearCase、CCC/Harvest、FireFly都可以。我的選擇是VSS。

    ?2.?你們的項目組使用缺陷管理系統(tǒng)了么?
    應該用。ClearQuest太復雜,我的推薦是BugZilla。?

    3.?你們的測試組還在用Word寫測試用例么?
    不要用Word寫測試用例(Test?Case)。應該用一個專門的系統(tǒng),可以是Test?Manager,也可以是自己開發(fā)一個ASP.NET的小網(wǎng)站。主要目的是Track和Browse。?

    4.?你們的項目組有沒有建立一個門戶網(wǎng)站?
    要有一個門戶網(wǎng)站,用來放Contact?Info、Baselined?Schedule、News等等。推薦 Sharepoint?Portal?Server?2003來實現(xiàn),15分鐘就搞定。買不起SPS?2003 可以用WSS?(Windows?Sharepoint?Service)。?

    5.?你們的項目組用了你能買到最好的工具么?
    應該用盡量好的工具來工作。比如,應該用VS.NET而不是Notepad來寫C#。用Notepad寫程序多半只是一種炫耀。但也要考慮到經(jīng)費,所以說是“你能買到最好的”。?

    6.?你們的程序員工作在安靜的環(huán)境里么?
    需要安靜環(huán)境。這點極端重要,而且要保證每個人的空間大于一定面積。?

    7.?你們的員工每個人都有一部電話么?
    需要每人一部電話。而且電話最好是帶留言功能的。當然,上這么一套帶留言電話系統(tǒng)開銷不小。不過至少每人一部電話要有,千萬別搞得經(jīng)常有人站起來喊:“某某某電話”?!度思防锩婢蛷娏易l責這種做法。?

    8.?你們每個人都知道出了問題應該找誰么?
    應該知道。任何一個Feature至少都應該有一個Owner,當然,Owner可以繼續(xù)Dispatch給其他人。

    ?9.?你遇到過有人說“我以為…”么?
    要消滅“我以為”。Never?assume?anything。?

    10.?你們的項目組中所有的人都坐在一起么?
    需要。我反對Virtual?Team,也反對Dev在美國、Test在中國這種開發(fā)方式。能坐在一起就最好坐在一起,好處多得不得了。?

    11.?你們的進度表是否反映最新開發(fā)進展情況??
    應該反映。但是,應該用Baseline的方法來管理進度表:維護一份穩(wěn)定的Schedule,再維護一份最新更改。Baseline的方法也應該用于其它的Spec。Baseline是變更管理里面的一個重要手段。

    ?12.?你們的工作量是先由每個人自己估算的么?
    應該讓每個人自己估算。要從下而上估算工作量,而不是從上往下分派。除非有其他原因,比如政治任務工期固定等。?

    13.?你們的開發(fā)人員從項目一開始就加班么?
    不要這樣。不要一開始就搞疲勞戰(zhàn)。從項目一開始就加班,只能說明項目進度不合理。當然,一些對日軟件外包必須天天加班,那屬于剝削的范疇。?

    14.?你們的項目計劃中Buffer?Time是加在每個小任務后面的么?
    不要。Buffer?Time加在每個小任務后面,很容易輕易的就被消耗掉。Buffer?Time要整段的加在一個Milestone或者checkpoint前面。?

    15.?值得再多花一些時間,從95%做到100%好值得,非常值得。
    尤其當項目后期人困馬乏的時候,要堅持。這會給產(chǎn)品帶來質(zhì)的區(qū)別。?

    16.?登記新缺陷時,是否寫清了重現(xiàn)步驟?
    要。這屬于Dev和Test之間的溝通手段。面對面溝通需要,詳細填寫Repro?Steps也需要。?

    17.?寫新代碼前會把已知缺陷解決么?
    要。每個人的缺陷不能超過10個或15個,否則必須先解決老的bug才能繼續(xù)寫新代碼。?

    18.?你們對缺陷的輕重緩急有事先的約定么?
    必須有定義。Severity要分1、2、3,約定好:藍屏和Data?Lost算Sev?1,F(xiàn)unction?Error算Sev?2,界面上的算Sev?3。但這種約定可以根據(jù)產(chǎn)品質(zhì)量現(xiàn)狀適當進行調(diào)整。

    ?19.?你們對意見不一的缺陷有三國會議么?
    必須要有。要有一個明確的決策過程。這類似于CCB?(Change?Control?Board)的概念。?

    20.?所有的缺陷都是由登記的人最后關閉的么??
    Bug應該由Opener關閉。Dev不能私自關閉Bug。?

    21.?你們的程序員厭惡修改老的代碼么?
    厭惡是正常的。解決方法是組織Code?Review,單獨留出時間來。XP也是一個方法。?

    22.?你們項目組有Team?Morale?Activity么?
    每個月都要搞一次,吃飯、唱歌、Outing、打球、開卡丁車等等,一定要有。不要剩這些錢。?

    23.?你們項目組有自己的Logo么?
    要有自己的Logo。至少應該有自己的Codename。?

    24.?你們的員工有印有公司Logo的T-Shirt么?
    要有。能增強歸屬感。當然,T-Shirt要做的好看一些,最好用80支的棉來做。別沒穿幾次就破破爛爛的。

    ?25.?總經(jīng)理至少每月參加次項目組會議要的。
    要讓team?member覺得高層關注這個項目。?

    26.?你們是給每個Dev開一個分支么?
    反對。Branch的管理以及Merge的工作量太大,而且容易出錯。?

    27.?有人長期不Check-In代碼么?
    不可以。對大部分項目來說,最多兩三天就應該Check-In。?

    28.?在Check-In代碼時都填寫注釋了么?
    要寫的,至少一兩句話,比如“解決了Bug?No.225”。如果往高處拔,這也算做“配置審計”的一部分。

    ?29.?有沒有設定每天Check-In的最后期限?
    要的,要明確Check-In?Deadline。否則會Build?Break。?

    30.?你們能把所有源碼一下子編譯成安裝文件嗎??
    要的。這是每日編譯(Daily?Build)的基礎。而且必須要能夠做成自動的。?

    31.?你們的項目組做每日編譯么?
    當然要做。有三樣東西是軟件項目/產(chǎn)品開發(fā)必備的:1.?bug?management;?2.?source?control;?3.?daily?build。?

    32.?你們公司有沒有積累一個項目風險列表?
    要。Risk?Inventory。否則,下個項目開始的時候,又只能拍腦袋分析Risk了。

    ?33.?設計越簡單越好越簡單越好。
    設計時候多一句話,將來可能就帶來無窮無盡的煩惱。應該從一開始就勇敢的砍。這叫scope?management。?

    34.? 盡量利用現(xiàn)有的產(chǎn)品、技術、代碼千萬別什么東西都自己Coding。
    BizTalk和Sharepoint就是最好的例子,有這兩個作為基礎,可以把起點提高很多。或者可以盡量多用現(xiàn)成的Control之類的。或者盡量用XML,而不是自己去Parse一個文本文件;盡量用RegExp,而不是自己從頭操作字符串,等等等等。這就是“軟件復用”的體現(xiàn)。?

    35.?你們會隔一段時間就停下來夯實代碼么?
    要。最好一個月左右一次。傳言去年年初Windows組在Stevb的命令下停過一個月增強安全。Btw,“夯”這個字念“hang”,第一聲。?

    36.?你們的項目組每個人都寫Daily?Report么?
    要寫。五分鐘就夠了,寫10句話左右,告訴自己小組的人今天我干了什么。一則為了溝通,二則鞭策自己(要是游手好閑一天,自己都會不好意思寫的)。

    ?37.?你們的項目經(jīng)理會發(fā)出Weekly?Report么?
    要。也是為了溝通。內(nèi)容包括目前進度,可能的風險,質(zhì)量狀況,各種工作的進展等。

    ?38.?你們項目組是否至少每周全體開會一次?
    要。一定要開會。程序員討厭開會,但每個禮拜開會時間加起來至少應該有4小時。包括team?meeting,?spec? review?meeting,?bug?triage?meeting。千萬別大家悶頭寫code。 ?

    39.?你們項目組的會議、討論都有記錄么?
    會前發(fā)meeting?request和 agenda,會中有人負責主持和記錄,會后有人負責發(fā)meeting?minutes,這都是effective?meeting 的要點。而且,每個會議都要形成agreements和action?items。

    ?40.?其他部門知道你們項目組在干什么么?
    要發(fā)一些Newsflash給整個大組織。Show?your?team’s?value。否則,當你坐在電梯里面,其他部門的人問:“你們在干嘛”,你回答“ABC項目”的時候,別人全然不知,那種感覺不太好。?

    41.?通過Email進行所有正式溝通?
    Email的好處是免得抵賴。但也要避免矯枉過正,最好的方法是先用電話和當面說,然后Email來確認。?

    42.?為項目組建立多個Mailing?Group?
    如果在AD+Exchange里面,就建Distribution?List。比如,我會建ABC?Project? Core?Team,ABC?Project?Dev?Team,ABC? Project?All?Testers,ABC?Project?Extended?Team等等。這樣發(fā)起Email來方便,而且能讓該收到email的人都收到、不該收到不被騷擾。?

    43.?每個人都知道哪里可以找到全部的文檔么?
    應該每個人都知道。這叫做知識管理(Knowledge?Management)。最方便的就是把文檔放在一個集中的File?Share,更好的方法是用Sharepoint。?

    44.?你做決定、做變化時,告訴大家原因了么?
    要告訴大家原因。Empower?team?member的手段之一是提供足夠的information,這是MSF一開篇的幾個原則之一。的確如此,tell?me?why是人之常情,tell?me?why了才能有 understanding。中國人做事喜歡搞限制,限制信息,似乎能夠看到某一份文件的人就是有身份的人。大錯特錯。權威、權力,不在于是不是能 access?information/data,而在于是不是掌握資源。?

    45.?Stay?agile?and?expect?change?要這樣。
    需求一定會變的,已經(jīng)寫好的代碼一定會被要求修改的。做好心理準備,對change不要抗拒,而是expect?change。?

    46.?你們有沒有專職的軟件測試人員?
    要有專職測試。如果人手不夠,可以peer?test,交換了測試。千萬別自己測試自己的。?

    47.? 你們的測試有一份總的計劃來規(guī)定做什么和怎么做么?
    這就是Test?Plan。要不要做性能測試?要不要做Usability測試?什么時候開始測試性能?測試通過的標準是什么?用什么手段,自動的還是手動的?這些問題需要用Test?Plan來回答。

    ?48.?你是先寫Test?Case然后再測試的么?
    應該如此。應該先設計再編程、先test?case再測試。當然,事情是靈活的。我有時候在做第一遍測試的同時補上test? case。至于先test?case再開發(fā),我不喜歡,因為不習慣,太麻煩,至于別人推薦,那試試看也無妨。?

    49.?你是否會為各種輸入組合創(chuàng)建測試用例?
    不要,不要搞邊界條件組合。當心組合爆炸。有很多test?case工具能夠自動生成各種邊界條件的組合??但要想清楚,你是否有時間去運行那么多test?case。?

    50.?你們的程序員能看到測試用例么?
    要。讓Dev看到Test?Case吧。我們都是為了同一個目的走到一起來的:提高質(zhì)量。

    ?51.?你們是否隨便抓一些人來做易用性測試??
    要這么做。自己看自己寫的程序界面,怎么看都是順眼的。這叫做審美疲勞??臭的看久了也就不臭了,不方便的永久了也就習慣了。?

    52.?你對自動測試的期望正確么?
    別期望太高。依我看,除了性能測試以外,還是暫時先忘掉“自動測試”吧,忘掉WinRunner和LoadRunner吧。對于國內(nèi)的軟件測試的現(xiàn)狀來說,只能“矯枉必須過正”了。?

    53.?你們的性能測試是等所有功能都開發(fā)完才做的么?
    不能這樣。性能測試不能被歸到所謂的“系統(tǒng)測試”階段。早測早改正,早死早升天。?

    54.?你注意到測試中的殺蟲劑效應了么?
    蟲子有抗藥性,Bug也有。發(fā)現(xiàn)的新Bug越來越少是正常的。這時候,最好大家交換一下測試的area,或者用用看其他工具和手法,就又會發(fā)現(xiàn)一些新bug了。

    ?55.?你們項目組中有人能說出產(chǎn)品的當前整體質(zhì)量情況么?
    要有。當老板問起這個產(chǎn)品目前質(zhì)量如何,Test?Lead/Manager應該負責回答。?

    56.?你們有單元測試么?
    單元測試要有的。不過沒有單元測試也不是不可以,我做過沒有單元測試的項目,也做成功了??可能是僥幸,可能是大家都是熟手的關系。還是那句話,軟件工程是非常實踐、非常工程、非常靈活的一套方法,某些方法在某些情況下會比另一些方法好,反之亦然。?

    57.?你們的程序員是寫完代碼就扔過墻的么?
    大忌。寫好一塊程序以后,即便不做單元測試,也應該自己先跑一跑。雖然有了專門的測試人員,做開發(fā)的人也不可以一點測試都不做。微軟還有Test?Release?Document的說法,程序太爛的話,測試有權踢回去。

    ?58.?你們的程序中所有的函數(shù)都有輸入檢查么?
    不要。雖然說做輸入檢查是write?secure?code的要點,但不要做太多的輸入檢查,有些內(nèi)部函數(shù)之間的參數(shù)傳遞就不必檢查輸入了,省點功夫。同樣的道理,未必要給所有的函數(shù)都寫注釋。寫一部分主要的就夠了。

    ?59.?產(chǎn)品有統(tǒng)一的錯誤處理機制和報錯界面么?
    要有。最好能有統(tǒng)一的error?message,然后每個error?message都帶一個error?number。這樣,用戶可以自己根據(jù)error?number到user?manual里面去看看錯誤的具體描述和可能原因,就像 SQL?Server的錯誤那樣。同樣,ASP.NET也要有統(tǒng)一的Exception處理??梢詤⒖加嘘P的 Application?Block。?

    60.?你們有統(tǒng)一的代碼書寫規(guī)范么?
    要有。Code?Convention很多,搞一份來發(fā)給大家就可以了。當然,要是有FxCop這種工具來檢查代碼就更好了。?

    61.?你們的每個人都了解項目的商業(yè)意義么?
    要。這是Vision的意思。別把項目只當成工作。有時候要想著自己是在為中國某某行業(yè)的信息化作先驅(qū)者,或者時不時的告訴team? member,這個項目能夠為某某某國家部門每年節(jié)省多少多少百萬的納稅人的錢,這樣就有動力了。平凡的事情也是可以有個崇高的目標的。

    ?62.?產(chǎn)品各部分的界面和操作習慣一致么?
    要這樣。要讓用戶覺得整個程序好像是一個人寫出來的那樣。

    ?63.?有可以作為宣傳亮點的Cool?Feature么?
    要。這是增強團隊凝聚力、信心的。而且,“一俊遮百丑”,有亮點就可以掩蓋一些問題。這樣,對于客戶來說,會感覺產(chǎn)品從質(zhì)量角度來說還是acceptable的?;蛘哒f,cool?feature或者說亮點可以作為質(zhì)量問題的一個事后彌補措施。?

    64.?盡可能縮短產(chǎn)品的啟動時間要這樣。
    軟件啟動時間(Start-Up?time)是客戶對性能好壞的第一印象。

    ?65.?不要過于注重內(nèi)在品質(zhì)而忽視了第一眼的外在印象。
    程序員容易犯這個錯誤:太看重性能、穩(wěn)定性、存儲效率,但忽視了外在感受。而高層經(jīng)理、客戶正相反。這兩方面要兼顧,協(xié)調(diào)這些是PM的工作。

    ?66.?你們根據(jù)詳細產(chǎn)品功能說明書做開發(fā)么?
    要這樣。要有設計才能開發(fā),這是必須的。設計文檔,應該說清楚這個產(chǎn)品會怎么運行,應該采取一些講故事的方法。設計的時候千萬別鉆細節(jié),別鉆到數(shù)據(jù)庫、代碼等具體實現(xiàn)里面去,那些是后面的事情,一步步來不能著急。?

    67.?開始開發(fā)和測試之前每個人都仔細審閱功能設計么?
    要做。Function?Spec?review是用來統(tǒng)一思想的。而且,review過以后形成了一致意見,將來再也沒有人可以說“你看,當初我就是反對這么設計的,現(xiàn)在吃苦頭了吧”?

    68.? 所有人都始終想著The?Whole?Image么?
    要這樣。項目里面每個人雖然都只是在制造一片葉子,但每個人都應該知道自己在制造的那片葉子所在的樹是怎么樣子的。我反對軟件藍領,反對過分的把軟件制造看成流水線、車間。參見第61條。

    ?69.?Dev工作的劃分是單純縱向或橫向的么?
    不能單純的根據(jù)功能模塊分,或者單純根據(jù)表現(xiàn)層、中間層、數(shù)據(jù)庫層分。我推薦這么做:首先根據(jù)功能模塊分,然后每個“層”都有一個Owner來Review所有人的設計和代碼,保證consistency。?

    70.?你們的程序員寫程序設計說明文檔么?
    要。不過我聽說微軟的程序員1999年以前也不寫。所以說,寫不寫也不是絕對的,偷懶有時候也是可以的。參見第56條。

    ?71.?你在招人面試時讓他寫一段程序么?
    要的。我最喜歡讓人做字符串和鏈表一類的題目。這種題目有很多循環(huán)、判斷、指針、遞歸等,既不偏向過于考算法,也不偏向過于考特定的API。?

    72.?你們有沒有技術交流講座?
    要的。每一兩個禮拜搞一次內(nèi)部的Tech?Talk或者Chalk?Talk吧。讓組員之間分享技術心得,這筆花錢送到外面去培訓劃算。?

    73.?你們的程序員都能專注于一件事情么?
    要讓程序員專注一件事。例如說,一個部門有兩個項目和10個人,一種方法是讓10個人同時參加兩個項目,每個項目上每個人都花50%時間;另一種方法是5個人去項目A,5個人去項目B,每個人都100%在某一個項目上。我一定選后面一種。這個道理很多人都懂,但很多領導實踐起來就把屬下當成可以任意拆分的資源了。?

    74.?你們的程序員會夸大完成某項工作所需要的時間么?
    會的,這是常見的,尤其會在項目后期夸大做某個change所需要的時間,以次來抵制change。解決的方法是坐下來慢慢磨,磨掉程序員的逆反心理,一起分析,并把估算時間的顆粒度變小。?

    75.?盡量不要用Virtual?Heads?最好不要用Virtual?Heads。
    Virtual? heads意味著resource?is?not?secure,shared?resource會降低 resource的工作效率,容易增加出錯的機會,會讓一心二用的人沒有太多時間去review?spec、review? design。一個dedicated的人,要強過兩個只能投入50%時間和精力的人。我是吃過虧的:7個part?time的tester,發(fā)現(xiàn)的Bug和干的活,加起來還不如兩個full-time的。參見第73條。73條是針對程序員的,75條是針對Resource? Manager的。

    posted on 2006-04-20 20:20 zJun's帛羅閣 閱讀(490) 評論(0)  編輯  收藏 所屬分類: 項目管理


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     

    導航

    <2006年4月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456

    統(tǒng)計

    常用鏈接

    留言簿(15)

    隨筆分類

    隨筆檔案

    相冊

    收藏夾

    博客

    文檔

    站點

    論壇

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲人成人77777网站不卡| 亚洲色欲色欲www在线丝| 亚洲人成影院77777| 98精品全国免费观看视频| 国产成人精品日本亚洲网站| 99精品视频在线观看免费| 亚洲综合图色40p| a级成人毛片免费视频高清| 久久精品国产亚洲综合色| 免费无码又爽又刺激高潮软件| 久久精品国产亚洲网站| 久久青草免费91线频观看不卡| 亚洲一二成人精品区| 国内精自视频品线六区免费| 亚洲国产精品免费观看| 国产精品自在自线免费观看| 黄页网站在线观看免费| 国产综合精品久久亚洲| 免费在线看黄网站| 亚洲免费在线视频播放| 国产美女无遮挡免费网站| 成人免费无码H在线观看不卡| 亚洲视频在线免费观看| 精品久久久久久久久免费影院| 亚洲熟妇无码AV| 中文字幕亚洲一区二区三区| 美女视频黄的免费视频网页 | 永久免费AV无码国产网站 | 美女18一级毛片免费看| 国产日产亚洲系列最新| 香港a毛片免费观看| 亚洲欧美国产欧美色欲| 亚洲熟妇少妇任你躁在线观看无码 | 亚洲自偷自偷在线成人网站传媒 | 日韩毛片免费在线观看| 99re6在线视频精品免费| 亚洲精品在线播放| 亚洲av中文无码| 亚洲视频免费观看| 中文字幕在线免费播放| 亚洲久本草在线中文字幕|