『壹』 軟體工程 需求分析有哪三種方法
軟體工程中包含需求、設計、編碼和測試四個階段,其中需求工程是軟體工程第一個也是很重要的一個階段,需求分析是要決定「做什麼,不做什麼」。 在一個軟體項目中,軟體需求包括三個不同的層次-業務需求、用戶需求和功能需求-也包括非功能需求:業務需說明了提供給客戶和產品開發商的新系統的最初利益,反映了組織機構或客戶對系統、產品高層次的目標要求。 軟體開發,能否獲得成功,最重要的是需求分析的工作。因此,軟體需求分析能力和水平,對軟體項目至關重要。 一般的分析方法和步驟如下: ⑴首先調查組織機構情況 包括了解該組織的部門組成情況,各部門的職能等,為分析信息流程作準備。 ⑵然後調查各部門的業務活動情況 包括了解各個部門輸入和使用什麼數據,如何加工處理這些數據,輸出什麼信息,輸出到什麼部門,輸出結果的格式是什麼。 ⑶協助用戶明確對新系統的各種要求 包括信息要求、處理要求、完全性與完整性要求。 ⑷確定新系統的邊界 確定哪些功能由計算機完成或將來准備讓計算機完成,哪些活動由人工完成。由計算機完成的功能就是新系統應該實現的功能。 常用的調查方法有: ⑴跟班作業 通過親身參加業務工作來了解業務活動的情況。這種方法可以比較准確地理解用戶的需求,但比較耗費時間。 ⑵開調查會 通過與用戶座談來了解業務活動情況及用戶需求。座談時,參加者之間可以相互啟發。 ⑶請專人介紹。 ⑷詢問 對某些調查中的問題,可以找專人詢問。 ⑸設計調查表請用戶填寫 如果調查表設計得合理,這種方法是很有效,也很易於為用戶接受的。 ⑹查閱記錄 即查閱與原系統有關的數據記錄,包括原始單據、賬簿、報表等。 通過調查了解了用戶需求後,還需要進一步分析和表達用戶的需求。分析和表達用戶需求的方法主要包括自頂向下和自底向上兩類方法。
『貳』 如何進行軟體架構設計
軟體架構設計的幾個步驟 1、分析需求和理解業務模型(或領域建模),並選定關鍵Use case。 軟體的需求,可以分為從用戶視角和開發人員視角來看,從用戶的角度看,又可以分為功能性和非功能性需求,我們必須從不同的視角和級別去全面的認識需求並分析需求,理解業務模型。實踐表明,常常被我們忽視的非功能性需求常常會導致整個項目失敗。 理解業務需求最好的方式莫過於進行領域建模,領域建模與需求分析往往是交替穿叉進行的,領域建模主要有以下三個方面的作用: ◆探索復雜問題,弄清領域知識。Martin Fowler曾經說過,他採用面向對象方法最大的好處就是它有助於解決更為復雜的問題。領域建模本身作為輔助思維的工具,幫助我們將注意力始終保持在最為重要的業務概念及其關繫上,使我們能夠不斷深入地,系統的對需求進行分析和認識。領域建模往往是一個從模糊到清晰,從零散到系統的過程。 ◆決定功能范圍,影響可擴展性。任何模型都是對現實世界某種程序的抽象,這種抽象就會忽略某一些東西,例如忽略對象的屬性和對象間的關系,而這些忽略往往都是帶有一定的目的性的,這種忽略就決定了功能的范圍。模型揭示了各種功能背後的結構,如果說定義功能相當於「拍照片」的話,那麼領域建模就相當於「做透視」,更加關注問題領域的內在結構,相當於對問題領域進行了一定的抽象,良好的領域模型不僅能很好的支持現有的功能,而且還可以在一定程度上支持未來可能出現的新需求,體現良好的可擴展性。 ◆提供交流基礎,促進有效溝通。領域建模通常會使用UML圖作為呈現的方式,這樣為我們的溝通提供了方便。當然,有時候文字在描述某些特定領域的問題時可能更適合,可以靈活運用。 在我們公司的實際軟體開發流程中,往往領域建模缺少這一環節,這可能是在以後的工作中需要進一步提高之處。 雖然我們總是期望架構設計師能全面掌握需求,但由於時間和精力的限制,擺在我們面前的現實就是架構設計師沒有時間對所有需求進行深入分析,所以我們的策略就是「把好鋼用在刀刃上」,即把大部分時間和精力花在對決定架構最重要的關鍵需求上。在選擇關鍵需求時要注意:高優先順序的需求往往是從用戶的角度來看的,可能並不是真正的關鍵需求。在《RUP實踐者指南》一書中向我們講述了如何確定關鍵功能需求?A.作為應用程序的核心或實現了系統的主要介面的功能,B.必須被實現的功能,即如果這些功能不被實現,則開發出來的軟體就失去了價值,C.覆蓋了系統架構的一些方面,但沒有被其他重要的Use case覆蓋到的功能。 2、分別從各個視角來考慮軟體架構的方方面面。 軟體的架構設計必須考慮到各方面,根據前期工作確立的領域模型,關鍵需求,系統約束等進行設計,必須從系統用戶,開發人員,系統管理員,部署管理員,數據管理員等人員的角度去分析並解決問題。比如說,如果我們的運行架構採用Cluster方式時,就必須小心Cache和Session等的使用;如果我們的業務邏輯要求我們要操作多個資料庫時,就要考慮採用支持二階段事務提交的方式。 只有將這些方方面面的問題都考慮到了,這樣的架構設計才是完整的。至於每一個視圖中,我們應該設計到什麼細節這一問題,實際上與整個項目的過程定義有關。例如,如果我們有專門安排資料庫概要設計的活動,那我們在架構設計的過程中就可以只需要關注更高層次的資料庫特性及資料庫之間的關系,而每一張表的數據字典可以在後續的相關活動中進行設計,但如果沒有這樣的活動,那我們就要細化到每一張表的每一個欄位,以及表之間的關系。 3、解決技術面的重點問題和難題 在軟體架構設計的過程中,我們往往會需要攻克一些技術面的重點問題和難題,這完全是一項極其需要扎實的理論知識和豐富的實踐經驗支撐的工作。例如,我們如何提高整個系統的性能?如何能很好的導出極其復雜的「中國式報表」(一般比西方國家產出的報表要復雜很多,而且很多開源的BI類的框架並不能完全解決問題)? 當遇到確實是很困難的問題,可以去網路一下或Google一下,也可以去請教公司的資深技術人員或專家,或者召開小范圍的技術專題討論會議,採用腦力激盪的方法試著找找答案,這樣才能提高工作的效率。 4、召開架構設計評審會議進行同行評審。 架構設計評審是極其重要的一環,我曾將其形容為「七種武器」中的離別鉤,就是因為在會議上,同行們可能會提很多問題或意見,而且很多意見很尖銳,所以一定要虛心接受,並做好記錄,正所謂「良葯苦口利於病,忠言逆耳利於行」。 在評審會議之前,我們要完成很多准備工作,最好是能准備一份簡明扼要的電子簡報,把最重要的問題列出來,這樣在進行評審會議時,就不會漫無目的,在會議前就將這些資料發給與會人員,請他們抽空先了解一下,在會議進行時,要學會控制會議的進度,提高會議的效率。 5、針對關鍵Use case在設計的架構上實現功能來驗證架構。 對於架構設計的驗證也是一項十分重要的工作,其驗證技術有很多種,在我們公司通常會採用Sample的形式,即XP中所說的迭代0,RUP中所說的切片。這樣做的好處是既可以從實際的產品角度出發來有效的驗證架構是否滿足要求,又可以比拋棄型原型驗證技術節省成本。 這個Sample絕不是我們在解決架構設計中的問題時拿來做實驗的一些代碼的拼湊,而是完整的實現某一關鍵Use case的符合架構設計和一系列規范的可交付的代碼及相關文檔。同時,這個Sample可以作為你在給大家講解或培訓架構時的教材,也可以作為開發人員使用此架構進行開發的藍本,甚至是只需要復制粘貼,加上簡單的修改即可。 6、交付給客戶Review。 這一環節,在很多公司可能並不存在,因為他們的軟體架構並不一定需要客戶Review,但像我們這種做服務的公司,最重要的就是客尊,落實到軟體架構設計這一活動,就是讓客戶理解並接受你的架構設計方案,同時,客戶也會起到幫你驗證架構的作用。通常,我們的架構得到客戶的認可後,便可進入大規模的開發。 在交付給客戶Review時,通常
『叄』 如何進行軟體需求分析
軟體需求分析免費下載
鏈接:https://pan..com/s/1qNBwqvbRS5ziBSIeanLQAQ
需求分析也稱為軟體需求分析、系統需求分析或需求分析工程等,是開發人員經過深入細致的調研和分析,准確理解用戶和項目的功能、性能、可靠性等具體要求,將用戶非形式的需求表述轉化為完整的需求定義,從而確定系統必須做什麼的過程。
『肆』 需求分析和系統設計應該採用什麼樣的方法更能體現系統本質
1 需求分析的任務與過程
需求分析所要做的工作是深入描述軟體的功能和性能,確定軟體設計的限制和軟體同其他系統元素的介面細節,定義軟體的其他有效性需求,細化軟體要處理的數據域。用一句話概括就是:需求分析主要是確定待開發軟體的功能、性能、數據、界面等要求。需求分析的實現步驟通常包括:獲取當前系統的物理模型,抽象出當前系統的邏輯模型,建立目標系統的邏輯模型三個部分。具體來說,需求分析階段的工作可以分成 4 個方面:
(1)問題識別:用於發現需求、描述需求,主要包括功能需求、性能需求、環境需求、可靠性需求、安全保密需求、用戶界面需求、資源使用需求、軟體成本消耗與開發進度需求,以此來預先估計以後系統可能達到的目標。
(2)分析與綜合:也就是對問題進行分析,然後在此基礎上整合出解決方案。這個步驟經常是反復進行的,常用的方法有面向數據流的結構化分析方法(Structured Analysis, SA),面向數據結構的 Jackson 方法,面向對象的分析方法(Object Oriented Analysis,OOA),以及用於建立動態模型的狀態遷移圖和 Petri 網。
(3)編制需求分析的文檔:也就是對已經確定的需求進行文檔化描述,該文檔通常稱為「需求規格說明書」。
(4)需求分析與評審:它是需求分析工作的最後一步,主要是對功能的正確性、完整性和清晰性,以及其他需求給予評價。
『伍』 軟體需求的分析方法
軟體需求分析方法大體分為如下四類:結構化方法、面向對象方法、面向控制方法和面向數據方法。限於篇幅,將主要從結構化方法和面向對象方法以及RUP三個方面進行簡要的探討。 面向對象(Object Oriented, OO)的方法把分析建立在系統對象以及對象間交互的基礎之上,使得我們能以3個最基本的方法框架——對象及其屬性、分類結構和集合結構來定義和溝通需求。面向對象的問題分析模型從3個側面進行描述,即對象模型(對象的靜態結構)、動態模型(對象相互作用的順序)和功能模型(數據變換及功能依存關系)。需求工程的抽象原則、層次原則和分割原則同樣適用於面向對象方法,即對象抽象與功能抽象原則是一樣的,也是從高級到低級、從邏輯到物理,逐級細分.每一級抽象都重復對象建模(對象識別)一動態建模(事件識別)一功能建模(操作識別)的過程,直到每一個對象實例在物理(程序編碼)上全部實現為止。
面向對象需求分析(OORA)利用一些基本概念來建立相應模型,以表達目標系統的不同側面。盡管不同的方法所採用的具體模型不盡相同,但都無外乎用如下五個基本模型來描述軟體需求:
整體—部分模型:該模型描述對象(類)是如何由簡單的對象(類)構成的。將一個復雜對象(類)描述成一個由交互作用的若干對象(類)構成的結構的能力是OO途徑的突出優點。該模型亦稱聚合模型。
分類模型:分類模型描述類之間的繼承關系。與聚合關系不同,它說明的是一個類可以繼承另一個或另一些類的成分,以實現類中成分的復用。
類—對象模型:分析過程必須描述屬於每個類的對象所具有的行為,這種行為描述的詳細程度可以根據具體情況而定。既可以只說明行為的輸入、輸出和功能,也可以採用比較形式的途徑來精確地描述其輸入、輸出及其相應的類型甚至使用偽碼或小說明的形式來詳細刻畫。
對象交互模型:一個面向對象的系統模型必須描述其中對象的交互方法。如前所述,對象交互是通過消息傳遞來實現的。事實人對象交互也可看作是對象行為之間的引用關系。因此,對象交互模型就要刻畫對象之間的消息流。對應於不同的詳細程度,有不同的消息流描述分析,分析人員應根據具體館況而選擇。一般地,一個詳細的對象交互模型能夠說明對象之間的消息及其流向,並且同時說明該消息將激活的對象及行為。一個不太詳細的對象交互模型可以只說明對象之間有消息,並指明其流向即可。還有一種狀況就是介於此兩者之間。
狀態模型:在狀態模型中,把一個對象看作是一個有限狀態機,由一個狀態到另一狀態的轉變稱作狀態轉換。狀態模型將對象的行為描述成其不同狀態之間的通路。它也可以刻畫動態系統中對象的創建和廢除,並稱由對象的創建到對象的廢除狀態之間的退路為對象的生存期。
狀態模型既可以用狀態轉換因的圖形化手段,又可用決策表或稱決策矩陣的形式來表。 RUP(Rational Unified Process)是Rational公司開發和維護的過程產品。RUP是工程化的軟體開發過程,它提供了在開發機構中分派任務和責任的紀律化方法。RUP不僅僅是一個簡單的過程,而是一個通用的過程框架,可用於各種不同類型的軟體系統、各種不同的應用領域、各種不同類型的組織、各種不同的功能級別以及各種不同的項目規模。RUP的突出特點可以由以下三個關鍵詞來體現——用例驅動、以構架為中心、迭代和增量的。這些是RUP所特有的,也是同等重要的。構架提供了一種結構來指導迭代過程中的工作,而用例則確定了目標井驅動每次迭代的工作。
進行需求分析的基礎是要獲得用戶的需要,為了完成這一工作,必須建立業務模型,通過描述業務規則、業務邏輯,明確業務過程並對其進行規范、優化。對於一個系統,在建立業務模型時,應從3個方面來描述其特性:功能、行為、數據,對應於這些特性。 基於上述分析可知,結構化分析方法與面向對象分析方法的區別主要體現在兩個方面:
* 將系統分解成於系統的方式不同。前者將系統描述成一組交互作用的處理,後者則描述成一組交互作用的對象。
* 子系統之間的交互關系的描述方式不一樣。前者加工之間的交互是通過不太精確的數據流來表示的,而後者對象之間通過消息傳遞交互關系。
因此,面向對象軟體需求分析的結果能更好地刻畫現實世界,處理復雜問題,對象比過程更具有穩定性,便於維護與復用。
『陸』 需求分析有哪三種方法2,什麼是面向數據結構方法
它首先用結構化分析(SA)對軟體進行需求分析,然後用結構化設計(SD)方法進行總體設計,最後是結構化編程(SP)。它給出了兩類典型的軟體結構(變換型和事務型)使軟體開發的成功率大大提高。
三種基本的結構形式就是順序、選擇和重復。三種數據結構可以進行組合,形成復雜的結構體系。這一方法從目標系統的輸入、輸出數據結構入手,導出程序框架結構,再補充其它細節,就可得到完整的程序結構圖。這一方法對輸入、輸出數據結構明確的中小型系統特別有效,如商業應用中的文件表格處理。該方法也可與其它方法結合,用於模塊的詳細設計。