企業(yè)在發(fā)展過程中,會發(fā)現(xiàn)目前的軟件部分功能不能適應(yīng)當(dāng)前的業(yè)務(wù)需求,而出于費(fèi)用、時間和轉(zhuǎn)移成本的考慮企業(yè)會著重于對軟件進(jìn)行二次開發(fā)。
什么是軟件的二次開發(fā)?
軟件的二次開發(fā)以現(xiàn)有軟件產(chǎn)品為基礎(chǔ),以客戶的個性化需求為目標(biāo)。通常,它由軟件產(chǎn)員開發(fā)人員執(zhí)行,或者由供應(yīng)商提供的二次開發(fā)接口和源代碼由第三方執(zhí)行。不同于完全定制的開發(fā),二次開發(fā)不是從零開始開發(fā),而是基于現(xiàn)有的軟件。評估一個軟件產(chǎn)品是否合格,二次并發(fā)界面是否成熟、完善和簡單是一個重要標(biāo)志。現(xiàn)有的產(chǎn)品功能不能滿足客戶的需求,或者需要與其他軟件接口,實(shí)現(xiàn)數(shù)據(jù)交換和傳輸?shù)取?/p>
軟件二次開發(fā)的條件?
1、要有這個開源產(chǎn)品的所用語言的語言基礎(chǔ)。
2、要對這個開源產(chǎn)品的功能和使用要有比較熟悉,因?yàn)槭煜ち?,才知道一個需求下來,要改什么,什么是系統(tǒng)自帶的,大概要怎么改。
3、要熟悉這個開源產(chǎn)品的數(shù)據(jù)結(jié)構(gòu),代碼結(jié)構(gòu),系統(tǒng)的框架結(jié)構(gòu),核心是哪里,附屬功能是在哪里。簡單點(diǎn)說,就是數(shù)據(jù)庫,代碼邏輯,文件目錄的熟悉。如果是用接口式的二次開發(fā),則需要對這個接口比較熟悉,一般來說會有相應(yīng)的文檔。
4、根據(jù)需求,然后利用開源產(chǎn)品的內(nèi)核,進(jìn)行系統(tǒng)的擴(kuò)展和修改,以達(dá)到需求。
5、對其提供的SDK中的API函數(shù)有一定了解,以利于對SDK中個函數(shù)的使用更加靈活方便。
軟件二次開發(fā)的優(yōu)勢?
1、與完全定制開發(fā)相比.二次開發(fā)具有工作量小、時間短、風(fēng)險低的優(yōu)點(diǎn);
2、二次開發(fā)是在已有產(chǎn)品的基礎(chǔ)上進(jìn)行的,原有產(chǎn)品功能和業(yè)務(wù)的積累能夠很好的被繼承;
3、解決了單純的產(chǎn)品化個性化需求不能滿足的問題。
軟件二次開發(fā)存在的問題?
二次開發(fā)存在問題總體上講是和現(xiàn)有系統(tǒng)息息相關(guān)的,特別是軟件系統(tǒng)的架構(gòu)和設(shè)計、二次開發(fā)接口的難易程度。
1、二次開發(fā)最好基于系統(tǒng)提供的接口。如果開發(fā)的直接目的是修改源代碼,特別是在核心源代碼的基礎(chǔ)上,不僅會導(dǎo)致現(xiàn)有功能出現(xiàn)新的錯誤和不穩(wěn)定,而且如果升級后制造商的標(biāo)準(zhǔn)產(chǎn)品不能直接升級,還會導(dǎo)致重新集成。這種情況是災(zāi)難性的,許多用戶不知道問題的嚴(yán)重性,這也是許多軟件制造商不愿意提供二次開發(fā)的原因之一;
2、現(xiàn)有產(chǎn)品需要提供成熟和完善的串行接口,這是檢驗(yàn)軟件產(chǎn)品是否成熟和標(biāo)準(zhǔn)化的重要指標(biāo)之一。否則,只能由原制造商進(jìn)行二次開發(fā)。如果制造商的服務(wù)和支持不及時,無法提供良好的服務(wù),則無法進(jìn)行后續(xù)服務(wù)和開發(fā)。無法進(jìn)行二次開發(fā)導(dǎo)致現(xiàn)有系統(tǒng)無法深入使用或只能更換,浪費(fèi)了現(xiàn)有投資和時間投資。