第一篇:軟件工程
一、名詞解釋
軟件: 指計算機系統(tǒng)中的程序及其文檔。
支持軟件:支持軟件的開發(fā)和維護的軟件。
系統(tǒng)軟件:屬于計算機系統(tǒng)中最靠近硬件的一層,其它軟件一般都通過系統(tǒng)軟件發(fā)揮作用,它與具體的應用領域無關。
軟件工程:是應用計算機科學、數學及管理科學等原理,以工程化的原則和方法制作軟件的工程。
軟件過程模型:是軟件開發(fā)全部過程、活動和任務的結構框架,也稱軟件開發(fā)模型或軟件生存周期模型。
技術可行性:主要根據系統(tǒng)的功能、性能、約束條件等,分析在現有資源和技術條件下系統(tǒng)能否實現。
需求管理:是一組用于幫助項目組在項目進展中的任何時候去標識、控制和跟蹤需求的活動。信息流:表示了數據和控制在系統(tǒng)中流動時的變化方式,輸入對象被變換為中間信息(數據和/或控制),然后進一步被變換為輸出。
軟件項目管理:是指軟件生存周期中軟件管理者所進行的一系列活動,其目的是在一定的時間和預設范圍內,有效地利用人力、資源、技術和工具,使軟件系統(tǒng)或軟件產品按原定計劃和質量要求如期完成。
軟件度量:是指計算機軟件范圍內的測量,主要是為產品開發(fā)的軟件過程和產品本身定義相關的測量方法和標度。
面向對象的多態(tài)性:是指同一個操作作用于不同的對象上可以有不同的解釋,并產生不同的執(zhí)行結果。(也就是說,相同操作的消息發(fā)送給不同的對象時,每個對象將根據自己所屬類中定義的這個操作去執(zhí)行,從而產生不同的結果。)
動態(tài)綁定:是指在程序運行時才將消息所請求的操作與實現該操作的方法連接起來 數據耦合:兩個模塊之間僅通過參數表傳遞簡單數據,則稱為數據耦合。
功能內聚 :指一個模塊中各個部分都是為完成一項具體功能而協(xié)同工作,緊密聯系,不可分割的。
二、簡答
1.、克服軟件危機的途徑:
? 消除錯誤的概念和做法
? 推廣使用成功的開發(fā)技術和方法
? 使用軟件工具和軟件工程支持環(huán)境
? 加強軟件管理
2、計算機系統(tǒng)工程的任務:
? 確定待開發(fā)軟件的總體要求和范圍,以及它與其它計算機系統(tǒng)元素之間的關系
? 進行成本估算,做出進度安排
? 進行可行性分析,即從經濟、技術、法律等方面分析待開發(fā)的軟件是否有可行的解決方案,并在若干個可行的解決方案中作出選擇。
3、軟件過程三層含義:
① 個體含義,即指軟件產品或系統(tǒng)在生存周期中的某一類活動的集合,如軟件開發(fā)過
程,軟件管理過程等;
② 整體含義,即指軟件產品或系統(tǒng)在所有上述含義下的軟件過程的總體;
③ 工程含義,即指解決軟件過程的工程,它應用軟件工程的原則、方法來構造軟件過
程模型,并結合軟件產品的具體要求進行實例化,以及在用戶環(huán)境下的運作,以此進一步提高軟件生產率,降低成本。
4、創(chuàng)建用況模型的步驟包括:
1)定義系統(tǒng)
2)確定執(zhí)行者
3)確定用況
4)描述用況
5)定義用況間的關系,6)確認模型
5、需求分析原則
① 必須能夠表示和理解問題的信息域
② 必須能夠定義軟件將完成的功能
③ 必須能夠表示軟件的行為(作為外部事件的結果)
④ 必須劃分描述數據、功能和行為的模型,從而可以分層次地揭示細節(jié)
⑤ 分析過程應該從要素信息移向細節(jié)信息
6、需求驗證目的是要檢驗需求是否能夠反映用戶的意愿
評審人員評審時往往需要檢查以下內容:
① 系統(tǒng)定義的目標是否與用戶的要求一致;
② 系統(tǒng)需求分析階段提供的文檔資料是否齊全;文檔中的描述是否完整、清晰、準確
地反映了用戶要求;
③ 被開發(fā)項目的數據流與數據結構是否確定且充足;
④ 主要功能是否已包括在規(guī)定的軟件范圍之內,是否都已充分說明;
⑤ 設計的約束條件或限制條件是否符合實際;
⑥ 開發(fā)的技術風險是什么;
⑦ 是否詳細制定了檢驗標準,它們能否對系統(tǒng)定義是否成功進行確認。
三、選擇填空
軟件分類:系統(tǒng)軟件、支持軟件和應用軟件。
軟件按工作方式劃分:實時處理軟件、分時軟件、交互式軟件、批處理軟件。
軟件按服務對象的范圍劃分:項目軟件和產品軟件。
軟件按使用的頻度進行劃分: 一次使用和頻繁使用。
軟件按失效的影響進行劃分:高可靠性軟件、一般可靠性軟件
典型的軟件過程模型有:瀑布模型、演化模型、增量模型、原型模型、螺旋模型、噴泉模型、基于構件的開發(fā)模型、形式方法模型。
技術可行性分析通常包括:風險分析、資源分析和技術分析。
軟件需求工程細分為:需求獲取、需求分析與協(xié)商、系統(tǒng)建模、需求規(guī)約、需求驗證和需求管理六個階段。
需求跟蹤兩種方式:正向跟蹤、逆向跟蹤。
正向跟蹤:以用戶需求為切入點,檢查《需求規(guī)約》中的每個需求是否都能在后繼工作產品中找到對應點。
逆向跟蹤:檢查設計文檔、代碼、測試用況等工作產品是否都能在《需求規(guī)約》中找到出處。軟件設計:把軟件需求變換成軟件表示的過程。
軟件設計的兩個階段:軟件體系結構設計階段和部件級設計。
測試用例的設計方法大體可分為兩類:白盒測試和黑盒測試,也稱白箱測試和黑箱測試 一種測試策略就是將測試分為單元測試、集成測試、確認測試和系統(tǒng)測試。
測試類型:靜態(tài)測試和動態(tài)測試。
軟件的特點
? 軟件是一種邏輯實體,而不是有形的系統(tǒng)元件,其開發(fā)成本和進度難以準確地估算 ? 軟件是被開發(fā)的或被設計的,它沒有明顯的制造過程,一旦開發(fā)成功,只需復制即可,但其維護的工作量大
? 軟件的使用沒有硬件那樣的機械磨損和老化問題
為了使程序能在不同的計算機上運行:
1)要使程序具有較好的可移植性。
2)對程序段的設計具有功能性。
3)變量名的使用對提高編程效率沒有影響。
可維護性關鍵在于:選擇好的程序設計風格。
軟件開發(fā)生命周期中的編程階段任務:得到好的源程序代碼。軟件特點:抽象性、復雜性、開發(fā)成本高。
第二篇:軟件工程
2.2軟件開發(fā)的基本策略
人們都有自己的世界觀和方法論,能自然而然地運用于生活和工作中。同樣,程序員腦子里的軟件工程觀念會無形地支配其怎么去做事情。軟件工程三十年的發(fā)展,已經積累了相當多的方法,但這些方法不是嚴密的理論。實踐人員不應該教條地套用方法,更重要的是學會“選擇合適的方法”和“產生新方法”。有謀略才會有好的戰(zhàn)術。幾千年前,我們的祖先就在打鬧之際寫下了很多心得體會,被現代人很好地運用于工業(yè)和商業(yè)。本節(jié)講述軟件開發(fā)中的三種基本策略:“復用”、“分而治之”、“優(yōu)化——折衷”。
2.2.1復用
復用就是指“利用現成的東西”,文人稱之為“拿來主義”。被復用的對象可以是有形的物體,也可以是無形的成果。復用不是人類懶惰的表現而是智慧的表現。因為人類總是在繼承了前人的成果,不斷加以利用、改進或創(chuàng)新后才會進步。所以當我們歡度國慶時,要搞清楚祖國遠不止50歲,我們今天享用到的財富還有上下五千年人民的貢獻。進步只是應該的,不進步則就可恥了。
復用的內涵包括了提高質量與生產率兩者。由經驗可知,在一個新系統(tǒng)中,大部分的內容是成熟的,只有小部分內容是創(chuàng)新的。一般地可以相信成熟的東西總是比較可靠的(即具有高質量),而大量成熟的工作可以通過復用來快速實現(即具有高生產率)。勤勞并且聰明的人們應該把大部分的時間用在小比例的創(chuàng)新工作上,而把小部分的時間用在大比例的成熟工作中,這樣才能把工作做得又快又好。
把復用的思想用于軟件開發(fā),稱為軟件復用。據統(tǒng)計,世上已有1000億多行程序,無數功能被重寫了成千上萬次,真是浪費哪。面向對象(Object Oriented)學者的口頭禪就是“請不要再發(fā)明相同的車輪子了”。
將具有一定集成度并可以重復使用的軟件組成單元稱為軟構件(Software Component)。軟件復用可以表述為:構造新的軟件系統(tǒng)可以不必每次從零做起,直接使用已有的軟構件,即可組裝(或加以合理修改)成新的系統(tǒng)。復用方法合理化并簡化了軟件開發(fā)過程,減少了總的開發(fā)工作量與維護代價,既降低了軟件的成本又提高了生產率。另一方面,由于軟構件是經過反復使用驗證的,自身具有較高的質量。因此由軟構件組成的新系統(tǒng)也具有較高的質量。利用軟構件生產應用軟件的過程如圖1.5所示。
軟件復用不僅要使自己拿來方便,還要讓別人拿去方便,是“拿來拿去主義”。面向對象方法,Microsoft公司的COM規(guī)范 [Rogerson 1999],都能很好地用于實現大規(guī)模的軟件復用。
2.2.2分而治之
分而治之是指把一個復雜的問題分解成若干個簡單的問題,然后逐個解決。這種樸素的思想來源于人們生活與工作的經驗,完全適合于技術領域。軟件人員在執(zhí)行分而治之的時候,應該著重考慮:復雜問題分解后,每個問題能否用程序實現?所有程序最終能否集成為一個軟件系統(tǒng)并有效解決原始的復雜問題?
圖1.6表示了軟件領域的分而治之策略。諸如軟件的體系結構設計、模塊化設計都是分而治之的具體表現。軟件的分而治之不可以“硬分硬治”。不像為了吃一個西瓜或是一只雞,揮刀斬成n塊,再把每塊塞進嘴里粉碎攪拌,然后交由胃腸來消化吸收,象征復雜問題的西瓜或是雞也就此消失了。
2.2.3優(yōu)化——折衷
軟件的優(yōu)化是指優(yōu)化軟件的各個質量因素,如提高運行速度,提高對內存資源的利用率,使用戶界面更加友好,使三維圖形的真實感更強等等。想做好優(yōu)化工作,首先要讓開發(fā)人員都有正確的認識:優(yōu)化工作不是可有可無的事情,而是必須要做的事情。當優(yōu)化工作成為一種責任時,程序員才會不斷改進軟件中的算法,數據結構和程序組織,從而提高軟件質量。
著名的3D游戲軟件Quake,能夠在PC機上實時地繪制高度真實感的復雜場景。Quake的開發(fā)者能把很多成熟的圖形技術發(fā)揮到極致,例如把Bresenham畫線、多邊形裁剪、樹遍歷等算法的速度提高近一個數量級。我第一次看到Quake時不僅感到震動,而且深受打擊。這個PC游戲軟件的技術水平已經遠勝于我所見識到的國內領先的圖形學相關科研成果。這對我們日益盛行的點到完止的研發(fā)工作真是莫大的諷刺。所以當我們開發(fā)的軟件表現出很多不可救藥的病癥時,不要怨機器差。真的是我們自己沒有把工作做好,寫不好字卻嫌筆鈍。
就假設我們經過思想教育后,精神抖擻,隨時準備為優(yōu)化工作干上六天七夜。但愿意做并不意味著就能把事情做好。優(yōu)化工作的復雜之處是很多目標存在千絲萬縷的關系,可謂數不清理還亂。當不能夠使所有的目標都得到優(yōu)化時,就需要“折衷”策略。
軟件中的折衷策略是指通過協(xié)調各個質量因素,實現整體質量的最優(yōu)。就象黨支部副書記扮演和事佬的角色:“…為了使整個組織具有最好的戰(zhàn)斗力,我們要重用幾個人,照顧一些人,在萬不得已的情況下委屈一批人”。
軟件折衷的重要原則是不能使某一方損失關鍵的職能,更不可以象“舍魚而取熊掌”那樣拋棄一方。例如3D動畫軟件的瓶頸通常是速度,但如果為了提高速度而在程序中取消光照明計算,那么場景就會喪失真實感,3D動畫也就不再有意義了(如果人類全是色盲,計算機圖形學將變得異常簡單)。
人都有惰性,如果允許濫用折衷的話,那么一當碰到困難,人們就會用拆東墻補西墻的方式去折衷,不再下苦功去做有意義的優(yōu)化。所以我們有必要為折衷制定嚴正的立場:在保證其它因素不差的前提下,使某些因素變得更好。
下面讓我們用“優(yōu)化——折衷”的策略解決“魚和熊掌不可得兼”的難題。
問題提出:假設魚每千克10元,熊掌每千克一萬元。有個倔脾氣的人只有20元錢,非得要吃上一公斤美妙的“熊掌燒魚”,怎么辦?
解決方案:化9元9角9分錢買999克魚肉,化10元錢買1克熊掌肉,可做一道“熊掌戲魚”菜。剩下的那一分錢還可建立獎勵基金。
2.3一些不正確的觀念
本節(jié)例舉并分析一些不正確的軟件工程觀念,可幫助初學者少犯相似的錯誤。
觀念之一:我們擁有一套講述如何開發(fā)軟件的書籍,書中充滿了標準與示例,可以幫助我們解決軟件開發(fā)中遇到的任何問題。
客觀情況:好的參考書無疑能指導我們的工作。充分利用書籍中的方法、技術和技巧,可以有效地解決軟件開發(fā)中大量常見的問題。但實踐者并不能因此依賴于書籍,這是因為:(1)現實的工作中,由于條件千差萬別,即使是相當成熟的軟件工程規(guī)范,常常也無法套用。(2)軟件技術日新月異,沒有哪一種軟件標準能長盛不衰。祖?zhèn)髅胤皆谀承╊I域很吃香,而在軟件領域則意味著落后。
觀念之二:我們擁有最好的開發(fā)工具、最好的計算機,一定能做出優(yōu)秀的軟件。
客觀情況:良好的開發(fā)環(huán)境只是產出成果的必要條件,而不是充分條件。如果擁有好環(huán)境的是一群庸人,難保他們不干出南轅北轍的事情。
觀念之三:如果我們落后于計劃,可以增加更多的程序員來解決。
客觀情況:軟件開發(fā)不同于傳統(tǒng)的農業(yè)生產,人多不見得力量大。如果給落后于計劃的項目增添新手,可能會更加延誤項目。因為:(1)新手會產生很多新的錯誤,使項目混亂。(2)老手向新手解釋工作以及交流思想都要花費時間,使實際開發(fā)時間更少。所以科學的項目計劃很重要,不在乎計劃能提前多少,重在恰如其分。如果用“大躍進”的方式奔向共產主義,只會產生倒退的后果。
觀念之四:既然需求分析很困難,不管三七二十一先把軟件做了再說,反正軟件是靈活的,隨時可以修改。
客觀情況:對需求把握得越準確,軟件的修修補補就越少。有些需求在一開始時很難確定,在開發(fā)過程中要不斷地加以改正。軟件修改越早代價越少,修改越晚代價越大,就跟治病一樣道理。
2.4一些有爭議的觀念
本節(jié)探討一些有爭議的觀念,目的不在于得出“正確”或“錯誤”的評斷,而在于爭議會激發(fā)更多理性的思考。
爭議之一:如果軟件運行較慢,是換一臺更快的計算機,還是設計一種更快的算法?
作者觀點:如果開發(fā)軟件的目的是為了學習或是研究,那么應該設計一種更快的算法。如果該軟件已經用于商業(yè),則需謹慎考慮:若換一臺更快的計算機能解決問題,則是最快的解決方案。改進算法雖然可以從根本上提高軟件的運行速度,但可能引入錯誤以及延誤進程。技術狂毫無疑問會選擇后者,因為他們覺得放棄任何可以優(yōu)化的機會就等于犯罪。
類似的爭議還有:是買現成的程序,還是徹底自己開發(fā)?技術人員和商業(yè)人士常常會有不同的選擇。
爭議之二:有最好的軟件工程方法,最好的編程語言嗎?
作者觀點:在軟件領域永遠沒有最好的,只有更好的。能解決問題的都是好方法或是好語言。程序員在最初學習Basic、Fortran、Pascal、C、C++等語言時會感覺一個比一個好,不免有喜新厭舊之舉。而如今 的Visual Basic、Delphi、Visual C++、Java等語言各有所長,真的難分優(yōu)劣。開發(fā)人員應該根據客觀條件,選擇自己熟悉的方法和語言,才能保證合格的質量與生產率。
程序設計是自由與快樂的事情,不要發(fā)誓忠于某某主義而自尋煩惱。
爭議之三:編程時是否應該多使用技巧?
作者觀點:就軟件開發(fā)而言,技巧的優(yōu)點在于能另辟蹊徑地解決一些問題,缺點是技巧并不為人熟知。若在程序中用太多的技巧,可能會留下隱患,別人也難以理解程序。鑒于一個局部的優(yōu)點對整個系統(tǒng)而言是微不足道的,而一個錯誤則可能是致命的。作者建議用自然的方式編程,少用技巧。
《狼三則》的故事告訴我們“失敗的技巧通常是技倆”。當我們在編程時無法判斷是用了技巧還是用了技倆,那就少用?!顿u油翁》的故事又告訴我們“熟能生巧”,表明技巧是自然而然產生的,而不是賣弄出來的。賣油翁的絕技是可到中央電視臺表演的,而他老人家卻謙虛地說:“沒啥沒啥,用熟了而已”。
爭議之四:軟件中的錯誤是否可按嚴重程度分等級?
作者觀點:在定量分析時,可以將錯誤分等級,以便于管理。微軟的一些開發(fā)小組將錯誤分成四個等級 [Cusumano 1996],如表1.1所示。
一級嚴重:錯誤導致軟件崩潰。
二級嚴重:錯誤導致一個特性不能運行并且沒有替代方案。
三級嚴重:錯誤導致一個特性不能運行但有替代方案。
四級嚴重:錯誤是表面化的或是微小的。
表1.1 錯誤的四個等級
上述分類是非常技術性的,并不是普適的。假設某個財務軟件有兩個錯誤:錯誤A使該軟件死掉,錯誤B導致工資計算錯誤。按表1.1分類,錯誤A屬一級嚴重,錯誤B屬二級嚴重。但事實上B要比A嚴重。工資算多了或者算少了,將會使老板或員工遭受經濟損失。而錯誤A只使操作員感到厭煩,并沒有造成經濟損失。另一個示例是操作手冊寫錯,按表1.1分類則屬四級嚴重,但這種錯誤可能導致機毀人亡。
開發(fā)人員應該意識到:所有的錯誤都是嚴重的,不存在微不足道的錯誤。這樣才能少犯錯誤。
2.5小 結
軟件工程學科發(fā)展到今天,已經有了很多方法和規(guī)范,學之不盡。本章只在宏觀上討論了軟件工程的一些
思想,更具體的內容將在后面的章節(jié)論述。無論是什么好方法,貴在理解與靈活運用,而不可當成靈丹妙藥,不象“吃了腦黃金或腦白金,就能使一億人先聰明起來”。
3程序員與程序經理
工作在第一線的軟件開發(fā)人員是程序員和程序經理,他們決定著軟件的命運。良好的程序員隊伍和出色的管理是軟件項目成功的必要條件。管理不是管制,不是去卡住人家的脖子,因為程序員不是一群野鴨子。管理的目的是讓大家一起把工作做好,并且讓各人獲得各自的快樂和滿足。當一個組織被出色地領導時,雇員甚至不知道他們已被領導。在項目完成時,他們會自豪地說:“看看我們通過努力取得的成績吧”。所以管理者不能老惦記著自己是一個官,而應時刻意識到自己是責任的主要承擔者。
我們經常會聽到有經理頭銜的人在高談闊論:“編程我不會,做個項目還不easy?派個人去搞系統(tǒng)分析,回頭再叫幾個程序員把需求譯成程序,不就OK了嗎?”
不懂英語的人準以為easy和OK是貶義詞。要讓軟件項目失敗很容易,只要符合下列條件之一即可:
(1)項目經理對軟件一無所知;
(2)技術負責人對編程不感興趣;
(3)真真編寫代碼的程序員是臨時雇用的。
如果上述三個條件同時具備,就請放心失敗好了。
讓我們少幻想自己是比爾·蓋茨,先當好程序員和程序經理再說。
3.1了解程序員
早期的程序員干活能從軟件直通硬件,個個生猛無比。又因他們的作息時間、言行舉止與常人不太一樣,久而久之就給人們留下了“神秘”、“孤僻”的印象。如今軟件行業(yè)被炒得熱火朝天,有能耐的程序員即便躲在大山岙的軍工廠里也能被挖出來。而更多原本不是程序員的人操起幾本“速成”、“二十一天通”等書籍也加入了這個行業(yè)。現在國內號稱有上百萬程序員,這支大軍魚龍混雜,已搞不清那些是正規(guī)軍,那些是民兵游擊隊了。
第三篇:《軟件工程》
《軟件工程》課程分析
本課程是軟件技術專業(yè)學生必修的一門專業(yè)必修課。根據培養(yǎng)軟件開發(fā)人員的需要,本課程的任務是使學生通過本課程的學習,了解軟件項目開發(fā)和維護的一般過程,掌握軟件開發(fā)的傳統(tǒng)方法和最新方法。能在軟件工程的理論指導下,開發(fā)一個小型管理系統(tǒng),為今后從事軟件工程實踐打下良好的基礎。
一、課程分析
(一)教學計劃的制定和教學內容的選取
根據培養(yǎng)應用技能型人才的總目標,制訂本專業(yè)教學計劃,課程的教材配套,教學、實驗、實訓、課程設計大綱和指導書等教學文件齊全,近幾年來引入了現代教學技術手段,已初步建設、形成了具有特色的全套課堂教學和實驗教學課件。
根據該課程的基本教學要求和特點,結合學時的安排,從教材的整體內容出發(fā),有側重地進行取舍,篩選出學生必須掌握的基本教學內容,較好地解決了教學中質量與數量的矛盾。
(二)教學方法分析
由于該課程是用于指導軟件開發(fā)的,和實踐聯系非常緊密。所以采用了理論聯系實際的方法進行授課。一方面,讓學生模擬軟件公司的項目小組進行軟件開發(fā);一方面,對學生進行適時的理論指導。既調動了學生的積極性,又讓學生了解了該課程的理論內容,收到了一舉兩得的效果。具體教學過程如下:
第一步:模擬軟件公司的開發(fā)項目小組,分組,分設角色(項目經理、用戶、需求人員、設計人員、程序員、測試人員、軟件安裝培訓維護人員),確定開發(fā)題。讓每個小組的學生聚在一起,在項目經理的組織下通過調研、討論來制定自己小組的開發(fā)題目,大家感覺就象在軟件公司實習一樣,非常新鮮,感興趣。每個學生都積極主動的去完成自己應承擔的那部分工作。
第二步:模擬軟件項目開發(fā)全過程的各個階段,進行相關的理論授課和實際開發(fā)。即對軟件開發(fā)的每一階段,首先按照教材內容進行理論授課,然后讓學生參照授課內容進行實際的軟件開發(fā)實踐。
在此階段結束后,每班召開一個模擬方案論證會,由各開發(fā)小組選出代表上臺講解本組的開發(fā)方案,其他同學模擬用戶對開發(fā)方案提出意見。由于大家對模擬方案論證會非常感興趣,發(fā)言積極踴躍,論證會結束后,每個小組的設計方案都得到了很好的補充和完善。
第三步:學期末各小組提交各自完成的軟件系統(tǒng)及開發(fā)文檔,并進行總結演示,由任課教師進行講評。
抽象理論課的教學應理論聯系實際,讓學生在實際應用中掌握抽象的理論,在興趣中學習,達到我們高職的雙向型培養(yǎng)目標。
二、存在的問題與希望
在上述的教學中,雖然實現了理論聯系實際,但也存在著一些問題,比如每個項目小組中總有個別同學存在依賴心理,不參與項目開發(fā),最后抄襲別的同學的項目成果,自己得不到實際的鍛煉,影響了大三的畢業(yè)設計和日后的軟件開發(fā)。另外,如果該課程只上課,沒有實訓的話,實驗課時太少,學生很難全面完成一個系統(tǒng)的開發(fā)。
第四篇:軟件工程
1.軟件工程:是指導計算機軟件開發(fā)和維護的工程學科
2.軟件危機:是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題
3.軟件過程:是為了開發(fā)出高質量的軟件產品所需完成的一系列任務的框架,它規(guī)定了完成各項任務的工作步驟
4.軟件生命周期:是指從軟件定義、開發(fā)、使用、信息”。此外,系統(tǒng)還應該具有“定時取樣生理信號”、“更新日志”和“產生病情報告”的功能。為了分析病人生理信號是否超出了醫(yī)生規(guī)定的安全范圍,應該存儲“患者安全范圍”信息。此外,定時記錄病人生理信號所形成的“患者日志”,顯然也是一個數據存 儲。
23.軟件危機有那些典型表現?
(1)央一個索引號)。
針對若干個不同的NAME重復執(zhí)行上述命令序列。
?測試系統(tǒng)非正常操作的測試數據 ①用過長的關鍵字作為命令b的參數:例如,b(reliability software and hardware combined)
預期的輸出:系統(tǒng)截短過長的關鍵字,例如,上列命令中的關鍵字可能性被截預期的輸出:X=1,Y=20,Z=3 ④ 3個判定表達式依次為假、真、真 輸入:A=1,B=40,C=60 預期的輸出:X=1,Y=20,Z=30 ⑤ 3個判定表達式依次為真、假、假 輸入:A=20,B=1,C=1 預期的輸出:X=10,Y=2,Z=3 ⑥ 3個判定表達式依次為真、假、真 輸入:A=20,B=1,C=60 對軟件開發(fā)成本和進度的估計常常很不準確。維護到淘汰的全過程
5.軟件工程環(huán)境:方法與工具的結合,加上配套的軟、硬件支持稱為軟件工程環(huán)境
6.模塊:是數據說明、可執(zhí)行語句等程序對象的集合7.模塊化:是按規(guī)定的原則將一個大型軟件分為一個個較小的、相對獨立但又相關的模塊
8.耦合:是對一個軟件結構內不同模塊之間互連程度的度量
9.內聚:標志著一個模塊內各個元素彼此結合的緊密程度
10.結構程序設計:如果一個程序的代碼塊只有一個入口和一個出口,則稱這個程序是結構化的11.實現:通常指編碼和測試
12.軟件可靠性:是指程序在給定的時間間隔內,按照規(guī)格說明書的規(guī)定成功地運行地概率
13.集成測試:是測試和組裝軟件的系統(tǒng)化技術 14.軟件維護:是指軟件已經交付使用之后,為了改正錯誤或滿足新的需要而修改軟件的過程
15.對象:在應用領域中有意義的、與所解決的問題有關系的任何事物
16.對象模型:表示靜態(tài)的、結構化的系統(tǒng)的“數據”性質
17.功能模型:表示變化的系統(tǒng)的“功能”性質 18.面向對象分析:就是抽取和整理用戶需求并建立問題域精確模型的過程
19.重用:是指同一事物不作修改或者稍加改動就多次重復使用
20.可行性分析包括:技術可行性、經濟可行性、操作可行性
21.北京某高??捎玫碾娫捥柎a有以下幾類:校內電話號碼由 4 位數字組成??定義上述電話號碼
電話號碼=[校內電話號碼|校外電話號碼]
校內電話號碼=非零數字+ 3 位數字 //后面繼續(xù)定義 校外電話號碼=[本市號碼|外地號碼] 本市號碼=數字零+8 位數字
外地號碼=數字零+3 位數字+8 位數字 非零數字=[1|2|3|4|5|6|7|8|9] 數字零=0位數字=3{數字}3//3 至 3 個數字 8 位數字=非零數字+7 位數字 7 位數字=7{數字}7 數字=[0|1|2|3|4|5|6|7|8|9]
22.目前住院的病人主要由護士護理,這樣做不僅需要大量護士??寫出問題定義,分析可行性 從問題陳述可知,本系統(tǒng)數據源點是“病人”和“護士”,他們分別提供生理信號和要求病情報告的信息。進一步分析問題陳述,從系統(tǒng)應該“定時記錄病人情況以形成患者日志”這項要求可以想到,還應該有一個提供日期和時間信息的“時鐘”作為數據源點。從問題陳述容易看出,本系統(tǒng)的數據終點是接收警告信息和病情報告的護士。系統(tǒng)對病人生理信號的處理功能主要是“接收信號”、“分析信號”和“產生警告
(2)用戶對“已完成的”軟件系統(tǒng)不滿意的現象經常
發(fā)生。
(3)軟件產品的質量往往靠不住。(4)軟件常常是不可維護的。(5)軟件通常沒有適當的文檔資料。(6)軟件成本在計算機系統(tǒng)總成本中所占的比例
逐年上升。(7)軟件開發(fā)生產率提高的速度,遠遠跟不上計算
機應用迅速普及深入的趨勢
25.銀行計算機存儲系統(tǒng)的工作過程大致如下:??請用數據流圖描繪本系統(tǒng)的功能,并用實體—聯系圖描繪系統(tǒng)中的數據對象 26.復印機的工作過程大致如下:未接到復印命令時處于閑置狀態(tài)??請用狀態(tài)轉換圖描繪復印機的行為
27.用面向數據流的方法設計下列系統(tǒng)的軟件結構
(1)機票預定系統(tǒng)(2)患者監(jiān)護系統(tǒng) 28.耦合包括數據耦合、控制耦合、公共環(huán)境耦合、內容耦合29.內聚包括功能內聚、順序內聚、通信內聚、過程內聚、時間內聚、邏輯內聚、偶然內聚
30.美國某大學有200名教師,校方與教師工會剛剛簽訂一項協(xié)議。按照協(xié)議??
31.畫出下列偽代碼的流程圖,計算它的環(huán)形復雜度
?
32.某圖書館有一個使用CET
終端的信息檢索系統(tǒng),該系統(tǒng)有下列4個基本檢索命令:
(1)設計測試數據以全面系統(tǒng)的正常操作
(2)設計測試數據以測試系統(tǒng)的非正常操作
解:?測試系統(tǒng)正常操作的測試數據 ①順序執(zhí)行下列3個命令:b(KEYWORD)s(L)d(N)
其中KEYWORD是正確的關鍵字;L是執(zhí)行命令b后在屏幕上顯示的約20個行號中的一個(至少應該使L分別為第一個、最后一個和中央一個行號);N是執(zhí)行命令s后列出的索引號中的一個(至少應該使N分別為第一個、最后一個和中央一個索引號)。
針對若干個不同的KEYWORD重復執(zhí)行上述命令序列。
②順序執(zhí)行下列2個命令:f(NAME)d(N)
其中,NAME是已知的作者姓名;N是執(zhí)行命令f后列出的索引號中的一個(至少應該使N分別為第一個、最后一個和中
短為reliability software
②用不正確的關鍵字作為命令b的參數:例如,b(AARDVARK)
預期的輸出:顯示出最接近的匹配結果,例如,執(zhí)行上列命令后可能顯示 1.AARON,JULES(book)③用比執(zhí)行命令b后列出的最大行號大1的數作為命令s的參數
預期的輸出:“命令s的參數不在行號列表中”
④用數字和標點符號作為命令b和命令f的參數
預期的輸出:“參數類型錯”
⑤用字母字符作為命令s和命令d的參數 預期的輸出:“參數類型錯”
⑥用0和負數作為命令s和命令d的參數 預期的輸出:“參數數值錯” ⑦命令順序錯:例如,沒執(zhí)行命令b就執(zhí)行命令s,或沒執(zhí)行命令s就執(zhí)行命令d 預期的輸出:“命令順序錯”
⑧命令語法錯:例如,遺漏命令名b、s、d或f;或命令參數沒用圓括號括起來 預期的輸出:“命令語法錯” ⑨命令參數空:例如,b()、s()、d或f()
預期的輸出:系統(tǒng)提供默認參數或給出出錯信息
⑩使用拼錯了的作者姓名作為f的參數 預期的輸出:“找不到這們作者的著作”
33.(2)答:經驗表明,在類似的程序中,單位長度
里的錯誤數ET/IT近似為常數。美國的一些統(tǒng)計數字告訴我們,通常
0.5X10-2≤ ET/IT ≤2X10-2
也就是說,在測試之前每1000條指令中大約有5~20個錯誤。
假設在該程序的每1000條指令中有10個錯誤,則估計在對它進行測試期間將發(fā)現的錯誤數為
5000X10/1000=50(個)(3)① 使3個判定表達式之值全為假 輸入:A=1,B=1,C=1 預期的輸出:X=1,Y=2,Z=3 ② 使3個判定表達式之值全為真 輸入:A=20,B=40,C=60 預期的輸出:X=10,Y=20,Z=30 ① 3個判定表達式之值全為假 輸入:A=1,B=1,C=1 預期的輸出:X=1,Y=2,Z=3 ② 3個判定表達式依次為假、假、真 輸入:A=1,B=1,C=60 預期的輸出:X=1,Y=2,Z=30 ③ 3個判定表達式依次為假、真、假 輸入:A=1,B=40,C=1
預期的輸出:X=10,Y=2,Z=30 ⑦ 3個判定表達式依次為真、真、假 輸入:A=20,B=40,C=1 預期的輸出:X=10,Y=20,Z=3 ⑧ 3個判定表達式全為真 輸入:A=20,B=40,C=60 預期的輸出:X=10,Y=20,Z=30 34.軟件的可維護性與哪些因素有關:軟件的可理解性、可測試性、可修改性、文檔描述符合要求、用戶文檔簡潔明確、系統(tǒng)文檔完整并且標準
35.面向對象方法是一種運用對象、類、繼承、封裝、聚合、消息、多態(tài)等概念來構造系統(tǒng)的軟件開發(fā)方法。
面向對象方法的優(yōu)點是:符合人們習慣的思維方式、穩(wěn)定性好、可重用性好、可維護性好、容易開發(fā)大型的軟件產品
第五篇:軟件工程
填好發(fā)給我!!
一、填空題:
1.面向對象分析的目的是對客觀世界的系統(tǒng)進行 __________________,對象就是客觀世界的;
2.軟件工程方法學包括:工程環(huán)境建立、方法、工具和過程;
3.思想概括起來,就是以人為本,最優(yōu)先要做的是通過盡早地、持續(xù)地交付有價值的軟件來使客戶滿意;
4.UML是指,是用于建立面向對象系統(tǒng)模型的標記方法;
5.需求分析的基本任務是和一起完全弄清用戶對系統(tǒng)的確切需求,確切地講就是系統(tǒng)做什么的問題;
6.的目的就是用最小的代價在的時間內確定該軟件項目是否能夠開發(fā),是否值得去開發(fā);
7.在眾多的軟件工程環(huán)境的影響中,和是最重要的。
8.是對系統(tǒng)不同版本進行標識和跟蹤的過程,主要分為版本的訪問與同步控制、。
9.模塊的耦合性分為四種類型:據耦合、、、;
10.軟件工程學的主要內容包括和。
二、選擇題:
1.軟件維護的困難主要原因是()
A.費用低B.人員少
C.開發(fā)方法的缺陷D.維護難
2.模塊(),則說明模塊的獨立性越強。
A.耦合越強B.扇入數越高C.耦合越弱D.扇入數越低
3.指出PDL是下列哪種語言()。
A.偽碼B.高級程序設計語言
C.中級程序設計語言D.低級程序設計語言
4.在進行軟件測試時,首先應當進行(),然后再進行組裝測試,最后再進行有效性測試。
A.單元測試B.集成測試C.確認測試D.組合測試
5.軟件測試的目的是()。
A. 評價軟件的質量B.發(fā)現軟件的錯誤
C. 找出軟件的所有錯誤D.證明軟件是正確的6.軟件設計階段分為()。
A.邏輯設計與功能設計B.模型設計和功能設計
C.結構設計和模塊過程設計D.數據庫設計和文件設計
7.結構化設計方法是面向()的設計。
A.數據流B.數據編碼
C.數據庫D.數據結構
8.程序的三種基本控制結構是()。
A.過程、子程序和分程序
B.順序、選擇和重復
C.遞歸、堆棧和隊列
D.調用、返回和轉移
9.系統(tǒng)定義明確之后,應對系統(tǒng)的可行性進行研究,可行性研究應包括(A.軟件環(huán)境可行性、技術可行性、經濟可行性、社會可行性
B.經濟可行性、技術可行性、操作可行性
C.經濟可行性、社會可行性、系統(tǒng)可行性
D.經濟可行性、實用性、社會可行性
10.數據字典包括()個條目。
A.2B.3C.4D.
5三、名詞解釋題:
1.需求分析?
2.軟件危機?
3.軟件生存周期模型?
4.系統(tǒng)測試?
5.結構化分析?
。)
四、簡答題:
1.快速原型法?
2.從軟件開發(fā)的過程按階段劃分,軟件測試分為哪些類型?
3.數據流程圖的基本符號及各自的含義是什么?數據流程圖的功能是什么?
4.軟件維護包括哪些方面?主要由誰來完成?
5.簡述軟件項目管理的實質?