天津做網(wǎng)站要多少錢/百度seo流量
1.4 軟件工程
定義:將系統(tǒng)的、規(guī)范的、可度量的工程化方法應(yīng)用于軟件開發(fā)、運行和維護的全過程即上述方法的研究
軟件工程由方法、工具和過程三個部分組成
1.4.1 需求分析
軟件需求是指用戶對新系統(tǒng)在功能、行為、性能、設(shè)計約束等方面的期望。
需求層次
- 業(yè)務(wù)需求:是反映企業(yè)或客戶對系統(tǒng)
高層次
的目標要求,通常來自項目投資人、購買產(chǎn)品的客戶、客戶單位的管理人員、市場營銷部門或產(chǎn)品策劃部門 - 用戶需求:描述的是用戶的具體目標,或用戶要求系統(tǒng)必須完成的任務(wù)
- 系統(tǒng)需求:從系統(tǒng)的角度來說明軟件的需求,包括功能需求、非功能需求和設(shè)計約束
質(zhì)量功能部署
質(zhì)量功能部署:QFD-Quality Function Deployment,是一種將用戶需求轉(zhuǎn)化成軟件需求的技術(shù),其目的是最大限度的提升軟件工程過程中用戶的滿意度
- 常規(guī)需求:用戶認為系統(tǒng)應(yīng)該做到的功能或性能
- 期望需求:用戶想當然認為系統(tǒng)應(yīng)具備的功能或性能,但不能正確描述自己想要得到這些功能或性能需求,如果期望需求沒有得到實現(xiàn),用戶會感到不滿意
- 意外需求:也稱為興奮需求,使用戶要求范圍外的功能或性能
需求獲取
需求獲取是一個確定或理解不同的項目干系人的需求和約束的過程。
常見的需求獲取方法:用戶訪談、問卷調(diào)查、采樣、情節(jié)串聯(lián)版、聯(lián)合需求計劃
信息系統(tǒng)項目需求獲取的方法:問卷調(diào)查、會議討論、界面原型、可運行原型系統(tǒng)
需求分析
需求分析人員需要把雜亂無章的用戶要求和期望轉(zhuǎn)化為用戶需求、這就是需求分析工作。
一個好的需求應(yīng)該具有:無二義性、完整性、一致性、可測試性、確定性、可跟蹤性、正確性、必要性。
需求分析的方法:
- 結(jié)構(gòu)化分析方法:
- 數(shù)據(jù)模型:實體聯(lián)系圖、ER圖
- 功能模型:數(shù)據(jù)流圖、DFD–Data Flow Diagram
- 行為模型:狀態(tài)轉(zhuǎn)化圖、STD–State Transform Diagram
- 面向?qū)ο蠓治龇椒?#xff1a;OOA
- 使用用例模型方法來描述系統(tǒng)需求
- 使用分析模型描述系統(tǒng)的基本邏輯結(jié)構(gòu),展示對象和類如何組成系統(tǒng)(靜態(tài)模型),以及他們?nèi)绾伪3滞ㄐ?#xff0c;實現(xiàn)系統(tǒng)行為(動態(tài)模型)
需求軟件規(guī)格說明書
需求軟件規(guī)格說明書:Software Requirement Specification SRS,是需求開發(fā)活動的產(chǎn)物,編制目的是是項目干系人與開發(fā)團隊對系統(tǒng)的初始規(guī)定有一個共同的理解,使其成為整個開發(fā)工作的基礎(chǔ)。
- 范圍
- 引用文件
- 需求(SRS主體部分)
- 合格性規(guī)定
- 需求可追蹤性
- 尚未解決的問題
- 注解
- 附錄
需求驗證
需求驗證也成需求確認,主要確認下面幾個內(nèi)容:
- SRS正確的描述了預(yù)期的、滿足干系人需求的系統(tǒng)行為和特征
- SRS中的軟件需求是從系統(tǒng)需求、業(yè)務(wù)規(guī)格和其他來源中正確推導(dǎo)而來的
- 需求是完整的和高質(zhì)量的
- 需求的表示在所有的地方都是一致的
- 需求為繼續(xù)進行系統(tǒng)設(shè)計、實現(xiàn)和測試提供了足夠基礎(chǔ)
- 通過需求評審和需求測試工作來對需求進行驗證
對象 = 屬性+方法
UML
UML:Unified Modeling Language,統(tǒng)一建模語言,支持從需求分析開始的軟件開發(fā)的全過程。是一個支持模型化和軟件系統(tǒng)開發(fā)的圖形化語言、為軟件開發(fā)的所有階段提供模型化和可視化支持
,包括由需求分析到規(guī)格,到構(gòu)造和配置。
組成UML的3個要素
基本構(gòu)造塊(事物、關(guān)系和圖)
- 規(guī)則(支配這些構(gòu)造塊如何放置在一起)
- 機制(運用于整個語言的機制)
事物:也成建模元素
- 結(jié)構(gòu)事物:是靜態(tài)部分,類、接口、協(xié)作、用例、活動類、構(gòu)件和節(jié)點
- 行為事物:是動態(tài)部分,代表時間和空間上的動作,一種是交互,另一種是狀態(tài)機
- 分組事物:是組織部分,UML只有一種分組事物,稱為包
- 注釋事物:UML解釋部分
關(guān)系:UML用關(guān)系把事物結(jié)合在一起
- 依賴:兩個事物之間的語義關(guān)系,其中一個事物發(fā)生變化會影響另一個事物的語義
- 關(guān)聯(lián):描述一組對象之間連接的結(jié)構(gòu)關(guān)系
- 泛化:一般化和特殊化的關(guān)系,描述特殊元素的對象可替換一般元素的額對象
- 實現(xiàn):類之間的語義關(guān)系,其中的一個類指定了有另一個類保證執(zhí)行的契約
圖:
-
類圖:實體類的
靜態(tài)
關(guān)系,是軟件的藍圖,詳細描述了系統(tǒng)內(nèi)各個對象的相關(guān)的類,以及這些類之間的靜態(tài)關(guān)系
-
對象圖:表示某一時刻類的對象靜態(tài)結(jié)構(gòu)和行為
-
構(gòu)件圖:描述類的實現(xiàn)環(huán)境
-
用例圖:用戶觀察到系統(tǒng)功能的模型圖,列出了系統(tǒng)中的用例和參與者。顯示哪個參與者參與了哪個用例的執(zhí)行。用于業(yè)務(wù)建模、需求獲取、定義。靜態(tài)
-
順序圖:用于顯示對象間的交互活動,關(guān)注對象之間消息傳送的時間順序。
-
狀態(tài)圖:利用狀態(tài)和事件描述對象本身的行為。動態(tài)
-
活動圖:通過動態(tài)來組織,主要用于描述某一方法、機制或用例的內(nèi)部行為
-
部署圖:描述系統(tǒng)所需的硬件構(gòu)件的物理部署。
UML 視圖:就是對上面圖的分類 -
用例視圖:最基本的需求分析模型,如用例視圖
-
邏輯視圖:也稱為設(shè)計視圖,如類圖、對象圖以及包圖
-
進程視圖:可執(zhí)行線程和進程作為活動類的建模,他是邏輯視圖的一次執(zhí)行實例,描述了并發(fā)與同步結(jié)構(gòu),如狀態(tài)圖、活動圖、時序圖等
-
實現(xiàn)視圖:對組成基于系統(tǒng)的物理代碼的文件和構(gòu)件進行建模,如構(gòu)件圖
-
部署視圖:把構(gòu)件部署到一組物理節(jié)點上,表示軟件到硬件的映射和分布結(jié)構(gòu),如部署圖
面向?qū)ο蠓治?/h4>
1.4.2 軟件架構(gòu)設(shè)計
軟件架構(gòu)設(shè)計核心問題:是能否達到架構(gòu)級的軟件復(fù)用,能否在不同的系統(tǒng)中,使用同一個軟件架構(gòu)。
解決好軟件的復(fù)用、質(zhì)量和維護問題,是研究軟件架構(gòu)的根本目的。
軟件復(fù)用有利于節(jié)省工期、減少成本、保持質(zhì)量
軟件架構(gòu)的風(fēng)格
-
數(shù)據(jù)流風(fēng)格:包括批處理序列和管道/過濾器風(fēng)格
-
調(diào)用/返回風(fēng)格:包括主程序/子程序、數(shù)據(jù)抽象和面向?qū)ο?#xff0c;以及層次結(jié)構(gòu)
-
獨立架構(gòu)風(fēng)格:包括進程通信和事件驅(qū)動系統(tǒng)
基于事件驅(qū)動的系統(tǒng),有點類似設(shè)計模型的觀察者模式,由構(gòu)件公布或者廣播一些事件,其他構(gòu)件對此事件進行注冊。當這個事件被觸發(fā)時,立即通知這個事件上注冊的過程
-
虛擬機風(fēng)格:包括解釋器和基于規(guī)則的系統(tǒng)
具有解釋器風(fēng)格的軟件中含有一個虛擬機,可以仿真硬件的執(zhí)行過程和一些關(guān)鍵的應(yīng)用,解釋器通常被用來建立一種虛擬機一彌補語義上的差異
-
倉庫風(fēng)格:包括數(shù)據(jù)庫系統(tǒng)、黑板系統(tǒng)和超文本系統(tǒng)
軟件架構(gòu)評估
敏感點:一個或者多個構(gòu)件的額特性
權(quán)衡點:是影響多個質(zhì)量屬性的特性,是多個質(zhì)量屬性敏感點
- 基于調(diào)查問卷方式
- 基于場景方式
- 基于度量方式
1.4.3 軟件設(shè)計
軟件設(shè)計是需求分析的延伸和拓展
需求分析階段:解決“做什么”的問題
軟件設(shè)計階段:解決“怎么做”的問題
- 結(jié)構(gòu)化設(shè)計SD:
- 自頂向下、逐步求精
- 模塊化、相對獨立
- 高內(nèi)聚、低耦合
- 面向?qū)ο蟮脑O(shè)計OOD
- 抽象、封裝和可擴展
- 遵循OOD設(shè)計原則
- 設(shè)計模式
- 包含模式名稱、問題、目的、解決方案、效果、實例代碼等
1.4.4 軟件工程的過程管理
CMMI:Capability Maturity Model Integration是指能力成熟度模型集成
CMMI是一種為組織有效性提供基本要素的過程改進方法,它的目的是幫助軟件企業(yè)對軟件工程進行管理和改進,增強開發(fā)與改進能力從而能按時、不超預(yù)算的開發(fā)出高質(zhì)量的軟件。
CMMI過程域可分為4類:項目管理、過程管理、工程和支持四個級別
CMMI有階段式和連續(xù)式兩種表現(xiàn)方式:
- 使用階段式表示法使你能達到“成熟度級別”,階段式表示法用于模型整體
- 使用連續(xù)式表示法使你能達成“能力級別”。連續(xù)式表示用于單個過程域
過程域的階段式分組
連續(xù)式分組
1.4.5 軟件測試及管理
測試是在軟件交付給客戶之前所必須完成的重要步驟。
1.4.5.1 測試方法
- 靜態(tài)測試:采用人工檢測和計算機輔助靜態(tài)分析的手段對程序進行檢測。
- 動態(tài)測試:在計算機上實際運行程序進行軟件測試。白盒測試與黑盒測試
1.4.5.2 測試類型
- 單元測試:模塊測試
- 集成測試:模塊之間接口聯(lián)調(diào)
- 確認測試:驗證軟件功能、性能和其它特性是否與用戶需求一致
- 系統(tǒng)測試:對象是完整的、集成的計算機系統(tǒng)。黑盒測試,真實環(huán)境下驗證
- 配置測試:軟件配置
- 回歸測試:軟件變更之后
1.4.5.3 面向?qū)ο鬁y試
- 封裝性:考慮信息隱蔽對測試的影響
- 繼承性:考慮繼承對充分性的影響
- 多態(tài)性:考慮動態(tài)綁定對測試充分性影響
1.4.5.4 軟件調(diào)試
測試與調(diào)試的區(qū)別
- 測試的目的是找出錯誤,調(diào)試的目的是定位錯誤并修正錯誤
- 調(diào)試是測試之后的活動,測試和調(diào)試在目標、方法和思路上都有所不同
- 測試從一個已知的條件開始,使用預(yù)先定義的過程,由預(yù)知的結(jié)果;調(diào)試從一個未知的條件開始,結(jié)束的過程不可預(yù)計
- 測試過程事先設(shè)計,進度可以事先確定;調(diào)試不能描述過程或持續(xù)時間
1.4.5.5 軟件測試管理
- 過程管理
- 配置管理
- 評審工作
- 測試就緒評審
- 測試評審
1.4.5.6 軟件集成技術(shù)
企業(yè)應(yīng)用集成:Enterprise Application Integration EAI,企業(yè)應(yīng)用集成可以消除信息孤島,將多個企業(yè)信息系統(tǒng)連接起來,實現(xiàn)無縫集成,使之像一個整體一樣。EAI所連接的應(yīng)用包括各種電子商務(wù)系統(tǒng)、ERP、CRM、SCM、OA、數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)倉庫。
-
表示集成
也稱頁面集成,是把原有零散的系統(tǒng)頁面集中在一個新的頁面中;為用戶提供看上去統(tǒng)一,但是有多個系統(tǒng)組成的應(yīng)用系統(tǒng);當只有可能在顯示界面上實現(xiàn)集成時。
-
數(shù)據(jù)集成
- 通過不同的中間件工具完成數(shù)據(jù)集成
- 數(shù)據(jù)集成比表示集成更加靈活,但是當業(yè)務(wù)邏輯發(fā)生變化時,數(shù)據(jù)集成就會面臨困難
-
控制集成
也稱功能集成和應(yīng)用集成- 在業(yè)務(wù)邏輯層上對應(yīng)用系統(tǒng)進行集成
- 借助于遠程過程或方法調(diào)用、面向消息的中間件、分布式對象技術(shù)和事物處理監(jiān)控器來實現(xiàn)
- 與數(shù)據(jù)集成和表示集成相比,靈活性更高
- 當被集成業(yè)務(wù)系統(tǒng)沒有提供API時,集成難度會增加
-
業(yè)務(wù)集成
也稱過程集成
業(yè)務(wù)流程集成超越了數(shù)據(jù)和系統(tǒng),有一些列基于標準、統(tǒng)一數(shù)據(jù)格式的工作流完成 -
企業(yè)之間集成
EAI技術(shù)使用用大多數(shù)電子商務(wù)企業(yè),完成企業(yè)之間的應(yīng)用集成。目的是實現(xiàn)信息共享,是企業(yè)充分利用外部資源。