《軟件工程》練習(xí)試題及答案_第1頁
《軟件工程》練習(xí)試題及答案_第2頁
《軟件工程》練習(xí)試題及答案_第3頁
《軟件工程》練習(xí)試題及答案_第4頁
《軟件工程》練習(xí)試題及答案_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1練習(xí)題

軟件的特點(diǎn)有哪些?

軟件是一種邏輯實(shí)體,具有抽象性。硬件是有形的設(shè)備,而軟件不像硬件那

樣具有明顯的可見性。人們可以把軟件記錄在介質(zhì)上,但是卻無法直觀地觀察到

它的形態(tài),而必須通過在計(jì)算機(jī)上實(shí)際地運(yùn)行才能了解它的功能、性能及其他特

性。

軟件的生產(chǎn)與硬件的制造不同。它更多地滲透了人類的智能活動(dòng),是人類智

力勞動(dòng)的產(chǎn)物。軟件是被開發(fā)或設(shè)計(jì)的,而不是傳統(tǒng)意義上被制造的。軟件成本

集中于開發(fā)上,這意味著軟件項(xiàng)目不能像制造項(xiàng)目那樣管理,

軟件在運(yùn)行使用過程中,不會(huì)磨損。在軟件的運(yùn)行和使用期間,它不會(huì)產(chǎn)生

像硬件那樣的磨損和老化現(xiàn)象,然而卻存在著缺陷維護(hù)和技術(shù)更新的問題。軟件

不會(huì)磨損,但是它會(huì)退化,而軟件的退化是由于修改。因此,軟件維護(hù)比硬件維

護(hù)要復(fù)雜得多。

軟&的開發(fā)至今尚未完全擺脫手工藝的開發(fā)方式。在硬件世界,構(gòu)件復(fù)用是

工程過程的自然的一部分,而在軟件世界,它是剛剛開始起步的事物。雖然軟件

產(chǎn)業(yè)正在向基于構(gòu)件的組裝前進(jìn),但大多數(shù)軟件仍是定制的C

軟件的開發(fā)和運(yùn)行必須依附于特定的計(jì)算機(jī)系統(tǒng)環(huán)境。它不像有些設(shè)備一樣,

能夠獨(dú)立地工作,而是受到了物理硬件、網(wǎng)絡(luò)配置、支撐軟件等因素的制約。由

此引發(fā)了軟件的可移植性問題。

軟件危機(jī)是如何產(chǎn)生的?有哪些表現(xiàn)?

原因:在20世紀(jì)60年代中期,隨著軟件規(guī)模的擴(kuò)大,復(fù)雜性的增加,功能

的增強(qiáng),使得高質(zhì)量的軟件開發(fā)變得越來越困難。

表現(xiàn):

開發(fā)出來的軟件產(chǎn)品不能滿足用戶的需求,即產(chǎn)品的功能或特性與需求不符。

這主要是由于開發(fā)人員與用戶之間不能充分有效的交流造成的,使得開發(fā)人員對(duì)

用戶需求的理解存在著差異;

相比越來越廉價(jià)的硬件,軟件代價(jià)過高;

軟件質(zhì)量難以得到保證,且難以發(fā)揮硬件潛能。開發(fā)團(tuán)隊(duì)缺少完善的軟件質(zhì)

量評(píng)審體系以及科學(xué)的軟件測(cè)試規(guī)程,使得最終的軟件產(chǎn)品存在著諸多缺陷;

難以準(zhǔn)確估計(jì)軟件開發(fā)、維護(hù)的費(fèi)用以及開發(fā)周期。往往軟件產(chǎn)品不能在預(yù)

算范圍之內(nèi),按照計(jì)劃完成開發(fā)。很多情況下,軟件產(chǎn)品的開發(fā)周期或經(jīng)費(fèi)會(huì)大

大超出預(yù)算;

難于控制開發(fā)風(fēng)險(xiǎn),開發(fā)速度趕不上市場(chǎng)變化;

軟件產(chǎn)品修改維護(hù)困難,集成遺留系統(tǒng)更困難;

軟件文檔不完備,并且存在著文檔內(nèi)容與軟件產(chǎn)品不符的情況。軟件文檔是

計(jì)算機(jī)軟件的重要組成部分,它為在軟件開發(fā)人員之間以及開發(fā)人員與用戶之間

信息的共享提供了重要的平臺(tái)。軟件文檔的不完整和不一致的問題會(huì)給軟件的開

發(fā)和維護(hù)等工作帶來很多麻煩。

簡(jiǎn)述軟件工程的基本原則。

用分階段的生存周期計(jì)劃進(jìn)行嚴(yán)格的管理;

將軟件的生存周期劃分為多個(gè)階段,對(duì)各個(gè)階段實(shí)行嚴(yán)格的項(xiàng)目管理。軟件

開發(fā)是一個(gè)漫長(zhǎng)的過程,人們可以根據(jù)工作的特點(diǎn)或目標(biāo),把整個(gè)軟件的開發(fā)周

期劃分為多個(gè)階段,并為每個(gè)階段制定分階段的計(jì)劃及驗(yàn)收標(biāo)準(zhǔn),這樣有益于對(duì)

整個(gè)軟件開發(fā)過程進(jìn)行管理。在傳統(tǒng)的軟件工程中,軟件開發(fā)的生存周期可以劃

分為可行性研究、需求分析、軟件設(shè)計(jì)、軟件實(shí)現(xiàn)、軟件測(cè)試、產(chǎn)品驗(yàn)收和交付

等階段。

堅(jiān)持進(jìn)行階段評(píng)審;

嚴(yán)格的貫徹與實(shí)施階段評(píng)審制度可以幫助軟件開發(fā)人員及時(shí)地發(fā)現(xiàn)錯(cuò)誤并

將其改正。在軟件開發(fā)的過程中,錯(cuò)誤發(fā)現(xiàn)的越晚,修復(fù)錯(cuò)誤所要付出的代價(jià)就

會(huì)越大。實(shí)施階段評(píng)審,只有在本階段的工作通過評(píng)審后,才能進(jìn)入下一階段的

工作。

實(shí)行嚴(yán)格的產(chǎn)品控制;

在軟件開發(fā)的過程中,用戶需求很可能在不斷的發(fā)生著變化。有些時(shí)候,即

使用戶需求沒有改變,軟件開發(fā)人員受到經(jīng)驗(yàn)的限制以及與客戶交流不充分的影

響,也很難做到一次性獲取到全部的正確的需求??梢?,需求分析的工作應(yīng)該貫

穿到整個(gè)軟件開發(fā)的生存周期內(nèi)。在軟件開發(fā)的整個(gè)過程中,需求的改變是不可

避免的。當(dāng)需求更新時(shí),為了保證軟件各個(gè)配置項(xiàng)的?致性,實(shí)施嚴(yán)格的版本控

制是非常必要的。

采用現(xiàn)代程序設(shè)計(jì)技術(shù);

現(xiàn)代的程序設(shè)計(jì)技術(shù),比如面向?qū)ο?,可以使開發(fā)出來的軟件產(chǎn)品更易維護(hù)

和修改,同時(shí)還能縮短開發(fā)的時(shí)間,并且更符合人們的思維邏輯。

軟件工程結(jié)果應(yīng)能清楚地審查;

雖然軟件產(chǎn)品的可見性比較差,但是它的功能和質(zhì)量應(yīng)該能夠被準(zhǔn)確地審查

和度量,這樣才能有利于有效的項(xiàng)目管理。一般軟件產(chǎn)品包括可以執(zhí)行的源代碼、

一系列相應(yīng)的文檔和資源數(shù)據(jù)等。

開發(fā)小組的人員應(yīng)該少而精;

開發(fā)小組成員的人數(shù)少有利于組內(nèi)成員充分的交流,這是高效團(tuán)隊(duì)管理的重

要因素。而高素質(zhì)的開發(fā)小組成員是影響軟件產(chǎn)品的質(zhì)量和開發(fā)效率的重要因素。

承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性。

隨著計(jì)算機(jī)科學(xué)技術(shù)的發(fā)展,軟件從業(yè)人員應(yīng)該不斷地總結(jié)經(jīng)驗(yàn)并且主動(dòng)學(xué)

習(xí)新的軟件技術(shù),只有這樣才能不落后于時(shí)代。

什么是軟件過程?軟件過程標(biāo)準(zhǔn)包括哪些內(nèi)容?

軟件過程又稱為軟件生存周期過程,是軟件生存周期內(nèi)為達(dá)到一定目標(biāo)而必

須實(shí)施的一系列相關(guān)過程的集合。

標(biāo)準(zhǔn):

制定了IS012207軟件生存周期過程標(biāo)準(zhǔn),它把用于開發(fā)一個(gè)軟件系統(tǒng)的過

程分為三類:主過程、支持過程和輔助過程(組織過程)。

主過程是構(gòu)成軟件生存周期主要部分的那些過程,正是這些過程啟動(dòng)或進(jìn)行

軟件產(chǎn)品的開發(fā)、操作或維護(hù)。這些過程共有五個(gè),它們是:

獲取過程:定義需方(即獲取一個(gè)系統(tǒng)、軟件產(chǎn)品或軟件服務(wù)的組織)的活

動(dòng);

供應(yīng)過程:定義供方(即向需方提供系統(tǒng)、軟件產(chǎn)品或軟件服務(wù)的組織)的

活動(dòng);

開發(fā)過程:定義開發(fā)者(即定義和開發(fā)軟件產(chǎn)品的組織)的活動(dòng);

維護(hù)過程:定義維護(hù)者(即對(duì)軟件產(chǎn)品進(jìn)行維護(hù)服務(wù)的組織)的活動(dòng),這個(gè)

過程包括系統(tǒng)移植和退役;

運(yùn)行過程:定義運(yùn)行者(即在計(jì)算機(jī)系統(tǒng)運(yùn)行環(huán)境中向其用戶提供運(yùn)行服務(wù)

的組織)的活動(dòng)。

支持過程是對(duì)另一個(gè)過程提供支持的過程。被支持的過程根據(jù)需要采用支持

性過程,并與該過程結(jié)合,幫助軟件項(xiàng)目獲得成功,并提高質(zhì)量。支持過程共有

如下八個(gè):

文檔過程:定義對(duì)某生存周期過程所產(chǎn)生的信息進(jìn)行記錄的活動(dòng);

配置管理過程:定義配置管理活動(dòng);

質(zhì)量保證過程:定義客觀地保證軟件產(chǎn)品和過程符合規(guī)定要求、遵守已定計(jì)

劃的活動(dòng);

驗(yàn)證過程:定義需方、供方或獨(dú)立的第三方對(duì)軟件產(chǎn)品進(jìn)行驗(yàn)證的活動(dòng),這

些驗(yàn)證活動(dòng)的深度由軟件項(xiàng)目的性質(zhì)決定;

確認(rèn)過程:定義需方、供方或獨(dú)立的第三方對(duì)軟件產(chǎn)品進(jìn)行確認(rèn)的活動(dòng);

聯(lián)合評(píng)審過程:定義對(duì)某項(xiàng)活動(dòng)的狀態(tài)和產(chǎn)品進(jìn)行評(píng)價(jià)的活動(dòng),這過程可

由任何雙方共同采用,其中一方(評(píng)審方)評(píng)審另一方(被評(píng)方);

審計(jì)過程:定義對(duì)是否符合要求、計(jì)劃和合同進(jìn)行確定的過程,這個(gè)過程可

由任何雙方采用,其中一方(審計(jì)方)審計(jì)另一方(被審方)的軟件產(chǎn)品或活動(dòng);

問題解決過程:定義對(duì)開發(fā)、操作、維護(hù)或其它過程中發(fā)現(xiàn)的問題(包括不

一致性)進(jìn)行分析和排除的過程。

輔助過程是一個(gè)組織用來建立、實(shí)施一種基礎(chǔ)結(jié)構(gòu)、并不斷改進(jìn)該基礎(chǔ)結(jié)構(gòu)

的過程?;A(chǔ)結(jié)構(gòu)由一些相關(guān)的生存周期過程和人員組成。這些輔助過程有如下

四個(gè):

基礎(chǔ)設(shè)施過程:定義建立生存周期過程的基礎(chǔ)結(jié)構(gòu)所需的基本活動(dòng);

管理過程:定義在生存周期過程中管理(包括項(xiàng)目管理)的基本活動(dòng);

培訓(xùn)過程:定義為提供經(jīng)過適當(dāng)培訓(xùn)的人員所需的一些活動(dòng);

過程改進(jìn)過程:定義一個(gè)組織(即需方、供方、開發(fā)者、操作者、維護(hù)者或

另一過程的管理者)為了建立、測(cè)量、控制和改進(jìn)其生存周期過程需完成的基本

活動(dòng)。

簡(jiǎn)述常見的軟件生存周期模型各自的特征和優(yōu)缺點(diǎn)。

1.瀑布模型是一種線性的開發(fā)模型,具有不可回溯性。開發(fā)人員必須等前一

階段的任務(wù)完成后,才能開始進(jìn)行后一階段的工作,并且前一階段的輸出往往就

是后一階段的輸入。由于它的不可回溯性,如果在軟件生存周期的后期發(fā)現(xiàn)并要

改正前期的錯(cuò)誤,那么需要付出很高的代價(jià)。傳統(tǒng)的瀑布模型是文檔驅(qū)動(dòng)的。瀑

布模型的優(yōu)點(diǎn)是過程模型簡(jiǎn)單,執(zhí)行容易;缺點(diǎn)是無法適應(yīng)變更。瀑布模型適應(yīng)

于具有以下特征的軟件開發(fā)項(xiàng)目。

在軟件開發(fā)的過程中,需求不發(fā)生或發(fā)生很少變化,并且開發(fā)人員可以一次

性獲取到全部需求。否則,由于瀑布模型較差的可回溯性,在后續(xù)階段中需求經(jīng)

常性的變更需要付出高昂的代價(jià)。

軟件開發(fā)人員具有豐富的經(jīng)驗(yàn),對(duì)軟件應(yīng)用領(lǐng)域很熟悉C

軟件項(xiàng)目的風(fēng)險(xiǎn)較低。瀑布模型不具有完善的風(fēng)險(xiǎn)控制機(jī)制。

2.原型模型主要用于挖掘需求,或是進(jìn)行某種技術(shù)或開發(fā)方法的可行性研究,

是一種開發(fā)人員為了快速而準(zhǔn)確地獲取需求經(jīng)常采用的方法,在初步獲取需求后,

開發(fā)人員會(huì)快速地開發(fā)一個(gè)原型系統(tǒng)。通過對(duì)原型系統(tǒng)進(jìn)行模擬操作,開發(fā)人員

可以更直觀、更全面和更準(zhǔn)確地了解用戶對(duì)待開發(fā)系統(tǒng)的各項(xiàng)要求,同時(shí)還能挖

掘到隱藏的需求。

原型模型的優(yōu)點(diǎn)是簡(jiǎn)單和快速,缺點(diǎn)是需要花費(fèi)一些額外的成本來構(gòu)造原型,

并且不利于創(chuàng)新。

3.增量模型作為瀑布模型的一個(gè)變體,具有瀑布模型的所有優(yōu)點(diǎn),此外,它

還有以下優(yōu)點(diǎn):第一個(gè)可交付版本所需要的成本和時(shí)間很少;開發(fā)由增量表示的

小系統(tǒng)所承擔(dān)的風(fēng)險(xiǎn)不大;由于很快發(fā)布了第一個(gè)版本,因此可以減少用戶需求

的變更;允許增量投資,即在項(xiàng)目開始時(shí),可以僅對(duì)一個(gè)或兩個(gè)增量投資。

增量模型的不足為:如果沒有對(duì)用戶的變更要求進(jìn)行規(guī)劃,那么產(chǎn)生的初始

增量可能會(huì)造成后來增量的不穩(wěn)定;如果需求不像早期思考的那樣穩(wěn)定和完整,

那么一些增量就可能需要重新開發(fā),重新發(fā)布;管理發(fā)生的成本、進(jìn)度和配置的

復(fù)雜性,可能會(huì)超出組織的能力。

增量模型適用于以下特點(diǎn)的軟件項(xiàng)目o

軟件產(chǎn)品可以分批次地進(jìn)行交付。

待開發(fā)的軟件系統(tǒng)能夠被模塊化。

軟件開發(fā)人員對(duì)應(yīng)用領(lǐng)域不熟悉,難以一次性地進(jìn)行系統(tǒng)開發(fā)。

項(xiàng)目管理人員對(duì)全局把握的水平較高。

4.演化模型基于這樣的假定:需求是最基本的,是唯一的風(fēng)險(xiǎn)。

演化模型具有以下優(yōu)點(diǎn):在需求不能予以規(guī)范時(shí),可以使用這一演化模型;

用戶可以通過運(yùn)行系統(tǒng)的實(shí)踐,對(duì)需求進(jìn)行改進(jìn);與瀑布模型相比,需要更多用

戶/獲取方的參與。演化模型的不足包括:演化模型的使用仍然處于初步探索階

段,因此具有較大的風(fēng)險(xiǎn),需要有利的管理;即使很好地理解了需求或設(shè)計(jì),該

模型的使用也很容易成為不編寫需求或設(shè)計(jì)文檔的借口;用戶/獲取方不理解該

方法的自然屬性,因此當(dāng)結(jié)果不夠理想時(shí),可能會(huì)產(chǎn)生抱怨C

5.螺旋模型通常用來指導(dǎo)大型軟件項(xiàng)目的開發(fā)。它把開發(fā)過程分為制定計(jì)

劃、風(fēng)險(xiǎn)分析、實(shí)施開發(fā)和用戶評(píng)估四類活動(dòng)。

螺旋模型綜合了傳統(tǒng)的生存期模型的優(yōu)點(diǎn),同時(shí)擴(kuò)展了增量模型管理任務(wù)的

范圍:風(fēng)險(xiǎn)分析,用來彌補(bǔ)其不足。螺旋模型的另外一個(gè)特征是,只有一個(gè)迭代

過程真正開發(fā)可交付的軟件。螺旋模型也存在其缺點(diǎn):一個(gè)周期執(zhí)行時(shí)間太長(zhǎng);

要有方法和自動(dòng)化工具支持,否則無法實(shí)施。

螺旋模型適應(yīng)于風(fēng)險(xiǎn)較大的大型軟件項(xiàng)S的開發(fā)。

6.統(tǒng)一過程模型具有三大特點(diǎn):用例驅(qū)動(dòng),以架構(gòu)為中心,迭代和增量開

發(fā)。統(tǒng)一過程模型核心是解決可操作性問題,幫助開發(fā)人員盡可能少地依賴那些

“不可描述的經(jīng)驗(yàn)二

可以多次執(zhí)行各個(gè)工作流程,從而有利于更好地理解需求、設(shè)計(jì)出合理的系

統(tǒng)構(gòu)架,并最終交付一系列漸趨完善的成果。適用的范圍極為廣泛。

對(duì)開發(fā)人員的素質(zhì)要求較高。統(tǒng)一過程模型在實(shí)際實(shí)施過程中也存在很多的

困難,包括:多層次持續(xù)的規(guī)劃與評(píng)估;判斷構(gòu)架中關(guān)鍵風(fēng)險(xiǎn)的經(jīng)驗(yàn);高效率的

驗(yàn)證和評(píng)價(jià)手段;多工種之間的頻繁溝通;多版本工作產(chǎn)品的管理等。

7.敏捷方法是一種輕量級(jí)的軟件工程方法,更強(qiáng)調(diào)軟件開發(fā)過程中各種變化

的必然性,通過團(tuán)隊(duì)成員之間充分的交流與溝通以及合理的機(jī)制來有效地響應(yīng)變

化。

敏捷模型避免了傳統(tǒng)的重量級(jí)軟件開發(fā)過程復(fù)雜、文檔繁瑣和對(duì)變化的適應(yīng)

性低等各種弊端,它強(qiáng)調(diào)軟件開發(fā)過程中團(tuán)隊(duì)成員之間的交流、過程的簡(jiǎn)潔性、

用戶反饋、對(duì)所作決定的信心以及人性化的特征。

缺點(diǎn):組織模型和建模方法比較薄弱。

常用的軟件工程的輔助工具有哪些?各有什么作用?

1.分析設(shè)計(jì)工具

(1)MicrosoftVisio

MicrosoftVisio通過創(chuàng)建與數(shù)據(jù)相關(guān)的Visio圖表來顯示數(shù)據(jù),這些圖表

易于刷新,并能夠顯著提高生產(chǎn)率,使用各種圖表可了解、操作和共享企業(yè)內(nèi)組

織系統(tǒng)、資源和流程的有關(guān)信息。Visio提供了各種模板:業(yè)務(wù)流程的流程圖、

網(wǎng)絡(luò)圖、工作流圖、數(shù)據(jù)庫模型圖和軟件圖,這些模板可用于可視化和簡(jiǎn)化業(yè)務(wù)

流程、跟蹤項(xiàng)目和資源、繪制組織結(jié)構(gòu)圖、映射網(wǎng)絡(luò)、繪制建筑地圖以及優(yōu)化系

統(tǒng)。

(2)RationalRose

RationalRose是美國的Rational公司的面向?qū)ο蠼9ぞ?,利用這個(gè)工

具,可以建立用UML描述的軟件系統(tǒng)的模型,而且可以自動(dòng)生成和維護(hù)C++、Java、

VB和Oracle等語言和系統(tǒng)的代碼。RationalRose包括了統(tǒng)一建模語言(UML),

OOSE,以及OMT,是一個(gè)完全的,具有能滿足所有建模環(huán)境需求能力和靈活性的

一套解決方案。允許開發(fā)人員,項(xiàng)目經(jīng)理,系統(tǒng)工程師和分析人員在軟件開發(fā)周

期內(nèi)在將需求和系統(tǒng)的體系架構(gòu)轉(zhuǎn)換成代碼,消除浪費(fèi)的消耗,對(duì)需求和系統(tǒng)的

體系架構(gòu)進(jìn)行可視化,理解和精練。

(3)Together

Together是由Borland公司發(fā)布的集成了JavaIDE的產(chǎn)品線,源于JBuilder

中的UML建模工具。這條產(chǎn)品線提供了不同應(yīng)用層次的功能,比如Together

Designer,TogetherArchitect,TogetherDeveloper。從2007年開始,他們

將這些功能合并為一個(gè)產(chǎn)品進(jìn)行發(fā)布。技術(shù)上講,Together是一組Eclipse插

件。TogetherDeploper使用UML1.4,支持多種語言,物理數(shù)據(jù)建模,設(shè)計(jì)模

式,源代碼設(shè)計(jì)模式識(shí)別,模板代碼設(shè)計(jì)和重用,文件生成等。

(4)PowerDesigner

PowerDesigner是Sybase公司的CASE工具集,提供了一個(gè)復(fù)雜的交互環(huán)境,

支持開發(fā)生存周期的所有階段,從處理流程建模到對(duì)象和組件的生成。利用

PowerDesigner可以制作數(shù)據(jù)流程圖、概念數(shù)據(jù)模型、物理數(shù)據(jù)模型,可以生成

多種客戶端開發(fā)工具的應(yīng)用程序,還可為數(shù)據(jù)倉庫制作結(jié)構(gòu)模型,也能對(duì)團(tuán)隊(duì)設(shè)

計(jì)模型進(jìn)行控制。PowerDesigner系列產(chǎn)品提供了一個(gè)完整的建模解決方案,業(yè)

務(wù)或系統(tǒng)分析人員,設(shè)計(jì)人員,數(shù)據(jù)庫管理員DBA和開發(fā)人員可以對(duì)其裁剪以滿

足他們的特定的需要;而其模塊化的結(jié)構(gòu)為購買和擴(kuò)展提供了極大的靈活性,從

而使開發(fā)單位可以根據(jù)其項(xiàng)目的規(guī)模和范圍來使用他們所需要的工具。

(5)CASEStudio

CASEstudio是一個(gè)專業(yè)的數(shù)據(jù)庫設(shè)計(jì)工具??梢酝高^ER圖表、資料流向

圖來設(shè)計(jì)各式各樣的數(shù)據(jù)庫系統(tǒng)(像是mssql,oracle,Sybase等),另外程式

提供了各式各樣的管理單元幫助程序員進(jìn)行設(shè)計(jì)。

2.程序開發(fā)工具

(1)MicrosoftVisualStudio

MicrosoftVisualStudio是微軟公司推出的Windows平臺(tái)上的集成開發(fā)環(huán)

境。提供了高級(jí)開發(fā)工具、調(diào)試功能、數(shù)據(jù)庫功能和創(chuàng)新功能,幫助在各種平臺(tái)

上快速創(chuàng)建應(yīng)用程序。VisualStudio包括各種增強(qiáng)功能,例如可視化設(shè)計(jì)器、

對(duì)Web開發(fā)工具的大量改進(jìn),以及能夠加速開發(fā)和處理所有類型數(shù)據(jù)的語言增強(qiáng)

功能,為開發(fā)人員提供了所有相關(guān)的工具和框架支持。

(2)Eclipse

Eclipse是一個(gè)開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺(tái)。最初是由IBM

公司開發(fā)的替代商業(yè)軟件VisualAgeforJava的下-一代DE開發(fā)環(huán)境,2001

年11月貢獻(xiàn)給開源社區(qū),現(xiàn)在它由非營利軟件供應(yīng)商聯(lián)盟Eclipse基金會(huì)管理。

Eclipse的本身只是一個(gè)框架平臺(tái),但是眾多插件的支持使得Eclipse擁有其他

功能相對(duì)固定的IDE軟件很難具有的靈活性。許多軟件開發(fā)商以Eclipse為框架

開發(fā)自己的IDE。

(3)NetBeans

NetBeans由Sun公司在2000年創(chuàng)立,當(dāng)前可以在Solaris、Windows、Linux

和MacintoshOSX平臺(tái)上進(jìn)行開發(fā),并在Sun公用許可范圍內(nèi)使用。NetBeans

是一個(gè)全功能的開放源碼JavaIDE,可以幫助開發(fā)人員編寫、編譯、調(diào)試和部

署Java應(yīng)用,并將版本控制和XML編輯融入其眾多功能之中。NetBeans可支持

Java2平臺(tái)標(biāo)準(zhǔn)版(J2SE)應(yīng)用的創(chuàng)建、采用JSP和Servlet的2層Web應(yīng)用的

創(chuàng)建,以及用于2層Web應(yīng)用的API及軟件的核心組的創(chuàng)建。此外,NetBeans

還預(yù)裝了兩個(gè)Web服務(wù)器,即Tomcat和GlassFish,從而免除了繁瑣的配置和

安裝過程。

(4)Delphi

Delphi是Borland公司研制的可視化開發(fā)工具,可在Windows3.x、Windows95、

WindowsNT、WindowsXP、WindowsVista等環(huán)境下使用。Delphi擁有一個(gè)可視化

的集成開發(fā)環(huán)境,采用面向這象的編程語言O(shè)bjectPascal和基于部件的開發(fā)結(jié)

構(gòu)框架。它提供了500多個(gè)可供使用的構(gòu)件,利用這些部件,開發(fā)人員可以快速

地構(gòu)造出應(yīng)用系統(tǒng)。開發(fā)人員也可以根據(jù)自己的需要修改部件或用Delphi本身

編寫自己的部件。

(5)DevC++

DevC++是一個(gè)C&C++開發(fā)工具,它是一款自由軟件,遵守GPL協(xié)議。它集

合了GCC、MinGW32等眾多自由軟件,并且可以取得最新版本的各種工具支持。

它使用MingW32/GCC編譯器,遵循C/C++標(biāo)準(zhǔn)。開發(fā)環(huán)境包括多頁面窗口、工程

編輯器以及調(diào)試器等,在工程編輯器中集合了編輯器、編譯器、連接程序和執(zhí)行

程序,提供高亮度語法顯示的,以減少編輯錯(cuò)誤,還有完善的調(diào)試功能。

3.測(cè)試工具

(1)LoadRunner

LoadRunner是一種預(yù)測(cè)系統(tǒng)行為和性能的工業(yè)標(biāo)準(zhǔn)級(jí)負(fù)載測(cè)試工具。通過

以模擬上千萬用戶實(shí)施并發(fā)負(fù)載及實(shí)時(shí)性能監(jiān)測(cè)的方式來確認(rèn)和查找問題。它能

預(yù)測(cè)系統(tǒng)行為并優(yōu)化系統(tǒng)性能。LoadRunner的測(cè)試對(duì)象是整個(gè)企業(yè)的系統(tǒng),它

通過模擬實(shí)際用戶的操作行為實(shí)行實(shí)時(shí)性能監(jiān)測(cè)。

(2)WinRnnner

MercuryInteractive公司的WinRunner是一種企業(yè)級(jí)的功能測(cè)試工具,用

于檢測(cè)應(yīng)用程序是否能夠達(dá)到預(yù)期的功能及正常運(yùn)行。通過自動(dòng)錄制、檢測(cè)和回

放用戶的應(yīng)用操作,WinRunner能夠有效地幫助測(cè)試人員對(duì)復(fù)雜的企業(yè)級(jí)應(yīng)用的

不同發(fā)布版進(jìn)行測(cè)試,提高測(cè)試人員的工作效率和質(zhì)量,確保跨平臺(tái)的、復(fù)雜的

企業(yè)級(jí)應(yīng)用無故障發(fā)布及長(zhǎng)期穩(wěn)定運(yùn)行。

(3)Segue

SegueSilk產(chǎn)品系列是高度集成的自動(dòng)化黑盒功能、性能測(cè)試平臺(tái)。分布

式測(cè)試環(huán)境,集中控制門戶(瀏覽器方式)能夠控制測(cè)試代理,提供自動(dòng)測(cè)試流

程的流程化定義功能,具備〃端到端〃的組件測(cè)試能力,測(cè)試用例的管理、自動(dòng)測(cè)

試,連同測(cè)試腳本的跨平臺(tái)能力,基于A0L7標(biāo)準(zhǔn),全面支持WEB應(yīng)用的測(cè)試能

力,能夠通過提供大量的數(shù)據(jù),提供工作流類應(yīng)用的模擬運(yùn)行功能,全面支持

UNICODE編碼標(biāo)準(zhǔn),支持各種WEB技術(shù)構(gòu)件。

4.配置管理工具

(1)MicrosoftVisualSourcesafe

MicrosoftVisualSourceSafe是微軟公司出品的版本控制系統(tǒng),簡(jiǎn)稱VSS。

軟件支持Windows系統(tǒng)所支持的所有文件格式,通常與微軟公司的Visual

Studio產(chǎn)品同時(shí)發(fā)布,并且高度集成。包括服務(wù)器和通過網(wǎng)絡(luò)可以連接服務(wù)器

的客戶端。VSS提供了基本的認(rèn)證安全和版本控制機(jī)制,提供歷史版本對(duì)比,適

合于個(gè)人程序開發(fā)的版本管理。

(2)ClearCase

ClearCase是Rational公司開發(fā)的配置管理工具,可以與Windows資源管

理器集成使用,并且還可以與很多開發(fā)工具集成在一起使用。ClearCase主要應(yīng)

用于復(fù)雜的產(chǎn)品發(fā)放、分布式團(tuán)隊(duì)合作、并行的開發(fā)和維護(hù)任務(wù),包括支持當(dāng)今

流行軟件開發(fā)環(huán)境Client/Server網(wǎng)絡(luò)結(jié)構(gòu)。它包含了一套完整的軟件配置管理

工具而且結(jié)構(gòu)透明、界面可親。

5.項(xiàng)目管理工具

(1)MicrosoftProject

MicrosoftProject是專案管理軟件程序,由微軟開發(fā)銷售。軟件設(shè)計(jì)目的

在于協(xié)助專案經(jīng)理發(fā)展計(jì)劃、為任務(wù)分配資源、跟蹤進(jìn)度、管理預(yù)算和分析工作

量??僧a(chǎn)生關(guān)鍵路徑日程表,日程表可以以資源標(biāo)準(zhǔn)的,而且關(guān)鍵鏈以甘特圖形

象化。另外,Project可以辨認(rèn)不同類別的用戶。這些不同類的用戶對(duì)專案、概

觀、和其它資料有不同的訪問級(jí)別。

(2)CA-SuperProject

ComputerAssociatesInternational公司的CA-SuperProject是一個(gè)常用

的軟件,特別是在那些管理公司網(wǎng)絡(luò)的項(xiàng)目管理人員、在Unix或Windows環(huán)境

下的工作人員以及需要高性能程序的人中更受歡迎。這個(gè)軟件包能支持多達(dá)160,

000多個(gè)任務(wù)的大型項(xiàng)目。能創(chuàng)建及合并多個(gè)項(xiàng)目文件,為網(wǎng)絡(luò)工作者提供多層

密碼入口,進(jìn)行計(jì)劃審評(píng)法(PERT)的概率分析。而且,這一程序包含一個(gè)資源

平衡算法,在必要時(shí),可以保證重要工作的優(yōu)先性。

(3)TimeLine

Symantec公司的TimeLine軟件是有經(jīng)驗(yàn)的項(xiàng)目經(jīng)理的首選。它的報(bào)表功

能以及與SQL數(shù)據(jù)庫的連接功能都很突出。日程表、電子郵件的功能,排序和篩

選能力以及多項(xiàng)目處理都是精心設(shè)計(jì)的。另外,它還有一個(gè)叫做Co-Pilot的功

能,這是一個(gè)很有用的推出式幫助設(shè)施,用戶界面很好,極易操作。許多評(píng)論人

員認(rèn)為TimeLine最適于大型項(xiàng)目以及多任務(wù)項(xiàng)目,但不如其他軟件包便于初學(xué)

者使用。

2練習(xí)題

什么是項(xiàng)目立項(xiàng),包括哪兒個(gè)步驟?

任何一個(gè)完整的軟件工程項(xiàng)目都是從項(xiàng)目立項(xiàng)開始的。項(xiàng)目立項(xiàng)包括項(xiàng)目發(fā)

起、項(xiàng)目論證、項(xiàng)目審核和項(xiàng)目立項(xiàng)四個(gè)過程。

可行性研究包括哪些方面?每個(gè)方面關(guān)注的問題領(lǐng)域是什么?

可行性研究需要從多個(gè)方面進(jìn)行評(píng)估,主要包括:戰(zhàn)略可行性、操作可行性、

計(jì)劃可行性、技術(shù)可行性、社會(huì)可行性、市場(chǎng)可行性、經(jīng)濟(jì)可行性和風(fēng)險(xiǎn)可行性

等。

戰(zhàn)略可行性研究主要從整體的角度考慮項(xiàng)目是否可行,例如提出的系統(tǒng)對(duì)組

織目標(biāo)具有怎樣的貢獻(xiàn);新系統(tǒng)對(duì)目前的部門和組織結(jié)構(gòu)有何影響;系統(tǒng)將以何

種方式影響人力水平和現(xiàn)存雇員的技術(shù);它對(duì)組織整個(gè)人員開發(fā)策略有何影響等

等。

操作可行性研究主要考慮系統(tǒng)是否能夠真正解決問題;是否系統(tǒng)一旦安裝后,

有足夠的人力資源來運(yùn)行系統(tǒng);用戶對(duì)新系統(tǒng)具有抵觸情緒是否可能使操作不可

行;人員的可行性等問題。

計(jì)劃可行性研究主要估計(jì)項(xiàng)目完成所需的時(shí)間并評(píng)估項(xiàng)目的時(shí)間是否足夠。

技術(shù)可行性研究主要考慮項(xiàng)目使用技術(shù)的成熟程度;與競(jìng)爭(zhēng)者的技術(shù)相比,

所采用技術(shù)的優(yōu)勢(shì)及缺陷;技術(shù)轉(zhuǎn)換成本;技術(shù)發(fā)展趨勢(shì)及所采用技術(shù)的發(fā)展前

景;技術(shù)選擇的制約條件等。

社會(huì)可行性研究主要考慮項(xiàng)目是否滿足所有項(xiàng)目涉及者的利益;是否滿足法

律或合同的要求等。

市場(chǎng)可行性研究主要包括研究市場(chǎng)發(fā)展歷史與發(fā)展趨勢(shì),說明本產(chǎn)品處于市

場(chǎng)的什么發(fā)展階段;本產(chǎn)品和同類產(chǎn)品的價(jià)格分析;統(tǒng)計(jì)當(dāng)前市場(chǎng)的總額、競(jìng)爭(zhēng)

對(duì)手所占的份額,分析本產(chǎn)品能占多少份額;產(chǎn)品消費(fèi)群體特征、消費(fèi)方式以及

影響市場(chǎng)的因素分析;分析競(jìng)爭(zhēng)對(duì)手的市場(chǎng)狀況;分析競(jìng)爭(zhēng)對(duì)手在研發(fā)、銷售、

資金、品牌等方面的實(shí)力;分析自己的實(shí)力等。

經(jīng)濟(jì)可行性研究主要是把系統(tǒng)開發(fā)和運(yùn)行所需要的成本與得到的效益進(jìn)行

比較,進(jìn)行成本效益分析。

風(fēng)險(xiǎn)可行性研究主要是考慮項(xiàng)目在實(shí)施過程中可能遇到的各種風(fēng)險(xiǎn)因素,以

及每種風(fēng)險(xiǎn)因素可能出現(xiàn)的概率和出險(xiǎn)后造成的影響程度。

進(jìn)行可行性研究的一般步驟是什么?

明確系統(tǒng)的目標(biāo)

分析研究現(xiàn)行系統(tǒng)

設(shè)計(jì)新系統(tǒng)的高層邏輯模型

獲得并比較可行的方案

撰寫可行性研究報(bào)告

需求分析和可行性研究的側(cè)重點(diǎn)有什么不同?

可行性研究的目的是評(píng)估系統(tǒng)是否值得去開發(fā),問題是否能夠解決,而不是

對(duì)需求進(jìn)行定義。如果說可行性分析是要決定“做還是不做”,那么需求分析就

是要回答“系統(tǒng)必須做什么”這個(gè)問題。

獲取需求的常用方法有哪些?

問卷調(diào)查、訪談、實(shí)地操作、建立原型

如何進(jìn)行結(jié)構(gòu)化需求分析,其建模方法都有哪些?

結(jié)構(gòu)化分析的具體步驟為:

建立當(dāng)前系統(tǒng)的“具體模型”:系統(tǒng)的“具體模型”就是現(xiàn)實(shí)環(huán)境的忠實(shí)寫

照,這樣的表達(dá)與當(dāng)前系統(tǒng)完全對(duì)應(yīng),因此用戶容易理解。

抽象出當(dāng)前系統(tǒng)的邏輯模型:分析系統(tǒng)的“具體模型”,抽象出其本質(zhì)的因

素,排除次要因素,獲得當(dāng)前系統(tǒng)的“邏輯模型二

建立目標(biāo)系統(tǒng)的邏輯模型:分析目標(biāo)系統(tǒng)與當(dāng)前系統(tǒng)邏輯上的差別,從而進(jìn)

一步明確目標(biāo)系統(tǒng)“做什么”,建立目標(biāo)系統(tǒng)的“邏輯模型,

為了對(duì)目標(biāo)系統(tǒng)進(jìn)行完整的描述,還需要考慮人機(jī)界面向其他一些問題。

在結(jié)構(gòu)化分析中經(jīng)常用到的建模方法主要有:

數(shù)據(jù)流圖(DFD)

實(shí)體聯(lián)系圖(E-R)

控制流圖(CFD)

狀態(tài)遷移圖(STD)

根據(jù)“學(xué)生檔案管理系統(tǒng)”的數(shù)據(jù)流圖,完成它的數(shù)據(jù)字典。

數(shù)據(jù)流名稱:資料

別名:學(xué)生資料

組成:學(xué)號(hào)+姓名+性別+年齡+學(xué)院+年級(jí)+專業(yè)

有如下一個(gè)學(xué)生選課系統(tǒng):教師提出開課計(jì)劃,系統(tǒng)批準(zhǔn)后給教師下發(fā)開課

通知。學(xué)生可向系統(tǒng)提出選課申請(qǐng),系統(tǒng)批準(zhǔn)后給學(xué)生下發(fā)選課申請(qǐng)結(jié)果通知。

課程結(jié)束后,系統(tǒng)還可以幫助教師錄入學(xué)生成績(jī),同時(shí)把成績(jī)單發(fā)送給學(xué)生。

請(qǐng)用Visio畫出該系統(tǒng)頂層的數(shù)據(jù)流圖。

軟件設(shè)計(jì)的意義和目標(biāo)是什么?

軟件設(shè)計(jì)在軟件開發(fā)過程中處于核心地位,它是保證質(zhì)量的關(guān)鍵步驟。設(shè)計(jì)

為我們提供了可以用于質(zhì)量評(píng)估的軟件表示,設(shè)計(jì)是我們能夠?qū)⒂脩粜枨鬁?zhǔn)確的

轉(zhuǎn)化為軟件產(chǎn)品或系統(tǒng)的唯一方法。軟件設(shè)計(jì)是所有軟件工程活動(dòng)和隨后的軟件

支持活動(dòng)的基礎(chǔ)。

在軟件設(shè)計(jì)的過程中要遵循哪些規(guī)則?

模塊化

抽象化

逐步求精

信息隱藏

軟件設(shè)計(jì)如何分類,分別有哪些活動(dòng)?

從活動(dòng)任務(wù)來看,軟件設(shè)計(jì)是對(duì)軟件需求進(jìn)行:數(shù)據(jù)設(shè)計(jì)、體系結(jié)構(gòu)設(shè)計(jì)、

接口設(shè)計(jì)、構(gòu)件設(shè)計(jì)和部署設(shè)計(jì)。

從工程管理角度來看,軟件設(shè)計(jì)分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。前期進(jìn)行概要設(shè)

計(jì),得到軟件系統(tǒng)的基本框架。后期進(jìn)行詳細(xì)設(shè)計(jì),明確系統(tǒng)內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)。

什么是軟件體系結(jié)構(gòu),什么是軟件體系結(jié)構(gòu)風(fēng)格?

體系結(jié)構(gòu)是研究系統(tǒng)各部分組成及相互關(guān)系的技術(shù)學(xué)科。軟件體系結(jié)構(gòu)不僅

指定了系統(tǒng)的組織結(jié)構(gòu)和拓?fù)浣Y(jié)構(gòu),也顯示了系統(tǒng)需求和構(gòu)成系統(tǒng)的元素之間的

對(duì)應(yīng)關(guān)系,提供了一些設(shè)計(jì)決策的基本原理。

所謂軟件體系結(jié)構(gòu)風(fēng)格,是描述某一特定應(yīng)用領(lǐng)域中系統(tǒng)組織方式的慣用模

式。

軟件體系結(jié)構(gòu)風(fēng)格反映了領(lǐng)域中眾多系統(tǒng)所共有的結(jié)構(gòu)和語義特性,并指導(dǎo)

如何將各個(gè)模塊和子系統(tǒng)有效地組織成一個(gè)完整的系統(tǒng)。

軟件體系結(jié)構(gòu)風(fēng)格定義了用于描述系統(tǒng)的術(shù)語表和一組指導(dǎo)構(gòu)件系統(tǒng)的規(guī)

則。

常見的軟件體系結(jié)構(gòu)風(fēng)格有哪些,如何分類?

1數(shù)據(jù)流風(fēng)格:數(shù)據(jù)到達(dá)即被激活處理工作,無數(shù)據(jù)時(shí)不工作。

2調(diào)用/返回風(fēng)格:各個(gè)組件通過調(diào)用其它組件和獲得返回參數(shù)來進(jìn)行交互,

配合完成功能。

3獨(dú)立構(gòu)件風(fēng)格:這種風(fēng)格的主要特點(diǎn)是:事件的觸發(fā)者并不知道哪些構(gòu)件

會(huì)被這些事件影響,相互保持獨(dú)立這樣不能假定構(gòu)件的處理順序,甚至不知道哪

些過程會(huì)被調(diào)用;各個(gè)構(gòu)件之間彼此無連接關(guān)系,各自獨(dú)立存在,通過對(duì)事件的

發(fā)布和注冊(cè)實(shí)現(xiàn)關(guān)聯(lián)包括進(jìn)程通訊、事件系統(tǒng)。

4虛擬機(jī)風(fēng)格:它創(chuàng)建了一種虛擬的環(huán)境,將用戶與底層平臺(tái)隔離開來,或

者將高層抽象和底層實(shí)現(xiàn)隔離開來。

5倉庫風(fēng)格:倉庫是存儲(chǔ)和維護(hù)數(shù)據(jù)的中心場(chǎng)所。在倉庫風(fēng)格中存在兩類構(gòu)

件,表示當(dāng)前數(shù)據(jù)的狀態(tài)的中心數(shù)據(jù)結(jié)構(gòu)和一組對(duì)中心數(shù)據(jù)進(jìn)行操作的獨(dú)立構(gòu)

件。包括數(shù)據(jù)庫系統(tǒng)、超文本系統(tǒng)、黑板系統(tǒng)。

面向數(shù)據(jù)流的設(shè)計(jì)方法的主要思想是什么?

面向數(shù)據(jù)流的設(shè)計(jì)方法就是通常所說的結(jié)構(gòu)化設(shè)計(jì)方法,它以數(shù)據(jù)流圖為基

礎(chǔ),把DFD變換成軟件結(jié)構(gòu)的不同映射方法,以軟件結(jié)構(gòu)圖(SC圖)的形式表

現(xiàn)。SC圖描述軟件系統(tǒng)的層次和分塊結(jié)構(gòu)關(guān)系,體現(xiàn)模塊與模塊之間的聯(lián)系與

通訊,從而表達(dá)軟件的體系結(jié)構(gòu)。

什么是內(nèi)聚、耦合,包括哪些常見類型?

內(nèi)聚指的是一個(gè)模塊內(nèi)部各組成部分的處理動(dòng)作的組合強(qiáng)度,又稱塊內(nèi)聯(lián)系。

包括幾種內(nèi)聚類型:

偶然內(nèi)聚:模塊內(nèi)各成分無實(shí)質(zhì)性的聯(lián)系,只是偶然地被湊到一起;

邏輯內(nèi)聚:模塊內(nèi)部各組成部分的處理動(dòng)作在邏輯上相似,但功能卻彼此不

同或無關(guān);

時(shí)間內(nèi)聚:將若干在同一個(gè)時(shí)間帶內(nèi)進(jìn)行的工作集中在一個(gè)模塊內(nèi),但這些

工作彼此無關(guān);

過程內(nèi)聚:模塊內(nèi)部包含的各個(gè)成分按照某種確定的順序進(jìn)行,但所做工作

沒有什么關(guān)系;

通訊內(nèi)聚:模塊內(nèi)的各個(gè)組成部分都使用相同的輸入數(shù)據(jù)或產(chǎn)生相同的輸出

數(shù)據(jù);

順序內(nèi)聚:模塊中各個(gè)組成部分順序執(zhí)行,前一個(gè)成分的輸出就是后一個(gè)成

分的輸入;

功能內(nèi)聚:模塊內(nèi)的各個(gè)組成部分全都為完成同一個(gè)功能而存在,共同完成

一個(gè)單一的功能,并且只完成一個(gè)功能。

耦合指的是兩個(gè)模塊之間的相互依賴關(guān)系,又稱塊間聯(lián)系。包括以下幾種類

型的偶合:

非直接耦合:調(diào)用和被調(diào)用模塊之間不存在直接的數(shù)據(jù)聯(lián)系;

數(shù)據(jù)耦合:調(diào)用和被調(diào)用模塊之間存在簡(jiǎn)單變量這樣的數(shù)據(jù)傳遞;

特征耦合:調(diào)用和調(diào)用模塊之間存在諸如數(shù)組這樣的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)傳遞;

控制耦合:耦合的模塊之間傳遞的不是數(shù)據(jù)信息,而是控制信息,或稱開關(guān)

量或標(biāo)志量;

外部耦售:允許多個(gè)模塊訪問同一個(gè)全局變量;

公共耦合:允許多個(gè)模塊訪問同一個(gè)全局性數(shù)據(jù)結(jié)構(gòu);

內(nèi)容耦合:允許一個(gè)模塊直接調(diào)用另一個(gè)模塊中的數(shù)據(jù)。

詳細(xì)設(shè)計(jì)時(shí),應(yīng)該完成哪些工作?

軟件詳細(xì)設(shè)計(jì)包括數(shù)據(jù)設(shè)計(jì)、界面設(shè)計(jì)和構(gòu)件設(shè)計(jì)

數(shù)據(jù)庫設(shè)計(jì)有哪些步驟,每一步的主要工作是什么?

需求分析;調(diào)查和分析用戶的業(yè)務(wù)活動(dòng)和數(shù)據(jù)的使用情況,弄清所用數(shù)據(jù)的

種類、范圍、數(shù)量以及它們?cè)跇I(yè)務(wù)活動(dòng)中交流的情況,確定用戶對(duì)數(shù)據(jù)庫系統(tǒng)的

使用要求和各種約束條件等,形成用戶需求規(guī)約。

概念設(shè)計(jì);對(duì)用戶要求描述的現(xiàn)實(shí)世界(可能是一個(gè)工廠、一個(gè)商場(chǎng)或者一

個(gè)學(xué)校等),通過對(duì)其中住處的分類、聚集和概括,建立抽象的概念數(shù)據(jù)模型。

這個(gè)概念模型應(yīng)反映現(xiàn)實(shí)世界各部門的信息結(jié)構(gòu)、信息流動(dòng)情況、信息間的互相

制約關(guān)系以及各部門對(duì)信息儲(chǔ)存、查詢和加工的要求等。所建立的模型應(yīng)避開數(shù)

據(jù)庫在計(jì)算機(jī)上的具體實(shí)現(xiàn)細(xì)節(jié),用一種抽象的形式表示出天。以擴(kuò)充的實(shí)體一

聯(lián)系模型(E-R模型)方法為例,第一步先明確現(xiàn)實(shí)世界各部門所含的各種實(shí)體

及其屬性、實(shí)體間的聯(lián)系以及對(duì)信息的制約條件等,從而給出各部門內(nèi)所用信息

的局部描述(在數(shù)據(jù)庫中稱為用戶的局部視圖)。第二步再將前面得到的多個(gè)用戶

的局部視圖集成為一個(gè)全局視圖,即用戶要描述的現(xiàn)實(shí)世界的概念數(shù)據(jù)模型。

邏輯設(shè)計(jì);主要工作是將現(xiàn)實(shí)世界的概念數(shù)據(jù)模型設(shè)計(jì)成數(shù)據(jù)庫的一種邏輯

模式,即適應(yīng)于某種特定數(shù)據(jù)庫管理系統(tǒng)所支持的邏輯數(shù)據(jù)模式。與此同時(shí),可

能還需為各種數(shù)據(jù)處理應(yīng)用領(lǐng)域產(chǎn)生相應(yīng)的邏輯子模式。這一步設(shè)計(jì)的結(jié)果就是

所謂“邏輯數(shù)據(jù)庫二

物理設(shè)計(jì);根據(jù)特定數(shù)據(jù)庫管理系統(tǒng)所提供的多種存儲(chǔ)結(jié)構(gòu)和存取方法等依

賴于具體計(jì)算機(jī)結(jié)構(gòu)的各項(xiàng)物理設(shè)計(jì)措施,對(duì)具體的應(yīng)用任務(wù)選定最合適的物理

存儲(chǔ)結(jié)構(gòu)(包括文件類型、索引結(jié)構(gòu)和數(shù)據(jù)的存放次序與位邏輯等)、存取方法和

存取路徑等。這一步設(shè)計(jì)的結(jié)果就是所謂“物理數(shù)據(jù)庫”。

驗(yàn)證設(shè)計(jì);在上述設(shè)計(jì)的基礎(chǔ)上,收集數(shù)據(jù)并具體建立一個(gè)數(shù)據(jù)庫,運(yùn)行一

些典型的應(yīng)用任務(wù)來驗(yàn)證數(shù)據(jù)庫設(shè)計(jì)的正確性和合理性。一般,一個(gè)大型數(shù)據(jù)庫

的設(shè)計(jì)過程往往需要經(jīng)過多次循環(huán)反復(fù)。當(dāng)設(shè)計(jì)的某步發(fā)現(xiàn)問題時(shí),可能就需要

返回到前面去進(jìn)行修改。因此,在做上述數(shù)據(jù)庫設(shè)計(jì)時(shí)就應(yīng)考慮到今后修改設(shè)計(jì)

的可能性和方便性。

如何進(jìn)行E-R模型到關(guān)系模型的轉(zhuǎn)換?

規(guī)則1(實(shí)體類型的轉(zhuǎn)換):將每個(gè)實(shí)體類型轉(zhuǎn)換成一個(gè)關(guān)系模式,實(shí)體的

屬性即為關(guān)系模式的屬性,實(shí)體標(biāo)識(shí)符即為關(guān)系模式的鍵。

規(guī)則2(二元聯(lián)系類型的轉(zhuǎn)換)

若實(shí)體間聯(lián)系是1:1:隱含在實(shí)體對(duì)應(yīng)的關(guān)系中;

若實(shí)體間聯(lián)系是1:N:隱含在實(shí)體對(duì)應(yīng)的關(guān)系中;

若實(shí)體間聯(lián)系是M:N:直接用關(guān)系表示。

界面設(shè)計(jì)應(yīng)該遵循H么原則?

置用戶于控制之下:以不強(qiáng)迫用戶進(jìn)入不必要的或不希望的動(dòng)作的方式來定

義交互模式;提供靈活的交互;允許用戶交互可以被中斷和撤銷;當(dāng)技能級(jí)別增

長(zhǎng)時(shí)可以使交互流水化并允許定制交互;使用戶隔離內(nèi)部技犬細(xì)節(jié);設(shè)計(jì)應(yīng)允許

用戶和出現(xiàn)在屏幕上的對(duì)象直接交互。

減少用戶的記憶負(fù)擔(dān):減少對(duì)短期記憶的要求;建立有意義的缺??;定義直

覺性的捷徑;界面的視覺布局應(yīng)該基于真實(shí)世界的隱喻;以不斷進(jìn)展的方式揭示

信息。

保持界面一致:允許用戶將當(dāng)前任務(wù)放入有意義的語境;在應(yīng)用系列內(nèi)保持

一致性;如果過去的交互模式已經(jīng)建立起了用戶期望,不要改變它,除非有不得

己的理由。

構(gòu)件設(shè)計(jì)有哪些設(shè)計(jì)工具?

流程圖、N-S圖、PAD圖、決策表與決策樹、偽代碼

利用Visio實(shí)現(xiàn)3.5o

程序設(shè)計(jì)語言的發(fā)展經(jīng)歷了哪幾個(gè)階段?每個(gè)階段語言的特點(diǎn)是什么?

機(jī)器語言是計(jì)算機(jī)可以直接識(shí)別、執(zhí)行的指令代碼,它是計(jì)算機(jī)發(fā)展早期的

語言。由于機(jī)器指令直接操縱計(jì)算機(jī)硬件的執(zhí)行,所以不同結(jié)構(gòu)的計(jì)算機(jī)有不同

的機(jī)器語言。用機(jī)器語言編碼時(shí)必須考慮到機(jī)器的實(shí)現(xiàn)細(xì)節(jié),所以它的編程效率

極低,而且很難掌握。

匯編語言用一組助記符來代替機(jī)器語言中晦澀、難懂的二進(jìn)制代碼,使得代

碼比較直觀,易于程序員理解。在執(zhí)行時(shí),匯編語言必須由特定的翻譯程序轉(zhuǎn)化

為機(jī)器語言,才能由計(jì)算機(jī)執(zhí)行。可以說,每種匯編語言都是支持這種語言的計(jì)

算機(jī)獨(dú)有的,所以它與機(jī)器語言一樣都是“面向機(jī)器”的低級(jí)語言。由于匯編語

言的抽象層次太低,所以程序員在使用時(shí)需要考慮大量的機(jī)器細(xì)節(jié)。

高級(jí)語言出現(xiàn)于20世紀(jì)50年代,它不僅在語義上更易亍程序員理解,而且

在實(shí)現(xiàn)上也不再依賴于特定的計(jì)算機(jī)硬件。它為程序員的編碼工作提供了方便,

同時(shí)大大提高了軟件的生產(chǎn)效率。

第四代語言是超高級(jí)語言,它是對(duì)數(shù)據(jù)處理和過程描述的更高級(jí)的抽象,一

般由特定的知識(shí)庫和方法庫支持,比如與數(shù)據(jù)庫應(yīng)用相關(guān)的查詢語言,描述數(shù)據(jù)

結(jié)構(gòu)和處理過程的圖形語言等,它們的目的在于直接實(shí)現(xiàn)各種應(yīng)用系統(tǒng)。

面向?qū)ο蟮母呒?jí)語言中包含哪些基本概念?

封裝、繼承、多態(tài)

3)你了解的程序設(shè)計(jì)語言都有哪些?

(1)Fortran語言

Fortran語言出現(xiàn)于1954年,是世界上最早的高級(jí)語言,廣泛應(yīng)用于科學(xué)

和工程計(jì)算領(lǐng)域。Fortran語言以其特有的功能在數(shù)值、科學(xué)和工程計(jì)算領(lǐng)域發(fā)

揮著重要作用。

(2)Pascal語言

Pascal語言是最早的結(jié)溝化編程語言,常用于算法和數(shù)據(jù)結(jié)構(gòu)的描述。用

Pascal編寫的程序有一種結(jié)構(gòu)化的美感,學(xué)習(xí)Pascal語言有助于培養(yǎng)良好的程

序設(shè)計(jì)風(fēng)格和編程習(xí)慣。

(3)Basic語言

Basic相對(duì)于其他編程語言來說簡(jiǎn)單易用,并具有“人機(jī)會(huì)話”功能,是一

種比較適合于初學(xué)者和愛好編程的非專業(yè)人士的語言。但是其簡(jiǎn)單與隨意的特性

也容易讓使用者養(yǎng)成不好的編程習(xí)慣。

(4)Cobol語言

Cobol語言是最接近于自然語言的高級(jí)語言之一,它使用了300多個(gè)英文保

留字,語法規(guī)則嚴(yán)格,程序通俗易懂,是一種功能很強(qiáng)而又極為冗長(zhǎng)的語言。常

用于商業(yè)數(shù)據(jù)處理等領(lǐng)域。

(5)C語言

C語言兼顧高級(jí)語言和匯編語言的特點(diǎn),靈活性很好,效率高,常用來開發(fā)

比較底層的軟件。例如,Linux操作系統(tǒng)就是用C語言編寫的。要充分掌握該語

言需要一定的計(jì)算機(jī)基礎(chǔ)和編程經(jīng)驗(yàn),所以雖然現(xiàn)在很多高校選擇C語言作為入

門編程語言,但它并不十分適合初學(xué)者。

(6)C++語言

C++語言在C語言的基礎(chǔ)上加入了面向?qū)ο蟮奶匦?,既支持結(jié)構(gòu)化編程又支

持面向?qū)ο缶幊淌蛊鋺?yīng)用領(lǐng)域十分廣泛,是現(xiàn)在使用較多的語言之一。

(7)Java語言

Java語言是現(xiàn)在非常流行的一種編程語言,具有平臺(tái)無關(guān)性、安全性、面

向?qū)ο蟆⒎植际?、健壯性等特點(diǎn)。Java分為3個(gè)體系JavaSE、JavaEE和JavaME,

適合企業(yè)應(yīng)用程序和各種網(wǎng)絡(luò)程序的開發(fā)。

(8)Delphi語言

Delphi語言以Pascal語言為基礎(chǔ),擴(kuò)充了面向?qū)ο蟮哪芰?,并加入了可?/p>

化的開發(fā)手段,用于開發(fā)Windows環(huán)境下的應(yīng)用程序。

(9)C#語言

C#語言是微軟公司發(fā)布的一種面向?qū)ο蟮?、運(yùn)行于.NETFramework之上的

高級(jí)程序設(shè)計(jì)語言,它充分借鑒了C++,Java和Delphi的優(yōu)點(diǎn),是現(xiàn)在微軟.NET

Windows網(wǎng)絡(luò)框架的主角。

(10)標(biāo)記語言

標(biāo)記語言主要用來描述網(wǎng)頁的數(shù)據(jù)和格式,沒有傳統(tǒng)編程語言提供的控制結(jié)

構(gòu)和復(fù)雜的數(shù)據(jù)結(jié)構(gòu)定義。例如,超文本標(biāo)記語言(HTML)和可擴(kuò)展標(biāo)記語言(XML)。

(11)腳本語言

腳本語言是可以被另一種語言解釋執(zhí)行的語言。腳本語言假設(shè)已經(jīng)存在了一

系列由其他語言寫成的有用的組件,它不是為了實(shí)現(xiàn)最原始的應(yīng)用,而主要是把

組件連接在一起,實(shí)現(xiàn)某一特定領(lǐng)域功能。例如,ShelKPerisJSP等。這種

領(lǐng)域?qū)I(yè)語言的應(yīng)用是未來編程的發(fā)展方向之一。

要形成良好的編碼風(fēng)格可以從哪些方面做起?

版權(quán)和版本聲明

程序版式

注釋

命名規(guī)則

數(shù)據(jù)說明

代碼構(gòu)造

輸入輸出

效率

使用MicrosoftVisualStudio2010和C#對(duì)求兩個(gè)整數(shù)的最大公約數(shù)進(jìn)行

編程。

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

namespaceGreatestComnonDivisor

{

classProgram

{

〃輾轉(zhuǎn)相除法

publicstaticintcalculate(intx,inty)

{

if(x<y)

(

returncalculatel(y,x);

returncalculatel(x,y);

//xisnolessthany

privatestaticintcalculatel(intx,inty)

(

if(x%y!=0)

(

returncalculatel(y,x%y);

)

returny;

}

)

}

5練習(xí)題

軟件測(cè)試的原則有哪些?

完全測(cè)試是不可能的。

測(cè)試中有風(fēng)險(xiǎn)存在。

軟件測(cè)試只能表明缺陷的存在,而不能證明產(chǎn)品已經(jīng)沒有缺陷。

軟件產(chǎn)品中所存在的錯(cuò)誤數(shù)與已發(fā)現(xiàn)的錯(cuò)誤數(shù)成正比。

要避免軟件測(cè)試的殺蟲劑現(xiàn)象。

在設(shè)計(jì)測(cè)試用例時(shí),應(yīng)包括輸入數(shù)據(jù)和預(yù)期的輸出結(jié)果兩個(gè)部分,并且,輸

入數(shù)據(jù)不僅應(yīng)該包括合法的情況,還應(yīng)該包括非法的輸入情況。

要集中測(cè)試容易出錯(cuò)或錯(cuò)誤較多的模塊。

應(yīng)該長(zhǎng)期保留所有的測(cè)試用例。

使開發(fā)人員和測(cè)試人員分立,即軟件的開發(fā)工作和測(cè)試工作不能由同一部分

人來完成。

測(cè)試工作應(yīng)該盡早開始,并且貫穿于整個(gè)開發(fā)過程中。

比較軟件測(cè)試的V模型和W模型。

V模型中,描述了基本的開發(fā)過程和測(cè)試行為。它的價(jià)值在于非常明確地標(biāo)

明了測(cè)試過程中存在的不同級(jí)別,并且清楚地描述了這些測(cè)試階段和開發(fā)過程期

問各階段的對(duì)應(yīng)關(guān)系。

在V模型的基礎(chǔ)上,增加開發(fā)階段的同步測(cè)試,就是W模型。在W模型中測(cè)

試與開發(fā)同步進(jìn)行,這樣有利于盡早地發(fā)現(xiàn)問題。

軟件測(cè)試的步驟,和每一步驟中需要進(jìn)行的活動(dòng)是什么?

測(cè)試工作按5個(gè)步驟進(jìn)行,即單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試、系統(tǒng)測(cè)試和

驗(yàn)收測(cè)試。

單元測(cè)試又稱模塊測(cè)試,是針對(duì)軟件設(shè)計(jì)的最小單位進(jìn)行正確性檢驗(yàn)的測(cè)試

工作。目的是檢查每個(gè)程序單元能夠正確實(shí)現(xiàn)詳細(xì)設(shè)計(jì)說明中的模塊功能、性能、

接口和設(shè)計(jì)約束等要求,發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種錯(cuò)誤。單元測(cè)試需要從

程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測(cè)試用例。多個(gè)模塊可以平行的獨(dú)立進(jìn)行單元測(cè)試。

集成測(cè)試也叫組裝測(cè)試,通常在單元測(cè)試的基礎(chǔ)上,將所有程序模塊進(jìn)行有

序的、遞增的測(cè)試。目的是檢驗(yàn)程序單元或部件的接口關(guān)系,逐步集成為符合概

要設(shè)計(jì)要求的程序部件或整個(gè)系統(tǒng)。集成測(cè)試有自頂向下和自底向上兩種方式。

確認(rèn)測(cè)試是檢查己實(shí)現(xiàn)的軟件是否滿足了需求規(guī)格說明書中確定了的各種

需求,以及軟件配置是否完全、正確。

系統(tǒng)測(cè)試把己經(jīng)經(jīng)過確認(rèn)的軟件納入實(shí)際運(yùn)行環(huán)境中,與其他系統(tǒng)成分組合

在一起進(jìn)行測(cè)試。

驗(yàn)收測(cè)試由用戶參與,對(duì)系統(tǒng)做交付使用前的驗(yàn)收。分為a測(cè)試和B測(cè)試。

a測(cè)試指的是由用戶、測(cè)試人員、開發(fā)人員等共同參與的內(nèi)部測(cè)試,而B測(cè)試指

的是完全交給最終用戶的測(cè)試。

利用等價(jià)類劃分技術(shù)為下面的NextDate問題設(shè)計(jì)測(cè)試用例:

輸入三個(gè)變量(年、月、日),函數(shù)返回輸入日期后面的那個(gè)日期。

1W月份W121〈日期W311812W年W2012

等價(jià)類劃分表

輸入及外有效等價(jià)等價(jià)無效等價(jià)類等價(jià)

部條件類類編號(hào)類編號(hào)

日期的類數(shù)字字符1非數(shù)字字符8

年在18122小于18129

與2012之間大于201210

月在1與123小于111

之間大于1212

非閏年的2日在1與4日小于113

月28之間日大于2814

閏年的2日在1與b日小于11b

月29之間日大于2916

月份為1日在1與6日小于117

月、3月、5月、31之間日大于3118

7月、8月、10

月、12月

月份為4日在1與6日小于119

月、6月、9月、31之間日大于3020

11月

有效等價(jià)類的測(cè)試用例

序號(hào)*俞入數(shù)據(jù)預(yù)期輸,出覆蓋范圍

4(等價(jià)類

編號(hào))

1221,2,3,6

00350036

2221,2,3,5

00480049

3111,2,3,4

999999

4111,2,3,7

97099700

無效等價(jià)類的測(cè)試用例

序號(hào)輸入數(shù)據(jù)頃期輸出覆蓋范圍

4(等價(jià)類

編號(hào))

1x輸入3E效8

y

21輸入無效9

700

32輸入無效10

3001

42輸入無效11

0051

52輸入無效12

00945

61輸入無效13

9891

71輸入無效14

9770

82輸入無效15

0002

92輸入無效16

0084

101輸入無效17

9560

111輸入無效18

9748

122輸入無效19

0073

131輸入無效20

86625

利用基本路徑測(cè)試技術(shù)為以下一段程序設(shè)計(jì)測(cè)試用例:

while(a>0)

aa1;

if(b<0||c>=1)

|

c=c-b;

)

else

c=c+b;

)

a=b+c;

設(shè)計(jì)測(cè)試用例:

輸入數(shù)據(jù)a=0b=3c=3;預(yù)期結(jié)果a=6b=3c=3

輸入數(shù)據(jù)a=lb=3c=3;預(yù)期結(jié)果a=3b=3c=0

輸入數(shù)據(jù)a=lb=3c=0;預(yù)期結(jié)果a=6b=3c=3

舉例說明軟件維護(hù)的副作用。

軟件維護(hù)是存在風(fēng)險(xiǎn)的。對(duì)原有軟件產(chǎn)品的?個(gè)微小的改動(dòng)都有可能引入新

的錯(cuò)誤,產(chǎn)生意想不到的后果。軟件維護(hù)的副作用主要有三類,包括修改代碼的

副作用、修改數(shù)據(jù)的副作用和修改文檔的副作用。

7)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的求和函數(shù),并用VisualStudio2010的UnittestI

具對(duì)該函數(shù)進(jìn)行測(cè)試。

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

namespaceSum

(

classArithmetic

{

publicintsun(inta,intb)

{

returna-b;

)

}

usingSum;

usingMicrosoft.VisualStudio.TestTools.UnitTesting;

namespaceTestProjectl

///<summary>

〃/這是ArithmeticTest的測(cè)試類,旨在

〃/包含所有ArithneticTest單元測(cè)試

〃/〈/summary〉

[TestClass()]

publicclassArithmeticTest

privateTestContexttestContextlnstance;

///<summary>

〃/獲取或設(shè)置測(cè)試上下文,上下文提供

〃/有關(guān)當(dāng)前測(cè)試運(yùn)行及其功能的信息。

///</summary>

publicTestContextTestContext

(

get

(

returntestContextlnstance;

)

set

(

testContextlnstance=value;

Sregion附加測(cè)試屬性

//

〃編寫測(cè)試時(shí),還可使用以下屬性:

//

〃使用Classlnitialize在運(yùn)行類中的第一個(gè)測(cè)試前先運(yùn)行代碼

//[ClassInitializeO]

//publicstaticvoidMyClassInitialize(TestContext

testContext)

//{

//)

//

〃使用ClassCleanup在運(yùn)行完類中的所有測(cè)試后再運(yùn)行代碼

//[ClassCleanup()]

//publicstaticvoidMyClassCleanupO

//{

//}

//

〃使用Testlmtialize在運(yùn)行每個(gè)測(cè)試前先運(yùn)行代碼

//[TestInitializeO]

//publicvoidMyTestlnitializeO

//{

//)

//

〃使用TestCleanup在運(yùn)行完每個(gè)測(cè)試后運(yùn)行代碼

//[TestCleanup()]

//publicvoidMyTestCleanupO

//{

//)

//

ttendregion

///<summary>

IIIsum的測(cè)試

///</summary>

[TestMethod()]

publicvoidsumTest()

(

Arithmetictarget=newArithmetic();//TODO:初始化

為適當(dāng)?shù)闹?/p>

inta=50;//TODO:初始化為適當(dāng)?shù)闹?/p>

intb=98;//TODO:初始化為適當(dāng)?shù)闹?/p>

intexpected=148;//TODO:初始化為適當(dāng)?shù)闹?/p>

intactual;

actual-target,sum(a,b);

Assert.AreEqual(expected,actual);

〃Asscrt.Inconclusive("驗(yàn)證此測(cè)試方法的正確性。〃);

)

///<summary>

///Arithmetic構(gòu)造函數(shù)的測(cè)試

///</summary>

[TestMethod()]

publicvoidArithmeticConstructorTest()

(

Arithmetictarget=newArithmetic();

//Assert.Inconclusive(,ZTODO:實(shí)現(xiàn)用來驗(yàn)證目標(biāo)的代碼

〃);

}

6練習(xí)題

面向?qū)ο蟮乃枷胗心男┗靖拍睿?/p>

面向?qū)ο螅喊慈藗冋J(rèn)識(shí)客觀世界的系統(tǒng)思維方式,采用基于對(duì)象的概念建立

模型,模擬客觀世界分析、設(shè)計(jì)、實(shí)現(xiàn)軟件的辦法。通過面向?qū)ο蟮睦砟?/p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論