版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章軟件開發(fā)方法(二)軟件工程計(jì)算機(jī)教學(xué)實(shí)驗(yàn)中心
1問題的提出什么是軟件工程?為什么提出軟件工程?主要研究哪些問題?軟件工程的目標(biāo)、原理軟件開發(fā)活動(dòng)……21.了解軟件工程的基本概念、基本原則2.理解軟件工程的主要定義3.理解軟件過(guò)程及模型4.了解軟件工程方法學(xué)31.2.1
軟件工程概述什么是軟件工程?為什么要學(xué)習(xí)軟件工程?軟件工程包括哪些內(nèi)容?……4“軟件工程是一種描述規(guī)范?!? MichaelJackson軟件工程?軟件工程專家Boehm定義著名軟件工程專家B.W.Boehm為軟件工程的定義是:運(yùn)用現(xiàn)代科學(xué)技術(shù)知識(shí)來(lái)設(shè)計(jì)并構(gòu)造計(jì)算機(jī)程序及為開發(fā)、運(yùn)行和維護(hù)這些程序所必需的相關(guān)文件資料。6IEEE給出的定義1983年IEEE給出的定義為:以優(yōu)質(zhì)、高效、低成本為目標(biāo),研究開發(fā)、運(yùn)行和維護(hù)軟件以及使之退役的系統(tǒng)方法。其中,“軟件”的定義為:計(jì)算機(jī)程序、方法、規(guī)則、相關(guān)的文檔資料以及在計(jì)算機(jī)上運(yùn)行時(shí)所必需的數(shù)據(jù)。7關(guān)于軟件工程學(xué)軟件工程是一門交叉學(xué)科,涉及到計(jì)算機(jī)科學(xué)、管理科學(xué)、工程學(xué)和數(shù)學(xué)。軟件工程的理論、方法、技術(shù)都是建立在計(jì)算機(jī)科學(xué)的基礎(chǔ)上;它是用管理學(xué)的原理、方法進(jìn)行軟件生產(chǎn)管理;用工程學(xué)的觀點(diǎn)進(jìn)行費(fèi)用估算、制定進(jìn)度和實(shí)施方案;用數(shù)學(xué)方法建立軟件可靠性模型以及分析各種算法。81.2.2
軟件工程的目標(biāo)1、開發(fā)生產(chǎn)盡可能多的軟件產(chǎn)品;2、提高軟件的生產(chǎn)效率;3、滿足應(yīng)用的功能需要;4、降低軟件開發(fā)成本。但是,目標(biāo)與實(shí)現(xiàn)過(guò)程是矛盾的:功能強(qiáng)、系統(tǒng)則復(fù)雜,難于開發(fā)和維護(hù);注重發(fā)揮硬件功能,則可移植性差;快速開發(fā),則可能影響質(zhì)量;……9軟件工程的本質(zhì)特征軟件工程關(guān)注于大型程序的構(gòu)造軟件工程的中心課題是控制復(fù)雜度軟件經(jīng)常變化開發(fā)軟件的效率非常重要和諧地合作是開發(fā)軟件的關(guān)鍵軟件必須有效地支持它的用戶在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品101.2.3
軟件工程原理自1968年提出“軟件工程”的概念以來(lái),專家學(xué)者又陸續(xù)提出了100多條關(guān)于軟件工程的準(zhǔn)則。著名軟件工程專家B.W.Boehm于1983年發(fā)表的一篇論文中提出了軟件工程的七條基本原理。他認(rèn)為這七條原理是確保軟件產(chǎn)品質(zhì)量和開發(fā)效率的最小準(zhǔn)則集合。11軟件工程七條基本原理用分階段的生命周期計(jì)劃嚴(yán)格管理堅(jiān)持進(jìn)行階段評(píng)審實(shí)行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計(jì)技術(shù)結(jié)果應(yīng)能清楚地審查開發(fā)小組人員少而精承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性12①用分階段生命周期計(jì)劃嚴(yán)格管理?yè)?jù)統(tǒng)計(jì)發(fā)現(xiàn):不成功軟件項(xiàng)目中半數(shù)是因計(jì)劃不周造成的。在軟件的整個(gè)生命周期中應(yīng)該制定并嚴(yán)格執(zhí)行六類計(jì)劃:項(xiàng)目概要、項(xiàng)目進(jìn)度表、項(xiàng)目控制、產(chǎn)品控制、驗(yàn)證及運(yùn)行維護(hù)計(jì)劃。不同層次的管理人員必須嚴(yán)格按照計(jì)劃各盡其職地去管理軟件開發(fā)與維護(hù)工作,絕不能受客戶或上級(jí)的影響而擅自背離預(yù)定計(jì)劃。13②堅(jiān)持進(jìn)行階段評(píng)審軟件的質(zhì)量保證工作不能等到編碼階段結(jié)束之后再進(jìn)行。這是因?yàn)椋捍蟛糠皱e(cuò)誤是在編碼之前造成的(根據(jù)Boehm統(tǒng)計(jì),設(shè)計(jì)錯(cuò)誤占軟件錯(cuò)誤的63%,編碼錯(cuò)誤占37%)。錯(cuò)誤發(fā)現(xiàn)與改正得越晚,所付出的代價(jià)也越高。因此,在每個(gè)階段進(jìn)行嚴(yán)格的評(píng)審,盡早發(fā)現(xiàn)并修正各個(gè)階段中所犯的錯(cuò)誤是一條必須遵循的重要原則。14示意圖關(guān)于階段評(píng)審作用
15③實(shí)行嚴(yán)格的產(chǎn)品控制在軟件開發(fā)過(guò)程中不應(yīng)隨意改變需求,但不能禁止更改需求。當(dāng)必須修改時(shí),為了保持軟件各配置成分的一致性,必須實(shí)行嚴(yán)格的產(chǎn)品控制。一切有關(guān)修改軟件的建議都必須按照嚴(yán)格的規(guī)程進(jìn)行評(píng)審,獲準(zhǔn)后才能實(shí)施修改。絕對(duì)不能誰(shuí)想修改就隨意進(jìn)行修改的行為。16④采用現(xiàn)代程序設(shè)計(jì)技術(shù)以前的結(jié)構(gòu)化程序設(shè)計(jì)技術(shù),如今的面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)都被實(shí)踐證明是各個(gè)不同歷史階段的優(yōu)秀程序設(shè)計(jì)技術(shù)和方法。采用先進(jìn)的技術(shù)既可以提高軟件開發(fā)的效率,又可以提高軟件維護(hù)的效率。17⑤結(jié)果應(yīng)能清楚地審查軟件產(chǎn)品是看不見、摸不著的邏輯產(chǎn)品,軟件開發(fā)人員的工作進(jìn)展情況可見性差。為了提高開發(fā)過(guò)程的可見性,應(yīng)根據(jù)軟件開發(fā)項(xiàng)目中的目標(biāo)完成期限,規(guī)定開發(fā)組織的責(zé)任和產(chǎn)品標(biāo)準(zhǔn),使得到的結(jié)果能夠清楚的審查。18⑥開發(fā)小組人員少而精開發(fā)小組成員的素質(zhì)應(yīng)該高,人員不宜過(guò)多。人員素質(zhì)和數(shù)量是影響產(chǎn)品質(zhì)量和開發(fā)效率的重要因素。素質(zhì)高的人開發(fā)效率比低的人高幾倍甚至幾十倍,而錯(cuò)誤則明顯得少;人數(shù)增加,管理難度也增加。19⑦承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性要積極主動(dòng)地采納新的軟件技術(shù),要不斷總結(jié)經(jīng)驗(yàn);不能自以為是,固步自封,唯我獨(dú)好。大千世界,錯(cuò)綜復(fù)雜,只有不斷學(xué)習(xí),才能不斷進(jìn)取,不斷進(jìn)步。201.2.4
軟件開發(fā)活動(dòng)軟件工程過(guò)程是由一系列軟件工程的階段任務(wù)和活動(dòng)組成。1995年ISO將軟件生存周期的活動(dòng)和任務(wù)劃分為3個(gè)過(guò)程:主要過(guò)程(需求、設(shè)計(jì)、構(gòu)造、測(cè)試和維護(hù))支持過(guò)程(軟件配置、軟件工程管理、軟件過(guò)程和軟件質(zhì)量)組織過(guò)程(基礎(chǔ)設(shè)施建設(shè)、工具和方法、改進(jìn)、培訓(xùn))21(一)主要過(guò)程主要過(guò)程包括的軟件開發(fā)活動(dòng)和任務(wù)是:軟件需求軟件設(shè)計(jì)軟件構(gòu)造軟件測(cè)試軟件維護(hù)221、軟件需求任務(wù):收集、分析、理解、確定用戶的要求;然后把用戶的要求精確、完整地描述表達(dá)出來(lái)。目的:要回答“要解決什么問題?”,既系統(tǒng)“做什么?”。分兩步驟:可行性研究、制定軟件開發(fā)計(jì)劃結(jié)果:可行性報(bào)告、軟件計(jì)劃、需求說(shuō)明書需求說(shuō)明書是讓用戶理解:“什么是他們真正需要的”。23了解用戶需求有關(guān)的問題什么是需求?希望,功能,限制,必需品,任何必要的東西;什么時(shí)候?
從確定方案開始;為什么?
用戶的需求是開發(fā)需要的依據(jù);來(lái)自哪里?
來(lái)自用戶,工業(yè)標(biāo)準(zhǔn),和實(shí)踐經(jīng)驗(yàn);如何實(shí)現(xiàn)?使所有相關(guān)的人參與需求分析活動(dòng),通過(guò)有效的交流實(shí)現(xiàn);誰(shuí)來(lái)做?
用戶,工程管理人員,開發(fā)人員,維護(hù)人員。24用戶參與需求分析的重要性根據(jù)StandishGroup1994年發(fā)表的一份研究報(bào)告統(tǒng)計(jì),延遲的、超出預(yù)算的、未完成工程的最普遍的原因是:⑴缺少用戶參與;⑵不完備的需求規(guī)范;⑶改變需求規(guī)范。25需求分析的難點(diǎn)⑴問題的復(fù)雜性
涉及因素多而;如運(yùn)行環(huán)境和系統(tǒng)功能等。⑵交流障礙
涉及不同類型人員較多,知識(shí)背景、角度、角色的不同;⑶不完備性和不一致性
用戶對(duì)問題的陳述有矛盾、片面性等造成;⑷需求易變性
需求是變化的。26需求工作的重要性IBM公司有關(guān)研究的結(jié)果表明:有效的需求管理可以降低開發(fā)成本。通常改正需求錯(cuò)誤需要付出改正其他錯(cuò)誤10倍以上的代價(jià)。需求錯(cuò)誤通常導(dǎo)致軟件工程中全部錯(cuò)誤的25-40%。改正很少的需求錯(cuò)誤可以避免大量耗費(fèi)在返工上的成本和時(shí)間。27需求活動(dòng)⑴識(shí)別問題通過(guò)調(diào)研和收集資料,了解用戶的確切需求,并將用戶提出的功能行為和特殊要求等用雙方都能理解的表達(dá)方式逐條列出。在整個(gè)分析期間要和用戶充分協(xié)商。⑵可行性研究對(duì)于大型復(fù)雜問題,要對(duì)用戶的要求及實(shí)現(xiàn)環(huán)境從技術(shù)、經(jīng)濟(jì)和社會(huì)因素三個(gè)方面進(jìn)行可行性研究,以確定問題是否可解。⑶分析建模建立軟件求解模型;信息、行為和表示。⑷需求規(guī)格化及編寫文檔需求規(guī)格說(shuō)明書、初步用戶使用手冊(cè)等。282、軟件設(shè)計(jì)任務(wù):給出實(shí)現(xiàn)系統(tǒng)的實(shí)施藍(lán)圖。目的:要回答“如何解決該問題?”,既系統(tǒng)“怎樣做?”。步驟:概要設(shè)計(jì):解決系統(tǒng)的模塊劃分、模塊的層次結(jié)構(gòu)及數(shù)據(jù)庫(kù)設(shè)計(jì)。詳細(xì)設(shè)計(jì):解決每個(gè)摸塊內(nèi)部算法和數(shù)據(jù)結(jié)構(gòu)。結(jié)果:系統(tǒng)設(shè)計(jì)說(shuō)明書和模塊功能說(shuō)明書29軟件設(shè)計(jì)工作軟件設(shè)計(jì)要做的工作總的可以歸結(jié)為:軟件系統(tǒng)結(jié)構(gòu)(軟件結(jié)構(gòu))設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、界面設(shè)計(jì)和過(guò)程設(shè)計(jì)。設(shè)計(jì)辦法是功能分解,包括:⑴采用某種設(shè)計(jì)方法,將一個(gè)復(fù)雜的系統(tǒng)按功能劃分成模塊;⑵確定每個(gè)模塊的功能;⑶確定模塊之間的接口,即模塊之間傳遞的信息;⑸評(píng)價(jià)模塊結(jié)構(gòu)的質(zhì)量。30軟件設(shè)計(jì)準(zhǔn)則(1)軟件結(jié)構(gòu)準(zhǔn)則;分層結(jié)構(gòu)、便于控制;軟件結(jié)構(gòu)的深度和寬度要適中;具有合理的扇出和扇入數(shù)。(2)模塊化準(zhǔn)則;分解復(fù)雜問題;(3)模塊獨(dú)立性準(zhǔn)則;應(yīng)使模塊之間和與外部環(huán)境之間接口的復(fù)雜性盡量地減??;模塊應(yīng)具有低耦合、高內(nèi)聚;(4)數(shù)據(jù)和過(guò)程描述清晰、可區(qū)分(表達(dá)式);(5)成果可重復(fù)。31軟件設(shè)計(jì)方法⑴面向數(shù)據(jù)流的設(shè)計(jì)方法(分為變換流和事務(wù)流方法);⑵結(jié)構(gòu)化設(shè)計(jì)方法;⑶面向數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)方法(Jackson方法);⑷Warnier方法⑸面向?qū)ο蠓椒?2使用的開發(fā)工具⑴數(shù)據(jù)流圖、層次圖、HIPO圖、結(jié)構(gòu)圖⑵程序流程圖、N-S圖、問題分析圖PAD(ProgramAnalysisDiagram)⑶類語(yǔ)言、過(guò)程設(shè)計(jì)語(yǔ)言PDL(ProceduralDesignLanguage)等⑷統(tǒng)一建模語(yǔ)言UML(UnifiedModelingLanguage)333、軟件構(gòu)造任務(wù):根據(jù)設(shè)計(jì)說(shuō)明書中每個(gè)模塊的控制流程編寫出相應(yīng)的源程序。目的:寫出高質(zhì)量的代碼和相應(yīng)餓文檔。構(gòu)造要注意使系統(tǒng)更易于使用和系統(tǒng)的可重用性。選擇合適的開發(fā)工具及系統(tǒng)軟件、數(shù)據(jù)庫(kù)軟件、中間件等。制定編程規(guī)范。
結(jié)果:源程序和文檔34編程風(fēng)格編程風(fēng)格主要體現(xiàn)在如何描述源程序文件、數(shù)據(jù)說(shuō)明、輸入輸出等。(1)源程序文件;變量名的命名、源程序中的注解以及源程序的書寫格式;(2)數(shù)據(jù)說(shuō)明;按不同類型數(shù)據(jù)的順序以及字典順序說(shuō)明、對(duì)數(shù)據(jù)結(jié)構(gòu)加注釋說(shuō)明;(3)語(yǔ)句構(gòu)造;語(yǔ)句構(gòu)造一般規(guī)則;(4)輸入輸出語(yǔ)句;輸入輸出語(yǔ)句的規(guī)則。35語(yǔ)句構(gòu)造規(guī)則不要為節(jié)省空間而把多個(gè)語(yǔ)句寫在同一行;盡量避免復(fù)雜的條件測(cè)試;盡量減少對(duì)“非”條件的測(cè)試;避免使用多層嵌套的循環(huán)和重復(fù);利用括號(hào)使表達(dá)式的運(yùn)算順序清晰直觀?!纠?6程序設(shè)計(jì)語(yǔ)言選用程序設(shè)計(jì)語(yǔ)言時(shí)要考慮它的三種特性:(1)心理特性對(duì)人-機(jī)通信質(zhì)量有重要影響。例如,人們習(xí)慣使用已熟悉的程序設(shè)計(jì)語(yǔ)言,由此產(chǎn)生的惰性影響人們學(xué)習(xí)新語(yǔ)言。(2)工程特性它涉及到軟件的可移植性、開發(fā)工具的可利用性等。(3)技術(shù)特性它對(duì)設(shè)計(jì)質(zhì)量、人和整個(gè)軟件工程有影響。例如,對(duì)數(shù)據(jù)結(jié)構(gòu)復(fù)雜性要求很高的系統(tǒng),考慮選用C及C++等語(yǔ)言;若對(duì)高性能和實(shí)時(shí)功能要求高,可考慮選用Ada語(yǔ)言。374、軟件測(cè)試任務(wù):檢查、發(fā)現(xiàn)程序中的錯(cuò)誤,提高系統(tǒng)可靠性。目的:保證系統(tǒng)的正確性、可靠性和可用性?;卮穑骸霸撓到y(tǒng)是否能實(shí)現(xiàn)規(guī)定的操作?”。方式:模塊測(cè)試、組裝測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試結(jié)果:測(cè)試報(bào)告和軟件修改報(bào)告等。38測(cè)試分類⑴單元測(cè)試。對(duì)一個(gè)模塊的測(cè)試,一般以白盒法測(cè)試為主,多個(gè)模塊可以并行進(jìn)行。⑵集成測(cè)試。最終將本項(xiàng)目所有模塊集成在一起測(cè)試,交出完整程序產(chǎn)品。⑶確認(rèn)測(cè)試。以用戶為主的測(cè)試。證實(shí)系統(tǒng)能否正確地實(shí)現(xiàn)其功能。⑷系統(tǒng)測(cè)試。軟件只是整個(gè)應(yīng)用系統(tǒng)的一部分。最后要集成為一個(gè)整體,包括硬件、軟件以及相關(guān)的其它設(shè)備。此時(shí)的測(cè)試稱系統(tǒng)測(cè)試。39α測(cè)試與β測(cè)試α阿爾法測(cè)試:對(duì)于商品軟件在研制方有客戶(訂貨方)參與的確認(rèn)測(cè)試叫阿爾法測(cè)試。β貝塔測(cè)試:指在若干客戶場(chǎng)地由客戶組織,最終用戶參與的測(cè)試,此時(shí)所有文檔均予凍結(jié),作為本軟件版本的基線。對(duì)于新軟件,改版則為里程碑。40設(shè)計(jì)測(cè)試用例應(yīng)考慮的問題①界面:內(nèi)界面主要檢查參數(shù)個(gè)數(shù)及類型匹配。外界面主要檢查I/O文件、數(shù)據(jù)格式、類型匹配。②模塊的數(shù)據(jù)結(jié)構(gòu):類型是否不正確或不一致?初始化、缺省值使用情況;變量名拼錯(cuò);上、下界溢出等數(shù)據(jù)異常,測(cè)試能否正確處理等。③邊界條件:保證在邊界值的情況下模塊依然可以正確操作,值出界時(shí)要有正確反應(yīng)。④獨(dú)立路徑:保證至少所有語(yǔ)句都要執(zhí)行一次,每個(gè)條件或子條件都執(zhí)行一次更好。⑤錯(cuò)誤處理路徑:不管程序有無(wú)異常處理都要察看出錯(cuò)處理路徑。特別要考察是否死機(jī)。41程序調(diào)試調(diào)試是在測(cè)試發(fā)現(xiàn)錯(cuò)誤之后排除錯(cuò)誤的過(guò)程。調(diào)試過(guò)程會(huì)發(fā)生兩種結(jié)果:找到原因并把問題排除;沒找到問題的原因。調(diào)試是軟件開發(fā)過(guò)程中最艱苦的腦力勞動(dòng)。在調(diào)試過(guò)程中遇到的錯(cuò)誤有所不同,錯(cuò)誤的后果越嚴(yán)重,查找錯(cuò)誤原因的壓力也越大。通常,壓力會(huì)導(dǎo)致軟件開發(fā)人員在改正一個(gè)錯(cuò)誤的同時(shí)可能引入更多的錯(cuò)誤。42調(diào)試技術(shù)①輸出存儲(chǔ)器內(nèi)容;特點(diǎn)是效率低、難定位、輸出的是靜止?fàn)顟B(tài)的程序內(nèi)容。②加打印語(yǔ)句;特點(diǎn)是顯示的是程序的動(dòng)態(tài)信息,但大量的輸出,時(shí)間慢,可能引出新的問題。③用調(diào)試工具;特點(diǎn)是動(dòng)態(tài)調(diào)試,可自動(dòng)執(zhí)行,是目前廣泛采用的一種調(diào)試技術(shù)。43調(diào)試策略①試探法。大概分析、估計(jì)錯(cuò)誤的位置。②回溯法。確定最先出現(xiàn)“癥狀”的地方,然后沿程序的控制流程往回追蹤源程序,直到找出錯(cuò)誤源為止。③對(duì)分查找法。若已知程序中若干個(gè)關(guān)鍵點(diǎn)的正確值,然后用調(diào)試工具在關(guān)鍵點(diǎn)附近處輸入正確值;若輸出正確,則故障在前半部分;否則,再查后半部分。④歸納法。從線索出發(fā),通過(guò)分析線索之間的關(guān)系而找出故障。主要步驟為:收集有關(guān)數(shù)據(jù),組織數(shù)據(jù),導(dǎo)出假設(shè),證明假設(shè)。44調(diào)試的啟發(fā)性原則這部分內(nèi)容大多是心理學(xué)的問題:要思考,不要盲目地修改程序,至使錯(cuò)誤越改越多;如陷入困境,放到第2天去解決;陷入絕境后,要與別人交談你的問題,或許對(duì)你有所啟發(fā);避免用試驗(yàn)法。不要在問題沒有搞清楚之前,就改動(dòng)程序,這樣對(duì)找出錯(cuò)誤不利,程序越改越亂,以致于面目全非。455、軟件維護(hù)任務(wù):改正軟件系統(tǒng)在使用過(guò)程中發(fā)現(xiàn)的隱含錯(cuò)誤,擴(kuò)充在使用過(guò)程中新的功能要求。目的:維護(hù)軟件系統(tǒng)的正常運(yùn)行?;卮穑合到y(tǒng)是否滿足用戶的應(yīng)用要求。階段結(jié)果:軟件系統(tǒng)的問題報(bào)告和軟件修改報(bào)告。46軟件維護(hù)的原因⑴軟件的原有功能和性能可能不再適應(yīng)用戶的要求;⑵軟件的工作環(huán)境改變了(例如,增加了新的外部設(shè)備),軟件也要做相應(yīng)的變更;⑶軟件運(yùn)行中發(fā)現(xiàn)錯(cuò)誤,需要修改。47維護(hù)活動(dòng)的特點(diǎn)⑴非結(jié)構(gòu)化維護(hù)和結(jié)構(gòu)化維護(hù)。主要區(qū)別是開發(fā)過(guò)程是否用軟件工程方法,若各階段均有相應(yīng)的文檔記錄,系統(tǒng)則容易維護(hù)。采用結(jié)構(gòu)化維護(hù)可以大大提高軟件維護(hù)效率。⑵軟件維護(hù)的困難性。是由于軟件需求分析和開發(fā)方法的缺陷。⑶軟件維護(hù)的費(fèi)用在總費(fèi)用中的比重不斷增加,已經(jīng)上升到了70%~80%或更多,我們看到的軟件不斷升級(jí)就是維護(hù)的具體體現(xiàn)。48維護(hù)活動(dòng)流程建立維護(hù)機(jī)構(gòu),組織維護(hù)活動(dòng):⑴制定維護(hù)申請(qǐng)報(bào)告;⑵審查維護(hù)申請(qǐng)報(bào)告并批準(zhǔn);⑶進(jìn)行維護(hù)并做詳細(xì)記錄;⑷復(fù)審。49軟件的可維護(hù)性軟件可維護(hù)性是指維護(hù)人員理解、修改軟件的難易程度。⑴可維護(hù)性因素軟件的可維護(hù)性因素主要包括:可理解性、可測(cè)試性、可修改性、可靠性和可使用性。⑵提高可維護(hù)性的方法提高軟件的可維護(hù)性必須從軟件生存周期各個(gè)階段的工作入手,每個(gè)階段都把可維護(hù)性貫徹到階段的開發(fā)活動(dòng)過(guò)程中,并按規(guī)范對(duì)階段工作進(jìn)行評(píng)估,以保證個(gè)階段的工作按質(zhì)按量完成。⑶文檔文檔是影響軟件可維護(hù)性的決定性因素。文檔分為用戶文檔和系統(tǒng)文檔兩類。50(二)支持過(guò)程支持過(guò)程包括的軟件開發(fā)活動(dòng)和任務(wù)是:軟件配置管理軟件工程管理軟件過(guò)程軟件質(zhì)量51軟件配置管理軟件修改后會(huì)發(fā)生什么呢?同步更新——當(dāng)兩個(gè)或兩個(gè)以上的角色各自工作在同一產(chǎn)物上時(shí),最后一個(gè)修改者會(huì)破壞前者的工作。通知不達(dá)——當(dāng)被若干開發(fā)者共享的產(chǎn)品中的問題被解決時(shí),修改未被通知到一些開發(fā)者。多個(gè)版本——軟件修改與文檔不一致。新版本公布的管理和監(jiān)控。配置和變更管理提供了準(zhǔn)則管理演化系統(tǒng)中的多個(gè)變體,跟蹤給定軟件創(chuàng)建過(guò)程中的版本。52軟件工程管理軟件工程管理是一門藝術(shù)。其主要活動(dòng)有:管理項(xiàng)目的框架、計(jì)劃配備執(zhí)行監(jiān)控項(xiàng)目的實(shí)踐準(zhǔn)則、管理風(fēng)險(xiǎn)的框架。項(xiàng)目管理是過(guò)程管理的主要體現(xiàn):(1)建立與客戶的通信;(2)作計(jì)劃,定義資源、時(shí)限、落實(shí)到開發(fā)組;(3)風(fēng)險(xiǎn)分析,評(píng)估所采用的技術(shù)和管理帶來(lái)的風(fēng)險(xiǎn);(4)工程,即軟件分析與設(shè)計(jì);(5)構(gòu)造和發(fā)布,即編碼、測(cè)試、交付、安裝、文檔、培訓(xùn);(6)客戶評(píng)審,獲得客戶的反饋。53軟件質(zhì)量控制軟件質(zhì)量保證SQA活動(dòng),貫穿于軟件過(guò)程始終。開發(fā)單位成立SQA小組負(fù)責(zé)全面質(zhì)量管理。在開發(fā)項(xiàng)目計(jì)劃時(shí)就要做出SQA計(jì)劃。其工作:各種測(cè)試測(cè)試軟件是否滿足規(guī)格說(shuō)明要求。各種評(píng)審為多種人員參與的討論會(huì),以規(guī)格說(shuō)明或各種標(biāo)準(zhǔn),規(guī)范為準(zhǔn)評(píng)價(jià)各項(xiàng)軟件工作。各種審計(jì)以職能人員為主審,審查軟件過(guò)程產(chǎn)物是否符合標(biāo)準(zhǔn)或規(guī)格說(shuō)明書。報(bào)告和記錄所有測(cè)試、評(píng)審、審計(jì)都要詳細(xì)記錄并寫出報(bào)告,報(bào)告和記錄均要整理、歸檔。以上活動(dòng)均應(yīng)在軟件質(zhì)量保證計(jì)劃中列出。54(三)組織過(guò)程組織過(guò)程包括的軟件開發(fā)活動(dòng)和任務(wù)是:基礎(chǔ)設(shè)施建設(shè)軟件工程工具和方法改進(jìn)培訓(xùn)55基礎(chǔ)設(shè)施建設(shè)建立、維護(hù)和管理用于軟件開發(fā)過(guò)程中的:硬件和軟件的基礎(chǔ)設(shè)施;軟件開發(fā)工具和方法;開發(fā)技術(shù)、技術(shù)規(guī)范和標(biāo)準(zhǔn);其他活動(dòng)的其他基礎(chǔ)設(shè)施。56軟件工程工具和方法編程依賴環(huán)境,環(huán)境由開發(fā)工具組成(如編譯器、連接器、加載和運(yùn)行工具、排錯(cuò)、信息顯示及編輯工具)。稱為最小環(huán)境工具集。70年代中期,軟件工程師迫于軟件危機(jī)的壓力,提出了計(jì)算機(jī)輔助軟件工程(CASE)的設(shè)想,開發(fā)出一系列工具盡量使軟件過(guò)程的各項(xiàng)活動(dòng)自動(dòng)化、半自動(dòng)化。相應(yīng)問題:工具日益增多,給使用者帶來(lái)不便,例如,各工具的使用方法、格式、參數(shù)等差異的問題。這就在客觀上產(chǎn)生了對(duì)于集成的CASE工具的需求。57計(jì)算機(jī)輔助軟件工程CASE人們期望借助CASE工具,使得軟件開發(fā)可以像在自動(dòng)流水線上生產(chǎn)計(jì)算機(jī)那樣生產(chǎn)。CASE工具應(yīng)具有的特征:支持專用的個(gè)人計(jì)算環(huán)境;使用圖形功能對(duì)軟件系統(tǒng)進(jìn)行說(shuō)明并建立文檔;將生命周期各階段的工作連接在一起;收集和連接軟件系統(tǒng)從最初的軟件需求到軟件維護(hù)各個(gè)環(huán)節(jié)的所有信息;用人工智能實(shí)現(xiàn)軟件開發(fā)和維護(hù)工作的自動(dòng)化。信息工程工具過(guò)程模型和管理工具項(xiàng)目計(jì)劃工具風(fēng)險(xiǎn)分析工具項(xiàng)目管理工具需求追蹤工具度量和管理工具文檔工具系統(tǒng)軟件工具質(zhì)量保證工具數(shù)據(jù)庫(kù)管理工具58改進(jìn)改進(jìn)活動(dòng)的基本內(nèi)容有:對(duì)整個(gè)軟件生存過(guò)程進(jìn)行評(píng)估;對(duì)現(xiàn)行過(guò)程進(jìn)行度量;對(duì)現(xiàn)行過(guò)程進(jìn)行改進(jìn)。59培訓(xùn)為了使用戶能夠盡快掌握使用軟件系統(tǒng),要對(duì)用戶進(jìn)行培訓(xùn)?;顒?dòng)包括:制定培訓(xùn)計(jì)劃。編寫培訓(xùn)教材。實(shí)施培訓(xùn)計(jì)劃。601.2.5
軟件工程方法學(xué)通常把在軟件生命周期全過(guò)程中使用的一整套技術(shù)方法的集合稱為方法學(xué),也稱為范型。軟件工程方法學(xué)包括3個(gè)要素:方法、工具和過(guò)程。這三者之間是相互聯(lián)系的。方法是回答“怎樣做”的問題;工具是為運(yùn)用方法而提供的軟件支撐環(huán)境;過(guò)程是為了獲得高質(zhì)量的軟件所需完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。61軟件工程的基本問題
軟件工程開發(fā)技術(shù)的角度軟件工程開發(fā)技術(shù)思想與原則過(guò)程方法工具解決軟件工程的三目標(biāo)質(zhì)量成本進(jìn)度62傳統(tǒng)方法學(xué)傳統(tǒng)方法學(xué)是建立在軟件生存周期方法學(xué)和結(jié)構(gòu)化方法學(xué)的基礎(chǔ)上。因此,具有明顯的那個(gè)時(shí)代的特點(diǎn)。70年代,計(jì)算機(jī)技術(shù)水平不高,開發(fā)工具少而且性能差。對(duì)于大型復(fù)雜問題的求解,人們不得不采用“將大化小“、“將難化簡(jiǎn)”,最后“分而治之”的開發(fā)策略。63結(jié)構(gòu)化方法概述結(jié)構(gòu)化方法是由下列過(guò)程組成:結(jié)構(gòu)化分析方法SA結(jié)構(gòu)化設(shè)計(jì)方法SD結(jié)構(gòu)化程序設(shè)計(jì)方法SP方法的核心是:基于功能分解的模塊化層次結(jié)構(gòu)方法。64結(jié)構(gòu)化分析SA自頂向下逐步求精模塊化設(shè)計(jì)結(jié)構(gòu)化分析的要點(diǎn)是:將大問題化為小問題,找出關(guān)鍵點(diǎn)、難點(diǎn),定量描述;核心是:分解;手段是:模塊化。65結(jié)構(gòu)化設(shè)計(jì)SD模塊化結(jié)構(gòu)模塊獨(dú)立性結(jié)構(gòu)化設(shè)計(jì)方法的要點(diǎn)是:將系統(tǒng)設(shè)計(jì)成由相對(duì)獨(dú)立、單一功能的模塊組成的軟件結(jié)構(gòu)。模塊獨(dú)立性用模塊內(nèi)的內(nèi)聚性和模塊間的耦合性來(lái)衡量。66結(jié)構(gòu)化程序設(shè)計(jì)SP自頂向下逐步加細(xì);模塊只有一個(gè)入口,一個(gè)出口;三種基本結(jié)構(gòu);開發(fā)支持庫(kù);主程序員組結(jié)構(gòu)化程序設(shè)計(jì)方法SP的要點(diǎn)是用三種基本結(jié)構(gòu)的語(yǔ)句編寫只有一個(gè)入口和一個(gè)出口的模塊程序,盡可能地采用重用程序,開發(fā)組織形式為主程序員組。67傳統(tǒng)方法學(xué)的缺點(diǎn)過(guò)分強(qiáng)調(diào)了分階段實(shí)施,使得開發(fā)過(guò)程各個(gè)階段之間存在嚴(yán)重的順序性和依賴性;很難將一個(gè)復(fù)雜的問題化簡(jiǎn)、分解;設(shè)計(jì)方法存在很大的主觀隨意性;基于功能分解的系統(tǒng)結(jié)構(gòu)難于修改和擴(kuò)充;思維成果的可重用性很差;數(shù)據(jù)和對(duì)數(shù)據(jù)的處理是分離的;忽視了人在軟件開發(fā)過(guò)程中的地位和作用。68現(xiàn)代方法學(xué)現(xiàn)代方法學(xué)是在傳統(tǒng)方法學(xué)的基礎(chǔ)上,為了強(qiáng)調(diào)人在軟件開發(fā)中的作用,同時(shí)為了適應(yīng)軟件新技術(shù)的發(fā)展趨勢(shì)而提出的。其基本要點(diǎn)是:⑴軟件開發(fā)過(guò)程是以人為主,充分利用軟件開發(fā)方法及軟件開發(fā)工具;⑵開發(fā)人員的組織管理對(duì)軟件開發(fā)成功與否至關(guān)重要;⑶基于軟件組件的軟件開發(fā)技術(shù)。⑷由于軟件組件是標(biāo)準(zhǔn)化設(shè)計(jì)、成品化生產(chǎn)的,極易構(gòu)造使用,從而大大簡(jiǎn)化了設(shè)計(jì)、編程、測(cè)試各個(gè)環(huán)節(jié)的工作量,提高了生產(chǎn)效率和產(chǎn)品質(zhì)量。69現(xiàn)代方法學(xué)中生命周期在現(xiàn)代方法學(xué)中軟件生命周期的階段劃分:系統(tǒng)分析系統(tǒng)構(gòu)造系統(tǒng)測(cè)試軟件組件70面向?qū)ο蠓椒▽W(xué)為克服“軟件危機(jī)”帶來(lái)的災(zāi)難,業(yè)界人士研究、探索出的一種新方法。當(dāng)面向?qū)ο螅∣O)思想和方法一經(jīng)出現(xiàn),就引起計(jì)算機(jī)業(yè)界的極大關(guān)注,使得對(duì)這種新方法的研究和應(yīng)用得到迅速發(fā)展。OO方法將客觀世界看成是由許多不同種類的對(duì)象構(gòu)成。通過(guò)分析、研究客觀世界中的實(shí)體、實(shí)體的屬性及其相互關(guān)系,從中抽象出求解問題的對(duì)象,最后求解這些對(duì)象,得到問題的解。這一過(guò)程更接近人類認(rèn)識(shí)問題、解決問題的思維方式,使得計(jì)算機(jī)求解的對(duì)象與客觀事物具有一一對(duì)應(yīng)的關(guān)系。71對(duì)象(Object)標(biāo)識(shí)用來(lái)區(qū)別其它對(duì)象;狀態(tài)用來(lái)描述對(duì)象的屬性,用數(shù)據(jù)成員來(lái)表示;行為對(duì)對(duì)象的操作,用于改變對(duì)象的狀態(tài);行為分兩類:自身所承受的操作施加于其它對(duì)象的操作例如,一個(gè)人叫王東,男,1.80M,68kg,會(huì)修電器,可教計(jì)算機(jī)課。描述如下:對(duì)象名:王東對(duì)象狀態(tài):性別:男身高:1.80m體重:68kg
對(duì)象功能:
回答身高、體重、性別(屬于自身所承受的操作)
修理電器、教計(jì)算機(jī)課程(屬于施加于其它對(duì)象的操作)72類(Class)人們習(xí)慣于把有相似特征的事物歸為一類,分類是人類認(rèn)識(shí)客觀世界的基本方法。在OO方法中,“類”就是對(duì)具有相同數(shù)據(jù)和操作的一組相似對(duì)象的定義。例如,“人“類,可以是黑人、白人,可以是教師、工人等,他們具有相同的人類特征和行為特征。類是OO技術(shù)中最重要的概念。OO方法中所有的操作都可歸結(jié)為對(duì)類的操作。73C++中對(duì)象類的定義舉例
CLASSperson{Private:&&
私有數(shù)據(jù)和操作
charname[20];
intage;
cahraddress[40];charsex[10];voidPrintName();
viod
PrintAge();voidPrintAddress();voidPrintSex();Public:&&
公有操作
voidPrint(){
PrintName();
PrintAge();
PrintAddress();
PrintSex();}};結(jié)構(gòu)特征數(shù)據(jù)成員行為特征成員函數(shù)74繼承性舉例在“人”類中,大學(xué)生可以繼承“人”和“學(xué)生”的特征(繼承傳遞);對(duì)于在職研究生既可以繼承“學(xué)生”特征,又可以繼承“教師”特征(多重繼承)。
人身份證號(hào):姓名:學(xué)號(hào):校名學(xué)生大學(xué)生專業(yè):班級(jí):身份證號(hào):xxxxxxx姓名:劉小明學(xué)生:學(xué)生:9601078校名:西安交通大學(xué)大學(xué)生:專業(yè):計(jì)算機(jī)班級(jí):962班人:75
消息(Message)在面向?qū)ο蟮募夹g(shù)中,消息是對(duì)象之間相互請(qǐng)求或相互協(xié)作的惟一途徑。對(duì)象間的聯(lián)系,只能通過(guò)傳遞消息來(lái)進(jìn)行。對(duì)象也只能在收到消息時(shí),才被激活。前例中人的對(duì)象——王東。他可以修理電器、講計(jì)算機(jī)課;這是他為別人可提供的服務(wù)。但是,他什么時(shí)候修理電器,什么時(shí)候講課,都要得到其他對(duì)象的請(qǐng)求后才進(jìn)行。76什么是OO方法現(xiàn)在比較一致的看法是:OO方法是基于“對(duì)象、類、繼承性、消息機(jī)制、多態(tài)性等技術(shù)特征”的構(gòu)造軟件系統(tǒng)的開發(fā)方法。OO方法具有以下幾個(gè)要點(diǎn):⑴把對(duì)象作為一種統(tǒng)一的軟件構(gòu)件,它將數(shù)據(jù)及在數(shù)據(jù)上的操作行為融合為一體。OO方法處理的基本元素是對(duì)象;程序是由對(duì)象組成的,復(fù)雜的對(duì)象是由簡(jiǎn)單的對(duì)象組合而形成的。⑵把所有對(duì)象都用類來(lái)表示;每個(gè)類都有自己的屬性和方法,具體的對(duì)象只是類中的一個(gè)實(shí)例。⑶類具有層次結(jié)構(gòu),子類可以繼承父類的特性和方法(繼承性);⑷對(duì)象之間只能通過(guò)傳遞消息構(gòu)成相互之間的聯(lián)系(消息機(jī)制)。77OO方法的主要優(yōu)點(diǎn)⑴與人類習(xí)慣的思維方式一致⑵穩(wěn)定性好⑶可重用性好⑷可維護(hù)性好78軟件工程模型1瀑布模型2增量模型3螺旋模型4噴泉模型5基于知識(shí)的模型6面向?qū)ο竽P?9①瀑布模型瀑布模型是上個(gè)世紀(jì)80年代廣泛應(yīng)用的一種模型,至今仍然是最廣泛使用的過(guò)程模型之一。在應(yīng)用程的應(yīng)用模式也稱為軟件生存周期模式(B.W.Boehm提出的該模型)。80瀑布模型示意圖
需求分析7%系統(tǒng)設(shè)計(jì)6%軟件編程7%軟件測(cè)試13%軟件維護(hù)67%用戶要求分析報(bào)告系統(tǒng)設(shè)計(jì)報(bào)告源程序測(cè)試報(bào)告更改要求UAMATMMPUTPUAMPA系統(tǒng)分析員M項(xiàng)目管理員P程序員T高級(jí)程序員U
用戶81瀑布模型的特點(diǎn)瀑布模型具有順序性和依賴性,即后一階段工作必須在前一階段工作完成后才能開始。推遲實(shí)現(xiàn)的觀點(diǎn);把邏輯設(shè)計(jì)與物理設(shè)計(jì)清楚地劃分開,盡可能推遲物理模型的實(shí)現(xiàn),這是瀑布模型的重要指導(dǎo)思想。質(zhì)量保證的觀點(diǎn)。瀑布模型強(qiáng)調(diào)的是優(yōu)質(zhì),即每一步都循序漸進(jìn),及早消除隱患,從而保證軟件質(zhì)量。致命缺點(diǎn)是只有做出精確的需求分析,才能取得預(yù)期的結(jié)果。由于各種客觀、主觀的原因,需求分析往往不很精確,常常給日后的開發(fā)帶來(lái)隱患。82②原型模型—樣品模型原型模型的主要思想:先借用已有系統(tǒng)作為原型模型,通過(guò)“樣品”不斷改進(jìn),使得最后的產(chǎn)品就是用戶所需要的。原形模型的特點(diǎn):⑴開發(fā)人員和用戶在“原型”上達(dá)成一致。這樣可以減少設(shè)計(jì)中的錯(cuò)誤和開發(fā)中的風(fēng)險(xiǎn),以及對(duì)用戶培訓(xùn)的時(shí)間,而提高了系統(tǒng)的實(shí)用、正確性以及用戶的滿意程度。⑵縮短開發(fā)周期,加快工程進(jìn)度。⑶降低成本。原型模型的缺點(diǎn):當(dāng)告訴用戶,還必須重新生產(chǎn)該產(chǎn)品時(shí),用戶是很難接受的。這往往給工程繼續(xù)開展帶來(lái)不利因素。83快速原型模型
分析原型樣品模型設(shè)計(jì)編程測(cè)試使用修改與改進(jìn)在系統(tǒng)分析與設(shè)計(jì)中,采用交互式,反復(fù)修改與不斷改進(jìn)的方式進(jìn)行。還有的把原型模式嵌套在瀑布模型中運(yùn)用。84③增量模型也稱漸增模型。它把軟件產(chǎn)品作為一系列的增量構(gòu)件來(lái)設(shè)計(jì)、編碼、集成和測(cè)試。增量模型是一種非整體開發(fā)的模型。軟件在該模型中是“逐漸”開發(fā)出來(lái)的,開發(fā)出一部分,向用戶展示一部分,讓用戶及早看到部分軟件,及早發(fā)現(xiàn)問題。或者先開發(fā)一個(gè)“原型”軟件,完成部分主要功能,展示給用戶征求意見,然后逐步完善,最終后的滿意的軟件產(chǎn)品。該模型具有較大的靈活性,適合于軟件需求不明確、設(shè)計(jì)方案有一定風(fēng)險(xiǎn)的軟件項(xiàng)目。缺點(diǎn):要求軟件具有開放的結(jié)構(gòu)是這種模型固有的困難。85④螺旋模型將工程劃分為4個(gè)主要活動(dòng):制定計(jì)劃、風(fēng)險(xiǎn)分析、實(shí)現(xiàn)工程和用戶評(píng)價(jià)。4個(gè)活動(dòng)螺旋式地重復(fù)執(zhí)行,直到最終得到用戶認(rèn)可的產(chǎn)品。制定計(jì)劃:確定軟件目標(biāo),選定實(shí)施方案,弄清項(xiàng)目開發(fā)限制條件。風(fēng)險(xiǎn)分析:分析可選方案,分析識(shí)別風(fēng)險(xiǎn),研究解決化解風(fēng)險(xiǎn)的辦法。實(shí)現(xiàn)工程:實(shí)施軟件產(chǎn)品的開發(fā)。用戶評(píng)價(jià):對(duì)當(dāng)前工作結(jié)果進(jìn)行評(píng)價(jià),提出改進(jìn)產(chǎn)品的建議。螺旋模型的缺點(diǎn):很難讓用戶確信這種演化方法的結(jié)果是可以控制的。86螺旋模型的缺陷建立在風(fēng)險(xiǎn)分析的基礎(chǔ)上需要有一個(gè)非常有經(jīng)驗(yàn)的小組來(lái)準(zhǔn)確地分析和檢測(cè)風(fēng)險(xiǎn)絕對(duì)依賴人的素質(zhì)(本身就是冒險(xiǎn)!)不適合新手開發(fā)中的每一層都很有彈性,并不是很明確的界限每一層的目標(biāo)和計(jì)劃都是由小組本身來(lái)制定。要求有經(jīng)驗(yàn)的人來(lái)組成。87⑤智能模型
也稱基于知識(shí)的軟件開發(fā)模型,它與專家系統(tǒng)結(jié)合在一起。該模型在實(shí)施過(guò)程中要建立知識(shí)庫(kù),將模型本身、軟件工程知識(shí)與特定領(lǐng)域的知識(shí)分別存入數(shù)據(jù)庫(kù)。以軟件工程知識(shí)為基礎(chǔ)的生成規(guī)則構(gòu)成的專家系統(tǒng)與含應(yīng)用領(lǐng)域知識(shí)規(guī)則的其他專家系統(tǒng)相結(jié)合,構(gòu)成這一應(yīng)用領(lǐng)域的軟件開發(fā)系統(tǒng)。88⑥面向?qū)ο蟮拈_發(fā)模型其主導(dǎo)思想是:在整個(gè)軟件開發(fā)過(guò)程中將面向?qū)ο蠹夹g(shù)貫穿于整個(gè)生存周期。當(dāng)然,還要結(jié)合傳統(tǒng)開發(fā)模式中好的、已被無(wú)數(shù)成功開發(fā)活動(dòng)證明是可行的經(jīng)驗(yàn)和技術(shù)。具備3個(gè)主要的階段:分析:模擬“關(guān)鍵系統(tǒng)”來(lái)表示用戶要求,并設(shè)計(jì)獨(dú)立實(shí)現(xiàn)的“關(guān)鍵類”。設(shè)計(jì):限制并優(yōu)化關(guān)鍵類,在特定的環(huán)境中實(shí)現(xiàn),得到另外的類。實(shí)現(xiàn):
定義類的接口和實(shí)現(xiàn)方法,然后編寫并統(tǒng)一測(cè)試所有的類。89面向?qū)ο箝_發(fā)的缺陷還不成熟幾個(gè)有影響的面向?qū)ο箝_發(fā)的過(guò)程對(duì)不同的步驟意見不一。在大的項(xiàng)目上經(jīng)驗(yàn)不多,在小項(xiàng)目上尚可。在每個(gè)過(guò)程步上細(xì)節(jié)少,新手難于理解。晚期的測(cè)試開發(fā)過(guò)程沒有中間的版本,幾乎所有的測(cè)試都留在最后的實(shí)現(xiàn)階段。結(jié)構(gòu)上的死板假設(shè)所有的結(jié)構(gòu)設(shè)計(jì)都定義好在要求階段,對(duì)于設(shè)計(jì)和實(shí)現(xiàn)階段基本上沒有結(jié)構(gòu)上變化的余地。.
90開發(fā)流程模型的比較線性有序模型(瀑布模型)結(jié)構(gòu)性好基于原型模型需要在短時(shí)間內(nèi)建立原型系統(tǒng)在系統(tǒng)要求模糊或者未知時(shí)較有效重復(fù)使用模型假如條件適合,是開發(fā)速度最快的模型積累模型
容許早期測(cè)試和用戶反饋螺旋模型適于大規(guī)模系統(tǒng)91軟件工程前景軟件學(xué)科的核心問題是“如何提高軟件的生產(chǎn)效率和運(yùn)行效率”。在對(duì)提高運(yùn)行效率問題的研究上,人們已經(jīng)探索出一條有效的途徑并取得重大成果。表現(xiàn)在:⑴集成電路技術(shù)、計(jì)算機(jī)體系結(jié)構(gòu)技術(shù)和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展,為軟件系統(tǒng)的運(yùn)行提供了日益強(qiáng)大的硬件基礎(chǔ)設(shè)施,極大地提高了軟件運(yùn)行的效率。在此方面目前的研究熱點(diǎn)是高性能計(jì)算和高性能網(wǎng)絡(luò)。⑵軟件學(xué)科的并行計(jì)算和分布計(jì)算理論的新進(jìn)展也在很大程度上解決了提高運(yùn)行效率的問題。近十年來(lái)研究的熱點(diǎn)是系統(tǒng)軟件技術(shù)和中間件技術(shù)。92提高軟件生產(chǎn)效率的方法研究途徑分分理論方法和技術(shù)方法:技術(shù)方法主要是以美國(guó)軟件產(chǎn)業(yè)為代表。它以“軟件工廠”為目標(biāo)來(lái)提高軟件的生產(chǎn)效率。主要辦法是提高軟件的可重用性。面向?qū)ο蠓椒ㄊ墙鉀Q軟件危機(jī),提高軟件開發(fā)效率和質(zhì)量的有效途徑,是一種社會(huì)化的方法,有助于軟件工程化、工廠化生產(chǎn)的實(shí)現(xiàn)。這種方法在近二十年來(lái)處于主導(dǎo)地位,也使美國(guó)的軟件業(yè)在全球領(lǐng)先。理論方法是以西歐的學(xué)術(shù)界為首的形式化方法,即純自動(dòng)化方法。它以精確的語(yǔ)義描述軟件系統(tǒng),在此基礎(chǔ)上進(jìn)行自動(dòng)生成、轉(zhuǎn)化及驗(yàn)證。此方法提出來(lái)很早,但難度很大,大部分處于原型討論,離實(shí)用還有很大差距。這兩種方法的優(yōu)、缺點(diǎn)很明顯。技術(shù)的方法實(shí)用性很強(qiáng),得到了產(chǎn)業(yè)界的大力擁護(hù)。但是隨著軟件的規(guī)模越來(lái)越大,復(fù)雜度越來(lái)越高,很難保證軟件的可靠性和軟件的開發(fā)效率。理論的方法則實(shí)用性差,很難投入實(shí)際應(yīng)用。93軟件工程主要技術(shù)發(fā)展趨勢(shì)1.基于軟件復(fù)用庫(kù)的軟件重用2.面向?qū)ο蠹夹g(shù)3.針對(duì)幾種中間件平臺(tái)開發(fā)組件交互的標(biāo)準(zhǔn)和基于組件的軟件開發(fā)94歡迎參加計(jì)教中心網(wǎng)站的學(xué)習(xí)討論。中心網(wǎng)址:
http://教學(xué)資源地址:
http://60/moodle我的E-mail地址:
lzq@
謝謝,再見!95經(jīng)典的設(shè)計(jì)準(zhǔn)則模塊化準(zhǔn)則模塊獨(dú)立性準(zhǔn)則模塊的內(nèi)聚性模塊的耦合性軟件的結(jié)構(gòu)準(zhǔn)則96模塊化準(zhǔn)則設(shè)C(X)是關(guān)于問題X的復(fù)雜性,E(X)是完成問題X的工作量,有兩個(gè)問題P1和P2:
若C(P1)>C(P2),(即P1比P2復(fù)雜)E(P1)>E(P2),(即P1比P2用的工作量多)
而C(P1+P2)>C(P1)+C(P2),(即組合問題比單個(gè)問題復(fù)雜)
則E(P1+P2)>E(P1)+E(P2)(組合問題的工作量大于單個(gè)問題的工作量之和)這說(shuō)明:軟件分解為若個(gè)模塊后,則總的工作量減少,但并不是說(shuō),模塊分解的越多,工作量就一定越少。因?yàn)榉纸獾揭欢ǔ潭群螅K之間的接口工作量就上升,從而使總的代價(jià)上升。97模塊化準(zhǔn)則示意圖
開發(fā)代價(jià)模塊數(shù)模塊代價(jià)接口代價(jià)軟件成本M最小區(qū)域—End—98模塊獨(dú)立性準(zhǔn)則模塊獨(dú)立性是指開發(fā)具有功能專一、模塊之間無(wú)過(guò)多相互作用的模塊。具有獨(dú)立性的模塊,開發(fā)容易、能減少錯(cuò)誤的傳播,使模塊重組、分解方便,容易調(diào)試和維護(hù)。度量模塊的獨(dú)立性標(biāo)準(zhǔn):模塊間的藕合性越小,獨(dú)立性越強(qiáng)模塊的內(nèi)聚性越大,獨(dú)立性越強(qiáng)—End—99軟件結(jié)構(gòu)準(zhǔn)則
好的軟件結(jié)構(gòu)應(yīng)具有倒置水缸形,在頂部有較高的扇出數(shù)(一個(gè)模塊直接下屬的子模塊數(shù)),在底部有較高的扇入數(shù)(模塊的直接上屬模塊的個(gè)數(shù))。示意圖100結(jié)構(gòu)形態(tài)準(zhǔn)則示意圖
深度寬度扇出扇入—End—101層次圖層次圖用來(lái)描述軟件的層次結(jié)構(gòu)。這種工具很適合在自頂向下設(shè)計(jì)軟件的過(guò)程中使用。正文加工系統(tǒng)輸入輸出編輯加標(biāo)題存儲(chǔ)檢索編目錄格式化添加刪除插入修改合并列表銷售管理系統(tǒng)的H圖—End—102HIPO圖HIPO圖是美國(guó)IBM公司發(fā)明的“層次圖加IPO圖”的英文縮寫。為了使HIPO圖具有可追蹤性,在層次圖內(nèi)的每個(gè)方框內(nèi)加入編號(hào)(頂層框除外)。編號(hào)反映了模塊在不同層次中的位置。正文加工系統(tǒng)輸入1.0輸出2.0編輯3.0加標(biāo)題4.0存儲(chǔ)5.0檢索6.0編目錄7.0格式化8.0添加3.1刪除3.2插入3.3修改3.4合并3.5列表3.6—End—103IPO圖IPO圖是“輸入|處理|輸出”圖的簡(jiǎn)稱,它是美國(guó)IBM公司發(fā)展完善起來(lái)的一種圖形工具,它可以方便地描述輸入數(shù)據(jù)、數(shù)據(jù)處理和輸出數(shù)據(jù)之間的關(guān)系。IPO圖用法:左邊框是輸入數(shù)據(jù)中間框是數(shù)據(jù)處理右邊框是輸出數(shù)據(jù)粗箭頭指出數(shù)據(jù)流動(dòng)情況104IPO圖舉例主文件更新。舊的主文件事物文件1.校驗(yàn)主記錄2.校驗(yàn)事物記錄3.更新主記錄有效的主記錄有效的事物記錄更新后的主文件輸入處理輸出105改進(jìn)的IPO圖改進(jìn)的IPO圖包含了一些附加信息,主要是使IPO圖描述的問題更加清晰。增加的附加信息有:系統(tǒng)名稱圖的作者完成日期描述的模塊名稱模塊在層次結(jié)構(gòu)中的編號(hào)調(diào)用本模塊的模塊清單模塊內(nèi)使用的局部數(shù)據(jù)元素等106改進(jìn)的IPO圖舉例
系統(tǒng):________作者:__________模塊:________日期:__________編號(hào):________被調(diào)用:調(diào)用:注釋:局部數(shù)據(jù)元素:處理:輸入:輸出:確定能否供貨的IPO圖—End—107數(shù)據(jù)流圖的符號(hào)它有四種基本符號(hào):SPX數(shù)據(jù)源及數(shù)據(jù)終點(diǎn)加工
對(duì)數(shù)據(jù)的加工或變換,指向加工的數(shù)據(jù)流是輸入數(shù)據(jù);離開的是輸出數(shù)據(jù)。數(shù)據(jù)流具有名字且有流向的數(shù)據(jù)文件存放數(shù)據(jù)的場(chǎng)所108舉例——賓館管理系統(tǒng)
客人預(yù)訂登錄房管客人信息庫(kù)可售房庫(kù)售出房庫(kù)客帳庫(kù)公安預(yù)付款財(cái)務(wù)IDD—End—109流程圖用圖形描述問題的處理過(guò)程的工具即用一些約定的幾何圖形來(lái)描述算法。傳統(tǒng)流程圖(的符號(hào)及意義)圓邊框工作的開始或停止平行四邊形框輸入或輸出判斷框邏輯判斷或檢查矩形框各種處理功能箭頭線流程的路線圓圈連接點(diǎn)110
開始輸入x,yX=0輸出錯(cuò)誤信息z=y/x輸出z結(jié)束YN例:計(jì)算z=y/x并輸出z—End—111NS圖NS圖是以年美國(guó)學(xué)者I.Nassi和B.Schneiderman的名字命名的。它是根據(jù)1977年這兩位計(jì)算機(jī)科學(xué)家提出的一種適合于結(jié)構(gòu)化設(shè)計(jì)的流程圖。而命名。它的主要特點(diǎn)是取消了流程線,即規(guī)定了幾種基本結(jié)構(gòu)作為構(gòu)造算法的基本單元。112
NS圖基本單元順序結(jié)構(gòu)A塊B塊選擇結(jié)構(gòu)滿足條件P不滿足A塊B塊CASE條件值1值2值n……Case1部分Case2部分Casen部分……113
NS圖基本單元(續(xù))循環(huán)結(jié)構(gòu)直到條件滿不足為止執(zhí)行A塊當(dāng)條件滿足時(shí)執(zhí)行A塊條件P?執(zhí)行A塊成立
條件P?不成立條件P?執(zhí)行A塊成立不成立114
NS圖基本單元(續(xù))調(diào)用子程序A綜合舉例輸入10個(gè)數(shù),求其均值。
N=0,SUM=0,X=0當(dāng)N<10輸入X的值SUM=SUM+XN=N+1AVER=SUM/10輸出AVER值—End—115PAD圖PAD是問題分析圖(ProgramAnalysisDiagram)的英文縮寫,1973年由日本日立公司發(fā)明并推廣。它也是一種二維圖形的表示方法,是從左到右生長(zhǎng)和求精的。116PAD圖的基本符號(hào)PAD有三種表示符號(hào):A塊B塊C塊輸入處理輸出依順序執(zhí)行輸入、處理、輸出條件CA塊條件C成立執(zhí)行A塊否則,執(zhí)行B塊。B塊選擇結(jié)構(gòu)順序結(jié)構(gòu)循環(huán)執(zhí)行A塊條件成立,循環(huán)執(zhí)行A塊。循環(huán)結(jié)構(gòu)117PAD圖舉例輸入10個(gè)數(shù),求并打印其均值。AVER=SUM/10WHILEN<10SUM=SUM+X置初值SUM=0,N=0輸入XN=N+1輸出AVER—End—118過(guò)程設(shè)計(jì)語(yǔ)言PDLPDL(ProgramDesignLanguage)是過(guò)程設(shè)計(jì)語(yǔ)言的英文縮寫,也稱偽碼。PDL和結(jié)構(gòu)英語(yǔ)相似,它把結(jié)構(gòu)程序設(shè)計(jì)的基本元素和英語(yǔ)結(jié)合在一起。允許程序員按求解的問題思考,用與高級(jí)語(yǔ)言無(wú)關(guān)的方式來(lái)表達(dá)程序邏輯。它除了控制結(jié)構(gòu)之外,可描述任何復(fù)雜的操作,可自由使用自然語(yǔ)言,而無(wú)形式語(yǔ)法規(guī)則。119PDL的程序結(jié)構(gòu)順序結(jié)構(gòu)處理1
處理2……
處理n選擇結(jié)構(gòu)(1)IF條件(2)IF條件1
處理1處理1ELSEORIF條件2
處理2……ENDIFELSE處理nENDIF—End—120數(shù)據(jù)字典的內(nèi)容數(shù)據(jù)字典對(duì)下列元素進(jìn)行定義:⑴數(shù)據(jù)流⑵數(shù)據(jù)流分量⑶數(shù)據(jù)存儲(chǔ)⑷處理121數(shù)據(jù)字典的內(nèi)容舉例數(shù)據(jù)字典的條目解釋通常采用規(guī)范的定義形式:
客帳=帳號(hào)+房租+IDD費(fèi)+餐飲費(fèi)+洗衣費(fèi)+娛樂費(fèi)+日期+經(jīng)辦人內(nèi)容包含:數(shù)據(jù)流:編號(hào)、名稱、簡(jiǎn)述、別名、構(gòu)成、來(lái)源、去向、流量數(shù)據(jù)項(xiàng)目:編號(hào)、名稱、簡(jiǎn)述、別名、類型、長(zhǎng)度、位數(shù)數(shù)據(jù)文件:編號(hào)、名稱、簡(jiǎn)述、別名、構(gòu)成、關(guān)鍵字、存取要求處理:編號(hào)、名稱、簡(jiǎn)述、別名、處理?xiàng)l件、I/O內(nèi)容、處理邏輯—End—122數(shù)據(jù)流程圖數(shù)據(jù)流圖可以分為兩類:加工中心輸入加工輸出加工輸入輸出內(nèi)部結(jié)果內(nèi)部數(shù)據(jù)輸入流輸出流變換流加工結(jié)果事物中心
T數(shù)據(jù)流事物中心t1t2t3t4事物路徑事物流123變換分析的步驟確定DFD及其類型確定輸入流、中心加工、輸出流的流界;第一級(jí)分解;設(shè)計(jì)上層模塊;第二級(jí)分解,設(shè)計(jì)中、下層模塊;進(jìn)一步精細(xì)化。124舉例——設(shè)計(jì)汽車儀表盤設(shè)計(jì)一個(gè)“智能”產(chǎn)品——汽車數(shù)字儀表盤,實(shí)現(xiàn)的功能為:通過(guò)模-數(shù)轉(zhuǎn)換實(shí)現(xiàn)傳感器和微處理器接口;在發(fā)光二級(jí)管面板上顯示數(shù)據(jù);指示mph(每小時(shí)英里數(shù))、行駛里程、每加侖汽油行駛的英里數(shù)(mpg)等;指示加速|(zhì)減速超速警告;車速超過(guò)55英里/小時(shí),則發(fā)出超速警告鈴聲。125汽車數(shù)字儀表系統(tǒng)的DFD
旋轉(zhuǎn)信號(hào)讀旋轉(zhuǎn)信號(hào)信號(hào)/秒SPS收集和求均值
燃料流信號(hào)讀和校對(duì)燃料流計(jì)算
gph轉(zhuǎn)換為轉(zhuǎn)/分
rpmSPSrpmmph計(jì)算mph和超速值mph顯示產(chǎn)生mph顯示gphmpgmpg顯示計(jì)算燃料消耗產(chǎn)生mpg顯示mphSPSrpm超速值發(fā)出鈴聲鈴聲產(chǎn)生里程里程計(jì)算里程英里確定加減速產(chǎn)生加減速顯示箭頭指示水平線下箭頭上箭頭輸入流變換流輸出流
SPSrpm每分鐘轉(zhuǎn)數(shù)gph每小時(shí)耗油數(shù)mph每小時(shí)里程數(shù)mpg每單位油里程數(shù)126設(shè)計(jì)步驟(一)第1步:確定DFD及其類型。認(rèn)真分析DFD,可知有2個(gè)輸入流(旋轉(zhuǎn)信號(hào)、燃料流傳感器信號(hào)),5個(gè)輸出流(加、減速顯示、里程顯示、發(fā)出鈴聲、mph顯示、mpg顯示),輸出流顯然是把輸入流經(jīng)計(jì)算而產(chǎn)生的。由此可見,這是一個(gè)典型的變換流類型。127設(shè)計(jì)步驟(二)確定流界(輸入流、變換流和輸出流)輸入流讀旋轉(zhuǎn)信號(hào)、收集求和平均值、轉(zhuǎn)換成rpm、讀和校對(duì)、計(jì)算gph變換流確定加、減速度、計(jì)算里程、計(jì)算mph和超速值、計(jì)算燃料消耗輸出流產(chǎn)生加、減速顯示、里程顯示、發(fā)出鈴聲、產(chǎn)生mph和mpg顯示128設(shè)計(jì)步驟(三)第1級(jí)分解,產(chǎn)生頂層模塊第1級(jí)分解過(guò)程實(shí)際上是對(duì)DFD自頂向下的控制進(jìn)行分配。DFD被映射為:輸入控制、變換控制和輸出控制,再人為地為它們加一個(gè)主控模塊,同時(shí)根據(jù)實(shí)際問題為每個(gè)模塊命名。CmCiCtCo數(shù)字儀表板控制系統(tǒng)接收傳感器信號(hào)數(shù)據(jù)轉(zhuǎn)換控制驅(qū)動(dòng)儀表板面129設(shè)計(jì)步驟(四)第2級(jí)分解,建立中下層模塊
由頂向下,逐步精細(xì),設(shè)計(jì)中、下層模塊。為每個(gè)邏輯輸入設(shè)計(jì)一個(gè)輸入模塊,向上屬模塊提供輸入信息;而該模塊又需要兩個(gè)下屬模塊,分別稱為“取模塊”和“轉(zhuǎn)換模塊”。沿每條邏輯輸入分支,按此辦法一直分解到物理輸入為止。同理為每一個(gè)邏輯輸出設(shè)計(jì)一個(gè)輸出模塊,它要輸出上屬模塊送來(lái)的信息,而該模塊又需要兩個(gè)下屬模塊;一個(gè)轉(zhuǎn)換送來(lái)的信息,另一個(gè)把轉(zhuǎn)換的信息送走。130第2級(jí)分解舉例將數(shù)字儀表盤控制系統(tǒng)繼續(xù)分解:讀旋轉(zhuǎn)信號(hào)接收傳感器信號(hào)rpm
spssps收集sps轉(zhuǎn)換成rpm信號(hào)均值信號(hào)/秒計(jì)算gph讀燃料流燃燒流計(jì)算mph數(shù)字轉(zhuǎn)換控制
sps確定加減速里程計(jì)算里程計(jì)算mpgrpm箭頭指示rpmmphmpgmphgphgph變換處理
輸入模塊131第2級(jí)分解舉例(續(xù))輸出模塊
驅(qū)動(dòng)儀表盤加減速顯示顯示里程顯示mph發(fā)出鈴聲發(fā)光二極管顯示顯示mpg132設(shè)計(jì)步驟(五)進(jìn)一步精化
數(shù)字儀表板控制系統(tǒng)發(fā)出鈴聲計(jì)算里程顯示mph顯示mpg顯示里程顯示加減速發(fā)光二極管顯示精化后的數(shù)字儀表盤系統(tǒng)的軟件結(jié)構(gòu)驅(qū)動(dòng)儀表板面數(shù)據(jù)轉(zhuǎn)換控制讀旋轉(zhuǎn)信號(hào)計(jì)算gph計(jì)算mph計(jì)算mpg確定加減速讀燃料流接收傳感器信號(hào)轉(zhuǎn)換成rpm—End—133結(jié)構(gòu)化方法概述結(jié)構(gòu)化方法是根據(jù)某種原理,使用一定的工具,按照特定步驟工作的軟件方法。結(jié)構(gòu)化方法由三部分組成:結(jié)構(gòu)化分析SA
(StructuredAnalysis)結(jié)構(gòu)化設(shè)計(jì)SD
(StructuredDesign)結(jié)構(gòu)化設(shè)計(jì)SP
(StructuredProgramming)134方法起源結(jié)構(gòu)化方法起源于60年代,成熟于70年代,是傳統(tǒng)的程序設(shè)計(jì)方法之一。1965年E.W.Dijkstra提出了“結(jié)構(gòu)程序設(shè)計(jì)”的概念,指出取消“GOTO”語(yǔ)句可以提高程序質(zhì)量。1966年Boehm等專家證明了“只用三種基本的控制結(jié)構(gòu)就能實(shí)現(xiàn)任何單入口單出口的程序”。1972年IBM公司的Mills進(jìn)一步提出“程序應(yīng)該只有一個(gè)入口和一個(gè)出口”。這些實(shí)踐經(jīng)驗(yàn)和思想奠定了結(jié)構(gòu)程序設(shè)計(jì)的理論基礎(chǔ)。135結(jié)構(gòu)化開發(fā)方法結(jié)構(gòu)化開發(fā)方法是傳統(tǒng)的軟件系統(tǒng)開發(fā)方法?;疽c(diǎn)是:自頂向下逐步求精模塊化設(shè)計(jì)基本思想:把一個(gè)復(fù)雜問題的求解過(guò)程分階段進(jìn)行,每個(gè)階段處理的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)?!狤nd—136Jackson方法英國(guó)計(jì)算機(jī)科學(xué)家M.Jackson認(rèn)為:實(shí)際問題應(yīng)分解成可由三種結(jié)構(gòu)形式表示的各種層次結(jié)構(gòu)。即:ACBDAseq
doB;doC;doD;Aend順序結(jié)構(gòu)圖及對(duì)應(yīng)的偽碼AC°B°Aselecti>0doB;AordoC;Aend選擇結(jié)構(gòu)圖及對(duì)應(yīng)的偽碼AB*Aitemwhilecond
doB;Aend循環(huán)結(jié)構(gòu)圖及對(duì)應(yīng)的偽碼137JSP方法的設(shè)計(jì)步驟⑴首先評(píng)價(jià)DS的特點(diǎn);⑵然后,把DS依次表示為一些基本形式,如順序、選擇、重復(fù)結(jié)構(gòu)等;⑶再把DS表示映射成軟件控制層次;⑷根據(jù)指導(dǎo)原則來(lái)細(xì)化軟件層次;⑸最終寫出軟件的過(guò)程性描述。138用Jackson方法舉例例題:統(tǒng)計(jì)每個(gè)記錄中空格字符的個(gè)數(shù)及文件中空格字符的總個(gè)數(shù)。一個(gè)正文文件由若干個(gè)記錄組成,每個(gè)記錄是一個(gè)字符串。要求:每復(fù)制一行輸入字符串之后,另起一行打印出這個(gè)字符串的空格數(shù),最后打印出文件中空格的總個(gè)數(shù)。139
確定輸入和輸出數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)表示I/O數(shù)據(jù)結(jié)構(gòu)的Jackson圖:輸出表格表格體空格總數(shù)串信息*字符串空格數(shù)I正文文件字符串*字符*空格°非空格°IS選擇的條件I重復(fù)的條件輸入數(shù)據(jù)結(jié)構(gòu)輸出數(shù)據(jù)結(jié)構(gòu)140從數(shù)據(jù)結(jié)構(gòu)圖導(dǎo)出程序結(jié)構(gòu)圖
頂層設(shè)計(jì)一個(gè)處理框“統(tǒng)計(jì)空格”,它與“正文文件”和“輸出表格”相對(duì)應(yīng);在第二層,輸出結(jié)構(gòu)中有“表格體”和“空格總數(shù)”,這里設(shè)計(jì)“程序體”和“打印總數(shù)”相對(duì)應(yīng);第三層,把“字符串”和“串信息”設(shè)計(jì)為“處理字符串”;第四層,把“字符”、“字符串”和“空格數(shù)”設(shè)計(jì)為“打印字符串”、“分析字符串”和“打印空格數(shù)”。“分析字符串”是重復(fù)處理的;第五層,在分析字符串過(guò)程中要處理“空格”和“非空格”。處理字符串*打印總數(shù)分析字符串*打印空格數(shù)統(tǒng)計(jì)空格打印字符串處理空格°
程序體IIS處理非空格°141列出所有操作和條件
列出所有操作和條件后,把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。⑴停止⑵打開文件⑶關(guān)閉文件⑷打印出字符串⑸打印出空格數(shù)目⑹打印出空格總數(shù)⑺sum:=sum+1⑻totalsum:=totalsum+sum⑼讀入字符串⑽sum:=0⑾totalsum:=0⑿pointer:=1⒀pointer:=pointer+1I⑴文件結(jié)束I⑵字符串結(jié)束S⑶字符是空格142把操作和條件分配到適當(dāng)位置處理字符串*打印總數(shù)分析字符串*打印空格數(shù)統(tǒng)計(jì)空格打印字符串處理空格°
程序體I(1)IS(3)處理非空格°
41012I(2)12895131192143用偽碼表示程序處理過(guò)程
統(tǒng)計(jì)空格seq
打開文件讀人字符串
totalsum:=0
程序體iteruntil文件結(jié)束處理字符串seq
印字符串seq
印出字符串印字符串endsum:=0pointer:=1
分析字符串iteruntil字符串結(jié)束分析字符select字符是空格處理空格seqsum:=sum+1pointer:=pointer+1
處理空格end
分析字符or字符不是空格
處理非空格seq
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年安徽安東捷氪玻璃科技有限公司招聘?jìng)淇碱}庫(kù)完整答案詳解
- 2026年北京市海淀區(qū)青龍橋社區(qū)衛(wèi)生服務(wù)中心面向社會(huì)招聘?jìng)淇碱}庫(kù)及一套參考答案詳解
- 2026年南京三樂集團(tuán)有限公司招聘?jìng)淇碱}庫(kù)完整參考答案詳解
- 2026年四川省國(guó)農(nóng)天府農(nóng)業(yè)發(fā)展有限公司公開選聘副總經(jīng)理備考題庫(kù)及答案詳解參考
- 2026年大連理工大學(xué)附屬高級(jí)中學(xué)招聘?jìng)淇碱}庫(kù)及答案詳解一套
- 落實(shí)各項(xiàng)內(nèi)控制度
- 證券固收部?jī)?nèi)控制度
- 村集體經(jīng)濟(jì)內(nèi)控制度
- 商品采購(gòu)業(yè)務(wù)內(nèi)控制度
- 生活飲用水內(nèi)控制度
- 2023年安徽宣城中學(xué)高一自主招生物理試卷試題(含答案詳解)
- 初中道德與法治課中提升學(xué)生政治認(rèn)同素養(yǎng)的策略研究
- 活著,余華,下載
- 糖尿病的急救和護(hù)理
- 中醫(yī)養(yǎng)生的吃野山參粉養(yǎng)生法
- 小學(xué)道德與法治-認(rèn)識(shí)居民身份證教學(xué)課件設(shè)計(jì)
- 采購(gòu)滅火器施工方案
- 小學(xué)生古詩(shī)詞大賽備考題庫(kù)(300題)
- 國(guó)家開放大學(xué)最新《監(jiān)督學(xué)》形考任務(wù)(1-4)試題解析和答案
- GB/T 25085.3-2020道路車輛汽車電纜第3部分:交流30 V或直流60 V單芯銅導(dǎo)體電纜的尺寸和要求
- GB/T 242-2007金屬管擴(kuò)口試驗(yàn)方法
評(píng)論
0/150
提交評(píng)論