軟件工程的基本原理:用分階段的生命周期計劃嚴格管理、堅持進行階段評審、實現嚴格的產品控制、采用現代程序設計技術、結果應能清除的審查、開發小組的人員應少而精、承認不斷改進軟件工程事件的必要性。
軟件工程的基本要素:方法、工具、過程
軟件生存周期:可行性分析與項目開發計劃、需求分析分析、概要設計(選擇系統解決方案,規劃子系統)、詳細設計(設計子系統內部具體實現)、編碼、測試、維護
1.信息系統生命周期
系統規劃階段:任務是對組織的環境、目標及現行系統的狀況進行初步調查,根據組織目標和發展戰略確定信息系統的發展戰略,對建設新系統的需求做出分析和預測,同時考慮建設新系統所受的各種約束,研究建設新系統的必要性和可能性。根據需要與可能,給出制建系統的備選方案。
輸出:可行性研究報告、系統設計任務書
系統分析階段:任務是根據系統設計任務書所確定的范圍,對現行系統進行詳細調查,描述現行系統的業務流程,指出現行系統的局限性和不足之處,確定新系統的基本目標和邏輯功能要求,即提出新系統的邏輯模型。系統分析階段又稱為邏輯設計階段(邏輯模型)。這個階段是整個系統建設的關鍵階段,也是信息系統建設與一般工程項目的重要區別所在
輸出:系統說明書(需求規格說明書)
系統設計階段:系統分析階段的任務是回答系統 “做什么” 的問題,而系統設計階段要回答的問題是 “怎么做”。該階段的任務是根據系統說明書中規定的功能要求,具體設計實現邏輯模型的技術方案,也就是設計新系統的物理模型。這個階段又稱為物理設計階段(物理模型),可分為總體設計《概要設計》和詳細設計兩個子階段。
輸出:系統設計說明書(概要設計、詳細設計說明書)
系統實施階段:是將設計的系統付諸實施的階段。這一階段的任務包括計算機等設備的購置、安裝和調試、程序的編寫和調試、人員培訓、數據文件轉換、系統調試與轉換等。這個階段的特點是幾個互相聯系、互相制約的任務同時展開,必須精心安排、合理組織系統實施是按實施計劃分階段完成的,每個階段應寫出實施進展報告。系統測試之后寫出系統測試分析報告。
輸出:實施進展報告、系統測試分析報告
系統運行與維護階段:系統投入運行后,需要經常進行維護和評價,記錄系統運行的情況,根據一定的規則對系統進行必要的修改,評價系統的工作質量和經濟效益
2.能力成熟度模型
能力成熟度模型CMM
能力等級 | 特點 | 關鍵過程區域 |
初始級(Initial) | 軟件過程的特點是雜亂無章,有時甚至很混亂,幾乎沒有明確定義的步驟,項目的成功完全依賴個人的努力和英雄式核心人物的作用 ? | |
可重復級(Repeatable) | 建立了基本的項目管理過程和實踐來跟蹤項目費用、進度和功能特性,有必要的過程準則來重復以前在同類項目中的成功 ? | 軟件配魯管理。軟件質量保證、軟件子合同管理、軟件項目跟蹤與監督、軟件項目策劃、軟件需求管理 |
已定義級(Defined) | 管理和工程兩方面的軟件過程已經文檔化、標準化,并綜合成整個軟件開發組織的標準軟件過程。所有項目都采用根據實際情況修改后得到的標準軟件過程來開發和維護軟件 ? | 同行評審、組間協調、軟件產品工程、集成軟件管理、培訓大綱組織過程定義、組織過程集點 ? |
已管理級(Managed) | 制定了軟件過程和產品質量的詳細度量標準。對軟件過程和產品質量有定量的理解和控制 ? | 軟件質量管理和定量過程管理 |
優化級(Optimized) | 加強了定量分析,通過來自過程質量反饋和來自新觀念、新技術的反饋使過程能不斷持續地改進 | 過程更改管理、技術改革管理和缺陷預防 |
能力成熟度模型集成CMMI
是若干過程模型的綜合和改進,不僅僅軟件,而是支持多個工程學科和領域的、系統的、一致的過程改進框架,能適應現代工程的特點和需要,能提高過程的質量和工作效率
CMMI兩種表示方法:
(1) 階段式模型:類似于CMM,它關注組織的成熟度,五個成熟度模型如下:
能力等級 | 特點 | 關鍵過程 |
初始級 | 過程不可預測且缺乏控制 | |
已管理級 | 過程為項目服務 | 需求管理、項目計劃、配置管理、項目監督與控制、供應商合同管理、度量和分析、過程和產品質量保證 |
已定義級 | 過程為組織服務 | 需求開發、技術解決方案、產品集成、驗證、確認組織級過程焦點、組織級過程定義、組織級培訓、集成項目管理、風險管理、集成化的團隊、決策分析和解決方案、組織級集成環境 |
定量管理 | 過程已度量和控制 | 組織過程性能、定量項目管理 |
優化級 | 集中于過程改進和優化 | 組織級改革與實施、因果分析和解決方案 |
(2).連續式模型:關注每個過程域的能力,一個組織對不同的過程域可以達到不同的過程域能力等級。
【例題】(? ) 是系統分析階段結束后得到的工作產品,(? )是系統測試階段完成后的工作產品
A.系統設計規格說明????????B.系統方案建議書????????C.程序規格說明????????D.單元測試數據
A.驗收測試計劃?????B.測試標準????????C.系統測試計劃????????D.操作手冊???
答案:B D
【例題】以下關于CMM的敘迷中,不正確的是 ()。
A、CMM是指軟件過程能力成熟度模型
B、CMM根據軟件過程的不同成熟度劃分了5個等級,其中,1級被認為成熟度最高,5級被認為成
熟度最低
C、CMMI的任務是將已有的幾個CMM模型結合在一起,使之構造成為“集成模型”
D、采用更成熟的CMM模型,一般來說可以提高最終產品的質量
答案:B
3.軟件過程模型
瀑布模型
瀑布模型(SDLC):瀑布模型是一個經典的軟件生命周期模型一般將軟件開發分為: 可行性分析 (計劃)、需求分析、軟件設計(概要設計、詳細設計) 、編碼 (含單元測試)、測試、運行維護等幾個階段。
瀑布模型特點
- 從上一項開發活動接受該項活動的工作對象作為輸入
- 利用這一輸入,實施該項活動應完成的工作內容
- 給出該項活動的工作成果,作為輸出傳給下一項開發活動
- 對該項活動的實施工作成果進行評審。若其工作成果得到確認,則繼續進行下一項開發活動;否則返回前一項,甚至更前項的活動。盡量減少多個階段間的反復。以相對來說較小的費用來開發軟件
原型模型
原型化模型第一步就是創建一個快速原型,能夠滿足項目干系人與未來的用戶可以與原型進行交互,再通過與相關干系人進行充分的討論和分析,最終弄清楚當前系統的需求,進行了充分的了解之后,在原型的基礎上開發出用戶滿意的產品。
原型法認為在很難一下子全面準確地提出用戶需求的情況下,原型應當具備的特點如下。
- 實際可行
- 具有最終系統的基本特征
- 構造方便、快速,造價低。原型法的特點在于原型法對用戶的需求是動態響應、逐步納入的
?螺旋模型
螺旋模型是一個演化軟件過程模型,將原型實現的迭代特征與線性順序 (瀑布)模型中控制的和系統化的方面結合起來。在螺旋模型中,軟件開發是一系列的增量發布
開發討程具有周期性重復的螺旋線狀。四個象限分別標志每個周期所劃分的四階段:制訂計劃、風險分析、實施工程和客戶評估。螺旋模型強調了風險分析,特別適用于龐大而復雜的、高風險的系統
V模型
V模型從整體上看起來,就是一個V字型的結構,由左右兩邊組成。左邊的下畫線分別代表了需求分析、概要設計、詳細設計、編碼。右邊的上畫線代表了單元測試、集成測試、系統測試與驗收測試。
V模型的特點如下:
- 單元測試的主要目的是針對編碼過程中可能存在的各種錯誤(單編)
- 集成測試的主要目的是針對詳細設計中可能存在的問題(集詳)
- 系統測試主要針對概要設計,檢查系統作為一個整體是否有效地得到運行(系概)
- 驗收測試通常由業務專家或者用戶進行,以確認產品能真正符合用戶業務上的需要(驗需)
- V模型用于需求明確和需求變更不頻繁的情形
增量模型
增量模型:首先開發核心模塊功能,而后與用戶確認,之后再開發次核心模塊的功能,即每次開發一部分功能,并與用戶需求確認,最終完成項目開發
優先級最高的服務最先交付
增量模型的特點:但由于并不是從系統整體角度規劃各個模塊,因此不利于模塊劃分
難點在于如何將客戶需求劃分為多個增量。與原型不同的是增量模型的每一次增量版本都可作為獨立可操作的作品,而原型的構造一般是為了演示。
噴泉模型
噴泉模型:是一種以用戶需求為動力,以對象作為驅動的模型,適合于面向對象的開發方法。使開發過程具有迭代性和無間隙性
基于構件開發模型CBSD
基于構件的開發模型CBSD:利用預先包裝的構件來構造應用系統。構件可以是組織內部開發的構件,也可以是商品化成品軟件構件。
特點是增強了復用性,在系統開發過程中,會構建一個構件庫,供其他系統復用,因此可以提高可靠性,節省時間和成本。
形式化方法模型
?形式化方法模型:建立在嚴格數學基礎上的一種軟件開發方法,主要活動是生成計算機軟件形式化的數學規格說明
習題
【例題】假設某軟件公司與客戶簽訂合同開發一個軟件系統,系統的功能有較清晰的定義,且客戶對交付
時間有嚴格要求,則該系統的開發最適宜采用
A、瀑布模型????????B、原型模型?????????C、V模型???????D、螺旋模型
答案: A
解析:功能清晰,也即需求較明確,有這樣的關鍵字都是考察瀑布模型,牢記總結的記憶關鍵字
【例題】以下關于螺旋模型的敘述中,不正確的是()
A.它是風險驅動的,要求開發人員必須具有豐富的風險評估知識和經驗
B.它可以降低過多測試或測試不足帶來的風險
C.它包含維護周期,因此維護和開發之間沒有本質區別
D.它不適用于大型軟件開發
答案:D
解析:螺旋模型的特點是風險分析,應對風險的都正確,螺旋模型適合大型軟件開發
4.信息系統的開發方法
結構化方法
結構是指系統內各個組成要素之間的相互聯系、相互作用的框架
結構化方法也稱為生命周期法,是一種傳統的信息系統開發方法,由結構化分析 (Structured Analysis, SA) 、結構化設計 (Structured Design, SD)和結構化程序設計 (Structured Programming,SP) 三部分有機組合而成,其精髓是自頂向下、逐步求精和模塊化設計
結構化方法的主要特點
- 開發目標清晰化。結構化方法的系統開發遵循 “用戶第一” 的原則
- 開發工作階段化。每個階段工作完成后,要根據階段工作目標和要求進行審查,這使各階段工作有條不紊地進行、便于項目管理與控制.
- 開發文檔規范化。結構化方法每個階段工作完成后,要按照要求完成相應的文檔,以保證各個工作階段的銜接與系統維護工作的遍歷。
- 設計方法結構化。在系統分析與設計時,從整體和全局考慮,自頂向下地分解;在系統實現時,根據設計的要求,先編寫各個具體的功能模塊,然后自底向上逐步實現整個系統.
?結構化方法的不足和局限
- 開發周期長:按順序經歷各個階段,直到實施階段結束后,用戶才能使用系統。
- 難以適應需求變化:不適用于需求不明確或經常變更的項目。
- 很少考虎數據結構: 結構化方法是一種面向過程,面向數據流的開發方法,很少考慮數據結構。
結構化方法常用工具
結構化方法一般利用圖形表達用戶需求,常用工具有數據流圖、數據字典、結構化語言、判定表以及判定樹等
面向對象開發方法
面向對象 (0bject-Oriented,00) 方法認為,客觀世界是由各種對象組成的,任何事物都是對象,每一個對象都有自己的運動規律和內部狀態,都屬于某個對象類,是該對象類的一個元素。復雜的對象可由相對簡單的各種對象以某種方式而構成,不同對象的組合及相互作用就構成了系統。
面向對象方法的特點
- 使用00方法構造的系統具有更好的復用性,其關鍵在于建立一個全面合理、統一的模型(用例模型和分析模型)
- 00方法也劃分階段,但其中的系統分析、系統設計和系統實現三個階段之間已經沒有“縫隙”。也就是說,這三個階段的界限變得不明確,某項工既可以在前一個階段完成,也可以在后一個階段完成;前一個階段工作做得不夠細,在后一個階段可以補充。
- 面向對象方法可以普遍適用于各類信息系統的開發
面向對象方法的不足之處
必須依靠一定的面向對象技術支持,在大型項目的開發上具有一定的局限性不能涉足系統分析以前的開發環節
當前,一些大型信息系統的開發,通常是將結構化方法和00方法結合起來。首先,使用結構化方法進行自頂向下的整體劃分;然后,自底向上地采用00方法進行開發。因此,結構化方法和00方法仍是兩種在系統開發領域中相互依存的、不可替代的方法。
原型化方法
原型化方法也稱為快速原型法,或者簡稱為原型法。它是一種根據用戶初步需求,利用系統開發工具,快速地建立一個系統模型展示給用戶,在此基礎上與用戶交流,最終實現用戶需求的信息系統快速開發的方法
按是否實現功能分類: 分為水平原型(行為原型,功能的導航)、垂直原型(結構化原型,實現了部分功能)
按最終結果分類::分為拋棄式原型、演化式原型
原型法的特點
原型法可以使系統開發的周期縮短、成本和風險降低、速度加快,獲得較高的綜合開發效益。
原型法是以用戶為中心來開發系統的,用戶參與的程度大大提高,開發的系統符合用戶的需求,因而增加了用戶的滿意度,提高了系統開發的成功率
由于用戶參與了系統開發的全過程,對系統的功能和結構容易理解和接受,有利于系統的移交,有利于系統的運行與維護
原型法的不是之處
開發的環境要求高。管理水平要求高.
由以上的分析可以看出,原型法的優點主要在于能更有效地確認用戶需求。從直觀上來看,原型法適用于那些需求不明確的系統開發。事實上,對于分析層面難度大、技術層面難度不大的系統,適合于原型法開發。
從嚴格意義上來說,目前的原型法不是一種獨立的系統開發方法,而只是一種開發思想,它只支持在系統開發早期階段快速生成系統的原型,沒有規定在原型構建過程中必須使用哪種方法。因此,它不是完整意義上的方法論體系。這就注定了原型法必須與其他信息系統開發方法結合使用
?
敏捷開發
敏捷開發是一種以人為核心、迭代、循序漸進的開發方法,相對于傳統軟件開發方法的"非敏捷",更強調程序員團隊與業務專家之間的緊密協作、面對面的溝通 (認為比書面的文檔更有效)、頻繁交付新的軟件版本、緊湊而自我組織,能夠很好地適應需求變化的代碼編寫和團隊組織方法,也更注重軟件開發中人的作用
小敏捷軟件開發官言:
- 個體和交互勝過過程和工具
- 可以工作的軟件勝過面面俱到的文檔
- 客戶合作勝過合同談興
- 響應變化勝過遵循計劃
敏捷開發的五種方法?
自適應開發
自適應開發:強調開發方法的適應性 (Adaptive)。不像其他方法那樣有很多具體的實踐做法,它更側重為軟件的重要性提供最根本的基礎,并從更高的組織和管理層次來闡述開發方法為什么要具備適應性。
水晶方法
水晶方法:每一個不同的項目都需要一套不同的策略、約定和方法論。
特性驅動開發
特性驅動開發:是一套針對中小型軟件開發項目的開發模式。是一個模型驅動的快速迭代開發過程,它強調的是簡化、實用、易于被開發團隊接受,適用于需求經常變動的項目。
極限編程XP
極限編程XP:核心是溝通、簡明、反饋和勇氣。因為知道計劃永遠趕不上變化,XP無需開發人員在軟件開始初期做出很多的文檔。XP提倡測試先行,為了將以后出現bug的幾率降到最低。
并列爭球法SCRUM?
并列爭球法SCRUM:是一種選代的增量化過程,把每段時間(30天)一次的迭代稱為一個“沖刺”,并按需求的優先級別來實現產品,多個自組織和自治的小組并行地遞增實現產品.
統一過程(RUP)
提供了在開發組織中分派任務和責任的紀律化方法。它的目標是在可預見的日程和預算前提下,確保滿足最終用戶需求的高質量產品
3個顯著特點:用例驅動、以架構為中心、選代和增量
4個流程:初始階段、細化階段、構建階段和交付階段。每個階段結束時都要安排一次技術評審,以確定這個階段的目標是否已經達到
適用:一個通用過程框架,可以用于種類廣泛的軟件系統、不同的應用領域、不同的組織類型、不同性能水平和不同的項目規模。
結對編程
結對編程:一個程序員開發,另一個程序在一旁觀察審查代碼,能夠有效的提高代碼質量,在開發同時對代碼進行初步審查,共同對代碼負責。
【例題】以下關于結構化開發方法的敘述中,不正確的是
A、總的指導思想是自頂向下,逐層分解
B、基本原則是功能的分解與抽象
C、與面向對象開發方法相比,更適合于大規模、特別復雜的項目
D、特別適合于數據處理領域的項目
解析:可以使用排除法,結構化開發方法是面向數據流,自頂向下、逐層分解的,因此ABD都對,但目前已經逐漸被面向對象開發方法替代,因為面向對象開發方法更適合大型復雜項目。
【例題】在敏捷過程的開發方法中,(? )使用了迭代的方法,其中,把每段時間(30天)一次的迭代稱為一個“沖刺”,并按需求的優先級別來實現產品,多個自組織和自治的小組并行地遞增實現產品
?A、極限編程XP???????B、水晶法????????C、并列爭球法 D、自適應軟件開發
答案:C
解析:并列爭球法SCRUM強調迭代增量過程,自適應軟件開發強調適應性,極限編程強調四個核
斤及測試先行等理論。
系統分析與設計概述
軟件需求
軟件需求:是指用戶對系統在功能、行為、性能、設計約束等方面的期望。是指用戶解決問題或達到目標所需的條件或能力,是系統或系統部件要滿足合同、標準、規范或其他正式規定文檔所需具有的條件或能力,以及反映這些條件或能力的文檔說明。
分為需求開發和需求管理兩大過程,如下所示:
系統設計
系統設計主要目的:為系統制定藍圖,在各種技術和實施方法中權衡利弊精心設計,合理地使用各種資源,最終勾畫出新系統的詳細設計方法
系統設計方法:結構化設計方法,面向對象設計方法
系統設計的主要內容:概要設計、詳細設計。
概要設計基本任務:又稱為系統總體結構設計,是將系統的功能需求分配給軟件模塊,確定每個模塊的功能和調用關系,形成軟件的模塊結構圖,即系統結構圖。
詳細設計的基本任務:模塊內詳細算法設計、模塊內數據結構設計、數據庫的物理設計、其他設計(代碼、輸入/輸出格式、用戶界面)、編寫詳細設計說明書、評審
系統實際的基本原理
- 抽象化
- 自頂而下,逐步求精
- 信息隱蔽;
- 模塊獨立(高內聚,低耦合)
系統設計原則
- 保持模塊的大小適中
- 盡可能減少調用的深度
- 多扇入,少扇出
- 單入口,單出口
- 模塊的作用域應該在模塊之內
- 功能應該是可預測的
【例題】系統設計是根據系統分析的結果,完成系統的構建過程。系統設計的主要內容包括(? );系統總體結構設計的主要任務是將系統的功能需求分配給軟件模塊,確定每個模塊的功能和調用關系形成軟件的(? )
A、概要設計和詳細設計????????????????B、架構設計和對象設計
C、部署設計和用例設計????????????????D、功能設計和模塊設計
A.用例圖????????????????B.模塊結構圖????????????????C.系統部署圖????????????????D。類圖
答案: A? ? ? B
【例題】以下關于軟件系統模塊結構設計的敘述中,正確的是(? )
A.當模塊扇出過大時,應把下級模塊進一步分解為若干個子模塊
B.當模塊扇出過小時,應適當增加中間的控制模塊
C.模塊的扇入大,表示模塊的復雜度較高
D.模塊的扇入大,表示模塊的復用程度高
答案:D
系統設計基本原理:
系統設計基本原理:抽象化、模塊化、信息隱蔽、模塊獨立。
衡量模塊獨立程度的標準有兩個:耦合性和內聚性。
內聚程度從低到高如下所示:
內聚分類 | 定義 | 記憶關鍵字 |
偶然內聚 | 一個模塊內的各處理元素之間沒有任何關系 | 無直接關系 |
邏輯內聚 | 模塊內執行若干個邏輯上相似的功能,通過參數確定該模塊完成哪一個功能 | 邏輯相似、參數決定 |
時間內聚 | 把需要同時執行的動作組合在一起形成的模塊 | 同時執行 |
過程內聚 | 一個模塊完成多個任務,這些任務必須按指指定的過程執行 | 指定的過程順序 |
通信內聚 | 模塊內的所有處理元素都在同一個數據結構上操作,或者各處理使用相同的輸入數據或者產生相同的輸出數據。 | 相同數據結構、相同 輸入輸出 |
順序內聚 | 一個模塊中的各個處理元素都密切相關于同一功能且必須順序執行,前一個功能元素的輸出就是下一個功能元素的輸入 | 順序執行、輸入為輸出 |
功能內聚 | 最強的內聚,模塊內的所有元素共同作用完一個功能、缺一不可 | 完共同作用、缺一不可 |
耦合程度從低到高如下表所示
耦合分類 | 定義 | 記憶關鍵字 |
無直接耦合 | 兩個模塊之間沒有直接的關系,它們分別從屬于不同模塊的控制與調用,不傳遞任何信息 | 無直接關系 |
數據耦合 | 兩個模塊之間有調用關系,傳遞的是簡單傳遞數據值,相當于高級語言中的值傳遞 | 傳遞數據值調用 |
標記耦合 | 兩個模塊之間傳遞的是數據結構 | 傳遞數據結構 |
控制耦合 | 一個模塊調用另一個模塊時,傳遞的是控制變量,被調用模塊通過該控制變量的值有選擇的執行模塊內的某一功能 | 控制變量、選擇執行某一功能 |
外部耦合 | 模塊間通過軟件之外的環境聯合 (如 I/O將模塊耦合到特定的設備、格式、通信協議上)時。 | 軟件外部環境 |
公共耦合 | 通過一個公共數據環境相互作用的那些模塊間的耦合 | 公共數據結構 |
內容耦合 | 當一個模塊直接使用另一個模塊的內部數據,或通過非正常入口轉入另一個模塊內部時 | 模塊內部關聯 |
【例題】某模塊中各個處理元素都密切相關于同一功能且必須順序執行,前一處理元素的輸出就是下一處
理元素的輸入,則該模塊的內聚類型為(? ) 內聚
A、過程????????????????B、時間????????????????C、順序? ? ? ? D、邏輯
答案: C
【例題】已知模塊A給模塊B傳遞數據結構X,則這兩個模塊的耦合類型為 (? )
A、數據耦合????????B、公共耦合????????C、外部耦合????????D、標記耦合
答案: D
解析:特別說明是數據結構,不是數據,數據結構是標記耦合
結構化開發
結構化分析與設計方法是一種面向數據流的傳統軟件開發方法,它以數據流為中心構建軟件的分析模型和設計模型。結構化分析 (StructuredAnalysis,SA)、結構化設計 (Structured Design,SD) 和結構化程序設計 (structured Programming Design,SPD) 構成了完整的結構化方法結構化方法的分析結果由以下幾部分組:一套分層的數據流圖、一本數據詞典、一組小說明(也稱加工邏輯說明)、補充材料。
數據流圖DFD
基本圖形元素:外部實體、加工、數據存儲、數據流
數據流:由一組固定成分的數據組成,表示數據的流向在DFD 中,數據流的流向必須經過加工
加工:描述了輸入數據流到輸出數據流之間的變換,數據流圖中常見的三種錯誤如圖所示
加工3.1.2有輸入但是沒有輸出,稱之為“黑洞”
加工3.1.3 有輸出但沒有輸入。稱之為“奇跡”
加工3.1.1中輸入不足以產生輸出,我們稱之為“灰洞'
數據存儲:用來存儲數據
外部實體(外部主體):是指存在于軟件系統之外的人員或組織,它指出系統所需數據的發源地 (源)和系統所產生的數據的歸宿地 (宿)
?
?
數據字典
數據流圖描述了系統的分解,但沒有對圖中各成分進行說明。數據字典就是為數據流圖中的每個數據流、文件、加工,以及組成數據流或文件的數據項做出說明。
數據字典有以下4類條目:數據流、數據項、數據存儲和基本加工
符號 | 含義 | 舉例及說明 |
= | 被定義為 | |
+ | 與 | x=a+b,表示 x 由 a 和 b 組成 |
[...|...] | 或 | x=[a|b],表示 x 由 a 或 b 組成 |
{......} | 重復 | x={a},表示 x 由 0 個或多個 a 組成 |
加工邏輯也稱為 “小說明” 。常用的加工邏輯描述方法有結構化語言、判定表和判定樹3種
【例題】在結構化分析中,用數據流圖描述 (? )。當采用數據流圖對一個圖書館管理系統進行分析時,(? )
一個外部實體
A、數據對象之間的關系,用于對數據建模
B、數據在系統中如何被傳送或變換,以及如何對數據流進行變換的功能或子功能,用于對功能
建模
C、系統對外部事件如何響應,如何動作,用于對行為建模
D、數據流圖中的各個細成部分
A、讀者????????B、圖書????????C、借書證????????D、借閱
答案:BA
系統運行與維護
遺留系統?
遺留系統是指任何基本上不能進行修改和演化以滿足新的變化了的業務需求的信息系統,它通常具有以下特點:
(1) 系統雖然完成企業中許多重要的業務管理工作,但仍然不能完全滿足要求。一般實現業務處理電子化及部分企業管理功能,很少涉及經營決策。
(2) 系統在性能上已經落后,采用的技術已經過時。例如多采用主機/終端形式或小型機系統,軟件使用匯編語言或第三代程序設計語言的早期版本開發,使用文件系統而不是數據庫。
(3)?通常是大型的軟件系統,已經融入企業的業務運作和決策管理機制之中,維護工作十分困難
(4) 沒有使用現代信息系統建設方法進行管理和開發,現在基本上已經沒有文檔,很難理解
系統轉換?
系統轉換是指新系統開發完畢,投入運行,取代現有系統的過程,需要考慮多方面的問題,以實現與老系統的交接,有以下三種轉換計劃:
直接轉換:現有系統被新系統直接取代了,風險很大,適用于新系統不復雜.或者現有系統已經不能使用的情況。優點是節省成本。
并行轉換:新系統和老系統并行工作一段時間,新系統經過試運行后再取代若新系統在試運行過程中有問題,也不影響現有系統的運行,風險極小,在試運行過程中還可以比較新老系統的性能,適用于大型系統。缺點是耗費人力和時間資源,難以控制兩個系統間的數據轉換。
分段轉換: 分期分批逐步轉換,是直接和并行轉換的集合,將大型系統分為多個子系統,依次試運行每個子系統,成熟一個子系統,就轉換一個子系統。同樣適用于大型項目,只是更耗時,而且現有系統和新系統間混合使用,需要協調好接口等問題。
數據轉換與遷移:將數據從舊數據庫遷移到新數據庫中。有三種方法: 系統切換前通過工具遷移、系統切換前采用手工錄入、系統切換后通過新系統生成
系統維護?
系統的可維護性可以定義為維護人員理解、改正、改動和改進這個軟件的難易程度,其評價指標如下:
- 易分析性。軟件產品診斷軟件中的缺陷或失效原因或識別待修改部分的能
- 易改變性。軟件產品使指定的修改可以被實現的能力,實現包括編碼、設計和文檔的更改
- 穩定性。軟件產品避免由于軟件修改而造成意外結果的能力。
- 易測試性。軟件產品使已修改軟件能被確認的能力。
- 維護性的依從性。軟件產品遵循與維護性相關的標準或約定的能力
系統維護包括硬件維護、軟件維護和數據維護,其中軟件維護類型如下
- 正確性維護:發現了bug而進行的修改。
- 適應性維護:由于外部環境發生了改變,被動進行的對軟件的修改和升級
- 完善性維護:基于用戶主動對軟件提出更多的需求,修改軟件,增加更多的功能,使其比之前的軟件功能、性能更高,更加完善。
- 預防性維護:對未來可能發生的bug進行預防性的修改
【例題】對于遺留系統的評價框架如下圖所示,那么處于"高水平、低價值"區的遺留系統適合于采用的演化策略為 (? )
A、淘汰????????B、繼承????????C、改造????????D、集成
答案:D
【例題】以下關于軟件維護和可維護性的敘述中,不正確的是 ( )
A、軟件維護要解決軟件產品交付用戶之后運行中發生的各種問題
B、軟件的維護期通常比開發期長得多,其投入也大得多
C、進行質量保證審查可以提高軟件產品的可維護性
D、提高可維護性是在軟件維護階段考慮的問題
答案:D
【例題】某企業由于外部市場環境和管理需求的變化對現有軟件系統提出新的需求,則對該軟件系統進行維護。的維護屬于(? )維護
A、正確性????????B、完善性????????C、適應性????????D、預防性
答案: C