【摘 要】現(xiàn)代社會(huì)已進(jìn)入信息時(shí)代,各行各業(yè)都離不開信息化,上到航空航天,下到賣場交易,都與信息化系統(tǒng)息息相關(guān)。社會(huì)對(duì)信息化特別是軟件系統(tǒng)有著越來越多、越來越高的要求。
【關(guān)鍵詞】軟件開發(fā) 外包 管理
隨著軟件開發(fā)及上線項(xiàng)目的增多,像其他行業(yè)一樣,如何進(jìn)行管理擺在了眾多軟件從業(yè)人員甚至是公司領(lǐng)導(dǎo)層的面前。
軟件這個(gè)特殊產(chǎn)品有著與普通意義上的產(chǎn)品諸多差異。首先是軟件作為一個(gè)實(shí)物存在的物理價(jià)值極低,存在形態(tài)可能就是一張光盤,價(jià)值不超過5元錢,在長期的軟件使用經(jīng)驗(yàn)上,可能某些商業(yè)軟件在用戶眼里也就值這個(gè)價(jià)值,但它的無形成本(開發(fā)成本)可能非常巨大。這就引申出第二個(gè)問題,開發(fā)成本的計(jì)算。
軟件是人們思想及經(jīng)驗(yàn)的作品,這些存在很大的主觀因素,非常難以量化,對(duì)成本的預(yù)估及核算有著非常大德難度。
再有對(duì)軟件開發(fā)人員及模塊的標(biāo)準(zhǔn)化困難,普通產(chǎn)品可以對(duì)大小尺寸重量進(jìn)行標(biāo)準(zhǔn)化定義,但軟件由于每個(gè)人的開發(fā)實(shí)現(xiàn)方式、經(jīng)驗(yàn)不同,很多情況下由于工時(shí)緊張,標(biāo)準(zhǔn)化的制定及檢查都存在著非常大德困難。
最后是軟件產(chǎn)品的測試驗(yàn)收。由于軟件是由各個(gè)不同的開發(fā)人員制作,開發(fā)水平參差不齊,某些bug可能隱藏很深,如何找出這些bug非常困難。如果找尋不出,這些bug就像定時(shí)炸彈,隨時(shí)會(huì)爆炸,威力可能非常巨大。
以上是筆者對(duì)從事軟件行業(yè)以來的一些觀點(diǎn),在工作中筆者身處甲方公司,隨著公司高層對(duì)信息化的要求越來越高,軟件項(xiàng)目也越做越龐大。有大型商業(yè)化軟件,也有定制開發(fā)的軟件。由于甲方不是一家軟件公司,所以對(duì)軟件開發(fā)上配備的人員不可能充裕。所以原則上小型開發(fā)及維護(hù)由甲方公司的開發(fā)人員來全權(quán)負(fù)責(zé)。大型的開發(fā)周期比較長的,則交由外部軟件公司外包開發(fā),由甲方開發(fā)人員負(fù)責(zé)項(xiàng)目管理,全程跟蹤。
軟件的形成由部門用戶需求的提出開始,甲方公司IT人員與部門用戶溝通,了解需求具體內(nèi)容,再結(jié)合在甲方公司工作時(shí)對(duì)實(shí)際情況的了解與軟件從業(yè)經(jīng)驗(yàn),修正部分用戶需求。等需求了解清楚,再進(jìn)行工作量估算,如果估算結(jié)果超出3周,則考慮是否進(jìn)行外包操作。
以軟件外包為例,先期將與外包商討論需求,代碼規(guī)約,確定估算工作量,并且確定上線日期。在此基礎(chǔ)上進(jìn)行軟件開發(fā)各階段周期劃分,公司開發(fā)以原型加迭代法進(jìn)行。
由甲方公司開發(fā)人員進(jìn)行需求分析,劃分各個(gè)模塊,對(duì)主要模塊做出演示程序,不作后臺(tái)數(shù)據(jù)支持,主要作用是與用戶確定界面及操作習(xí)慣。在演示完成,大家在都有了概念的基礎(chǔ)上進(jìn)行需求修正,并按模塊開始編寫概要設(shè)計(jì)書。并將概要設(shè)計(jì)書交由軟件開發(fā)外包商進(jìn)行技術(shù)及工時(shí)確認(rèn),達(dá)成一致后,甲方開發(fā)人員開始對(duì)數(shù)據(jù)庫進(jìn)行構(gòu)建,對(duì)重要的涉及數(shù)據(jù)計(jì)算、外部系統(tǒng)數(shù)據(jù)的采集等核心內(nèi)容制作類及方法,進(jìn)行封裝,編寫使用參數(shù)說明,提供給軟件開發(fā)外包服務(wù)商,只提供調(diào)用接口,而隱蔽了具體的過程實(shí)現(xiàn),這樣最大限度的保護(hù)自己公司的核心機(jī)密。在此基礎(chǔ)上開始按照模塊優(yōu)先級(jí)順序及約定的開發(fā)周期跟蹤開發(fā)進(jìn)程。
在軟件開發(fā)外包商完成某個(gè)功能交付代碼時(shí),甲方將要求對(duì)方提供測試報(bào)告,理論上是每個(gè)判斷語句的分支都要以不同的數(shù)據(jù)進(jìn)行測試,并將所有的輸入值與輸出值列示在測試報(bào)告中。
拿到這份報(bào)告后甲方開發(fā)人員首要就是按照該報(bào)告中的輸入值輸入進(jìn)行測試,檢查結(jié)果是否與報(bào)告所列輸出值相符,并且與要求的結(jié)果是否相符; 測試點(diǎn)是否都已到位;抽查代碼規(guī)約是否符合。全部的檢測完成后,將該模塊在測試系統(tǒng)中添加,與其他模塊進(jìn)行集合測試。在集合測試之前,甲方人員會(huì)預(yù)先準(zhǔn)備根據(jù)業(yè)務(wù)流程為基礎(chǔ)制作的測試用例,模擬實(shí)際使用情況。集合測試完成后通知業(yè)務(wù)部門用戶進(jìn)行使用測試,并根據(jù)用戶反饋進(jìn)行需求改進(jìn)匯總,制作需求修正概要設(shè)計(jì),發(fā)至外包商進(jìn)行開發(fā)修正。
正常情況下每一周與外包商進(jìn)行溝通,確認(rèn)開發(fā)進(jìn)度,及時(shí)進(jìn)行偏差修正。各模塊完成后,有甲方IT人員負(fù)責(zé)驗(yàn)收,驗(yàn)收方法之一是在這個(gè)系統(tǒng)上模擬用戶操作完成一系列操作,得到正確的結(jié)果集。并根據(jù)這些操作完成使用手冊(cè),交由用戶使用。并將所有相關(guān)文檔歸檔。如果一切順利則可視為該外包商已完成這一項(xiàng)目的開發(fā)工作。
在余下的使用中,將有甲方IT人員整理所有的開發(fā)文檔,完善數(shù)據(jù)字典,補(bǔ)充遺漏的使用手冊(cè),著手接管該項(xiàng)目的后續(xù)維護(hù)開發(fā)任務(wù)。在后續(xù)開發(fā)中如果遇到大型開發(fā)需求,根據(jù)企業(yè)情況需要開發(fā)外包的則可以復(fù)用該開發(fā)管理流程。
在筆者多年的開發(fā)管理工作中,這套管理流程很好控制了軟件委外開發(fā)的風(fēng)險(xiǎn),保證了公司的核心商業(yè)機(jī)密不外泄,又很好地使用外部資源滿足了企業(yè)內(nèi)部業(yè)務(wù)管理的需要,而且甲方人員參與到了開發(fā)管理的各個(gè)環(huán)節(jié),對(duì)于軟件的質(zhì)量做到可控可維護(hù)。
以上開發(fā)步驟只能是從企業(yè)自身角度出發(fā),盡量避免軟件項(xiàng)目管理中的那些不確定因素,無法完全克服。只有在工作中不斷學(xué)習(xí)不斷總結(jié),希望能夠達(dá)到一個(gè)最完美的平衡點(diǎn)。
作者簡介:
任思宇(1980年08月出生)、性別:男、籍貫(江蘇省、常州市)、2005年畢業(yè)于上海交通大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù) 專業(yè),現(xiàn)供職于上海申得歐有限公司從事軟件開發(fā)及管理工作、學(xué)士 學(xué)位、研究方向:軟件開發(fā)及管理。