資料介紹
軟件工程師:我今天要完成xx行代碼的重構
硬件工程師:這幾個器件能不改就不改,實在不行用獨家供貨
軟件的靈活性很高,可以根據需要進行修改,即使是微不足道的修改,只要能讓代碼看起來比較“爽”,都可以隨時進行調整。況且現在代碼的版本控制工具比較成熟,實在不行可以用時光機返回所有的修改。
硬件不一樣,有時候動一根線,或者layout的時候動了一點位置,都可能導致信號產生比較大的噪聲或者異常。每一個器件的修改也是慎之又慎,需要一系列替代測試和可靠性測試,即使是在風險可控的條件下,也要考慮投入產出比。
軟件工程師:有一個新的需求,我們要考慮一下實現方案
硬件工程師:有一個新的需求,我們看能不能在原來的方案上改一改
軟件行業日新月異,有各種各樣的語言、框架和實現方式,程序員的經驗可以讓他們更快的學習,但因為時常要面對新的東西,隨著年齡的增長會顯得力不從心,于是就有了程序員吃青春飯的說法。同時,由于軟件的靈活性,需求往往是變化多端的,即使是在同樣的框架下,面對各種各樣的需求也有可能遇到很多坑。
相對軟件行業,硬件的變化算是比較小的,雖然性能可能在不斷提高,但更新的速度和更新的范圍往往是較小的。經常是用著100年前的原理,加上20年前的技術,改一改實現新的需求。因此有了硬件人員的經驗論,當他對需要的一些器件了如指掌的時候,制定方案或者定位問題都是完全可控的,而這些器件在他有生之年可能都不會有突飛猛進的變革了,依靠之前積累的經驗就可以讓他游刃有余。
軟件工程師:It works!! 好吧,就這樣搞定吧。
硬件工程師:換了一個電容就可以了,不科學啊,我得找下是什么原因
遇到問題的時候,硬件工程師比較傾向于“根因分析”,所有現象必須要有個解釋,這樣的話可以減小問題重犯的概率。如果問題不徹底解決,往往代價是很高的。軟件工程師往往覺得問題解決了就是OK的,后面還有一堆的需求和變化需要處理,有時間再去分析一下。這里不一定是責任心的問題,一個原因是因為再次遇到問題的代價不一樣,另外有時候是因為需要管理的復雜度。
硬件面對的復雜度從某種程度上說是有限的,也就這么幾個器件,遇到問題順藤摸瓜就行了,大不了還有定位的必殺技——“替代法”,每個器件換一遍,大概就能找到問題所在了。軟件面對的復雜度相對較大,如果涉及到操作系統甚至還需要hack操作系統,如果幾個模塊是由多個工程師開發的,模塊之間的耦合度又較高,定位問題顯得心有余而力不足。
軟件工程師:我的代碼是一顆樹,我要每天去耕耘
硬件工程師:我的方案是一個平臺,以后的需求就在這個平臺上面改一下就好了
“平臺化”對雙方來說看起來都是非常不錯的,面對新的需求只要在上面修改一下就好了,領導尤其喜歡這種理想狀態,可以作為管理績效的體現。根據上面說明的復雜度和需求變化的程度而言,軟件的平臺化往往只是個開始,就像是栽下了一顆樹苗,后面的路還很長。這其中發揮比較重要作用的往往是軟件工程師本身,而不是硬盤里面的那些可能不成熟的代碼。
軟件工程師:項目節點要到了,實在不行我先發布一個beta版本
硬件工程師:項目節點要到了,實在不行只能延期了,爭取后面不再修改
iPhone 每一個機型的升級需要一兩年的時間,而iOS卻似乎每個月都在更新。對于互聯網行業的軟件尤其如此,似乎每時每刻都在升級,像google的很多產品一直處在beta的版本,有的甚至生命周期都結束了,都還掛著beta的標簽。升級成本和開發周期的不一樣,使得雙方面對項目時間點的態度會有所不同。
軟件工程師:在我那邊還好好的,怎么到你這邊就不行了
硬件工程師:這個現象也是可以解釋的,可能是米勒電容/寄生電感/xxx的影響
程序運行起來之后一般都是很老實的(不老實會被狗咬死),CPU 忠實的運行著每一條指令,雖然在它的世界里面只有0和1,但絕不會出現1+1不等于2的情況。雖然很有可能是程序員自己沒有考慮到的場景,但他常常會找運行環境或者操作方面的“借口”。
硬件系統不一樣,一樣的布局布線,也有可能因為器件之間的微小差異導致運行的問題,而器件本身不是完全理想的,經常會出現1+1=2.1的情況。因此硬件工程師需要保持對這些微小差異的敏感度,去解釋這個混沌的世界。
軟件工程師:再安排一次檢視,想想看還有沒有什么場景可能導致問題
硬件工程師:再多做幾個模塊,確保方案的可靠性
測試不管對軟件和硬件來說都是有效的可靠性保障,但測試的理念還是有不一樣的地方。硬件測試對重復要求較高,很多器件可能跑著跑著自己就悲劇了,比如電解電容在高溫環境下一段時間后電解液減小的較多。因此對同一個模塊的反復測試,或者同一種場景的反復測試是很常見的,極端情況就是所謂“高溫高濕”實驗,加速器件的老化。
而軟件系統由于其運行的一致性,更多是考慮測試覆蓋度,盡量去覆蓋每一種場景,甚至每一行代碼。測試覆蓋不到的,就使用人海戰術,通過人每一行代碼的檢視,去發現可能的問題。
結 語
不管軟件工程師和硬件工程師有多少差異,他們都在通過自己努力在一點一點改變著這個世界。也希望自己能在若干年之后,還能自豪的稱自己為程序員,一個略懂硬件的碼農。
來源:嵌入式資訊精選
(mbbeetchina)
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 做一個可以跟隨光線的機器人
- 用3行代碼做一個WebServer
- 用LDR做一個自動夜燈
- 一個脈搏血氧計的設計示例資料下載
- 6個方面。嵌入式的硬件構架資料下載
- 優秀的硬件工程師設計一個產品會考慮哪些方面資料下載
- 設計硬件電路到拿到板調試,是怎樣一個過程資料下載
- 嵌入式硬件研發的8個階段資料下載
- 一個MCU項目問題的硬件軟件分析資料下載
- 做一個電線斷線斷點檢測器,原理是什么?資料下載
- 如何正確選擇一個ADC資料下載
- +:和-:符號,Verilog標準文檔中的一個語法資料下載
- 16位CRC驗證碼生成VI工具下載 54次下載
- 使用單片機做一個簡單的流水燈的程序和燒寫資料免費下載
- 使用51單片機制作的做一個簡易時鐘程序免費下載
- sim卡pin碼怎么設置 pin碼和puk碼有什么區別 3088次閱讀
- 如何用小安派-Eyes-S1做一個電子木魚? 808次閱讀
- 使用FPGA做一個ODrive 683次閱讀
- 鴻蒙上做一個loading加載動畫 4185次閱讀
- 自做一個紅外控制裝置,控制家電很簡單 1706次閱讀
- 為鴻蒙小車做一個遙控器 936次閱讀
- 如何確定一個硬件加速應用 504次閱讀
- 譯碼器:做一個簡單的六進制技術電路 7746次閱讀
- 機器碼怎么改 1.6w次閱讀
- 詳細介紹RFID身份碼發射器硬件設計方案 685次閱讀
- 以一個真實網站的驗證碼為例,實現了基于一下KNN的驗證碼識別 7662次閱讀
- 如何用舊手機做一個個性十足的音箱? 3.1w次閱讀
- 如何用廢棄的電腦風扇做一個磁攪? 6760次閱讀
- 對正極材料的檢測方法做一個初步的介紹 1w次閱讀
- 對有關IC設計流程的相關事宜做一個總結 1.5w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多