DANCE WITH JAVA

          開發出高質量的系統

          常用鏈接

          統計

          積分與排名

          好友之家

          最新評論

          胡思亂想軟件開發

          一天晚上睡不著覺,無聊,亂想,遂有如下文章:寫完之后發現很多漏洞,呵呵。不過也有些可取之處
          發上來留個紀念吧。
          軟件開發中,有一些方法被反復利用:抽象,泛型,折中。所以試著以這些方法來分析軟件開發的過程。

          人類的行為大部分可以抽象成這樣:????????????? ?
          過程一、目標---實施--->成功
          過程二、目標---實施--->失敗
          大部分人都希望走過程一這樣的路,如何在軟件開發中走好一這條路呢,下邊開始分析。

          軟件公司的目標:
          獲取利潤-->保住利潤-->減少成本
          軟件公司的實施:
          開發軟件,賣出-->不退貨賠款,增加回頭客-->壓縮成本。
          軟件公司的成功方法:
          保證實施過程路線正確,并順利進行。對應實施的過程,如下
          軟件符合需求-->Bug少,性能高-->開發成本少,維護成本少.

          在開始長篇大論之前,插播一段:
          記得不知道誰說過:"沒有一定成功的方法,但可以通過了解失敗的方法來提高成功率".我想這也是人們喜歡
          排除法的原因吧。本文的很多思想來自這個標準.
          --------------------------------------------------------------------------
          一、開發出符合需求的軟件:
          1、開發出不符合需求軟件的原因:
          ?(1)、需求挖掘不夠????? (前期需求挖掘不夠)??????
          ?(2)、人員流動???????? (大量骨干人才在項目進行期流失)
          ?(3)、實現力不夠??????? (技術儲備,人才儲備不夠)
          ?(4)、反饋不夠????????? (有這樣一種情況,客戶的需求是現實中不可能實現的,要說服客戶做一些放棄)
          2、解決上邊問題的一些方法:
          ?(1)、RUP 文檔 溝通
          ?(2)、文檔 企業文化 管理
          ?(3)、技術積累 人才儲備
          ?(4)、溝通
          總結:仔細分析下來,發現在這個過程中,技術人員占的比例很小,仔細考慮一下,這也是很多公司不重視技術
          人員的原因,因為他們的要求是作出符合用戶需求的軟件,賣出去就好了。因為在這個環節技術人員不是主導,
          只要招聘的到開發人員來做軟件就好.(中國最不缺的就是人),這個話題還是不多說的好.
          二、開發出Bug少、性能高的軟件
          1、Bug多、性能低下的原因:
          ?(1)、測試力度不夠
          ?(2)、管理混亂
          ?(3)、開發人員責任心與技術不夠
          2、解決上邊問題的方法:
          ?(1)、專門的測試小組,對測試的重視程度,測試完善程度(是否有單體、集成、壓力等測試)
          ??? (2)、有完善的質量管理體系和方法(例如bugtrace QA Junit等測試軟件的使用 責任明確)
          ??? (3)、企業文化、內部技術交流、引進人才
          總結:在這個問題上,技術人員的主導作用在大幅提高,Bug的多少主要取決于測試的投入力度和規范化
          性能的高低,主要取決于開發人員的素質,對開發語言,使用框架,數據庫等的了解程度和追求高質量的心態.
          三、減少成本,經驗表明,減少軟件成本的主要方法是減少維護成本.
          1、增加維護成本的原因:
          ?(1)、軟件總體設計混亂,結構不清晰
          ?(2)、代碼編寫的濫(命名不規范? 注釋不夠? 縮進混亂? 邏輯不清晰)
          ?(3)、文檔的保存和維護
          2、解決方法:
          ?(1)、設計模式?? 管理方法(建議看看<<人月神話>>這本書)
          ?(2)、編碼規范
          ?(3)、CMM ISO等
          --------------------------------------------------------------------------------
          大部分在學習一門語言的時候喜歡看一下Hello World,所以寫個HelloWorld體現一下上邊的過程
          (只從某個角度)
          一、demo版本Hello World

          1 public ? class ?HelloWorld? {
          2 ???? public ? static ? void ?main(String[]?args)? {
          3 ????????System.out.println( " Hello?World! " );
          4 ????}

          5 }
          二、符合需求的Hello World
          1,經過需求調研,客戶需要頻繁輸出HelloWorld,而不是一次
          1public?class?HelloWorldOne?{
          2????public?static?void?main(String[]?args)?{
          3????????while(true){????????????
          4????????????System.out.println("Hello?World!");
          5????????}

          6????}

          7}
          馬上實現一個簡單符合客戶需求的原型,交給客戶,讓客戶看一下。
          2,客戶反饋說不需要如此頻繁的輸出,只要一般速度就可以了
          ?1public?class?HelloWorldThree?{
          ?2????public?static?void?main(String[]?args)?{
          ?3????????while(true){
          ?4????????????try{
          ?5????????????????Date?date?=?new?Date();
          ?6????????????????if?(date.getSeconds()%3==0){
          ?7????????????????????System.out.println("Hello?World!");
          ?8????????????????}

          ?9????????????}
          catch(Exception?e){
          10????????????}

          11????????}

          12????}

          13}
          改一下原型,給客戶看
          3,客戶再次反饋說我們需要是上午快點,下午慢點的的Hello World
          ?1import?java.util.Date;
          ?2public?class?HelloWorldTwo?{
          ?3????public?static?void?main(String[]?args)?{
          ?4????????while(true){
          ?5????????????try{
          ?6????????????????Date?date?=?new?Date();
          ?7????????????????if(date.getHours()<12){
          ?8????????????????????if(date.getSeconds()%2?==0){
          ?9????????????????????????System.out.println("Hello?World!");
          10????????????????????}

          11????????????????}
          else{
          12????????????????????if(date.getSeconds()%10?==0){
          13????????????????????????System.out.println("Hello?World!");
          14????????????????????}

          15????????????????}

          16????????????}
          catch(Exception?e){
          17????????????}

          18????????}

          19????}

          20}
          4、......如此繼續
          5、客戶提出要求,能不能開發出我想快就快,想慢就慢的程序
          明確告訴他,這個是不可能的。
          三、提高性能
          ?1import?java.util.Date;
          ?2public?class?HelloWorld?{
          ?3????public?static?void?main(String[]?args){
          ?4????????while(true){
          ?5????????????try{
          ?6????????????????System.out.println("Hello?World!");
          ?7????????????????Date?date?=?new?Date();
          ?8????????????????int?hour?=?date.getHours();
          ?9????????????????if(hour>8?&&?hour<12){
          10????????????????????Thread.currentThread().sleep(2000);
          11????????????????}
          else?if(hour?>13?&&?hour?<17){
          12????????????????????Thread.currentThread().sleep(10000);
          13????????????????}
          else{
          14????????????????????Thread.currentThread().sleep(1000*60*60);
          15????????????????}

          16????????????}
          catch(Exception?e){
          17????????????}

          18????????}

          19????}

          20}
          四、增加可維護性
          import?java.util.Date;
          public?class?HelloWorld?{
          ????
          ????
          public?static?void?main(String[]?args){
          ????????run(
          8,12,13,17);
          ????}

          ????/
          //**
          ????*四個參數依次是??上午上班時間?,上午下班時間,下午上班時間,下午下班時間
          ????
          */

          ????
          public?static?void?run(int?start1,int?end1,int?start2,int?end2){
          ????????
          while(true){
          ????????????
          try{
          ????????????????System.out.println(
          "Hello?World!");
          ????????????????Date?date?
          =?new?Date();
          ????????????????
          int?hour?=?date.getHours();
          ????????????????
          if(hour>start1?&&?hour<end1){
          ????????????????????Thread.currentThread().sleep(
          2000);
          ????????????????}
          else?if(hour?>=start2?&&?hour?<end2){
          ????????????????????Thread.currentThread().sleep(
          10000);
          ????????????????}
          else{
          ????????????????????Thread.currentThread().sleep(
          1000*60*60);
          ????????????????}

          ????????????}
          catch(Exception?e){
          ????????????}

          ????????}

          ????}

          }

          posted on 2006-11-22 05:22 dreamstone 閱讀(759) 評論(1)  編輯  收藏 所屬分類: 牢騷

          評論

          # re: 胡思亂想軟件開發 2006-12-20 10:52 Tony[匿名]

          呵呵,挺有趣的。這種逐步深入優化的想法很好,我要時刻注意了。  回復  更多評論   

          # re: 胡思亂想軟件開發 2007-08-28 13:40 姜利陽

          不錯  回復  更多評論   

          主站蜘蛛池模板: 白朗县| 泰州市| 肃宁县| 吴旗县| 平南县| 青河县| 毕节市| 通渭县| 方城县| 南丹县| 华亭县| 永丰县| 吉隆县| 冀州市| 柳河县| 横峰县| 金昌市| 特克斯县| 鲁山县| 平武县| 伊吾县| 五大连池市| 澄城县| 大姚县| 南郑县| 福泉市| 城口县| 石屏县| 金湖县| 基隆市| 宣汉县| 烟台市| 玉门市| 青岛市| 福海县| 当涂县| 伊宁市| 宁都县| 镇坪县| 靖远县| 商河县|