㈠ 軟體工程中常用的需求分析的方法有哪些
一、過濾需求的方法
做後端系統,要學會的第一個技能就是砍需求。也就是過濾需求。
這不是一個貶義詞,反而是體現後端產品價值判斷的基礎。
過濾需求的方法,就是通過一定的手段判斷需求是否是偽需求,應該被過濾掉。
1. 用戶場景模擬法
後端產品的出發點就是幫助業務用戶,因此在調研需求的時候要模擬業務的場景,分析業務用戶提到的需求是否能解決他的問題。
如果不能幫助用戶,那麼這個需求就可能是偽需求。
以下面的案例說明:
背景:「貨到付款」類型的訂單會因為缺貨而無法發出,如果超過一定的時間,客服就會跟顧客溝通,幫顧客取消訂單。
需求:由於這種訂單的數量還是蠻多的,逐個取消太費時間,因此業務用戶要求在「缺貨訂單」列表頁增加「批量取消訂單」按鈕。
分析:調研到業務操作場景,是先找到該類缺貨訂單,然後和顧客溝通,顧客同意刪除,才進行刪除。也就是逐個溝通確認,再逐個取消訂單的,所以「批量取消訂單」無法被有效使用。
因此,該需求是個偽需求,應該被過濾掉。
2. 功能歸屬分析
專門的系統做專職功能,有助於合理的產品體系建設。
因此需求調研的時候,可以通過系統的定位,判斷需求是否應該在該系統完成。
如果不屬於該系統范疇,那麼直接說服需求方更換方案。以
下面的案例說明:
背景:CRM系統(顧客關系管理系統)有一個顧客標簽生成功能,就是根據顧客的消費行為數據,自動對應關聯上標簽,如優質顧客、高潛力顧客、欺詐顧客等。
需求:業務用戶提出需求,除了做上述的基礎標簽之外,還要做出英語版本的標簽(就是把標簽文案翻譯成英文),這樣歐美員工可以在英語版本的系統下使用。
分析:調研到翻譯之後的標簽不是在CRM系統使用的,而是給到SMS(客服系統)使用的。
所以應該由SMS根據CMS提供的基礎標簽數據,自己做二次的衍生。
之所以這樣,首先是為了避免未來更多語言版本的擴展需求或更多系統提出類似的需求;
其次,CRM系統已經完成了「接力賽」的第一棒,創造了基礎數據,那麼其他系統要特殊化使用,完全可以自行進行特殊化處理,無需耦合回CRM系統。
結論:案例的需求本身是真需求,並且實現上也沒難度,但是該功能的定位超出了本系統范疇,專門系統做專職功能,化衍生需求應該在下游執行。
否則,耦合性過高只會增加系統的復雜程度,難以維護和擴展。
二、拆分和聚合的方法
1. 拆分需求法
業務用戶提出一個需求,很可能只是短短的一段話。
但是不要高興太早,可能這一句話暗含了很多線索,因此要善於拆分:
先找他要解決的核心問題,再圍繞核心點,理清前、後、左、右、上、下的旁系需求點。
每個需求點再當做一個子需求進行調研,最後再聚合在一起。
以下面的案例說明:
背景:訂單業務的類型很多,訂單退貨之後需要創建售後單據,但是因為數量大,所以花費很多人力,且手動創建有出錯的風險。
需求:業務提出的需求是「增加退貨訂單自動創建售後單的功能」,這是個一句話需求。
該一句話需求,其實包含了多種具體的訂單類型和場景,那麼我們就要拆分調研,拆分的維度比如:
自營訂單、第三方訂單、貨到付款訂單、先款後貨訂單、部分退貨訂單、完全退貨訂單、服裝事業部訂單、電子事業部訂單等,其中每一個維度就相當於一個小需求。
這里不一一展開。
2. 聚合需求法
拆分法是對單個需求分解成若干小需求進行調研,聚合法相反,是找到許多個相互關聯的小需求的共性,然後統籌成一個大需求去完成。例如:
由於業務用戶分散在不同的部門,各自為政,於是張三、李四可能都對一個業務流程有相同的需求,或者對同一個功能有相同的優化期望,結果倆人分別提了需求過來。那麼產品經理就要找到二者背後的相關性和交叉區。
然後統籌規劃,聚合在一起當作一個需求來調研,最終輸出一個整體的需求調研結果。
三、利用輔助功能調研需求
調研產品現有功能,可以用來確認原有功能的邏輯,或者確定新需求方案是否可行。
比如業務用戶需要更新一個功能,為了避免更新出錯或遺漏,產品經理需要知道修改前和修改後是否會能正常運行。
最基礎的辦法就是自己設計一個測試用例,記錄操作方式、狀態變化、數據流向等。看看下面的例子:
背景:從銷售網站獲取到OMS系統(訂單管理系統)的訂單信息中帶著顧客的郵箱。顧客下完單,可能會在銷售網站修改郵箱,而此時已經獲取到OMS的歷史訂單中的郵箱是不變的。
需求:顧客若在銷售網站修改郵箱,要求已獲取到OMS的該顧客的訂單中的郵箱也要同步修改。
分析:需求是很明白的,也有它的意義,但有風險。
因為我們知道訂單信息貫穿於整個訂單流轉過程中,牽扯到訂單編輯、審核、取消、配貨、發貨等,而這些環節跳轉的觸發條件可能就是某個信息更新(這裡面就可能包括有郵箱更新)。
因此,更新郵箱是否會影響流程中的某些環節,一時間很難准確知道。
於是,我們可以採用預測試的方式,設計測試用例,在測試機運行一些訂單,觀察各個環節郵箱變更的影響,然後收集起來分析對策。
測試法就像是探雷一樣,主要用來解決未知風險點。這個方式的重點是記錄和分析操作前狀態、操作位點、操作後狀態、操作後觸發的連鎖反應、數據流向等。
四、「拔蘿卜帶出泥」的方式調研需求
調研需求時,產品經理要拔蘿卜帶出泥,挖掘用戶沒看到的需求點和價值。
舉例說明:
背景:公司入駐到銷售平台後,銷售平台會對入駐的店鋪的違規行為進行罰款。
需求:業務用戶提出需求,將銷售平台的罰款數據抓取到訂單系統,關聯訂單數據,以便進行人工分析。
分析:
第一步,先拆分需求,確定什麼是罰款數據,總共有哪些罰款種類,需要對接哪些罰款種類,罰款數據與訂單系統關聯方式是什麼,是否都能關聯到,關聯不到怎麼辦,銷售平台是否已經提供了公用的罰款介面,Token(請求許可權)如何獲取,抓取頻率怎麼樣,數據增長幅度多大,獲取之後做哪些展示和搜索,用戶許可權怎麼設置,需要和訂單系統做哪些交互,該需求的價值是什麼……
第二步,挖掘需求:是否需要作分析功能,分析功能的規則是什麼;是否需要做監控和預警,是否需要指派負責人;其他業務人員是否也有類似需求,其他平台是否也有類似需求……
通過「拔蘿卜帶出泥」的方式,連帶出更多需求點。將上述調研結果重新組裝起來,得到一個系統化的完整需求。
羅列出需求要點和對應的驗收目標,這樣使得需求具象化,同時又不會遺漏細節,內部充實,外部閉環,並且進行了價值挖掘,做成控制閾值、預警、責任人分派、趨勢分析、損失分析等高價值的功能,超出業務的預期。
㈡ 軟體工程的學習方法
軟體工程學的主要內容是軟體開發技術和軟體工程管理。 軟體開發技術包含軟體工程方法學、軟體工具和軟體開發環境;軟體工程管理學包含軟體工程經濟學和軟體管理學。 專業簡介是計算機領域發展最快的學科分支之一,國家非常重視軟體行業的發展,對軟體人才的培養給予了非常優惠的政策。本專業培養掌握計算機軟體基本理論知識,熟悉軟體開發和管理技術、能夠在計算機軟體領域中從事軟體設計、開發和管理的高級人才。 主修課程該專業除了學習公共基礎課外,還將系統學習離散數學、數據結構、演算法分析、面向對象程序設計、現代操作系統、資料庫原理與實現技術、編譯原理、軟體工程、軟體項目管理、計算機安全等課程,根據學生的興趣還可以選修一些其它選修課。 畢業去向除考取國內外名牌大學研究生外,主要畢業去向是計算機軟體專業公司﹑信息咨詢公司﹑以及金融等其它獨資、合資企業。 培養目標本專業培養適應社會發展需求,德、智、體、美全面發展,具有扎實的計算機應用理論和知識基礎,掌握軟體工程領域的前沿技術和軟體開發方法,具有較強的實踐能力和創新精神,具備較強的軟體項目的系統分析、設計、開發和測試能力,能夠按照工程化的原則和方法從事軟體項目開發和管理的應用型人才。
㈢ 軟體工程的方法
美河提供.C.精髓.軟體工程方法.pdf,免費下載
鏈接:https://pan..com/s/17Q0JIVCI98FVDaRaisgA3A
C++是一種大型而復雜的語言,其設計目標是作為一種通用的工程語言。 本書分4個部分共19章,不僅詳細介紹了C++語言的基本語法,而且講解了 C++的高級應用(如虛函數、模板、異常等),並通過大量詳盡的代碼表達了有關軟體工程及維護的觀點。
㈣ 求軟體工程師的學習方法、方式
美河提供.C.精髓.軟體工程方法.pdf,免費下載
鏈接:https://pan..com/s/17Q0JIVCI98FVDaRaisgA3A
C++是一種大型而復雜的語言,其設計目標是作為一種通用的工程語言。 本書分4個部分共19章,不僅詳細介紹了C++語言的基本語法,而且講解了 C++的高級應用(如虛函數、模板、異常等),並通過大量詳盡的代碼表達了有關軟體工程及維護的觀點。
㈤ 軟體工程 需求分析有哪三種方法
軟體工程中包含需求、設計、編碼和測試四個階段,其中需求工程是軟體工程第一個也是很重要的一個階段,需求分析是要決定「做什麼,不做什麼」。 在一個軟體項目中,軟體需求包括三個不同的層次-業務需求、用戶需求和功能需求-也包括非功能需求:業務需說明了提供給客戶和產品開發商的新系統的最初利益,反映了組織機構或客戶對系統、產品高層次的目標要求。 軟體開發,能否獲得成功,最重要的是需求分析的工作。因此,軟體需求分析能力和水平,對軟體項目至關重要。 一般的分析方法和步驟如下: ⑴首先調查組織機構情況 包括了解該組織的部門組成情況,各部門的職能等,為分析信息流程作準備。 ⑵然後調查各部門的業務活動情況 包括了解各個部門輸入和使用什麼數據,如何加工處理這些數據,輸出什麼信息,輸出到什麼部門,輸出結果的格式是什麼。 ⑶協助用戶明確對新系統的各種要求 包括信息要求、處理要求、完全性與完整性要求。 ⑷確定新系統的邊界 確定哪些功能由計算機完成或將來准備讓計算機完成,哪些活動由人工完成。由計算機完成的功能就是新系統應該實現的功能。 常用的調查方法有: ⑴跟班作業 通過親身參加業務工作來了解業務活動的情況。這種方法可以比較准確地理解用戶的需求,但比較耗費時間。 ⑵開調查會 通過與用戶座談來了解業務活動情況及用戶需求。座談時,參加者之間可以相互啟發。 ⑶請專人介紹。 ⑷詢問 對某些調查中的問題,可以找專人詢問。 ⑸設計調查表請用戶填寫 如果調查表設計得合理,這種方法是很有效,也很易於為用戶接受的。 ⑹查閱記錄 即查閱與原系統有關的數據記錄,包括原始單據、賬簿、報表等。 通過調查了解了用戶需求後,還需要進一步分析和表達用戶的需求。分析和表達用戶需求的方法主要包括自頂向下和自底向上兩類方法。
㈥ 軟體工程方法學的基本內容包括哪些
軟體方法學是以方法為研究對象的軟體學科。
軟體工程方法為軟體開發提供了 「如何做」 的技術; 軟體工具為軟體工程方法提供了自動的或半自動的軟體支撐環境; 過程是為了獲得高質量的軟體所需要完成的一系列任務框架,它規定了完成各項任務的工作步驟。
最具影響的是結構化方法、面向對象方法和形式化方法。
結構化方法
結構化方法的基本要點是:自頂向下、逐步求精、模塊化設計、結構化編碼。
結構化設計方法是以自頂向下,逐步求精,模塊化為基點,以模塊化,抽象,逐層分解求精,信息隱蔽化局部化和保持模塊獨立為准則的設計軟體的數據架構和模塊架構的方法學。
面向對象方法
面向對象就是基於對象概念,以對象為中心,以類和繼承為構造機制,來認識、理解、刻畫客觀世界和設計、構建相應的軟體系統。
主要特徵有:封裝性、繼承性、多態性。
OO方法的作用和意義決不只局限於編程技術,它是一種新的程序設計范型:面向對象程序設計范型;是信息系統開發的新方法論:面向對象方法學;是正在興起的新技術:面向對象技術。
因此對OO也就是面向對象有關的內容進行學習應該進行更加深入和廣泛的了解。
形式化方法
形式化方法是基於數學的特種技術,適合於軟體和硬體系統的描述、開發和驗證。
形式化方法用於軟體和硬體設計,使用適當的數學分析以提高設計的可靠性和Robust。但是,由於採用形式化方法的成本高意味著它們通常只用於開發注重安全性的高度整合的系統。
㈦ 軟體工程方案一般包括哪些步驟或內容
軟體工程(SoftWare Engineering)的框架可概括為:目標、過程和原則。 (1)軟體工程目標:生產具有正確性、可用性以及開銷合宜的產品。正確性指軟體產品達到預期功能的程度。可用性指軟體基本結構、實現及文檔為用戶可用的程度。開銷合宜是指軟體開發、運行的整個開銷滿足用戶要求的程度。這些目標的實現不論在理論上還是在實踐中均存在很多待解決的問題,它們形成了對過程、過程模型及工程方法選取的約束。 (2)軟體工程過程:生產一個最終能滿足需求且達到工程目標的軟體產品所需要的步驟。軟體工程過程主要包括開發過程、運作過程、維護過程。它們覆蓋了需求、設計、實現、確認以及維護等活動。需求活動包括問題分析和需求分析。問題分析獲取需求定義,又稱軟體需求規約。需求分析生成功能規約。設計活動一般包括概要設計和詳細設計。概要設計建立整個軟體系統結構,包括子系統、模塊以及相關層次的說明、每一模塊的介面定義。詳細設計產生程序員可用的模塊說明,包括每一模塊中數據結構說明及加工描述。實現活動把設計結果轉換為可執行的程序代碼。確認活動貫穿於整個開發過程,實現完成後的確認,保證最終產品滿足用戶的要求。維護活動包括使用過程中的擴充、修改與完善。伴隨以上過程,還有管理過程、支持過程、培訓過程等。 (3)軟體工程的原則是指圍繞工程設計、工程支持以及工程管理在軟體開發過程中必須遵循的原則
㈧ 軟體工程 靜態測試的主要方法有哪些
(1)人工檢測:是指不依靠計算機而是靠人工審查程序或評審軟體,包括代碼檢查、靜態結構分析和代碼質量度量等;
(2)計算機輔助靜態分析:利用靜態分析工具對被測試程序進行特性分析,從程序中提取一些信息,以便檢查程序邏輯的各種缺陷和可疑的程序構造。
靜態測試包括代碼檢查、靜態結構分析、代碼質量度量等。它可以由人工進行,充分發揮人的邏輯思維優勢,也可以藉助軟體工具自動進行。
(8)軟體工程方法有哪些擴展閱讀:
代碼檢查包括代碼走查、桌面檢查、代碼審查等,主要檢查代碼和設計的一致性,代碼對標準的遵循、可讀性,代碼的邏輯表達的正確性,代碼結構的合理性等方面;可以發現違背程序編寫標準的問題,程序中不安全、不明確和模糊的部分,找出程序中不可移植部分、違背程序編程風格的問題,包括變數檢查、命名和類型審查、程序邏輯審查、程序語法檢查和程序結構檢查等內容。
在實際使用中,代碼檢查比動態測試更有效率,能快速找到缺陷,發現30%~70%的邏輯設計和編碼缺陷;代碼檢查看到的是問題本身而非徵兆。但是代碼檢查非常耗費時間,而且代碼檢查需要知識和經驗的積累。
代碼檢查應在編譯和動態測試之前進行,在檢查前,應准備好需求描述文檔、程序設計文檔、程序的源代碼清單、代碼編碼標准和代碼缺陷檢查表等。靜態測試具有的發現缺陷早、降低返工成本、覆蓋重點和發現缺陷的概率高的優點以及耗時長、不能測試依賴和技術能力要求高的缺點。
㈨ 軟體工程的開發方法
美河提供.C.精髓.軟體工程方法.pdf,免費下載
鏈接:https://pan..com/s/17Q0JIVCI98FVDaRaisgA3A
C++是一種大型而復雜的語言,其設計目標是作為一種通用的工程語言。 本書分4個部分共19章,不僅詳細介紹了C++語言的基本語法,而且講解了 C++的高級應用(如虛函數、模板、異常等),並通過大量詳盡的代碼表達了有關軟體工程及維護的觀點。
㈩ 軟體工程學的方法學
軟體工程的方法有很多方面的意義。包括項目管理,分析,設計,程序的編寫,測試和質量控制。
軟體設計方法可以區別為重量級的方法和輕量級的方法。重量級的方法中產生大量的正式文檔。
著名的重量級開發方法包括ISO 9000,CMM,和統一軟體開發過程(RUP)。
輕量級的開發過過程沒有對大量正式文檔的要求。著名的輕量級開發方法包括極限編程(XP)和敏捷流程(Agile Processes)。
根據《新方法學》這篇文章的說法,重量級方法呈現的是一種「防禦型」的姿態。在應用「重量級方法」的軟體組織中,由於軟體項目經理不參與或者很少參與程序設計,無法從細節上把握項目進度,因而會對項目產生「恐懼感」,不得不要求程序員不斷撰寫很多「軟體開發文檔」。而輕量級方法則呈現「進攻型」的姿態,這一點從XP方法特別強調的四個准則—「溝通、簡單、反饋和勇氣」上有所體現。目前有一些人認為,「重量級方法」適合於大型的軟體團隊(數十人以上)使用,而「輕量級方法」適合小型的軟體團隊(幾人、十幾人)使用。當然,關於重量級方法和輕量級方法的優劣存在很多爭論,而各種方法也在不斷進化中。
一些方法論者認為人們在開發中應當嚴格遵循並且實施這些方法。但是一些人並不具有實施這些方法的條件。實際上,採用何種方法開發軟體取決於很多因素,同時受到環境的制約。