架構師寫代碼規範?★Bug,總是令人讨厭的東西那Bug是如何産生的呢?作為高級軟件架構師和軟件測試工程師的易哥将在這篇文章中解答這個問題,下面我們就來說一說關于架構師寫代碼規範?我們一起去了解并探讨一下這個問題吧!
★
Bug,總是令人讨厭的東西。那Bug是如何産生的呢?作為高級軟件架構師和軟件測試工程師的易哥将在這篇文章中解答這個問題。
”
說起Bug,大家都認為它是被“寫”出來的,即主要在開發階段産生。
但其實Bug的産生最有可能是在需求階段(意外吧!這是有統計數據證明的),且在需求階段産生的Bug影響最大。當然,在設計、開發、使用階段也會出現Bug。
接下來我們詳細了解下Bug的相關知識。
Bug,指軟件中的缺陷,它可能會引發軟件失效。
關于軟件中的缺陷被稱為Bug,即蟲子,這是有一段故事的。在早期的計算機中,常采用大量的繼電器,用繼電器的開合來表示二進制。馬克二型計算機就是這樣的。1945年9月9日,下午三點,馬克二型計算機無法正常工作了,技術人員試了很多辦法,最後定位到第70号繼電器出錯。負責人哈珀觀察這個出錯的繼電器,發現一隻飛蛾躺在中間,已經被繼電器打死。她小心地用攝子将蛾子夾出來,用透明膠布帖到“事件記錄本”中,并注明“第一個發現蟲子的實例。”自此之後,引發軟件失效的缺陷,便被稱為Bug。
很抱歉,答案是不能。
任何軟件都有缺陷,這是軟件測試領域的一個真理。
在軟件質量标準中,軟件的可靠度用R(t)表示,它表示在指定的運行條件下,軟件在規定的時間内不發生故障的概率。
一定有R(0)=1,即軟件在初始運行時刻一定是無故障的,否則說明軟件還沒有開發完成,尚不能運行。一定有R( ∞)=0即任何軟件都是有缺陷的,在無限長時間運行後一定會發生故障。
與我們常見的橋梁、樓宇、手機、文具等各類實體産品不同,軟件有一個非常重要的特點:它不會因為複制、運行而發生衰退。
畢竟軟件不會生鏽、老化、分解等。這算是軟件的一大優點。
因此理論上,我們可以通過不斷的投入測試成本來降低軟件發生故障的概率。但即便如此,軟件的故障概率會趨向于0,而永遠不會等于0。
況且,在現實中“不計成本”這種事情是不會發生的。
現實中的軟件往往存在大量缺陷,其一大原因是因為軟件的複雜性。具體可能産生bug的因素會在下節講。
軟件測試十分必要。但是要記住一點,軟件測試不是為了清除軟件中的bug,而是減少軟件中的bug。
這就回到了我們問題的重點,Bug如何産生。
接下來我們按照軟件的生命周期順序一一介紹。
A: 需求錯誤--未知需求
問:這個軟件為什麼不能上傳Excel導入數據?
愣:開發前你有提到過說要用Excel導入數據麼?
B:需求錯誤--未理解需求
問:這個軟件為什麼按鈕文字上沒有拼音?小朋友不認識字啊?
愣:啥?小朋友?啥?拼音?
C:設計錯誤--模型選擇錯誤
問:這兩個操作能不能一起執行啊?
愣:壞了,選的是責任鍊模式,不支持并行啊!
D:設計錯誤--模式選擇錯誤
問:再接一個輸入源好不好?
愣:沒采用适配器模式,不好改啊!咋辦?
F:設計錯誤--框架選擇錯誤
問:好,那我們去手機端看一下頁面。
愣:完了,選的框架不支持動态适配。還看啥啊,界面一定亂了!
G:設計錯誤--并發不達标
問:為什麼人少的時候可以,人一多就會停止服務?
愣:壞了,當時沒考慮這個問題。
H:設計錯誤--兼容性不達标
問:我們升級了一下别的應用,它就不工作了。
愣:壞了,寫死綁定那個應用了,那個應用不能升級啊。
I:設計錯誤--容量不達标
問:數據一多,就存不進去了。
愣:壞了,設計的容量出問題了。
J:開發錯誤--外部依賴缺陷
問:這個地方報錯了。
愣:媽蛋!引用的開源包有問題!
K: 開發錯誤--死循環
問:點一下就死機了。
愣:我看看,你這麼輸入的啊……那,壞了,觸發死循環了。
L: 開發錯誤--越界
問:數個空格進去,就報錯了。
愣:壞了,空格被忽略了,但是計數器沒調整,肯定越界了。
M:開發錯誤--異常未捕獲
問:沒網絡的時候,點一下就死機。
愣:壞了,有異常抛到了最上層。
N:開發錯誤--IO未關閉
問:重啟完機器就正常了,過幾天就沒響應了。
愣:搞半天,每次操作都忘關IO了,導緻socket被耗盡。
O:開發錯誤--空指針異常
問:突然就死掉了。
愣:原來是,文件沒找到,報了NullPoniterException。
P:開發錯誤--變量混亂
問:輸出的結果,驢唇不對馬嘴。
愣:我去,變量wife和wifi用混了。
Q:開發錯誤--手誤
問:為什麼顯示“下樓好”?。
愣: 奧,輸錯了,應該是“下午好”。
R: 開發錯誤--日志未關閉
問:硬盤被打滿了!
愣:是不是正式版忘了關調試日志?
S: 開發錯誤--内存未初始化
問:第一遍運行正常,第二遍就有亂碼。
愣:難不成,變量沒初始化?
T: 開發錯誤--類型轉換異常
問:全數字的身份證号是沒問題的,一輸入後面帶字母X的就報錯。
愣:壞了,把身份證号當數字處理了。
U: 開發錯誤--顔色設置錯誤
問:為啥他登陸後名字是綠色的?
愣:奧,錯了,應該是背景是綠色的,弄混了!
V: 開發錯誤--忘記屏蔽
問:為啥她能看到我的密碼?
愣:我去,大問題!忘了脫密了!
W: 使用錯誤--忘記插線
問:為啥鼠标無法操作?
愣:我去,你鼠标線都沒插。
X: 使用錯誤--輸入錯誤
問:為什麼總是說信息輸入錯誤?
愣:你為什麼在“姓名”欄位寫個“男”
Y: 使用錯誤--理解功能錯誤
問:為啥你的軟件不能顯示附近的人?
愣:這是外賣軟件……約人的活真幹不了。
因此要想保證軟件的正确,必須保證需求、規劃、開發、使用各個環節都正确。這,太難了。
可見,軟件開發者不容易。
寫一個成功軟件的道路沒幾條,而寫一個失敗軟件的道路數不清!
要不是英文字母不夠了,還能列舉下去!
Z: 使用錯誤--操作失誤
問:為什麼不能點贊?
愣:你點了麼?再點一下試試!
往期精彩文章:
歡迎關注我們,不錯過軟件架構和編程方面的幹貨知識。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!