互聯(lián)網(wǎng)信息化咨詢/技術(shù)開發(fā)/整合營(yíng)銷
請(qǐng)通過以下方式免費(fèi)咨詢
提交
在軟件開發(fā)中,企業(yè)通常會(huì)同時(shí)進(jìn)行基線和定制兩種開發(fā)方式。為了制造高質(zhì)量的產(chǎn)品,需要遵循一套成熟的產(chǎn)品研發(fā)過程體系。如果出現(xiàn)多個(gè)項(xiàng)目的情況,需要合理安排基線和定制之前的里程碑,讓基線產(chǎn)品能夠盡可能收集用戶的通用型需求,為定制項(xiàng)目提供技術(shù)支持,減少重復(fù)工作和成本,提高產(chǎn)品的質(zhì)量和效益。產(chǎn)品研發(fā)過程體系還需要根據(jù)業(yè)務(wù)實(shí)際時(shí)間要求變化,不必拘泥于一定要按照瀑布方式或敏捷方式進(jìn)行管理。
本文以基線產(chǎn)品開發(fā)過程為例,介紹該過程的階段和注意事項(xiàng),在項(xiàng)目執(zhí)行前要明確各個(gè)階段的目標(biāo)、指定計(jì)劃、及時(shí)溝通,并確保各個(gè)時(shí)期所有成員對(duì)項(xiàng)目理解一致。
項(xiàng)目啟動(dòng)會(huì)是一個(gè)重要的會(huì)議,旨在明確產(chǎn)品開發(fā)項(xiàng)目的目標(biāo)和計(jì)劃。目標(biāo)和計(jì)劃是相輔相成的,目標(biāo)指導(dǎo)計(jì)劃,計(jì)劃的有效性影響著目標(biāo)的達(dá)成。因此,在執(zhí)行目標(biāo)時(shí),需要考慮清楚自己的行動(dòng)計(jì)劃,以更有效地完成目標(biāo)。否則,目標(biāo)越是不清晰或過高,都會(huì)影響項(xiàng)目的實(shí)際結(jié)果。
在項(xiàng)目啟動(dòng)會(huì)上,可以討論以下內(nèi)容:
1.目標(biāo)明確:明確項(xiàng)目的目標(biāo)和期望結(jié)果,以便確定項(xiàng)目的方向和重點(diǎn)。
2.項(xiàng)目范圍:確定項(xiàng)目的范圍和邊界,包括所需資源、時(shí)間和預(yù)算等。
3.項(xiàng)目計(jì)劃:根據(jù)目標(biāo)和范圍制定項(xiàng)目計(jì)劃和時(shí)間表,分配任務(wù)和責(zé)任。
4.團(tuán)隊(duì)溝通:建立團(tuán)隊(duì)溝通機(jī)制和流程,并確保團(tuán)隊(duì)成員之間的溝通暢通。
5.風(fēng)險(xiǎn)管理:識(shí)別潛在的風(fēng)險(xiǎn)和障礙,并制定預(yù)防和應(yīng)對(duì)策略。
6.項(xiàng)目評(píng)估:建立項(xiàng)目評(píng)估機(jī)制,定期審查項(xiàng)目進(jìn)展和成果,以及提出改進(jìn)建議。
在項(xiàng)目啟動(dòng)會(huì)后,每個(gè)人都需要考慮自己的行動(dòng)計(jì)劃,以確保目標(biāo)的有效實(shí)現(xiàn)。此外,在計(jì)劃執(zhí)行過程中,需要不斷監(jiān)測(cè)項(xiàng)目進(jìn)展和成果,并調(diào)整計(jì)劃以適應(yīng)變化。
用戶需求是指用戶對(duì)產(chǎn)品或服務(wù)的需求和期望。這些需求可以是明確的或隱含的,可以是功能性的或非功能性的,可以是必需的或可選的。用戶需求對(duì)于產(chǎn)品或服務(wù)的設(shè)計(jì)、開發(fā)和改進(jìn)都非常重要,因?yàn)樗鼈冎苯佑绊懏a(chǎn)品或服務(wù)的質(zhì)量和用戶體驗(yàn)。
用戶需求可以通過多種方式獲得,包括:
1.用戶調(diào)研:通過問卷、訪談、焦點(diǎn)小組等方式,收集用戶對(duì)產(chǎn)品或服務(wù)的需求和期望。
2.市場(chǎng)分析:通過市場(chǎng)調(diào)查、競(jìng)爭(zhēng)分析等方式,了解用戶對(duì)產(chǎn)品或服務(wù)的需求和市場(chǎng)趨勢(shì)。
3.數(shù)據(jù)分析:通過分析用戶行為和反饋數(shù)據(jù),了解用戶對(duì)產(chǎn)品或服務(wù)的使用情況和需求。
4.原型測(cè)試:通過原型測(cè)試,收集用戶對(duì)產(chǎn)品或服務(wù)的反饋和建議,以改進(jìn)產(chǎn)品或服務(wù)的設(shè)計(jì)和功能。
用戶需求對(duì)于產(chǎn)品或服務(wù)的設(shè)計(jì)和開發(fā)非常重要,因?yàn)樗鼈儧Q定了產(chǎn)品或服務(wù)是否能夠滿足用戶的需求和期望。如果產(chǎn)品或服務(wù)不能滿足用戶的需求,用戶可能會(huì)選擇其他產(chǎn)品或服務(wù),從而影響產(chǎn)品或服務(wù)的市場(chǎng)競(jìng)爭(zhēng)力和盈利能力。因此,了解用戶需求并將其融入產(chǎn)品或服務(wù)的設(shè)計(jì)和開發(fā)過程中是非常重要的。
產(chǎn)品需求是指對(duì)于某個(gè)產(chǎn)品的功能、性能、設(shè)計(jì)、用戶體驗(yàn)等方面的需求和期望。產(chǎn)品需求是產(chǎn)品設(shè)計(jì)和開發(fā)的基礎(chǔ),也是產(chǎn)品與用戶之間的橋梁。通過產(chǎn)品需求的明確定義和管理,可以確保產(chǎn)品能夠滿足用戶需求,同時(shí)也可以確保產(chǎn)品的質(zhì)量和用戶體驗(yàn)。。
產(chǎn)品需求規(guī)格說明書和產(chǎn)品需求矩陣是產(chǎn)品需求管理的兩個(gè)主要工具。產(chǎn)品需求規(guī)格說明書是一份詳細(xì)的文檔,描述了產(chǎn)品的功能、性能、設(shè)計(jì)、用戶體驗(yàn)等方面的需求和期望。產(chǎn)品需求矩陣則是一種結(jié)構(gòu)化的表格,按照子系統(tǒng)、功能集、執(zhí)行單元的結(jié)構(gòu)列出所有的功能需求,每列則對(duì)應(yīng)每項(xiàng)功能的工作步驟以及每個(gè)步驟的工作量。產(chǎn)品需求矩陣通常包括以下幾個(gè)方面:
功能需求:產(chǎn)品需要具備的功能和特性,包括產(chǎn)品的主要功能和次要功能、交互設(shè)計(jì)和用戶界面等。
性能需求:產(chǎn)品的性能指標(biāo)和要求,包括產(chǎn)品的速度、響應(yīng)時(shí)間、穩(wěn)定性、可擴(kuò)展性等。
設(shè)計(jì)需求:產(chǎn)品的外觀和設(shè)計(jì)要求,包括產(chǎn)品的顏色、形狀、材料、圖標(biāo)等。
用戶體驗(yàn)需求:產(chǎn)品的用戶體驗(yàn)要求,包括產(chǎn)品的易用性、可訪問性、可用性、可靠性等。
安全需求:產(chǎn)品的安全要求,包括數(shù)據(jù)安全、用戶隱私、網(wǎng)絡(luò)安全等。
產(chǎn)品需求矩陣對(duì)于產(chǎn)品設(shè)計(jì)和開發(fā)非常重要,它可以幫助團(tuán)隊(duì)了解產(chǎn)品的需求和期望,并將其轉(zhuǎn)化為具體的開發(fā)任務(wù)和工作量。通過產(chǎn)品需求矩陣,團(tuán)隊(duì)可以更好地進(jìn)行工作計(jì)劃和任務(wù)分配,同時(shí)也可以更好地進(jìn)行進(jìn)度跟蹤和優(yōu)先級(jí)調(diào)整。
需求評(píng)審后,開發(fā)和測(cè)試負(fù)責(zé)人,分別編寫技術(shù)方案和測(cè)試用例。
技術(shù)方案評(píng)審,開發(fā)負(fù)責(zé)人拉上涉及到其他系統(tǒng)的負(fù)責(zé)人一起討論,技術(shù)方案中必須要有業(yè)務(wù)流程圖和時(shí)序圖,業(yè)務(wù)流程圖是為了梳理開發(fā)對(duì)業(yè)務(wù)的理解,是否和需求一致。時(shí)序圖是了梳理本次需求涉及的系統(tǒng)交互。技術(shù)方案評(píng)審?fù)ㄟ^后,確認(rèn)工作量和交付時(shí)間,反饋給產(chǎn)品。
設(shè)計(jì)階段的目標(biāo)主要是對(duì)待開發(fā)系統(tǒng)的構(gòu)架進(jìn)行分析和設(shè)計(jì),并建立系統(tǒng)構(gòu)架的基線,以便為之后的實(shí)施工作提供一個(gè)穩(wěn)定的基礎(chǔ)。
設(shè)計(jì)階段包括了系統(tǒng)架構(gòu)的輸出,一個(gè)好的系統(tǒng)架構(gòu)設(shè)計(jì)可以幫助人類梳理業(yè)務(wù)邏輯且抓住核心需求,設(shè)計(jì)穩(wěn)定可擴(kuò)展的業(yè)務(wù)系統(tǒng),評(píng)估業(yè)務(wù)開發(fā)周期和開發(fā)成本,有效的規(guī)避風(fēng)險(xiǎn)。例如蓋房子的時(shí)候得有建筑圖紙,有了圖紙,才能核算施工周期。
總體設(shè)計(jì)是整個(gè)系統(tǒng)的框架型設(shè)計(jì),意義及其重大,一般情況下不能省略(只有維護(hù)項(xiàng)目可以省略總體設(shè)計(jì),因?yàn)榛鶞?zhǔn)項(xiàng)目已經(jīng)設(shè)計(jì)完畢),所有的產(chǎn)品開發(fā)項(xiàng)目均需要首先進(jìn)行總體設(shè)計(jì),它是設(shè)計(jì)首要步驟,決不允許本末倒置,不能出現(xiàn)先編碼后設(shè)計(jì)的情況,這是軟件開發(fā)的第二大痛點(diǎn)(第一大是需求不明確、任意變更需求!)。
總體設(shè)計(jì)分為三個(gè)階段:
第一階段:初始設(shè)計(jì)。在對(duì)給定的數(shù)據(jù)流圖進(jìn)行復(fù)審和精化的基礎(chǔ)上,將其轉(zhuǎn)化為初始的模塊結(jié)構(gòu)圖。
第二階段:精化設(shè)計(jì)。依據(jù)模塊“高內(nèi)聚低耦合”的原則,精化初始的模塊結(jié)構(gòu)圖,并設(shè)計(jì)其中的全局?jǐn)?shù)據(jù)結(jié)構(gòu)和每一模塊的接口。
第三階段:設(shè)計(jì)復(fù)審階段,對(duì)前兩個(gè)階段得到的高層軟件結(jié)構(gòu)進(jìn)行復(fù)審,必要時(shí)還可能需要對(duì)軟件結(jié)構(gòu)做一些精化工作。
概要設(shè)計(jì)是軟件開發(fā)過程中的一個(gè)關(guān)鍵階段,其主要目的是描述系統(tǒng)的每個(gè)模塊的內(nèi)部設(shè)計(jì),同時(shí)承上啟下,對(duì)總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)進(jìn)行銜接。
概要設(shè)計(jì)按照結(jié)構(gòu)化設(shè)計(jì)方法進(jìn)行設(shè)計(jì)。其基本思路是將軟件系統(tǒng)逐級(jí)細(xì)化,分解為不必再分解的模塊,每個(gè)模塊完成一定的功能,為一個(gè)或多個(gè)父模塊服務(wù),同時(shí)也接受一個(gè)或多個(gè)子模塊的服務(wù)。模塊的概念與編程語言中的子程序或函數(shù)是對(duì)應(yīng)的。
包括系統(tǒng)分解、模塊任務(wù)分配、模塊間調(diào)用關(guān)系和接口的確定,以及性能和可靠性的考慮。這些任務(wù)的完成有助于團(tuán)隊(duì)更好地理解系統(tǒng)的功能和結(jié)構(gòu),為后續(xù)的詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)工作提供指導(dǎo)方向。
在概要設(shè)計(jì)階段,設(shè)計(jì)者需要考慮并照顧模塊的內(nèi)部實(shí)現(xiàn),但不過多糾纏于此,主要集中于劃分模塊、分配任務(wù)、定義調(diào)用關(guān)系。同時(shí),設(shè)計(jì)者需要制定十分細(xì)致明確的模塊間接口和傳參規(guī)范,編寫嚴(yán)謹(jǐn)?shù)臄?shù)據(jù)字典,避免后續(xù)設(shè)計(jì)產(chǎn)生不解或誤解。
此外,概要設(shè)計(jì)一般不是一次就能做到位,而是需要反復(fù)進(jìn)行結(jié)構(gòu)調(diào)整。典型的調(diào)整包括合并功能重復(fù)的模塊,或者進(jìn)一步分解出可以復(fù)用的模塊。在概要設(shè)計(jì)階段,設(shè)計(jì)者應(yīng)盡可能地提取可以重用的模塊,建立合理的結(jié)構(gòu)體系,以節(jié)省后續(xù)環(huán)節(jié)的工作量。
概要設(shè)計(jì)文檔是軟件開發(fā)過程中重要的一個(gè)文檔,主要內(nèi)容包括分層數(shù)據(jù)流圖、結(jié)構(gòu)圖、數(shù)據(jù)字典以及相應(yīng)的文字說明等。這些內(nèi)容有助于團(tuán)隊(duì)更好地理解系統(tǒng)的整體結(jié)構(gòu)和模塊之間的關(guān)系,為后續(xù)的詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)工作提供指導(dǎo)方向。根據(jù)概要設(shè)計(jì)文檔,各個(gè)模塊的詳細(xì)設(shè)計(jì)就可以并行展開了。
詳細(xì)設(shè)計(jì)階段依據(jù)概要設(shè)計(jì)階段的分解,主要任務(wù)包括確定模塊的輸入輸出,設(shè)計(jì)模塊內(nèi)的算法和流程,描述模塊的功能,考慮性能和可靠性等。要把功能描述轉(zhuǎn)變?yōu)榫_的、結(jié)構(gòu)化的過程描述這些任務(wù)的完成,有助于團(tuán)隊(duì)更好地理解每個(gè)模塊的功能和任務(wù),為后續(xù)的實(shí)現(xiàn)工作提供指導(dǎo)方向。
在詳細(xì)設(shè)計(jì)階段,可以將各個(gè)模塊分配給不同人員并行設(shè)計(jì),每個(gè)設(shè)計(jì)者的工作對(duì)象是一個(gè)模塊。設(shè)計(jì)者需要依據(jù)概要設(shè)計(jì)的要求,設(shè)計(jì)并表達(dá)出模塊的算法、流程、狀態(tài)轉(zhuǎn)換等內(nèi)容。需要注意的是,如果需要進(jìn)行結(jié)構(gòu)調(diào)整,必須回到概要設(shè)計(jì)階段反應(yīng)調(diào)整,而不是就地解決。詳細(xì)設(shè)計(jì)文檔對(duì)于團(tuán)隊(duì)的開發(fā)非常重要,其中最重要的是模塊的流程圖、狀態(tài)圖、局部變量及文字說明等內(nèi)容。每個(gè)模塊都應(yīng)該對(duì)應(yīng)一篇詳細(xì)設(shè)計(jì)文檔。
在軟件開發(fā)中,概要設(shè)計(jì)階段通常會(huì)產(chǎn)生軟件結(jié)構(gòu)圖,而詳細(xì)設(shè)計(jì)階段則常用流程圖、N-S圖、PAD圖、偽代碼等方式描述具體模塊的處理流程、開發(fā)方法和編碼技巧。通常,詳細(xì)設(shè)計(jì)包括項(xiàng)目簡(jiǎn)介、模塊說明、接口設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、特殊處理等幾個(gè)部分。其中,模塊說明會(huì)具體說明每個(gè)模塊的流程、功能、邏輯、消耗以及未解決的問題;接口設(shè)計(jì)則包括內(nèi)部接口和外部接口;數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)則包括物理結(jié)構(gòu)和邏輯結(jié)構(gòu)。通過詳細(xì)設(shè)計(jì),軟件系統(tǒng)的各個(gè)部分的具體設(shè)計(jì)方法、邏輯和功能得以采用文字方式表述。在實(shí)現(xiàn)的過程中,編碼人員應(yīng)該嚴(yán)格按照詳細(xì)設(shè)計(jì)進(jìn)行代碼實(shí)現(xiàn)。
編寫代碼可以遵循以下幾點(diǎn)原則:
先做核心模塊的壓測(cè):在開發(fā)過程中,對(duì)于核心模塊的設(shè)計(jì)和實(shí)現(xiàn),就要考慮到系統(tǒng)面臨的業(yè)務(wù)壓力和請(qǐng)求重心,這樣才能準(zhǔn)確地模擬出實(shí)際的運(yùn)行情況,從而測(cè)試系統(tǒng)的性能和穩(wěn)定性,并發(fā)現(xiàn)和解決可能存在的問題。這樣做可以及早發(fā)現(xiàn)潛在的性能問題,避免在上線之后出現(xiàn)嚴(yán)重的性能問題,從而降低了系統(tǒng)運(yùn)行過程中的風(fēng)險(xiǎn)。
確保過程可控:代碼執(zhí)行過程中保持中間的輸出是一個(gè)很好的習(xí)慣。這樣可以在代碼運(yùn)行的過程中隨時(shí)了解程序的運(yùn)行狀態(tài),比如處理了多少數(shù)據(jù),執(zhí)行了多長(zhǎng)時(shí)間,是否有錯(cuò)誤等等。這些信息可以幫助開發(fā)人員更好地了解代碼的執(zhí)行情況,及時(shí)發(fā)現(xiàn)問題并進(jìn)行調(diào)試和優(yōu)化。同時(shí),對(duì)于較大的數(shù)據(jù)處理任務(wù),及時(shí)輸出處理狀態(tài)信息也可以讓用戶了解任務(wù)的進(jìn)度和狀態(tài),提高用戶體驗(yàn)。
多打日志:多打日志是一個(gè)很好的習(xí)慣,可以幫助開發(fā)人員在代碼執(zhí)行過程中了解程序的運(yùn)行狀態(tài),以及發(fā)現(xiàn)和解決問題。同時(shí),留下注釋也是一個(gè)很好的習(xí)慣,可以幫助開發(fā)人員更好地理解代碼的設(shè)計(jì)和實(shí)現(xiàn),以及理解開發(fā)人員的思路和想法。在實(shí)際編寫代碼時(shí),可以在關(guān)鍵的代碼段或處理邏輯處增加日志輸出,以便在代碼出現(xiàn)問題時(shí)可以更好地進(jìn)行定位和排查。同時(shí),留下注釋也可以幫助其他開發(fā)人員更好地理解代碼的實(shí)現(xiàn)和設(shè)計(jì)思路,以便在需要修改或擴(kuò)展代碼時(shí)更加容易進(jìn)行。
簡(jiǎn)單易懂的邏輯:代碼的邏輯應(yīng)該盡量簡(jiǎn)單明了,易于理解和維護(hù)。如果代碼的邏輯過于復(fù)雜,就會(huì)給其他開發(fā)人員帶來困難和不便,使得代碼難以維護(hù)和修改
不要沉迷于框架:框架是為了提高開發(fā)效率和代碼復(fù)用性而設(shè)計(jì)的,但是過度依賴框架可能會(huì)導(dǎo)致代碼的復(fù)雜性和難以維護(hù)性增加,從而影響代碼的質(zhì)量和性能。
使用熟悉、成熟的技術(shù):新技術(shù)雖然可能具有一定的優(yōu)勢(shì)和特點(diǎn),但是也可能存在一些未知的問題和風(fēng)險(xiǎn),如果不了解其優(yōu)劣勢(shì)和適用范圍,就可能會(huì)導(dǎo)致代碼質(zhì)量和性能的下降。同時(shí),還需要考慮團(tuán)隊(duì)的技術(shù)水平和經(jīng)驗(yàn),以便更好地掌握和應(yīng)用技術(shù)。在選擇新技術(shù)時(shí),需要盡量避免盲目跟風(fēng)和跟從市場(chǎng)熱點(diǎn),而是要根據(jù)實(shí)際需求和場(chǎng)景進(jìn)行選擇。
眾所周知,在團(tuán)隊(duì)中進(jìn)行代碼審查(Code Review)可以提升代碼質(zhì)量,分享項(xiàng)目知識(shí)、明確責(zé)任,最終達(dá)到構(gòu)建更好的軟件、更好的團(tuán)隊(duì)。
通過代碼審查,可以及時(shí)發(fā)現(xiàn)和糾正代碼中存在的問題,提高代碼的可讀性、可維護(hù)性、可擴(kuò)展性和安全性,同時(shí)也可以促進(jìn)團(tuán)隊(duì)成員之間的交流和合作,提高團(tuán)隊(duì)的協(xié)作效率和項(xiàng)目的質(zhì)量。
在進(jìn)行代碼審查時(shí),需要遵循一定的規(guī)范和流程,例如選擇合適的審查工具和方式、明確審查的目的和標(biāo)準(zhǔn)、制定審查計(jì)劃和時(shí)間表、分配審查任務(wù)和責(zé)任、記錄審查過程和結(jié)果等等。同時(shí),需要注意審查的方式和態(tài)度,避免過于苛刻或過于寬容,以及避免過度批評(píng)、指責(zé)或攻擊團(tuán)隊(duì)成員。
要認(rèn)識(shí)單元測(cè)試,首先要明白什么是“單元(Unit)”。所謂“單元”指的是代碼調(diào)用的最小單位,實(shí)際上指的是一個(gè)功能塊(Function)或者方法(Method)。所以單元測(cè)試指的就是對(duì)這些代碼調(diào)用單元的測(cè)試。
單元測(cè)試是一種白盒測(cè)試,就是必須要對(duì)單元的代碼細(xì)節(jié)很清楚才能做的測(cè)試。所以,單元測(cè)試的編寫和執(zhí)行都是由軟件工程師來做的。相對(duì)于單元測(cè)試,還有集成測(cè)試。集成測(cè)試基本都是黑盒測(cè)試,主要是由測(cè)試人員根據(jù)軟件的功能手冊(cè)來進(jìn)行測(cè)試,需要有專門的測(cè)試環(huán)境配合。集成測(cè)試又分功能測(cè)試、回歸測(cè)試等。
需要單元測(cè)試的代碼實(shí)際上是開發(fā)人員自己寫的邏輯,測(cè)試邏輯所依賴的環(huán)境是否正常不是單元測(cè)試的目的。在環(huán)境訪問代碼中引入邏輯,只會(huì)讓邏輯更難測(cè)試,導(dǎo)致邏輯代碼無法進(jìn)行單元測(cè)試。因此,可單元測(cè)試的代碼,才能夠采用單元測(cè)試。判斷可測(cè)試的代碼還有一個(gè)方法,就是看這個(gè)方法能否用一個(gè) main 函數(shù)直接運(yùn)行,如果可以的話就是可單元測(cè)試的代碼。可測(cè)試的代碼還有另一個(gè)特征,就是該方法單元的參數(shù),開發(fā)人員可以自由模擬,不需要依賴外部環(huán)境。
集成測(cè)試,也叫組裝測(cè)試或聯(lián)合測(cè)試。在單元測(cè)試的基礎(chǔ)上,將所有模塊按照設(shè)計(jì)要求組裝成為子系統(tǒng)或系統(tǒng),進(jìn)行集成測(cè)試。實(shí)踐表明,一些模塊雖然能夠單獨(dú)地工作,但并不能保證連接起來也能正常的工作。一些局部反映不出來的問題,在全局上很可能暴露出來。
集成測(cè)試是在軟件系統(tǒng)集成過程中所進(jìn)行的測(cè)試,其主要目的是檢查軟件單位之間的借口是否正確。它根據(jù)集成測(cè)試計(jì)劃 ,一邊將模塊或其他模塊組合成越來越大的系統(tǒng),一邊運(yùn)行該系統(tǒng),以分析所組成的系統(tǒng)是否正確,各個(gè)組成部分是否合拍。集成測(cè)試的策略主要有自頂向下和自底向上兩種。也可以理解為在軟件設(shè)計(jì)單元、功能模塊組裝、集成為系統(tǒng)時(shí),對(duì)應(yīng)用系統(tǒng)的各個(gè)部件(軟件單元、功能模塊接口、鏈接等)進(jìn)行的聯(lián)合測(cè)試,以決定他們能否在一起共同工作,部件可以是代碼塊、獨(dú)立的應(yīng)用、網(wǎng)絡(luò)上的客戶端或服務(wù)器端程序。
系統(tǒng)測(cè)試階段包括系統(tǒng)測(cè)試方案及用例編寫、功能性測(cè)試、性能測(cè)試、穩(wěn)定性測(cè)試。
為了驗(yàn)證需求分析確定的功能是否齊全并被正確實(shí)現(xiàn),同時(shí)還要對(duì)安裝、部署、適應(yīng)性、安全性、界面等非功能性需求進(jìn)行測(cè)試。系統(tǒng)測(cè)試也有測(cè)試人員負(fù)責(zé),應(yīng)該在需求分析完成后進(jìn)行設(shè)計(jì),在集成測(cè)試完成后進(jìn)行實(shí)施。
功能性測(cè)試
一般由獨(dú)立測(cè)試小組采用黑盒方式來測(cè)試,主要測(cè)試系統(tǒng)是否符合“需求規(guī)格說明書”。在經(jīng)過以上各階段測(cè)試確認(rèn)之后,把系統(tǒng)完整地模擬客戶環(huán)境來進(jìn)行的測(cè)試。系統(tǒng)測(cè)試是將已經(jīng)確認(rèn)的軟件、計(jì)算機(jī)硬件、外設(shè)、網(wǎng)絡(luò)等其他元素結(jié)合在一起,進(jìn)行信息系統(tǒng)的各種組裝測(cè)試和確認(rèn)測(cè)試,其目的是通過與系統(tǒng)的需求相比較,發(fā)現(xiàn)所開發(fā)的系統(tǒng)與用戶需求不符或矛盾的地方,從而提出更加完善的方案。
性能測(cè)試
驗(yàn)證系統(tǒng)的穩(wěn)定性和效率,檢查系統(tǒng)是否滿足規(guī)定的性能要求。性能測(cè)試通常選擇一些典型的功能,檢驗(yàn)這些功能在大量用戶同時(shí)使用系統(tǒng)時(shí)系統(tǒng)是否穩(wěn)定。性能測(cè)試由測(cè)試人員負(fù)責(zé),可以在系統(tǒng)測(cè)試完成后進(jìn)行,也可以對(duì)重要模塊先進(jìn)行性能測(cè)試,可以貫穿整個(gè)測(cè)試周期,目的是盡早發(fā)現(xiàn)系統(tǒng)的性能瓶頸并提早解決。
穩(wěn)定性測(cè)試和性能測(cè)試都必須等到系統(tǒng)基本沒問題、趨于穩(wěn)定時(shí)再進(jìn)行才有效果,否則很難順利測(cè)下去,出現(xiàn)異常也不能定位究竟是系統(tǒng)架構(gòu)的問題,還是功能上的缺陷。
穩(wěn)定性測(cè)試(亦可稱可靠性測(cè)試)
通過給系統(tǒng)加載一定的業(yè)務(wù)壓力,讓系統(tǒng)持續(xù)運(yùn)行一段時(shí)間(一般為 7x24 小時(shí)),檢測(cè)系統(tǒng)是否能夠穩(wěn)定運(yùn)行。
產(chǎn)品發(fā)布是系統(tǒng)測(cè)試結(jié)束后的最后一步,通常在軟件產(chǎn)品開發(fā)過程中不需要產(chǎn)品試制環(huán)節(jié),可以直接上線,只需要系統(tǒng)測(cè)試員輸出系統(tǒng)測(cè)試報(bào)告并批準(zhǔn)產(chǎn)品發(fā)布(上線)就可以了。
產(chǎn)品發(fā)布前需要通過產(chǎn)品發(fā)布說明會(huì)形式,對(duì)整個(gè)產(chǎn)品開發(fā)過程從立項(xiàng)開始回溯過程,指出整個(gè)過程中的不足點(diǎn),總結(jié)經(jīng)驗(yàn),為下一個(gè)項(xiàng)目提供經(jīng)驗(yàn)案例。這一會(huì)議可以通過正式會(huì)議形式召開,需要召集產(chǎn)品經(jīng)理、主要開發(fā)人員、測(cè)試人員、上級(jí)領(lǐng)導(dǎo)等參與,準(zhǔn)備充分,盡最大可能說清楚這個(gè)產(chǎn)品發(fā)布之后的效果、效益,為上線后的價(jià)值評(píng)估做準(zhǔn)備。這一環(huán)節(jié)不可缺少,即便在互聯(lián)網(wǎng)公司,迭代速度很快的情況下,這一環(huán)節(jié)也需要滿足。
其實(shí)開發(fā)過程體系里并沒有這一過程,但是我個(gè)人認(rèn)為它非常重要。
所有的總結(jié),只有帶著問題去思考才會(huì)有收獲,這就是復(fù)盤。不論我說多少,如果沒有過類似的經(jīng)驗(yàn),就很難有很強(qiáng)的共鳴。我覺得看清一個(gè)問題最好的方式,就是你曾經(jīng)處在一個(gè)問題的兩個(gè)不同的角色中。
總結(jié)項(xiàng)目經(jīng)驗(yàn)教訓(xùn)的目的,在于總結(jié)問題、分析原因,避免以后犯同樣的錯(cuò)誤,而不是追究誰的責(zé)任。
假設(shè)一個(gè)需求理解的缺陷,如果在需求階段發(fā)現(xiàn),修改一下可能只要一個(gè)小時(shí),但是如果到了設(shè)計(jì)完成時(shí)發(fā)現(xiàn)這個(gè)缺陷,因?yàn)樯婕暗娜藛T、文檔增多,估計(jì)要一天時(shí)間,而如果等到代碼都編寫完成時(shí)才發(fā)現(xiàn)這個(gè)缺陷,可能需要十天八天了。如果缺陷沒被發(fā)現(xiàn),而是直接到了生產(chǎn)系統(tǒng)中呢?這就不是工作量的問題了,估計(jì)損失就難以估計(jì)了。在質(zhì)量管理的理論中,缺陷每延遲一個(gè)階段被發(fā)現(xiàn),修復(fù)的代價(jià)就要乘上十倍。
敏捷開發(fā)、極限開發(fā)等等模型是為了解決需求不明確、時(shí)間緊迫情況下的快速迭代,而不是為了從根本上否定研發(fā)流程,該設(shè)計(jì)還是要設(shè)計(jì),只是將生命周期進(jìn)行切分,將過程橫向切分為若干個(gè)周期。軟件開發(fā)是一門工程性要求很嚴(yán)謹(jǐn)?shù)膶W(xué)科,讓我們堅(jiān)持嚴(yán)謹(jǐn)?shù)膽B(tài)度、高效的工作方式,打造高可用、高質(zhì)量的軟件產(chǎn)品。