第一篇:軟件工程選擇題
題型:概念解釋、簡答、選擇、綜合操作。
選擇:
1.影響軟件維護工作的主要因素:
(1)軟件開發的方法:軟件開發方式直接影響軟件的易維護性;模塊化結構、詳細設計等文檔、軟甲維護記錄報告等將有助于理解軟件的結構、界面的功能和內部的數據與控制邏輯流程、理解當前軟件的版本狀態;
(2)軟件開發的條件:軟件開發過程所涉及到的軟件硬件資源特性也對軟件的維護產生影響,如程序設計語言的特性、軟件開發工具等對于理解軟件有著明顯的影響;
(3)軟件規模的大小:軟件規模越大,系統越復雜,維護所需的工作量也越大;
(4)軟件投入運行后的時間:老系統比新系統需要更多的維護工作量,在長期的維護過程中,也許軟件的文檔與實際的程序實現已變得不一致,維護工作會遇到跟多的困難;
(5)其他設計因素、人員交替與外部環境因素。
2.模塊間的信息可以用作控制信息用,也可以用作數據使用。
3.在對數據流的分析中主要是找到中心變換,這是從數據流圖導出結構圖的關鍵 4.在進行軟件結構設計時,應該遵循的基本原理是抽象原理。
5.在設計測試用例時,等價類劃分是用的最多的一種黑盒測試方法。
6.軟件開發環境是相關的一組軟件工具集合。
7.快速原形有那幾種?特點?
答:探索型、試驗型、演化型。探索型:在需求階段幫助明確理解需求用完拋 棄。試驗型:在設計階段考核現行方案是否合適用完拋棄。演化型:及早的向用 戶展示一個系統的原形包含主要的功能得到用戶的認可后將原形不斷的擴充直到系統完成。
8.質量保證是為了使產品實現__功能。A.系統分析員 B程序員 C軟件開發者要求 D 用戶要求
9.在結構化分析方法中,用以表達系統內數據的運動情況的工具有___
A 數據流圖 B數據詞典 C 結構化英語D 判定樹和判定表
10.可行性研究主要從以下幾個方面進行研究__。
A.技術可行性,經濟可行性,操作可行性。
B.技術可行性,經濟可行性,系統可行性。
C.經濟可行性,系統可行性,操作可行性。
D.經濟可行性,系統可行性,時間可行性
11.結構化分析方法是一種面向數據流的需求分析方法。
12.在進行軟件結構設計時,應該遵循的最主要原理是模塊獨立性原理。
13.使軟件適應運行環境中硬軟件變更的維護稱為適應性維護。
14.質量保證是為了保證產品和服務充分滿足消費者要求的質量而進行的有計劃,有組織的活動,質量保證是為了是產品實現使產品實現用戶要求的功能。
15.數據字典。
第二篇:華師在線軟件工程作業答案選擇題
軟件工程作業
在軟件可行性研究中,可以從不同的角度對軟件進行研究,其中是從軟件的功能可行性角度考慮的是()。A.經濟可性性 B.技術可行性 C.操作可行性 D.法律可行性 答案:B
為了提高模塊的獨立性,模塊內部最好是()。A.邏輯內聚 B.時間內聚 C.功能內聚 D.通信內聚 答案:C
Jackson方法是一種面向()的方法。A.對象 B.數據結構 C.數據流 D.控制流 答案:B
需求分析階段研究的對象是軟件項目的()。A.用戶需求 B.合理要求 C.模糊要求 D.工程要求 答案:A
面向數據結構的設計方法(Jackson方法)是進行()的形式化的方法。A.系統設計 B.詳細設計 C.軟件設計 D.編碼 答案:B
程序控制的三種基本結構中,()結構可提供多條路徑選擇。A.反序 B.順序 C.循環 D.分支 答案:D
下列屬于黑盒測試的是()。A.基本路徑測試 B.條件測試 C.循環測試 D.等價劃分 答案:D 軟件設計一般分為總體設計和詳細設計,它們之間的關系是()。A.全局和局部 B.抽象和具體 C.總體和層次 D.功能和結構 答案:A
好的軟件結構應該是()。A.高耦合,高內聚 B.低耦合,高內聚 C.高耦合,低內聚 D.低耦合,低內聚 答案:B
面向對象軟件技術的許多強有力的功能和突出的優點,都來源于把類組織成一個層次結構的系統,一個類的上層可以有父類,下層可以有子類,這種層次結構系統的一個重要性質是(),一個類獲得其父類的全部描述(數據和操作)。A.傳遞性 B.繼承性 C.復用性 D.并行性 答案:B
軟件項目管理是()一切活動的管理。A.需求分析 B.軟件設計過程 C.模塊控制
D.軟件生命周期 答案:D
一個模塊把開關量作為參數傳遞給另一模型,這兩個模塊之間的耦合是()。A.外部耦合 B.數據耦合 C.控制耦合 D.內容耦合 答案:C
在面向數據流的軟件設計方法中,一般將信息流分為()。A.變換流和事務流 B.變換流和控制流 C.事務流和控制流 D.數據流和控制流 答案:A
軟件工程學科出現的主要原因是()。A.計算機的發展
B.其他工程學科的影響 C.軟件危機的出現
D.程序設計方法學的影響 答案:C 關于數據流圖下列說法中不正確的是()。
A.在數據流圖中應描繪所有可能的數據流向及數據流的條件 B.數據流圖的基本要點是描繪“做什么”而不考慮“怎么做” C.數據流圖是系統的邏輯模型
D.數據流圖的一個主要用途是作為分析和設計的工具 答案:A
關于測試下列說法錯誤的是()。A.調試也稱為糾錯
B.調試作為成功測試的后果出現
C.調節器試是在測試發現錯誤之后排除錯誤的過程 D.調試的目標是發現錯誤 答案:D
模塊中所有成分引用共同的數據,該模塊的內聚度是(A.邏輯性 B.瞬時性 C.功能性 D.通信性 答案:D
每個對象可用它自己的一組屬性和它可以執行的一組(A.行為 B.功能 C.操作 D.數據 答案:C
應用執行對象的操作可以改變該對象的()。A.屬性 B.功能 C.行為 D.數據 答案:A
下列耦合中,()的耦合性最強。A.公共耦合 B.數據耦合 C.控制耦合 D.內容耦合 答案:D
塊內聯系中,()塊內聯系最強。A.偶然性 B.功能性 C.通信性 D.順序性 答案:B
軟件是一種()產品。)的。)來表現。
A.有形 B.邏輯 C.物質 D.消耗 答案:B
由于軟件生產的復雜性和高成本性,使大型軟件的生存出現危機,軟件危機的主要表現包括了下述()方面。①生產成本過高 ②需求增長難以滿足③進度難以控制 ④質量難以保證 A.①② B.②③ C.④ D.全部 答案:D
在軟件可行性研究中,可以從不同的角度對軟件進行研究,其中是從軟件的功能可行性角度考慮的是(A.經濟可性性 B.技術可行性 C.操作可行性 D.法律可行性 答案:B
在對數據流的分析中,主要是找到中心變換,這是從()導出結構圖的關鍵。A.數據結構 B.實體關系 C.數據流圖 D.E-R圖 答案:C
概要設計與詳細設計銜接的圖形工具是()。A.數據流圖 B.結構圖 C.程序流程圖 D.PAD圖 答案:B
程序控制一般分為()、分支、循環三種基本結構。A.分塊 B.順序 C.跳轉 D.控制 答案:B
結構化分析方法使用的描述工具()定義了數據流圖中每一個圖形元素。A.數據流圖 B.數據字典 C.判定表 D.判定樹 答案:B
Jackson方法根據()來導出程序結構。)A.數據結構
B.數據間的控制結構 C.數據流圖 D.IPO圖 答案:A
Jackson圖上下層之間的關系是()。A.調用關系 B.組成關系 C.繼承關系 D.嵌套關系 答案:B
以下說法,錯誤的是()。
A.面向對象不僅支持過程抽象,而且支持數據抽象 B.某些面向對象的程序設計語言還支持參數化抽象 C.信息隱蔽通過對象的封裝性來實現
D.在面向對象方法中,類是最基本的模塊。答案:D
在多層次的結構圖中,其模塊的層次數稱為結構圖的(A.深度 B.跨度 C.控制域 D.廣度 答案:A
()是計算機程序及期說明程序的各種文檔。A.軟件 B.文檔 C.程序 D.數據 答案:A
模塊(),則說明模塊的獨立性越強。A.耦合越強 B.扇入數越高 C.耦合越弱 D.扇入數越低 答案:C
在數據流圖中,有名字及方向的成分是()。A.控制流 B.信息流 C.數據流 D.信號流 答案:C
Alpha測試是()。
A.由用戶在開發者的場所進行。)B.由軟件的最終用戶在開發者的一個或多個客戶場所進行 C.是在不受開發者控制的環境中進行的
D.是軟件在開發者不能控制的環境中的“真實應用 答案:A
表示對象的相互行為的模型是()模型。A.對象 B.動態 C.功能 D.靜態 答案:B
在軟件工程學中,我們把一組具有相同數據結構和相同操作的對象的集合定義為(在數據上的一組合法操作。A.類 B.屬性 C.對象 D.消息 答案:A
需求分析過程中,對算法的簡單描述記錄在()。A.層次圖 B.數據字典 C.數據流圖 D.IPO圖 答案:D
有關計算機程序功能、設計、編制、使用的文字或圖形資料稱為()。A.軟件 B.文檔 C.程序 D.數據 答案:B
問題定義階段必須回答的關鍵問題是()。A.要解決的問題是什么
B.確定目標系統必須具備哪些功能 C.怎樣實現目標系統 D.如何具體實現系統 答案:A
可行性分析中,系統流程圖用于描述()。A.當前運行系統 B.當前邏輯模型 C.目標系統 D.新系統 答案:B
模塊的獨立性是由內聚性和耦合性來度量的,其中內聚性是()。A.模塊間的聯系程度,此定義包括一組數據屬性和)B.模塊的功能強度 C.信息隱蔽程度 D.接口的復雜程度 答案:B
數據流圖是用于表示軟件模型的一種圖示方法,在下列可采用的繪圖方法中,()是常采用的。①自頂向下 ②自底向上 ③分層繪制 ④逐步求精 A.全是 B.①③④ C.①③ D.①② 答案:B
在軟件可行性研究中,可以從不同的角度對軟件進行研究,其中是從軟件的成本/效益分析的是()。A.經濟可性性 B.技術可行性 C.操作可行性 D.法律可行性 答案:A
在結構化分析方法(SA)中,與數據流圖配合使用的是()。A.數據流圖 B.數據字典 C.實體聯系圖 D.程序流程圖 答案:B
通過()可以完成數據流圖的細化。A.結構分解 B.功能分解 C.數據分解 D.系統分解 答案:B
在邏輯覆蓋中,每個語句至少執行一次,而且使判定表達式中的每個條件都取到各種可能的結果,這種覆蓋稱為()。A.語句覆蓋 B.判定覆蓋 C.條件覆蓋 D.全部覆蓋 答案:C
軟件設計階段一般可分為()。A.邏輯設計與功能設計 B.概要設計與詳細設計 C.概念設計與物理設計 D.模型設計與程序設計 答案:B
通過執行對象的操作改變對象的屬性,但它必須通過()的傳遞。A.接口 B.消息 C.信息 D.操作 答案:B
需求分析最終結果是產生()。A.項目開發計劃 B.可行性分析報告 C.需求規格說明書 D.設計說明書 答案:C
()著重反映的是模塊間的隸屬關系,即模塊間的調用關系和層次關系。A.程序流程圖 B.數據流圖 C.E-R圖 D.結構圖 答案:D
需求分析()。
A.要回答“軟件必須做什么?” B.要求編寫軟件需求說明書
C.系統分析員可以采用訪談、簡易的應用規格說明技術獲取用戶需求 D.以上都對 答案:D
按照軟件配置管理的原始指導思想,受控制的對象應是()。A.軟件元素 B.軟件配置項 C.軟件項目 D.軟件過程 答案:B
()著重測試軟件功能。A.黑盒測試 B.白盒測試 C.功能測試 D.循環測試 答案:C
軟件配置項是軟件配置管理的對象,指的是軟件工程過程中所產生的()。A.接口 B.軟件環境 C.信息項 D.版本 答案:C
在軟件結構中,如果兩個矩形之間有直接相連,表示它們存在()關系。A.鏈接 B.調用 C.并列
D.順序執行 答案:B
將幾個邏輯上相似的成分放在一個模塊中,該模塊的內聚度是()。A.邏輯性 B.瞬時性 C.功能性 D.通信性 答案:A
()模型表示了對象的相互行為。A.對象 B.動態 C.功能 D.分析 答案:B
結構化分析(SA)最為常見的圖形工具是()。A.程序流程圖 B.實體聯系圖 C.數據流圖 D.結構圖 答案:C
與計算機科學的理論研究不同,軟件工程是一門()學科。A.理論性 B.工程性 C.原理性 D.心理性 答案:B
下列方式中,不是由數據元素組成數據方式的是()。A.順序 B.層次 C.選擇 D.重復 答案:B
在程序的描述和分析中,用以指明數據來源、數據流向和數據處理的輔助圖形是(A.瀑布模型圖 B.數據流圖 C.數據結構圖 D.業務圖 答案:B
軟件部分的內部實現與外部可訪問性分離,這是指軟件的()。A.繼承性 B.共享性。)C.封裝性 D.抽象性 答案:C
()是軟件開發人員為用戶準備的有關該軟件使用、操作、維護的資料。A.開發文檔 B.管理文檔 C.用戶文檔 D.軟件文檔 答案:C
模塊內的某成分的輸出是另一成分的輸入,該模塊的內聚度是()的。A.功能性 B.順序性 C.邏輯性 D.瞬時性 答案:B
面向對象開發方法子概念和表示上的一致性保證了分析和設計的()過渡。A.因難 B.不容易 C.平滑 D.順序 答案:C
詳細設計規格說明通常使用()手段。A.IPO圖與層次圖 B.HIPO C.IPO或PDL D.HIPO或PDL 答案:D
一個項目是否開發,從經濟上來說是否可行,歸根結底是取決于()。A.成本的估算 B.項目計劃 C.工程管理 D.工程網絡 答案:A
程序的三種基本控制結構是()。A.過程、子程序和分程序 B.順序、選擇和重復 C.遞歸、堆棧和隊列 D.調用、返回和轉移 答案:B
一個程序如果把它他為一個整體,它也是只有一個入口,一個出口的單個順序結構,這是一種(A.結構程序 B.組合的過程 C.自頂向下設計。)D.分解過程 答案:B
數據元素組成設計的方式有()類型。A.順序 B.選擇 C.重復
D.以上全是 答案:D
結構分析方法就是面向()自頂向下逐步求精進行需求分析的方法。A.目標 B.數據流 C.功能 D.對象 答案:B
屬于軟件設計的基本原理的是(A.數據流分析設計 B.變換流分析設計 C.事務流分析設計 D.模塊化 答案:D。)
第三篇:軟件工程總結
軟件工程總結
軟件的特點
? 軟件是一種邏輯實體。
? 軟件的開發,是人的智力的高度發揮,而不是傳統意義上的硬件制造。? 軟件維護與硬件的維修有著本質的差別。
? 軟件的開發和運行常常受到計算機系統的限制,對計算機系統有著不同程度的依賴性。
? 軟件的開發至今尚未完全擺脫手工藝的開發方式,使軟件的開發效率受到很大限制。
? 軟件的開發是一個復雜的過程。
? 軟件的成本非常高昂。軟件工程就是建立和使用一套合理的工程原理,從而經濟地獲得可靠的、可以在實際機器上高效運行的軟件。軟件工程的特性:
1.軟件工程關注于大型程序的構造 2.軟件工程的中心課題是控制復雜性 3.軟件經常變化
4.開發軟件的效率非常重要 5.和諧地合作是開發軟件的關鍵 6.軟件必須有效地支持它的用戶
7.在軟件工程領域中是由具有一種文化背景的人替具有另一種文化背景的人
? PM(Project Manager):負責整個項目計劃的制定、進度的跟蹤、監督以及與客戶的溝通等。
? PL(Project Leader):負責與項目有關的技術問題的調研、指導、培訓以及項目進度的跟蹤等。
Page 1of 17
? CS(Consultant):負責與客戶確認項目中所涉及的業務流程以及向項目組其他成員說明項目的業務流程。
? SE(Software Engineer):負責項目的概要設計、詳細設計以及開發架構的制定和系統測試用例的書寫。? PG,也叫CD(Coder):負責寫代碼以及單體測試.? TE(Tester):負責集成測試、壓力測試以及用戶測試。
1.2 軟件工程定義
? 用分階段的生命周期計劃嚴格管理 ? 堅持進行階段評審 ? 實行嚴格的產品控制 ? 采用現代程序設計技術 ? 結果應能清楚地審查 ? 開發小組的人員應該少而精
Page 2of 17
? 承認不斷改進軟件工程實踐的必要性
Page 3of 17
增量模型的優點
1.在較短時間內向用戶提交可完成部分工作的產品,并分批、逐步地向用戶提交產品。從第一個構件交付之日起,用戶就能做一些有用的工作。
2.整個軟件產品被分解成許多個增量構件,開發人員可以一個構件一個構件地逐步開發。
3.逐步增加產品功能可以使用戶有較充裕的時間學習和適應新產品,從而減少一個全新的軟件可能給客戶組織帶來的沖擊。
采用增量模型比采用瀑布模型和快速原型模型需要更精心的設計,但在設計階段多付出的勞動將在維護階段獲得回報。增量模型的困難
1.在把每個新的增量構件集成到現有軟件體系結構中時,必須不破壞原來已經開發出的產品。此外,必須把軟件的體系結構設計得便于按這種方式進行擴充,向現有產品中加入新構件的過程必須簡單、方便,也就是說,軟件體系結構必須是開放的。
2.開發人員既要把軟件系統看作整體。又要看成可獨立的構件,相互矛盾。多個構件并行開發,具有無法集成的風險
螺旋模型(Spiral Model)螺旋模型將瀑布模型和增量模型結合起來,加入了風險分析。在該模型中,軟件開發是一系列的增量發布,早期的迭代中,發布的增量可能是一個紙上的模型或原型,在以后的迭代中,逐步產生系統更加完善的版本。螺旋模型的基本思想是降低風險。
Page 4of 17
統一開發過程(RUP)極限編程(敏捷開發過程)(XP)
軟件 =程序+數據+文檔軟件危機: 原因,現象,辦法(軟件工程學)軟件工程(學):開發、運行和維護軟
Page 5of 17
件的系統方法軟件工程3 個要素:方法、工具和過程。軟件生命周期:定義,開發,運行維護 軟件過程:瀑布模型+RUP
第二章
可行性研究的目的:
用小的代價在盡可能短的時間內確定問題是否能夠解決。可行性研究的內容:(1)技術可行性(2)經濟可行性(3)操作可行性
? ? ?
(4)社會可行性(法律可行性)(5)抉擇
可行性研究過程: 1.復查系統規模和目標
?確保分析員提交的報告書確實是用戶要求解決的問題。2.研究目前正在使用的系統
? 現有系統要完成的工作,就是新系統所必需具備的功能。
? 現有系統存在的缺點,新系統必需加以改進。
? 現有系統所不具備功能,又是用戶必須的,則新系統一定要予以增加。3.導出新系統的高層邏輯模型 4.進一步定義問題 用戶使用可能性 時間進度可行性 組織和文化上的可行性
Page 6of 17
? 定義系統目標‐復查系統目標和規模‐研究現有系統‐設計新系統‐再定義系統目標。重復這個過程,直到提出新的系統邏輯模型。
5.導出和評價供選擇的解法;針對多種供選方案,用戶應從下面三個方面進行篩選:
? 從技術角度排除那些不現實的方案; ? 從操作角度去掉那些用戶不能接受的方案;
? 從經濟角度估算每個可能的系統的成本/效益。6.推薦建議方案 向用戶提出推薦的方案,在推薦方案中應清楚地表明:
? 本項目的開發價值; ? 推薦這個方案的理由; ? 制定實現項目的進度表。7.草擬開發計劃
? 工程的進度;
? 人才資源的需求及使用;
? 設備資源的需求及使用(軟、硬件工具)、估算生存周期每個階段的成本; ? 給出下一階段(需求分析)的詳細進度表和成本估計。8.書寫文檔提交審查
Page 7of 17
Page 8of 17
Page 9of 17
數據流圖和數據字典共同構成系統的邏輯模型 沒有數據字典數據流圖就不嚴格,沒有數據流圖 數據字典也難于發揮作用。第3 章需求分析
需求分析是軟件定義時期的后一個階段,它的基本任務不是確定系統怎樣完成它的工作,而是確定系統必須完成哪些工作,也就是對目標系統提出完整、準確、清晰、具體的要求。
獲取的需求的表達方式:(1)需求列表
需求與系統的特殊視角或環境的關系(2)業務流程圖(狀態/活動圖)(3)數據流圖(4)實體‐聯系圖 ER 圖: 實體關系屬性
驗證軟件需求的正確性,一般應從4 個方面進行:(1)一致性所有需求必須是一致的,任何一條需求不能和其 他需求互相矛盾。
(2)完整性需求必須是完整的,規格說明書應該包括用戶需
Page 10of 17
要的每一個功能或性能。
(3)現實性指定的需求應該是用現有的硬件技術和軟件技術基本上可以實現的。(4)有效性必須證明需求是正確有效的,確實能解決用戶面 對的問題。第四章總體設計
總體設計過程一般分為兩個階段
?系統設計階段:確定系統的物理實現方案
?結構設計階段:確定軟件的結構設計模塊的衡量標準:
內聚耦合
耦合: 數據耦合控制耦合公共環境耦合內容耦合結論:盡量使用數據耦合,少用控制耦合,限制公共
環境耦合的范圍,完全不用內容耦合。
內聚:標志著一個模塊內各個元素彼此間結合的 緊密程度。內聚有六種,由弱到強分別為:(1)偶然內聚:
一個模塊程序A 和程序B 內有一組語句在兩處或多處出現,于是把這組語句作為一個模塊以節省內存,叫偶然內聚。(2)邏輯內聚
Page 11of 17
(3)時間內聚
? 例如,模塊完成各種初始化工作或當一個模塊處理
意外故障時,這個模塊必須在中斷處理的同時完成關閉文件、報警和保留現場等任務,這就構成了時間內聚。(4)通信內聚(5)順序內聚(6)功能內聚
對于一個模塊而言,模塊自身的內聚越強,模塊間的耦合就越小,模塊所具有的獨立性就越好。可以說高內聚低耦合是我們進行軟件設 計的一貫原則
面向數據流的設計方法:
信息流的兩種類型: 變換流事務流(重點)
Page 12of 17 事務流Page 13of 17
第七章 實現 軟件測試準則
(1)所有測試都應該能追溯到用戶需求。(2)盡早的完成測試計劃
(3)把parteo 原理運用到軟件測試中(4)應該從小模塊測試開始,逐步進行測試(5)窮舉測試時不可能的
Page 14of 17
(6)好由獨立的第三方進行測試測試方法
1.白盒測試知道詳細的內部構造,知道是怎么運行的
2.黑盒測試只知道軟件的詳細功能,以及各個功能之間的的產生結果(也就是流程)
測試步驟
1.模塊測試 ‐‐‐ 單元 2.子系統測試 ‐‐‐ 局部 3.系統測試 ‐‐‐ 集成
4.驗收測試 ‐‐‐ 用戶參與 5.平行運行 ‐‐‐ 新舊共存集成測試:
1、非漸增式測試方法,即:先分別測試每個模塊,再把所有模塊按設計要求放在一起結合成所要的程序進行測試。
2、漸增式測試,即:先把下一個要測試的模塊同已經測試好的那些模塊結合起來進行測試,測試完以后再把下一個應該測試的模塊結合進來測試。這種每次增加一個模塊的方法實際上同時完成單元測試和集成測試.目前在進行集成測試時普遍采用漸增式測試方法。第八章軟件維護
維護的類型有四種: 改正性維護(改正錯誤)適應性維護(硬件環境)擴充與完善性維護(功能完善)
預防性維護(方法的改進)提高可維護性的方法:
? 建立明確的軟件質量目標和優先級 ? 使用提高軟件質量的技術和工具
Page 15of 17
? 進行明確的質量保證審查 ? 選擇可維護的程序設計語言 ? 改進程序的文檔
第十三章軟件項目管理評估軟件規模的技術: 技術 功能點技術
依據軟件的信息與特性,以及軟件的復雜度工作量的估算
依據模型估算出軟件的開發工作量軟件項目的特點:
無形的產品,難于理解,算法,概念等的集合目標系統具有一定的模糊性
軟件看法具有異變性
開發文檔量大 開發技術強代碼行軟件開發人員的特點:
1.高知識、高技術、個人作用突出
2.多層次
3.知識更新快,知識更新快這是軟件行業顯著的特點。4.流動性大
軟件質量保證的措施:
Page 16of 17
技術審查的必要性
走查 審查 序正確性 甘特圖
在進度報告中很有效在作管理陳述時易于讀懂和使用。作為計劃編制工具不是太強。沒有表示活動間的邏輯關系。程
Page 17of 17
第四篇:選擇題
選擇題和簡答題
1.標志著中國新民主主義革命勝利的歷史事件是 A.中華民國的成立 B.抗日戰爭的勝利
C.中華人民共和國的成立 D.三大改造的完成
2.在第一屆中國人民政治協商會議上,被選為中央人民政府主席的是 A.毛澤東 B.周恩來 C.劉少奇 D.朱德
3.升旗儀式上,當五星紅旗冉冉升起的時候,我們心中總會充滿自豪感和使命感。最早將五星紅旗定為我國國旗的會議是
A.中國共產黨第一次全國代表大會 B.第一屆中國人民政治協商會議 C.第一屆全國人民代表大會 D.中國共產黨第八次全國代表大會
4.歌曲《走進新時代》唱道:“我們唱著東方紅,當家作主站做起來,我們唱著春天里的故事,改革開放富起來??”。中國人民“當家做主站起來”開始于 A.中華民國成立 B.中國共產黨成立 C.中華人民共和國成立 D.改革開放 5.下列有關開國大典的表述錯誤的是
A.北京30萬軍民齊集天安門廣場B.毛澤東升起第一面五星紅旗 C.舉行了盛大的閱兵式 D.54門禮炮齊鳴49響
6.1949年,某次會議通過了以下若干決議:“??選舉毛澤東為中央人民政府主席;改北平為北京,并作為中華人民共和國的首都??”這次會議應該是 A.第一屆人國人民代表大會 B.中國人民政治協商會議 C.七屆二中全會 D.十一屆三中全會
7.1949年,毛澤東致信宋慶齡:“新的政治協商會議將在華北召開,中國人民革命歷盡艱辛,中山先生遺志迄今始告實現。”信所說的這次會議通過并被中央人民政府接受其成為新政府施政方針的重要文獻是 A.《中華民國臨時約法》 B.《共同綱領》
C.《中華人民共和國憲法》 D.《中華人民共和國中央人民政府公告》(2)簡述西藏和平解放的基本史實。8.祖國大陸實現統一的標志是
A.抗日戰爭勝利 B.人民解放占領南京 C.中華人民共和國成立 D.西藏和平解放 9.藏族歌唱家才旦卓瑪一首《翻身農奴把歌唱》唱出了西藏百萬農奴翻身后的喜悅,歌詞中“驅散烏云見太陽”指的是
A.1949年新中國成立 B.1950年抗美援朝開始 C.1951年西藏和平解放 D.1952年土地改革完成(3)講述黃繼光、邱少云等英雄事跡,體會志愿軍戰士的愛國主義和革命英雄主義精神。10.時下人們愛用“最美”這一詞贊美在危難關頭舍己救人的英雄人物,如“最美女教師張麗莉” “最美司機吳斌”??在二十世紀五十年代人們用“最可愛的人”來贊美抗美援朝中涌現出的英雄人物。被譽為“最可愛的人”的英雄人物是
①黃繼光 ②董存瑞 ③邱少云 ④楊靖宇 A.①② B.②③ C.①③ D.③④
11.著名的上甘嶺戰役發生在哪場戰爭中?
A.北伐戰爭 B.抗日戰爭 C.解放戰爭 D.抗美援朝戰爭
(4)知道《中華人民共和國土地改革法》,理解廢除封建土地制度的意義。12.徹底摧毀了我國存在兩千多年的封建土地制度的是
A.土地改革運動 B.農業合作化運動 C.人民公社化運動 D.家庭聯產承包責任制
(5)了解第一個五年計劃的基本任務。
13.新中國成立時工業十分落后。然而,短短幾年間新中國就生產出了第一批自己的汽車,結束了中國不能制造汽車的歷史。這主要得益于 A.推行了土地改革 B.中共八大的召開
C.實施了“一五”計劃 D.建設社會主義總路線的貫徹 14.我國的第一個五年計劃就是集中力量發展以下哪一產業? A.農業 B.手工業 C.輕工業 D.重工業 15.有一首非常動聽的歌曲《天路》,唱出了青藏鐵路通車后藏族人民的心聲,而建成通車的青藏公路已經為西藏的發展做出了巨大的貢獻。青藏公路建成于 A.第一個五年計劃時期 B.社會主義探索時期C.文化大革命時期D.改革開放時期
16.為了便于記憶歷史知識,我們常用簡潔的詞語來總結某一時期的主要建設成就。“一橋”、“二鐵”、“三藏”、“四廠”總結的是我國哪一時期的建設成就?
A.l953~1957年 B.1957~1965年 C.1966~1976年 D.1978~2000年(6)知道1954年頒布了第一部《中華人民共和國憲法》。17.12月4日是全國普法宣傳日,2011年的主題是“深入學習宣傳憲法,大力弘揚法治精神”。新中國第一部社會主義類型的憲法頒布于 A.1949年 B.1953年 C.1954年 D.1956年(7)知道對農業、手工業和資本主義工商業的社會主義改造基本完成是社會主義制度在我國建立的標志。
18.社會主義制度在我國初步建立的標志是
A.土地改革的完成 B.《中華人民共和國憲法》的頒布 C.三大改造的完成 D.第一個五年計劃的完成 19.我國開始進入社會主義初級階段的標志是
A.中華人民共和國的成立 B.土地改革的基本完成 C.《中華人民共和國憲法》的頒布 D.三大改造的基本完成(8)了解“大躍進”和人民公社化運動是探索社會主義建設道路過程中的嚴重失誤。
20.在探索社會主義建設道路的過程中,中共“八大”成為良好的開端。下列選項中,能夠說明這一良好開端的是
A.正確分析國內主要矛盾,確定主要任務是大力發展社會生產力 B.決定實施“大躍進”、人民公社化運動 C.決定發動“文化大革命” D.做出實行改革開放的戰略決策
21.不同時代的宣傳畫體現了不同的時代風貌。下圖這幅夸張的宣傳畫出現的時代背景是
A.中華人民共和國的成立 B.“一五”計劃的實施 C.“大躍進”運動的開展 D.“文化大革命”的進行
22.中國共產黨在探索建設社會主義道路中的一次嚴重失誤是 A.社會主義三大改造 B.中蘇關系惡化 C.“大躍進”和人民公社化運動 D.中共八大(9)講述王進喜、鄧稼先、焦裕祿等先進人物艱苦創業和全心全意為人民服務的事跡。
23.“向 同志學習。憎愛分明的階級立場,言行一致的革命精神,公而忘私的共產主義風格。奮不顧身的無產階級斗志。”的題詞中的空格處應為 A.雷鋒 B.歐陽海 C.羅盛教 D.齊白石
24.20世紀60年代.他為了治理蘭考縣水澇、風沙、鹽堿三害,親自帶隊到災區調查。洪水泛濫的時候,他站在齊腰深的洪水里,畫出一張張水勢流向圖。人民稱頌他是“黨的好干部”。他是
A.鄧稼先 B.王進喜 C.雷鋒 D.焦裕祿
(10)簡述“文化大革命”中民主法制和國民經濟遭受嚴重破壞的主要史實,認識“文化大革命”給國家和人民帶來了嚴重災難。25.對“文化大革命”的評論恰當的是
A.廢除了封建土地制度 B.解放了農業生產力
C.基本確立了社會主義制度 D.給國家和人民帶來了巨大災難
26.“文化大革命”期間,許多領導干部、專家學者和民主人士被誣為“走資本主義道路的當權派”,“反動學術權成”等,遭到批斗、迫害。這些現象充分反映了“文化大革命”期間
A.民主與法制遭到嚴重的踐踏 B.沒有制定法律
C.“走資派”企圖奪取政權 D.黨中央出現了修正主義
(11)認識中國共產黨十一屆三中全會是我國社會主義現代化建設史上的偉大轉折。
27.生活的細節不經意間也會折射出社會政治光譜。1977年的上海市高考作文題自是《在抓綱治國的日子里》。“抓綱”在當時是指 A.以經濟建設為中心 B.以階級斗爭為中心 C.以文化建設為中心 D.以軍事斗爭為中心
28.中國共產黨十一屆三中全會是新中國歷史上的一個偉大轉折,這次會議的召開標志著
A.社會主義市場經濟體制的確立 B.社會主義制度的確立 C.黨和國家的工作重心發生轉移 D.政治體制改革全面啟動
29.會議重新確立解放思想、實事求是的思想路線,作出將黨和國家的工作重心轉移到經濟建設上,是建國以來黨的歷史上具有深遠意義的轉折。這次會議是
A.中共十一屆三中全會B.中共十四大.C中共十二大 D.中共十五大
(12)知道家庭聯產承包責任制的主要內容,了解生產關系一定要適應生產力發展需要的基本原則
30.中共十一屆三中全會后,農村實行家庭聯產承包責任制,農民從中獲得了 A.土地所有權 B.村民自治權 C.生產自主權 D.鄉鎮企業興辦權 31.2012年2月1日,中共中央、國務院授權新華社發布了《關于加快推進農業料技創新持續增強農產品供給保障能力的若干意見》,這是新世紀以來指導“三農”工作的第九個中央一號文件,充分體現了黨和政府對“三農”問題的重視。新中國成立后,中國農村經歷了多次重要變革,在今天的社會主義新農村建設中仍然發揮著巨大作用的是
A.土地改革運動 B.農業合作化運動 C.人民公社化運動 D.家庭聯產承包責任制
(13)以深圳等經濟特區的建立為例,探討經濟特區在社會主義現代化建設中的作用和影響。
32.“邊陲小鎮,首批特區,一夜崛起,開放窗口”所描述的城市是 A.珠海 B.汕頭 C.廈門 D.深圳
33.中國對外開放已形成全方位、多層次、寬領域的格局,有力地促進了中國經濟的發展。被譽為“對外開放排頭兵”的是
A.1980年設立的四個經濟特區 B.1985年開放的長江三角洲經濟開放區 D.1992年開放的長江沿岸城市 C.1990年設立的上海浦東開發區 34.“如果我們追溯新中國融入世界的歷史,那1980年打開的第一扇‘窗’則需我們永遠銘記。”1980年我國首先設立的四個經濟特區是 ①深圳 ②珠海 ③上海 ④汕頭 ⑤廈門
A.①②③④ B.②③④⑤ C.①③④⑤ D.①②④⑤
35.進入二十世紀九十年代,以哪里開發開放為龍頭,進一步開放長江沿岸城市?
A.深圳 B.北海 C.秦皇島 D.上海浦東 36.我國對外開放的新格局是
A.經濟特區——沿海開放城市——沿海經濟開放區——內地 B.沿海開放城市——沿海經濟開放區——經濟特區——內地 C.沿海開放城市——經濟特區——沿海經濟開放區——內地 D.經濟特區——沿海經濟開放區——沿海開放城市——內地
(14)認識鄧小平理論是改革開放和社會主義現代化建設的指導思想。
37.“一九九二年,又是一個春天,有一位老人在中國的南海邊寫下詩篇。天地間蕩起滾滾春潮,征途上揚起浩浩風帆。”歌詞中盛贊的這位老人“在中國的南海邊寫下詩篇”指的是
A.倡導改革開放,實現偉大轉折 B.南方談話,改革開放向縱深發展 C.建立經濟特區,實行對外開放 D.港澳回歸,實踐“一國兩制”構想 38.十一屆三中全會召開以后,中國共產黨領導全國人民走上了改革開放的新征程。下面不屬于改革開放后創新舉措的是
A.農村實行家庭聯產承包責任制 B.設立經濟特區
C.實行民族區域自治 D.國有企業實行政企分開
39.鄧小平明確提出“把馬克思主義的普遍真理同我國的具體實際結合起來,走自己的路,建設有中國特色的社會主義”的會議是
A.中共十二大 B.中共十三大 C.中共十四大 D.中共十五大
40.“20世紀的最后20年,在世界的東方,中國進行了一場卓有成效的社會變革,解放了思想的中國人煥發出蓬勃的創造力,書寫了一個時代最為傳奇的一頁。”這次變革的總設計師是
A.毛澤東 B.鄧小平C.江澤民 D.胡錦濤
41.“我們唱著東方紅,當家作主站起來;我們講著春天的故事,改革開放富起來。”這首歌描繪的兩位領導人是 A.毛澤東和鄧小平B.孫中山和鄧小平C.孫中山和毛澤東 D.劉少奇和鄧小平
(15)了解我國實行民族區域自治制度的主要史實。
42.新中國成立后,國家在少數民族聚居地區實行的基本政治制度是 A.設經濟特區 B.民族區域自治 C.設特別行政區 D.一國兩制 43.民族區域自治作為我國一項基本國策和基本政治制度,其作用包括
①有利于祖國統一 ②有利于民族平等 ③有利于民族團結 ④有利于地區發展 A.①②③ B.②③④ C.①②④ D.①②③④
(16)簡述香港、澳門回歸的史實,說明“一國兩制”的科學構想是推進祖國和平統一大業的基本方針。
44.我國能夠成功地恢復對香港、澳門行使主權的主要原因是
A.國際地位的提高B.綜合國力的增強C.軍事力量的壯大D.“一國兩制”的構想
45.湖南省有“湘西土家族苗族自治州”、“江華瑤族自治縣”,它們的設置與我國哪一項基本政治制度有關?
A.人民代表大會制度 B.多黨合作和政治協商制度 C.民族區域自治制度 D.“一國兩制” 46.香港回歸祖國15年來,歷經了兩次金融危機的考驗,繼續保持繁榮和穩定,國際金融中心的地位更加穩固。這充分證明了 具有強大的生命力。
A.人民代表大會制度B.改革開放基本國策C.民族區域自治制度 D.一國兩制
47.香港特別行政區第四任行政長官選舉于2012年3月25日舉行投票,梁振英以689票在選舉中勝出,當選為香港特別行政區第四屆行政長官。中國恢復對香港行使主權是在
A.1949年10月1日B.1979年7月1日 C.1997年7月1日 D.1999年12月20日 48.澳門回歸以來,“國民生產總值以年均15%的增幅快速增長??成為全球最活躍的微型經濟體。”這些成就取得的政治性因素是D A.民族區域自治 B.人民代表大會制度 C.獨立自主外交 D.“一國兩制”方針
(17)了解祖國大陸與臺灣經濟文化交往日益密切的史實,認識祖國統一是歷史發展的必然趨勢。
49.《反分裂國家法》第五條:“??以和平方式實現祖國統一,最符合臺灣海峽兩岸同胞的根本利益。國家以最大的誠意,盡最大的努力,實現和平統一。”實現祖國和平統一的前提和基礎是
A堅持走社會主義道路B堅持互利互補原則C海峽兩岸直接實現通航D堅持一個中國原則
50.“小時候,鄉愁是一枚小小的郵票,我在這頭,母親在那頭。??而現在,鄉愁是一灣淺淺的海峽,我在這頭,大陸在那頭。”為結束海峽浪岸的分離狀況,我們提出的基本方針是
A.“一國兩制” B.民族區域自治 C.改革開放 D.和平共處 51.改革開放以來,在實現祖國統一大業方面取得的成就有 ①西藏和平解放 ②提出“一國兩制” ③香港、澳門回歸 ④海峽兩岸的交往日益密切
A.①②③ B.①②④ C.①③④ D.②③④
(18)知道和平共處五項原則的主要內容,簡述周恩來出席萬隆會議的史實。52.在1955年萬隆會議上,提出“求同存異”方針的我國領導人是 A.毛澤東 B.周恩來 C.鄧小平D.胡錦濤
53.1953年底,中國政府首次提出了和平共處五項原則,在國際社會上產生了廣泛而深刻 影響。其內容是
①互相尊重主權和領土完整 ②互不侵犯 ③互不干涉內政 ④獨立自主和平外交 ⑤平等互利 ⑥和平共處
A.①②③⑤⑥ B.①②③④⑤ C.①②④⑤⑥ D.②③④⑤⑥
54.由周恩來倡導的成為國際上處理國與國之間相互關系基本準則是
A.四項基本原則B.和平共處五項原則C.求同存異方針D.獨立自主和平外交方針
(19)講述我國恢復在聯合國合法席位和中美建交等史實。
55.標志著中美關系結束敵對、隔絕狀態,開始走向正常化的歷史事件是 A.抗美援朝 B.中國恢復在聯合國的席位 C.尼克松總統訪華 D.中美正式建立外交關系 56.周恩來總理曾說:“我們再等它三年、五年??等我們的力量強大了,再進去不遲。總有一天要請我們進去。”他說的“請我們進去”是指 A.中印建交 B.出席萬隆會議 C.重返聯合國 D.中美建交 57.下列有關新中國外交成就的表述中,錯誤的是 A.1953年提出和平共處五項原則
B.1955年,在萬隆會議上提出“求同存異”方針 C.1971年,與美國正式建立外交關系 D.2001年,承辦亞太經合組織會議
58.新中國成立以來,面對紛繁變幻的國際形勢,我國政府處理對外關系始終堅持的基本立場是
A.獨立自主 B.求同存異 C.互不侵犯 D.維護主權 59.圖5是1949—2009年中國與外國建交狀況曲線圖,新中國出現三次建交高峰,導致第二次建交高峰的直接原因是
A.和平共處五項原則的提出B.中美關系的改善C.抗美援朝戰爭的勝利D.蘇聯解體(20)知道“兩彈一星”的成功研制、“秈型雜交水稻”的培育推廣等標志性成果,以及“863”計劃的制定。
60.曾經有一位學者高度評價袁隆平:“是他使饑餓的威脅退卻,解決了十幾億人口的吃飯問題。”袁隆平的突出貢獻是
A.研制原子彈 B.培育雜交水稻C.設計三峽工程 D.開發互聯網技術 61.建國后,為了打破美、蘇等國對核武器和航天技術的壟斷,我國決定 A.建立人民空軍 B.加入亞太經合組織 C.研制“兩彈一星” D.實施“863計劃”
62.科技發展影響世界,科學名人世人永記。我國著名科學家鄧稼先的貢獻是 A.提出萬有引力定律 B.發現電磁感應原理 C.研制“兩彈一星” 63.1964年10月,我國取得重大科研成果是
A.第一顆原子彈試爆成功 B.第一枚近程導彈發射成功 C.第一顆人造地球衛星發射成功 D.第一顆氫彈試爆成功 64.1970年,我國用長征號運載火箭,成功發射了第一顆 A.導彈 B.氣象衛星 C.人造地球衛星 D.實用通信衛星
65.“兩彈一星”中的“一星”指人造地球衛星。1970年我國成功發射的第一顆人造地球衛星是
A.天宮一號 B.嫦娥一號 C.東方紅一號 D.神舟一號 66.在生物工程技術領域作出重大貢獻的人物是 A.鄧稼先 B.王進喜 C.袁隆平D.焦裕祿
67.1996年作為第八個領域列入《863計劃綱要》并作為高技術發展重點的是
A.信息技術 B.生物技術 C.能源技術 D.海洋高技術
(21)列舉九年義務教育基本普及和高等教育迅速發展的史實,認識教育發展在“科教興國”戰略中的地位。
68.九年義務教育是黨和政府實施“科教興國”戰略的奠基工程。九年義務教育屬于
A.學前教育 B.中等教育 C.高等教育 D.基礎教育(22)了解我國文化藝術和體育事業的主要成就。
69.2012年倫敦奧運會即將開幕,你知道上一屆奧運會是哪一年申奧成功的嗎?是第幾屆現代奧運會?請選出正確的選項
A.2001年第29屆 B.2008年第29屆 C.2008年第30屆 D.2001年第30屆
(23)以人們衣、食、住、行、用等方面的變化為例,說明改革開放對人們生活方式所產生的影響。
70.下列能夠說明十一屆三中全會后,城鄉人民生活發生巨變的有 ①憑糧票、肉票等票證購物 ②自駕游成為人們休閑的一種方式 ③吃“公家飯”、端“鐵飯碗”成為大家的追求 ④輕松愜意地網上淘寶、購物 ⑤“低碳”和“原生態”生活成為時尚 A.①②③ B.②④⑤ C.①④⑤ D.②③④
(24)知道就業制度的變化,認識社會發展改變了人們的就業觀念。
71.“打破鐵飯碗”、“人才招聘會”、“自主就業”等流行語出現突出反映了改革開放以來我國
A.人民生活的提高 B.綜合國力的提升 C.醫保制度的建立 D.就業制度的變化
二、非選擇題(共20題): 1.簡要回答第一屆中國人民政治協商會議召開的背景、會議最重要的兩項內容,(3分)說明這一屆政協會議的作用。(2分)2.(11分)閱讀下列材料,回答問題。
材料一 “深圳的發展和經驗證明,我們建立經濟特區的政策是正確的。” “特區是個窗口,是技術的窗口,管理的窗口,知識的窗口??特區成為開放的基地,不僅在經濟方面、培養人才方面使我們得到好處,而且會擴大我國的對外影響。” ——鄧小平
材料二 1980年——2005年深圳經濟發展變化情況簡表
——摘編自紀錄片《復興之路》解說詞 請回答:
(1)材料一中的“政策“首先在哪兩個省份實行?(4分)(2)據材料二說明深圳經濟發展的變化。(3分)
(3)綜合以上材料,分析經濟特區在社會主義現代化建設中的作用。(4 分)
3.走近新時代(12分)
材料一 1979年1月1日,美國《時代》周刊封面出現了一位中國老人 的畫像(如圖④所示),其標題為“鄧小平,中國新時代的形象”。..... 材料二 在過去計劃經濟體制下,政府過多的干預著國有企業的生產經
營活動,導致企業活力不夠,效率不高,缺乏競爭力。因此“松綁”成為了二十世紀80年代中期,中國國有企業改革的最強音。材料三 歷史進入了二十一世紀,隨著國民經濟“十一五”計劃的順利完成,我國綜合國力進一步增強,在工業、農業、科技等領域取得了輝煌成績,實現了社會主義現代化建設的巨大成就。閱讀上述材料,回答問題:(1)根據材料一并結合所學知識,指出“中國新時代”始于我黨的哪次會議?鄧小平入選《時代》周刊封面人物的原因是什么?(4分)(2)根據材料二指出制約國有企業發展的原因是什么?結合所學知識,指出國有企業的“松綁”是怎樣進行的?(4分)(3)根據材料三并結合所學知識,指出我國社會主義現代化建設的指導思想是什么?進入新時代以來,我國現代化建設的巨大成就有哪些?(請試舉1例)(4分)
4.閱讀下列材料
材料一 “一九五三年將是我國進行大規模建設的第一年。”
“國家建設包括經濟建設、國防建設和文化建設,而以經濟建設為基礎。” “工業化——這是我國人民百年來夢寐以求的理想,這是我國人民不再受帝國主義欺負不再過窮困生活的基本保證,因此這是全國人民的最高利益。全國人民必須同心同德,為這個最高利益而積極奮斗。” ——《人民日報》1953年元旦社論
材料二 “我們懷著十分興奮的心情跨入一九七九年。”
“把全黨工作的著重點轉移到社會主義現代化建設上來,是一個偉大的戰略轉變。” “實行四個現代化,大幅度地提高目前落后的生產力,必然要多方面地改變同生產力發展不適應的生產關系和上層建筑,改變一切不適應的管理方式、活動方式和思想方式。”
——《人民日報》1979年元旦社論 材料三 “在邊遠地區、落后地區和貧困地區,群眾要求包產到戶的,應當支持群眾的要求應當支持群眾的要求,可以包產到戶,也可以包干到戶,并在一個較長的時間內保持穩定;在一般地區,已經實行包產到戶的,如果群眾不要求改變,就應當允許繼續實行。” ——《中共中央關于印發進一步加強和完善農業生產責任制的幾個問題的通知》1980年9月 請回答(1)依據材料一結合所學知識回答:全國人民的“最高利益”指的是什么?(1分)黨和政府為實現這個“最高利益”而編制的建設規劃叫什么?(1分)(2)材料二中“我們十分興奮的心情”因何而起?(2分)請指出“戰略轉變”前后,黨的工作重心分別是什么?(2分)(3)結合材料三回答:為了改變農村落后的生產面貌,農民作出了何種嘗試?(1分)通過這些嘗試而逐步形成的農村改革制度叫什么?(1分)這種制度的全面推行,使農村發生了怎樣的變化?(2分)
(4)綜合上述材料結合所學知識,請你為我國現代化經濟建設建言獻策。(2分)
5.讀圖,回答問題(6分)
圖一 毛澤東會見美國總統尼克松 圖二 毛澤東會見日本首相田中角榮(1)圖
一、圖二反映的史實是毛澤東為國家富強、人民幸福在哪一領域做出的不懈努力?(2分)
(2)該領域在當時取得的重大成就對中國、世界各有何重大影響?(4分)
第五篇:軟件工程
2.2軟件開發的基本策略
人們都有自己的世界觀和方法論,能自然而然地運用于生活和工作中。同樣,程序員腦子里的軟件工程觀念會無形地支配其怎么去做事情。軟件工程三十年的發展,已經積累了相當多的方法,但這些方法不是嚴密的理論。實踐人員不應該教條地套用方法,更重要的是學會“選擇合適的方法”和“產生新方法”。有謀略才會有好的戰術。幾千年前,我們的祖先就在打鬧之際寫下了很多心得體會,被現代人很好地運用于工業和商業。本節講述軟件開發中的三種基本策略:“復用”、“分而治之”、“優化——折衷”。
2.2.1復用
復用就是指“利用現成的東西”,文人稱之為“拿來主義”。被復用的對象可以是有形的物體,也可以是無形的成果。復用不是人類懶惰的表現而是智慧的表現。因為人類總是在繼承了前人的成果,不斷加以利用、改進或創新后才會進步。所以當我們歡度國慶時,要搞清楚祖國遠不止50歲,我們今天享用到的財富還有上下五千年人民的貢獻。進步只是應該的,不進步則就可恥了。
復用的內涵包括了提高質量與生產率兩者。由經驗可知,在一個新系統中,大部分的內容是成熟的,只有小部分內容是創新的。一般地可以相信成熟的東西總是比較可靠的(即具有高質量),而大量成熟的工作可以通過復用來快速實現(即具有高生產率)。勤勞并且聰明的人們應該把大部分的時間用在小比例的創新工作上,而把小部分的時間用在大比例的成熟工作中,這樣才能把工作做得又快又好。
把復用的思想用于軟件開發,稱為軟件復用。據統計,世上已有1000億多行程序,無數功能被重寫了成千上萬次,真是浪費哪。面向對象(Object Oriented)學者的口頭禪就是“請不要再發明相同的車輪子了”。
將具有一定集成度并可以重復使用的軟件組成單元稱為軟構件(Software Component)。軟件復用可以表述為:構造新的軟件系統可以不必每次從零做起,直接使用已有的軟構件,即可組裝(或加以合理修改)成新的系統。復用方法合理化并簡化了軟件開發過程,減少了總的開發工作量與維護代價,既降低了軟件的成本又提高了生產率。另一方面,由于軟構件是經過反復使用驗證的,自身具有較高的質量。因此由軟構件組成的新系統也具有較高的質量。利用軟構件生產應用軟件的過程如圖1.5所示。
軟件復用不僅要使自己拿來方便,還要讓別人拿去方便,是“拿來拿去主義”。面向對象方法,Microsoft公司的COM規范 [Rogerson 1999],都能很好地用于實現大規模的軟件復用。
2.2.2分而治之
分而治之是指把一個復雜的問題分解成若干個簡單的問題,然后逐個解決。這種樸素的思想來源于人們生活與工作的經驗,完全適合于技術領域。軟件人員在執行分而治之的時候,應該著重考慮:復雜問題分解后,每個問題能否用程序實現?所有程序最終能否集成為一個軟件系統并有效解決原始的復雜問題?
圖1.6表示了軟件領域的分而治之策略。諸如軟件的體系結構設計、模塊化設計都是分而治之的具體表現。軟件的分而治之不可以“硬分硬治”。不像為了吃一個西瓜或是一只雞,揮刀斬成n塊,再把每塊塞進嘴里粉碎攪拌,然后交由胃腸來消化吸收,象征復雜問題的西瓜或是雞也就此消失了。
2.2.3優化——折衷
軟件的優化是指優化軟件的各個質量因素,如提高運行速度,提高對內存資源的利用率,使用戶界面更加友好,使三維圖形的真實感更強等等。想做好優化工作,首先要讓開發人員都有正確的認識:優化工作不是可有可無的事情,而是必須要做的事情。當優化工作成為一種責任時,程序員才會不斷改進軟件中的算法,數據結構和程序組織,從而提高軟件質量。
著名的3D游戲軟件Quake,能夠在PC機上實時地繪制高度真實感的復雜場景。Quake的開發者能把很多成熟的圖形技術發揮到極致,例如把Bresenham畫線、多邊形裁剪、樹遍歷等算法的速度提高近一個數量級。我第一次看到Quake時不僅感到震動,而且深受打擊。這個PC游戲軟件的技術水平已經遠勝于我所見識到的國內領先的圖形學相關科研成果。這對我們日益盛行的點到完止的研發工作真是莫大的諷刺。所以當我們開發的軟件表現出很多不可救藥的病癥時,不要怨機器差。真的是我們自己沒有把工作做好,寫不好字卻嫌筆鈍。
就假設我們經過思想教育后,精神抖擻,隨時準備為優化工作干上六天七夜。但愿意做并不意味著就能把事情做好。優化工作的復雜之處是很多目標存在千絲萬縷的關系,可謂數不清理還亂。當不能夠使所有的目標都得到優化時,就需要“折衷”策略。
軟件中的折衷策略是指通過協調各個質量因素,實現整體質量的最優。就象黨支部副書記扮演和事佬的角色:“…為了使整個組織具有最好的戰斗力,我們要重用幾個人,照顧一些人,在萬不得已的情況下委屈一批人”。
軟件折衷的重要原則是不能使某一方損失關鍵的職能,更不可以象“舍魚而取熊掌”那樣拋棄一方。例如3D動畫軟件的瓶頸通常是速度,但如果為了提高速度而在程序中取消光照明計算,那么場景就會喪失真實感,3D動畫也就不再有意義了(如果人類全是色盲,計算機圖形學將變得異常簡單)。
人都有惰性,如果允許濫用折衷的話,那么一當碰到困難,人們就會用拆東墻補西墻的方式去折衷,不再下苦功去做有意義的優化。所以我們有必要為折衷制定嚴正的立場:在保證其它因素不差的前提下,使某些因素變得更好。
下面讓我們用“優化——折衷”的策略解決“魚和熊掌不可得兼”的難題。
問題提出:假設魚每千克10元,熊掌每千克一萬元。有個倔脾氣的人只有20元錢,非得要吃上一公斤美妙的“熊掌燒魚”,怎么辦?
解決方案:化9元9角9分錢買999克魚肉,化10元錢買1克熊掌肉,可做一道“熊掌戲魚”菜。剩下的那一分錢還可建立獎勵基金。
2.3一些不正確的觀念
本節例舉并分析一些不正確的軟件工程觀念,可幫助初學者少犯相似的錯誤。
觀念之一:我們擁有一套講述如何開發軟件的書籍,書中充滿了標準與示例,可以幫助我們解決軟件開發中遇到的任何問題。
客觀情況:好的參考書無疑能指導我們的工作。充分利用書籍中的方法、技術和技巧,可以有效地解決軟件開發中大量常見的問題。但實踐者并不能因此依賴于書籍,這是因為:(1)現實的工作中,由于條件千差萬別,即使是相當成熟的軟件工程規范,常常也無法套用。(2)軟件技術日新月異,沒有哪一種軟件標準能長盛不衰。祖傳秘方在某些領域很吃香,而在軟件領域則意味著落后。
觀念之二:我們擁有最好的開發工具、最好的計算機,一定能做出優秀的軟件。
客觀情況:良好的開發環境只是產出成果的必要條件,而不是充分條件。如果擁有好環境的是一群庸人,難保他們不干出南轅北轍的事情。
觀念之三:如果我們落后于計劃,可以增加更多的程序員來解決。
客觀情況:軟件開發不同于傳統的農業生產,人多不見得力量大。如果給落后于計劃的項目增添新手,可能會更加延誤項目。因為:(1)新手會產生很多新的錯誤,使項目混亂。(2)老手向新手解釋工作以及交流思想都要花費時間,使實際開發時間更少。所以科學的項目計劃很重要,不在乎計劃能提前多少,重在恰如其分。如果用“大躍進”的方式奔向共產主義,只會產生倒退的后果。
觀念之四:既然需求分析很困難,不管三七二十一先把軟件做了再說,反正軟件是靈活的,隨時可以修改。
客觀情況:對需求把握得越準確,軟件的修修補補就越少。有些需求在一開始時很難確定,在開發過程中要不斷地加以改正。軟件修改越早代價越少,修改越晚代價越大,就跟治病一樣道理。
2.4一些有爭議的觀念
本節探討一些有爭議的觀念,目的不在于得出“正確”或“錯誤”的評斷,而在于爭議會激發更多理性的思考。
爭議之一:如果軟件運行較慢,是換一臺更快的計算機,還是設計一種更快的算法?
作者觀點:如果開發軟件的目的是為了學習或是研究,那么應該設計一種更快的算法。如果該軟件已經用于商業,則需謹慎考慮:若換一臺更快的計算機能解決問題,則是最快的解決方案。改進算法雖然可以從根本上提高軟件的運行速度,但可能引入錯誤以及延誤進程。技術狂毫無疑問會選擇后者,因為他們覺得放棄任何可以優化的機會就等于犯罪。
類似的爭議還有:是買現成的程序,還是徹底自己開發?技術人員和商業人士常常會有不同的選擇。
爭議之二:有最好的軟件工程方法,最好的編程語言嗎?
作者觀點:在軟件領域永遠沒有最好的,只有更好的。能解決問題的都是好方法或是好語言。程序員在最初學習Basic、Fortran、Pascal、C、C++等語言時會感覺一個比一個好,不免有喜新厭舊之舉。而如今 的Visual Basic、Delphi、Visual C++、Java等語言各有所長,真的難分優劣。開發人員應該根據客觀條件,選擇自己熟悉的方法和語言,才能保證合格的質量與生產率。
程序設計是自由與快樂的事情,不要發誓忠于某某主義而自尋煩惱。
爭議之三:編程時是否應該多使用技巧?
作者觀點:就軟件開發而言,技巧的優點在于能另辟蹊徑地解決一些問題,缺點是技巧并不為人熟知。若在程序中用太多的技巧,可能會留下隱患,別人也難以理解程序。鑒于一個局部的優點對整個系統而言是微不足道的,而一個錯誤則可能是致命的。作者建議用自然的方式編程,少用技巧。
《狼三則》的故事告訴我們“失敗的技巧通常是技倆”。當我們在編程時無法判斷是用了技巧還是用了技倆,那就少用。《賣油翁》的故事又告訴我們“熟能生巧”,表明技巧是自然而然產生的,而不是賣弄出來的。賣油翁的絕技是可到中央電視臺表演的,而他老人家卻謙虛地說:“沒啥沒啥,用熟了而已”。
爭議之四:軟件中的錯誤是否可按嚴重程度分等級?
作者觀點:在定量分析時,可以將錯誤分等級,以便于管理。微軟的一些開發小組將錯誤分成四個等級 [Cusumano 1996],如表1.1所示。
一級嚴重:錯誤導致軟件崩潰。
二級嚴重:錯誤導致一個特性不能運行并且沒有替代方案。
三級嚴重:錯誤導致一個特性不能運行但有替代方案。
四級嚴重:錯誤是表面化的或是微小的。
表1.1 錯誤的四個等級
上述分類是非常技術性的,并不是普適的。假設某個財務軟件有兩個錯誤:錯誤A使該軟件死掉,錯誤B導致工資計算錯誤。按表1.1分類,錯誤A屬一級嚴重,錯誤B屬二級嚴重。但事實上B要比A嚴重。工資算多了或者算少了,將會使老板或員工遭受經濟損失。而錯誤A只使操作員感到厭煩,并沒有造成經濟損失。另一個示例是操作手冊寫錯,按表1.1分類則屬四級嚴重,但這種錯誤可能導致機毀人亡。
開發人員應該意識到:所有的錯誤都是嚴重的,不存在微不足道的錯誤。這樣才能少犯錯誤。
2.5小 結
軟件工程學科發展到今天,已經有了很多方法和規范,學之不盡。本章只在宏觀上討論了軟件工程的一些
思想,更具體的內容將在后面的章節論述。無論是什么好方法,貴在理解與靈活運用,而不可當成靈丹妙藥,不象“吃了腦黃金或腦白金,就能使一億人先聰明起來”。
3程序員與程序經理
工作在第一線的軟件開發人員是程序員和程序經理,他們決定著軟件的命運。良好的程序員隊伍和出色的管理是軟件項目成功的必要條件。管理不是管制,不是去卡住人家的脖子,因為程序員不是一群野鴨子。管理的目的是讓大家一起把工作做好,并且讓各人獲得各自的快樂和滿足。當一個組織被出色地領導時,雇員甚至不知道他們已被領導。在項目完成時,他們會自豪地說:“看看我們通過努力取得的成績吧”。所以管理者不能老惦記著自己是一個官,而應時刻意識到自己是責任的主要承擔者。
我們經常會聽到有經理頭銜的人在高談闊論:“編程我不會,做個項目還不easy?派個人去搞系統分析,回頭再叫幾個程序員把需求譯成程序,不就OK了嗎?”
不懂英語的人準以為easy和OK是貶義詞。要讓軟件項目失敗很容易,只要符合下列條件之一即可:
(1)項目經理對軟件一無所知;
(2)技術負責人對編程不感興趣;
(3)真真編寫代碼的程序員是臨時雇用的。
如果上述三個條件同時具備,就請放心失敗好了。
讓我們少幻想自己是比爾·蓋茨,先當好程序員和程序經理再說。
3.1了解程序員
早期的程序員干活能從軟件直通硬件,個個生猛無比。又因他們的作息時間、言行舉止與常人不太一樣,久而久之就給人們留下了“神秘”、“孤僻”的印象。如今軟件行業被炒得熱火朝天,有能耐的程序員即便躲在大山岙的軍工廠里也能被挖出來。而更多原本不是程序員的人操起幾本“速成”、“二十一天通”等書籍也加入了這個行業。現在國內號稱有上百萬程序員,這支大軍魚龍混雜,已搞不清那些是正規軍,那些是民兵游擊隊了。