淺談軟件開發中的防護式編程

  在軟件開發中針對用戶的輸入每每不是咱們所期待的那樣(不知足前置條件),有時候軟件內部每每也會出現一些咱們不易察覺的錯誤,針對這種狀況,一些人持有樂觀的態度,而另一些人則從一個其餘的事情中獲得了啓發:即由防護式駕駛而想到的防護式編程。程序員

  所謂防護式編程,指的就是這樣一件事情:即咱們假定使用者都是白癡,他們可能在輸入時進行各類各樣的操做,這來源於防護式駕駛:即假定路上開車的都是瘋子,你要提早制定策略防止他們撞到你或者你撞到他們,所以你必需要保證萬無一失,而不是採起投機取巧的方法。心理學上有一個定律叫作墨菲定律,即任何你認爲不會發生的事都有可能發生。編程

  在軟件開發中也正是如此,好比咱們想開發一個航班管理系統,在用戶進行必定的輸入以後就會將全部的航班信息展現到顯示屏上。可是事情每每不順遂人意。用戶可能輸入並不存在的飛機,發往並不存在的機場,用戶也可能和你玩惡做劇,爲航班不分配飛機,那樣的話全部人就只能乾等。諸如此類,這僅僅是一個小小的例子,若是機場信息版出了問題可能還不是什麼大毛病,可是假如這個開發機場管理系統的人同時也去開發了銀行管理系統,那結果可能就不太樂觀了。前些天美國用百萬年薪來招聘一些會上古語言的老程序員,由於這些程序設計語言被用做銀行管理系統幾十年,中間並無出過什麼大問題,所以一直沒有進行更新換代和相應的維護,從中咱們也能夠窺見一個魯棒性較強的平臺是多麼重要,這幾十年維護省下來的錢可能也能用於更多的用途吧(;》)設計模式

  ok,當咱們瞭解到防護式編程的意義以後,咱們就須要考慮怎樣實現防護式編程,具體而言有如下幾個方法:設計

  

  ▪Protecting programs from invalid inputsci

  ▪ Assertions開發

  ▪ Exceptionsinput

   ▪ Specific error handling techniquesio

   ▪ Barricade程序設計

   ▪ Debugging aids軟件

  在這裏我並不打算展開講述,具體可參考MIT 軟件構造課程的課件。我只想說一下里面的Barricade,這個所謂的障礙物模式,其實是將程序內部與外界隔離開,咱們經過人爲的設置防火牆,來規避那些外界可能存在的風險,有點像設計模式中的proxy,經過中介來進行數據處理交換,將風險委託給別人,也不失爲一種很好的開發策略。

相關文章
相關標籤/搜索