編寫職業水準的程式

來源:互聯網
上載者:User

 

                                                         編寫職業水準的程式

 

         編寫職業水準的程式?是的,一點沒錯。高品質的或藝術級的程式境界,咱不敢奢望,但要真正從事軟體開發行業,職業水準的要求還是應當滿足的。

         說到職業水準,自然是說對程式有一定要求了。那麼,一個程式需要達到怎樣的程度,才算是職業水準呢?眾所周知,一個程式所具備的品質特徵主要有:功能、效能、可靠性、安全性、可用性、可移植性、可維護性。這些品質屬性的基本含義可參見《高品質程式設計藝術》(''Code
Quality --- The Open Source Perspective'')一書的第一章。這裡,根據自己對讀到的相關材料的理解,進行了歸納和總結。

 

           
1.
程式的正確性

            程式是否實現了預期指定的功能?這當然取決於是否精確定義了程式的功能,即對於典型的輸入,程式將輸出怎樣的結果。“精確”這兩字聽上去很美妙,其實蘊涵了“巨細無遺、婆婆媽媽”之義;另外,這裡是“典型”,而不是“所有”。通常“所有”意味著“無限”,而儘管人類對無限有了基本的認識和操作工具,在實踐上仍是難以驗證的。用某人的話說,無限是上帝的領地,凡人不可進入。

            將“所有”化解為“典型”,退而求其次,這是程式開發中採取的首要折衷。程式開發人員必須善於折衷和權衡。哎,還沒開始,就得面臨這般境地,實在讓人難以釋懷阿!

            快速做出一個原型系統,然後不斷改進它,精益求精。實現正確性的通用步驟:細緻分析問題--->精確定義程式的典型輸入輸出--->編寫測試--->實現代碼。最後,用一句著名的話作為正確性的結尾:Firstmake
it right, then make it good.

 

           
2.程式的效能

            應用對程式是否有額外的效能要求?對於某些應用來說,通常是時間和空間上的限制(例如,即時系統對回應時間的苛求,嵌入式系統對儲存空間的限制)。程式員大多有一種追求完美的傾向,並且通常以達到更快的速度和更小的記憶體的實現方案和技巧為榮為傲;其代價是可讀性和可維護性相對較差。然而,借用諸多專家的話:過早最佳化有害無益,因此,除非使用已有成熟演算法可以直接獲得或不得不達到更好的效能,否則,不必要過早和過度追求效能。

            定義程式的可接受效能,並通過演算法數學分析和程式測量技術確保一定滿足它。

 

           
3.程式的可靠性

            程式在正常情況下(絕大多數時候)能夠良好運行,那麼,程式在特定或特殊情況下是否能夠依然保持良好地運行,或者保持一定的效能層級?是否有隱藏的微小邏輯錯誤?

            比如對於非法輸入的處理;是否可能出現越界錯誤;不成熟的演算法;沒有覆蓋的代碼路徑;輸出缺失;高負載時能否保持可接受的回應時間和輸送量等。

 

 

          
4.程式安全性:        

        程式在遭受無意的或惡意的攻擊時是否能夠穩定健壯地運行而不受其擾或者不泄漏重要資料,甚至化解攻擊?

        安全性和可靠性的重要性是不言而喻的;沒有安全性和可靠性,系統就只是一個玩具,企業的信譽也可能因此遭受重大損失。

 

          
5.程式的可用性

          可用性主要是指程式的外部品質屬性,即系統的介面是否實用美觀?是否便於使用和操作,符合使用者習慣?該軟體是否易學易用?很顯然,可用性也是非常重要的,特別是涉及與終端使用者互動的應用。

 

          
6.程式可維護性

           程式排版是否美觀易讀?所使用思路和演算法是否容易理解?程式中的不易理解的部分是否有相應的注釋?是否有配套的簡潔扼要的文檔說明?如何應對所面臨的應用中的變化和變動?

 

          
7.程式可移植性

           在某個特定平台運行良好的程式能夠在另一個平台上良好運行嗎?或者使之良好運行所需要做的改變有多大?這裡的“平台”可能包括:CPU硬體體繫結構、作業系統、編譯器與語言特性擴充、GUI介面、國際化和本土化等。

          可移植性並非不重要,但基於現實中各種平台之間仍然存在較大的分歧,並且,多數應用可能特定於某種平台,除非系統有明確的可移植性要求,可以放在最後考慮。

 

         
8.
程式品質排序

          冰凍三尺,非一日之寒。在現實中,一方面,由於這些品質屬性往往是相互衝突相互制約的;另一方面,基於進度、成本及程式員自身編程水平的考慮,往往也不可能使程式達到如此藝術的程度,因此,必須對程式品質屬性作出合理的折衷和權衡,作為實際中編程開發的準則。

 

        程式品質排序取決於實際的應用需求。這雷根據自己的理解,僅給出一個一般參考:

 

[1]功能與正確性[使用中的外部屬性,可由外部直接感知,敏感程度高,容忍度低]

[2]可接受的效能[使用中的外部屬性,可由外部感知,敏感程度高,容忍度低]

[3]可靠性[使用中的外部屬性,可由外部感知,敏感程度一般,容忍度很低]

[4]安全性[使用中的外部屬性,通常不易感知,敏感程度高,容忍度極低]

[5]可用性[使用中的外部屬性,易由外部感知,敏感程度高,容忍度較低]

[6]可維護性[開發過程中的內部屬性]

[7]可移植性[使用中的外部屬性,可由外部感知,敏感程度較低,容忍度較高]


 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.