posts - 59,  comments - 323,  trackbacks - 0
            各位一定非常驚訝(如果是讀過(guò)前面幾篇連載《定論》的人),怎么這就完了呢?看著架勢(shì),應(yīng)該還早啊。
           
            是啊,按照原定的計(jì)劃呢,的確是還早,但是那樣的寫法,我自己都不知道會(huì)寫到何年何月去了,因此打算結(jié)束這個(gè)東西,把我要表達(dá)的想法,一口氣跟大家說(shuō)了,也是一種解脫。
           
            總結(jié)我的想法,主要有以下幾點(diǎn):
           
            1、現(xiàn)有的軟件開(kāi)發(fā)方法,都不是定論,不過(guò)是你說(shuō)你的好,我說(shuō)我的好罷了。要能夠得到定論,必須要有一種能夠判斷方法好壞的方法。也就是說(shuō),能夠判斷一個(gè)方法,用或不用,有多少好處。幾個(gè)方法比較,哪個(gè)能夠勝出的“檢驗(yàn)標(biāo)準(zhǔn)”。
           
            2、要能夠檢驗(yàn)軟件開(kāi)發(fā)方法的優(yōu)劣,必須基于對(duì)于軟件開(kāi)發(fā)本質(zhì)的正確認(rèn)識(shí),這樣才能量化兩個(gè)因素:軟件需求的復(fù)雜程度以及軟件開(kāi)發(fā)的實(shí)際工作量。而現(xiàn)在的軟件復(fù)雜度的度量,并未區(qū)分“需求”與“實(shí)際”的不同,或者“代碼行數(shù)”,或者“功能點(diǎn)”,都是如此。
           
            3、在能夠正確度量需求復(fù)雜度與實(shí)際工作量之后,我們會(huì)發(fā)現(xiàn),過(guò)去那么多號(hào)稱是為了保證軟件順利開(kāi)發(fā)的手段,往往只會(huì)壞事,耽誤事。但是,完全不提前設(shè)計(jì)的方法,也并不可取。
          posted @ 2005-11-21 23:27 讀書、思考、生活 閱讀(251) | 評(píng)論 (0)編輯 收藏
          posted @ 2005-11-19 12:47 讀書、思考、生活 閱讀(319) | 評(píng)論 (0)編輯 收藏


          My blog is worth $33,307.86.
          How much is your blog worth?

           

          網(wǎng)上有人貼出了直接計(jì)算的代碼,在這里,填入你的Blog地址即可。


          文章來(lái)源:http://spaces.msn.com/members/zbw25/Blog/cns!1pA6-3FOo9yNp_4lmEHxdDqA!722.entry
          posted @ 2005-11-19 10:56 讀書、思考、生活 閱讀(268) | 評(píng)論 (0)編輯 收藏
            昨天看完《一九八四》了,聯(lián)想到之前看過(guò)的《林昭》《兄弟》,頗有些感想。
           
            《兄弟》是最能讓人動(dòng)情的一部書,但是也是最感性的一部書。而對(duì)于極權(quán)主義的批判,僅僅有感性是遠(yuǎn)遠(yuǎn)不夠的。這一點(diǎn),《一九八四》就實(shí)在是太到位了。深刻的,理性的,不動(dòng)聲色的,鎮(zhèn)定自若的分析,越讀越讓人感到毛骨悚然。
            一種絕對(duì)不會(huì)讓你變成烈士的權(quán)力。你一定能夠被改造好。你會(huì)真誠(chéng)的相信,2+2=5,或者是4,是3,都有可能。每一個(gè)被送入101房間的人,都會(huì)出賣一切,出賣人類所能擁有的一切美好的事物。真、善、美、愛(ài),全部都可以出賣。
           
            太絕望了!
           
            林昭的死,給了我信心。是的,不是讓我絕望,反而是給了我信心。因?yàn)椋羞@樣的人,在這個(gè)世界上存在過(guò),她可以被消滅,但是不可戰(zhàn)勝!
           
            另外推薦一篇blog,不像書評(píng)的書評(píng)。主題有點(diǎn)相關(guān),但是并不直接。大多數(shù)人,既不是強(qiáng)者,也不是弱者,僅僅是在中間。這些在中間的人,如果他勇于欺凌弱者,也往往會(huì)非常痛快的屈服于強(qiáng)者。換句話說(shuō),那些在極權(quán)主義制度下,快速屈服的人們,才是迫害弱者的主力軍。這樣的人,實(shí)在是太多了!
          posted @ 2005-11-18 22:40 讀書、思考、生活 閱讀(706) | 評(píng)論 (0)編輯 收藏
            討論軟件開(kāi)發(fā)的特征,需要站在一個(gè)大的背景下來(lái)看。我以前考過(guò)PMP,在PMBOK中,軟件項(xiàng)目管理,是作為項(xiàng)目管理下的子課題來(lái)討論的。看看下面這張圖:
            按照PMBOK的知識(shí)結(jié)構(gòu)圖,PMBOK已經(jīng)告訴了我們那么大一個(gè)園。而要進(jìn)一步搞好軟件的項(xiàng)目管理,我們只需要再掌握相關(guān)應(yīng)用領(lǐng)域的知識(shí)和實(shí)踐,就ok了。
           
             這其實(shí)是大多數(shù)項(xiàng)目管理的理論,對(duì)于軟件項(xiàng)目管理的看法,所有的項(xiàng)目,都是項(xiàng)目。軟件項(xiàng)目與大多數(shù)其它項(xiàng)目,大同而小異。至于差異部分,往往被歸入“風(fēng)險(xiǎn)管理”的領(lǐng)域,就算是“一切盡在掌握了”。
           
            而事實(shí)上,軟件項(xiàng)目與其它項(xiàng)目的差異是如此之大,以至于由量變而導(dǎo)致了質(zhì)變,使得我們以傳統(tǒng)的工程項(xiàng)目管理的方式來(lái)管理軟件開(kāi)發(fā)項(xiàng)目,注定是要失敗的。
           
            我們來(lái)看看這樣一個(gè)關(guān)鍵詞:“迭代”。這是其它的項(xiàng)目管理中,基本上不可能出現(xiàn)的概念,而在軟件項(xiàng)目管理領(lǐng)域,卻是幾乎每一種方法學(xué)中,都要極力強(qiáng)調(diào)的概念。這就是最大的區(qū)別。如果我們能夠搞清楚迭代的本質(zhì),也就能夠搞清楚軟件項(xiàng)目與其它項(xiàng)目的本質(zhì)區(qū)別了。
           
            在我看來(lái),在軟件開(kāi)發(fā)的過(guò)程中,引入迭代,就是承認(rèn),軟件開(kāi)發(fā)需要承受大大小小的失敗,而減少失敗的辦法,就是不跑步,不走路,盡可能的爬行,這樣就算跌倒,也不會(huì)跌得太重。我們來(lái)看一個(gè)有趣的數(shù)據(jù)。這是我在竹筍炒肉的blog上看到的一段話。
           
            1994年,由于其非凡的軟件開(kāi)發(fā)能力和優(yōu)秀的軟件質(zhì)量,SEL成為第一個(gè)因軟件過(guò)程的成就而贏得IEEE獎(jiǎng)勵(lì)的軟件開(kāi)發(fā)組織。與普通的軟件開(kāi)發(fā)組織相比,在同樣的軟件開(kāi)發(fā)條件下,NASA所開(kāi)發(fā)的軟件的質(zhì)量要好10到20倍。
           
            這個(gè)成就是如何得出的呢?那么是怎樣的項(xiàng)目呢?我搜索了一個(gè)google,找到另外一段話
           
            To put it a little differently, the average MIS shop would need about 14 calendar months and 110 staff-months to deliver a 100,000 line-of-code MIS system, and it would typically contain about 850 defects when delivered. The NASA SEL would deliver a system of that size with about the same amount of time and effort, but it would contain only about 50 defects.
           
            也就是說(shuō),10萬(wàn)行代碼的一個(gè)MIS系統(tǒng),他們花了110個(gè)人月,一共14個(gè)月,才完成。平均下來(lái),每個(gè)人每天大約需要寫30行代碼!如果這樣也算成功的軟件項(xiàng)目管理的話,我以后只要將所有的項(xiàng)目工作量估算,乘以10,就能同樣拿到IEEE的獎(jiǎng)勵(lì)了,如果我的老板允許的話。
           
          (未完待續(xù))
          posted @ 2005-11-18 08:47 讀書、思考、生活 閱讀(292) | 評(píng)論 (0)編輯 收藏
            最近一段時(shí)間,特別容易買書。11月5日,本來(lái)是打算給我的外甥女買一本小學(xué)生詞典的,想想干脆上當(dāng)當(dāng)搜一下。結(jié)果發(fā)現(xiàn)還真是挺便宜的,會(huì)員價(jià)只要12.6,實(shí)在是不好意思,就另外挑了兩本,一本《世界盡頭與冷酷仙境》,一本余華的《兄弟》。但是,那該死的當(dāng)當(dāng),竟然在訂單完成之后的第二天,才告訴我只有一本《兄弟》。我當(dāng)時(shí)就想,干脆一本都不要,反正是貨到付款。
           
            結(jié)果,11月6日那天下班回到家里,我爸媽跟我說(shuō):“你買的書來(lái)了,錢已經(jīng)幫你付掉了。”效率真是高的不得了啊!
           
            《兄弟》我一口氣就看完了,實(shí)在是好看啊!
           
            11月9日,一幫老朋友聚會(huì),還去了一個(gè)朋友的家里,他們家也是喜歡讀書的,我在那里又發(fā)現(xiàn)幾本好書,結(jié)果呢,借不成
           
            因?yàn)閷?duì)當(dāng)當(dāng)送書的速度印象相當(dāng)深刻,于是還是去當(dāng)當(dāng)又訂了三本書《非常道》、《楊柳風(fēng)》、《一九八四》。當(dāng)當(dāng)還是以非常迅速的速度,分兩次,給我送來(lái)了。他們這樣做,唯一的目的是,能夠收我兩次的送貨費(fèi)。值得慶幸的是,書的確是不錯(cuò)。《非常道》我已經(jīng)看完了,現(xiàn)在在看《一九八四》。
           
            我之前寫過(guò)一篇關(guān)于林昭的blog。因此而認(rèn)識(shí)了一個(gè)朋友,他也是林昭的老鄉(xiāng),蘇州人。看到我這么喜歡林昭,于是說(shuō)要送一本林昭的書給我,今天,書又寄到家里來(lái)了。《追尋林昭》,另外還有一本他們出版社的《擋不住的趨勢(shì)》。
           
            今天早上,我還在蔚藍(lán)書店訂了三本書。《隨想錄》、《人類群星閃耀的時(shí)刻》、《斷頭王后》。然后呢,今天還收到一封郵件,我郵購(gòu)的一本《讀庫(kù)0600》也已經(jīng)寄出來(lái)了。
           
            唉,實(shí)在是太多了一點(diǎn),來(lái)不及看啊。俗話說(shuō):書籍是人類的朋友。又說(shuō):有朋自遠(yuǎn)方來(lái),不亦樂(lè)乎。所以,有好書自遠(yuǎn)方來(lái),不亦樂(lè)乎!
           
           
          還有一本,屬于“地下刊物”,只能搞到很大的照片。
           
          這本書的介紹,可以去看這個(gè)blog:見(jiàn)招拆招
          posted @ 2005-11-15 21:32 讀書、思考、生活 閱讀(430) | 評(píng)論 (0)編輯 收藏

            我是豆瓣的會(huì)員,又用的是MSN Spaces的BLOG,目前用得還不錯(cuò),都不打算退出。但是豆瓣提供的那個(gè)豆瓣秀服務(wù),在MSN Spaces上用不成

            沒(méi)辦法,只能自己動(dòng)手了。實(shí)際效果,見(jiàn):http://spaces.msn.com/members/zbw25/

            1、搞一個(gè)Custom HTML
            2、在公司的服務(wù)器上,裝一個(gè)軟件,ImageMagick。下載地址:http://www.imagemagick.org/download/binaries/ImageMagick-6.2.5-4-Q16-windows-dll.exe

            3、下載一個(gè)JMagick。下載地址:
          http://www.yeo.id.au/jmagick/quickload/win-6.2.4/jmagick-6.2.4-1-IM-6.2.5.zip

            4、將dll文件,copy到Windows的System32目錄下。將jar文件copy到某lib目錄下。

            5、寫一個(gè)Servlet,代碼如下:

            1 package tv.recool.misc;
            2 
            3 import java.io.*;
            4 import java.text.*;
            5 import java.util.*;
            6 import javax.servlet.*;
            7 import javax.servlet.http.*;
            8 import java.net.MalformedURLException;
            9 import java.net.URL;
           10 import java.net.URLConnection;
           11 
           12 import magick.ImageInfo;
           13 import magick.MagickImage;
           14 import magick.MontageInfo;
           15 
           16 public class PutBooks extends HttpServlet {
           17 
           18     //根據(jù)url,取得圖片的byte[]
           19     private static byte[] getImageBytes(String url){
           20         try {
           21             return StreamUtils.read((new URL(url)).openStream());
           22         } catch (Exception e) {
           23             return null;
           24         }
           25     }
           26     
           27     //根據(jù)url,取得文字
           28     private static String getImageText(String url){
           29         try {
           30             URL u=new URL(url);
           31             URLConnection uc=u.openConnection();
           32 
           33             //要做足功夫,不然豆瓣就會(huì)拒絕你的請(qǐng)求
           34             uc.setRequestProperty("Host","www.douban.com");
           35             uc.setRequestProperty("Accept","*/*");
           36             uc.setRequestProperty("Referer","http://www.douban.com/");
           37             uc.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)");
           38             uc.setRequestProperty("Pragma","no-cache");
           39             uc.setRequestProperty("Cache-Control","no-cache");
           40             uc.setRequestProperty("Connection","close");
           41 
           42             //StreamUtils是一個(gè)輔助工具,就不再給出了
           43             return new String(StreamUtils.read(uc.getInputStream()),"utf-8");
           44         }  catch (Exception e) {
           45             return "";
           46         }
           47     }
           48 
           49     public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{
           50         //取得參數(shù)
           51         String uid=req.getParameter("uid");
           52         String n=req.getParameter("n");
           53         String columns=req.getParameter("columns");
           54         String select=req.getParameter("select");
           55         String picsize=req.getParameter("picsize")+"";
           56         String show=req.getParameter("show");        
           57 
           58         try {
           59             //設(shè)置JMagick的ClassLoader,否則會(huì)報(bào)錯(cuò)
           60             System.setProperty("jmagick.systemclassloader","no");
           61 
           62             String str= getImageText("http://www.douban.com/service/badge/"+
           63                 uid+"/?show="+show
           64                 +"&select="+select
           65                 +"&n="+n
           66                 +"&picsize="+picsize
           67                 +"&columns="+columns);
           68 
           69             int getSize=Integer.parseInt(n);
           70             int colSize=Integer.parseInt(columns);
           71             int len=getSize/colSize;
           72 
           73             //申請(qǐng)一個(gè)數(shù)組
           74             MagickImage images[] = new MagickImage[getSize];
           75 
           76             //用最簡(jiǎn)單的辦法解析字符串,因?yàn)槎拱甑妮敵鍪枪潭ǖ?/SPAN>
           77             String imgstr[]=str.split(".jpg");
           78 
           79             for(int i=0;i<getSize;i++){
           80                 if(i<imgstr.length){
           81                     String picurl="";
           82 
           83                     //根據(jù)圖片大小的設(shè)定,解析有所不同
           84                     if(picsize.equals("medium")){
           85                         String temps[]=imgstr[i].split("http://www.douban.com/mpic/");
           86                         picurl="http://www.douban.com/mpic/"+temps[1]+".jpg";
           87                     } else {
           88                         String temps[]=imgstr[i].split("http://www.douban.com/spic/");
           89                         picurl="http://www.douban.com/spic/"+temps[1]+".jpg";
           90                     }
           91                     MagickImage image = new MagickImage(new ImageInfo(),getImageBytes(picurl));
           92                     images[i]=image;
           93                 }
           94             }
           95 
           96             //建立一個(gè)圖片組
           97             MagickImage seqImage = new MagickImage(images);
           98 
           99             //建立一個(gè)圖片框架
          100             MontageInfo montageInfo = new MontageInfo(new ImageInfo());
          101 
          102             //setGeometry(String)設(shè)置圖片的幾何特征
          103             if(picsize.equals("medium")){
          104                 montageInfo.setGeometry("99x149+1+1>");
          105             } else {
          106                 montageInfo.setGeometry("66x99+1+1>");
          107             }
          108 
          109             //NxM的一個(gè)表格
          110             montageInfo.setTile(colSize+"x"+len);
          111             montageInfo.setBorderWidth(0);
          112 
          113             //得到一張組合后的圖片
          114             MagickImage montage = seqImage.montageImages(montageInfo);
          115             montage.writeImage(new ImageInfo());
          116             montage.setMagick("JPG");
          117 
          118             //輸出到byte[]
          119             byte data[]=montage.imageToBlob(new ImageInfo());
          120 
          121             //通過(guò)Servlet輸出
          122             res.setContentType("image/*");
          123             OutputStream toClient=res.getOutputStream();
          124             toClient.write(data);
          125             toClient.close();
          126         }
          127         catch (Exception ex) {
          128         }
          129     }
          130 }


            6、在MSN Spaces的Custom HTML中,寫以下HTML:

          <href="http://www.douban.com/people/1019112/"><img src="http://www.recool.tv:8080/Recool-WebServer/putBooks?uid=1019112&show=collection&select=random&n=12&columns=3" border=0 width=178></a>

            7、搞定,收工。

          posted @ 2005-11-14 21:20 讀書、思考、生活 閱讀(1253) | 評(píng)論 (2)編輯 收藏
          新家注冊(cè)成功,特此告示。
          posted @ 2005-11-14 15:25 讀書、思考、生活 閱讀(152) | 評(píng)論 (0)編輯 收藏
            昨天我老婆也看完了余華的《兄弟》,突然想到兒子的發(fā)展趨勢(shì),我們兩個(gè)人討論了一下,認(rèn)為如果宋凡平不死的話,李光頭也不至于那么墮落。所以我們的兒子就算不能成為宋鋼,起碼也不至于成為李光頭吧。
           
            家里請(qǐng)了一個(gè)鐘點(diǎn)工阿姨,每天4點(diǎn)來(lái),6點(diǎn)走。一般快到6點(diǎn)的時(shí)候,點(diǎn)點(diǎn)就會(huì)一直頭轉(zhuǎn)來(lái)轉(zhuǎn)去的盯著阿姨看。那意思是,阿姨你怎么還不走呀?我好跟你說(shuō)再見(jiàn)呀。
           
            今天快到點(diǎn)的時(shí)候,我兒子也是一直盯著阿姨看。看到阿姨走到門口,彎腰下去穿鞋,褲子的腰比較低。然后我兒子就笑起來(lái)了:“阿姨的屁股都露出來(lái)了。”
           
            點(diǎn)點(diǎn)、爺爺、還有我,我們?nèi)齻€(gè)男的都面無(wú)表情的坐在那里。奶奶一個(gè)人在那里狂笑。阿姨的臉通紅。我心里在想:“完了,家里真的出了‘李光頭’了。”
           
           

          文章來(lái)源:http://spaces.msn.com/members/zbw25/Blog/cns!1pA6-3FOo9yNp_4lmEHxdDqA!701.entry
          posted @ 2005-11-11 21:56 讀書、思考、生活 閱讀(148) | 評(píng)論 (0)編輯 收藏
          三、軟件開(kāi)發(fā)的特征
           
            軟件開(kāi)發(fā)究竟是怎么一回事呢?在我的前一個(gè)連載《敲響OO時(shí)代的喪鐘》里,我也討論到了軟件開(kāi)發(fā)的實(shí)質(zhì),自己引一段來(lái)用用。 
          軟件開(kāi)發(fā)的定義:“軟件開(kāi)發(fā),就是在一個(gè)受到限制的環(huán)境中,利用環(huán)境提供的可能性,修改或添加環(huán)境允許的各種狀態(tài),去滿足某一組需求。

          1) 軟件開(kāi)發(fā)所處的環(huán)境,不僅僅是一個(gè)限制,同時(shí)也是一個(gè)可能性。軟件的能力,局限性與硬件的能力,比如說(shuō),如果計(jì)算機(jī)沒(méi)有喇叭,那么任何軟件都不能使計(jì)算機(jī)播放音樂(lè)。但是,另一個(gè)必須考慮的方面是,同樣有能力發(fā)聲的計(jì)算機(jī),要想使他播放音樂(lè),可能很容易,也可能很困難。用專業(yè)一點(diǎn)話來(lái)描述就是:“有些硬件的API設(shè)計(jì)很合理,有些則非常愚蠢。”由于我們對(duì)于軟、硬件的定義是一個(gè)連續(xù)體,因此,這個(gè)觀點(diǎn)不只是可以用來(lái)評(píng)價(jià)硬件API設(shè)計(jì),也可以用來(lái)評(píng)價(jià)語(yǔ)言、虛擬機(jī)、框架、平臺(tái)等等軟件的一個(gè)方面的優(yōu)缺點(diǎn)——是否有利于二次開(kāi)發(fā),這是一個(gè)重要的評(píng)價(jià)標(biāo)準(zhǔn)。

          2) 修改、添加狀態(tài),比較拗口,其實(shí)就是編程的意思。在一個(gè)受限制的范圍內(nèi)編程,我們需要考慮很多東西,語(yǔ)法、接口、規(guī)范、內(nèi)存大小諸如此類,當(dāng)然,不同級(jí)別的,不同領(lǐng)域的編程,需要考慮的限制是有巨大差別的。軟件開(kāi)發(fā)的水平高低也就體現(xiàn)在,滿足同樣的需求,有些方法速度更快,有些方面卻要慢很多。而軟件開(kāi)發(fā)的方法的選擇,受到很多因素的影響:環(huán)境限制,經(jīng)驗(yàn)多少以及對(duì)于需求的了解程度等等。

          3) 滿足需求,是啊!提起這個(gè)需求,每一個(gè)程序員都會(huì)有好多的苦水要倒出來(lái)。為什么滿足需求就這么難呢?因?yàn)椋瑢?duì)于程序員來(lái)說(shuō),那是另外一個(gè)世界(這是比較客氣的說(shuō)法),那些提需求的家伙根本不懂怎么說(shuō)話(這個(gè)說(shuō)法稍為激烈一些),那是一些不知道自己要什么的蠢貨(你遇到過(guò)這樣的用戶嗎?)作為程序員,我知道我有很多同行,非常苦惱于與客戶談需求這樣的任務(wù)——“至少電腦不會(huì)出現(xiàn)前后矛盾的邏輯錯(cuò)誤”——這就是做程序員的難處。如果我們不僅僅是抱怨的話,也必須承認(rèn),程序員是非常挑戰(zhàn)的職業(yè),一個(gè)好的程序員,不但得是軟件開(kāi)發(fā)領(lǐng)域的專家,還得是他開(kāi)發(fā)的那一類軟件所在領(lǐng)域的專家。但事實(shí)上,其他行業(yè)的人,只需要做一種專家就能夠混得很好了。

            軟件開(kāi)發(fā)的實(shí)質(zhì),與軟件開(kāi)發(fā)的特征之間,還是有區(qū)別的。畢竟我的前一篇文章,是從技術(shù)的角度出發(fā)來(lái)看軟件開(kāi)發(fā),而現(xiàn)在我們的要討論的是從管理的角度來(lái)看待,它又有哪些特征呢?

            軟件開(kāi)發(fā)的管理特征,在外行看來(lái),也就是一堆人在做個(gè)東西。但是,軟件開(kāi)發(fā)的獨(dú)特之處就在于,軟件開(kāi)發(fā)是由一堆獨(dú)特的人,以獨(dú)特的方式,做獨(dú)特的東西。我們先來(lái)看看軟件開(kāi)發(fā),遇到了哪些獨(dú)特的困難:

           

            1、溝通困難:同為軟件開(kāi)發(fā),可能面對(duì)的思維模式,是完全不同的世界。比如二進(jìn)制的世界,函數(shù)的世界、邏輯的世界、過(guò)程的世界、對(duì)象的世界、二維表的世界等等等等。在這些不同的世界中開(kāi)發(fā)軟件,需要的思考方式、思維習(xí)慣都是不同的。開(kāi)發(fā)項(xiàng)目大到一定程度以后,不同的世界必須在一個(gè)完整的項(xiàng)目中和諧并存,這些差異,有時(shí)候就會(huì)帶來(lái)溝通障礙。再加上技術(shù)與需求世界之間的差異,溝通成為一個(gè)非常重要的工作。軟件開(kāi)發(fā)中的人與事,如何才能有效溝通,是一個(gè)非常重大的課題。

            2、控制困難:程序員都是些怪人,至少都是些聰明人。要讓他們聽(tīng)話,很難啊。一個(gè)項(xiàng)目,要想順利進(jìn)行,程序員們能夠接受的,必須是“穩(wěn)定而合理的命令”。而在軟件開(kāi)發(fā)過(guò)程中,往往需求頻繁變動(dòng),領(lǐng)導(dǎo)層層疊疊,用戶花樣百出,計(jì)劃一改再改。程序員們經(jīng)常會(huì)接到朝令夕改的命令,而且還來(lái)自于那些莫名其妙,連說(shuō)話的邏輯都成問(wèn)題的家伙。如何才能知道,那些小伙子是在嚴(yán)格地執(zhí)行命令而不是在那里磨洋工呢?

            3、評(píng)價(jià)困難:要控制,必須要能夠賞善罰惡,但是在軟件開(kāi)發(fā)中,何為善?何為惡?如何評(píng)價(jià)一個(gè)程序員的工作?我們當(dāng)然可以在項(xiàng)目計(jì)劃該結(jié)束的時(shí)候,再去問(wèn)他們,做完了嗎?但是如果他們那時(shí)候沒(méi)有完成,再要挽救就來(lái)不及了。必須在項(xiàng)目開(kāi)發(fā)過(guò)程中建立即使有效的反饋機(jī)制。以小而高密度的評(píng)價(jià)手段,來(lái)對(duì)開(kāi)發(fā)過(guò)程進(jìn)行較為準(zhǔn)確的控制,這一切,都必須建立在合理的評(píng)價(jià)機(jī)制的基礎(chǔ)上。但是,這樣一套評(píng)價(jià)機(jī)制,非常困難。什么才算是好的需求分析?好的代碼?好的設(shè)計(jì)?好的測(cè)試用例?沒(méi)有定論。舉個(gè)例子:兩三年前,在項(xiàng)目中加入EJB的成分,越多越好。現(xiàn)在呢?設(shè)計(jì)人員,隨時(shí)都可能被人指責(zé)濫用EJB。這風(fēng)向變得也太快了。

            4、估算困難:這個(gè)在上一章我們也討論到了,軟件開(kāi)發(fā)與其它行業(yè)的一個(gè)重大區(qū)別,就在于對(duì)于軟件開(kāi)發(fā)的估算成本,不能忽略不計(jì)。想要估算變動(dòng)劇烈的項(xiàng)目的時(shí)間、人力、成本,簡(jiǎn)直就是不可能的任務(wù)。

           

            怎么辦?

           

          (未完待續(xù))


          文章來(lái)源:http://spaces.msn.com/members/zbw25/Blog/cns!1pA6-3FOo9yNp_4lmEHxdDqA!693.entry
          posted @ 2005-11-11 08:55 讀書、思考、生活 閱讀(199) | 評(píng)論 (0)編輯 收藏
          僅列出標(biāo)題
          共6頁(yè): 上一頁(yè) 1 2 3 4 5 6 下一頁(yè) 
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(20)

          隨筆檔案

          友情BLOG

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 枣庄市| 红桥区| 阿坝| 红安县| 二连浩特市| 利川市| 仙居县| 江津市| 东乌| 左权县| 平塘县| 视频| 蒙城县| 清流县| 浦县| 景洪市| 元阳县| 永寿县| 平昌县| 上栗县| 绥滨县| 五家渠市| 芜湖县| 武威市| 阳山县| 左云县| 合作市| 珠海市| 海阳市| 吴忠市| 光泽县| 新平| 仙桃市| 陕西省| 大安市| 丰县| 伊川县| 亚东县| 平泉县| 河西区| 突泉县|