




已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Linux程序設(shè)計(jì)模式機(jī)制與策略什么是設(shè)計(jì)模式(Design pattern)?設(shè)計(jì)模式(Design pattern)是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、軟件設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了提高代碼或模塊的重用、讓程序更容易被他人理解、提高代碼可靠性和可維護(hù)性。同時(shí),通過學(xué)習(xí)設(shè)計(jì)模式可以降低解決一般性問題的開發(fā)難度。Linux程序設(shè)計(jì)模式的起源和發(fā)展Linux程序的設(shè)計(jì)模式起源于Unix文化,是Unix哲學(xué)的重要組成部分,而Linux本身就是Unix的一個(gè)發(fā)展分支。Unix哲學(xué)說來不算是一種正規(guī)設(shè)計(jì)方法,它是自下而上的,而不是自上而下的。Unix哲學(xué)注重實(shí)效,立足于豐富的經(jīng)驗(yàn)。你不會(huì)在正規(guī)方法學(xué)和標(biāo)準(zhǔn)中找到它,它更接近于隱性的半本能的知識(shí),即Unix文化所傳播的專業(yè)經(jīng)驗(yàn)。它鼓勵(lì)那種分清輕重緩急的感覺,以及懷疑一切的態(tài)度,并鼓勵(lì)你以幽默達(dá)觀的態(tài)度對(duì)待這些。什么是Unix哲學(xué)?Unix管道的發(fā)明人、Unix傳統(tǒng)的奠基人之一Doug McIlroy在McIlroy78中曾經(jīng)說過:I. 讓每個(gè)程序就做好一件事。如果有新任務(wù),就重新開始,不要往原程序中加入新功能而搞得復(fù)雜。II. 假定每個(gè)程序的輸出都會(huì)成為另一個(gè)程序的輸入,哪怕那個(gè)程序還是未知的。輸出中不要有無關(guān)的信息干擾。避免使用嚴(yán)格的分欄格式和二進(jìn)制格式輸入。不要堅(jiān)持使用交互式輸入。III. 盡可能早地將設(shè)計(jì)和編譯的軟件投入試用, 哪怕是操作系統(tǒng)也不例外,理想情況下, 應(yīng)該是在幾星期內(nèi)。對(duì)拙劣的代碼別猶豫,扔掉重寫。IV. 優(yōu)先使用工具而不是拙劣的幫助來減輕編程任務(wù)的負(fù)擔(dān)。工欲善其事,必先利其器。后來他這樣總結(jié)道(引自Unix的四分之一世紀(jì)):Unix哲學(xué)是這樣的:一個(gè)程序只做一件事,并做好。程序要能協(xié)作。程序要能處理文本流,因?yàn)檫@是最通用的接口。從整體上來說,可以概括為以下幾點(diǎn):01.模塊原則:使用簡(jiǎn)潔的接口拼合簡(jiǎn)單的部件。02.清晰原則:清晰勝于機(jī)巧。03.組合原則:設(shè)計(jì)時(shí)考慮拼接組合。04.分離原則:策略同機(jī)制分離,接口同引擎分離。05.簡(jiǎn)潔原則:設(shè)計(jì)要簡(jiǎn)潔,復(fù)雜度能低則低。06.吝嗇原則:除非確無它法,不要編寫龐大的程序。07.透明性原則:設(shè)計(jì)要可見,以便審查和調(diào)試。08.健壯原則:健壯源于透明與簡(jiǎn)潔。09.表示原則:把知識(shí)疊入數(shù)據(jù)以求邏輯質(zhì)樸而健壯。10.通俗原則:接口設(shè)計(jì)避免標(biāo)新立異。11.緘默原則:如果一個(gè)程序沒什么好說的,就沉默。12.補(bǔ)救原則:出現(xiàn)異常時(shí),馬上退出并給出足夠錯(cuò)誤信息。13.經(jīng)濟(jì)原則:寧花機(jī)器一分,不花程序員一秒。14.生成原則:避免手工hack,盡量編寫程序去生成程序。15.優(yōu)化原則:雕琢前先要有原型,跑之前先學(xué)會(huì)走。16.多樣原則:決不相信所謂“不二法門”的斷言。17.擴(kuò)展原則:設(shè)計(jì)著眼未來,未來總比預(yù)想來得快。給大家推薦一本書UNIX 編程藝術(shù)這不是一本講如何編程的書,而是一本講UNIX設(shè)計(jì)哲學(xué)的書,當(dāng)然也適應(yīng)于Linux。這本書是我來威勝工作后,同事們推薦我讀的第二本書(范律推薦)。第一本書是UNIX環(huán)境高級(jí)編程(邱云松推薦),第三本書是UNIX網(wǎng)絡(luò)編程 第2卷 進(jìn)程間通信(張棟推薦),第四本書是Linux設(shè)備驅(qū)動(dòng)程序第三版(劉利方推薦),第五本書是linux程序設(shè)計(jì)第三版(我推薦)。什么是機(jī)制與策略?我們通過下面文字來理解什么是機(jī)制與策略:設(shè)備驅(qū)動(dòng)程序的作用在于提供機(jī)制,而不是提供策略。X(windows)致力于提供一套機(jī)制,而不是策略。策略相對(duì)短壽,而機(jī)制才會(huì)長(zhǎng)存。前端實(shí)現(xiàn)策略,后端實(shí)現(xiàn)機(jī)制。策略和機(jī)制是按照不同的時(shí)間尺度變化的,策略的變化要遠(yuǎn)遠(yuǎn)快于機(jī)制。把策略同機(jī)制揉成一團(tuán)有兩個(gè)負(fù)面影響:一來會(huì)使策略變得死板,難以適應(yīng)用戶需求的改變,二來也意味著任何策略的改變都極有可能動(dòng)搖機(jī)制。相反,將兩者剝離,就有可能在探索新策略的時(shí)候不足以打破機(jī)制。另外,我們也可以更容易為機(jī)制寫出較好的測(cè)試(因?yàn)椴呗蕴堂恢档没ㄌ嗑υ谶@上面)。機(jī)制與策略的實(shí)例:(下面的講解過程中,我會(huì)提出一些問題。如果回答錯(cuò)誤將會(huì)有一個(gè)小小的懲罰)1.Uboot的環(huán)境變量(bootcmd)2.Linux驅(qū)動(dòng)程序(examples/scull)3.cmdline中的mtdparts解析程序(linux-/drivers/mtd/cmdlinepart.c)4.udev的rules文件自動(dòng)執(zhí)行U盤腳本(60-removable-storage.rules)5.udev的net.agent,實(shí)現(xiàn)USB網(wǎng)卡的自動(dòng)掛接(80-drivers.rules)6.BusyBox工具集介紹(sed,awk,inetd,chat,crond,find,grep,getty-login-bash,start-stop-daemon,run-parts)7.嵌入式數(shù)據(jù)庫(TokyoCabinet,Sqlite3)8.腳本語言(SHELL,TCLSH,Lua,TCC,python)9.圖形界面庫(qt,pyGTK)MCU嵌入式系統(tǒng)中的機(jī)制與策略:MCU(Micro Control Unit,微控制器單元)片上集成外圍器件,沒有外擴(kuò)總線,不帶MMU單元是其的主要特征,比如ARM7,Cortex-M3系列等。與之相對(duì)的是MPU(Micro Processor Unit,微處理器單元)不帶外圍器件(例如存儲(chǔ)器),是高度集成的通用結(jié)構(gòu)的處理器,比如ARM926,Cortex-A8系列等。在資源非常緊張的深度嵌入式系統(tǒng)中,同樣也有使用機(jī)制與策略設(shè)計(jì)模式的成功案例與成熟方案。例如:1.pForth,eForth,RetroForthForth是六十年代末期,由Charles H. Moore發(fā)展出來在天文臺(tái)使用的電腦自動(dòng)控制系統(tǒng)及程序設(shè)計(jì)語言,允許使用者很容易組合系統(tǒng)已有的簡(jiǎn)單指令,定義成為功能較復(fù)雜的高階指令。forth是一種可擴(kuò)展的,交互式的語言。最初為小型的嵌入式電腦設(shè)計(jì)的,現(xiàn)在它幾乎可以在任何主流的芯片上解譯和編譯,甚至已有多種可直接運(yùn)行forth指令的芯片。//bimu/forth//pforth/2. Pawn, Pawn+freeRTOSAn embedded scripting language formerly called Small.pawn is a simple, typeless, 32-bit extension language with a C-like syntax. A pawn source program is compiled to a binary file for optimal execution speed. The pawn compiler outputs P-code (or bytecode) that subsequently runs on an abstract machine. Execution speed, stability, simplicity and a small footprint were essential design criteria for both the language and the abstract machine./pawn/pawn.htm3. eLua, nutlua(Lua+Nut/OS)eLua stands for Embedded Lua and the project aims to offer the full implementation of the Lua Programming Language to the embedded world, extending it with specific features for efficient and portable software embedded development./http:/www.ethernut.de/en/firmware/nutlua.htmlForth、Pawn和Lua在其他領(lǐng)域的應(yīng)用:Atari 的許多投幣游戲機(jī)都是用 Forth 開發(fā)的。他們相信開發(fā)高性能代碼的最快方法是使用 Forth ,加上使用匯編語言來重寫最內(nèi)層的循環(huán)。按照最近與著名的 Infocom 高級(jí)游戲開發(fā)者的談話,他們的游戲解釋器也是用 Forth 寫成的。Unison World 為 CP/M 操作系統(tǒng)開發(fā)了許多游戲,全部都是用 FIG-Forth 編寫的。按他們技術(shù)總監(jiān) Marc de Groot 的說法,把一個(gè)基于 Z80 的游戲移植到 6502 或者 MC6809 上,典型的時(shí)間不多于 3 個(gè)月。美國(guó) Federal Express (聯(lián)邦快遞)公司的手持式行李分撿系統(tǒng)的程序是用 Forth 編寫的。項(xiàng)目經(jīng)理 Gene Farrar 說,他可以按需要在幾個(gè)星期內(nèi)升級(jí)新固件,相比而言,其它的小組維護(hù) C 語言代碼則至少需要 6 個(gè)月的時(shí)間。1990 年 11 月哥倫比亞航天飛機(jī)的 4 個(gè)載荷中有 3 個(gè)是用 Forth 編程的。按設(shè)計(jì)團(tuán)隊(duì)之一Johns Hopkins Universitys Applied Physics Laboratory的 John Hayes 說法,他們選擇 Forth 來解決飛行中的硬件問題,靈活性是一個(gè)主要的因素。SUN 公司把 Forth 用于它的工作站可編程 Boot ROM 中,以每天 500-1000 臺(tái)的速度發(fā)貨,是可編程 Forth 系統(tǒng)中數(shù)量最大的。 1994 年 IEEE 1275-1994 將 Forth 用于 BOOT (初始配置) 固件的標(biāo)準(zhǔn),這也是 POWER PC 通用硬件平臺(tái)的基礎(chǔ)。在電影終結(jié)者 II :世界末日中, Cyberdyne Systems T1000 系統(tǒng)的特技效果是基于 Morphing 軟件包 Forth 產(chǎn)生的。Pleo是一只可愛的小恐龍,是由富士康公司研發(fā)的電子寵物,所有Pleo的個(gè)性都是通過PAWN的腳本實(shí)現(xiàn)。官方網(wǎng)站:著名的第一人稱射擊類游戲CS反恐精英就是使用了Pawn腳本語言來控制游戲。而另兩款著名的3D即時(shí)策略類游戲魔獸爭(zhēng)霸3和RPG類在線游戲魔獸世界中也大量使用lua腳本。還有在移動(dòng)設(shè)備上一直很火熱的游戲憤怒的小鳥也使用lua腳本。機(jī)制與策略設(shè)計(jì)模式在游戲中的應(yīng)用是最為廣泛的,常常關(guān)卡的設(shè)計(jì)和場(chǎng)景的變換都是利用腳本語言來完成策略部分。而畫面的渲染和動(dòng)畫的著色這交給圖形引擎庫來完成機(jī)制功能。Terminal中的機(jī)制與策略:Terminal平臺(tái)大量使用了機(jī)制與策略的設(shè)計(jì)模塊。在這些方案中,有些做到很簡(jiǎn)單,有些則做得很靈活。但不管怎樣,它們都為解決實(shí)際問題做出了重要的貢獻(xiàn)。1. analysis統(tǒng)計(jì)分析模塊實(shí)時(shí)庫中的部分?jǐn)?shù)據(jù)是通過分析計(jì)算從電表上采集的數(shù)據(jù)而得來的,Analysis.ini就是用來配置這些數(shù)據(jù)項(xiàng)以及這些數(shù)據(jù)項(xiàng)的處理方法。2. taskmanage任務(wù)管理任務(wù)管理的工作是在特定的時(shí)間將實(shí)時(shí)庫中的數(shù)據(jù)轉(zhuǎn)存到數(shù)據(jù)庫中。從而生成對(duì)應(yīng)的日月凍結(jié)數(shù)據(jù)、曲線數(shù)據(jù)等等。這些數(shù)據(jù)在376.1規(guī)約中被稱為二類數(shù)據(jù)。3. cparam參數(shù)管理參數(shù)管理使用的是gdbm+xml的配置方式,主要實(shí)現(xiàn)規(guī)約解析要求的各類參數(shù),同時(shí)也管理部分內(nèi)部參數(shù)。db2xml和xml2db兩個(gè)工具實(shí)現(xiàn)參數(shù)文件格式的轉(zhuǎn)換。4. dbmanage數(shù)據(jù)管理數(shù)據(jù)管理使用的是sqlite數(shù)據(jù)庫,并且將運(yùn)行時(shí)的數(shù)據(jù)庫創(chuàng)建也做成了配置文件的形式。通過修改和增加配置文件的內(nèi)容就能擴(kuò)展終端運(yùn)行時(shí)的數(shù)據(jù)庫。5. shmemory實(shí)時(shí)庫模塊實(shí)時(shí)庫的創(chuàng)建是通過定義C語言中對(duì)應(yīng)的結(jié)構(gòu)體數(shù)組來完成的。它提供了抄表程序、統(tǒng)計(jì)分析和任務(wù)管理需要使用到的數(shù)據(jù)項(xiàng),以及這些數(shù)據(jù)項(xiàng)在共享內(nèi)存中保存的空間。6. readmeter總表抄表模塊抄表模塊根據(jù)readmeter.ini的配置信息決定哪種電表類型抄讀哪些數(shù)據(jù)項(xiàng)。配置文件中的數(shù)據(jù)項(xiàng)已擴(kuò)展成為內(nèi)部規(guī)約,與電表規(guī)約中的數(shù)據(jù)項(xiàng)已無一一對(duì)應(yīng)的關(guān)系。7. menu菜單界面模塊菜單界面顯示內(nèi)容是通過XML文件格式來配置的,其中包括shift-acmp.xml,shift-auto.xml,menu.xml三大部分,各地的差異通過變量LOCALE區(qū)分開來。8. proparse規(guī)約解析模塊規(guī)約解析使用了兩套配置文件ini和xml。前者用于配置AFN&FN的數(shù)據(jù)解析,后者是根據(jù)各地情況使用插件對(duì)差異項(xiàng)進(jìn)行配置。前者配置文件還與實(shí)時(shí)庫和數(shù)據(jù)庫有關(guān)聯(lián)。9. TaskManage抄表管理抄表管理模塊開始時(shí)使用ini文件配置,后轉(zhuǎn)為gdbm+xml方式。配置文件主要是設(shè)置定時(shí)抄讀的數(shù)據(jù)項(xiàng),這其中使用了一套內(nèi)部標(biāo)識(shí),抄讀上來數(shù)據(jù)直接保存到數(shù)據(jù)庫。10. TaskExecutor抄表執(zhí)行抄表執(zhí)行模塊使用了ini文件配置,實(shí)現(xiàn)內(nèi)部標(biāo)識(shí)到電表規(guī)約數(shù)據(jù)標(biāo)識(shí)的轉(zhuǎn)換。抄表程序根據(jù)電表標(biāo)識(shí)抄讀電表的數(shù)據(jù),根據(jù)內(nèi)部標(biāo)識(shí)保存從電表抄讀上來的數(shù)據(jù)。11. watchdog運(yùn)行程序監(jiān)控通過watchdog.conf配置文件決定要啟動(dòng)哪些程序,以及這些程序的執(zhí)行方式。當(dāng)有程序異常退出時(shí),watchdog需要根據(jù)配置文件再次啟動(dòng)這些程序。盡管從開發(fā)技術(shù)的角度看,機(jī)制與策略在Terminal平臺(tái)上的應(yīng)用是成功的,但是從維護(hù)管理的角度看,這些應(yīng)用考慮得卻不是很夠。有以下幾點(diǎn)原因:1. 策略沒有形成統(tǒng)一的風(fēng)格。各模塊之間的配置風(fēng)格迥異,沒有一位開發(fā)員敢說已經(jīng)掌握了所有模塊的配置。掌握這些配置的學(xué)習(xí)曲線很高,有些模塊的配置文件甚至比代碼還難搞懂。幫助文檔也相當(dāng)滯后,開發(fā)人員基本沒有整理這類相關(guān)的文檔或手冊(cè)。所以注定這類策略只能由開發(fā)模塊的人員自己維護(hù)。2. 解析策略的機(jī)制各有千秋。我們的配置文件有sqlite格式的、gdbm格式的、xml格式的、ini格式的、自定義格式的、自定義C語言結(jié)構(gòu)數(shù)組等等,這樣情況最終導(dǎo)致了代碼的冗余,同時(shí)抬高了代碼維護(hù)的成本。各類配置文件的解析性能也參差不齊,程序?qū)π薷牡谋O(jiān)控也只是輪詢方式,也有些配置文件使用起來還比較麻煩,需要經(jīng)過幾次轉(zhuǎn)換才能生效。3. 機(jī)制與策略分離不夠徹底。部分模塊的策略沒有完全從機(jī)制中分離出來,其中或多或少還是存在一些特殊處理的情況。這些特殊處理是對(duì)需求不確定的保留,同時(shí)也破壞了機(jī)制與策略模式的設(shè)計(jì)原則,直接的壞處是影響到代碼的維護(hù),有時(shí)一個(gè)新的功能需要修改多處代碼和配置文件才能實(shí)現(xiàn)。4. 策略僅僅是低層次的配置。大部分模塊設(shè)計(jì)的策略僅僅是停留在簡(jiǎn)單設(shè)置,沒有什么邏輯上的功能,或者說它不像是腳本更像是配置,這種思路限制了策略的靈活性。但是如果要提高策略的處理層次,勢(shì)必需要設(shè)計(jì)更復(fù)雜的處理程序。而事實(shí)上,另外一個(gè)原因是參與開發(fā)的人員也缺乏相關(guān)的經(jīng)驗(yàn)。5. 借鑒開源項(xiàng)目的經(jīng)驗(yàn)不足。設(shè)計(jì)一套優(yōu)秀的機(jī)制與策略的模式需要花費(fèi)不少時(shí)間和精力,而一般項(xiàng)目不可能會(huì)有如此集中的投入。在此情況下本應(yīng)該最大可能的借鑒開源項(xiàng)目的代碼,但實(shí)際上我們卻沒有這么做,而是選擇重新發(fā)明新的輪子,盡管這樣做也可以實(shí)現(xiàn)功能,但是我們并沒有從中獲得好處。目前的情況并不是項(xiàng)目缺乏機(jī)制與策略模式的運(yùn)用,而是對(duì)這種模式運(yùn)用太多太雜,而且總體技術(shù)水平偏低,維護(hù)成本又偏高。就好比花了很大的力氣和很多的時(shí)間,卻搞了大量的低層次的重復(fù)建設(shè)一樣?,F(xiàn)在terminal平臺(tái)已經(jīng)逐漸穩(wěn)定下來,如果再進(jìn)行大的改進(jìn)必定是違背了經(jīng)濟(jì)原則,維護(hù)成本也會(huì)隨之陡增。這就是設(shè)計(jì)規(guī)劃欠下債,越往后償還代價(jià)越大。而就目前的情況來說,我們最重要的不是忙著考慮如何還債,而是要讓大家學(xué)會(huì)如何才能不欠下新的債。這樣終有一日欠債才可能真正還清。機(jī)制與策略的測(cè)驗(yàn):現(xiàn)在我們開始做一個(gè)體驗(yàn)項(xiàng)目,目的是通過這個(gè)項(xiàng)目深刻理解機(jī)制與策略的特點(diǎn),并能夠?qū)⑵鋬?nèi)涵轉(zhuǎn)化為自己的思想,同時(shí)運(yùn)用到實(shí)際的工作中。以下是項(xiàng)目的一些情況:項(xiàng)目名稱:遠(yuǎn)程升級(jí)工具(upgrade)項(xiàng)目經(jīng)理:(負(fù)責(zé)考核成員,以及分配任務(wù))項(xiàng)目成員:(參與培訓(xùn)的所有員工,分為12人一組)開發(fā)時(shí)間:(有效工時(shí)兩周)項(xiàng)目背景:剛來公司不久的小蔣最近接到一個(gè)棘手的新任務(wù)。這一次領(lǐng)導(dǎo)要求他開發(fā)一個(gè)用于給2000臺(tái)集中器進(jìn)行遠(yuǎn)程升級(jí)的軟件工具。但由于時(shí)間緊迫,他必須在兩周時(shí)間內(nèi)完成,并且還要馬上出差去現(xiàn)場(chǎng)調(diào)試。下面的一段對(duì)話描述了當(dāng)時(shí)的情況:小蔣:“這事看起來很困難,兩周時(shí)間內(nèi)完成似乎不可能。”領(lǐng)導(dǎo):“是的,所以你要想辦法,在現(xiàn)有的測(cè)試系統(tǒng)上改,這樣做會(huì)快一些?!毙∈Y:“那套代碼我完全不熟,況且系統(tǒng)文檔不全,編程也非常不規(guī)范,很多地方完全搞不懂。我還是要先好好熟悉一下吧?!鳖I(lǐng)導(dǎo):“沒有那么多考慮的時(shí)間,你趕緊去辦吧。”雖然小蔣很委屈,也給自己找了很多理由,但最后還是得接下這個(gè)任務(wù)。從上面的對(duì)話可以看出,領(lǐng)導(dǎo)可能并不了解事情的真相,要在現(xiàn)有的系統(tǒng)上改一改就能用,那只是在理想狀態(tài)下,如果開發(fā)人員對(duì)原有代碼不夠熟悉,可能會(huì)犯更多的錯(cuò)誤從而將時(shí)間花費(fèi)在反復(fù)調(diào)試和修改中。當(dāng)然,我們也了解到這個(gè)項(xiàng)目確實(shí)很麻煩,首先,小蔣對(duì)于維護(hù)這套代碼缺乏必要的自信;其次,拋棄它又更需要足夠的勇氣。如果這個(gè)任務(wù)交給你,現(xiàn)在又該如何做呢? (嗯,我想我別無選擇。因?yàn)槲疑踔炼疾恢滥莻€(gè)糟糕的測(cè)試系統(tǒng)長(zhǎng)啥樣。) 項(xiàng)目名稱:通信報(bào)文解析器(msgdump)項(xiàng)目經(jīng)理:(負(fù)責(zé)考核成員,以及分配任務(wù))項(xiàng)目成員:(參與培訓(xùn)的所有員工,分為12人一組)開發(fā)時(shí)間:(有效工時(shí)兩周)項(xiàng)目背景:最近新手小趙遇到一個(gè)煩心的問題,每次分析或調(diào)試終端時(shí)都會(huì)遇到要解析通信報(bào)文的問題。他希望能夠有一個(gè)這樣的小工具:能夠解析主站與終端或終端與電表之間的通信報(bào)文。這件事很有意義,因?yàn)槭謩?dòng)分析十六進(jìn)制通信報(bào)文不僅費(fèi)勁、速度慢而且容易出錯(cuò)。他在自己的日記中是這樣描述的:“我快發(fā)瘋了。今天同時(shí)接到5現(xiàn)場(chǎng)技支人員的電話,其中2個(gè)要求分析終端與主站通信的問題,3個(gè)要求分析終端抄表的問題。而他們都提供的一堆十六進(jìn)制通信報(bào)文足夠我分析2兩天了,我簡(jiǎn)直就成了分析報(bào)文的工具。這種事情難道不能交給機(jī)器來做嗎?“事實(shí)上,現(xiàn)場(chǎng)集中器的問題分析離不開通信報(bào)文。試想一下,如果這些煩瑣的工作交給機(jī)器來做將是一件多么美好的事情。甚至不需要我們出馬,現(xiàn)場(chǎng)工程人員就能輕松搞定。當(dāng)然,這樣的軟件工具應(yīng)該設(shè)計(jì)得非常靈活,既可以在PC機(jī)上使用,又可以在終端中運(yùn)行。而終端中的應(yīng)用也只要提供接口或者管道連接,就能將分析報(bào)文的工作交給這個(gè)小工具來完成。這就是我們想要的:一款通用的報(bào)文解析器。開發(fā)步驟:第一步,確定目標(biāo)。用幾句簡(jiǎn)短的話概括性的說清楚自己要做的事或?qū)﹂_發(fā)軟件的描述。目標(biāo)要明確且務(wù)實(shí),如果目標(biāo)不實(shí)際,寧可降低一些也要保證切實(shí)可行。第二步,分析需求。使用TodoList or MindMaps的方式羅列出軟件需要開發(fā)的功能點(diǎn),想得越多表明你考慮得越全面。除此之外,我們還要羅列出相關(guān)的測(cè)試工作和準(zhǔn)備工作等等。第三步,設(shè)計(jì)方案。進(jìn)一步分解需求,并評(píng)估每一項(xiàng)工作任務(wù)的時(shí)間投入和任務(wù)規(guī)模。最后對(duì)所有的工作任務(wù)進(jìn)行優(yōu)先級(jí)排序,并根據(jù)實(shí)際情況設(shè)立項(xiàng)目各階段的里程碑。第四步,實(shí)現(xiàn)功能。所有功能點(diǎn)應(yīng)該按照里程碑的要求分階段實(shí)現(xiàn),并且遵循“短,平,快”的原則。盡可能早的發(fā)布中間版本,讓測(cè)試與研發(fā)的工作能夠并行起來。第五步,開始測(cè)試。測(cè)試工作從分析需求開始就要考慮,并在第一個(gè)里程碑到來時(shí),就應(yīng)該開始著手實(shí)施。盡可能早的開展現(xiàn)場(chǎng)測(cè)試,現(xiàn)場(chǎng)才是產(chǎn)品應(yīng)用的真實(shí)環(huán)境。考試環(huán)境:項(xiàng)目管理平臺(tái):/redmine/projects/upgrade/redmine/projects/msgdump請(qǐng)?zhí)崆埃ㄔ?
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 寵物馴養(yǎng)師崗位面試問題及答案
- 2025屆浙江省麗水、湖州、衢州市高二下化學(xué)期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 河北省雄安新區(qū)博奧高級(jí)中學(xué)2025年化學(xué)高二下期末質(zhì)量檢測(cè)試題含解析
- 公司房車使用管理辦法
- 杭州建筑拆除管理辦法
- 公墓資金使用管理辦法
- 農(nóng)民工權(quán)益保障與工資支付法規(guī)解析
- STM32虛擬仿真綜合實(shí)驗(yàn)平臺(tái)設(shè)計(jì)與應(yīng)用研究
- 兒童文學(xué)的內(nèi)涵與外延探究
- 體育舞蹈課程教學(xué)體系構(gòu)建與技能評(píng)價(jià)標(biāo)準(zhǔn)研究
- 患者出院隨訪統(tǒng)計(jì)分析報(bào)告
- 設(shè)備采購(gòu)售后服務(wù)方案
- 智能船舶與海洋工程:物聯(lián)網(wǎng)在船舶與海洋工程中的應(yīng)用
- 《不寧腿綜合征》課件
- CST仿真技術(shù)交流
- 部編版道德與法治小升初一二三四五六年級(jí)全冊(cè)復(fù)習(xí)簡(jiǎn)答題100道匯編(附答案)
- 幼兒園課程審議下的主題活動(dòng)實(shí)施
- 商業(yè)保理行業(yè)營(yíng)銷策略方案
- 《掃描電子顯微鏡》課件
- 水利水電工程施工截流設(shè)計(jì)說明書
- 變速箱廠總平面布置設(shè)計(jì)設(shè)施規(guī)劃與物流分析課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論