軟件工程實(shí)用教程呂云翔-課后答案_第1頁
軟件工程實(shí)用教程呂云翔-課后答案_第2頁
軟件工程實(shí)用教程呂云翔-課后答案_第3頁
軟件工程實(shí)用教程呂云翔-課后答案_第4頁
軟件工程實(shí)用教程呂云翔-課后答案_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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ù)軟件仍是定制的。軟件的開發(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ā)人員對用戶需求的理解存在著差異;相比越來越廉價(jià)的硬件,軟件代價(jià)過高;軟件質(zhì)量難以得到保證,且難以發(fā)揮硬件潛能。開發(fā)團(tuán)隊(duì)缺少完善的軟件質(zhì)量評審體系以及科學(xué)的軟件測試規(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ǎn)品修改維護(hù)困難,集成遺留系統(tǒng)更困難;軟件文檔不完備,并且存在著文檔內(nèi)容與軟件產(chǎn)品不符的情況。軟件文檔是計(jì)算機(jī)軟件的重要組成部分,它為在軟件開發(fā)人員之間以及開發(fā)人員與用戶之間信息的共享提供了重要的平臺(tái)。軟件文檔的不完整和不一致的問題會(huì)給軟件的開發(fā)和維護(hù)等工作帶來很多麻煩。簡述軟件工程的基本原則。用分階段的生存周期計(jì)劃進(jìn)行嚴(yán)格的管理;將軟件的生存周期劃分為多個(gè)階段,對各個(gè)階段實(shí)行嚴(yán)格的項(xiàng)目管理。軟件開發(fā)是一個(gè)漫長的過程,人們可以根據(jù)工作的特點(diǎn)或目標(biāo),把整個(gè)軟件的開發(fā)周期劃分為多個(gè)階段,并為每個(gè)階段制定分階段的計(jì)劃及驗(yàn)收標(biāo)準(zhǔn),這樣有益于對整個(gè)軟件開發(fā)過程進(jìn)行管理。在傳統(tǒng)的軟件工程中,軟件開發(fā)的生存周期可以劃分為可行性研究、需求分析、軟件設(shè)計(jì)、軟件實(shí)現(xiàn)、軟件測試、產(chǎn)品驗(yàn)收和交付等階段。堅(jiān)持進(jìn)行階段評審;嚴(yán)格的貫徹與實(shí)施階段評審制度可以幫助軟件開發(fā)人員及時(shí)地發(fā)現(xiàn)錯(cuò)誤并將其改正。在軟件開發(fā)的過程中,錯(cuò)誤發(fā)現(xiàn)的越晚,修復(fù)錯(cuò)誤所要付出的代價(jià)就會(huì)越大。實(shí)施階段評審,只有在本階段的工作通過評審后,才能進(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):制定了ISO12207軟件生存周期過程標(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);多層次持續(xù)的規(guī)劃與評估;判斷構(gòu)架中關(guān)鍵風(fēng)險(xiǎn)的經(jīng)驗(yàn);高效率的驗(yàn)證和評價(jià)手段;多工種之間的頻繁溝通;多版本工作產(chǎn)品的管理等。7.敏捷方法是一種輕量級(jí)的軟件工程方法,更強(qiáng)調(diào)軟件開發(fā)過程中各種變化的必然性,通過團(tuán)隊(duì)成員之間充分的交流與溝通以及合理的機(jī)制來有效地響應(yīng)變化。敏捷模型避免了傳統(tǒng)的重量級(jí)軟件開發(fā)過程復(fù)雜、文檔繁瑣和對變化的適應(yīng)性低等各種弊端,它強(qiáng)調(diào)軟件開發(fā)過程中團(tuán)隊(duì)成員之間的交流、過程的簡潔性、用戶反饋、對所作決定的信心以及人性化的特征。缺點(diǎn):組織模型和建模方法比較薄弱。常用的軟件工程的輔助工具有哪些?各有什么作用?1.分析設(shè)計(jì)工具(1)MicrosoftVisioMicrosoftVisio通過創(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ù)庫模型圖和軟件圖,這些模板可用于可視化和簡化業(yè)務(wù)流程、跟蹤項(xiàng)目和資源、繪制組織結(jié)構(gòu)圖、映射網(wǎng)絡(luò)、繪制建筑地圖以及優(yōu)化系統(tǒng)。(2)RationalRoseRationalRose是美國的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)的消耗,對需求和系統(tǒng)的體系架構(gòu)進(jìn)行可視化,理解和精練。(3)TogetherTogether是由Borland公司發(fā)布的集成了JavaIDE的產(chǎn)品線,源于JBuilder中的UML建模工具。這條產(chǎn)品線提供了不同應(yīng)用層次的功能,比如TogetherDesigner,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)PowerDesignerPowerDesigner是Sybase公司的CASE工具集,提供了一個(gè)復(fù)雜的交互環(huán)境,支持開發(fā)生存周期的所有階段,從處理流程建模到對象和組件的生成。利用PowerDesigner可以制作數(shù)據(jù)流程圖、概念數(shù)據(jù)模型、物理數(shù)據(jù)模型,可以生成多種客戶端開發(fā)工具的應(yīng)用程序,還可為數(shù)據(jù)倉庫制作結(jié)構(gòu)模型,也能對團(tuán)隊(duì)設(shè)計(jì)模型進(jìn)行控制。PowerDesigner系列產(chǎn)品提供了一個(gè)完整的建模解決方案,業(yè)務(wù)或系統(tǒng)分析人員,設(shè)計(jì)人員,數(shù)據(jù)庫管理員DBA和開發(fā)人員可以對其裁剪以滿足他們的特定的需要;而其模塊化的結(jié)構(gòu)為購買和擴(kuò)展提供了極大的靈活性,從而使開發(fā)單位可以根據(jù)其項(xiàng)目的規(guī)模和范圍來使用他們所需要的工具。(5)CASEStudioCASEstudio是一個(gè)專業(yè)的數(shù)據(jù)庫設(shè)計(jì)工具??梢酝高^ER圖表、資料流向圖來設(shè)計(jì)各式各樣的數(shù)據(jù)庫系統(tǒng)(像是mssql,oracle,sybase等),另外程式提供了各式各樣的管理單元幫助程序員進(jìn)行設(shè)計(jì)。2.程序開發(fā)工具(1)MicrosoftVisualStudioMicrosoftVisualStudio是微軟公司推出的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ì)器、對Web開發(fā)工具的大量改進(jìn),以及能夠加速開發(fā)和處理所有類型數(shù)據(jù)的語言增強(qiáng)功能,為開發(fā)人員提供了所有相關(guān)的工具和框架支持。(2)EclipseEclipse是一個(gè)開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺(tái)。最初是由IBM公司開發(fā)的替代商業(yè)軟件VisualAgeforJava的下一代IDE開發(fā)環(huán)境,2001年11月貢獻(xiàn)給開源社區(qū),現(xiàn)在它由非營利軟件供應(yīng)商聯(lián)盟Eclipse基金會(huì)管理。Eclipse的本身只是一個(gè)框架平臺(tái),但是眾多插件的支持使得Eclipse擁有其他功能相對固定的IDE軟件很難具有的靈活性。許多軟件開發(fā)商以Eclipse為框架開發(fā)自己的IDE。(3)NetBeansNetBeans由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)DelphiDelphi是Borland公司研制的可視化開發(fā)工具,可在Windows3.x、Windows95、WindowsNT、WindowsXP、WindowsVista等環(huán)境下使用。Delphi擁有一個(gè)可視化的集成開發(fā)環(huán)境,采用面向?qū)ο蟮木幊陶Z言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.測試工具(1)LoadRunnerLoadRunner是一種預(yù)測系統(tǒng)行為和性能的工業(yè)標(biāo)準(zhǔn)級(jí)負(fù)載測試工具。通過以模擬上千萬用戶實(shí)施并發(fā)負(fù)載及實(shí)時(shí)性能監(jiān)測的方式來確認(rèn)和查找問題。它能預(yù)測系統(tǒng)行為并優(yōu)化系統(tǒng)性能。LoadRunner的測試對象是整個(gè)企業(yè)的系統(tǒng),它通過模擬實(shí)際用戶的操作行為實(shí)行實(shí)時(shí)性能監(jiān)測。(2)WinRnnnerMercuryInteractive公司的WinRunner是一種企業(yè)級(jí)的功能測試工具,用于檢測應(yīng)用程序是否能夠達(dá)到預(yù)期的功能及正常運(yùn)行。通過自動(dòng)錄制、檢測和回放用戶的應(yīng)用操作,WinRunner能夠有效地幫助測試人員對復(fù)雜的企業(yè)級(jí)應(yīng)用的不同發(fā)布版進(jìn)行測試,提高測試人員的工作效率和質(zhì)量,確??缙脚_(tái)的、復(fù)雜的企業(yè)級(jí)應(yīng)用無故障發(fā)布及長期穩(wěn)定運(yùn)行。(3)SegueSegueSilk產(chǎn)品系列是高度集成的自動(dòng)化黑盒功能、性能測試平臺(tái)。分布式測試環(huán)境,集中控制門戶(瀏覽器方式)能夠控制測試代理,提供自動(dòng)測試流程的流程化定義功能,具備"端到端"的組件測試能力,測試用例的管理、自動(dòng)測試,連同測試腳本的跨平臺(tái)能力,基于AOL7標(biāo)準(zhǔn),全面支持WEB應(yīng)用的測試能力,能夠通過提供大量的數(shù)據(jù),提供工作流類應(yīng)用的模擬運(yùn)行功能,全面支持UNICODE編碼標(biāo)準(zhǔn),支持各種WEB技術(shù)構(gòu)件。4.配置管理工具(1)MicrosoftVisualSourcesafeMicrosoftVisualSourceSafe是微軟公司出品的版本控制系統(tǒng),簡稱VSS。軟件支持Windows系統(tǒng)所支持的所有文件格式,通常與微軟公司的VisualStudio產(chǎn)品同時(shí)發(fā)布,并且高度集成。包括服務(wù)器和通過網(wǎng)絡(luò)可以連接服務(wù)器的客戶端。VSS提供了基本的認(rèn)證安全和版本控制機(jī)制,提供歷史版本對比,適合于個(gè)人程序開發(fā)的版本管理。(2)ClearCaseClearCase是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)MicrosoftProjectMicrosoftProject是專案管理軟件程序,由微軟開發(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)不同類別的用戶。這些不同類的用戶對專案、概觀、和其它資料有不同的訪問級(jí)別。(2)CA-SuperProjectComputerAssociatesInternational公司的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ì)劃審評法(PERT)的概率分析。而且,這一程序包含一個(gè)資源平衡算法,在必要時(shí),可以保證重要工作的優(yōu)先性。(3)TimeLineSymantec公司的TimeLine軟件是有經(jīng)驗(yàn)的項(xiàng)目經(jīng)理的首選。它的報(bào)表功能以及與SQL數(shù)據(jù)庫的連接功能都很突出。日程表、電子郵件的功能,排序和篩選能力以及多項(xiàng)目處理都是精心設(shè)計(jì)的。另外,它還有一個(gè)叫做Co-Pilot的功能,這是一個(gè)很有用的推出式幫助設(shè)施,用戶界面很好,極易操作。許多評論人員認(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)行評估,主要包括:戰(zhàn)略可行性、操作可行性、計(jì)劃可行性、技術(shù)可行性、社會(huì)可行性、市場可行性、經(jīng)濟(jì)可行性和風(fēng)險(xiǎn)可行性等。戰(zhàn)略可行性研究主要從整體的角度考慮項(xiàng)目是否可行,例如提出的系統(tǒng)對組織目標(biāo)具有怎樣的貢獻(xiàn);新系統(tǒng)對目前的部門和組織結(jié)構(gòu)有何影響;系統(tǒng)將以何種方式影響人力水平和現(xiàn)存雇員的技術(shù);它對組織整個(gè)人員開發(fā)策略有何影響等等。操作可行性研究主要考慮系統(tǒng)是否能夠真正解決問題;是否系統(tǒng)一旦安裝后,有足夠的人力資源來運(yùn)行系統(tǒng);用戶對新系統(tǒng)具有抵觸情緒是否可能使操作不可行;人員的可行性等問題。計(jì)劃可行性研究主要估計(jì)項(xiàng)目完成所需的時(shí)間并評估項(xiàng)目的時(shí)間是否足夠。技術(shù)可行性研究主要考慮項(xiàng)目使用技術(shù)的成熟程度;與競爭者的技術(shù)相比,所采用技術(shù)的優(yōu)勢及缺陷;技術(shù)轉(zhuǎn)換成本;技術(shù)發(fā)展趨勢及所采用技術(shù)的發(fā)展前景;技術(shù)選擇的制約條件等。社會(huì)可行性研究主要考慮項(xiàng)目是否滿足所有項(xiàng)目涉及者的利益;是否滿足法律或合同的要求等。市場可行性研究主要包括研究市場發(fā)展歷史與發(fā)展趨勢,說明本產(chǎn)品處于市場的什么發(fā)展階段;本產(chǎn)品和同類產(chǎn)品的價(jià)格分析;統(tǒng)計(jì)當(dāng)前市場的總額、競爭對手所占的份額,分析本產(chǎn)品能占多少份額;產(chǎn)品消費(fèi)群體特征、消費(fèi)方式以及影響市場的因素分析;分析競爭對手的市場狀況;分析競爭對手在研發(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)有什么不同?可行性研究的目的是評估系統(tǒng)是否值得去開發(fā),問題是否能夠解決,而不是對需求進(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)完全對應(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)的“邏輯模型”。為了對目標(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)提出選課申請,系統(tǒng)批準(zhǔn)后給學(xué)生下發(fā)選課申請結(jié)果通知。課程結(jié)束后,系統(tǒng)還可以幫助教師錄入學(xué)生成績,同時(shí)把成績單發(fā)送給學(xué)生。請用Visio畫出該系統(tǒng)頂層的數(shù)據(jù)流圖。3練習(xí)題軟件設(shè)計(jì)的意義和目標(biāo)是什么?軟件設(shè)計(jì)在軟件開發(fā)過程中處于核心地位,它是保證質(zhì)量的關(guān)鍵步驟。設(shè)計(jì)為我們提供了可以用于質(zhì)量評估的軟件表示,設(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ì)是對軟件需求進(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)的元素之間的對應(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ú)立存在,通過對事件的發(fā)布和注冊實(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ù)的中心場所。在倉庫風(fēng)格中存在兩類構(gòu)件,表示當(dāng)前數(shù)據(jù)的狀態(tài)的中心數(shù)據(jù)結(jié)構(gòu)和一組對中心數(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)用模塊之間存在簡單變量這樣的數(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ù)量以及它們在業(yè)務(wù)活動(dòng)中交流的情況,確定用戶對數(shù)據(jù)庫系統(tǒng)的使用要求和各種約束條件等,形成用戶需求規(guī)約。概念設(shè)計(jì);對用戶要求描述的現(xiàn)實(shí)世界(可能是一個(gè)工廠、一個(gè)商場或者一個(gè)學(xué)校等),通過對其中住處的分類、聚集和概括,建立抽象的概念數(shù)據(jù)模型。這個(gè)概念模型應(yīng)反映現(xiàn)實(shí)世界各部門的信息結(jié)構(gòu)、信息流動(dòng)情況、信息間的互相制約關(guān)系以及各部門對信息儲(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)系以及對信息的制約條件等,從而給出各部門內(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ì)措施,對具體的應(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í)體對應(yīng)的關(guān)系中;若實(shí)體間聯(lián)系是1:N:隱含在實(shí)體對應(yīng)的關(guān)系中;若實(shí)體間聯(lián)系是M:N:直接用關(guān)系表示。界面設(shè)計(jì)應(yīng)該遵循什么原則?置用戶于控制之下:以不強(qiáng)迫用戶進(jìn)入不必要的或不希望的動(dòng)作的方式來定義交互模式;提供靈活的交互;允許用戶交互可以被中斷和撤銷;當(dāng)技能級(jí)別增長時(shí)可以使交互流水化并允許定制交互;使用戶隔離內(nèi)部技術(shù)細(xì)節(jié);設(shè)計(jì)應(yīng)允許用戶和出現(xiàn)在屏幕上的對象直接交互。減少用戶的記憶負(fù)擔(dān):減少對短期記憶的要求;建立有意義的缺??;定義直覺性的捷徑;界面的視覺布局應(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.5。4練習(xí)題程序設(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í)行??梢哉f,每種匯編語言都是支持這種語言的計(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í)語言,它是對數(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é)構(gòu)化編程語言,常用于算法和數(shù)據(jù)結(jié)構(gòu)的描述。用Pascal編寫的程序有一種結(jié)構(gòu)化的美感,學(xué)習(xí)Pascal語言有助于培養(yǎng)良好的程序設(shè)計(jì)風(fēng)格和編程習(xí)慣。(3)Basic語言Basic相對于其他編程語言來說簡單易用,并具有“人機(jī)會(huì)話”功能,是一種比較適合于初學(xué)者和愛好編程的非專業(yè)人士的語言。但是其簡單與隨意的特性也容易讓使用者養(yǎng)成不好的編程習(xí)慣。(4)Cobol語言Cobol語言是最接近于自然語言的高級(jí)語言之一,它使用了300多個(gè)英文保留字,語法規(guī)則嚴(yán)格,程序通俗易懂,是一種功能很強(qiá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ū)ο蟮哪芰Γ⒓尤肓丝梢暬拈_發(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)在微軟.NETWindows網(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)域功能。例如,Shell、Perl、JSP等。這種領(lǐng)域?qū)I(yè)語言的應(yīng)用是未來編程的發(fā)展方向之一。要形成良好的編碼風(fēng)格可以從哪些方面做起?版權(quán)和版本聲明程序版式注釋命名規(guī)則數(shù)據(jù)說明代碼構(gòu)造輸入輸出效率使用MicrosoftVisualStudio2010和C#對求兩個(gè)整數(shù)的最大公約數(shù)進(jìn)行編程。usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceGreatestCommonDivisor{classProgram{//輾轉(zhuǎn)相除法publicstaticintcalculate(intx,inty){if(x<y){returncalculate1(y,x);}returncalculate1(x,y);}//xisnolessthanyprivatestaticintcalculate1(intx,inty){if(x%y!=0){returncalculate1(y,x%y);}returny;}}}5練習(xí)題軟件測試的原則有哪些?完全測試是不可能的。測試中有風(fēng)險(xiǎn)存在。軟件測試只能表明缺陷的存在,而不能證明產(chǎn)品已經(jīng)沒有缺陷。軟件產(chǎn)品中所存在的錯(cuò)誤數(shù)與已發(fā)現(xiàn)的錯(cuò)誤數(shù)成正比。要避免軟件測試的殺蟲劑現(xiàn)象。在設(shè)計(jì)測試用例時(shí),應(yīng)包括輸入數(shù)據(jù)和預(yù)期的輸出結(jié)果兩個(gè)部分,并且,輸入數(shù)據(jù)不僅應(yīng)該包括合法的情況,還應(yīng)該包括非法的輸入情況。要集中測試容易出錯(cuò)或錯(cuò)誤較多的模塊。應(yīng)該長期保留所有的測試用例。使開發(fā)人員和測試人員分立,即軟件的開發(fā)工作和測試工作不能由同一部分人來完成。測試工作應(yīng)該盡早開始,并且貫穿于整個(gè)開發(fā)過程中。比較軟件測試的V模型和W模型。V模型中,描述了基本的開發(fā)過程和測試行為。它的價(jià)值在于非常明確地標(biāo)明了測試過程中存在的不同級(jí)別,并且清楚地描述了這些測試階段和開發(fā)過程期間各階段的對應(yīng)關(guān)系。在V模型的基礎(chǔ)上,增加開發(fā)階段的同步測試,就是W模型。在W模型中測試與開發(fā)同步進(jìn)行,這樣有利于盡早地發(fā)現(xiàn)問題。軟件測試的步驟,和每一步驟中需要進(jìn)行的活動(dòng)是什么?測試工作按5個(gè)步驟進(jìn)行,即單元測試、集成測試、確認(rèn)測試、系統(tǒng)測試和驗(yàn)收測試。單元測試又稱模塊測試,是針對軟件設(shè)計(jì)的最小單位進(jìn)行正確性檢驗(yàn)的測試工作。目的是檢查每個(gè)程序單元能夠正確實(shí)現(xiàn)詳細(xì)設(shè)計(jì)說明中的模塊功能、性能、接口和設(shè)計(jì)約束等要求,發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種錯(cuò)誤。單元測試需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測試用例。多個(gè)模塊可以平行的獨(dú)立進(jìn)行單元測試。集成測試也叫組裝測試,通常在單元測試的基礎(chǔ)上,將所有程序模塊進(jìn)行有序的、遞增的測試。目的是檢驗(yàn)程序單元或部件的接口關(guān)系,逐步集成為符合概要設(shè)計(jì)要求的程序部件或整個(gè)系統(tǒng)。集成測試有自頂向下和自底向上兩種方式。確認(rèn)測試是檢查已實(shí)現(xiàn)的軟件是否滿足了需求規(guī)格說明書中確定了的各種需求,以及軟件配置是否完全、正確。系統(tǒng)測試把已經(jīng)經(jīng)過確認(rèn)的軟件納入實(shí)際運(yùn)行環(huán)境中,與其他系統(tǒng)成分組合在一起進(jìn)行測試。驗(yàn)收測試由用戶參與,對系統(tǒng)做交付使用前的驗(yàn)收。分為α測試和β測試。α測試指的是由用戶、測試人員、開發(fā)人員等共同參與的內(nèi)部測試,而β測試指的是完全交給最終用戶的測試。利用等價(jià)類劃分技術(shù)為下面的NextDate問題設(shè)計(jì)測試用例:輸入三個(gè)變量(年、月、日),函數(shù)返回輸入日期后面的那個(gè)日期。1≤月份≤121≤日期≤311812≤年≤2012等價(jià)類劃分表輸入及外部條件有效等價(jià)類等價(jià)類編號(hào)無效等價(jià)類等價(jià)類編號(hào)日期的類型數(shù)字字符1非數(shù)字字符8年在1812與2012之間2小于18129大于201210月在1與12之間3小于111大于1212非閏年的2月日在1與28之間4日小于113日大于2814閏年的2月日在1與29之間5日小于115日大于2916月份為1月、3月、5月、7月、8月、10月、12月日在1與31之間6日小于117日大于3118月份為4月、6月、9月、11月日在1與31之間6日小于119日大于3020有效等價(jià)類的測試用例序號(hào)輸入數(shù)據(jù)預(yù)期輸出覆蓋范圍(等價(jià)類編號(hào))年月日年月日1200331520033161,2,3,62200422820042291,2,3,531999231999241,2,3,44197092919709301,2,3,7無效等價(jià)類的測試用例序號(hào)輸入數(shù)據(jù)預(yù)期輸出覆蓋范圍(等價(jià)類編號(hào))年月日年月日1xy59輸入無效82170048輸入無效932300111輸入無效1042005011輸入無效11520091425輸入無效12619892-1輸入無效1371977230輸入無效14820002-2輸入無效1592008234輸入無效16101956100輸入無入無效181220079-3輸入無效191318661235輸入無效20利用基本路徑測試技術(shù)為以下一段程序設(shè)計(jì)測試用例:while(a>0){ a=a–1; if(b<0||c>=1) { c=c–b;}else c=c+b;}a=b+c;設(shè)計(jì)測試用例:輸入數(shù)據(jù)a=0b=3c=3;預(yù)期結(jié)果a=6b=3c=3輸入數(shù)據(jù)a=1b=3c=3;預(yù)期結(jié)果a=3b=3c=0輸入數(shù)據(jù)a=1b=3c=0;預(yù)期結(jié)果a=6b=3c=3舉例說明軟件維護(hù)的副作用。軟件維護(hù)是存在風(fēng)險(xiǎn)的。對原有軟件產(chǎn)品的一個(gè)微小的改動(dòng)都有可能引入新的錯(cuò)誤,產(chǎn)生意想不到的后果。軟件維護(hù)的副作用主要有三類,包括修改代碼的副作用、修改數(shù)據(jù)的副作用和修改文檔的副作用。7)實(shí)現(xiàn)一個(gè)簡單的求和函數(shù),并用VisualStudio2010的Unittest工具對該函數(shù)進(jìn)行測試。usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceSum{classArithmetic{publicintsum(inta,intb){returna+b;}}}usingSum;usingMicrosoft.VisualStudio.TestTools.UnitTesting;namespaceTestProject1{///<summary>///這是ArithmeticTest的測試類,旨在///包含所有ArithmeticTest單元測試///</summary>[TestClass()]publicclassArithmeticTest{privateTestContexttestContextInstance;///<summary>///獲取或設(shè)置測試上下文,上下文提供///有關(guān)當(dāng)前測試運(yùn)行及其功能的信息。///</summary>publicTestContextTestContext{get{returntestContextInstance;}set{testContextInstance=value;}}#region附加測試屬性////編寫測試時(shí),還可使用以下屬性:////使用ClassInitialize在運(yùn)行類中的第一個(gè)測試前先運(yùn)行代碼//[ClassInitialize()]//publicstaticvoidMyClassInitialize(TestContexttestContext)//{//}////使用ClassCleanup在運(yùn)行完類中的所有測試后再運(yùn)行代碼//[ClassCleanup()]//publicstaticvoidMyClassCleanup()//{//}////使用TestInitialize在運(yùn)行每個(gè)測試前先運(yùn)行代碼//[TestInitialize()]//publicvoidMyTestInitialize()//{//}////使用TestCleanup在運(yùn)行完每個(gè)測試后運(yùn)行代碼//[TestCleanup()]//publicvoidMyTestCleanup()//{//}//#endregion///<summary>///sum的測試///</summary>[TestMethod()]publicvoidsumTest(){Arithmetictarget=newArithmetic();//TODO:初始化為適當(dāng)?shù)闹礽nta=50;//TODO:初始化為適當(dāng)?shù)闹礽ntb=98;//TODO:初始化為適當(dāng)?shù)闹礽ntexpected=148;//TODO:初始化為適當(dāng)?shù)闹礽ntactual;actual=target.sum(a,b);Assert.AreEqual(expected,actual);//Assert.Inconclusive("驗(yàn)證此測試方法的正確性。");}///<summary>///Arithmetic構(gòu)造函數(shù)的測試///</summary>[TestMethod()]publicvoidArithmeticConstructorTest(){Arithmetictarget=newArithmetic();//Assert.Inconclusive("TODO:實(shí)現(xiàn)用來驗(yàn)證目標(biāo)的代碼");}}}6練習(xí)題面向?qū)ο蟮乃枷胗心男┗靖拍睿棵嫦驅(qū)ο螅喊慈藗冋J(rèn)識(shí)客觀世界的系統(tǒng)思維方式,采用基于對象的概念建立模型,模擬客觀世界分析、設(shè)計(jì)、實(shí)現(xiàn)軟件的辦法。通過面向?qū)ο蟮睦砟钍褂?jì)算機(jī)軟件系統(tǒng)能與現(xiàn)實(shí)世界中的系統(tǒng)一一對應(yīng)。對象:即指現(xiàn)實(shí)世界中各種各樣的實(shí)體。它可以指具體的事物也可以指抽象的事物。在面向?qū)ο蟾拍钪形覀儼褜ο蟮膬?nèi)部狀態(tài)稱為屬性,把運(yùn)動(dòng)規(guī)律稱為方法或事件。如某架載客飛機(jī)作為一個(gè)具體事物,是一個(gè)對象。它的屬性包括型號(hào)、運(yùn)營公司、座位數(shù)量、航線、起飛時(shí)間、飛行狀態(tài)等,而它的行為包括整修、滑跑、起飛、飛行、降落等。類:類是具有相似內(nèi)部狀態(tài)和運(yùn)動(dòng)規(guī)律的實(shí)體的集合。類的概念來自于人們認(rèn)識(shí)自然、認(rèn)識(shí)社會(huì)的過程。在這一程中,人們主要使用兩種方法:由特殊到一般的歸納法和由一般到特殊的演繹法。在歸納的過程中,我們從一個(gè)個(gè)具體的事物中把共同的特征抽取出來,形成一個(gè)一般的概念,這就是“歸類”;在演繹的過程中我們又把同類的事物,根據(jù)不同的特征分成不同的小類,這就是“分類”;對于一個(gè)具體的類,它有許多具體的個(gè)體,我們就管這些個(gè)體叫做“對象”。類的內(nèi)部狀態(tài)是指類集合中對象的共同狀態(tài);類的運(yùn)動(dòng)規(guī)律是指類集合中對象的共同運(yùn)動(dòng)規(guī)律。如所有的飛機(jī)可以歸納成一個(gè)類,它們共同的屬性包括型號(hào),飛行狀態(tài)等,它們共同的行為包括起飛、飛行、降落等。消息:消息是指對象間相互聯(lián)系和相互作用的方式。一個(gè)消息主要由5部分組成:發(fā)送消息的對象、接收消息的對象、消息傳遞辦法、消息內(nèi)容、反饋。包:現(xiàn)實(shí)世界中不同對象間的相互聯(lián)系和相互作用構(gòu)成了各種不同的系統(tǒng),不同系統(tǒng)間的相互聯(lián)系和相互作用構(gòu)成了更龐大的系統(tǒng),進(jìn)而構(gòu)成了整個(gè)世界。在面向?qū)ο蟾拍钪邪堰@些系統(tǒng)稱為包。包的接口類:在系統(tǒng)間相互作用時(shí)為了蘊(yùn)藏系統(tǒng)內(nèi)部的具體實(shí)現(xiàn),系統(tǒng)通過設(shè)立接口界面類或?qū)ο髞砼c其他系統(tǒng)進(jìn)行交互;讓其他系統(tǒng)只看到是這個(gè)接口界面類或?qū)ο螅@個(gè)類在面向?qū)ο笾蟹Q為接口類。與傳統(tǒng)的軟件工程方法相比,面向?qū)ο蟮能浖こ谭椒ㄓ心男﹥?yōu)點(diǎn)?符合人類的思維習(xí)慣。面向?qū)ο蟮能浖こ谭椒ㄗ钪匾奶攸c(diǎn)就是把事物的屬性和操作組成一個(gè)整體,以對象為核心,更符合人類的思維習(xí)慣。此外,它更加注重人類在認(rèn)識(shí)客觀世界時(shí)循序漸進(jìn),逐步深化的特點(diǎn)。主張?jiān)谲浖_發(fā)的過程中多次反復(fù)迭代的思想。可復(fù)用性好。由于采用了面向?qū)ο蟮能浖こ谭椒ɑ趯ο蟮母拍?。?dāng)目標(biāo)系統(tǒng)的需求發(fā)生變化時(shí),只要實(shí)體及實(shí)體之間的聯(lián)系不發(fā)生變化,就不會(huì)引起軟件系統(tǒng)結(jié)構(gòu)的變化,而只需要對部分對象進(jìn)行局部修改。可維護(hù)性好。由于利用面向?qū)ο筌浖こ谭椒ㄩ_發(fā)的軟件系統(tǒng)穩(wěn)定性好和可復(fù)用性好,而且采用了封裝和信息隱藏機(jī)制,易于對局部軟件進(jìn)行調(diào)整,所以系統(tǒng)的可維護(hù)性比較好。UML的作用和優(yōu)點(diǎn)是什么?UML(UnifiedModelingLanguage)是一種標(biāo)準(zhǔn)的圖形化建模語言,它是面向?qū)ο蠓治雠c設(shè)計(jì)的一種標(biāo)準(zhǔn)表示。它不是一種可視化的程序設(shè)計(jì)語言,而是一種可視化的建模語言;它不是工具或知識(shí)庫的規(guī)格說明,而是一種建模語言規(guī)格說明,是一種表示的標(biāo)準(zhǔn);它不是過程,也不是方法,但允許任何一種過程和方法使用它。優(yōu)點(diǎn):更好的表現(xiàn)同一事物的不同方面,采用不同的視圖,每個(gè)視圖從一個(gè)角度看待和描述問題。UML有多少類圖,分別有什么作用?在UML中,共定義了13種圖用來對不同的方面進(jìn)行建模和描述,其中包括6種靜態(tài)圖和7種動(dòng)態(tài)圖。靜態(tài)圖用來描述系統(tǒng)結(jié)構(gòu),包括類圖、對象圖、構(gòu)件圖、部署圖、包圖和組合結(jié)構(gòu)圖。類圖描述類、接口、協(xié)作以及之間的關(guān)系;對象圖描述對象以及對象之間的關(guān)系;包圖描述包以及其相互依賴關(guān)系;組合結(jié)構(gòu)圖描述系統(tǒng)某一部分(組合結(jié)構(gòu))的內(nèi)部結(jié)構(gòu);構(gòu)件圖描述構(gòu)件及其相互依賴關(guān)系;部署圖描述構(gòu)件在各節(jié)點(diǎn)上的部署。動(dòng)態(tài)圖用來描述系統(tǒng)行為,包括順序圖、通信圖、計(jì)時(shí)圖、交互縱覽圖、活動(dòng)圖、狀態(tài)機(jī)圖和用例圖。用例圖描述一組用例、執(zhí)行者以及相互關(guān)系;順序圖是強(qiáng)調(diào)消息執(zhí)行順序的交互圖;通信圖是強(qiáng)調(diào)對象協(xié)作的交互圖;計(jì)時(shí)圖是強(qiáng)調(diào)真實(shí)時(shí)間信息的交互圖;交互縱覽圖展示交互圖之間的執(zhí)行順序;活動(dòng)圖描述事物執(zhí)行的控制流或數(shù)據(jù)流;狀態(tài)機(jī)圖描述對象所經(jīng)歷的狀態(tài)轉(zhuǎn)移。用Rose繪制“學(xué)生檔案管理系統(tǒng)”的底層用例圖。用Rose繪制除“登錄系統(tǒng)”用例以外的其他用例的順序圖。打印學(xué)生檔案信息順序圖7) 用Rose繪制除“增加學(xué)生檔案信息”用例以外的其他用例的類圖。略7練習(xí)題軟件項(xiàng)目管理包括哪些內(nèi)容?啟動(dòng)過程——確定一個(gè)項(xiàng)目或某階段可以開始,并要求著手實(shí)行;計(jì)劃過程——進(jìn)行(或改進(jìn))計(jì)劃,并且保持(或選擇)一份有效的]可控的計(jì)劃安排,確保實(shí)現(xiàn)項(xiàng)目的既定目標(biāo);執(zhí)行過程——協(xié)調(diào)人力和其他資源,并執(zhí)行計(jì)劃;控制過程——通過監(jiān)督和檢測過程確保項(xiàng)目目標(biāo)的實(shí)現(xiàn),必要時(shí)采取一些糾正措施;收尾過程——取得項(xiàng)目或階段的正式認(rèn)可,并且有序地結(jié)束該項(xiàng)目或階段。項(xiàng)目計(jì)劃應(yīng)該包括哪些內(nèi)容?確定詳細(xì)的項(xiàng)目實(shí)施范圍;定

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論