第一篇:648軟件開發(fā)總結(jié)
內(nèi)部
648軟件開發(fā)介紹
一 DM648介紹
DM648屬于TI達(dá)芬奇系列,采用單核C64X+定點(diǎn)CPU,支持最高頻率1.1GHz,有兩個乘法器支持四個16bits*16bits(結(jié)果32bits)單個clock cycle或者八個8bits*8bits(結(jié)果16bits)單個clock cycle。還有6個ALU。
648的片上存儲器有L1P(32KB),L1D(32KB),L2(512KB)648集成了五個視頻口VPORT,省去FPGA做FIFO,可以節(jié)省產(chǎn)品成本。
648集成了豐富的外設(shè),包括edma(64個通道),SPI,I2C,UART,EMIF,DDR2,Ethernet,gpio(32個),McASP,PCI。
二 搭建軟件開發(fā)環(huán)境 2.1操作系統(tǒng)環(huán)境
Win7 32位或win-XP環(huán)境 2.2軟件安裝和配置
需準(zhǔn)備的安裝軟件 Ccs3.3
bios3.08 648dvsdk perl Bios是TI針對DSP開發(fā)的實時嵌入式操作系統(tǒng)。
Dvsdk是基于BIOS系統(tǒng)的視頻開發(fā)包。Perl是腳本工具,燒寫程序時將out文件轉(zhuǎn)換為ais文件。
建議所有軟件安裝到默認(rèn)目錄下,安裝完后
配置操作系統(tǒng)環(huán)境變量
修改BIOS_INSTALL_DIR變量為 C:/CCStudio_v3.3/bios_5_31_08 配置CCS的組件管理器,如圖2-1
點(diǎn)“開始->所有程序->TI->component manager,修改Target Content(DSP/BIOS)->TMS320C64XX為當(dāng)前版本的DSP/BIOS
圖 2-1 2.3 DVSDK目錄文件介紹
默認(rèn)安裝到C:dvsdk_1_11_00_00_DM648目錄下,其中
edma3_lld_1_05_00是edma3驅(qū)動包
examples 包含很多基于BIOS的示例應(yīng)用工程,我們參考video_preview示例程序作為框架,添加圖像處理算法和通訊驅(qū)動。flashutil 包含flash燒寫工程norwriter,bootloader程序ubl,ais文件生成腳本
ndk_1_92_00_22_eval 網(wǎng)絡(luò)開發(fā)軟件包 pspdrivers_1_10_00 包含了TI提供的很多基于BIOS系統(tǒng)的驅(qū)動,我們參考其中VPORT的驅(qū)動,將按幀采集修改為按場采集的功能 xdc_2_95_02 xdc工具安裝路徑,xdc是ccs的子工具,是一個javascript編譯工具,用于編譯cfg文件,cfg文件在后面講。如圖2-2安裝XDC后,會在工程的編譯選項界面增加XDC選項。
圖2-2 2.4仿真器
TDS560USB PLUS
在CCS setup界面選擇TDS560USB PLUS platform和C64x+ family的DM648。如圖2-3.圖2-3 三 VPORT+EDMA工作原理 3.1 VPORT介紹
DM648集成了五個VPORT口,用于視頻輸入輸出,每個VPORT可以配置為capture或display模式。Capture模式又分為雙通道8bit BT656,單通道16 bit Y/C模式。Display模式又分為單通道8bit BT656, 單通道16 bit Y/C模式。
目前,capture和display模式都采用8bit BT656子模式,PAL視頻編碼芯片和解碼芯片也設(shè)置為BT656模式。3.2 BT656標(biāo)準(zhǔn)簡介
BT656標(biāo)準(zhǔn)將4:2:2格式Y(jié)CbCr數(shù)據(jù)統(tǒng)一封裝在一個數(shù)據(jù)流中,按照CbYCrY順序排列,Y的數(shù)據(jù)數(shù)量是Cb,Cr的2倍。
BT656數(shù)據(jù)流中,ffh和00h保留用于時序標(biāo)示。在視頻數(shù)據(jù)每行的開頭和結(jié)尾有標(biāo)示SAV(start of video),EAV(end of video)。SAV和EAV的格式是ffh,00h,00h,XYh,前三個字節(jié)固定,第四個字節(jié)包含場標(biāo)示,場消隱狀態(tài)和行消隱狀態(tài),如圖3-1。
圖3-1 3.3 VPORT FIFO 每個VPORT有一個FIFO存儲進(jìn)入的數(shù)據(jù)或者從FIFO輸出。
BT656 capture模式中,F(xiàn)IFO分成A、B兩個通道,如圖3-2,A通道接收VDIN[9-2]管腳的數(shù)據(jù),B通道接收VDIN[19-12]管腳的數(shù)據(jù)。每個通道又分Y,Cb,Cr三個緩存,每個緩存區(qū)有獨(dú)立的讀寄存器。
圖3-2 BT656 display模式中,如圖3-3,只有一路輸出,F(xiàn)IFO分為Y,Cb,Cr三個緩存區(qū),每個緩存區(qū)有獨(dú)立的寫寄存器。
圖3-3 VPORT和EDMA配合在FIFO和外部或片上存儲器之間移數(shù)。我們可以編程FIFO的閾值寄存器,當(dāng)FIFO達(dá)到設(shè)置滿度(fullness)(對于捕獲模式)或者低于設(shè)置滿度(對于顯示模式)時,生成EDMA事件,觸發(fā)相應(yīng)EDMA通道移數(shù)。
每個VPORT對應(yīng)6個EDMA事件,分別是
VPxYEVTA,VPxCbEVTA,VPxCrEVTA,VPxYEVTB,VPxCbEVTB,VPxCrEVTB 例如,我們用VP0口的A通道做為BT656視頻輸入,VP1口做為BT656視頻輸出。
設(shè)置VP0口A通道Y,Cb,Cr三個緩存區(qū)的閾值為720,360,360。當(dāng)PAL圖像數(shù)據(jù)傳輸完一行后,三個緩存區(qū)都達(dá)到閾值,生成VP0YEVTA,VP0CbEVTA,VP0CrEVTA三個事件,觸發(fā)對應(yīng)的三個EDMA通道將三個FIFO緩存區(qū)的一行圖像數(shù)據(jù)移入DDR2緩存區(qū)。
設(shè)置VP1口Y,Cb,Cr三個緩存區(qū)的閾值為720,360,360。當(dāng)三個緩存區(qū)數(shù)據(jù)數(shù)量低于閾值時,生成VP1YEVTA,VP1CbEVTA,VP1CrEVTA三個事件,觸發(fā)對應(yīng)的三個EDMA通道將DDR2緩存區(qū)的一行圖像數(shù)據(jù)移入三個FIFO緩存區(qū)。
四 應(yīng)用程序及驅(qū)動解析
4.1兩個重要文件
基于BIOS/DSP系統(tǒng)開發(fā)軟件,有兩個重要工程文件tcf和cfg文件,如圖4-1中紅圈1和2。
圖4-1
tcf文件包含了DSP/BIOS的配置信息。紅圈3的global settings設(shè)置DSP工作頻率,L1,L2 cache size,大小端,L2 cache 128kB。Memory section設(shè)置程序和數(shù)據(jù)各部分在存儲器中的段地址。
紅圈4 HWI(hardware interrupt)處,添加硬件中斷處理函數(shù)
紅圈5 添加BIOS/DSP的線程
cfg文件包含了庫鏈接路徑信息,使用javascript語言,如圖紅圈6。使用XDC工具編譯cfg文件,生成庫鏈接信息,供C編譯器鏈接庫時使用。cfg文件常鏈接的庫有vport驅(qū)動,edma驅(qū)動程序。
4.2圖像緩存分配和管理
Edma在VPORT和SDRAM之間搬數(shù),CPU要訪問SDRAM最新的圖像數(shù)據(jù),程序采用多個圖像緩存區(qū)循環(huán)的方式將這兩個過程并行化。
應(yīng)用層創(chuàng)建捕獲或顯示通道時,調(diào)用驅(qū)動層程序在DDR2分配存放圖像數(shù)據(jù)的緩存區(qū)。分配之前,驅(qū)動根據(jù)通道的配置參數(shù)計算每個緩存區(qū)的大小。
例如,vp0按場采集,vp1按幀顯示。Vp0的每個緩存區(qū)的大小是720*288*2,vp1的每個緩存區(qū)的大小是720*576*2。
應(yīng)用程序使用FVID_dequeue()出隊函數(shù)和FVID_queue()入隊函數(shù)或FVID_exchange()交換函數(shù),在應(yīng)用程序和驅(qū)動程序之間交換圖像緩存區(qū)。
捕獲和顯示驅(qū)動的緩存管理方法不同,如下面兩圖4-2和4-3:
圖中藍(lán)塊表示應(yīng)用程序的圖像緩存區(qū),白塊表示驅(qū)動程序的圖像緩存區(qū)。
圖像捕獲緩存區(qū),初始時所有的緩存區(qū)都在捕獲隊列里,捕獲驅(qū)動程序以循環(huán)的方式填充每個緩存區(qū)。
當(dāng)應(yīng)用程序調(diào)用FVID_dequeue()函數(shù)時,將放有最新圖像數(shù)據(jù)的緩存區(qū)出隊并返回給應(yīng)用程序,驅(qū)動在余下的隊列里循環(huán)填充,如(a)到(b)和(b)到(e)。
當(dāng)應(yīng)用程序調(diào)用FVID_queue()函數(shù)時,將一個空的緩存區(qū)交給驅(qū)動程序并加入隊列,如圖(b)到(a)和(e)到(b)。
當(dāng)應(yīng)用程序調(diào)用FVID_exchange()函數(shù)時,應(yīng)用程序交給驅(qū)動一個空的緩存區(qū),驅(qū)動交給應(yīng)用程序放有最新圖像的緩存區(qū),相當(dāng)于同時調(diào)用FVID_dequeue()和FVID_queue()兩個函數(shù),如圖(b)到(c)和(c)到(d)。
圖4-2
圖像顯示緩存區(qū),初始時只有一個緩沖區(qū)用于顯示,其它緩存區(qū)等待出隊,如圖(a),黃塊表示顯示驅(qū)動隊列里準(zhǔn)備出隊的緩存區(qū)。顯示驅(qū)動程序重復(fù)顯示一個緩存區(qū)的圖像。
當(dāng)應(yīng)用程序調(diào)用FVID_dequeue()函數(shù)時,從驅(qū)動獲得一個緩存區(qū),應(yīng)用程序向它填充顯示數(shù)據(jù),同時驅(qū)動仍然顯示之前的緩存區(qū),如圖(b)和(d)。當(dāng)應(yīng)用程序調(diào)用FVID_queue()函數(shù)時,應(yīng)用程序給驅(qū)動程序一個準(zhǔn)備顯示的緩存區(qū),同時驅(qū)動將它設(shè)置為當(dāng)前的緩存區(qū),如圖(b)到(c)到(d)。
當(dāng)應(yīng)用程序調(diào)用FVID_exchange()函數(shù)時,應(yīng)用程序給驅(qū)動一個準(zhǔn)備顯示的緩存區(qū),從驅(qū)動得到一個空的緩存區(qū),相當(dāng)于同時調(diào)用FVID_dequeue()和FVID_queue()函數(shù),如圖(d)到(e)。
圖4-3
4.3 應(yīng)用程序框架介紹
基于dvsdk_install_dir/example目錄下的video_preview示例程序,做為項目軟件框架
應(yīng)用程序主要包含三部分:
Main函數(shù)
Video_preview線程
自添加的中斷處理函數(shù)
許多實時DSP應(yīng)用都需要同時執(zhí)行很多不相關(guān)的功能,這些功能一般是對外部事件的響應(yīng),這些功能就加線程。
DSP/BIOS支持4種線程:
(1)硬件中斷(HWI):頻率可達(dá)200KHz(5us)(2)軟件中斷(SWI):SWI允許HWI將一些非關(guān)鍵處理在低優(yōu)先級上延遲執(zhí)行,這樣可以減少在中斷服務(wù)程序中的駐留時間。
(3)任務(wù)(TSK):任務(wù)與中斷不同點(diǎn)在于,任務(wù)在執(zhí)行過程中可以被掛起。
(4)后臺線程(IDL):空閑循環(huán),運(yùn)行那些沒有執(zhí)行時間限制的函數(shù)。
上電加載完操作系統(tǒng)內(nèi)核后,首先執(zhí)行main函數(shù)。
Main函數(shù)執(zhí)行完后,啟動video_preview線程,線程生命期直到執(zhí)行結(jié)束后。此線程主要功能有圖像采集,處理,字符疊加,顯示。
Video_preview線程第一步調(diào)用FVID_create()函數(shù)為vp0口創(chuàng)建捕獲通道對象capChan,初始化vp0寄存器,為vp1口創(chuàng)建顯示通道對象disChan,初始化vp1寄存器。
第二步調(diào)用FVID_allocBuffer()為capChan和disChan分別分配三個圖像緩存區(qū),然后調(diào)用FVID_queue()將三個緩存區(qū)組成隊列,同時為capChan和disChan分配edma通道,設(shè)置edma參數(shù)表。
第三步調(diào)用FVID_control()函數(shù)使能vp0,vp1口,vp0開始捕獲,vp1開始輸出顯示。
第四步調(diào)用FVID_dequeue()從capChan和disChan的緩存隊列中各出一個緩存。
第五步 進(jìn)入while(1)循環(huán),在循環(huán)中執(zhí)行兩次FVID_exchange()。FVID_exchange(capChan,pImg1)捕獲新的一場圖像數(shù)據(jù),F(xiàn)VID_exchange(disChan,pImg)顯示新的一幀圖像。捕獲兩次,顯示一次。
FVID_exchange(capChan,pImg1)后面添加圖像處理算法和疊加字符。
4.4添加圖像處理算法
在FVID_exchange(capChan,img)函數(shù)捕獲圖像后添加圖像處理算法。為了減少CPU訪問圖像數(shù)據(jù)時間,將圖像數(shù)據(jù)和訪問頻率高的中間數(shù)組放在L2 RAM里。DM648 L2的大小512KB,其中128KB用于cache,剩余384KB可用于應(yīng)用程序存放圖像數(shù)據(jù)。
4.5 VPORT驅(qū)動調(diào)試方法
VPORT驅(qū)動采用BIOS的兩層驅(qū)動模型class/mini-driver,BIOS現(xiàn)在抽象定義了三種class驅(qū)動,PIP/PIO,SIO/DIO,GIO,應(yīng)用程序通過這三類BIOS API接口與mini driver通訊,在一個應(yīng)用工程中可以同時使用這三種API 接口。
Mini層通過CSL層訪問外圍硬件的寄存器,存儲器,中斷資源,如圖4-6。
圖4-6 Video_preview應(yīng)用工程中使用了BIOS GIO接口API,如圖4-7是GIO和mini diver層包含的API,F(xiàn)VID函數(shù)是GIO API的宏定義,如下:
#define FVID_create(name, mode, status, optArgs, attrs)
GIO_create(name, mode, status, optArgs, attrs)#define FVID_exchange(gioChan, bufp)
GIO_submit(gioChan, FVID_EXCHANGE, bufp, NULL, NULL)#define FVID_control(gioChan, cmd, args)
GIO_control(gioChan, cmd, args)
圖4-7 VPORT的mini driver層實現(xiàn)工程vport_bios_dm648_drv_lib.pjt在dvsdk_install_dir/pspdriver目錄下,將其設(shè)置為video_preview_PAL.pjt的依賴工程(Dependent Projects),如圖4-8,這樣應(yīng)用工程重新編譯之后就可以同時調(diào)試應(yīng)用工程
和mini driver層。
圖4-8 五 flash芯片燒寫程序
在燒寫程序之前需要準(zhǔn)備兩個文件ubl.ais和video_preview_PAL.ais,使用Dvsdk_install_dirflashutil目錄下的perl腳本命令create_ais.bat將ubl.out和video_preview_PAL.out生成對應(yīng)的ais文件。
Ubl(user boot loader)是DSP啟動加載器,DSP上電后會自動將UBL代碼從 flash加載到存儲器中,開始執(zhí)行UBL,ubl先初始化pll,ddr2,emif,再將video_preview_PAL工程從flash加載到存儲器中,然后開始執(zhí)行應(yīng)用程序。
準(zhǔn)備好ais文件后,加載運(yùn)行norwrite工程Dvsdk_install_dirflashutilDM647_8CCSDM648_NORWriter,norwriter包含四個步驟:
(1)設(shè)備初始化,pll,ddr2,emif初始化。(2)擦寫flash塊0xa000 0000-0xa002 0000,將UBL二進(jìn)制文件寫入該flash塊。
(3)擦寫flash塊0xa002 0000-0xa008 0000,將video_preview工程二進(jìn)制文件寫入該flash塊。
(4)擦寫flash塊0xa060 0000-0xa060 2000,將軸位寫入該flash塊
第二篇:軟件開發(fā)心得總結(jié)
有感于網(wǎng)盤開發(fā)過程
有感于網(wǎng)盤開發(fā)過程..............................................................................................................................1
一、軟件開發(fā)個人體會:.................................................................................................................2
二、做軟件開發(fā)我覺得要明白:.....................................................................................................2
三、在開發(fā)中遇到問題應(yīng)該怎么去解決?......................................................................................2
四、怎么樣才能提高自身的能力?..................................................................................................2
五、怎么樣才能做好軟件開發(fā)?.....................................................................................................2
六、文檔的重要性.............................................................................................................................3
七、我的收獲.....................................................................................................................................3
八、網(wǎng)盤項目開發(fā)的最大體會.........................................................................................................4
九、軟件測試(單體測試和連接測試)..........................................................................................4
常熟理工學(xué)院SIG小組
3/28/2013
一、軟件開發(fā)個人體會:
1.軟件領(lǐng)域中的知識在于積累。
2.做軟件開發(fā),就類似算數(shù)學(xué)題和世界杯足球賽一樣:重在結(jié)果,而不在乎過程。3.軟件服務(wù)于人類,軟件是在解決一些生活中的問題和錯誤,問題決定解決方案。
二、做軟件開發(fā)我覺得要明白:
1.職業(yè)的樂趣:
(A)用自己的智慧去創(chuàng)建新事物的快樂(B)開發(fā)對別人有用的東西(C)不斷學(xué)習(xí)來充實自己 2.職業(yè)的苦惱:(A)總是追求完美
(B)所有要實現(xiàn)的功能由他人而定
(C)概念設(shè)計計是有趣的,但找Bug總是很苦惱的
三、在開發(fā)中遇到問題應(yīng)該怎么去解決?
1.2.3.4.不明白就多問,不要自已一直去琢磨。
一個問題如果30分鐘還沒有解決就應(yīng)該考慮是不是問問別人。一個問題在沒有用過3種以上的方法解決過就不要去問別人。解決問題思路是關(guān)鍵:
相信問題總歸有解決的辦法,就算連技術(shù)上都沒法實現(xiàn)的問題,相信通過良好的溝通終究也會有解決的方法。
5.解決問題的前提是:理解別人的意思,理解別人的需求,多溝通,及時給客戶反饋信息。
四、怎么樣才能提高自身的能力?
1.程序員怎么樣進(jìn)步最快? - 理論結(jié)合實踐
2.不要怕出錯,不怕遇到錯誤,有錯誤就有挑戰(zhàn),這樣才可以進(jìn)步,但不要讓同一個石頭把你絆倒2次。
五、怎么樣才能做好軟件開發(fā)?
1.首先要明白解決的問題是什么,理解問題,其次再決定怎么解決這個問題 2.碰到很復(fù)雜的問題,我們就簡單想,把問題簡單化,細(xì)化到能夠?qū)崿F(xiàn)為止
常熟理工學(xué)院SIG小組
3/28/2013
3.出了問題,我們要先分析問題,然后知道引起問題的原因,最后并想出問題的解決辦法 4.我們應(yīng)該從2個方面去把握一個項目:從業(yè)務(wù)角度和項目的關(guān)鍵問題上去把握一個項目
(A)從不同的系統(tǒng)場景
(B)從不同的用戶角色(充當(dāng)什么角色)(C)從不同的系統(tǒng)使用角度(擁有那些權(quán)限)
5.其實我覺得開發(fā)人員說實在應(yīng)該要比使用系統(tǒng)的人更了解系統(tǒng)需求,只有真正徹底的了解了項目的業(yè)務(wù)需求,我們才能做真的做好這個項目
六、文檔的重要性
記得我當(dāng)初剛開發(fā)項目的時候都是寫個大致的需求說明書,做一個E-R圖,畫幾個大致的數(shù)據(jù)流程圖,然后建立數(shù)據(jù)字典和表結(jié)構(gòu)關(guān)系。再接著搭建一個開發(fā)環(huán)境,配置幾臺服務(wù)器,劃分一下模塊,分工,我們就可以Coding了,一直到項目結(jié)束了,也沒有完整的設(shè)計文檔,更沒有完整的測試文檔,雖然這樣的確是很快的完成了Coding工作,感覺上好像節(jié)省了好多成本和開發(fā)時間,但后期的維護(hù)和Bug 就是經(jīng)常出現(xiàn)的事。
小項目沒有文檔關(guān)系不大,但如果遇到一個大項目的時候,那這樣的開發(fā)方式就很有問題很危險的。
大項目沒有文檔: 首先維護(hù)就很麻煩,也很亂,寫的代碼,過幾天都不知道它是完成什么功能的了,其次系統(tǒng)的穩(wěn)定性和可靠性也讓人懷疑,擴(kuò)展性就不用說了。
七、我的收獲
A.程序員大多都不喜歡寫文檔,我們以前也是特討厭,記得以前都是系統(tǒng)開發(fā)完了,為了應(yīng)付項目驗收,就匆匆忙忙的一組人在那里補(bǔ)文檔。在我們的思想里,所謂的文檔就是一些廢話,一句話硬是用十句話來代替的無聊透頂。B.代碼風(fēng)格要規(guī)范
以前做項目,我們都是不怎么去注意代碼風(fēng)格和寫代碼的規(guī)范,都是稍微想一下就直接開始寫代碼了。注釋也很少用,總感覺我們自己寫的代碼,我們怎么會不知道它做了些什么事呢 ?總覺得我們自己寫的代碼我們怎么會不知道它是用來做什么的呢。一直都不相信這是個事實,但事實上,項目驗收后,系統(tǒng)剛開始使用的人少,也就不會出現(xiàn)潛在的錯誤,隨著時間的增加,久而久之,當(dāng)大量用戶并發(fā)訪問的時候,系統(tǒng)的Bug 就暴漏出來了,那時你再用熟悉的Eclipse打開整個項目的源碼時,再去看自己寫的代碼的時候,真的發(fā)現(xiàn),我們定義的這個變量名是什么意思啊 ? 我們的這個Flag 是用來判斷什么的啊 ?我們的if()中條件不知道是判斷什么? Function()也忘記是什么功能了? 想想好可怕啊。難道真的都忘記了嗎 ?回答是肯定的: 真的忘了。C.心得體會: 通過做該網(wǎng)盤項目,在這2年的鍛煉中,我們才真的體會到,良好的文檔是正規(guī)研發(fā)流程中非常重要的環(huán)節(jié),一個好的程序是先寫好設(shè)計文檔再進(jìn)行編程的,在設(shè)計文檔的指導(dǎo)下,才能寫出安全的代碼。如果你不寫文檔,一開始就寫程序,這樣你就不會按已設(shè)計好的路線走,而是想到哪寫到哪。小功能還好說,要是大功能,就容易混亂.常熟理工學(xué)院SIG小組
3/28/2013
剛開始我們還很不習(xí)慣這一系列的編程風(fēng)格,很多的規(guī)范,尤其是命名,方法和注釋,都有這著很多限制,讓我們覺得真羅唆,寫個程序完成功能不就可以了嗎,明明1小時做完的事情非得讓人用3、4個小時去做,我們現(xiàn)在真的明白這樣做的好處了,我們已經(jīng)習(xí)慣這樣的編程風(fēng)格了,這也養(yǎng)成了我們的一個編程習(xí)慣了,深有體會啊。
最忙的時候就是我們成長和收獲最多的時候。
八、網(wǎng)盤項目開發(fā)的最大體會
我們覺得項目開發(fā)的開始時候,應(yīng)該由項目負(fù)責(zé)人很好的對項目是什么項目,具體大概做什么事情,是誰提出來的,目的是解決什么問題,以及里面用到的很多專有名詞做個細(xì)致的說明,而不是從一開始就分幾本式樣書,給個靜態(tài)Html 的Demo看看,然后搭建好開發(fā)環(huán)境就按照式樣設(shè)計書來開發(fā)。
九、軟件測試(單體測試和連接測試)
我們首先認(rèn)為,編寫程序的時候不要想出了問題再解決,而是要想如何不會出現(xiàn)問題,要根據(jù)經(jīng)驗來預(yù)測可能出現(xiàn)的問題,然后避免出現(xiàn)。
測試,說的直接點(diǎn)就是給軟件找錯誤。
很多人認(rèn)為發(fā)現(xiàn)錯誤是軟件測試的唯一目的,查找不出錯誤的測試就是沒有價值的測試,實際上我們不這么認(rèn)為。
我們覺得對開發(fā)人員來說,我們要把測試出來的Bug都應(yīng)該做個分析,知道錯的原因之后,我們就應(yīng)該在下個項目中防止類似的錯誤發(fā)生,而真正來提高我們開發(fā)的效率。
常熟理工學(xué)院SIG小組
3/28/2013
第三篇:軟件開發(fā)期末總結(jié)
MTTF:平均無故障時間;MTBF:平均故障間隔時間
1軟件開發(fā)的本質(zhì):高層概念到低層概念的映射。2.軟件的本質(zhì)特征:構(gòu)造性,演化性
3面向?qū)ο蟮乃膫€原則:抽象,繼承,多態(tài),封裝。4抽象概念的理解:對抽象事物的理解;歸納概括;總結(jié)事物共同點(diǎn);進(jìn)行邏輯思維和推理 java最大特點(diǎn):簡單,面向?qū)ο?,可移植,最大限度利用網(wǎng)絡(luò) java與C++區(qū)別:全局變量;goto語句;指針;內(nèi)存管理;類型轉(zhuǎn)換;頭文件
7軟件危機(jī): 軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。不僅只軟件不能運(yùn)行,幾乎所有的軟件都存在這些問題,所包含:如何開發(fā)軟件;如何維護(hù)
軟件過程 一系列任務(wù)步驟和框架
8軟件工程: 是指導(dǎo)計算機(jī)軟件開發(fā)和維護(hù)的一門工程學(xué)科。采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護(hù)軟件,把經(jīng)過時間考驗而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,以經(jīng)濟(jì)地開發(fā)出高質(zhì)量的軟件并有效地維護(hù)它,這就是軟件工程。
9中間件 定義:是位于平臺(硬件和操作系統(tǒng))和應(yīng)用之間的通用服務(wù),這些服務(wù)具有標(biāo)準(zhǔn)的程序接口和協(xié)議。目的:提出中間件的概念是為解決分布異構(gòu)問題。分類:基礎(chǔ)中間件;業(yè)務(wù)中間件;領(lǐng)域中間件。構(gòu)件:是系統(tǒng)中實際存在的可更換部分,它實現(xiàn)特定的功能,符合一套接口標(biāo)準(zhǔn)并實現(xiàn)一組接口 組件:組件技術(shù)就是利用某種編程手段,將一些人們所關(guān)心的,但又不便于讓最終用戶去直接操作的細(xì)節(jié)進(jìn)行了封裝,同時對各種業(yè)務(wù)邏輯規(guī)則進(jìn)行了實現(xiàn),用于處理用戶的內(nèi)部操作細(xì)節(jié),甚至于將安全機(jī)制和事物機(jī)制體現(xiàn)的淋漓盡致。而這個封裝體就常常的被我們稱作組件。12 軟件生產(chǎn)線:是共享同樣的體系結(jié)構(gòu)和實現(xiàn)平臺的軟件系統(tǒng)的集合,它是具有公共的系統(tǒng)需求集的軟件系統(tǒng)。這些需求是針對一組共享公共的設(shè)計和標(biāo)準(zhǔn)(或構(gòu)件)的產(chǎn)品族,或者是一類特定的行為或任務(wù)。
13操作系統(tǒng)發(fā)展趨勢:操作系統(tǒng)內(nèi)核將呈現(xiàn)多平臺統(tǒng)一的趨勢
14軟件開發(fā)趨勢
開源:兩個作用,社區(qū)和標(biāo)準(zhǔn)的建立。SOA:面向服務(wù)的體系結(jié)構(gòu);IT治理:公司治理的一部分。
15軟件開發(fā)技術(shù)趨勢(1)下一代Web開發(fā);(2)企
業(yè)應(yīng)用2.0(SOA).(3)系統(tǒng)開發(fā).(4)開發(fā)工具和語言.(5)項目管理及安全 不同的軟件開發(fā)方法(1)結(jié)構(gòu)化開發(fā)方法(2)面
向?qū)ο箝_發(fā)方法(3)統(tǒng)一軟件開發(fā)過程(4)敏捷軟件開發(fā).軟件的體系結(jié)構(gòu):一個程序或系統(tǒng)各構(gòu)件的結(jié)
構(gòu),他們之間的相互關(guān)系及進(jìn)行設(shè)計的原則和指導(dǎo)方針;本質(zhì):對復(fù)雜事物的抽象; 一定時間內(nèi)保持穩(wěn)定 三要素:構(gòu)件的層次結(jié)構(gòu);構(gòu)件之間交互方式;數(shù)據(jù)結(jié)構(gòu)
組成元素從靜態(tài)模式轉(zhuǎn)向動態(tài)模式,組件模塊有被動調(diào)用轉(zhuǎn)向主動調(diào)用以適應(yīng)系統(tǒng)環(huán)境 軟件架構(gòu)技術(shù):根據(jù)項目情況分析系統(tǒng)行為,設(shè)計系統(tǒng)組件,給出構(gòu)架表示方式,描述構(gòu)架的各個方面,最后對系統(tǒng)構(gòu)架進(jìn)行精化。框架比架構(gòu)更加具體 數(shù)據(jù)庫設(shè)計 方法:(1)屬性主導(dǎo)設(shè)計(2)實體主
導(dǎo)設(shè)計; 遵循原則:(1)信息隱藏(2)適當(dāng)冗余(3)慎用外鍵 數(shù)據(jù)一致性:域完整性,實體完整性,引用完整性,數(shù)據(jù)有效性 插件 定義:系統(tǒng)運(yùn)行時的功能單元,是一種遵
循一定規(guī)范的應(yīng)用程序結(jié)構(gòu)編寫出來的程序。呈現(xiàn)方式:運(yùn)行時根據(jù)外部配置文件來定 基本功能:插件注冊,管理和調(diào)用 軟件質(zhì)量定義 明確聲明的功能和性能需求,明
確文檔化過得開發(fā)標(biāo)準(zhǔn),以及專業(yè)人員開發(fā)的軟件應(yīng)具有的所有隱含特征 軟件需求是進(jìn)行質(zhì)量度量的基礎(chǔ),軟件質(zhì)量特性反應(yīng)了軟件的本質(zhì)。影響軟件質(zhì)量的4個方面:開發(fā)技術(shù);人員素
質(zhì);成本時間,進(jìn)度;過程質(zhì)量 軟件項目管理 為了使軟件項目能夠按照預(yù)定的成本,進(jìn)度,質(zhì)量順利完成,對成本,人員,進(jìn)度,質(zhì)量,風(fēng)險等進(jìn)行分析和管理的活動。24 軟件配置: 計算機(jī)程序(源代碼和可執(zhí)行程序);
描述計算機(jī)程序的文檔(針對開發(fā)技術(shù)者和用戶); 數(shù)據(jù)(包含程序內(nèi)部和外部)軟件維護(hù)和軟件配置管理的區(qū)別: 維護(hù)是發(fā)生
在軟件以交付給客戶,并且投資運(yùn)行后的一系列軟件工程活動;軟件配置管理則是當(dāng)軟件項目開始,并且僅僅當(dāng)軟件退出運(yùn)行后在終止的一組跟蹤和控制活動 軟件過程成熟度:指一個特定的軟件過程被顯示定義、管理、度量、和能行的程度 JavaBean開發(fā)的三個階段:構(gòu)造階段,內(nèi)造階段,執(zhí)行階段; 包含的基本元素:屬性,方法,事件 一個Java對象具有以下特征就可以是JavaBeans 定制、持久性、通信、反省 簡單的時說(1)作為一個類必須被聲明為public(2)必須要有g(shù)et/set方法(3)有構(gòu)造函數(shù)但不能有參數(shù) 29 引發(fā)事件 當(dāng)javaBean觸發(fā)某個事件是,javabean講點(diǎn)用該事件的監(jiān)聽對象的響應(yīng)函數(shù) 30 監(jiān)聽事件 javabean被添加到某個類改事件的監(jiān)聽隊列中,并且具有該事件的響應(yīng)函數(shù),被監(jiān)聽類的此事件被激發(fā)時被監(jiān)聽類就會調(diào)用javaBean的響應(yīng)函數(shù)
JDBC工作的四個主要組件 java應(yīng)用程序,JDBC驅(qū)動器管理器、驅(qū)動器,數(shù)據(jù)源
數(shù)據(jù)源的種類 用戶DNS、系統(tǒng)DNS 文件DNS 33 java多線程的生命周期 新建狀態(tài);就緒狀態(tài)或可運(yùn)行狀態(tài);運(yùn)行狀態(tài)、阻塞狀態(tài)、消亡狀態(tài) 33 J2EE規(guī)定的web曾包括 jsp頁面、基于web的java applet、以及用于動態(tài)生成的html頁面的Servlet構(gòu)成。
作業(yè) 1簡述Servlet設(shè)計中涉及的類和接口
(1)Servlet interface: 所有的servlet直接或間接實現(xiàn)這個interface, 它提供安排servlet與客戶端聯(lián)系的方法.最關(guān)鍵的方法是Service,負(fù)責(zé)處理ServletRequest對象和ServletResponse對象。2)HttpServlet class: 實現(xiàn)Servlet interface,重寫了Service方法以區(qū)分請求(常見的HTTP請求類型是GET和POST),并調(diào)用相應(yīng)的方法來處理(doGet、doPost)。
servlet接收來自客戶端的調(diào)用請求, 它接收兩個對象: 一個是ServletRequest,另外一個是ServletResponse。
3)HttpServletRequest interface: 概括從客戶端到服務(wù)器之間的聯(lián)系,實現(xiàn)該接口的對象包含了客戶端的請求信息。
4)HttpServletResponse interface: 概括從Servlet返回客戶端的聯(lián)系,實現(xiàn)該接口的對象提供了方法,使Servlet向客戶端發(fā)回響應(yīng)。
1.現(xiàn)有數(shù)據(jù)庫db位于名為lz的MS SQL Server
服務(wù)器上,用戶名為sa,密碼為空,請編寫數(shù)據(jù)庫連接dbConnect類,實現(xiàn)數(shù)據(jù)庫的連接、返回連接對象及重載有關(guān)的close()方法。public class dbConnect {
public dbConnect(){
try{
Class.forName(“com.microsoft.jdbc.sqls
erver.SQLServerDriver”);
}
catch(ClassNotFoundException ee){
}
}
public static Connection getconn()throws SQLException{
String url
=
“jdbc:microsoft:sqlserver://lz:1433;DatabaseName=
db”;
String username= “sa”;
String password= "";
return
DriverManager.getConnection(url,username,password);
}
public static void close(ResultSet rs){
try{
rs.close();
}
catch(Exception ex){
}
}
public static void close(Statement stmt){
try{
stmt.close();
}
catch(Exception ex){
}
}
public static void close(Connection conn){
try{
conn.close();
}
catch(Exception ex){
}
}
private static dbConnect dbconn = new dbConnect();
}
第四篇:軟件開發(fā)年終個人自我總結(jié)
20xx年是我進(jìn)入公司的第一年,也是我的工作能力得到提高和快速發(fā)展的一年,在公司領(lǐng)導(dǎo)的指導(dǎo)和同事以及其它部門的支持配合下,最后在經(jīng)過自己的努力,完成了自己所要完成的各項工作任務(wù),在新的一年來臨之跡,我要對過去一年的工作進(jìn)行一個全面的總結(jié),以便在今年的工作中能夠有更明確的目標(biāo),盡量克服自己現(xiàn)在所存在的不足,希望能更一步為自己所在的部門增光,做出自己的貢獻(xiàn)。下面是我對去年工作匯總。
一、總結(jié):
1.自身定位:在過去一年,是我進(jìn)公司的第一年,也是我工作的第一年,剛開始在我對工作競爭和自身都不甚了解的情況下,在領(lǐng)導(dǎo)和同事的指導(dǎo)下,我感覺自己已經(jīng)慢慢對人與人的競爭和自身定位有了深刻的了解,因為有了自我目標(biāo),才能感受到自己的壓力有多大!我的目標(biāo)也不只是完成目前所要做的工作而已,要向其它方面拓展學(xué)習(xí)。
2.定下心來,踏踏實實:我學(xué)的是計算機(jī)專業(yè),我的工作也是計算機(jī)方面的,以前有什么優(yōu)勢,但是踏入工作崗位后才發(fā)現(xiàn),自己學(xué)的只是一個基礎(chǔ),只是有些方面或許比別人走的快一步,所以一切都要靠自己.自己要定得心下來學(xué)習(xí).成功需要耐得住寂寞,不求最快,但求最好.3.團(tuán)隊合作:以前在學(xué)?;蛟S你可以靠一個取得好成績,在工作上你必須要有一個團(tuán)隊,在一個部門之中,團(tuán)隊合作精神顯得尤為重要.以前我做有些事都是一意孤行,但現(xiàn)在已經(jīng)對自己改變了,多聽聽他人意見,會犯更少錯誤,會更長見識,所以要學(xué)會與同事之間的合作,做事才更有效。
4.工作情況:在公司一年,對MES大型系統(tǒng)有了個大概了解,對我們所要學(xué)習(xí)的MES已經(jīng)可以說差不多都掌握,條碼打印機(jī)的維修和設(shè)置掌握,A4打印機(jī)大多數(shù)情況可以維護(hù),pDA、條碼槍已掌握,電腦的系統(tǒng)重裝和維護(hù)已掌握,其它基本設(shè)置可以維護(hù),對新出來的程序掌握和了解也比較快。
5.課外學(xué)習(xí):SQL該學(xué)的已經(jīng)掌握,C#學(xué)習(xí),簡單的程序可以編寫,但有時還要依靠于網(wǎng)絡(luò)和朋友,需要進(jìn)一步加強(qiáng)。但主要還是以網(wǎng)絡(luò)為主。
二、自身缺點(diǎn)
1.溝通問題:自己的溝通能力只能算一般,因為對于某些事的闡釋還是不怎么好,語言表達(dá)能力有點(diǎn)差,希望通過平時的交流和溝通來加強(qiáng)。
2.心態(tài)問題:自己對于做某些事過于著急,一心想急切完成,確反而誤時,這個問題一開始就一直出現(xiàn),現(xiàn)在雖然已經(jīng)基本克服,但也要列入缺點(diǎn)方面,希望以后時刻注意!
3.學(xué)習(xí)問題:對于課外學(xué)習(xí)C#這方面,我在編程時感覺困難的時候有時候就不愿去做,現(xiàn)在雖然已經(jīng)慢慢改進(jìn)上網(wǎng)搜資料和問問朋友,但有時候還是克服不了自己。
第五篇:最新軟件開發(fā)實習(xí)個人總結(jié)
軟件開發(fā)實習(xí)個人總結(jié)
短短兩周的很快就過去了,在xx的實習(xí)馬上就要過去了,最新軟件開發(fā)實習(xí)個人總結(jié)。雖然只有短短的兩周,但我學(xué)會了很多知識,熟悉了軟件開發(fā)的流程,也很好的增強(qiáng)了自己的動手能力。
我是一名即將大四的學(xué)生,縱觀現(xiàn)在的就業(yè)形勢,國家高校的擴(kuò)招,世界金融危機(jī)的橫掃,大學(xué)生應(yīng)該有一種居安思危的緊迫感,特別是對已經(jīng)度過兩年大學(xué)的我來說,畢業(yè)并不是一個遙遠(yuǎn)的詞匯。寶劍鋒從磨礪出,梅花香自苦寒來,缺少了平時的鍛煉,沒有厚積當(dāng)然不能有薄發(fā)。首先我得有思想上的緊迫感,在學(xué)校學(xué)習(xí)的都是理論知識,實踐經(jīng)驗則是少之又少。綜合能力強(qiáng)的人才才是這個社會需要的,成長成為社會需要的人才是我的個人奮斗目標(biāo)。有了強(qiáng)大的精神動力,有了堅如磐石的毅力,相信成功并不遙遠(yuǎn),個人總結(jié)《最新軟件開發(fā)實習(xí)個人總結(jié)》。
首先,我的自我能力得到了加強(qiáng)。在實習(xí)的前幾天主要進(jìn)行的是與JAVA有關(guān)知識的學(xué)習(xí)及預(yù)備知識的普及。在這之前由于種種原因我沒有學(xué)習(xí)過JAVA,所以對于J我?guī)缀跻粺o所知。但我曾經(jīng)學(xué)習(xí)過C++,所以對語言的理解和接受能力還不算太慢,盡管老師講解速度較快但我還是盡量跟上老師的速度。在這個過程中我學(xué)會一種自學(xué)方法——可以在第一遍時不求甚解,先了解知識框架,之后再在使用的過程中不斷加強(qiáng)對知識的理解,從而較快的學(xué)會知識并應(yīng)用于實踐。
其次我的實際的操作能力得到了加強(qiáng)。知識講解告一段落后我們就進(jìn)入了緊張而又短暫的項目中。但不得不說剛開始就碰了一鼻子灰——代碼書寫總是出錯。由于對原理理解不夠透徹,語言使用缺乏足夠經(jīng)驗所以進(jìn)度極慢。在經(jīng)過多次的討論后我們對項目理解逐漸深入,所以在此投入的過程就比較順利了。在這個過程中我明白了實踐和理論的差距及二者不可分割的關(guān)系。
最后是團(tuán)隊協(xié)作能力的提高。在整個過程中團(tuán)隊協(xié)作發(fā)揮著不可替代的作用。從在剛拿到項目時對項目進(jìn)行分析,然后進(jìn)行分工,之后就開始工作,既各干各的又不失默契的合作。在這個過程中我們誰遇到問題會互相幫助解決提高了工作效率。由于各種原因,我們這組也存在些問題……(自己編)。
這次實習(xí)拉近了我就和社會的距離,也讓自己在實踐中開拓了視野,增長了才干。社會和大學(xué)一樣也是受教育和學(xué)習(xí)的地方,在……(寫實習(xí)地)的實習(xí)我收獲頗豐,再次感謝實習(xí)期間各位老師的指導(dǎo)教誨,你們給我的知識財富將讓我受益終生。但是我知道學(xué)無止境,僅僅這段時間的學(xué)習(xí)還是不夠的,在以后的生活中我會繼續(xù)努力學(xué)習(xí),培養(yǎng)自己能力,進(jìn)一步完善自己。