下個月受軟協的邀請,要跟國內發展雲端服務的廠商講一場演講,原本想講的是 Coda Hale 的 metrics library 的使用 不過跟軟協的詹副秘書長聊了一聊後,決定把主題改成 軟體品質 ,畢竟,太偏實作的東西,拿來給 中高階主管聽,可能會睡著吧 XD

軟體品質指標

一般我們在談軟體績效指標時,多講的是 Lines Of Code, Number of Functions, Number of Classes , Cohesion and Coupling, Test Coverage 等,但是,我今天想講的不是這些靜態分析所使 用的指標,而是在程式運行時的評量指標 Production/Runtime Quality Metrics。

這些執行階段的品質指標,讓我們了解程式在運行時的效率(performance),可靠度(reliability),可 用度(availability),維護性(maintainability)等重要問題。

為什麼我們要在意這些指標

在台灣的許多軟體公司可能會問,為什麼我們需要在意這些指標?這些指標又不能拿來賣,客戶在意的 是功能及價錢,開發客戶所需要的功能及尋找客戶,比做這些沒辦法拿來賣錢的東西重要多了。部份中小 企業主認為,找案子跟找錢,才是軟體公司生存之道,軟體品質,是可以在案子簽下來後甚至結案時在去 關心就好。

/images/2012-05-17/busy_1.png /images/2012-05-17/busy_2.png

但是,如果我們換一個角度來看,這些執行階段的指標,也可以是軟體功能的一環,可以當做銷售時期 的功能及策略性武器來看;試想,若是有兩家小公司來賣你雲端服務,一間滿口都是功能可以做到OOXX ,我們的服務是一條龍,什麼都做的到。另一間則是把功能的項目清楚的定意出來,同時也告訴你,他們 的服務同時可以服務多少客戶、過去的停機維修週期是多少、他們可以保障的可靠度是多少;身為專案採 購人員的你,會比較 信任 那一家的說法呢?

軟體賣的就是信任

軟體賣的就是信任,信任你的軟體,不會出問題把客戶的重要商業資料、商業流程、及客戶關係都一起毀掉。

在過去單機板的軟體環境下,軟體賣的是
  • 信任軟體的功能有達到預期目標
  • 信任軟體不管跑多少次,都有一致性的輸出
  • 信任軟體的資料儲存是可靠的
  • 信任軟體的資料可以轉換到另一個昇級版本或其它軟體

許多單機版或 2-Tier 的程式,經過時間的證明,他們的生命週期,甚至超過了開發者的生命週期,許多 國內百貨零售業用的進銷存系統,目前仍是在用20年前的 DOS 系統就是一例。對客戶來說,他們對這些DOS版 軟體的信任,超越了新科技所帶來的新功能需求。只要更新硬體,他們就可以繼續使用這些軟體,甚至是享受新 硬體所帶來的更高效能。

信任 在雲端服務上,更是重要;在享受雲端服務的便利的另一方面,雲端服務的使用者更是需要放更多 的信任在服務提供商上,除了上述的信任外,客戶還要信任你的服務可以隨著他的服務及你的服務一起增長。

Slashdot Effect

在談服務的可靠度時,我常用 slashdot effect 來當例子,換成中文就是「爆紅效應」,slashdot 是 國外一個很大的科技網站,一登上 slashdot 的首頁,在短短的一天內,就可以帶來數十萬的訪問數及數萬的註 冊會員,然而,爆紅後帶來的往往是個災難,許多的軟體在設計、佈建(deployment)時,並沒有考量到會有這麼 大量的用戶,因此一爆紅後往往就是停機收場。

overnight success turns into overnight disaster. 爆紅後,留下的是一些不滿意的負面記錄, 讓客戶及潛在客戶,喪失了對服務的信任;在這個有 Google 等搜尋引擎的年代,過去的不良記錄將永久留 存在網路上,因此,服務的 可延展性(Scalability & Elasticity) 變的格外重要。

如何建立信任

信任是個很抽象的名詞,你摸不到看不到,但是卻在人與人的往來,無形中慢慢的形成;信任就如宗教信仰一樣, 你無法買到,無法強迫別人去接受、也無法一促即成,只能一步步的去建立。

但是,我們是軟體工程師,我們信仰的是科學、是工程技術、是數字管理,我們善長的是透過科學的研究手法, 一步步的去拆解問題,弄清楚什麼是已知的事實,什麼是未知的問題,面對問題,解決問題。

販賣口號,不是軟體工程師所善長及該做的。

/images/2012-05-17/we-can-do-it.jpg

可量化的軟體品質就是信任的來源

對於中小企業及新進入雲端服務的公司,「可量化的軟體品質指標」就是可以最快取得客戶信任的方式;我希望 在未來的某一天,我可以聽見台灣的軟體公司是這麼介紹自己的產品

我們的網路服務,能夠同時服務兩百萬上線用戶,提供 50ms 以下的即時性的反應,我們的服務,整合了超過 40個內部及外部的開發商客戶,在過去的兩年內,我們提供了 99% availability ; Agile 的開發流程, 讓我們有一致的服務更新週期,面對軟體 Bug 我們能夠提供客戶一個預計的修正時間,並準時將補丁上線。

待續...