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