從 Java 談軟體開發流程 轉載

來源:互聯網
上載者:User
開發大型項目有三項非常重要的因素,將會影響整個項目的進度與品質,分別是人( people )、流程( process )與技術( technology )。

這三個要素是環環相扣 的,任何一項要素的成敗都會影響另外兩個要素,而每個要素也都足以影響一個項目的成敗。如何取得這三者的平衡,並將每個要素充份的發揮,取決於管理者的經驗,與相關開發人員的素質,這不是一項簡單容易的任務,但有好的方法可以完成。

Java 彈性多選擇 資源豐富任君挑選

「技術」應該是最容易掌握的部份,因為你選擇了 Java 。如前所述,全世界已有許多 Java 資源可以選擇。某些人可能會認為 Java 技術門坎高,考慮訓練成本而決定匯入較為簡易的程式語言,如 VB.Net ,或是不敢轉換到 Java 平台。事實上,真正困難的不是 Java 程式語言或是 API 的使用,而是整個對象導向程式設計的概念。 C# 也標榜與 Java 有著類似的對象導向架構,除執行平台不同、 API 的名稱不同,本質與 Java 可以算是巒生兄妹,怎麼沒聽有人抱怨 C# 很難學?

既然 Java 、 .Net 門坎是一樣的,那該如何選擇?答案是,你喜歡誰就選誰。只是當你決定投靠其中一個陣營時,不妨想想一件事:「在這個平台上,我是不是有選擇的空間與自由?」 Java 是一開放的技術、平台,可執行於各類作業平台,還有各式各樣的開發工具、 API 套件與執行環境,包括商業、免費、開放源碼等豐富資源 任 君挑選。

流程關乎項目預算與時間控制

「程式」指的是軟體開發流程或是項目流程,定義流程的目的是要掌控所有的情況。項目的最大敵人是時間及預算,這兩者都是有限的,如何在有限預算內準時完成項目,可說是一項藝術。幸運的是,時間和預算都是可控制的,並不是指我們可以控制時間快慢或長短,而是如何明確知道哪一個時間點,需要何種產出物,而我們有多少的預算可以完成。為有效控制,我們需要一個標準的流程,只要照著規矩走,一切都好辦。

RUP(Rational Unified Process) 就是一種業界常用的不成文規矩,在多數軟體項目中幾乎都會使用的一項語言、方法與工具。 RUP 的精神在於反覆( iterative )與漸近的( incremental ) 。在漸進式的開發過程中,透過不斷的提煉( refine ),可趁早發現問題且找出解決方案,也確保每一工作項目的進度。不過,在架構 (Architecture) 方面, RUP 確實著墨較少,而架構優劣也是足以影響軟體系統成敗的關鍵因素。

QoS(Quality of Service) 或是 SLR(Service Level Requirement) ,我想是每個系統最基本的要求,它包含可用性 ( Availability )、可管理( Manageability )、可信賴( Reliability )、可擴充( Scalability )和安全性( Security )等條件。
 

當系統架構進行規劃時,就應同步考慮這幾項條件。舉例而言,先前某家外商銀行因系統設計不良而導致外人可輕易猜出參數設定的方式,直接入侵系統竊取消費者隱私資料;也有某家電信業者為沒考慮系統的負載量,而導致在耶誕、跨年等重要節日時,湧入大量簡訊的尖峰時期造成服務塞車、系統當機。

在電視新聞中,我們常常可見類似的新聞報導,而背後隱藏的意義是,「當初沒做好系統架構規劃」,看得不夠遠、想得不夠深,等系統開發到一半,或是系統上線後才發現問題,此時再東補西補,為時已晚。

雖說不同的程式技術皆有其滿足 QoS 的方法,相較之下, Java 對上述五大項功能的支援應該算是最為豐富。如在 J2EE 的設計模式( Design Pattern )中,幾乎都是為解決此幾項問題而設計,之後再配合程式語言本身的強固性,開發而成的企業級應用系統,我想應可滿足客戶對於 QoS 的嚴格要求。

 
話說回頭,企業一旦使用 Java 開發一套系統,就一定會是百分百穩定且滿足 QoS 嗎?我想,設計模式跟程式語言無關,將 J2EE 設計模式作為 C# 實作的架構,也未嘗不可,只要能建構出相同安全穩定的環境執行該系統,都是可行的。就像會說國語,未必可寫出漂亮的文章一樣,訓練、經驗再加上一點天份才是最重要的。

專業技術認證可供參考

「人」是項目中最難預料與掌控的一項要素 。人可分成兩部份,一是客戶,二是研發人員。客戶是最難掌握的,不同的客戶有不同的個性,沒有任何人能教導你,如何應付不同的客戶,除了靠運氣,還要靠經驗。

暫不談客戶,先看研發人員這部分。我想,要滿足技術與流程兩項因素,關鍵都是人。如何選擇對且合適的技術,要有專業人才;如何有效管理流程?如何規劃滿足 AMRSS 五項需求的系統架構?這都是需要有經驗的管理人才及架構師( architect )。當然,能不能寫出漂亮且可完善運作的程式碼,也是需要有一定水平的研發人員。

開發程式人員的水平是較容易被認證。 Java 有幾項專業認證,如 SCJP 、 SCJD 、 SCWCD ,都可用以評鑑開發人員基本的功力。另有 SCEA 、 SCBCD 等認證可評鑒程式架構人員的素質。除專業訓練之外,經驗也是一位優秀的架構師所應具備的條件,而程式部份其實也有認證,如 PMP 。

也許你會覺得 Java 很八股,寫程式為什麼需要一大堆檔案、設計模式、程式與方法論( methodology ),邊寫邊設計,且戰且走不行嗎?對於小型系統,或是沒有營運壓力系統而言,是可以的。若果是人力不足、預算有限、結案期限已在眼前,當然也該直接動工。

但依我接觸過案子經驗的深刻體驗,寧願花費較長時間與心力,在項目初期就先詳細規劃,才可節省後期開發的時間,系統上線後也更容易維護與擴充。雖然耕耘過程會較辛苦,但所得好處也會是倍增的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.