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

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

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

    隨筆-11  評論-10  文章-8  trackbacks-0

    經過兩周的連續加班jdwp終于快告一段落了,如果不出什么問題的話馬上就會進入FRT了。我
    們從今年過完年就基本上在搞這個東西,期間問題無數,可以作為一個典型的失敗案例,貌
    似自我進來之后參與的所有項目都沒有一帆風順的,就拿這個最典型的開刀,以醒后世。

    先介紹一下我們這個項目:是將open source的一個實現拿到自己的產品當中(當然license
    上是沒問題的)。主要的工作是移植+少量的升級,原來的實現只支持主流的Intel平臺,我
    們要將這個東西移植到12個平臺,而且我們已經有了一套port層的API,也就是說我們只需要
    將所有涉及到和平臺相關的代碼全部替換成port層中對應的API。原來的實現層次上也很清
    晰,大部分都是相同的代碼,少數不同的地方也都放在了不同的文件??雌饋硎莻€非常簡單
    的項目,那么我們就來看看這樣一個簡單的項目是如何失敗。

    一共4個人投入這個項目,計劃兩個人做升級,兩個人做移植,我被分去做移植。

    問題一

    四個人都是做java的,只有一個在項目中使用C/C++,其他人都只停留在學校作業的水平

    如果從上面的需求看,這樣的狀況完全是可以接受的。只要理解了框架,在合適的位置加點
    代碼就可以了,已有的代碼也是個很好的參照;移植基本就是個體力活,仔細不出錯就沒問
    題了。事實證明,對于不熟悉的語言,解決問題的效率明顯下降,很多我們折騰了幾天了的
    問題,有經驗的人可能一分鐘就能搞定。不過項目組里在實在是沒有其他人了,這個風險應
    該是已經計算在內了。但是許多小問題堆積起來有可能就是致命的,這只能算是其中的一個
    了。

    問題二

    沒有及時的與其他模塊集成

    我們這個號稱敏捷的team在這一點上連敏捷最基本的盡早集成,持續集成都沒有做到,汗顏
    啊。我們只是在自己的小作坊里拼命的搞呀搞,最后發現我們的東西拿給integration team
    根本就沒法build,然后花了大量的時間來解決在各個平臺上的build問題。這時問題一就凸
    顯出來了,面對不熟悉的語言,不熟悉的工具,完全陌生的平臺,寫腳本去build一個復雜
    的工程(原來用的都是已有的東西)。由于build的問題遲遲沒能解決,導致后面測試和我
    們fix bug的時間非常有限。

    問題三

    不求甚解

    就我來說,我做完移植后都不知道整個模塊的運行機制,工作原理,只是一個API翻譯的碼
    工。其他人也都差不多,對整體的構架和大致的流程都不是很清楚。不過我們這群人還是很
    強的,都是fix bug的高手,每天維護這大量完全不熟悉的代碼,即使不懂,不太懂照樣游
    刃有余。這里的問題是我們沒有責任感,為移植而移植,為升級而升級,完全不去試圖理解
    自己所在做的事情,殊不知,這些拿進產品的代碼最終還是要我們自己來維護的啊。這種情
    況一直到項目的最后期才有所好轉,修了那么多bug,再不熟都說不過去了。但這種從局部
    一點點的理解不僅效率低下,而且始終對代碼沒有充分的自信。即使現在我們也不敢對已有
    的代碼做大的改動,因為我們完全不知道在這里的修改是否會影響的其他部分。

    我覺得在項目剛開始應該首先學習已有的代碼,順便溫習C/C++的知識,對項目整體的了解
    是必要的,也是最基本的。

    問題四

    對風險估計不足

    細心的讀者可能已經發現了,我們前面項目的概述中有兩個重要的風險沒有考慮到:已有代
    碼中的bug和我們依賴的port API的bug,我們都假設它們是不存在的!!就是這兩個東西讓
    我們陷入了泥沼無法自拔。客觀的說從open source拿的代碼質量還是非常高的,而且有一
    個完整的測試框架和大量的自動化測試用例,但要作為產品,顯然還需要錘煉。port API的
    問題相對少一些,但很難發現,而且一旦出問題修正的周期非常長,無疑對我們的進度會有
    很大的影響。

    剛過了TCK我們說,TCK都過了,應該沒啥問題了,可是SVT報過來一堆bug,我們恍然,SVT比
    TCK牛多了,真是什么bt的測試都有。等SVT都過了,突然冒出個RAD,一下就是十幾個bug,
    還發現一個spec沒實現,一問結果人家是人肉測試 -_-!!
    做最好的希望,做最壞的打算任何時候都是適用的

    問題五

    兵力分散

    上一條對這個有直接的影響,也跟我們team人太少有關。項目中的4個人只有一個人是絕大
    部分時間在這上面,其他人是需要了再過來,搞著jdwp還要搞其他的東西,嚴重分散了精力。
    期間由于沒趕上SR2,中間有一段相對空閑的時間,大部分人都被抽取干其他的任務,默認
    是不會再有什么問題了。。。這實際上是我們team一直存在的問題,一人多職,每個人都沒
    法專注在一件事上,造成每件事都效率不高。

    問題六

    反饋遲緩

    敏捷啊,又犯了敏捷的大忌。從項目開始的頭幾個月我們沒有試圖去獲得或者爭取任何反
    饋,直到測試組參與進來。即使我們能夠獲得完整的SVT測試用例我們也沒有嘗試主動去獲取
    反饋(跑SVT測試),我們始終都是被動的。我們雖然沒辦法讓客戶嘗試還沒正式發布的版
    本,但至少我們自己可以,在team內部使用還是沒什么問題的。jdwp大家平時調程序都會用
    到,如果我們自己使用的話,很多顯而易見的bug就不會到最后才被發現。雖然作為SDK本事
    不穩定會影響大家開發的效率,但能及時發現問題,將其扼殺在搖籃中,我認為還是非常值
    得的。

    問題七

    基礎設施(Infrastructure)不健全

    我們的code repository還是不能不說的。為什么會變成這樣我也不太清楚,總之它現在的情
    況是這樣的:我們有自己的code repository A,每次做integration build,我們會把當前
    最新的代碼發布到另一個repository B,這個B不僅包括了我們jdwp的代碼,還有其他我們放
    進產品的代碼,integration build會從這里拿代碼去build。注意這里的發布其實就是復制
    A里的文件到B并且修改所有文件頭的日期信息,這個動作是由腳本完成的,commit的注釋就
    是load module balabala之類沒啥意義的東西,如果用svn diff看某個版本的修改,你會看
    到所有的文件都被修改了,絕大部分僅僅是文件頭被改了。看官可能要罵了,不就是個用來
    做integration build的臨時庫嘛,講這么多干嘛,其實我們的項目只能在這個臨時庫
    build,因為修改過的腳本都在這里。各位現在能理解我們的痛苦了嗎?我們必須在B上開
    發,而B除了做更新外沒有任何用處,如果要查看歷史,請去A,要提交修改,對不起請去A,
    我在B上開發竟然要去A上提交!??!就這樣來回的折騰啊,我們的時間就這樣消耗啊。。。


    這樣看來整個項目真是一團糟,但我們竟然真的把它放進SR3了,當然還會有
    SR4,5,6,7。。。為了不讓慘劇繼續上演還有很多需要做:

    1. 修改 repository A 上的build腳本,以后直接在A上工作

    2. clean 測試用例,補充測試用例,這是保證質量的第一關。

    3. 組織一次組內sharing,share項目的整體構架,運行機制,常見工具的使用,常用的解
    決問題的方式,將其記錄在wiki上。

    4. 號召大家在日常工作中使用自己開發的工具,小白鼠從自己做起。

    posted on 2008-11-03 23:42 JBahamut 閱讀(141) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 最近新韩国日本免费观看| 久久久久免费精品国产| 成人啪精品视频免费网站| 亚洲国产精品成人久久久| 最近免费中文字幕大全免费版视频 | 国产免费人视频在线观看免费| 国产成人精品日本亚洲11| 成年性羞羞视频免费观看无限| 国产精品久久亚洲不卡动漫| 久久精品免费一区二区喷潮| 亚洲中文字幕久久精品无码A| 日本免费人成黄页在线观看视频 | 亚洲黄色免费网站| 亚洲免费闲人蜜桃| 国产成人3p视频免费观看| 特级毛片aaaa免费观看| 亚洲乳大丰满中文字幕| 亚洲精品视频免费看| 亚洲欧美日韩综合俺去了| 免费一级毛片女人图片| 国内精品免费久久影院| 亚洲美女aⅴ久久久91| 女人18毛片特级一级免费视频| 自拍偷自拍亚洲精品偷一| 在线观看国产区亚洲一区成人| 日韩免费无码一区二区三区 | 97在线视频免费| 亚洲影院天堂中文av色| 亚洲精品视频在线看| 免费国产成人午夜在线观看| 亚洲一区二区三区播放在线 | 亚洲AV无码专区电影在线观看| 91免费在线播放| 国产精品日本亚洲777| 亚洲春色在线视频| 德国女人一级毛片免费| 丁香花在线视频观看免费| 亚洲高清毛片一区二区| 亚洲伊人久久综合影院| 人妻丰满熟妇无码区免费 | 91情国产l精品国产亚洲区|