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