需求、需求工程与需求工程师 — 6. 设计能力的要求
在軟件行業(yè)中,“設(shè)計(jì)”一詞既熟悉又陌生,理論上大家都知道軟件開發(fā)前需要做設(shè)計(jì),但是具體要說明什么是設(shè)計(jì)、設(shè)計(jì)包括的內(nèi)容、方法、交付物、標(biāo)準(zhǔn)以及由誰來設(shè)計(jì)時(shí),卻又說不太清楚(除去一些大型軟件企業(yè)外)。多數(shù)的軟件公司沒有“設(shè)計(jì)師”的崗位,甚至都沒有設(shè)置設(shè)計(jì)環(huán)節(jié),特別是在中小型的軟件公司,需求調(diào)研完成直接交給程序員是普遍現(xiàn)象。一般來說這樣的軟件公司的業(yè)務(wù)架構(gòu)圖、界面原型設(shè)計(jì)等工作都是由需求工程師來完成的。有鑒于此,這里簡(jiǎn)單地介紹一下需求工程師在從事“設(shè)計(jì)角色”時(shí)需要的能力。
圖1 設(shè)計(jì)工作的位置
設(shè)計(jì)工作的內(nèi)容可以分為二大部分
□非技術(shù)部分:包括了業(yè)務(wù)設(shè)計(jì)、應(yīng)用設(shè)計(jì)兩個(gè)部分(需求工程師要掌握,本文重點(diǎn))
□技術(shù)部分:技術(shù)設(shè)計(jì)(開發(fā)工程師要掌握,本文不涉及)
第三篇介紹對(duì)需求工程師設(shè)計(jì)能力的要求
怎么判斷需求工程師是否做了“設(shè)計(jì)崗位”的工作呢?嚴(yán)格的說開發(fā)工程師(程序員)應(yīng)該是按照設(shè)計(jì)規(guī)格書進(jìn)行編碼開發(fā)的。如果你所在的軟件公司在需求工程師和開發(fā)工程師之間沒有“設(shè)計(jì)師崗位”,那么開發(fā)工程師就一定是依據(jù)需求工程師編制的【需求規(guī)格說明書】進(jìn)行編碼開發(fā)的,此時(shí)就可以判斷:需求工程師在調(diào)研分析需求的同時(shí),也做了包括業(yè)務(wù)設(shè)計(jì)、應(yīng)用設(shè)計(jì)等在內(nèi)的設(shè)計(jì)工作(技術(shù)設(shè)計(jì)是由懂得技術(shù)的開發(fā)工程師完成的)。
1. 設(shè)計(jì)目的
設(shè)計(jì)工作的目的是將前面需求分析的結(jié)果,按照軟件實(shí)現(xiàn)的要求細(xì)化為具體的架構(gòu)圖形、功能界面原型、數(shù)據(jù)關(guān)系圖以及支持開發(fā)的說明文字等資料。
所有的系統(tǒng)相關(guān)人(客戶、咨詢/需求、程序員、測(cè)試、實(shí)施等)通過這個(gè)設(shè)計(jì)資料,在軟件開發(fā)完成前就可以準(zhǔn)確地了解未來的系統(tǒng),如根據(jù)這個(gè)設(shè)計(jì)資料可以知道:
□系統(tǒng)具有什么功能、運(yùn)行方式、給客戶工作帶來的變化效果等。
□系統(tǒng)實(shí)現(xiàn)的技術(shù)路線、實(shí)現(xiàn)方案、測(cè)試用例等
□所需編碼資源、進(jìn)度計(jì)劃、交付內(nèi)容等。
設(shè)計(jì)工作是搞清楚怎么做什么系統(tǒng)的過程。
2. 設(shè)計(jì)作用
1) 設(shè)計(jì)工作的作用
設(shè)計(jì)工作的作用可以分為幾個(gè)方面來來理解。
(1)業(yè)務(wù)設(shè)計(jì)
決定了產(chǎn)品的“可用性”,業(yè)務(wù)設(shè)計(jì)正確說明系統(tǒng)可用。業(yè)務(wù)設(shè)計(jì)是參照客戶的實(shí)際工作,確定具體的業(yè)務(wù)邏輯、數(shù)據(jù)邏輯、業(yè)務(wù)功能等,比如報(bào)銷模塊的設(shè)計(jì)內(nèi)容:報(bào)銷流程(業(yè)務(wù)邏輯)、報(bào)銷數(shù)據(jù)來源(數(shù)據(jù)邏輯)、報(bào)銷操作界面(業(yè)務(wù)功能)。設(shè)計(jì)結(jié)果的正確與否直接關(guān)系到這個(gè)系統(tǒng)是否可用,因此業(yè)務(wù)設(shè)計(jì)正確是系統(tǒng)建設(shè)的基礎(chǔ)。
(2)應(yīng)用設(shè)計(jì)
決定了產(chǎn)品的“易用性”,應(yīng)用設(shè)計(jì)正確說明系統(tǒng)好用。應(yīng)用設(shè)計(jì)重點(diǎn)關(guān)注的是系統(tǒng)設(shè)計(jì)是否人性化、是否給客戶帶來工作效率的提升,比如:將系統(tǒng)從“人找事”設(shè)計(jì)成為“事找人”,這樣的設(shè)計(jì)為客戶帶來工作環(huán)境的優(yōu)化,大幅度提升工作效率,減少人為的工作失誤,讓系統(tǒng)自動(dòng)地為用戶提供服務(wù)。
(3)客戶價(jià)值
軟件的客戶價(jià)值主要來源于業(yè)務(wù)設(shè)計(jì)和應(yīng)用設(shè)計(jì)的成果,前者決定了業(yè)務(wù)價(jià)值的高低(系統(tǒng)帶來的業(yè)務(wù)優(yōu)化、改善、效益的提升)、后者決定了應(yīng)用價(jià)值(系統(tǒng)帶來的工作方式變化、工作效率的提升),特別是應(yīng)用設(shè)計(jì)的結(jié)果極大地影響客戶對(duì)系統(tǒng)的滿意度。
(4)降低風(fēng)險(xiǎn)
設(shè)計(jì)工作做得越細(xì)致、具體,通過反復(fù)的“設(shè)計(jì)推演”,就可以避免開發(fā)完成后的返工,這是設(shè)計(jì)工作的一個(gè)非常重要的目的。
順便說一句,由于軟件行業(yè)普遍存在著對(duì)“設(shè)計(jì)工作”的重視不足,軟件完成后大量的、頻繁的返工是常見現(xiàn)象,其重要原因之一就是缺乏設(shè)計(jì)(或缺乏優(yōu)秀的設(shè)計(jì)),開發(fā)前誰都不知道完成后的系統(tǒng)是什么樣的(缺乏業(yè)務(wù)驗(yàn)證、應(yīng)用驗(yàn)證),完成后一試用客戶就會(huì)提出很多要修改的要求,系統(tǒng)不得不修改,甚至要推翻重來。
2) 需求工程師的作用
在沒有設(shè)計(jì)師崗位的軟件公司,需求工程師事實(shí)上是充當(dāng)了“設(shè)計(jì)師”的角色。不論在哪個(gè)行業(yè)、也不論制作什么產(chǎn)品,設(shè)計(jì)師都是產(chǎn)品成功與否的關(guān)鍵角色,設(shè)計(jì)師的水平直接關(guān)系到了產(chǎn)品的水平、最終決定了產(chǎn)品的價(jià)值。在設(shè)計(jì)方面需求工程師的作用歸納如下(不限于此):
□在前面咨詢和調(diào)研角色將需要的素材和要求全部收集并確認(rèn)完成,下面要由設(shè)計(jì)角色參照要求將需求素材與軟件技術(shù)要求相結(jié)合,給出未來系統(tǒng)的設(shè)計(jì)圖(設(shè)計(jì)資料)。
□設(shè)計(jì)工作是決定產(chǎn)品的關(guān)鍵,需求工程師要判斷設(shè)計(jì)的正確性、可行性、合理性等。
□設(shè)計(jì)角色在系統(tǒng)開發(fā)過程中具有決定權(quán),包括系統(tǒng)樣式、規(guī)格、標(biāo)準(zhǔn)(業(yè)務(wù)和應(yīng)用兩方面),技術(shù)設(shè)計(jì)師和程序員原則上是不可以在未經(jīng)許可的情況下改動(dòng)設(shè)計(jì)。
□嚴(yán)格地講,程序員不是按照需求,而是按照設(shè)計(jì)資料進(jìn)行編碼開發(fā)的;同理,測(cè)試工程師也是基于設(shè)計(jì)資料編寫用例和測(cè)試的。
□將客戶提出的需求,按照軟件的要求進(jìn)行,使得需求可以轉(zhuǎn)換為軟件系統(tǒng)的功能。
■可以說,需求工程師的工作成果是軟件開發(fā)內(nèi)容、客戶滿意度、軟件價(jià)值的關(guān)鍵。
注:關(guān)于設(shè)計(jì)與架構(gòu)的異同
“設(shè)計(jì)”是個(gè)大概念,設(shè)計(jì)包含了“架構(gòu)”,架構(gòu)工作屬于設(shè)計(jì)全過程中的初期階段,架構(gòu)的主要內(nèi)容是進(jìn)行“規(guī)劃、概要”等粗粒度的設(shè)計(jì),其重點(diǎn)在對(duì)系統(tǒng)進(jìn)行整體的規(guī)劃、制定系統(tǒng)的設(shè)計(jì)理念、框架、主線、原則、標(biāo)準(zhǔn)等。一般談到設(shè)計(jì)時(shí),不但包括系統(tǒng)的整體架構(gòu),也包括詳細(xì)設(shè)計(jì)(小到一個(gè)“字段”在界面上的擺放位置)。因此“設(shè)計(jì)師”的工作范圍更加寬泛,而“架構(gòu)師”的工作一般特指設(shè)計(jì)階段的前期工作。
3. 設(shè)計(jì)能力
搞清楚了設(shè)計(jì)的目的和作用后,下面就要談?wù)勗谶@個(gè)階段對(duì)需求工程師的能力要求。對(duì)需求工程師的設(shè)計(jì)能力要求與他和后面技術(shù)工程師之間的交付內(nèi)容相關(guān)。作為設(shè)計(jì)角色,需求工程師要能夠精準(zhǔn)地給出業(yè)務(wù)和應(yīng)用兩個(gè)方面對(duì)系統(tǒng)的功能要求、標(biāo)準(zhǔn)。下面主要從兩個(gè)方面談一下:必備能力、專業(yè)知識(shí)。
1)必備能力
針對(duì)“設(shè)計(jì)師”的崗位,對(duì)需求工程師能力要求相對(duì)較高,他要掌握的能力比較綜合,不是簡(jiǎn)單的看、聽、說的單一能力等,而是思維能力和動(dòng)手能力相結(jié)合的綜合能力,這里舉幾項(xiàng)做個(gè)參考(不限于此):
(1)規(guī)劃能力
具有站在客戶領(lǐng)導(dǎo)視角觀察和理解問題的能力,可以從整體上理解客戶需求(經(jīng)營(yíng)、管理和執(zhí)行三層提出的需求),要能夠同時(shí)考慮到:新系統(tǒng)與其它既有系統(tǒng)在空間上的關(guān)系、新系統(tǒng)今天的內(nèi)容與明天的擴(kuò)展在時(shí)間上的關(guān)系。
(2)建模能力
要能夠從系統(tǒng)的視角對(duì)需求進(jìn)行分析、抽提、找出規(guī)律,然后建立最簡(jiǎn)潔的業(yè)務(wù)處理模型。模型建立的好,則系統(tǒng)的架構(gòu)合理、復(fù)用性強(qiáng)、容易實(shí)現(xiàn)、且對(duì)需求的應(yīng)變能力也強(qiáng)。
(3)畫圖能力
毫無疑問,設(shè)計(jì)交付成果的重要形式就是圖形(業(yè)務(wù)架構(gòu)圖、數(shù)據(jù)關(guān)系圖、界面原型圖等),看一眼圖形基本上就可以判斷出來設(shè)計(jì)者的水平,所以對(duì)需求工程師來說:用圖形的方式能夠正確地表達(dá)多少設(shè)計(jì)成果是非常重要的能力判斷標(biāo)準(zhǔn)。
(4)邏輯能力
對(duì)于軟件工程一階段中的所有角色(咨詢、調(diào)研和設(shè)計(jì))來說,邏輯能力都是必不可少的,而且對(duì)于設(shè)計(jì)崗位的邏輯能力不但要體現(xiàn)在思維層面,更重要的是要將思維的結(jié)果用正確的圖形表達(dá)出來,圖形中的邏輯要清晰。
2)專業(yè)知識(shí)
需求工程師作為“設(shè)計(jì)師”的角色,在設(shè)計(jì)階段需要的專業(yè)知識(shí)主要是指軟件設(shè)計(jì)方面。包括:
(1)概要設(shè)計(jì)知識(shí):根據(jù)前期的【需求規(guī)格說明書】對(duì)系統(tǒng)進(jìn)行頂層設(shè)計(jì),包括整體規(guī)劃、設(shè)計(jì)理念、業(yè)務(wù)主線、技術(shù)路線、原則以及相應(yīng)的規(guī)則和標(biāo)準(zhǔn)等內(nèi)容。
(2)詳細(xì)設(shè)計(jì)知識(shí)(業(yè)務(wù)):根據(jù)【概要設(shè)計(jì)規(guī)格書】,對(duì)架構(gòu)層、功能層和數(shù)據(jù)層的內(nèi)容進(jìn)行業(yè)務(wù)方面的細(xì)節(jié)設(shè)計(jì),如業(yè)務(wù)建模、業(yè)務(wù)原型確定、字段定義、字典/看板/表單等的設(shè)計(jì)。
(3)詳細(xì)設(shè)計(jì)知識(shí)(應(yīng)用):根據(jù)【概要設(shè)計(jì)規(guī)格書】,對(duì)架構(gòu)層、功能層和數(shù)據(jù)層的內(nèi)容進(jìn)行應(yīng)用方面的細(xì)節(jié)設(shè)計(jì),如系統(tǒng)原型、流程機(jī)制、登錄、門戶、權(quán)限、以及系統(tǒng)易用性相關(guān)的設(shè)計(jì)。
(4)詳細(xì)設(shè)計(jì)知識(shí)(技術(shù)):不在對(duì)需求工程師能力的要求范圍內(nèi)(省略)。
(5)用例設(shè)計(jì)知識(shí):前面設(shè)計(jì)的是否合理、正確、并滿足客戶需求呢?這里就需要進(jìn)行用例設(shè)計(jì),包括業(yè)務(wù)用例(檢驗(yàn)業(yè)務(wù)設(shè)計(jì)部分的內(nèi)容)、應(yīng)用用例(檢驗(yàn)應(yīng)用設(shè)計(jì)部分的內(nèi)容)。
(6)技術(shù)實(shí)現(xiàn)知識(shí):對(duì)需求工程師雖不要求會(huì)編碼,但是最好也能夠掌握一定的系統(tǒng)構(gòu)成、系統(tǒng)開發(fā)、系統(tǒng)測(cè)試等相關(guān)常識(shí)(越多越好),有了這方面的知識(shí)更容易判斷客戶需求與軟件實(shí)現(xiàn)之間的合理性。
■能力,來源于將學(xué)習(xí)到的知識(shí)在實(shí)踐中進(jìn)行反復(fù)的應(yīng)用、總結(jié)、積累。
4. 設(shè)計(jì)成果
設(shè)計(jì)成果包括了以上全部的設(shè)計(jì)資料
(1)概要設(shè)計(jì)規(guī)格書。
(2)詳細(xì)設(shè)計(jì)(業(yè)務(wù))的規(guī)格書、業(yè)務(wù)用例。
(3)應(yīng)用設(shè)計(jì)(應(yīng)用)的規(guī)格書、應(yīng)用用例。
■設(shè)計(jì)小結(jié)
相比較于咨詢和調(diào)研的工作內(nèi)容來說,設(shè)計(jì)工作要求的難度可能比較大,需要的知識(shí)也比較多,但是在小規(guī)模的軟件企業(yè)或是小型的軟件項(xiàng)目中大都沒有特定的設(shè)計(jì)師,因此需求工程師具有一定的設(shè)計(jì)能力就尤為重要。
■需求工程師的能力總結(jié)
至此關(guān)于需求工程師的能力要求就介紹完了,從上述的介紹中可以看出來,完美的系統(tǒng)開發(fā)除去需要大量?jī)?yōu)秀的程序員外,同樣還需要很多優(yōu)秀的需求工程師,沒有需求工程師正確地完成上述工作(咨詢、調(diào)研、設(shè)計(jì)),程序員的技術(shù)水平再高也無法得到優(yōu)秀的產(chǎn)品。這兩者的協(xié)同合作是完成系統(tǒng)的必要條件,不存在哪個(gè)為主哪個(gè)為輔為判斷。
從圖1上可以看出、需求工程師的前面是咨詢師的崗位、后面是設(shè)計(jì)師的崗位,不論向哪個(gè)方向努力,都會(huì)有一個(gè)更高的崗位在等待著需求工程師。需求工程師的調(diào)研能力是咨詢能力和設(shè)計(jì)能力的基礎(chǔ)要求。
如果你在一個(gè)小型的軟件公司、或是一個(gè)小項(xiàng)目里做事,那么上述所說的“咨詢師、需求工程師、軟件設(shè)計(jì)師”三者所需要的能力都要具備。
你從事的是其中哪個(gè)角色?是否打算成為一個(gè)全能的角色呢?
■關(guān)于軟件設(shè)計(jì),請(qǐng)參看李鴻君的“如何繪制邏輯圖”、“界面設(shè)計(jì)方法”等系列博文。
本系列到此結(jié)束。關(guān)于詳細(xì)的設(shè)計(jì)方法介紹,請(qǐng)參考《大話軟件工程—需求分析與軟件設(shè)計(jì)》一書。
總結(jié)
以上是生活随笔為你收集整理的需求、需求工程与需求工程师 — 6. 设计能力的要求的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 五一汇编题
- 下一篇: 汇编OFFSET,SEG,LEA