軟件開發(fā)職責(zé)流程
1.傳統(tǒng)開發(fā)流程的問題
傳統(tǒng)的軟件開發(fā)流程是一個(gè)文檔驅(qū)動的流程,它將整個(gè)軟件開發(fā)過程劃分為順序相接的幾個(gè)階段,每個(gè)階段都必需完成全部規(guī)定的任務(wù)(文檔)后才能夠進(jìn)入下一個(gè)階段。如必須完成全部的系統(tǒng)需求規(guī)格說明書之后才能夠進(jìn)入概要設(shè)計(jì)階段,編碼必需在系統(tǒng)設(shè)計(jì)完成之后才能夠進(jìn)行。這就意味著只有當(dāng)所有的系統(tǒng)模塊全部開發(fā)完成之后,我們才進(jìn)行系統(tǒng)集成,對于一個(gè)由上百個(gè)模塊組的復(fù)雜系統(tǒng)來說,這是一個(gè)非常艱巨而漫長的工作。
隨著我們所開發(fā)的軟件項(xiàng)目越來越復(fù)雜,傳統(tǒng)的瀑布型開發(fā)流程不斷地暴露出以下問題:
需求或設(shè)計(jì)中的錯(cuò)誤往往只有到了項(xiàng)目后期才能夠被發(fā)現(xiàn)例如:系統(tǒng)交付客戶之后才發(fā)現(xiàn)原先對于需求的理解是錯(cuò)誤的,系統(tǒng)設(shè)計(jì)中的問題要到測試階段才能被發(fā)現(xiàn)。
對于項(xiàng)目風(fēng)險(xiǎn)的控制能力較弱項(xiàng)目風(fēng)險(xiǎn)在項(xiàng)目開發(fā)較晚的時(shí)候才能夠真正降低,往往是經(jīng)過系統(tǒng)測試之后,才能確定該設(shè)計(jì)是否能夠真正滿足系統(tǒng)需求。
軟件項(xiàng)目常常延期完成或開發(fā)費(fèi)用超出預(yù)算項(xiàng)目開發(fā)進(jìn)度往往會被意外發(fā)生的問題所打亂,需要進(jìn)行返工或其他一些額外的開發(fā)周期,造成項(xiàng)目延期或費(fèi)用超支。
項(xiàng)目管理人員專注于文檔的完成和審核來估計(jì)項(xiàng)目的進(jìn)展情況所以項(xiàng)目經(jīng)理對于項(xiàng)目狀態(tài)的估計(jì)往往是不準(zhǔn)確的,當(dāng)他回答系統(tǒng)已完成了80%的開發(fā)任務(wù)時(shí),剩下20%的開發(fā)任務(wù)實(shí)際上消耗的是整個(gè)項(xiàng)目80%的開發(fā)資源。
在傳統(tǒng)的瀑布模型中,需求和設(shè)計(jì)中的問題是無法在項(xiàng)目開發(fā)的前期被檢測出來的,只有當(dāng)?shù)谝淮蜗到y(tǒng)集成時(shí),這些設(shè)計(jì)缺陷才會在測試中暴露出來,從而導(dǎo)致一系列的返工:重新設(shè)計(jì)、編碼、測試,進(jìn)而導(dǎo)致項(xiàng)目的延期和開發(fā)成本的上升。
2.采用迭代化開發(fā)控制項(xiàng)目風(fēng)險(xiǎn)
為了解決傳統(tǒng)軟件開發(fā)流程中的問題,我們建議采用迭代化的開發(fā)方法來取代瀑布模型。在瀑布模型中,我們要完成的是整個(gè)軟件系統(tǒng)開發(fā)這個(gè)大目標(biāo)。在迭代化的方法中,我們將整個(gè)項(xiàng)目的開發(fā)目標(biāo)劃分成為一些更易于完成和達(dá)到的階段性小目標(biāo),這些小目標(biāo)都有一個(gè)定義明確的階段性評估標(biāo)準(zhǔn)。迭代就是為了完成一定的階段性目標(biāo)而所從事的一系列開發(fā)活動,在每個(gè)迭代開始前都要根據(jù)項(xiàng)目當(dāng)前的狀態(tài)和所要達(dá)到的階段性目標(biāo)制定迭代計(jì)劃,整個(gè)迭代過程包含了需求、設(shè)計(jì)、實(shí)施(編碼)、部署、測試等各種類型的開發(fā)活動,迭代完成之后需要對迭代完成的結(jié)果進(jìn)行評估,并以此為依據(jù)來制定下一次迭代的目標(biāo)。
與傳統(tǒng)的瀑布式開發(fā)模型相比較,迭代化開發(fā)具有以下特點(diǎn):
允許變更需求
需求總是會變化,這是事實(shí)。給項(xiàng)目帶來麻煩的常常主要是需求變化和需求"蠕變",它們會導(dǎo)致延期交付、工期延誤、客戶不滿意、開發(fā)人員受挫。通過向用戶演示迭代所產(chǎn)生的部分系統(tǒng)功能,我們可以盡早地收集用戶對于系統(tǒng)的反饋,及時(shí)改正對于用戶需求的理解偏差,從而保證開發(fā)出來的系統(tǒng)真正地解決客戶的問題。
逐步集成元素
在傳統(tǒng)的項(xiàng)目開發(fā)中,由于要求一下子集成系統(tǒng)中所有的模塊,集成階段往往要占到整個(gè)項(xiàng)目很大比例的工作量(最高可達(dá)40%),這一階段的工作經(jīng)常是不確定并且非常棘手。在迭代式方法中,集成可以說是連續(xù)不斷的,每一次迭代都會增量式集成一些新的系統(tǒng)功能,要集成的元素都比過去少得多,所以工作量和難度都是比較低的。
盡早降低風(fēng)險(xiǎn)
迭代化開發(fā)的主要指導(dǎo)原則就是以架構(gòu)為中心,在早期的迭代中所要解決的主要問題就是盡快確定系統(tǒng)架構(gòu),通過幾次迭代來盡快地設(shè)計(jì)出能夠滿足核心需求的系統(tǒng)架構(gòu),這樣可以迅速降低整個(gè)項(xiàng)目的風(fēng)險(xiǎn)。等到系統(tǒng)架構(gòu)穩(wěn)定之后,項(xiàng)目的風(fēng)險(xiǎn)就比較低了,這個(gè)時(shí)候再去實(shí)現(xiàn)系統(tǒng)中尚未完成的功能,進(jìn)而完成整個(gè)項(xiàng)目。
有助于提高團(tuán)隊(duì)的士氣
開發(fā)人員通過每次迭代都可以在短期內(nèi)看到自己的工作成果,從而有助于他們增強(qiáng)信心,更好地完成開發(fā)任務(wù)。而在非迭代式開發(fā)中,開發(fā)人員只有在項(xiàng)目接近尾聲時(shí)才能看到開發(fā)的結(jié)果,在此之前的相當(dāng)長時(shí)間,大家還是在不確定性中摸索前近。
生成更高質(zhì)量的產(chǎn)品
每次迭代都會產(chǎn)生一個(gè)可運(yùn)行的系統(tǒng),通過對這個(gè)可運(yùn)行系統(tǒng)進(jìn)行測試,我們在早期的迭代中就可以及時(shí)發(fā)現(xiàn)缺陷并改正,性能上的瓶頸也可以盡早發(fā)現(xiàn)并處理。因?yàn)樵诿看蔚锌偸遣粩嗟丶m正錯(cuò)誤,我們可以得到更高質(zhì)量的產(chǎn)品。
保證項(xiàng)目開發(fā)進(jìn)度
每次迭代結(jié)束時(shí)都會進(jìn)行評估,來判斷該次迭代有沒有達(dá)到預(yù)定的目標(biāo)。項(xiàng)目經(jīng)理可以很清楚地知道有哪些需求已經(jīng)實(shí)現(xiàn)了,并且比較準(zhǔn)確地估計(jì)項(xiàng)目的狀態(tài),對項(xiàng)目的開發(fā)進(jìn)度進(jìn)行必要的調(diào)整,保證項(xiàng)目按時(shí)完成。
容許產(chǎn)品進(jìn)行戰(zhàn)術(shù)改變
迭代化的開發(fā)具有更大的靈活性,在迭代過程中可以隨時(shí)根據(jù)業(yè)務(wù)情況或市場環(huán)境來對產(chǎn)品的開發(fā)進(jìn)行調(diào)整。例如為了同現(xiàn)有的同類產(chǎn)品競爭,可以決定采用搶先競爭對手一步的方法,提前發(fā)布一個(gè)功能簡化的產(chǎn)品。
迭代流程自身可在進(jìn)行過程中得到改進(jìn)和精煉
一次迭代結(jié)束時(shí)的評估不僅要從產(chǎn)品和進(jìn)度的角度來考察項(xiàng)目的情況,而且還要分析組織和流程本身有什么待改進(jìn)之處,以便在下次迭代中更好地完成任務(wù)。
迭代化方法解決的主要是對于風(fēng)險(xiǎn)的控制問題,從下圖可以看出,傳統(tǒng)的開發(fā)流程中系統(tǒng)的風(fēng)險(xiǎn)要到項(xiàng)目開發(fā)的后期(主要是測試階段)才能夠被真正降低。而迭代化開發(fā)中的風(fēng)險(xiǎn),可以在項(xiàng)目開發(fā)的早期通過幾次迭代來盡快地解決掉。在早期的迭代中一旦遇到問題,如某一個(gè)迭代沒有完成預(yù)定的目標(biāo),我們還可以及時(shí)調(diào)整開發(fā)進(jìn)度以保證項(xiàng)目按時(shí)完成。一般到了項(xiàng)目開發(fā)的后期(風(fēng)險(xiǎn)受控階段),由于大部分高風(fēng)險(xiǎn)的因素(如需求、架構(gòu)、性能等)都已經(jīng)解決,這時(shí)候只需要投入更多的資源去實(shí)現(xiàn)剩余的需求即可。這個(gè)階段的項(xiàng)目開發(fā)具有很強(qiáng)的可控性,從而保證我們按時(shí)交付一個(gè)高質(zhì)量的軟件系統(tǒng)。
迭代化開發(fā)不是一種高深的軟件工程理論,它提供了一種控制項(xiàng)目風(fēng)險(xiǎn)的非常有效的機(jī)制。在日常的工作我們也經(jīng)常地應(yīng)用到這一基本思想,如對于一個(gè)非常大型的工程項(xiàng)目,我們經(jīng)常會把它分為幾期來分步實(shí)施,從而把復(fù)雜的問題分解為相對容易解決的小問題,并且能夠在較短周期內(nèi)看到部分系統(tǒng)實(shí)現(xiàn)的效果,通過盡早暴露問題來幫助我們及早調(diào)整我們的開發(fā)資源,加強(qiáng)項(xiàng)目進(jìn)度的可控程度,保證項(xiàng)目的按時(shí)完成。
3.管理迭代化的軟件項(xiàng)目
當(dāng)我們在實(shí)際工作中實(shí)踐迭代化思想時(shí),Rational統(tǒng)一開發(fā)流程RUP(RationalUnifiedProcess)可以給予我們實(shí)踐的指導(dǎo)。RUP是一個(gè)通用的軟件流程框架,它是一個(gè)以架構(gòu)為中心、用例驅(qū)動的迭代化軟件開發(fā)流程。RUP是從幾千個(gè)軟件項(xiàng)目的實(shí)踐經(jīng)驗(yàn)中總結(jié)出來的,對于實(shí)際的項(xiàng)目具有很強(qiáng)的指導(dǎo)意義,是軟件開發(fā)行業(yè)事實(shí)上的行業(yè)標(biāo)準(zhǔn)。
3.1軟件開發(fā)的四個(gè)階段
在RUP中,我們把軟件開發(fā)生命周期劃分為四個(gè)階段,每個(gè)階段的結(jié)束標(biāo)志就是一個(gè)主要的里程碑(如下圖所示)。
這四個(gè)階段主要是為了達(dá)到以下階段性的目標(biāo)里程碑:
先啟(Inception):確定項(xiàng)目開發(fā)的目標(biāo)和范圍
精化(Elaboration):確定系統(tǒng)架構(gòu)和明確需求
構(gòu)建(Construction):實(shí)現(xiàn)剩余的系統(tǒng)功能
產(chǎn)品化(Transition):完成軟件的產(chǎn)品化工作,將系統(tǒng)移交給客戶
每個(gè)目標(biāo)里程碑都是一個(gè)商業(yè)上的決策點(diǎn),如先啟階段結(jié)束之后,我們就要決定這個(gè)項(xiàng)目是否可行、是否要繼續(xù)做這個(gè)項(xiàng)目。每一個(gè)階段都是由里程碑來決定的,判斷一個(gè)階段是否結(jié)束的標(biāo)志就是看項(xiàng)目當(dāng)前的狀態(tài)是否滿足里碑中所規(guī)定的條件。
從這種階段劃分模式中可以看出,項(xiàng)目的主要風(fēng)險(xiǎn)集中在前兩個(gè)階段。在精化階段中經(jīng)過幾次迭代后,我們要為系統(tǒng)建立一個(gè)穩(wěn)定的架構(gòu),在此之后再實(shí)現(xiàn)更多的系統(tǒng)需求時(shí),不再需要對該架構(gòu)進(jìn)行修改。同時(shí),在精化階段中,我們通過迭代來不斷地收集用戶的需求反饋,便得系統(tǒng)的需求逐步地明確和完整。
3.2關(guān)于開發(fā)資源的分配
基于RUP風(fēng)險(xiǎn)驅(qū)動的迭代化開發(fā)模式,我們只需要在項(xiàng)目的先啟階段投入少量的資源,對項(xiàng)目的開發(fā)前景和商業(yè)可行性進(jìn)行一些探索性的研究。在精化階段再投入多一些的研發(fā)力量來實(shí)現(xiàn)一些與架構(gòu)相關(guān)的核心需求,逐步地把系統(tǒng)架構(gòu)搭建起來。等到這兩個(gè)階段結(jié)束之后,項(xiàng)目的一些主要風(fēng)險(xiǎn)和問題也得到了解決,這時(shí)候再投入整個(gè)團(tuán)隊(duì)進(jìn)行全面的系統(tǒng)開發(fā)。等到產(chǎn)品化階段,主要的開發(fā)任務(wù)已經(jīng)全部完成,項(xiàng)目不再需要維持一個(gè)大規(guī)模的開發(fā)團(tuán)隊(duì),開發(fā)資源也可以隨之而減少。在項(xiàng)目開發(fā)周期中,開發(fā)資源的分配可以如下圖所示。
這樣安排可以最充分有效地利用公司的開發(fā)資源,緩解軟件公司對于人力資源不斷增長的需求,從而降低成本。另外一方面,由于前兩個(gè)階段(先啟和精化)的風(fēng)險(xiǎn)較高,我們只是投入部分的資源,一旦發(fā)生返工或是項(xiàng)目目標(biāo)的改變,我們也可以將資源浪費(fèi)降到最低點(diǎn)。在傳統(tǒng)的軟件開發(fā)流程中,對于開發(fā)資源的分配基本上是貫穿整個(gè)項(xiàng)目周期而不變的,資源往往沒有得到充分有效地利用。
基于這種資源分配模式,一個(gè)典型的項(xiàng)目在項(xiàng)目進(jìn)度和所完成的工作量之間的關(guān)系可能如下表中的數(shù)據(jù)所示
先啟
精化
構(gòu)建
產(chǎn)品化
工作量
~5%
20%
65%
10%
進(jìn)度
10%
30%
50%
10%
3.3迭代策略
關(guān)于迭代計(jì)劃的安排,通常有以下四種典型的策略模式:
增量式(Incremental)
這種模式的特點(diǎn)是項(xiàng)目架構(gòu)的風(fēng)險(xiǎn)較小(往往是開發(fā)一些重復(fù)性的項(xiàng)目),所以精化階段只需要一個(gè)迭代。但項(xiàng)目的開發(fā)工作量較大,構(gòu)建階段需要有多次迭代來實(shí)現(xiàn),每次迭代都在上一次迭代的基礎(chǔ)上增加實(shí)現(xiàn)一部分的系統(tǒng)功能,通過迭代的進(jìn)行而逐步實(shí)現(xiàn)整個(gè)系統(tǒng)的功能。
演進(jìn)式(Evolutionary)
當(dāng)項(xiàng)目架構(gòu)的風(fēng)險(xiǎn)較大時(shí)(從未開發(fā)過類似項(xiàng)目),需要在精化階段通過多次迭代來建立系統(tǒng)的架構(gòu),架構(gòu)是通過多次迭代的探索,逐步演化而來的。當(dāng)架構(gòu)建立時(shí),往往系統(tǒng)的功能也已經(jīng)基本實(shí)現(xiàn),所以構(gòu)建階段只需要一次迭代。
增量提交(IncrementalDelivery)
這種模式的特點(diǎn)產(chǎn)品化階段的迭代較多,比較常見的例子是項(xiàng)目的難度并不大,但業(yè)務(wù)需求在不斷地發(fā)生變化,所以需要通過迭代來不斷地部署完成的系統(tǒng);但同時(shí)又要不斷地收集用戶的反饋來完善系統(tǒng)需求,并通過后續(xù)的迭代來補(bǔ)充實(shí)現(xiàn)這些需求。應(yīng)用這種策略時(shí)要求系統(tǒng)架構(gòu)非常穩(wěn)定,能夠適應(yīng)滿足后續(xù)需求變化的要求。
單次迭代(GrandDesign)
傳統(tǒng)的瀑布模型可以看作是迭代化開發(fā)的一個(gè)特例,整個(gè)開發(fā)流程只有一次迭代。但這種模式有一個(gè)固有的弱點(diǎn),由于它對風(fēng)險(xiǎn)的控制能力較差,往往會在產(chǎn)品化階段產(chǎn)生一些額外的迭代,造成項(xiàng)目的延誤。
這幾種迭代策略只是一些典型模式的代表,實(shí)際應(yīng)用中應(yīng)根據(jù)實(shí)際情況靈活應(yīng)用,最常見的迭代計(jì)劃往往是這幾種模式的組合。
3.4制定項(xiàng)目開發(fā)計(jì)劃
在迭代化的開發(fā)模式中,項(xiàng)目開發(fā)計(jì)劃也是隨著項(xiàng)目的進(jìn)展而不斷細(xì)化、調(diào)整并完善的。傳統(tǒng)的項(xiàng)目開發(fā)計(jì)劃是在項(xiàng)目早期制定的,項(xiàng)目經(jīng)理總是試圖在項(xiàng)目的一開始就制定一個(gè)非常詳細(xì)完善的開發(fā)計(jì)劃。與之相反,迭代開發(fā)模式認(rèn)為在項(xiàng)目早期只需要制定一個(gè)比較粗略的開發(fā)計(jì)劃,因?yàn)殡S著項(xiàng)目的進(jìn)展,項(xiàng)目的狀態(tài)在不斷地發(fā)生變化,項(xiàng)目經(jīng)理需要隨時(shí)根據(jù)迭代的結(jié)果來對項(xiàng)目計(jì)劃進(jìn)行調(diào)整,并制定下一次迭代的詳細(xì)計(jì)劃。
在RUP中,我們把項(xiàng)目開發(fā)計(jì)劃分為以下三部分:
項(xiàng)目計(jì)劃
確定整個(gè)項(xiàng)目的開發(fā)目標(biāo)和進(jìn)度安排,包括每一個(gè)階段的起止時(shí)間段。
階段計(jì)劃
當(dāng)前階段中包含有幾個(gè)迭代,每一次迭代要達(dá)到的目標(biāo)以及進(jìn)度安排。
迭代計(jì)劃
針對當(dāng)前迭代的詳細(xì)開發(fā)計(jì)劃,包括開發(fā)活動以及相關(guān)資源的分配。
項(xiàng)目開發(fā)計(jì)劃也是完全體現(xiàn)迭代化的思想,每次迭代中項(xiàng)目經(jīng)理都會根據(jù)項(xiàng)目情況來不斷地調(diào)整和細(xì)化項(xiàng)目開發(fā)計(jì)劃。迭代計(jì)劃是在對上一次迭代結(jié)果進(jìn)行評估的基礎(chǔ)上制定的,如果上一次迭代達(dá)到了預(yù)定的目標(biāo),那么當(dāng)前迭代只需要解決剩下的問題;如果上一次迭代中留有一些問題還沒有解決,則當(dāng)前迭代還需要繼續(xù)去解決這些問題。所以必須注意,迭代是不能重疊的,即你還沒有完成當(dāng)前迭代時(shí),你決不能進(jìn)入下一迭代,因?yàn)橄乱淮蔚挠?jì)劃是根據(jù)當(dāng)前迭代的結(jié)果而制定的。
篇2:軟件開發(fā)工程師崗位工作職責(zé)
軟件開發(fā)工程師的工作主要是負(fù)責(zé)網(wǎng)站整體建設(shè)及網(wǎng)站程序開發(fā),那么他的具體職責(zé)是什么呢以下由[制度職責(zé)大全]人才網(wǎng)為大家詳細(xì)介紹軟件開發(fā)工程師崗位職責(zé),請閱讀。
1、軟件的程序設(shè)計(jì)與代碼編寫。
2、有關(guān)技術(shù)方案、文檔的編寫,軟件單元的測試。
3、根據(jù)項(xiàng)目具體要求,承擔(dān)開發(fā)任務(wù),按計(jì)劃完成任務(wù)目標(biāo)。
4、配合系統(tǒng)分析人員完成軟件系統(tǒng)以及模塊的需求調(diào)研、需求分析。
5、獨(dú)立完成軟件系統(tǒng)及模塊的編碼。
6、協(xié)助測試人員完成軟件系統(tǒng)及模塊的測試。
7、負(fù)責(zé)編制與項(xiàng)目相關(guān)的技術(shù)文檔。
8、根據(jù)項(xiàng)目具體要求,承擔(dān)大型網(wǎng)站設(shè)計(jì)與開發(fā)。
9、部分軟件功能模塊設(shè)計(jì)和軟件界面美化。
10、協(xié)助測試試人員完成軟件系統(tǒng)及模塊的測試。
篇3:國際化軟件開發(fā)職責(zé)流程
國際化軟件開發(fā)需要遵守國際化技術(shù)準(zhǔn)則,采用軟件項(xiàng)目(或產(chǎn)品)方式進(jìn)行。一個(gè)完整的國際化軟件項(xiàng)目將包含很多內(nèi)容和階段,其中軟件的國際化和本地化是兩項(xiàng)主要內(nèi)容。
為了更深入地理解國際化軟件的開發(fā)流程,我們先從分析國際化項(xiàng)目失敗的原因開始,然后列舉國際化軟件的設(shè)計(jì)準(zhǔn)則,討論項(xiàng)目團(tuán)隊(duì)的組織結(jié)構(gòu)。在此基礎(chǔ)上,再詳細(xì)論述國際化軟件的開發(fā)流程和本地化流程。
1.國際化軟件項(xiàng)目失敗的原因分析
開發(fā)國際化項(xiàng)目最大的難點(diǎn)是避免失敗。由于軟件生產(chǎn)過程和技術(shù)的復(fù)雜性,軟件業(yè)在20世紀(jì)60年代出現(xiàn)了“軟件危機(jī)”——失敗的幾率很高。時(shí)至今日,雖然軟件開發(fā)和管理技術(shù)已經(jīng)取得了“突飛猛進(jìn)”式的發(fā)展,但是“軟件危機(jī)”仍然沒有根本消除,新開發(fā)軟件項(xiàng)目失敗的比例仍然居高不下。
與面向單一區(qū)域、單一語言的軟件開發(fā)項(xiàng)目相比,開發(fā)國際化軟件項(xiàng)目不僅在技術(shù)上,而且在項(xiàng)目需求和管理的各個(gè)方面都更加復(fù)雜,國際化軟件項(xiàng)目失敗的案例較多,開發(fā)國際化軟件項(xiàng)目成為高風(fēng)險(xiǎn)的生產(chǎn)活動。
分析那些失敗的國際化軟件項(xiàng)目,其原因可能多種多樣,但是沒有遵守國際化軟件的設(shè)計(jì)準(zhǔn)則和技術(shù)要求,沒有考慮國際化和本地化的使用要求等因素成為最大的問題。具體而言,導(dǎo)致國際化軟件項(xiàng)目失敗的原因主要有以下幾個(gè)方面:
●在最初編寫軟件規(guī)格說明和開發(fā)階段沒有考慮軟件的國際化問題,經(jīng)常在軟件編碼完成后進(jìn)行測試時(shí),才發(fā)現(xiàn)大量的國際化設(shè)計(jì)缺陷。
●雖然考慮了軟件的國際化需求,但是沒有深入考慮當(dāng)?shù)赜脩艉褪袌龅奶囟ㄐ枨蟆?/p>
●軟件開發(fā)團(tuán)隊(duì)不熟悉國際化開發(fā)技術(shù),不知道如何開發(fā)和管理國際化軟件。
●測試團(tuán)隊(duì)不熟悉國際化測試技術(shù),沒有在本地化的操作系統(tǒng)和設(shè)備上進(jìn)行產(chǎn)品測試。
●項(xiàng)目管理團(tuán)隊(duì)低估了軟件國際化和本地化處理所需的時(shí)間。
●國際化軟件開發(fā)公司讓當(dāng)?shù)夭缓细竦能浖?jīng)銷商進(jìn)行軟件本地化處理。
為了盡量避免國際化軟件項(xiàng)目的失敗,需要研究、學(xué)習(xí)和遵守國際化軟件準(zhǔn)則,充分運(yùn)用國際化設(shè)計(jì)技術(shù)、工程技術(shù)、本地化技術(shù),深入獲取不同區(qū)域市場的特定功能特性需求和理解文化習(xí)俗等方面的差異。
2.國際化軟件設(shè)計(jì)準(zhǔn)則
在進(jìn)行國際化軟件設(shè)計(jì)實(shí)踐過程中,軟件專業(yè)人員逐步總結(jié)出一些通用的準(zhǔn)則。遵守這些準(zhǔn)則,可以盡可能地避免國際化軟件項(xiàng)目失敗,提高質(zhì)量,降低開發(fā)和維護(hù)費(fèi)用。
國際化軟件設(shè)計(jì)需要遵循的通用準(zhǔn)則如下:
●在國際化軟件項(xiàng)目的初期融入國際化思想,并且使國際化貫穿于項(xiàng)目的整個(gè)生命周期。
●采用單一源文件進(jìn)行多語言版本的本地化,不針對不同的語言編寫多套代碼。
●需要本地化的文字與軟件源代碼分離,存儲在單獨(dú)的資源文件中。
●軟件代碼支持處理單字節(jié)字符集和多字節(jié)字符集文字的輸入、輸出和顯示,并且遵守豎排和折行規(guī)則。
●軟件代碼應(yīng)該支持Unicode標(biāo)準(zhǔn),或者可以在Unicode和其他代碼頁(CodePages)互換。
●軟件代碼不要嵌入字體名,也不要假設(shè)使用某種字體。
●使用通用的圖標(biāo)和位圖,避免不同區(qū)域的文化和傳統(tǒng)差異,避免在圖標(biāo)和位圖中嵌入需要本地化的文字。
●菜單、對話框等界面布局能夠滿足處理本地化文字的長度擴(kuò)展的需要。
●源語言的文字要準(zhǔn)確精簡,使用一致的術(shù)語,避免歧義和拼寫錯(cuò)誤,以便進(jìn)行本地化翻譯。
●保證不同區(qū)域的鍵盤布局都能使用源軟件的快捷鍵。
●考慮不同區(qū)域的法律和文化習(xí)俗對軟件的要求。
●如果軟件中采用第三方開發(fā)的軟件或組件,需要檢查和確認(rèn)是否滿足國際化的要求。
●保證源語言軟件可以在不同的區(qū)域和操作系統(tǒng)上正確運(yùn)行。
●軟件代碼中避免“硬編碼”,不使用基于源語言的數(shù)字常量、屏幕位置、文件和路徑名。
●字符串的緩沖區(qū)長度要滿足本地化字符擴(kuò)展的長度。
●軟件能正確支持區(qū)域排序和大小寫轉(zhuǎn)換。
3.項(xiàng)目與團(tuán)隊(duì)
項(xiàng)目是為完成某一項(xiàng)特定產(chǎn)品、服務(wù)或結(jié)果而實(shí)施的一項(xiàng)臨時(shí)任務(wù),它具有明確的目標(biāo)、起止時(shí)間和預(yù)算。
復(fù)雜的項(xiàng)目需要成立項(xiàng)目團(tuán)隊(duì),來自不同國家或地區(qū)的具有不同技能和經(jīng)驗(yàn)的人員,為著共同的任務(wù)目標(biāo)相互配合,共同完成項(xiàng)目的不同子任務(wù)。
國際化軟件的開發(fā)是復(fù)雜的工作,需要良好的項(xiàng)目規(guī)劃,成立有協(xié)作精神的團(tuán)隊(duì),由于現(xiàn)代軟件設(shè)計(jì)的復(fù)雜性和本地化對語言質(zhì)量的較高要求,經(jīng)常由分布在世界各地的多家公司的不同技術(shù)和管理人員組成國際化軟件項(xiàng)目團(tuán)隊(duì)。
一般地,國際化軟件項(xiàng)目可以分為規(guī)劃階段、實(shí)施階段和驗(yàn)收結(jié)尾階段。每一階段的任務(wù)都需要考慮國際化和本地化需要,而且盡早進(jìn)行國際化需求分析,可以有利于控制項(xiàng)目成本和進(jìn)度。
現(xiàn)在軟件外包成為國際化軟件項(xiàng)目新的開發(fā)模式,通常大型跨國軟件公司專注于進(jìn)行軟件項(xiàng)目規(guī)劃和核心功能和特征設(shè)計(jì),將軟件的本地化外包給專業(yè)的本地化公司。現(xiàn)在,軟件編碼和測試的外包也流行起來。
項(xiàng)目團(tuán)隊(duì)對于國際化軟件項(xiàng)目的成敗具有關(guān)鍵性的作用。除了軟件技術(shù)之外,大型國際化軟件項(xiàng)目的項(xiàng)目管理非常重要,尤其是當(dāng)項(xiàng)目由多家分布于不同國家或地區(qū)的軟件公司共同實(shí)施時(shí),項(xiàng)目規(guī)劃和管理交流就變得更為重要了。
為了便于項(xiàng)目管理,通常采用“單點(diǎn)聯(lián)系(Singlepointcontact)”的方式,每個(gè)公司在項(xiàng)目準(zhǔn)備階段指定惟一的項(xiàng)目經(jīng)理(ProjectManager,PM),負(fù)責(zé)項(xiàng)目聯(lián)系的一切任務(wù)。各個(gè)公司的項(xiàng)目經(jīng)理負(fù)責(zé)組建各自的項(xiàng)目團(tuán)隊(duì),跟蹤和控制項(xiàng)目的實(shí)施,并且報(bào)告項(xiàng)目進(jìn)度、存在的問題和可能的改進(jìn)方法。
項(xiàng)目團(tuán)隊(duì)的構(gòu)成與各家公司承擔(dān)的項(xiàng)目任務(wù)有關(guān)系,通常項(xiàng)目經(jīng)理按照任務(wù)類型組建不同的項(xiàng)目組,每個(gè)項(xiàng)目組指定一位組長(TeamLead),負(fù)責(zé)小組的技術(shù)和協(xié)調(diào)問題,每個(gè)組的成員由項(xiàng)目經(jīng)理和組長協(xié)商確定。
為了順利實(shí)施軟件本地化,軟件開發(fā)公司的本地化項(xiàng)目經(jīng)理,與軟件本地化外包服務(wù)公司的項(xiàng)目經(jīng)理,以及軟件開發(fā)公司在當(dāng)?shù)氐姆止窘?jīng)理互相協(xié)作完成軟件本地化。
軟件開發(fā)公司的分公司主要負(fù)責(zé)對本地化的內(nèi)容進(jìn)行語言質(zhì)量和文化傳統(tǒng)等方面的審閱。可以由分公司內(nèi)部的專職人員承擔(dān)審閱任務(wù),也可以在當(dāng)?shù)厥袌鰧ふ覍I(yè)人士兼任。
軟件本地化公司根據(jù)項(xiàng)目的要求,可能組建不同的團(tuán)隊(duì)。對于完整的本地化項(xiàng)目,一般需要成立本地化語言組、本地化工程組、本地化測試組和本地化桌面排版組等。
4.國際化軟件開發(fā)流程
在討論國際化軟件的流程前,需要熟悉國際化軟件的開發(fā)周期。對于國際化軟件而言,完整地開發(fā)周期包括需求分析、國際化、本地化、發(fā)布和維護(hù)等過程。其中國際化包括設(shè)計(jì)、開發(fā)和測試等,在國際化的各個(gè)環(huán)節(jié)都要重視軟件的本地化能力。越在軟件項(xiàng)目早期重視軟件的本地化要求,就越對控制軟件項(xiàng)目的正常進(jìn)度和質(zhì)量有利。
隨著市場競爭的加劇,軟件的國際化版本和本地化版本需要同時(shí)發(fā)布(Simship),而且本地化的語言版本越來越多,承擔(dān)本地化服務(wù)的公司往往不止一家,它們可能還要進(jìn)一步外包。正是由于這種復(fù)雜的環(huán)節(jié)和過程,使得大型國際化軟件的項(xiàng)目管理更趨復(fù)雜。
國際化軟件的開發(fā)流程包括開發(fā)國際化軟件需要遵循軟件工程的要求,分為需求分析、軟件設(shè)計(jì)、軟件編碼、軟件測試、質(zhì)量保證、軟件發(fā)布等過程。
在需求分析階段,既要考慮軟件的功能特性需求,也要考慮軟件的國際化需求。另外,為了縮短源語言開發(fā)的版本和本地化版本的發(fā)布時(shí)間間隔(甚至達(dá)到同步發(fā)布),國際化版本的開發(fā)應(yīng)該與軟件本地化過程同時(shí)進(jìn)行。在測試方面,對國際化版本的國際化功能測試和對本地化版本的本地化測試盡可能同時(shí)進(jìn)行,以便盡早發(fā)現(xiàn)和修改國際化設(shè)計(jì)缺陷。
在軟件進(jìn)入最終本地化和測試之前,需要“凍結(jié)(Freeze)”用戶界面和功能特性設(shè)計(jì),保證軟件在發(fā)布之前不再對需要本地化的內(nèi)容進(jìn)行改動。因?yàn)?每次改動用戶界面,本地化過程都需要重新翻譯一次,相應(yīng)的聯(lián)機(jī)幫助文檔和本地化的軟件手冊等的內(nèi)容也需要重新更新,這樣會增加項(xiàng)目成本,延遲本地化版本的發(fā)布。
5.軟件本地化流程
軟件本地化的流程與具體的項(xiàng)目有關(guān)。復(fù)雜的軟件本地化可能包括翻譯、排版、工程處理和測試等內(nèi)容,而較小的本地化項(xiàng)目可能只包含翻譯或排版。
和任何軟件項(xiàng)目一樣,本地化項(xiàng)目的前期準(zhǔn)備非常重要,明確項(xiàng)目的范圍、要求、技術(shù)和資源,對于保證項(xiàng)目的成功可能起到關(guān)鍵的作用。
軟件本地化項(xiàng)目在正式開始之前,通常需要參加項(xiàng)目啟動會議。由軟件開發(fā)公司的項(xiàng)目經(jīng)理召集和主持,由來自多個(gè)公司的項(xiàng)目組關(guān)鍵成員參加。
大型本地化項(xiàng)目的實(shí)施過程可能跨度較長,通常需要進(jìn)行幾個(gè)周期的更新過程。按照項(xiàng)目計(jì)劃的里程碑進(jìn)行進(jìn)度和質(zhì)量跟蹤,本地化服務(wù)公司的項(xiàng)目經(jīng)理與開發(fā)商的本地化項(xiàng)目經(jīng)理保持有效交流,有助于保證本地化項(xiàng)目的順利實(shí)施。