<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 連載:面向對象葵花寶典:思想、技巧與實踐(17) - 需求分析518方法 對于大部分人來說,可能并沒有機會進行需求分析,因為在大部分的公司里面,需求分析都是有很多工作經驗的資深人員,或者是對系統很熟悉的老的開發人員。 ? 所以,很多人都會對需求分析有一種景仰的心態,認為既然做需求的人要求這么高,那么需求分析一定很復雜、很難、很高級了。而且很多需求分析人員動不動就會教訓“你要站在客戶的角度”、“你要全面的分析”等,然后再拋出幾個需求建模之類的玩意嚇嚇你。。。。。。 ? 但其實做需求分析一點都不高深,只要掌握正確的方法,大部分人都能夠做需求分析,而且可以做的很好! ? 而且這個正確的方法掌握起來很簡單,不需要你另外再去買一本書刻苦閱讀,也不需要你花費大量的時間去實踐,去探索。 ? 下面我們就來看,這個簡單的正確方法究竟是什么。 ? 我總結起來就是“**需求分析518方法**”,簡稱“我要發”,具體來說就是5W1H8C!! 5:5W,即When、Where、Who、What、Why 1:1H,即How 8:8C,即8個Constraint,包括性能Performance、成本Cost、時間Time、可靠性Reliability、安全性Security、合規性Compliance、技術性Technology、兼容性Compatibility ? 下面我們來詳細分析這幾個點。 #### 【5W】 5W:5W作為一組,首先是它們都以W開頭,但這不是最關鍵,最關鍵的在于這些是一個需求產生的環境,或者說上下文(英文Context)。 為什么我們要關注需求產生的環境?很簡單:環境影響需求。 ? 舉個很簡單的例子:同樣是垃圾桶,放在巴西貧民窟的要求和放在紐約帝國大廈肯定不一樣。貧民窟可能有很多頑皮的小孩,將垃圾桶作為玩具,或者作為足球的射門目標;而帝國大廈都是文質彬彬的白領金領,對美學可能有特別的要求;因此,兩個不同地方的垃圾桶,需求是完全不一樣的。 ? 有人會說,客戶難道不是最明白他們需求的環境么?為什么他們不直接告訴我們? ? 前面我們提到,客戶往往基于自己的經驗、理解、學識等,給出一個解決方案,然后他們跟你說這是他們的需求。理想的情況,當然是客戶非常在行,最好就是軟件分析師出身的;但現實卻往往不妙,很多客戶對軟件的理解可能僅僅停留在Windows甚至QQ上,甚至有客戶會認為你會變魔法,只要他說一個簡單需求,你就能變出他想要的! ? 客戶當然不會是軟件分析師,我們也不是魔法師,因此,我們必須親自出馬,弄清需求產生的環境。 ? ==When== 這是和時間相關的環境信息,常見的時間信息有: 1)?季節信息:春夏秋冬等 2)?日期信息:節日、假日等 3)?作息事件:白天、晚上、凌晨、早晨、上午、下午、晚上、深夜等 ? 一個簡單的例子:我在以前公司做通訊設備的時候,如果是做數據倒換工具,都要求非常智能,最好是一鍵式操作?為什么呢,因為數據倒換都是在晚上凌晨2~4點進行,此時操作人員最困,思維最遲鈍,如果你做的數據倒換工具需要操作七七四十九大步,九九八十一小步,而只要一步出錯就全部重來,那么誰敢去操作? ? ==Where== 這個事和地點相關的環境信息,常見的地點信息有: 1)?國家、地區:不同的國家和地區有不同的文化、風俗、制度等; 2)?室內、室外、街道; 3)?建筑物 ? 一個簡單的例子:一個垃圾桶,放在室內就可能要求美觀小巧(不占地方);而放在室外就可能要求防曬、防雨、防風、防瘋子,而且要求比較大。 ? ==Who== 這是和參與者相關的,注意我這里用的是“參與者”來描述的,而不是說“人”,為什么呢? 因為很多外部參與者不一定是“人”,例如外系統、動物等都可以算作Who里面的。 常見的參與者信息有: 1)?投資者、管理者 2)?使用者、維護者 3)?監督者、評估者:例如政府機構、監管機構等 4)?其它系統 ? 一個簡單例子,銀行的ATM機,參與者有如下幾類: 顧客:使用ATM機器取款、存款; 銀行維護人員:每天將錢放進ATM機器; 質檢機構:根據XX法律對ATM機進行檢查; ? ==What== 這個就是客戶最終想要的輸出。例如一個文檔、一份報告、一個圖片、一個系統等。 一般情況下,這也是我們看到的最原始的需求。 ? ==Why== 這個就是客戶遇到的問題、困難、阻礙等,也是客戶提出需求的驅動力。 只要是客戶覺得不爽的地方都是Why的范圍。 ? ? 【一個長頸鹿的實例:5W】 有一個建筑公司的需求分析人員收到了一個客戶需求“給我建一棟很大的房子”,于是建筑公司就建了房子,房子是歐式風格,又大又寬敞,全套宜家家居,全木地板,進口電器。。。。。簡直是應有盡有,結果客戶來收房子的時候說了一句話,讓建筑公司吐血,你知道是什么話么? 客戶說:“先生們,我是要一棟房子給我們的長頸鹿住!” ? 因此即使是簡單的一句話需求,我們也需要詳細分析。例如: Who:這套房子的購買者是動物園、管理者是動物園的飼養員、使用者是長頸鹿、評估者可能是動物管理協會、衛生局等政府部門” When:這個可能要求一年四季了,如果長頸鹿知識運來展覽一下,那么就是展覽的這幾個月。” Where:這個房子要建在動物園,而不是其它居民小區,那么動物園肯定有一些相關的規定” What:要求一套房子,但不是簡單意義上的房子,而是長頸鹿住的房子,這就需要考慮高度、圍欄等” Why:?這個就可能動物園要臨時展覽,也可能要引進長頸鹿,也有可能是原來的長頸鹿房子破舊了” ? 雖然我們前面講的時候,5W都是一視同仁的,但實際上有一個W是非常關鍵的,如果這個W錯了,那么即使其它4W全部正確,也可能導致最后沒有滿足客戶需求,客戶不滿意。 ? 這個最關鍵的W就是Why,因為只有真正了解了客戶的需求驅動力,才能解決客戶的問題,而只有解決了客戶的問題,那么客戶才會真正的滿意。這也是我們前面提到的需求分析的終極目的是“挖掘客戶的問題,實現客戶價值”! ? 如下圖形象的描繪了5W的關系: ?![](https://box.kancloud.cn/2016-01-20_569f5cc9e225f.jpg) ? #### 【1H】 H代表How,但具體是指什么How呢? ? 很多人常犯的一個錯誤是在需求分析階段分析了需求如何實現,這樣做是不正確的。需求分析階段的How不是指如何實現需求,而是指需求本身的流程,如何實現需求那是設計階段的事情! ? 你可能會有疑問:“需求本身還有什么流程”? ? 需求又簡單和復雜之分,有的需求可能很簡單,客戶想要的東西也很明確;但有的需求比較復雜,涉及到多次交互,或者多個狀態變化等,這種情況就要把需求的流程描述清楚。 舉個例子吧,取款是一個需求,但取款本身包含多次交互,要插卡、輸入密碼、輸入金額、打印賬單、取錢這些步驟,How就是用來描述這整個流程是如何運行的。 ? 說起來How很簡單,但實際上這是需求分析工作量最大的一部分,How分析的結果是需求分析的主要輸出,而且How分析的質量直接影響最后需求實現的質量。 ? 在前面進行5W分析的時候,我們沒有什么具體的指導方法,分析時主要靠分析人員的經驗、水平,而How則不一樣,進行How分析時有一套成熟的方法,這就是“用例方法”!我們將在后續章節詳細介紹用例方法。 ? #### 【8C】 8C指的是8個約束和限制(Constraintes),具體如下: | 性能Performance 性能是指系統提供相應服務的效率。一般而言,性能主要包括響應時間、吞吐量。 性能是很多系統架構設計的關鍵約束條件之一。例如,同樣一個Web網站,雖然都是提供信息給用戶流浪,但一個日訪問量1萬的網站,和日訪問量10億的網站,兩者的設計是完全不一樣的。 ? l?成本Cost 成本指為了實現系統而需要付出的代價。 成本也是很多系統架構設計的關鍵約束之一。例如,客戶只愿意出100萬來買這個系統,最后我們卻設計了一個耗費1000萬的系統,要么客戶不愿買,要么我們自己虧損。無論哪種情況,最后都是我們賠本了。 ? l?時間Time 指客戶要求什么時候交付。 ? ? l?可靠性Reliability 指系統長時間正確運行的能力,銀行、證券、電信這些公司,對宕機時間要求很嚴格的 ? l?安全性Security 指對信息安全的保護能力,涉及到錢、身份證、社會保險號等需求對這個要求很高 ? l?合規性Compliance 指滿足各種行業標準、法律法規、規范等,例如3C、SOX、3GPP、ITUT等 ? l?技術性Technology 有的客戶可能要求我們采用某種技術,例如客戶現在都是Windows的機器,那么就可能要求我們基于Windows平臺開發 ? l?兼容性Compatibility 指我們的產品與系統與客戶其它已有的產品或者系統的兼容能力,要知道現在很少有產品是孤立運行的,特別是在大企業、大公司中,多個系統都是互相交互、互相配合的。新的系統必須能夠和已有的系統配合,否則將無法運行。 ? 為什么我們要將這8個C單獨列出來呢? ? 需求分為功能屬性和質量屬性,前面的5W+1H是屬于功能屬性,而8C是屬于質量屬性,一個需求最終是否被正確的實現了,既要看功能屬性是否正確,也要看質量屬性是否正確,兩者缺一不可!? ? 例如,你做了一個超牛逼的系統,功能超級強大,但一個操作需要10分鐘,你覺得這樣的系統客戶有耐心用么?
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看