軟件工程 課件 1.1 程序及質(zhì)量保證方法_第1頁(yè)
軟件工程 課件 1.1 程序及質(zhì)量保證方法_第2頁(yè)
軟件工程 課件 1.1 程序及質(zhì)量保證方法_第3頁(yè)
軟件工程 課件 1.1 程序及質(zhì)量保證方法_第4頁(yè)
軟件工程 課件 1.1 程序及質(zhì)量保證方法_第5頁(yè)
已閱讀5頁(yè),還剩80頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

程序及其質(zhì)量保證和分析方法軟件工程內(nèi)容程序及質(zhì)量要求程序及其內(nèi)部和外部質(zhì)量程序質(zhì)量保證方法編碼規(guī)范、設(shè)計(jì)方法、代碼重用、結(jié)對(duì)編程程序質(zhì)量的分析方法人工審查、自動(dòng)化分析、代碼測(cè)試編寫(xiě)程序需要解決的問(wèn)題需要工程化的方法支持配套教材毛新軍等,軟件工程:理論與實(shí)踐,高等教育出版社,ISBN:978-7-04-061010-9,2024年1月,教育部101計(jì)劃核心教材毛新軍等,軟件工程實(shí)踐教程-基于開(kāi)源和群智的方法,高等教育出版社,ISBN978-7-04-052423-9,2019年8月1.1何為程序?程序(Program)是由程序設(shè)計(jì)語(yǔ)言所描述的、能為計(jì)算機(jī)所理解和處理的一組語(yǔ)句序列用程序設(shè)計(jì)語(yǔ)言(ProgrammingLanguage)來(lái)描述的如Java、C、C++、Python程序嚴(yán)格遵循程序設(shè)計(jì)語(yǔ)言的各項(xiàng)語(yǔ)法和語(yǔ)義規(guī)定確保程序代碼能為程序設(shè)計(jì)語(yǔ)言的編譯器所理解,進(jìn)而編譯生成相應(yīng)的可運(yùn)行代碼程序代碼可表現(xiàn)為二種形式源代碼(SourceCode):用程序設(shè)計(jì)語(yǔ)言所描述的代碼可執(zhí)行代碼(ExecutableCode):可執(zhí)行的二進(jìn)制或中間碼程序代碼示例用Java語(yǔ)言編寫(xiě)的代碼1.2程序組成-語(yǔ)句程序中的語(yǔ)句聲明、定義、控制、計(jì)算等實(shí)現(xiàn)特定的功能用程序設(shè)計(jì)語(yǔ)言來(lái)描述計(jì)算機(jī)可以理解可編譯成二進(jìn)制代碼代碼在計(jì)算機(jī)上可執(zhí)行程序組成-模塊由諸多相互交互的模塊組成包(Package)類(Class)方法(Method)每個(gè)模塊實(shí)現(xiàn)特定功能示例:小米便簽中的模塊170個(gè)文件、471個(gè)方法程序模塊包示例:小米便簽開(kāi)源軟件模塊結(jié)構(gòu)1.3程序如何編寫(xiě)?編寫(xiě)程序要實(shí)現(xiàn)的功能采用編程語(yǔ)言邏輯思考推理程序設(shè)計(jì)經(jīng)驗(yàn)程序代碼邏輯思考、認(rèn)知和推理的過(guò)程你是如何編寫(xiě)程序的?程序的編碼、編譯、部署和運(yùn)行編碼編譯部署與運(yùn)行源代碼可執(zhí)行代碼編程語(yǔ)言編譯器運(yùn)行平臺(tái)基于用戶需求產(chǎn)生運(yùn)行結(jié)果如何保證質(zhì)量問(wèn)題?!確保程序質(zhì)量是編碼的首要工作!產(chǎn)品的質(zhì)量問(wèn)題外在:用戶直接可以感覺(jué)到的使用用戶:圓滑、手感好、美觀、不死機(jī)、操作便捷內(nèi)在:用戶無(wú)法直接感觸到的維修人員:易于維護(hù)、易于更換內(nèi)在外在1.4程序的利益相關(guān)者及其質(zhì)量要求用戶程序的運(yùn)行展示功能和性能滿足和實(shí)現(xiàn)用戶的需求程序員編寫(xiě)、閱讀和維護(hù)程序發(fā)現(xiàn)和修改程序中的缺陷程序編碼編譯用戶程序員程序使用編寫(xiě)和維護(hù)對(duì)程序的不同質(zhì)量需求正確性高效性可靠性友好性……用戶角度程序員角度可理解易修改可維護(hù)可重用……用戶和程序員會(huì)對(duì)程序質(zhì)量分別提出什么樣的要求?為什么?使用編寫(xiě)和維護(hù)程序質(zhì)量的內(nèi)在和外在體現(xiàn)外在質(zhì)量(ExternalQuality)

–用戶的視角對(duì)外可展示,用戶可直接感觸到、所關(guān)心的使用流暢性、響應(yīng)速度、界面美觀、操作簡(jiǎn)易性、運(yùn)行可靠性等正確性、友好性、可靠性、易用性、高效性等內(nèi)在質(zhì)量(InternalQuality)

–程序員的視角體現(xiàn)在程序的內(nèi)在方面,程序員可以感觸到的、所關(guān)心的易于理解、結(jié)構(gòu)清晰、易于修改、可重用好等可理解性、可維護(hù)性、可擴(kuò)展性、可重用性等你是否對(duì)你或他人編寫(xiě)的程序有質(zhì)量方面的要求和抱怨?示例:從用戶和程序員視角看程序質(zhì)量這段代碼如何?易于理解嗎?易于修改嗎?結(jié)構(gòu)清晰嗎?……運(yùn)行效果如何?可靠嗎?易于操作和使用嗎?……用戶角度程序員角度討論:程序的質(zhì)量這段程序?qū)懙娜绾??正確嗎?易于理解嗎?結(jié)構(gòu)清晰嗎?易于修改嗎?……思考和討論你覺(jué)得什么樣的程序是高質(zhì)量?你編寫(xiě)程序時(shí)是否考慮了質(zhì)量問(wèn)題?你所寫(xiě)的程序質(zhì)量如何?如何才能編寫(xiě)出高質(zhì)量的程序??jī)?nèi)容程序及質(zhì)量要求程序及其內(nèi)部和外部質(zhì)量程序質(zhì)量保證方法編碼規(guī)范、設(shè)計(jì)方法、代碼重用、結(jié)對(duì)編程程序質(zhì)量的分析方法人工審查、自動(dòng)化分析、代碼測(cè)試編寫(xiě)程序需要解決的問(wèn)題需要工程化的方法支持2.1程序質(zhì)量的語(yǔ)法和語(yǔ)義體現(xiàn)代碼風(fēng)格規(guī)范-語(yǔ)法語(yǔ)法和結(jié)構(gòu)層次明確如何來(lái)規(guī)范程序的書(shū)寫(xiě)表現(xiàn)為是否易于閱讀和理解代碼設(shè)計(jì)規(guī)范-語(yǔ)義語(yǔ)義和內(nèi)涵層次明確如何來(lái)組織和封裝程序語(yǔ)句表現(xiàn)為良好的結(jié)構(gòu)和易于重用程序質(zhì)量保證方法遵循編碼風(fēng)格采用程序設(shè)計(jì)方法開(kāi)展代碼重用進(jìn)行結(jié)對(duì)編程2.2遵循編碼風(fēng)格良好的編程行為在編碼過(guò)程中,程序員對(duì)代碼符號(hào)進(jìn)行良好的組織、合理的命名、提供必要的注釋,那么將可增強(qiáng)代碼的可讀性和可理解性,進(jìn)而提高代碼的可維護(hù)性和可重用性,提升代碼的內(nèi)部質(zhì)量何為編碼風(fēng)格程序員在編碼時(shí)要遵循特定的樣式及要求,以規(guī)范程序員的編程行為以及所產(chǎn)生程序代碼的樣式示例:遵循編碼風(fēng)格沒(méi)有遵循編碼風(fēng)格遵循編碼風(fēng)格編寫(xiě)代碼的基本原則易讀,一看就懂理解代碼的內(nèi)涵和意圖望文生義的符號(hào)、縮進(jìn)和括號(hào)、代碼注釋,遵循編碼風(fēng)格簡(jiǎn)明,減低復(fù)雜度避繁就簡(jiǎn)、不用goto語(yǔ)句、減少嵌套層數(shù)、簡(jiǎn)單算法易改,便于維護(hù)便于修改程序代碼、增加新的代碼封裝、參數(shù)化、模塊化、隱藏、常元無(wú)二義,不產(chǎn)生歧義不要讓人產(chǎn)生誤解編碼風(fēng)格-代碼布局縮進(jìn),用好Tab鍵用括號(hào)來(lái)表示優(yōu)先級(jí)斷行處的{}if(condition){ DoSomething();}else{ DoSomething();}一行至多只一條語(yǔ)句不要在一行定義多個(gè)變量編碼風(fēng)格-代碼組織按一定次序來(lái)說(shuō)明數(shù)據(jù)按字母順序說(shuō)明對(duì)象盡可能避免使用嵌套結(jié)構(gòu)采用統(tǒng)一的縮進(jìn)規(guī)則單入口單出口編碼風(fēng)格-命名規(guī)范采用有意義、一目了然的命名方式變/常/函數(shù)/方法/類/包一看就懂,望文生義無(wú)意義的命名i,j,x,y有意義的命名szPathvPrintName()bReturn編碼風(fēng)格-命名命名通則使用英文單詞或縮寫(xiě),不要使用拼音望文知義原則,含義清晰、明確命名不要過(guò)長(zhǎng)盡量使用全稱,少用縮寫(xiě)不規(guī)范的命名DaYinWenJian與PrintFile編碼風(fēng)格-命名命名和大小寫(xiě)類/類型/變量:用名詞和名詞短語(yǔ),所有單詞第一個(gè)字母大寫(xiě)函數(shù)/方法:動(dòng)詞或者動(dòng)詞短語(yǔ),第一個(gè)單詞小寫(xiě),隨后單詞第一個(gè)字母大寫(xiě)示例:Member,ProductInfo,getName(),setName(),renderPage()不規(guī)范的命名變量:print;方法:Print()編碼風(fēng)格-代碼注釋幫助理解程序注釋要說(shuō)明程序:(1)做什么;(2)為什么這么做;(3)注意事項(xiàng)無(wú)需解釋程序如何做注解位置類頭、函數(shù)/函數(shù)頭、關(guān)鍵語(yǔ)句塊頭、關(guān)鍵語(yǔ)句尾有效、必要、簡(jiǎn)潔的注釋太少和過(guò)多均不可取注釋要可理解、準(zhǔn)確、無(wú)二義隨代碼的修改而修改編碼風(fēng)格示例注釋命名布局結(jié)構(gòu)編碼風(fēng)格的相關(guān)書(shū)籍C++編程風(fēng)格Java編程風(fēng)格代碼整潔之道推崇CleanCode不同程序設(shè)計(jì)語(yǔ)言有不同的編碼風(fēng)格要求討論:編碼風(fēng)格這二段代碼風(fēng)格如何?哪些做的好,還存在哪些問(wèn)題?你編寫(xiě)代碼時(shí)注意風(fēng)格了嗎?2.3采用程序設(shè)計(jì)方法語(yǔ)句設(shè)計(jì)模塊化設(shè)計(jì)高內(nèi)聚度、低耦合度原則代碼設(shè)計(jì)規(guī)范-語(yǔ)句設(shè)計(jì)單入口單出口少用goto語(yǔ)句加強(qiáng)對(duì)異常處理分析和驗(yàn)證輸入?yún)?shù)正確性,如名字不為空,年齡大于0少于150執(zhí)行結(jié)果處理,設(shè)置必要斷言來(lái)分析

如p=AllocateNewSpace(); Assert(p!=NULL); if(p!=NULL){ …… }處理異常語(yǔ)句Try{…}catch(Exceptione){…}將更多的時(shí)間、精力和代碼放在處理異常上代碼設(shè)計(jì)規(guī)范-模塊化設(shè)計(jì)模塊是邏輯上相對(duì)獨(dú)立、具有良定義接口的編程單位模塊可表現(xiàn)為函數(shù)、過(guò)程、方法、類、程序包等將程序代碼封裝為一個(gè)個(gè)獨(dú)立的模塊代碼設(shè)計(jì)規(guī)范-高內(nèi)聚度模塊內(nèi)各要素緊密相關(guān),僅實(shí)現(xiàn)單一功能如果模塊內(nèi)多個(gè)要素關(guān)系不密切,需分解產(chǎn)生多個(gè)模塊ABCABCD分解模塊D內(nèi)部包含若干關(guān)系松散的要素經(jīng)過(guò)分解得到若干松耦合的模塊代碼設(shè)計(jì)規(guī)范-低耦合度模塊間的關(guān)系應(yīng)設(shè)計(jì)的非常松散如果多個(gè)模塊間的關(guān)系非常密切,可將這些模塊合并為一個(gè)模塊BACABC經(jīng)過(guò)合并得到內(nèi)聚度高的模塊D若干關(guān)系緊密的模塊示例:采用程序設(shè)計(jì)方法語(yǔ)句設(shè)計(jì)模塊化高內(nèi)聚度低耦合度2.4代碼重用何為代碼重用在編寫(xiě)代碼過(guò)程中,充分利用已有和現(xiàn)成的代碼,并將其集成到程序之中,從而來(lái)實(shí)現(xiàn)程序功能代碼重用有何好處由于被重用的代碼經(jīng)過(guò)多次反復(fù)的使用,代碼質(zhì)量得到充分檢驗(yàn),因而代碼重用不僅可提高編程效率,而且還可有效提升程序質(zhì)量為什么代碼重用可以提高代碼的質(zhì)量?示例:函數(shù)、類和軟構(gòu)件重用C函數(shù)庫(kù)MFC類庫(kù)(MicrosoftFoundationClasses)Java軟件開(kāi)發(fā)包機(jī)器人操作系統(tǒng)(ROS)的節(jié)點(diǎn)軟構(gòu)件MFC類庫(kù)示例:代碼片段重用尋找他人實(shí)現(xiàn)某些子功能的代碼片段可在StackOverflow上尋找到有價(jià)值的代碼片段,并加以重用開(kāi)源代碼重用到Github中找到粗粒度的代碼開(kāi)源幾萬(wàn)、甚至幾十萬(wàn)的程序代碼重用開(kāi)源代碼來(lái)實(shí)現(xiàn)粗粒度的功能完成諸如數(shù)據(jù)庫(kù)管理、圖像識(shí)別、語(yǔ)音分析等功能思考和討論你在編程時(shí)是否有軟件重用?你開(kāi)展了那些方面和粒度的軟件重用?2.5結(jié)對(duì)編程(Pair-Programming)兩位程序員(或智能體)坐在同一工作臺(tái)前一起開(kāi)發(fā)軟件一人扮演“領(lǐng)航員”角色,負(fù)責(zé)具體編寫(xiě)工作,如寫(xiě)程序一人扮演“觀察者”角色,負(fù)責(zé)觀察行為及結(jié)果,如看程序,發(fā)現(xiàn)問(wèn)題二者相互討論,共同完成編程任務(wù)大模型時(shí)代基于智能體的結(jié)對(duì)編程軟件開(kāi)發(fā)智能體軟件工程師人機(jī)協(xié)同開(kāi)發(fā)Copilot等基于智能化的編程助手(如CopilotX),人機(jī)協(xié)同編程會(huì)成為趨勢(shì)越來(lái)越多程序員使用CopilotX等智能化工具進(jìn)行軟件開(kāi)發(fā),AIPair編程正在成為新的編程范式,幫助程序員編代碼、單元測(cè)試、調(diào)試、寫(xiě)文檔等個(gè)體開(kāi)發(fā)的局限性個(gè)體知識(shí)和技能的局限性沒(méi)有人無(wú)所不能有專長(zhǎng),但很難做到面面俱到總會(huì)有不懂、不會(huì)的個(gè)體開(kāi)發(fā)行為的局限性人總是會(huì)犯錯(cuò)誤的,錯(cuò)誤很難避免老虎也有打旽的時(shí)候,注意力不集中就會(huì)犯錯(cuò)誤很難看到或者看清自身的錯(cuò)誤軟件開(kāi)發(fā)是集體性/群體性行為團(tuán)隊(duì)開(kāi)發(fā)多人參與、具有共同目的、明確任務(wù)分工合作開(kāi)發(fā)相互支持、互相配合、共同解決問(wèn)題群體開(kāi)發(fā)利用大眾的力量、借助大眾的智慧和成果拋棄個(gè)人主義/英雄主義單槍匹馬難成大事、單干/蠻干容易出事現(xiàn)實(shí)世界的結(jié)對(duì)示例駕駛員作戰(zhàn)員駕駛員領(lǐng)航員如何實(shí)現(xiàn)結(jié)對(duì)編程職責(zé)明確一人寫(xiě)設(shè)計(jì)文檔、編寫(xiě)程序和單元測(cè)試等等一人審閱文檔、復(fù)審程序代碼、考慮單元測(cè)試的覆蓋率、是否需要重構(gòu)、解決具體的技術(shù)問(wèn)題等等互換角色不要連續(xù)超過(guò)工作1小時(shí),提高效率主動(dòng)參與開(kāi)展討論、解決問(wèn)題、做出貢獻(xiàn)編程行為及其特點(diǎn)快速完成盡快得到可運(yùn)行軟件系統(tǒng)、盡早交付給用戶、快速應(yīng)對(duì)需求變化多種技能工具和環(huán)境程序設(shè)計(jì)語(yǔ)言業(yè)務(wù)領(lǐng)域知識(shí)編碼規(guī)范和設(shè)計(jì)規(guī)范質(zhì)量要求正確性、可讀性、可維護(hù)性等編程包袱:效率和質(zhì)量問(wèn)題結(jié)對(duì)寫(xiě)程序任務(wù)編寫(xiě)程序代碼方式一人寫(xiě)一人復(fù)審規(guī)范性、正確性、可讀性等討論改進(jìn)與提高如增加注釋、更改名稱等結(jié)對(duì)編程中的代碼復(fù)審結(jié)對(duì)編程是一個(gè)不斷“復(fù)審”代碼的過(guò)程每一行代碼都被二雙眼睛看過(guò),被二個(gè)腦子思考過(guò)代碼隨著改動(dòng)不斷地被復(fù)審每個(gè)人的一舉一動(dòng)(編碼行為)不斷地被另一個(gè)人審查,確保過(guò)程和活動(dòng)置于監(jiān)督之下,迫使認(rèn)真工作,防止隨意行為促進(jìn)“頻繁”交流,提高個(gè)人能力和素養(yǎng)結(jié)對(duì)寫(xiě)文檔任務(wù)撰寫(xiě)計(jì)文檔方式一人寫(xiě)一人復(fù)審規(guī)范、正確、合理性等討論改進(jìn)和完善如文檔格式、語(yǔ)言表達(dá)、圖表、錯(cuò)別字結(jié)對(duì)做測(cè)試任務(wù)軟件測(cè)試方式運(yùn)行測(cè)試用例,收集測(cè)試結(jié)果一人寫(xiě)一人復(fù)審和幫助完整性、代表性、適當(dāng)性等討論完善和提升結(jié)對(duì)編程帶來(lái)的好處提高程序質(zhì)量提供更好的設(shè)計(jì)質(zhì)量和代碼質(zhì)量合作解決問(wèn)題能力強(qiáng),1+1>2提升開(kāi)發(fā)效率開(kāi)發(fā)人員更加信心有效地避免了閉門(mén)造車更易于發(fā)現(xiàn)問(wèn)題和糾正問(wèn)題促進(jìn)學(xué)習(xí)交流有效的學(xué)習(xí),做中學(xué)效果更好相互學(xué)習(xí)和分享經(jīng)驗(yàn)更好應(yīng)對(duì)人員流動(dòng),一個(gè)走了另一個(gè)人可以替換上結(jié)對(duì)編程可以獲得更高的投入/產(chǎn)出比思考和討論如何在閱讀、分析和維護(hù)開(kāi)源軟件實(shí)踐中應(yīng)用結(jié)對(duì)編程的方法?有何實(shí)踐經(jīng)驗(yàn)可供分享??jī)?nèi)容程序及質(zhì)量要求程序及其內(nèi)部和外部質(zhì)量程序質(zhì)量保證方法編碼規(guī)范、設(shè)計(jì)方法、代碼重用、結(jié)對(duì)編程程序質(zhì)量的分析方法人工審查、自動(dòng)化分析、代碼測(cè)試編寫(xiě)程序需要解決的問(wèn)題需要工程化的方法支持3.1程序代碼中潛在的質(zhì)量問(wèn)題質(zhì)量問(wèn)題編寫(xiě)不合理

–沒(méi)有遵循編碼規(guī)范設(shè)計(jì)不合理

–沒(méi)有遵循設(shè)計(jì)規(guī)范代碼有錯(cuò)誤–代碼編寫(xiě)的不正確

原因受軟件開(kāi)發(fā)人員經(jīng)驗(yàn)和水平的限制人可能會(huì)犯錯(cuò)誤,人為引入錯(cuò)誤

你編寫(xiě)的代碼是否存在問(wèn)題?存在哪些方面的問(wèn)題?代碼質(zhì)量分析的常用方法人工審查(CodeReview)方法自動(dòng)化分析方法(AutomatedAnalysis)程序測(cè)試(Test)方法3.2人工審查代碼方法描述閱讀和理解代碼發(fā)現(xiàn)缺陷和問(wèn)題提出改進(jìn)的建議方法特點(diǎn)人工審查效率低難以發(fā)現(xiàn)一些深層次問(wèn)題難以全面地進(jìn)行系統(tǒng)分析人工審查些什么?代碼是否符合編程規(guī)范代碼中是否存在缺陷邏輯錯(cuò)誤,“+”寫(xiě)成“-”算法錯(cuò)誤,不夠優(yōu)化、邊界條件沒(méi)有處理好潛在錯(cuò)誤,當(dāng)前修改導(dǎo)致以前修復(fù)的錯(cuò)誤重現(xiàn)從質(zhì)量的角度哪些代碼需要改進(jìn)包括內(nèi)部質(zhì)量和外部質(zhì)量讀別人編寫(xiě)的高質(zhì)量代碼能讓你受益匪淺讀低質(zhì)量的代碼能讓你非常痛苦人工審查-誰(shuí)負(fù)責(zé)審查自我復(fù)審,效果不一定好同伴復(fù)審,常用方法

結(jié)對(duì)編程團(tuán)隊(duì)復(fù)審,團(tuán)隊(duì)成員參加3.3自動(dòng)化工具審查-代碼靜態(tài)分析由計(jì)算機(jī)軟件來(lái)自動(dòng)完成代碼審查無(wú)需運(yùn)行被測(cè)代碼,僅通過(guò)分析或檢查程序的語(yǔ)法、結(jié)構(gòu)、過(guò)程、接口等來(lái)檢查程序30%-

70%的代碼缺陷可通過(guò)靜態(tài)分析發(fā)現(xiàn)分析什么找出代碼隱藏的錯(cuò)誤和缺陷,如參數(shù)不匹配,有歧義的嵌套語(yǔ)句,錯(cuò)誤的遞歸,非法計(jì)算,可能出現(xiàn)的空指針引用等等程序遵循編碼規(guī)范的程度特點(diǎn)快速定位、有效發(fā)現(xiàn)隱藏的錯(cuò)誤和缺陷自動(dòng)化代碼分析工具SonarQubeCheckStyleFindBugsPMDJtestCodeArtsCheck(華為)SonarQube概述基于Web、用于管理程序代碼質(zhì)量的代碼靜態(tài)分析工具可以插件的形式集成到眾多的軟件開(kāi)發(fā)環(huán)境(如Eclipse)支持二十多種程序設(shè)計(jì)語(yǔ)言代碼的質(zhì)量分析SonarQube可分析的質(zhì)量問(wèn)題是否違反編碼規(guī)則是否存在靜態(tài)常規(guī)缺陷模塊、方法、類的復(fù)雜度是否過(guò)高是否存在重復(fù)的代碼代碼的注釋是否恰當(dāng)和充分統(tǒng)計(jì)和分析代碼的單元測(cè)試覆蓋率判斷軟件體系結(jié)構(gòu)設(shè)計(jì)是否合理SonarQube分析發(fā)現(xiàn)的問(wèn)題類別Bug(錯(cuò)誤)中等影響如參數(shù)不夠Vulnerability(脆弱點(diǎn))影響大如漏洞CodeSmell(代碼異味)影響小如風(fēng)格SonarQube分析報(bào)告代碼審查后要做的工作理解發(fā)現(xiàn)和指出的問(wèn)題修改和更正有問(wèn)題代碼對(duì)于無(wú)法很快更正的錯(cuò)誤,要把錯(cuò)誤的信息記錄下來(lái),以便適當(dāng)?shù)臅r(shí)候能夠更正3.4軟件測(cè)試技術(shù)程序本質(zhì)上是對(duì)數(shù)據(jù)的處理設(shè)計(jì)數(shù)據(jù)(測(cè)試用例)

運(yùn)行測(cè)試用例(程序來(lái)處理數(shù)據(jù))

判斷運(yùn)行結(jié)果(是否符合預(yù)期結(jié)果)運(yùn)行代碼程序代碼等設(shè)計(jì)測(cè)試數(shù)據(jù)結(jié)果評(píng)價(jià)預(yù)期結(jié)果軟件缺陷為軟件測(cè)試而設(shè)計(jì)的數(shù)據(jù)稱為測(cè)試用例(TestCase)測(cè)試用例實(shí)際結(jié)果軟件測(cè)試的目的和任務(wù)2356417缺陷盡可能多找出軟件中缺陷軟件系統(tǒng)軟件缺陷可能隱藏的比較深,難以發(fā)現(xiàn)軟件測(cè)試示例一個(gè)加法器程序功能:給定二個(gè)數(shù)字,將其相加,然后輸出設(shè)計(jì)測(cè)試數(shù)據(jù)<1,2,3><-1,1,0><0,0,0>運(yùn)行測(cè)試程序輸入數(shù)據(jù),查看運(yùn)行結(jié)果,判斷是否與預(yù)期結(jié)果一致如果不一致就意味著有錯(cuò)誤思考和討論在你的編程實(shí)踐中,你是采用何種方式來(lái)檢查代碼質(zhì)量、發(fā)現(xiàn)代碼問(wèn)題的??jī)?nèi)容程序及質(zhì)量要求程序及其內(nèi)部和外部質(zhì)量程序質(zhì)量保證方法編碼規(guī)范、設(shè)計(jì)方法、代碼重用、結(jié)對(duì)編程程序質(zhì)量的分析方法人工審查、自動(dòng)化分析、代碼測(cè)試編寫(xiě)程序需要解決的問(wèn)題需要工程化的方法支持程序編寫(xiě)面臨的挑戰(zhàn)!程序功能從何而來(lái)?誰(shuí)以及如何來(lái)確定軟件功能?軟件規(guī)模很大怎么辦?500LOCvs1MLOC軟件功能變化如何改寫(xiě)代碼?在哪里改、如何改?如何保證程序質(zhì)量?能否想到代碼的質(zhì)量問(wèn)題,如何保證光靠腦子思考能解決程序編寫(xiě)的問(wèn)題嗎?思考和討論如何明確功能、劃分模塊?如何編寫(xiě)代碼、確保質(zhì)量?對(duì)于規(guī)模較大應(yīng)用能行嗎?面臨什么樣的困難和問(wèn)題?需要尋找系統(tǒng)化、工程化的方法指導(dǎo)!

軟件工程拓展閱讀軟件科學(xué)與工程-學(xué)科發(fā)展戰(zhàn)略,梅宏等著,高等教育出版社,2021.人月神話(40周年中文紀(jì)念版,F(xiàn)rederick,P.Brooks[美],清華大學(xué)出版社,2015.課后作業(yè)和課程實(shí)訓(xùn)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論