天天看點

2013年軟體設計師考試知識結構(四)第四章 系統開發和運作知識

第四章 系統開發和運作知識

軟體工程基礎知識

軟體工程師指應用計算機科學、數學及管理科學等原理,以工程化的原則和方法來解決軟體問題的工程,其目的是提高軟體生産效率、提高軟體品質、降低軟體成本.

軟體工程概述

軟體的生存周期:

         可行性分析與項目開發計劃:确定軟體的開發目标及其可行性.要進行問題定義、可行性分析、定制項目開發計劃;參與人員有使用者、項目負責人和系統分析師;産生的文檔有可行性分析報告和項目開發計劃

         需求分析:确定軟體系統的功能、性能、資料和界面等要求,進而确定系統的邏輯模型;參與人員有使用者、項目負責人和系統分析師;産生的文檔有軟體需求說明書.

         概要設計:開發人員要把确定的各項功能需求轉換成需要的系統結構.概要設計就是設計軟體的機構、明确軟體由那些子產品組成,這些子產品的層次是怎樣的,這些子產品的調用關系是怎樣的,每個子產品的功能是什麼.同時還要設計系統的總體資料結構和資料庫結構.參與人員有系統分析師和軟體設計師.産生的文檔有概要設計說明書

         詳細設計:針對每個子產品完成的功能進行具體的描述,要把功能描述轉變為精确的、結構化的過程描述.參與的人員有軟體設計師和程式員,産生的文檔有詳細設計文檔.

         編碼:

         測試:

         維護:

軟體生存周期模型:是描述軟體開發過程中各種活動如何執行的模型.

         瀑布模型(waterfall model):是将軟體周期各個活動規定為依線性順序連接配接的若幹階段的模型.它是以文檔為驅動、适合于軟體需求很明确的軟體項目的模型,但缺乏靈活性,無法解決軟體需求不明确或不确定的問題.

         演化模型(evolutionary model ):它可以在擷取一組基本需求後,通過快速分析結構構造出該軟體的一個初始可運作版本,這個初始的軟體通常稱為原型(Prototype),然後根據使用者在使用原型過程中提出的意見和建議對原型進行改進,擷取原型的新版本.其特别适用于對軟體需求缺乏準确認識的情況.

        螺旋模型(spiral model):對于複雜大型軟體.螺旋模型将開發過程分為幾個螺旋周期,每個螺旋周期大緻和瀑布模型相符合.每個螺旋周期分為,指定計劃、風險分析、實施工程、使用者評估(提出修改意見,建立下一個周期的開發計劃).

         噴泉模型(water fountain model):是一種以使用者需求為動力,以對象作為驅動的模型,适合使用者面向對象的開發方法.開發過程具有疊代性和無間性,其允許各開發活動交叉、疊代進行.

軟體開發的方法:

         結構化方法:是一種面向資料流的開發方法.其指導思想是自頂向下、逐層分解,它的基本原則是功能的分解和抽象.其特别适合用于資料處理領域的問題,但不适合解決大規模的、特别複雜的項目,且難以适應需求的變化.

         Jackson方法:是一種面向資料結構的開發方法.其首先描述問題的輸入、輸出資料結構,分析器對應性,然後推出相應的程式結構,進而給出問題的軟體過程的描述.

         原型方法:開發原型系統首先确定使用者需求,開發初始原型,然後征求使用者對初始原型的改進意見,并根據已将修改原型.其比較适合于使用者需求不清、需求經常變化的情況,且系統規模不是很大的情況.

         面向對象方法:其基本的觸發點是盡可能按照人類認識世界的方法和思維方式來分析和解決問題.統一模組化語言(Unified ModelingLanguage UML)是面向對象的标準模組化語言.

軟體需求分析

任務:确定待開發軟體的功能、性能、資料和界面的要求

         确定軟體系統的綜合要求:界面/功能/性能/安全、保密、可靠性/系統運作/異常處理等的要求

         分析軟體系統的資料要求:基本資料元素、元素間的邏輯關系、資料量和峰值等.

         導出系統的邏輯模型;

         修正項目開發計劃;

         還可開發一個原型系統.

分類:功能需求/非功能需求/設計限制

軟體項目管理

其管理的對象是軟體項目,包括對軟體項目的工作範圍、可能遇到的風險、需要的資源(人/軟硬體等)、要實作的任務、經曆的裡程碑、花費的工作量以及進度的安排等.

成本估算方法:

         自頂向下估算法:其對系統級工作重視,估算工作量小、速度快,但忽略了低級别上的技術性問題,而這些問題将會是成本上升.

         自底向上估算法:其優缺點剛好與自頂向下的優缺點對調,估算出的成本也是偏少.

         差别估算法:是通過參照已經完成過的類似項目,并考慮待開發項目的差别造成的成本,這種方法估算出的成本比較準确,但差别不容易确定和估計成本.

此外還有專家估算法/類推法和算式估算法.

成本估算模型:有Putnam模型和COCOMO模型.其中Putnam模型是一種動态多變量模型.結構性成本估算模型COCOMO是最精确、最易于使用的估算模型之一,包括基本/中級和詳細COCOMO模型.

風險分析:風險識别,風險預測,風險評估,風險控制(風險避免/控制和管理及意外事件計劃).

進度管理:進度安排的常用圖形描述方法有Gantt圖(甘特圖)和項目計劃評審技術(Program Evaluation & Review Technique ,PERT)圖.

         Gantt圖,能清晰地描述每個任務開始時間和結束時間,進展情況及任務間的并行性,但不能反映出任務間的依賴關系,難以去頂整個項目的關鍵所在,也不能反映計劃中的潛力部分.

         PERT圖,可以給出每個任務的開始、結束時間和完成該任務所需的時間,還給出了任務之間的關系,但不能反映出任務間的并行關系.

軟體配置管理

軟體工具與軟體開發環境

軟體過程管理

軟體能力成熟度模型:是對軟體組織進化階段的描述,随着軟體組織定義、實施、測量、控制盒改進其軟體過程,軟體組織的能力進過這些階段逐漸前進.

軟體過程能力成熟度模型将軟體過程能力劃分為5個等級:初始階段/可重複階段/已定義階段/已管理階段/優化階段.

能力成熟度內建模型(CapacityMaturity Model Integrated,CMMI):其有兩種表述方式,一種是連續表述,主要關注某特定域的過程改進和能力評估;另一種是階段式,主要衡量一個企業的成熟度,而不把單個過程是否完成作為重點.

         基于連續表述方式的CMMI有5個成熟度等級:初始級/已管理級/已定義級/量化管理級和優化級;

         基于階段式表述方式的CMMI有6個成熟度等級:未完整級/已執行級/已管理級/已定義級/量化管理級和優化級

統一過程(UP):統一過程模型是一種”用例和風險驅動,以架構為中心,疊代并且增量”的開發過程.其定義了4個技術階段及其制品:

         初始階段(Inception phase):專注于項目的初創活動.

         精化階段(elaboration phase):了解了最初的領域範圍後,進行需求分析和機構演進.

         建構階段(construction phase):關注系統結構,産生實作模型.

         移交階段(transition phase):關注軟體送出方面的工作,産生如見增量.

每個疊代中又5個核心工作流:捕獲系統應該做什麼的需求工作流,精化和結構化需求的分析工作流,在系統架構内實作需求的設計工作流,建構軟體的實作工作流,驗證實作是否如期望那樣工作的測試工作流.

         4個工作階段的裡程碑:

                   初始階段-----生命周期目标

                   精化階段-----生命周期架構

                   建構階段-----初始運作功能

                   移交階段-----産品釋出.

統一過程的典型代表是RUP(RationalUnified Process).RUP是up的商業擴充.

靈活方法:其總體的目标是通過”盡可能早地、持續地對又價值的軟體的傳遞”使客戶滿意.通過在軟體開發過程中加入靈活性,靈活方法可以使使用者能夠在開發周期後期增加或改變需求.其方法有:

         極限程式設計(XP):它由價值觀、原則、實踐和行為4個部分組成.

                   4大價值觀:溝通、簡單性、回報和勇氣

                   5個原則:快速回報、簡單性假設、逐漸修改、提倡更改和優質工作.

                   12個最佳實踐:快速遊戲、小型釋出、隐喻(找到适合的比喻傳達資訊)、簡單設計、測試先行、重構、結隊程式設計、集體代碼所有制、持續內建、每周工作40個小時、現場客戶和編碼标準.

         另外還有水晶法(Crystal)/并列争求法(Scrum)/自适應軟體開發(ASD).

軟體品質管理與品質保證

軟體品質反映軟體系統或軟體産品滿足規定或隐含需求的能力的特征和特性全體.

軟體品質特性:使用ISO/IEC 9126軟體品質模型和Mc Call軟體品質模型等來描述

         ISO/IEC9126軟體品質模型:其由品質特性、品質子特性和度量名額三層組成.

                   功能性:适應性、準确性、互用性、依從性(依從标準、規約、法規等)、安全性;

                   可靠性:成熟性(失效的頻度)、容錯性、易恢複性;

                   易使用性:易了解性、易學性、易操作性;

                   效率:時間特性和資源特性;

                   可維護性:易分析性(判錯/判待修改)、易改變性、穩定性(修改風險)、易測試性;

                   可移植性:适應性、易安裝性、一緻性(與規約/标準一緻)、易替換性;

         McCall軟體品質模型:其從軟體産品的運作、修正和轉移三個方面确定了11個品質特性,其由品質特性、評價準則和度量名額三層組成.

軟體品質保證:其包括滿足需求、遵循規定标準的開發準則和滿足隐含需求

軟體複雜性:其參數有規模、難度、結構和智能度;其衡量程式複雜性的方法主要有代碼行度量法和McCabe度量法(環路度量,V(G)=m-n-2p);

軟體評審:包括評審設計品質(是否符合使用者需求、可靠性、保密性、操作性、性能、可維護性、可測試性和複用性等)和程式品質(功能結構、功能通用性、子產品層次、子產品結構和處理過程的結構);另外還有與運作環境的接口,包括硬體的接口和使用者的接口.

軟體容錯技術:包括避開錯誤和容錯技術等.容錯的一般方法有結構備援、資訊備援、時間備援和備援附加技術.

系統分析基礎知識

系統分析概述

系統分析的主要任務是對現行系統進一步詳細調查,将調查中所得到的文檔資料集中,對組織内部整體管理狀況和資訊處理過程進行分析,為系統開發提供所需資料,并送出系統方案說明書.系統分析側重于從業務全過程的角度進行分析,主要内容有業務和資料的流程是否通暢,是否合理;資料、業務過程群組織管理之間的關系;原系統管理模式改革和新系統管理方法的實作是否具有可行性.确定的分析結果包括開發者對于現有組織管理狀況的了解,使用者對資訊系統功能的需求,資料和業務流程,管理功能和管理資料名額體系以及新系統拟改動和新增的管理模型等.最後,提出資訊系統的各種設想和方案,并對所有的設想和方案進行分析、研究、比較、判斷和選擇,獲得一個最優的新系統的邏輯模型,并在使用者了解計算機的工作流程和處理方式的情況下,将它明确地表達成書面資料(系統分析報告,即系統方案說明書).主要步驟有獲得目前系統的實體模型,再經抽象得到現有系統的邏輯模型,再經分析優化出目标系統的邏輯模型,最後建立出目标系統的實體模型.

結構化分析方法

結構化分析(StructuredAnalysis ,SA)方法是一種面向資料流的需求分析方法,适用于分析大型資料處理系統,其基本思想是自頂向下逐層分解;其分析結果由一套分層的資料流圖、一本資料詞典、一組小說明和補充材料組成.

         資料流圖(Data Flow Diagram,DFD):畫資料流圖需要注意以下問題:

                   适當的為資料流、加工、資料存儲和外部實體命名,且名稱有實際含義;

                   畫資料流而不要畫控制流;

                   每條資料流的輸入或輸出是加工;

                   一個加工的輸出資料流不應與資料流同名,即使它們的組成分成相同;

                   允許一個加工有多條資料流流向另外一個加工,也允許一個加工有兩個相同的輸出資料流流向兩個不同的加工;

                   保持父子圖平衡;

                   保持資料守恒;

                   每個加工必須既有輸入資料流,又有輸出資料流;

                   在整套資料流圖中,每個資料存儲必須既有讀的資料流,又有寫的資料流,但在某張子圖中可能隻有讀沒有寫或反之;

         資料字典(DD):資料流、資料項、資料存儲和基本加工

         加工邏輯的描述:結構化語言、判定表和判定樹.

系統分析報告

系統分析報告中,資料流圖、資料字典和加工說明是必不可少的組成部分;系統分析報告必須簡明扼要、抓住本質,反映出目标系統的全貌和開發人員的設想;其作用有作為開發人員進行系統設計和實施的基礎,作為使用者和開發人員之間的協定或合同,作為目标系統驗收和評價的依據;其主要内容有組織情況概述,現行系統概述,系統邏輯模型,新系統在各個業務處理環節拟采用的管理方法、算法或模型,與新系統配套的管理制度和運作體制的建立,系統設計與實施的初步計劃,使用者上司審批意見.

系統設計基礎知識

系統設計的内容和步驟

在系統分析階段,已經搞清楚了軟體”做什麼”的問題,進入設計階段,要把軟體”做什麼”轉換成”怎麼做”的實體模型.

其主要目的是為系統控制制定藍圖,其内容包括新系統的總體結構設計、代碼設計、輸出設計、輸入設計、處理過程設計、資料存儲設計、使用者界面設計和安全控制設計等.

其設計的基本任務大體上可以分為概要設計和詳細設計.

         概要設計的基本任務:設計軟體系統的總體結構、設計軟體系統的資料結構及資料庫、編寫概要設計文檔和評審;

         詳細設計的基本任務:對每個子產品進行詳細的算法設計、對子產品内的資料結構設計、對資料庫進行實體設計、其他設計(代碼設計、輸入輸出格式設計、使用者界面設計)、編寫詳細設計說明書和評審;

系統設計的基本原理

抽象、子產品化(目的是使程式的結構清晰,容易閱讀、了解、測試和修改)、資訊隐蔽(提高軟體的可修改性、可測試性和可移植性)、子產品獨立(耦合性和内聚性)

         耦合性:子產品間聯系的緊密度,五直接耦合、資料耦合、标記耦合、控制耦合、公共耦合、内容耦合;

         内聚性:子產品内部各元素間聯系的緊密度,偶然内聚、邏輯内聚、時間内聚、順序内聚和功能内聚.

系統總體結構設計

是根據系統分析的要求群組織的實際情況來對新系統的總體結構形式和可利用的資源進行大緻設計,這是一種宏觀、總體上的設計和規則.

         設計原則:分解—協調原則、自頂向下的原則、資訊隐蔽和抽象的原則、一緻性原則(與标準一緻)、明确性原則、高内聚地耦合原則、子產品的扇入和扇出系數要合理,子產品的規模适當.

         劃分子系統的原則:子系統要具有相對獨立性、子系統間資料的依賴性盡量小、資料備援小、考慮今後管理發展的需要、便于系統分階段實作、使各類資源充分利用;

         系統子產品設計:子產品是組成系統的基本機關,它的特點是可以組合、分解和更換;其應具備輸入和輸出、處理功能、内部資料和程式代碼四個要素;子產品結構設計應盡量高内聚低耦合、子產品間隻能存在上下調用關系,而不能有同級之間的橫向聯系、整個系統應該呈樹狀結構,而非網狀結構或交叉調用.

         資料存儲設計:資料結構組織和資料庫或檔案設計,就是要根據資料的不同用途、使用要求、統計管道和安全保密性等,來決定資料的整體組織形式、表或檔案的形式,以及決定資料的結構、類别、載體、組織方式、保密級别等一系列的問題.

結構化設計方法

結構化設計(Structured Design,SD)方法是一種面向資料流的設計方法,它可以與SA方法銜接;其基本思想是将系統設計成由相對獨立、功能單一的子產品組成的結構.

DFD的資訊流分為交換流(輸入到加工再到輸出)和事務流(各活動流以事務中心為起點呈輻射狀流出.)

變換分析:确定輸入流和輸出流,分離出交換中心;第一級分解;第二級分解;事務分析;

SD方法的設計步驟:複查并精化資料流圖;确定DFD的資訊流類型;分别實施交換分析或事務分析;優化程式結構圖.

面向資料結構的設計方法

面向資料結構的設計方法以資料結構作為設計的基礎,它根據輸入輸出資料結構導出程式的結構,适用于規模不大的資料處理系統.Jackson方法是一種典型的面向資料結構的設計方法.

系統詳細設計

輸出設計:确定輸出内容;選擇輸出裝置與媒體;确定輸出格式.

輸入設計:應遵循最小量原則、簡單性原則、早檢驗原則和少轉換原則;輸入設計的内容有确定輸入資料内容、輸入方式設計、輸入格式設計和校對方式設計.

處理過程設計:要确定每個子產品的内部特征,包括資料組織、控制流、每一步的具體加工要求及種種實施細節.其關鍵是用一種合适的表達方式來描述每個子產品的執行過程,

         流程圖:直覺、形象、容易了解,但隻能描述執行過程而不能描述有關資料.

         盒圖(NS圖):每個處理步驟用一個盒子表示,盒子可以嵌套,盒子隻能從上頭進入,從下頭走出.

         形式語言:其外層文法是确定的,而内層文法不确定.

         決策樹/決策表:适合于描述加工中具有多個政策且每個政策和若幹條件有關的邏輯功能.

使用者界面設計:菜單方式、會話管理方式、提示方式與權限管理.

安全控制設計:影響系統安全的因素有環境因素和資料處理因素等.

系統實施知識

系統實施概述

系統實施是軟體開發工作的最後一個階段.所謂實施,指的是将系統設計階段的結果在計算機上實作,将原來紙面上的、類似于設計圖式的新系統轉換成可執行的應用軟體系統.其主要任務有按總體設計方案購置和安裝計算機網絡系統;軟體準備;教育訓練;資料準備;投入轉換和試運作;其步驟有購置和安裝計算機網絡、建立資料庫系統、程式設計、收集有關資料并錄入後進行系統測試、人員教育訓練、系統轉換盒試運作.

程式設計

程式設計的方法大多按照結構化方法、原型方法和面向對象的方法進行.其目的是為了實作開發者在系統分析和系統設計中提出的管理方法和處理構想.

程式設計基本子產品:控制子產品、輸入子產品、輸入資料校驗子產品、輸出子產品和處理子產品.

系統測試與調試

系統測試時為了發現錯誤而執行程式的過程,成功的測試時發現了至今尚未發現的錯誤的測試.測試的目的就是希望以最少的人力和時間發現潛在的各種錯誤和缺陷.在進行資訊系統測試時應遵循以下基本原則:盡早并不斷地進行測試;避免由原開發軟體的人或小組測試;測試方案的設計需要涉及輸入的資料和預期的結果;測試用例的設計需要同時包含正确的輸入和無效的輸入;在測試程式時,需要檢驗程式是否做了該做的事,還需要檢測程式是否做了不該做的事;按照測試計劃來進行;妥善儲存測試計劃和測試用例;測試例子都是精心設計出來的,可以為重新測試或追加測試提供友善.

一個規範化的測試過程通常包括:指定測試計劃、編制測試大綱、根據測試大綱設計和生成測試用例并産生測試設計說明文檔、實施測試、生成測試報告等基本的測試活動.

測試政策和測試方法

軟體測試政策将軟體測試用例的設計方法內建到一系列經過周密計劃的步驟中去,進而使軟體構造成功地完成.

有效的軟體測試分為4步進行:

         單元測試:主要檢查子產品結構、局部資料結構、重要執行路徑、出錯處理和邊界條件5個特性.

         內建測試:把子產品按系統設計說明書的求組合起來測試,分為增量式內建和非增量式內建.

         确認測試:進一步檢查軟體的功能和性能是否與使用者要求的一樣;分為有效性測試、軟體配置審查和驗收測試.

         系統測試:是将已經确認的軟體、計算機硬體、外設和網絡的其他因素結合在一起,進行資訊系統的各種內建測試和确認測試,其目的是通過與系統的需求相比較,發現所開發的系統與使用者需求不符或沖突的地方.包括恢複測試、安全性測試、壓力測試、性能測試、可靠性可用性可維護性測試和安裝測試.

測試方法:分為動态測試和靜态測試

         黑盒測試(功能測試):在完全不考慮軟體内部結構和特性的情況下,測試軟體的外部特性;主要為發現程式是否有錯誤的功能或遺漏的功能、界面是否有誤或輸入是否正确接收或輸出是否正确、是否有資料結構或外部資料庫通路錯誤、性能是否能夠接收、是否有初始化或終止性錯誤;常用的黑盒測試技術有:等價類劃分、邊值分析、錯誤猜測和因果圖等.

         白盒測試(結構測試):根據程式的内部結構和邏輯來設計測試用例,對程式的路徑和過程進行測試;常用的白盒測試技術有邏輯覆寫(語句覆寫/判斷覆寫/條件覆寫/判斷條件覆寫/條件組合覆寫/路徑覆寫)、循環覆寫和基本路徑測試.

調試

根據測試時發現的錯誤,找出原因和具體的位置,進行改正.調試常用的方法有試探法、回溯法、對分查找法、歸納法和演繹法.

系統文檔

使用者與系統分析人員通過可行性分析報告、總體規劃報告、系統開發合同和系統方案說明書等進行溝通;

系統開發人員與項目管理人員通過系統開發計劃、系統開發月報以及系統開發總結報告等項目管理檔案進行溝通;

系統測試人員與系統開發人員通過系統方案說明書、系統開發合同、系統設計說明書和測試計劃等文檔進行溝通;

系統開發人員與使用者在系統運作期間通過使用者手冊和操作指南進行溝通;

系統開發人員與系統維護人員通過系統設計說明書和系統開發總結報告進行溝通;

使用者與維護人員在運作維護期間通過系統運作報告和維護修改建議進行溝通.

系統轉換

新舊系統的轉換:直接轉換、并行轉換和分段轉換.

系統運作和維護知識

系統可維護性的評價名額有可了解性、可測試性、可修改性等.

系統維護主要包括硬體維護、軟體維護(正确性維護、适應性維護、完善性維護和預防性維護)、資料維護.

系統維護概述

系統評價

繼續閱讀