日本电影一区二区_日本va欧美va精品发布_日本黄h兄妹h动漫一区二区三区_日本欧美黄色

嵌入式軟件開(kāi)發(fā)流程(個(gè)人心得)(嵌入式軟件的開(kāi)發(fā)流程)

一 背景
剛從學(xué)校出來(lái)實(shí)習(xí)那會(huì)兒,在深圳南山某龍電控公司上班,職位是售后維修,用伺服電機(jī)控制繡花機(jī),有個(gè)顯示終端應(yīng)該用的是桌面系統(tǒng)。一進(jìn)公司就開(kāi)始修板子,在經(jīng)過(guò)一番培訓(xùn)之后就出去駐場(chǎng)服務(wù),看到軟件開(kāi)發(fā)工程師來(lái)支持我們的工作,他們沒(méi)什么頭發(fā),大部分都戴著眼鏡,看上去很厲害的樣子,他們拿著示波器的探頭,拿著萬(wàn)用表打到二極管檔位,測(cè)量線(xiàn)路的通斷,當(dāng)時(shí)真的很想成為這樣的人。
二 畢業(yè)后換工作
來(lái)到我人生中最重要的一家公司,有個(gè)老同事真的很熱心,手把手教我怎么看原理圖,為什么控制這個(gè)IO為高電平,三極管就輸出低電平,為什么電磁閥可以動(dòng)起來(lái),怎么控制繼電器,怎么寫(xiě)代碼怎么畫(huà)原理圖,怎么畫(huà)PCB板,一條龍服務(wù)毫無(wú)保留地非常耐心地指導(dǎo)我,部門(mén)經(jīng)理在下班后,等我們吃完飯手把手教我們?cè)趺从胘ava與下位機(jī)通信,怎么創(chuàng)建線(xiàn)程,那段時(shí)光真的很美好,把我?guī)нM(jìn)了軟件開(kāi)發(fā)行業(yè)。
三 感謝
非常感謝過(guò)去幫助過(guò)我的人,這個(gè)社會(huì)真的需要你們這樣的人,特別是剛畢業(yè)的學(xué)生,進(jìn)到這樣一家公司真的是很不錯(cuò)的選擇。
四 嵌入式軟件開(kāi)發(fā)流程
因?yàn)榇蟛糠肿龅氖乔度胧介_(kāi)發(fā),所以是按照這個(gè)話(huà)題來(lái)開(kāi)展
4.1 好的軟件深受4個(gè)人的喜愛(ài)和1個(gè)人的無(wú)奈
4.1.1 老板
通常老板都喜歡又快又好,交期快,訂單量大。前期應(yīng)該達(dá)不到,但有了良好的框架后理論上是可以達(dá)到這種效果的。

嵌入式軟件開(kāi)發(fā)流程(個(gè)人心得)(嵌入式軟件的開(kāi)發(fā)流程)

4.1.2 多個(gè)用戶(hù)
傻瓜式操作、操作一步到位、快速上手、大量通俗易懂的手冊(cè)、查閱文檔自助解決問(wèn)題、視頻教程、技術(shù)支持快速響應(yīng)(客服機(jī)器人)、穩(wěn)定可靠不會(huì)崩潰滿(mǎn)足一個(gè)用戶(hù)是比較簡(jiǎn)單的,但是同時(shí)滿(mǎn)足不同的用戶(hù)就比較困難了,在技術(shù)支持方面我們需要引導(dǎo)用戶(hù)自助解決問(wèn)題、提供通俗易懂的用戶(hù)手冊(cè)。

嵌入式軟件開(kāi)發(fā)流程(個(gè)人心得)(嵌入式軟件的開(kāi)發(fā)流程)

4.1.3 同事
代碼風(fēng)格和編程思想良好、命名方式通俗易懂、有注釋、良好的設(shè)計(jì)架構(gòu)、閱讀代碼不會(huì)難受、有豐富的通俗易懂的技術(shù)文檔,易于更新維護(hù)、易于跨平臺(tái)移植、沒(méi)有潛在的BUG。

嵌入式軟件開(kāi)發(fā)流程(個(gè)人心得)(嵌入式軟件的開(kāi)發(fā)流程)

4.1.4 自己
錢(qián)多事少,更新、維護(hù)、擴(kuò)展、移植時(shí)只需更改少量代碼、或不用改代碼,軟件測(cè)試、領(lǐng)導(dǎo)簽字一次性通過(guò),用戶(hù)使用過(guò)程中體驗(yàn)良好,沒(méi)有收到任何BUG反饋,深受用戶(hù)喜愛(ài)。

嵌入式軟件開(kāi)發(fā)流程(個(gè)人心得)(嵌入式軟件的開(kāi)發(fā)流程)

4.1.5 軟件測(cè)試
測(cè)了半天沒(méi)有發(fā)現(xiàn)一個(gè)BUG,功能全部正常,一個(gè)版本都沒(méi)有升,感覺(jué)太無(wú)聊,沒(méi)有一點(diǎn)成就感,完全沒(méi)有發(fā)揮他的價(jià)值,他會(huì)感到很迷茫,甚至開(kāi)始懷疑人生但是沒(méi)辦法,只能委屈一下他了

嵌入式軟件開(kāi)發(fā)流程(個(gè)人心得)(嵌入式軟件的開(kāi)發(fā)流程)

五 具體實(shí)施方法
5.1 現(xiàn)場(chǎng)考察
用戶(hù)需求在開(kāi)發(fā)之前,如果有現(xiàn)成的產(chǎn)品,最好去客戶(hù)現(xiàn)場(chǎng)了解一下,就像做生意先要踩點(diǎn)記錄一下人流量,人均消費(fèi)水平,房租之類(lèi)的同樣的道理,我們需要知道:
5.1.1 用戶(hù)使用現(xiàn)有產(chǎn)品體驗(yàn)是否良好,操作是否方便,如何改進(jìn)
5.1.2 用戶(hù)將來(lái)會(huì)遇到哪些問(wèn)題
5.1.3 用戶(hù)遇到問(wèn)題時(shí),如何通過(guò)我們提供的資源,他自己獨(dú)立解決問(wèn)題用戶(hù)能夠使用文檔或者現(xiàn)有功能來(lái)自己解決問(wèn)題,可結(jié)合公眾號(hào),服務(wù)器,數(shù)據(jù)庫(kù)
5.1.4 總結(jié)哪些尚未被滿(mǎn)足的、而又被廣泛渴望的需求(用戶(hù)痛點(diǎn))
5.1.5 將以上用戶(hù)需求轉(zhuǎn)換成規(guī)范的開(kāi)發(fā)計(jì)劃、開(kāi)發(fā)文檔(硬件系統(tǒng)框架圖、軟件功能定義等)

5.2 設(shè)計(jì)原則
5.2.1 開(kāi)閉原則
軟件設(shè)計(jì)應(yīng)該在滿(mǎn)足功能需求的基礎(chǔ)上增加一些東西當(dāng)應(yīng)用的需求改變時(shí),在不修改軟件實(shí)體的源代碼或者二進(jìn)制代碼的前提下,可以擴(kuò)展模塊的功能,使其滿(mǎn)足新的需求視覺(jué)反饋、觸感反饋,為什么要有反饋,可能是一個(gè)很深?yuàn)W的話(huà)題了,可能跟人體分泌的多巴胺有關(guān)系,我不確定。以不變應(yīng)萬(wàn)變(無(wú)論用戶(hù)需求有什么變化,我們都不用改固件),用戶(hù)的可變動(dòng)需求,還可以通過(guò)(GPIO)(撥碼開(kāi)關(guān))或者其他通信接口來(lái)配置,把配置權(quán)交給硬件或者通信接口,交給用戶(hù)
5.2.2 有軟件框架和設(shè)計(jì)模式
5.2.3 有分層,做框架之前有個(gè)前提條件,要拿到功能定義、硬件系統(tǒng)框架圖

嵌入式軟件開(kāi)發(fā)流程(個(gè)人心得)(嵌入式軟件的開(kāi)發(fā)流程)

分好層之后,分別編譯成庫(kù)文件,后續(xù)獨(dú)立維護(hù)相應(yīng)的庫(kù)文件即可,便于移植減少維護(hù)時(shí)地相互影響,改動(dòng)時(shí)不影響其他功能

5.2.4 穩(wěn)定可靠
不出錯(cuò),不崩潰(訪問(wèn)了空地址、內(nèi)存溢出、內(nèi)存泄露、數(shù)組越界、堆棧溢出等)

5.2.5 參數(shù)檢查
有輸入?yún)?shù)的函數(shù),要有參數(shù)檢查(排除所有可能的非法值)、錯(cuò)誤處理、返回值用戶(hù)輸入是一個(gè)非常危險(xiǎn)的事情,需要謹(jǐn)慎處理

5.2.6 自定義malloc
-不使用庫(kù)函數(shù)malloc動(dòng)態(tài)申請(qǐng)或釋放內(nèi)存創(chuàng)建內(nèi)存池(靜態(tài)),自己實(shí)現(xiàn)申請(qǐng)和釋放的函數(shù)
-多任務(wù)時(shí),需要對(duì)公共資源進(jìn)行原子性訪問(wèn),防止數(shù)據(jù)出錯(cuò)

5.2.7 重試機(jī)制
為了保證數(shù)據(jù)的有效傳輸,可能需要加入重試機(jī)制

5.2.8 易擴(kuò)展、易維護(hù)更新軟件時(shí),更改代碼量較少或無(wú)需更改代碼

5.2.9 抽象變動(dòng)部分
-改宏定義,或者類(lèi)、靜態(tài)鏈表、集合、數(shù)組等的定義,不更改過(guò)程將未來(lái)可能會(huì)變的部分抽象出來(lái),定義成數(shù)組、靜態(tài)鏈表、集合等,使用通用的過(guò)程來(lái)處理可變的部分
-不支持編程語(yǔ)法的將未來(lái)可能會(huì)變的部分抽象到外部文件(xml,bin),創(chuàng)建動(dòng)態(tài)鏈表或者動(dòng)態(tài)數(shù)組等再觸發(fā)遍歷

-支持編程語(yǔ)法的增加腳本解釋器,將未來(lái)可能會(huì)變的部分抽象到外部腳本文件(asm,lua,js,html,php),創(chuàng)建動(dòng)態(tài)鏈表或者動(dòng)態(tài)數(shù)組等再觸發(fā)遍歷

5.2.10 有使用設(shè)計(jì)模式,例如工廠模式、創(chuàng)造者模式等

5.2.11 易維護(hù),能夠快速定位異常(追溯)

5.2.12 JAVA、VB.NET、C#,不確定C 有這種方法增加全局異常捕捉事件,拋出異常時(shí)將具體文件名和行號(hào)追加寫(xiě)入日志文件

5.2.13 有調(diào)試打印功能單片機(jī)可通過(guò)串口/LCD/并口(電腦主板)/PCI(電腦主板)來(lái)打印,串口/LCD/并口(電腦主板)/PCI(電腦主板)的讀寫(xiě)字節(jié)函數(shù)映射到printf的相關(guān)讀寫(xiě)字節(jié)函數(shù)上位機(jī)可通過(guò)控制臺(tái)打印,輸出到文件或者控制臺(tái)窗口

5.2.14 軟件層級(jí)之間通用的接口函數(shù),便于移植跨平臺(tái)
-write2.7.2 read
-control(cmd,data,void*parameter)可以不斷地?cái)U(kuò)展新功能
-接口函數(shù)中void *作為輸入?yún)?shù),可以傳遞任意類(lèi)型任意長(zhǎng)度的參數(shù)
5.2.15 必要的錯(cuò)誤碼
幫助客戶(hù)自主解決問(wèn)題,依賴(lài)于函數(shù)有返回值

5.2.16 有自檢功能
(硬件電路自檢)、上電自檢(通過(guò)指示燈來(lái)顯示,用于檢查IC,硬件電路等)3.1 當(dāng)出現(xiàn)故障時(shí),可通過(guò)系統(tǒng)自檢來(lái)鎖定問(wèn)題,提示用戶(hù)排除原因,解決問(wèn)題能夠便于移植(跨平臺(tái))的原因

5.2.17 分層設(shè)計(jì)
抽象出通用的類(lèi),通用的接口函數(shù),除非資源太少,不能支持面向?qū)ο缶幊趟枷?br />例如GPIO類(lèi)有什么屬性,有什么接口函數(shù),要兼容所有的平臺(tái),就要按照擁有最多的屬性來(lái)做GPIO類(lèi)

六 可實(shí)施步驟
嵌入式軟件開(kāi)發(fā)可以遵循一定的流程來(lái)執(zhí)行:
6.1 總結(jié)用戶(hù)需求,兼容多個(gè)用戶(hù)的需求
6.2 了解現(xiàn)有方案,總結(jié)用戶(hù)痛點(diǎn)(尚未被滿(mǎn)足的、而又被廣泛渴望的需求)
6.3 總結(jié)用戶(hù)可能會(huì)遇到的困難
6.4 總結(jié)如何引導(dǎo)用戶(hù)解決困難
6.4.1 將以上總結(jié)轉(zhuǎn)換成規(guī)范的開(kāi)發(fā)計(jì)劃及技術(shù)文檔
6.5 輸出功能定義及設(shè)計(jì)要點(diǎn)(文檔)
6.6 輸出軟件框架圖(文檔)
6.7 輸出軟件流程圖(文檔)
6.8 確認(rèn)以上文檔OK,開(kāi)始寫(xiě)代碼
6.8.1 確認(rèn)好軟件測(cè)試計(jì)劃
6.9 軟件測(cè)試(自己)
6.10 軟件測(cè)試(正式),輸出測(cè)試報(bào)告
6.11 更新改善
6.12 穩(wěn)定性測(cè)試、可靠性測(cè)試、極端環(huán)境下測(cè)試
6.13 客戶(hù)驗(yàn)收
6.14 客戶(hù)現(xiàn)場(chǎng)跟蹤,總結(jié)已知缺陷
6.15 持續(xù)改善
6.16 項(xiàng)目資料存檔,輸出測(cè)試文檔
七 總結(jié)
以上是我以個(gè)人工作經(jīng)驗(yàn)做的總結(jié),不過(guò)我們的能力再好也要先提高自己的溝通能力,良好的溝通能力能夠讓我們打開(kāi)彼此的心扉,讓家庭更加和諧,讓我們與朋友同事相處的更加融洽,讓我們更好地開(kāi)展工作,最大限度的發(fā)揮我們的工作經(jīng)驗(yàn)和個(gè)人能力。

心有多大舞臺(tái)就有多大,我現(xiàn)在也成了嵌入式軟件工程師,但我還有更大的夢(mèng)想,希望大家大膽去想象,大膽去挑戰(zhàn),一起努力去做到心想事成。

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號(hào)
公眾號(hào)
在線(xiàn)咨詢(xún)
分享本頁(yè)
返回頂部
黄陵县| 贡觉县| 江油市| 西城区| 临澧县| 犍为县| 建阳市| 乌兰察布市| 会同县| 资溪县| 沙河市| 黄冈市| 吉林市| 澄江县| 沂南县| 南投市| 吉水县| 贵定县| 峡江县| 东乡族自治县| 虎林市| 大同县| 蓝山县| 民乐县| 沽源县| 晋宁县| 依兰县| 临猗县| 赤峰市| 平利县| 冕宁县| 五大连池市| 民和| 谷城县| 天气| 九江县| 遂平县| 新乡县| 漳州市| 彭泽县| 深州市|