嵌入式系統的開(kāi)發(fā)規范化
單片機或者嵌入式系統的開(kāi)發(fā)規范化問(wèn)題(21IC發(fā)言有文檔可下載)
隨著(zhù)人才流動(dòng)的加快和研發(fā)周期的縮短,我們個(gè)人需要快速高效的完成自己的設計,維護和升級,公司需要人走不影響項目進(jìn)度、新員工很快就能接手。這就需要:一個(gè)系統設計完成以后,它不應該僅僅是一些源代碼,還應該包括各種各樣的開(kāi)發(fā)文檔。(這對以后自己對系統的維護和升級都有很好的參考作用。而且能最大情況的避免一種情況:你改了一個(gè)bug,卻發(fā)現又出現了很多個(gè)bug。)一個(gè)系統開(kāi)發(fā)完成,它究竟應該包含那些文檔,這些文檔一般是怎么完成的,應該包含哪些內容?這就是系統開(kāi)發(fā)的規范化問(wèn)題。系統開(kāi)發(fā)的規范化不僅有利于自己,也有利于公司,更有利于新手。規范化的設計讓工程師工作更高效,這已經(jīng)是不用爭論的事實(shí)?,F在在大型軟件工程開(kāi)發(fā)方面,這已經(jīng)做得相當好。但在單片機和嵌入式系統的開(kāi)發(fā)方面,規范化的工作卻有待我們共同探討。一個(gè)不容否認的事實(shí)是:國內的大部分小系統開(kāi)發(fā)工程師從來(lái)不寫(xiě)文檔,一開(kāi)始就是以功能完成為中心進(jìn)行代碼設計。
在香港的一些公司也是這樣一種設計模式。在國內,一些公司的研發(fā)管理人員也有一種誤導——快寫(xiě)代碼,快讓我看見(jiàn)功能,不要你做其他的,完成功能就好。這些都把我們的設計導入一種誤區:大部分時(shí)間都在寫(xiě)代碼,改代碼。
在此提出系統開(kāi)發(fā)的規范化問(wèn)題,也是我個(gè)人的一點(diǎn)想法而已。僅供參考。不過(guò),一切還得從實(shí)際出發(fā),倒沒(méi)有必要硬要把設計從寫(xiě)某些文檔開(kāi)始,太教條了不好。如果你感覺(jué)寫(xiě)某些文檔是浪費時(shí)間,那就別寫(xiě)吧。
在這里,我給出一個(gè)小系統大致包括的文檔,僅作參考。
product specification 一般是市場(chǎng)部或者是客戶(hù)提供的
product specification ——》 project leader
project leader 給工程師分配方案
software specification ——》 hardware engineers
hardware specification ——》 software engineers
mechanical specification ——》 mechanical engineer
一、 硬件工程師的芯片選擇,原理圖的設計
硬件工程師根據hardware specification 來(lái)選擇芯片(也可能是project leader 早已為你定了),再根據芯片說(shuō)明來(lái)設計各功能模塊電路。出一份文檔
hardware implementation
并進(jìn)行schematic design
再把這些資料提供給software engineer。
pcb layer 當然不需要文檔了。
但有跟隨的hardware update report
包括調試修改和最后的軟硬聯(lián)調,所做的任何工作都要出相應的說(shuō)明。
(呵,呵,你自己保存一表格天天填吧,改動(dòng)地方,修改原因,就兩項,不難寫(xiě)的)
軟件工程師得到芯片和電路資料,開(kāi)始根據software specification 進(jìn)行設計
首先我們應該出一文檔:
software implementation 這里大致包括軟件采用的芯片,軟件的功能模塊及使用系統端口功能情況,仿真系統,原始數據資料,自己用其他語(yǔ)言寫(xiě)的數據處理工具。
在此文檔完成后,我們進(jìn)入了詳細設計階段:
module design 開(kāi)始寫(xiě)各模塊的實(shí)現,包括各模塊所要實(shí)現的功能,用到的系統資源(包括變量的定義,常量的定義),與其他模塊的聯(lián)系(*對系統的維護和升級很重要的)和時(shí)間間隔圖(有固定時(shí)間點(diǎn)用固定時(shí)間點(diǎn),沒(méi)有固定時(shí)間點(diǎn),就用時(shí)間間隔 ,用來(lái)設計主循環(huán)的)。這里表現的其實(shí)是你的思路,如果你思路清晰,做起事情來(lái)自然是事半功倍了。
mainloop design:
主要是根據時(shí)間間隔圖和各模塊的重要性及響應優(yōu)先級進(jìn)行主監控程序的設計,確保各功能能順利完成。
mian chart flow
畫(huà)出程序流程圖
source code design。
這一部分才是代碼的實(shí)現,要是你前面寫(xiě)得很詳細了,這里你的思路很清晰,按照mainloop design直接做就是了。當然,我們需要按照我們自己的〈編程語(yǔ)言規范〉來(lái)設計源程序。這是軟件工程師的基本,我就不提了。
最后是軟硬聯(lián)調,需要兩個(gè)人配合的,基本不出什么文檔,但如果你作了什么修改,請記錄在案,最后要更新你前面的設計文檔。
最后是出first sample ,mechanical engineer 會(huì )根據要求修改自己的設計。并出implementation 和 update me report。
整個(gè)系統開(kāi)發(fā)流程的規范化還應該包括項目的會(huì )審,軟硬協(xié)調,成本的控制,貨源的規劃,測試規劃,等等,由于我這里不是介紹一個(gè)現代研發(fā)部的研發(fā)流程,只想對系統軟件規范化說(shuō)得詳細一點(diǎn)(這些可能是我們目前規范化面臨的最大的問(wèn)題吧),其他我都省掉了。
這里寫(xiě)的不詳細,只給出一個(gè)簡(jiǎn)單的單片機開(kāi)發(fā)文檔(見(jiàn)后面的下載地址),僅為拋磚引玉而已,希望有經(jīng)驗的各位同行修改補充。如有不明之處或者需要一些資料的,請給我留言(由于現在很忙,可能不會(huì )一一回復或者應答,請見(jiàn)諒)。
最近又多了一些臺灣和印度的朋友,發(fā)現他們的程序書(shū)寫(xiě)習慣幾乎一樣,又多了很多的感觸,覺(jué)得規范化的程序書(shū)寫(xiě)習慣也應該成為一門(mén)程序員的入門(mén)課程呢.正如我們說(shuō)話(huà)的語(yǔ)法規范一樣.不至于太亂吧.
http://down.upsdn.net/programming/ymcswd.pdf ; 源碼測試文檔
http://down.upsdn.net/programming/yjsjxxsm.pdf ; 硬件設計詳細說(shuō)明
http://down.upsdn.net/programming/rjsjxxsm.pdf ; 軟件設計詳細說(shuō)明
http://down.upsdn.net/programming/rjsjgysm.pdf ; 軟件設計概要說(shuō)明
http://down.upsdn.net/programming/rjjdxbtj.pdf ; 軟件進(jìn)度需備條件整理
http://down.upsdn.net/programming/cpkfsclc.pdf ; 產(chǎn)品開(kāi)發(fā)生產(chǎn)流程

