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

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

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

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


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

     

    網上有人貼出了直接計算的代碼,在這里,填入你的Blog地址即可。


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

      我是豆瓣的會員,又用的是MSN Spaces的BLOG,目前用得還不錯,都不打算退出。但是豆瓣提供的那個豆瓣秀服務,在MSN Spaces上用不成

      沒辦法,只能自己動手了。實際效果,見:http://spaces.msn.com/members/zbw25/

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

      3、下載一個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、寫一個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     //根據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     //根據url,取得文字
     28     private static String getImageText(String url){
     29         try {
     30             URL u=new URL(url);
     31             URLConnection uc=u.openConnection();
     32 
     33             //要做足功夫,不然豆瓣就會拒絕你的請求
     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是一個輔助工具,就不再給出了
     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         //取得參數
     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             //設置JMagick的ClassLoader,否則會報錯
     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             //申請一個數組
     74             MagickImage images[] = new MagickImage[getSize];
     75 
     76             //用最簡單的辦法解析字符串,因為豆瓣的輸出是固定的
     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                     //根據圖片大小的設定,解析有所不同
     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             //建立一個圖片組
     97             MagickImage seqImage = new MagickImage(images);
     98 
     99             //建立一個圖片框架
    100             MontageInfo montageInfo = new MontageInfo(new ImageInfo());
    101 
    102             //setGeometry(String)設置圖片的幾何特征
    103             if(picsize.equals("medium")){
    104                 montageInfo.setGeometry("99x149+1+1>");
    105             } else {
    106                 montageInfo.setGeometry("66x99+1+1>");
    107             }
    108 
    109             //NxM的一個表格
    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             //通過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 讀書、思考、生活 閱讀(1247) | 評論 (2)編輯 收藏
    新家注冊成功,特此告示。
    posted @ 2005-11-14 15:25 讀書、思考、生活 閱讀(148) | 評論 (0)編輯 收藏
      昨天我老婆也看完了余華的《兄弟》,突然想到兒子的發展趨勢,我們兩個人討論了一下,認為如果宋凡平不死的話,李光頭也不至于那么墮落。所以我們的兒子就算不能成為宋鋼,起碼也不至于成為李光頭吧。
     
      家里請了一個鐘點工阿姨,每天4點來,6點走。一般快到6點的時候,點點就會一直頭轉來轉去的盯著阿姨看。那意思是,阿姨你怎么還不走呀?我好跟你說再見呀。
     
      今天快到點的時候,我兒子也是一直盯著阿姨看。看到阿姨走到門口,彎腰下去穿鞋,褲子的腰比較低。然后我兒子就笑起來了:“阿姨的屁股都露出來了。”
     
      點點、爺爺、還有我,我們三個男的都面無表情的坐在那里。奶奶一個人在那里狂笑。阿姨的臉通紅。我心里在想:“完了,家里真的出了‘李光頭’了。”
     
     

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

    1) 軟件開發所處的環境,不僅僅是一個限制,同時也是一個可能性。軟件的能力,局限性與硬件的能力,比如說,如果計算機沒有喇叭,那么任何軟件都不能使計算機播放音樂。但是,另一個必須考慮的方面是,同樣有能力發聲的計算機,要想使他播放音樂,可能很容易,也可能很困難。用專業一點話來描述就是:“有些硬件的API設計很合理,有些則非常愚蠢。”由于我們對于軟、硬件的定義是一個連續體,因此,這個觀點不只是可以用來評價硬件API設計,也可以用來評價語言、虛擬機、框架、平臺等等軟件的一個方面的優缺點——是否有利于二次開發,這是一個重要的評價標準。

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

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

      軟件開發的實質,與軟件開發的特征之間,還是有區別的。畢竟我的前一篇文章,是從技術的角度出發來看軟件開發,而現在我們的要討論的是從管理的角度來看待,它又有哪些特征呢?

      軟件開發的管理特征,在外行看來,也就是一堆人在做個東西。但是,軟件開發的獨特之處就在于,軟件開發是由一堆獨特的人,以獨特的方式,做獨特的東西。我們先來看看軟件開發,遇到了哪些獨特的困難:

     

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

      2、控制困難:程序員都是些怪人,至少都是些聰明人。要讓他們聽話,很難啊。一個項目,要想順利進行,程序員們能夠接受的,必須是“穩定而合理的命令”。而在軟件開發過程中,往往需求頻繁變動,領導層層疊疊,用戶花樣百出,計劃一改再改。程序員們經常會接到朝令夕改的命令,而且還來自于那些莫名其妙,連說話的邏輯都成問題的家伙。如何才能知道,那些小伙子是在嚴格地執行命令而不是在那里磨洋工呢?

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

      4、估算困難:這個在上一章我們也討論到了,軟件開發與其它行業的一個重大區別,就在于對于軟件開發的估算成本,不能忽略不計。想要估算變動劇烈的項目的時間、人力、成本,簡直就是不可能的任務。

     

      怎么辦?

     

    (未完待續)


    文章來源:http://spaces.msn.com/members/zbw25/Blog/cns!1pA6-3FOo9yNp_4lmEHxdDqA!693.entry
    posted @ 2005-11-11 08:55 讀書、思考、生活 閱讀(198) | 評論 (0)編輯 收藏
    僅列出標題
    共6頁: 上一頁 1 2 3 4 5 6 下一頁 
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(20)

    隨筆檔案

    友情BLOG

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲网站视频在线观看| 无码午夜成人1000部免费视频| 亚洲福利视频网站| 最新精品亚洲成a人在线观看| 成人人观看的免费毛片| 久久精品免费视频观看| 性生大片视频免费观看一级| 国产亚洲精aa在线看| 亚洲日韩图片专区第1页| 亚洲国产成人精品无码久久久久久综合 | 免费视频淫片aa毛片| 99久久人妻精品免费一区| 亚洲视频在线免费| 国产亚洲精品仙踪林在线播放| 亚洲国产成人资源在线软件| 亚洲AV无码国产精品色午友在线| 亚洲?V乱码久久精品蜜桃 | 78成人精品电影在线播放日韩精品电影一区亚洲 | 国产亚洲美女精品久久久久狼| 国产人妖ts在线观看免费视频| 18国产精品白浆在线观看免费| 午夜网站在线观看免费完整高清观看 | 亚洲视频免费播放| 久久永久免费人妻精品| 精品国产福利尤物免费| 男人扒开添女人下部免费视频| 国内成人精品亚洲日本语音| 亚洲精品人成网线在线播放va| 精品亚洲成在人线AV无码| 亚洲成a人片7777| 亚洲小视频在线播放| 91亚洲视频在线观看| 亚洲精品国产啊女成拍色拍| 亚洲三级电影网站| 亚洲第一区视频在线观看| 亚洲国产精品一区二区久| 亚洲五月综合缴情婷婷| 在线观看亚洲AV每日更新无码| 亚洲中文字幕一二三四区| 亚洲熟妇AV乱码在线观看| 亚洲爆乳无码专区www|