第一篇:軟件工程教案(張海潘版本)1
軟件工程是個(gè)什么概念呢?
軟件工程它不是一個(gè)完全計(jì)算機(jī)的概念,它實(shí)際上是一種管理的概念,就是怎么樣用一種工程化的方法或者現(xiàn)代的管理去管理計(jì)算機(jī)軟件開發(fā)的過程,它是這么一個(gè)基本概念。那么在這個(gè)基本概念的前提就是,現(xiàn)代的軟件開發(fā)過程和傳統(tǒng)的許多工業(yè)生產(chǎn)過程是有著巨大差異的。我們知道傳統(tǒng)工業(yè)包括傳統(tǒng)的制造業(yè),傳統(tǒng)的農(nóng)業(yè)等等。他在生產(chǎn)的過程中有一系列管理的方法,包括物料,包括一些生產(chǎn)過程控制等等。
那么計(jì)算機(jī)軟件呢,有它一些特有的方法,隨著人們?cè)谟?jì)算機(jī)軟件開發(fā)過程中碰到的各種問題以及后來慢慢提出的一些觀點(diǎn),形成了軟件工程。所以說軟件工程更該是更偏向于管理,更偏向于認(rèn)知科學(xué)的一門學(xué)科,不完全是計(jì)算機(jī)軟件里面的東西。
當(dāng)然,一般來說對(duì)于軟件工程學(xué)科門類的劃分,是劃分在計(jì)算機(jī)軟件門類里面。通常來說,計(jì)算機(jī)現(xiàn)在劃分為五大門類。一個(gè)是計(jì)算機(jī)軟件,一個(gè)是計(jì)算機(jī)理論,一個(gè)是計(jì)算機(jī)體系結(jié)構(gòu),一個(gè)是計(jì)算機(jī)硬件,最后一個(gè)計(jì)算機(jī)的應(yīng)用。
那么計(jì)算機(jī)軟件里面它主要包括程序設(shè)計(jì)語言,數(shù)據(jù)結(jié)構(gòu),人機(jī)交互,程序設(shè)計(jì)方法論,和軟件工程。那目前來說,我們看到從軟件學(xué)科來說,程序設(shè)計(jì)語言,他的發(fā)展不是特別快,我們看到這幾年每年出的新語言比較少,不外乎就是Java, sishop還具有一定的活力,那么 早期的語言如C++,再早的像C語言,已經(jīng)是很多年沒有什么變化了。
數(shù)據(jù)結(jié)構(gòu)也基本上被研究的比較透徹了,鏈表啊,二參數(shù)啊,甚至把它發(fā)展到數(shù)據(jù)庫的一些應(yīng)用里面。
人機(jī)交互目前來說還是有一定潛力的。它包括怎么樣讓人和計(jì)算機(jī)有一些交互性,這種交互性怎么樣能夠讓用戶能夠方便的使用,比如怎么樣調(diào)這個(gè)顏色,怎么調(diào)鍵盤和鼠標(biāo)輸入的方式,讓人能非常方便的接受它,這是人機(jī)交互這門課程他要講的內(nèi)容。
程序設(shè)計(jì)方法論講的是程序設(shè)計(jì)過程中你怎么樣要遵循一些規(guī)則,怎么樣寫程序,程序的風(fēng)格是什么樣的,變量是怎么取名的,程序是怎樣調(diào)試的等等。
這幾個(gè)都是軟件領(lǐng)域里面的一部分。其中軟件工程是現(xiàn)在最為矚目,也是目前造就了國內(nèi)教育部直屬的3,4十所軟件學(xué)院他的一個(gè)主要專業(yè)。為什么會(huì)提出軟件學(xué)院,當(dāng)然目前來說這個(gè)情況和當(dāng)時(shí)是稍有差異的。在五年前,提出軟件學(xué)院或者軟件工程專業(yè)的主要目的是因?yàn)閲鴥?nèi)對(duì)于軟件開發(fā),他的這個(gè)管理水平遠(yuǎn)遠(yuǎn)低于國外的,但是中國在軟件開發(fā)技術(shù),包括編程語言,編程技巧這樣的高手也不少,但是為什么國內(nèi)的軟件在國際上打不響。結(jié)果很多專家就認(rèn)為軟件人才匱乏,應(yīng)該用一種非常的手段對(duì)某個(gè)專業(yè)的人員密集培養(yǎng),突然之間大規(guī)模的從大學(xué)里面培養(yǎng)一批能夠做軟件工程的人員,不僅要會(huì)技術(shù),而且還要會(huì)管理。目前來說軟件學(xué)院國家辦了35所,各個(gè)省也相應(yīng)在辦軟件學(xué)院。軟件學(xué)院和計(jì)算機(jī)學(xué)院可能是一起的,也可能不是一起的,但是軟件學(xué)院肯定會(huì)有一個(gè)軟件工程專業(yè),它源于:軟件發(fā)展到現(xiàn)在,靠單兵作戰(zhàn)是不行的,當(dāng)多個(gè)人在合作過程當(dāng)中怎么樣有效的進(jìn)行管理,怎么樣對(duì)企業(yè)的一些成果進(jìn)行積累,這都是從軟件工程角度上仔細(xì)地進(jìn)行管理。所以目前來說 軟件工程是在計(jì)算機(jī)軟件學(xué)科里面是比較活躍的,同時(shí)這門課也是比較難教的。有很多這種經(jīng)驗(yàn)公式,經(jīng)驗(yàn)公式?jīng)]有很科學(xué)的依據(jù),還有為什么能推導(dǎo)出這個(gè)軟件的復(fù)雜度,為什么這個(gè)函數(shù)帶得子函數(shù)不能太多,太少了你要說出個(gè)理由來,有一些科學(xué)依據(jù)軟件工程上不是特別多,它是一些先驗(yàn)性的經(jīng)驗(yàn)總結(jié),所以各種軟件工程的課本和書籍都有所不同。
當(dāng)然在軟件工程門類講得比較多,寫得比較有趣的是:人月神話。多少人多少月,這是由老外寫的一本書,這本書有中文版,講起來像講故事一樣。
當(dāng)然我們這本課程會(huì)把軟件工程它的整個(gè)學(xué)科和目前的一些發(fā)展作一些介紹,但是每一項(xiàng)都不會(huì)特別的深入。
大概要講得內(nèi)容是第二到第八章一般來說成為傳統(tǒng)的結(jié)構(gòu)化的軟件工程,9 10 11 12介紹的是面向?qū)ο蟮能浖こ?,面向?qū)ο蟮能浖こ毯蛡鹘y(tǒng)的結(jié)構(gòu)化的軟件工程是相輔相成的,并沒有說面向?qū)ο蟮能浖こ叹透呒?jí)一些,也不是說傳統(tǒng)的結(jié)構(gòu)化的軟件工程就低級(jí)一些,都有在使用,而且也不能認(rèn)為某一個(gè)就能代替另外一種,通常來說在大學(xué)里面或軟件工程專業(yè)里面這門課是一門基礎(chǔ)課,其中有一門課專門講可行性,另外還有一門課講需求分析,總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)往往會(huì)合成一門課來上,分在軟件設(shè)計(jì)里面,另外測試也是獨(dú)立一門課程,然后面向?qū)ο蟮姆椒ㄕ摚嫦驅(qū)ο蠓治鯫OA,面向?qū)ο笤O(shè)計(jì)OOD一般會(huì)合在一起上稱為OOAD,我們這門課程只是入門的一門課程,如果大家有興趣,對(duì)里面的章節(jié)要進(jìn)一步了解的話,可以去閱讀一些相關(guān)的資料和教材。由于我們是工業(yè)工程專業(yè),不是軟件工程專業(yè),并不會(huì)對(duì)每個(gè)章節(jié)進(jìn)行展開。
那么既然軟件工程能被提高到一個(gè)學(xué)院,或者一個(gè)國家要大力發(fā)展的一個(gè)高度。那肯定有它產(chǎn)生發(fā)展的原因。我們說它產(chǎn)生發(fā)展的原因主要來自于軟件危機(jī)。
軟件危機(jī)它是在上個(gè)世紀(jì)70年代之后人們逐漸發(fā)現(xiàn),在軟件開發(fā)過程中,傳統(tǒng)的認(rèn)為軟件開發(fā)嘛不就是和根傳統(tǒng)的工業(yè)化設(shè)計(jì)一樣的,我開發(fā)一個(gè)軟件和制造一個(gè)玩具有什么區(qū)別呢?隨著人們軟件行業(yè)的發(fā)展,確實(shí)發(fā)現(xiàn)是有區(qū)別的。軟件行業(yè)的產(chǎn)生本來就比較晚,何況早期的計(jì)算機(jī)行業(yè)只有計(jì)算機(jī)業(yè),像IBM等公司生產(chǎn) 設(shè)計(jì)等大型計(jì)算機(jī),然后就賣掉。賣的時(shí)候就會(huì)發(fā)現(xiàn)它的客戶往往對(duì)它的計(jì)算機(jī)有這樣那樣的要求,所以他們這些企業(yè)往往會(huì)和軟件部門給客戶定制一些軟件,后來他們就發(fā)現(xiàn)原來給客戶定制軟件這個(gè)過程,有吃力不討好的過程。客戶要求很多,而且還會(huì)經(jīng)常變化,另外軟件又看不見摸不著,不就是做在軟盤里面被人考走嗎,那么軟件到底能不能賺錢呢,由此人們?cè)絹碓接X得軟件業(yè)是一個(gè)越做越賠錢,就是說軟件不是以行業(yè),世界上沒有人相信軟件可以賺錢。到60年代時(shí),人們逐漸發(fā)現(xiàn)我也投入了相當(dāng)多的人力和成本來開發(fā)的,為什么就不能把它作為有價(jià)值,所以開始了軟件的交易,就是把你的軟件和我的軟件來進(jìn)行交換。IBM公司開始發(fā)現(xiàn),他的計(jì)算機(jī)賣給某些用戶的時(shí)候,用戶要求擁有的軟件功能和可能賣的另外一臺(tái)軟件的功能差異太大,既然差異太大,那么成本也就有差異。但是當(dāng)時(shí)的人們又不能接受,這軟盤考過來的東西能賣錢。后來IBM公司向社會(huì)宣布,以后IBM的所有硬件和軟件要分開估價(jià),軟件要正式賣錢。隨著IBM這些主流的計(jì)算機(jī)硬件廠家的推進(jìn),軟件逐漸逐漸變成了錢,變成了有價(jià)值的東西。70年代初有了軟件行業(yè)。早期的軟件開發(fā)需要一年兩年,現(xiàn)在開發(fā)大部分需要幾周。以前叫人月,12個(gè)人月,12個(gè)人干一個(gè)月,或者1個(gè)人干12個(gè)月?,F(xiàn)在叫人周,要大概5個(gè)人2周,是個(gè)人干一周,所以現(xiàn)在開發(fā)軟件以星期為基本的度量。軟件開發(fā)的效率是提升了。但是人們發(fā)現(xiàn)軟件開發(fā)和傳統(tǒng)的生產(chǎn)過程有巨大的差異,以至于人們對(duì)軟件行業(yè)產(chǎn)生一些恐懼。人們稱為軟件危機(jī)。軟件危機(jī)主要表現(xiàn)在:
1. 不準(zhǔn)確。比如說我們要生產(chǎn)一個(gè)玩具,那么這個(gè)玩具可能需要多少時(shí)間,多少物料,是可以預(yù)計(jì)的。軟件這東西是不可預(yù)計(jì)的,開發(fā)成本可能很高也可能很低。為什么會(huì)出現(xiàn)這種情況能?你比如說醫(yī)療管理系統(tǒng),門診的管理,掛號(hào),藥品,劃價(jià),收款等等,有可能還包括住院系統(tǒng),藥房的藥品管理系統(tǒng),那么這個(gè)軟件開發(fā)的成本可能是零成本,為什么呢?因?yàn)槲医o第一醫(yī)院做的,那么第二醫(yī)院做的時(shí)候把他稍微改一改,或者根本不用改。這種開發(fā)成本也可能會(huì)很大,原因可能有各種因素引起,如發(fā)票格式不一樣,連的網(wǎng)絡(luò)不一樣,導(dǎo)致要重新開發(fā)軟件,甚至他的業(yè)務(wù)流程都不一樣,如他不需要掛號(hào)的,可能在醫(yī)生看完病,在買藥的時(shí)候順便付掛號(hào)費(fèi),如果出現(xiàn)這些情況的時(shí)候,那么這個(gè)軟件開發(fā)成本是需要重新評(píng)估。
另外軟件開發(fā)進(jìn)度也往往是不準(zhǔn)確的。估計(jì)開發(fā)進(jìn)度的往往是項(xiàng)目管理人員,項(xiàng)目管理人員想如果我去干,有五個(gè)星期就干完了。關(guān)鍵是有沒有三個(gè)我呢?沒有。下面的員工不一定像你那樣干,第二,下面的員工可能出現(xiàn)一些編程問題,他過不去,沒辦法繼續(xù)往下進(jìn)行;另外更神奇的情況,軟件企業(yè)里面跳槽的人來說,三天兩頭的再跳,一般大學(xué)畢業(yè)以后兩年肯定有人會(huì)跳一次,幾年之內(nèi)跳幾次的人比比皆是,為什么呢?軟件行業(yè)互相挖墻腳的情況。結(jié)果碰巧有人跳走了,你這個(gè)軟件進(jìn)度怎么辦,所以說軟件進(jìn)度的受限很多,還可能會(huì)有意外的情況發(fā)生,比如說某個(gè)程序員生病了,出交通意外了等等,軟件開發(fā)過程中不像傳統(tǒng)的一些行業(yè),有人生病了,可以較其他人頂,可替換性強(qiáng)。在軟件開發(fā)過程中,軟件開發(fā)人員可替換性不強(qiáng),你要把一個(gè)人隨便換掉,通常來說要有一個(gè)磨合期,新手要有一個(gè)接手,上路的過程,接手的過程往往需要兩三個(gè)月,一個(gè)月肯定是不行,兩個(gè)月是可能的,三個(gè)月是應(yīng)該的,如果他完全工作比較多,或者比較專業(yè),六個(gè)月都是正常的。這也是在軟件企業(yè)里面,許多老總都會(huì)說辦這個(gè)軟件公司,我不就是給這個(gè)員工打工嗎?成天想的是怎樣把這個(gè)員工給養(yǎng)活了。所以這也是軟件危機(jī)里面基本的表現(xiàn),他投入的成本比較多。軟件企業(yè)的人員工資是比較高的。軟件危機(jī)從它的誕生到現(xiàn)在,還是有一些發(fā)展趨勢的,至少目前軟件自動(dòng)化程度還是比較高的,以前是手工勞動(dòng),需要的人員的確比較高,目前隨著高校的擴(kuò)招,很多的專業(yè),自動(dòng)化,電器,都在向著方面靠。像現(xiàn)在找工作,計(jì)算機(jī)專業(yè)他未必能找到好的工作,不是人員過剩,還是高水平的一些程序員,或者說有軟件工程概念的,有能夠進(jìn)行項(xiàng)目管理的人還是比較欠缺的。傳統(tǒng)的軟件共有各種定義:不管是啊一種定義,它基本上都透漏出一個(gè)觀點(diǎn):軟件工程它是一系列的措施和,讓軟件發(fā)開這種特殊的生產(chǎn)形式規(guī)范化。
通常在軟件工程里面把軟件的生命周期劃分為:定義階段,開發(fā)階段,維護(hù)階段。
定義階段通常來說只是計(jì)劃,可以細(xì)分為:問題定義,可行性分析,這個(gè)項(xiàng)目到底是做還是不做,值不值得做。需求分析等于是項(xiàng)目啟動(dòng)的標(biāo)記。
第二階段是開發(fā)階段,一般在需求分析之后可以進(jìn)行,需求分析通常是跨兩個(gè)階段的,有些時(shí)候把它劃在定義階段,分清問題的定義;有時(shí)候把它歸在開發(fā)階段,這樣定義階段只是做個(gè)計(jì)劃,一旦這個(gè)計(jì)劃通過了,這個(gè)項(xiàng)目就啟動(dòng)了。需求分析等于是項(xiàng)目啟動(dòng)的標(biāo)記。需求分析之后就進(jìn)行概要設(shè)計(jì),詳細(xì)設(shè)計(jì),這些都稱為軟件設(shè)計(jì)。設(shè)計(jì)之后再編碼,所以在軟件工程里面他要求的是先有文檔,再寫代碼。最好是以后代碼也不用寫了,只要有一個(gè)文檔,計(jì)算機(jī)就會(huì)把代碼寫出來,也不用測試了,它已經(jīng)幫你搞好了,這種工具目前還比較少。但是至少目前來說,自動(dòng)化工具已經(jīng)覆蓋了測試,現(xiàn)在已經(jīng)很少有人寫大規(guī)模的測試軟件。因?yàn)槎加鞋F(xiàn)成的測試工具,不過測試?yán)锩娴陌咐龓爝€是要自己寫,但大部分測試的軟件如果有明確的測試流程,計(jì)算機(jī)都可以幫你來寫。
以前的測試都需要高水平的程序員來寫,現(xiàn)在的測試都是進(jìn)了企業(yè)之后第一步就是讓你做測試,為什么呢?通過讓你做測試,你這個(gè)員工的技術(shù)能力到底怎么樣,有沒有水平,能不能跟得上企業(yè)的運(yùn)作,所以很多企業(yè)招一些實(shí)習(xí)生,或者在實(shí)習(xí)期間會(huì)把一些員工先安排在測試部門,如果安排在開發(fā)組,萬一你出什么問題,通過測試可以了解到看你到底適合什么樣的崗位。目前來說企業(yè)里面很重視測試,但實(shí)際上不需要投入大量的人力,以前是由于沒有自動(dòng)化測試工具,所以工作量比較大。測試完成就可以把軟件成交,成交之后就開始進(jìn)入軟件運(yùn)行和維護(hù)階段。這就是軟件生命周期,它的周期時(shí)間比較長,所以現(xiàn)在的面向?qū)ο筌浖こ谭Q生命周期的方法稱為傳統(tǒng)的軟件工程,我們有時(shí)候稱它為結(jié)構(gòu)化的軟件工程。在可行性分析里面,會(huì)經(jīng)常使用到許多工具。軟件公司開發(fā)的軟件漏洞比較少的時(shí)候就迫不及待的推向市場,它要首先占領(lǐng)市場。所以我們看到許多軟件能夠做在線的升級(jí),就是因?yàn)槿绻麤]有在線升級(jí)的話,這個(gè)軟件怎么補(bǔ)補(bǔ)丁呢?必須要留有后門,留有給自己做維護(hù)的方式。
那么在可行性分析報(bào)告里面用得比較多的是系統(tǒng)流程圖。系統(tǒng)流程圖反映的是信息在各個(gè)部分之間流動(dòng)的情況。就是我這個(gè)數(shù)據(jù)怎么樣進(jìn)來,怎么樣經(jīng)過,怎么樣處理,怎么樣加工,完成什么樣的情況。所以系統(tǒng)流程圖它和程序流程圖是不一樣的。系統(tǒng)流程圖是給用戶能看得明白,它是面向用戶而不是面向程序的,它只是把現(xiàn)有的工作流程描述出來。
比如說,事物,來了一個(gè)事物之后,根據(jù)事務(wù)的不同,它要對(duì)庫存清單的程序進(jìn)行操作,那庫存清單的程序會(huì)寫數(shù)據(jù)庫文件,庫存清單主文件,同時(shí)會(huì)生成一個(gè)定貨信息,根據(jù)訂貨信息產(chǎn)生一個(gè)報(bào)告,由訂貨生成報(bào)告產(chǎn)生訂貨報(bào)告。
所以作為可行性分析它的對(duì)于系統(tǒng)流程圖的使用是比較的粗線條的,因?yàn)橄到y(tǒng)流程圖主要在研究,給出用戶級(jí)別的,如果將來大家要做ERP,就會(huì)涉及到對(duì)系統(tǒng)流程圖進(jìn)行修改,而我們現(xiàn)在講軟件工程,系統(tǒng)流程圖是一個(gè)現(xiàn)在已經(jīng)存在的模式,對(duì)這種系統(tǒng)模式是不修改的,我們只是想用軟件把這種模式實(shí)現(xiàn)。ERP是,如果作企業(yè)資源計(jì)劃,就會(huì)怎么樣判定一個(gè)系統(tǒng)流程是合理的,是最優(yōu)的,怎么樣進(jìn)行優(yōu)化。同樣是系統(tǒng)流程圖,不同的課程作用是不一樣的。
在可行性分析里面還會(huì)用到一個(gè)最重要的概念,數(shù)據(jù)流圖。這個(gè)數(shù)據(jù)流圖可以說是整個(gè)軟件工程里面最核心的概念。不僅僅用于傳統(tǒng)結(jié)構(gòu)化的軟件工程,還用于現(xiàn)在的面向?qū)ο蟮能浖こ蹋苍诖罅康氖褂脭?shù)據(jù)流圖。
數(shù)據(jù)流的基本符號(hào)。
通常來說數(shù)據(jù)流圖為了他的清晰起見,可以采用層次的結(jié)構(gòu)來描述,會(huì)有頂層的數(shù)據(jù)流圖,把頂層的數(shù)據(jù)流圖逐層逐層的分解,分解到更細(xì),所以不同的層次看到不同的情況。最頂層的類似于設(shè)計(jì),最底層類似于實(shí)現(xiàn),在企業(yè)里面通常作頂層數(shù)據(jù)流圖的是技術(shù)部門經(jīng)理,中間環(huán)節(jié)項(xiàng)目開發(fā)組的組長,最底層由程序員來完成。
前面我們講了可行性分析過程中它是利用企業(yè)里面各個(gè)部門的人員,然后在一定時(shí)間內(nèi)對(duì)項(xiàng)目進(jìn)行評(píng)估,認(rèn)為這個(gè)項(xiàng)目是可行還是不可行,如果可行的話,大概有哪幾種解決方法,大概的進(jìn)度計(jì)劃是怎么樣的,數(shù)據(jù)流圖是怎么樣的,它的盈利模式等等,作為可行性分析最終的結(jié)果會(huì)報(bào)告給企業(yè)的決策層,到底是做還是不做。一旦確定就有兩種情況,不做,到此為止,或者是往后延,那么可行性分析小組馬上就地解散,或者有一個(gè)人繼續(xù)跟蹤這個(gè)項(xiàng)目。當(dāng)然有一些企業(yè)有比較大的規(guī)模,有一些戰(zhàn)略部門的話,專做一些可行性研究的時(shí)候爭取調(diào)查。如果要做這個(gè)項(xiàng)目,是不是馬上要?jiǎng)佑酶鞣N人力去開始寫程序呢?不是。從軟件工程角度上看,一個(gè)項(xiàng)目如果已經(jīng)開始啟動(dòng),那么需要的是給這個(gè)項(xiàng)目進(jìn)行分析。確定這個(gè)項(xiàng)目啟動(dòng)了,這是項(xiàng)目要從零開始,之前的可行性分析只能作為一個(gè)參考。你光看可行性分析里面有一些數(shù)據(jù)流圖,準(zhǔn)確嗎?通常是不準(zhǔn)確的。原因在于可行性分析的時(shí)間太短了,很多的內(nèi)容只能是粗略的估計(jì),所以在這個(gè)過程中啟動(dòng)項(xiàng)目的第一過程就是要進(jìn)行需求分析。
需求分析主要的任務(wù)就是:確定對(duì)系統(tǒng)的綜合要求;分析系統(tǒng)的數(shù)據(jù)要求;導(dǎo)出系統(tǒng)的邏輯模型;修正系統(tǒng)的開發(fā)計(jì)劃。
那它的系統(tǒng)功能要求是什么?
那么這么些的要求通常來說在軟件公司是不能了解到的,所以需求分析的一個(gè)特點(diǎn)就是人要派出去,派到現(xiàn)場,派到具體要實(shí)施的這個(gè)軟件項(xiàng)目的所在地進(jìn)行調(diào)研,只有做了調(diào)研,你才能知道這個(gè)系統(tǒng)它的要求,周圍環(huán)境如何,網(wǎng)絡(luò)環(huán)境,它的計(jì)算機(jī)怎樣,它的使用的用戶有哪些,是什么一種類別,業(yè)務(wù)流程,甚至你可以把目標(biāo)單位的一些單據(jù),表單等等拿到。
所以需求分析重要的一點(diǎn)是選相應(yīng)的人員去進(jìn)駐一些企業(yè)。選什么樣的人員呢?通常需求分析可以選兩種人員,一種是做技術(shù)的,一種是做市場的。所以通常來說會(huì)從技術(shù)部門選幾個(gè)人,從市場部門選幾個(gè)人。為什么不全是技術(shù)部門的人去呢?因?yàn)榧夹g(shù)部門人員的交流能力相對(duì)來說要比市場部門的人員要差得多。尤其是我們看到計(jì)算機(jī)專業(yè)人員,他跟別人談,經(jīng)常用計(jì)算機(jī)的專業(yè)術(shù)語來問,這時(shí)候市場人員在的時(shí)候它就會(huì)解釋一下,這個(gè)一般純技術(shù)人員是不擅長的。另外一個(gè)在需求分析過程中經(jīng)常需要的是跟用戶良好的交流,這交流可能包括跟用戶交談,座談,調(diào)研,那么這個(gè)過程也是需要市場人員的參與。因此說一般由技術(shù)人員和市場人員同時(shí)參與,來進(jìn)行一些需求的獲取。
分析系統(tǒng)的數(shù)據(jù)要求,主要要建立系統(tǒng)的概念模型,E-R圖和實(shí)體關(guān)系圖;另外還有形象地描繪數(shù)據(jù)結(jié)構(gòu),包括層次方框圖,Warnier土,IPO圖。另外還要進(jìn)行數(shù)據(jù)結(jié)構(gòu)的規(guī)范。
因?yàn)樾枨蠓治龅沫h(huán)節(jié)在整個(gè)軟件工程里面可以認(rèn)為是至關(guān)重要的。開頭開得好不好,對(duì)整個(gè)項(xiàng)目的進(jìn)行就看這個(gè)開頭。
需求分析做完以后要寫一個(gè)需求規(guī)格說明書,對(duì)后面的軟件設(shè)計(jì)來說,一般認(rèn)為需求規(guī)格說明書做完了,需求就到此為止,不再變化。作為設(shè)計(jì)人員,它是不到現(xiàn)場的,不和客戶打交道的,設(shè)計(jì)人員如此,編程人員如此,測試人員如此。那么他們?cè)趺粗烙脩裟沁叺囊笤趺礃拥?,它就看需求?guī)格說明書。所以說需求分析是在整個(gè)系統(tǒng)環(huán)節(jié)里面投入的時(shí)間,投入的人力都是最大的,那么通過作的需求分析,后面的人就把需求規(guī)格說明書作為依據(jù)做后續(xù)的設(shè)計(jì),所以需求規(guī)格說明書一旦寫了,就不能隨意修改,一旦修改了需求分析,后面的總體設(shè)計(jì)要改,詳細(xì)設(shè)計(jì)要改,程序要重新編,測試要重新做,維護(hù)人員也要重新寫維護(hù)文檔,這樣的話代價(jià)太大了。因此在需求分析過程中必須要了解各種方面的信息,盡可能的了解完整。一般來說,一旦需求分析結(jié)束了,很少會(huì)再重新做,因?yàn)樘珡?fù)雜了。而且做需求不是說需求在哪你拿過來就可以了,而是需要你去挖掘它,需要交流,跟聊天的過程中慢慢了解到對(duì)方希望是什么樣的,對(duì)方的數(shù)據(jù)結(jié)構(gòu)里面是什么樣的,很多認(rèn)為當(dāng)然的事情,由于行業(yè)的關(guān)系,你必須去深入地了解。這也就是需求分析為什么是專門的一門課程。
需求分析實(shí)際上就是你派出去幾個(gè)人,那幾個(gè)人帶回來一個(gè)需求規(guī)格說明書,后面的所有設(shè)計(jì)人員只要有問題它就要去看需求規(guī)格說明書,說明書里面應(yīng)該能把它所有要求的問題回答完。這也就是需求稱為分析,后面的過程稱為設(shè)計(jì),換言之,再做需求之前你的目標(biāo)是不明確的,是模糊的,這個(gè)軟件大概是什么樣的。分析的透不透徹,顯示出分析人員它的技術(shù)水平,當(dāng)然設(shè)計(jì)人員能夠把你分析的結(jié)果最終能實(shí)現(xiàn),所以說設(shè)計(jì)人員是偏技術(shù)的工作,需求分析人員包括管理,市場,技術(shù),分析調(diào)查的綜合性的工作。許多企業(yè)里面它的需求分析會(huì)選一些精干的人來做。怎么樣讓對(duì)方回答我的問題又不會(huì)讓人很煩,這是需要技巧的。
導(dǎo)出邏輯模型。
需求分析過程是一個(gè)比較細(xì)致的工作,可能跟原來的粗略的可行性計(jì)劃有差異,這時(shí)候可能要重新估算,重新估算軟件開發(fā)進(jìn)度。需求分析最終能確定這個(gè)軟件規(guī)模如何,難度和計(jì)劃進(jìn)度如何等等,如果修正的數(shù)量和原來差異很大要及時(shí)匯報(bào),要求重新評(píng)估原來的可行性分析。實(shí)際上‘需求分析的任務(wù)’就是借助當(dāng)前的邏輯模型導(dǎo)出目標(biāo)系統(tǒng)的邏輯模型,解決目標(biāo)系統(tǒng)的“做什么“的問題。
如果這個(gè)系統(tǒng)原來有一個(gè)相似的系統(tǒng),現(xiàn)在想開發(fā)一個(gè)新軟件。用戶單位正在使用,原來系統(tǒng)模型化,確認(rèn)原來是怎么做的,抽象出邏輯模型,做什么,然后通過理解這個(gè)用戶對(duì)于系統(tǒng)的使用過程,以及他希望的一些內(nèi)容,導(dǎo)出新的系統(tǒng)的邏輯模型和物理模型,最終目標(biāo)系統(tǒng)。在這個(gè)過程中,用戶是非常難以提出專業(yè)性的語言,想怎么樣做這個(gè)東西,目標(biāo)系統(tǒng)如何,用戶可能說不清楚,那么你可以做一個(gè)仿真的原型系統(tǒng),界面,風(fēng)格,流程等等。
第一范式:數(shù)據(jù)是所有數(shù)據(jù)都會(huì)出現(xiàn)。
第二范式:有一些數(shù)據(jù)它是具有唯一性。比如說,學(xué)生的學(xué)號(hào),只要學(xué)號(hào)不一樣,是關(guān)鍵字,姓名一樣,性別一樣,出生日期一樣,都是非關(guān)鍵字。
第三范式:比如非關(guān)鍵字有生日,年齡。
3.7 其他圖形工具
在需求分析過程中會(huì)用到的其他的輔助工具。前面我們講到了實(shí)體關(guān)系圖來分析各個(gè)實(shí)體之間的關(guān)系,關(guān)系的屬性,實(shí)體的屬性,來了解涉及到的一些實(shí)體,然后使用數(shù)據(jù)流圖來描述信息的流動(dòng)過程,由于數(shù)據(jù)流圖里面帶有數(shù)據(jù)字典,可以描述數(shù)據(jù)流圖里面的數(shù)據(jù)元素,傳輸?shù)男畔⒘鞯母袷?,信息流的?nèi)容。
前面我們講了結(jié)構(gòu)化軟件設(shè)計(jì)的方法,還補(bǔ)充了關(guān)于人機(jī)交互界面設(shè)計(jì)的一些細(xì)節(jié),通過這些內(nèi)容我們可以看到原來在系統(tǒng)設(shè)計(jì)過程中需要了解數(shù)據(jù)庫是怎么設(shè)計(jì)的,軟件模塊怎樣劃分的,對(duì)于我們后面的軟件設(shè)計(jì)來說,還要做什么呢?我們說還要作詳細(xì)設(shè)計(jì)。并不是說把軟件設(shè)計(jì)到模塊一級(jí)這個(gè)軟件就結(jié)束了。而是必須要設(shè)計(jì)到每個(gè)模塊它里面實(shí)施的細(xì)節(jié),那一些語句怎么樣去設(shè)計(jì),那些語句怎么樣實(shí)現(xiàn)功能,這個(gè)過程我們稱作詳細(xì)設(shè)計(jì)。詳細(xì)設(shè)計(jì)的文檔可能比你寫的代碼的長度還要長,但是詳細(xì)設(shè)計(jì)是一個(gè)必不可少的環(huán)節(jié)。像中國很多企業(yè)作外包的,通常來說,外包拿過來的就是詳細(xì)設(shè)計(jì)的說明書,然后你就要進(jìn)行代碼化,測試。
詳細(xì)設(shè)計(jì)它是一個(gè)面向編程語言的設(shè)計(jì),你拿到詳細(xì)設(shè)計(jì)的人,他通常來說他看到的是模塊和子模塊。我們前面說了他的基本流程是:由項(xiàng)目經(jīng)理做總體設(shè)計(jì),然后總體設(shè)計(jì)分成幾個(gè)大的子系統(tǒng),每個(gè)子系統(tǒng)交給幾個(gè)項(xiàng)目組的組長去設(shè)計(jì),形成項(xiàng)目總體組,總體組設(shè)計(jì)完了之后,把項(xiàng)目進(jìn)行分工,某一個(gè)項(xiàng)目小組作其中的哪兩個(gè)模塊,就項(xiàng)目小組長要完成的時(shí)候它會(huì)把這兩個(gè)模塊里面的子模塊和函數(shù)分開給不同的設(shè)計(jì)人員來實(shí)現(xiàn),作為詳細(xì)設(shè)計(jì)的人員它是設(shè)計(jì)人員里面最底層的人員,他看不見整個(gè)系統(tǒng)的概況,他不知道這個(gè)項(xiàng)目是做什么的,甚至只知道他這個(gè)子系統(tǒng)要完成什么樣的功能,他還知道他的子系統(tǒng)跟別人的數(shù)據(jù)接口是什么樣的,這些都由總體設(shè)計(jì)組來定。他要完成一個(gè)模塊和模塊里面的子模塊,或子模塊到函數(shù)一級(jí),函數(shù)到函數(shù)里面語句這一級(jí),如果它是寫程序的話,怎么樣用程序設(shè)計(jì)語言來設(shè)計(jì)它。
當(dāng)然詳細(xì)設(shè)計(jì)要求的就是怎樣用結(jié)構(gòu)化的程序設(shè)計(jì)的方法來實(shí)現(xiàn)前面概要設(shè)計(jì)里面的某些功能,所以我們看到詳細(xì)設(shè)計(jì)人員往往就是后面的編程人員,所以詳細(xì)設(shè)計(jì)并不是很高深的東西。在詳細(xì)設(shè)計(jì)過程中需要使用哪些結(jié)構(gòu)化的方法呢,主要包括以下幾種:
自頂向下逐步求精的方法,先粗后細(xì),逐步完善。
同時(shí)這個(gè)結(jié)構(gòu)設(shè)計(jì)具有單入口、單出口的控制結(jié)構(gòu),所以它沒有GO TO語句。有五種基本的控制結(jié)構(gòu):
順序結(jié)構(gòu):上一條語句執(zhí)行完了執(zhí)行下一條語句。選擇結(jié)構(gòu):IF為條件,條件滿足了,執(zhí)行某一分支,條件不滿足了,執(zhí)行另一分支。
先判斷循環(huán)結(jié)構(gòu):先判斷某一條件是否滿足,如果滿足進(jìn)行循環(huán),循環(huán)一次之后再判斷,再循環(huán),一旦不滿足條件,跳出去。后判斷循環(huán)結(jié)構(gòu):先執(zhí)行循環(huán)體一次然后判斷,如果滿足條件再執(zhí)行循環(huán)體,否則的話跳出去。
多選擇結(jié)構(gòu):選擇的時(shí)候可以選擇某個(gè)值,但某個(gè)值為1的時(shí)候做什么,為2的時(shí)候做什么,CASE結(jié)構(gòu)。
這是在詳細(xì)設(shè)計(jì)的里面必須遵循的結(jié)構(gòu),有些同學(xué)認(rèn)為是不是還少了一種遞歸,不是的,遞歸程序在什么地方排除掉了呢?在概要設(shè)計(jì)里面其實(shí)已經(jīng)被排除掉了,概要設(shè)計(jì)里面就認(rèn)為軟件的結(jié)構(gòu)是層次的結(jié)構(gòu),調(diào)用關(guān)系都是從上往下調(diào)用哪里來的遞歸呢?所以遞歸程序一般在軟件工程里面極少極少使用,除非是迫不得已才會(huì)在概要設(shè)計(jì)里面留下,在詳細(xì)設(shè)計(jì)里面留下的都是更加詳細(xì)的結(jié)構(gòu)。
下面是關(guān)于在軟件設(shè)計(jì)過程中用的比較多的內(nèi)容,用戶界面設(shè)計(jì).那么用戶界面設(shè)計(jì)通常來說會(huì)在幾個(gè)地方出現(xiàn):
一個(gè)是在需求分析里面,可能會(huì)在開發(fā)原型系統(tǒng)時(shí)候需要使用用戶界面設(shè)計(jì),你要給用戶看你的原型系統(tǒng),用戶并不關(guān)系你的數(shù)據(jù)在什么地方存儲(chǔ)的,加工過程你可能在原型系統(tǒng)里面也沒有,用戶看到的是模擬的人機(jī)交互界面,所以需求分析里面可能會(huì)出現(xiàn)用戶界面設(shè)計(jì)。
同時(shí)在系統(tǒng)設(shè)計(jì)過程中也需要進(jìn)行一個(gè)人機(jī)交互的設(shè)計(jì),所以人機(jī)交互界面設(shè)計(jì)并不是屬于計(jì)算機(jī)技術(shù)非常強(qiáng)的一個(gè)技術(shù)。但是他考慮到怎么樣適合于用戶來使用,所以在一些企業(yè)里面有一些開發(fā)人員專門作人機(jī)交互的。用戶界面(GUI 圖形用戶界面)這些都是用戶最看得見摸得著的東西,一個(gè)軟件的質(zhì)量好不好當(dāng)然跟軟件的設(shè)計(jì)有關(guān),而一個(gè)軟件是否被用戶認(rèn)為好不好,那是跟用戶對(duì)軟件的評(píng)價(jià)有關(guān),如果軟件質(zhì)量沒有問題,用戶對(duì)軟件的評(píng)價(jià)主要來源于用戶設(shè)計(jì),所以用戶設(shè)計(jì)是非常重要的。
用戶界面應(yīng)具備的特性:
作為用戶界面設(shè)計(jì)來說最重要的特征是可使用性,因?yàn)橛脩艚缑媸墙o用戶看的一個(gè)主要接口,所以用戶對(duì)用戶界面是否能接受,這是最重要的。
這里面涉及到一個(gè)問題就是使用是否簡單,以及用戶界面里面的術(shù)語是否是標(biāo)準(zhǔn)化或者是一致化的。在一個(gè)軟件里面或有些地方稱他為用戶界面后來又冒出來了個(gè)人機(jī)交互,這是兩個(gè)概念還是一個(gè)概念。當(dāng)然我們看到給用戶的使用說明書一定采用標(biāo)準(zhǔn)化的使用方式。
第三個(gè)要擁有Help的功能,當(dāng)用戶發(fā)現(xiàn)使用過程中有問題的時(shí)候,它能夠看幫助,一個(gè)是離線幫助,一個(gè)是在線幫助。用戶可以登上你得公司或企業(yè)的網(wǎng)站,找到企業(yè)網(wǎng)站維護(hù)人員進(jìn)行溝通,或者用戶干脆打你得客戶服務(wù)電話,這種打電話的方式成本消耗比較大,所以很多地方會(huì)采用在線方式,就是在互聯(lián)網(wǎng)上通過寫字板,通過討論區(qū),通過論壇來回答用戶提出的問題。
第四個(gè)是快速的系統(tǒng)響應(yīng),就是你這個(gè)軟件是否響應(yīng)快,同時(shí)你的軟件要求的系統(tǒng)成本比較低,就是在比較差的計(jì)算機(jī)上你的軟件要能跑起來。
第五個(gè)是用戶界面應(yīng)具有容錯(cuò)能力。你要求用戶輸入一個(gè)郵編,但如果用戶不小心輸入了ABC呢,你要告訴他輸錯(cuò)了,重新輸,你不能說點(diǎn)了一下軟件就死掉了,重起計(jì)算機(jī)了,那這樣的軟件用戶肯定是不敢用的。
靈活性: 首先一個(gè)是算法的可隱可顯性。用戶可以不關(guān)心你這里面數(shù)據(jù)是怎么處理的,但是你也可以通過某些方式讓用戶了解你的處理過程是在處理哪些數(shù)據(jù)。
第二個(gè)靈活性是用戶可以根據(jù)需要制定和修改界面方式。那我們看到向一些電子郵件,像一些網(wǎng)站,它可以給你一些風(fēng)格讓你自己設(shè)計(jì),甚至像一些聊天室你可以更該背景啊,自己做一些圖標(biāo),等等。這樣用戶就會(huì)覺得不錯(cuò),可定制性和個(gè)性比較突出。
第三個(gè)是能夠按照用戶的希望和需要,提供不同詳細(xì)程度的系統(tǒng)響應(yīng)信息。比如說用戶在進(jìn)行網(wǎng)絡(luò)螞蟻下載的時(shí)候,我可以看他每一個(gè)鏈接的情況,也可以看下載的速度,還可以看到有一個(gè)小圖標(biāo)在跑。用戶他對(duì)這個(gè)事情的關(guān)心可能不一樣。
第四個(gè)是與其他軟件系統(tǒng)應(yīng)有標(biāo)準(zhǔn)的界面(指接口)為使用戶接口具有一定的靈活性,需要付出代價(jià),而且有可能降低軟件系統(tǒng)的運(yùn)行效率。比如說你要設(shè)計(jì)CAD軟件,那你必須要提供和ajs的接口,ajs是CAD軟件的標(biāo)準(zhǔn)格式。比如說Word,它提供了rtf接口,rtf可以轉(zhuǎn)化成其他格式。
復(fù)雜性和可靠性:用戶界面的規(guī)模和組織的復(fù)雜程度就是界面的復(fù)雜性。通常認(rèn)為界面可以越簡單越好。但不是把所有功能和界面安排成線性序列就一定簡單。用戶界面的可靠性是指無故障使用的間隔時(shí)間。
用戶界面設(shè)計(jì)的任務(wù)分析:
用戶界面通常是和軟件需求分析過程中同步進(jìn)行的,你要知道用戶界面是給用戶用的,你回到軟件公司讓系統(tǒng)分析人員去做用戶界面,他不知道用戶有什么要求,只能去問需求分析人員他們對(duì)用戶界面有什么要求,他們對(duì)計(jì)算機(jī)熟悉程度如何,他敲鍵盤快不快,他會(huì)不會(huì)輸拼音,他會(huì)不會(huì)輸五筆字型,他每秒鐘能數(shù)多少個(gè)漢字,是10個(gè)漢字還是80個(gè),我說雙擊鼠標(biāo)他會(huì)不會(huì)兩次很慢的單擊,間隔時(shí)間很長,我能不能用鼠標(biāo)右鍵加很多功能在里面,或者我能不能加很多熱鍵,我的圖標(biāo)要設(shè)多大,如果用戶是新手,我可能要設(shè)得比較大,如果是熟練人員,我可以全部設(shè)成菜單形式,或者快捷鍵形式。這些只能是需求分析人員所能回答的問題。
用戶特征是詳細(xì)了解用戶技能和經(jīng)驗(yàn),用戶有沒有玩過計(jì)算機(jī),如果用戶只會(huì)玩QQ,MSN,玩游戲,那我們知道他們肯定鼠標(biāo)很熟悉,能看懂一些提示,能進(jìn)行一些中文輸入。用戶是否只在上班時(shí)間用計(jì)算機(jī),還是偶爾用一下?;蛘哒f用戶是不是殘疾人,會(huì)不會(huì)要語音輸入,要不要在評(píng)模旁邊貼上一些簡單的操作指南,你比如說一個(gè)圖書館的計(jì)算機(jī)借閱系統(tǒng)。由于圖書館的官員每天使用這個(gè)系統(tǒng),因此他們使用系統(tǒng)的頻率很高。他們以前可能沒有使用過計(jì)算機(jī),也沒有人有自動(dòng)化圖書館借閱系統(tǒng)和計(jì)算機(jī)系統(tǒng)的知識(shí)。他們的絕大多數(shù)的智力水平在中等以上。
比如說學(xué)生成績提交系統(tǒng),就不好用。一行敲完了以后,可以自動(dòng)跳到下一行;或使用功能鍵就更好一些。
像Windows菜單都使用的這種子菜單的形式。像QQ用的就是浮動(dòng)式菜單。對(duì)話框:必須回答式,像系統(tǒng)設(shè)了密碼,你就必須回答。無需回答式,只是告訴你一個(gè)警告,你可以不必理睬他。警告式,和必須回答是有相似性,像針的要保存嗎?會(huì)替換同名文件,還替換嗎?
作為我們?cè)敿?xì)設(shè)計(jì)就要用這五種基本結(jié)構(gòu),五種程序設(shè)計(jì)方法來把前面這些模塊、子模塊;程序、子程序;函數(shù)實(shí)現(xiàn)。
任何復(fù)雜的程序流程圖都應(yīng)由以上五種基本結(jié)構(gòu)組合而成。
它的一個(gè)特點(diǎn)是:容易掌握,且“歷史悠久”,使用廣泛。但缺點(diǎn)也很多,程序流程圖它本質(zhì)上不具備逐步求精的特點(diǎn),對(duì)于提高大型系統(tǒng)的可理解性作用甚微,同時(shí)不太容易表示數(shù)據(jù)結(jié)構(gòu),你數(shù)據(jù)結(jié)構(gòu)在數(shù)據(jù)流程圖里面怎么表示我們看不到,只能看到程序流程圖中控制流的結(jié)構(gòu),另外轉(zhuǎn)移控制太方便。你隨便畫一條線指向另外一個(gè)地方,就算你轉(zhuǎn)移出去了,所以寫程序結(jié)構(gòu)圖隨意性太大,正因?yàn)樗S意性太大,現(xiàn)在用地越來越少,既然你要做詳細(xì)設(shè)計(jì),至少要把函數(shù)里的流程圖畫出來。圖6.3是程序流程圖的一些符號(hào)。
通過程序流程圖我們可以看到下面幾種形式,判定A:B有3種結(jié)果,A>B,A
盒圖在詳細(xì)設(shè)計(jì)里面一個(gè)非常重要的概念,它是用一種非常嚴(yán)謹(jǐn)?shù)膱D形格式來表示。用矩形框來表示,每一個(gè)區(qū)域都是一個(gè)程序,第一個(gè),順序型A B,A再上面,B在下面,盒圖的設(shè)計(jì)規(guī)則是從上往下執(zhí)行,先執(zhí)行A再執(zhí)行B。
第二個(gè)選擇型。當(dāng)條件滿足時(shí)執(zhí)行THEN部分,不滿足時(shí)執(zhí)行ELSE部分。當(dāng)ELSE部分沒有呢,往下執(zhí)行。
第三個(gè)WHILE循環(huán)。先判斷再循環(huán),條件滿足了,再執(zhí)行,然后再判斷,再執(zhí)行。這是一個(gè)循環(huán)。
第四個(gè)DO-UNTIL型。先執(zhí)行再判斷條件。直到條件不滿足,否則一直在這循環(huán)。
盒圖沒有箭頭,不允許隨意轉(zhuǎn)移控制。每個(gè)矩形框(CASE中條件取值例外)都是一個(gè)功能域(即一個(gè)特定結(jié)構(gòu)的作用域),結(jié)構(gòu)表示明確。局部及全局?jǐn)?shù)據(jù)的作用域易見。易表示嵌套關(guān)系以及模塊的層次結(jié)構(gòu)。
花這個(gè)盒圖占用空間大,所以又沒有更方便,具有盒圖相似功能的軟件工具。下面我們看一下PAD圖。
盒圖是從上往下,PAD圖它從左往右,同時(shí)具有從上往下兩個(gè)功能。順序型:它的基本書寫方式是畫一條豎線,這條豎線表示一個(gè)時(shí)間軸,P1 P2是從上往下寫的,如果有嵌套的話語句是從左往右寫的,跟盒圖不一樣,盒圖如果有嵌套也寫在里面。
第二選擇型:寫條豎線,C是個(gè)條件寫在里面,這是個(gè)框,上面為真,下面為假,這是默認(rèn)的。不像盒圖里面要寫T和F。
盒圖可以轉(zhuǎn)換成PAD圖。
特點(diǎn)是:結(jié)構(gòu)清晰,層次分明,通過豎線來完成,它不像盒圖那樣看上去眼花繚亂,線條沒有盒圖那么多,而且上下層次關(guān)系比較清晰,體現(xiàn)了逐步求精的設(shè)計(jì)思想,而且也比較容易把PAD圖轉(zhuǎn)換為高級(jí)語言的源程序,所以目前來說也是用得非常廣泛的,許多企業(yè)里面它更加推薦使用PAD圖。
第二篇:《軟件工程導(dǎo)論》第五版 張海藩 編著 總結(jié)
《軟件工程導(dǎo)論》第五版 張海藩 編著 總結(jié)
分類: Computer System2011-01-04 10:14 6417人閱讀 評(píng)論(10)收藏 舉報(bào)
測試數(shù)據(jù)結(jié)構(gòu)工具任務(wù)文檔軟件測試
總結(jié)重點(diǎn): ??Unit1
??軟件危機(jī)包含兩方面的問題:一是如何開發(fā)軟件,怎樣滿足人們對(duì)軟件日益增長的需求?二是如何維護(hù)軟件,使它們持久地滿足人們的要求。
??軟件工程學(xué)定義:把軟件當(dāng)作一種工業(yè)產(chǎn)品,采用工程學(xué)的原理來管理和組織軟件的開發(fā)和維護(hù),稱為軟件工程。
??軟件是指程序、數(shù)據(jù)和文檔三者共同構(gòu)成的配臵。
??包含與數(shù)據(jù)處理系統(tǒng)操作有關(guān)的程序、規(guī)程、規(guī)則以及相關(guān)文檔的智力創(chuàng)作稱為軟件。文檔是描述程序開發(fā)過程的,是智力創(chuàng)作的真實(shí)記錄,是創(chuàng)作活動(dòng)的歷史檔案和結(jié)晶。??軟件的描述性定義:軟件由計(jì)算機(jī)程序,數(shù)據(jù)結(jié)構(gòu)和文檔組成。
??軟件質(zhì)量定義為“與軟件產(chǎn)品滿足規(guī)定的和隱含的需求能力有關(guān)的特征和特性的全體” 具體來說: 1)軟件產(chǎn)品中能滿足給定需求的性質(zhì)和特性的總體; 2)軟件具有所期望的各種屬性的組合程度。
??將軟件質(zhì)量屬性劃分為六個(gè)特性(功能性、可靠性、易用性、效率、維護(hù)性和可移植性),這六個(gè)屬性是面向用戶的觀點(diǎn)——面向管理的觀點(diǎn),且是定性描述的。
??軟件質(zhì)量度量體系:內(nèi)部度量可用于開發(fā)階段的非執(zhí)行軟件產(chǎn)品,外部度量只能在生存周期過程中的測試階段和任何運(yùn)行階段使用。
??軟件工程項(xiàng)目的基本目標(biāo):(1)低成本;(2)滿足功能要求;(3)高性能;(4)易移植;(5)易維護(hù)。??軟件工程方法學(xué)就是要從技術(shù)和管理上提供如何去設(shè)計(jì)和維護(hù)軟件。
??軟件開發(fā)方法:面向數(shù)據(jù)流(約旦)方法、面向數(shù)據(jù)結(jié)構(gòu)方法、面向?qū)ο蠓椒ā?/p>
??結(jié)構(gòu)程序設(shè)計(jì)是進(jìn)行以模塊功能和處理過程設(shè)計(jì)為主的詳細(xì)設(shè)計(jì)的基本原則。它的主要觀點(diǎn)是采用自頂向下、逐步求精的程序設(shè)計(jì)方法;使用三種基本控制結(jié)構(gòu)構(gòu)造程序,任何程序都可由順序、選擇、循環(huán)三種基本控制結(jié)構(gòu)構(gòu)造。
??用來輔助軟件開發(fā)、運(yùn)行、維護(hù)、管理、支持等過程中活動(dòng)的軟件稱為軟件工具(CASE)。
??軟件生存周期定義:軟件產(chǎn)品從形成概念開始,經(jīng)過開發(fā)、使用和維護(hù),直到最后不再使用的整個(gè)過程。各階段的任務(wù)彼此間盡可能的相對(duì)獨(dú)立,同一階段內(nèi)各項(xiàng)任務(wù)的性質(zhì)盡可能的相同。軟件的開發(fā)就是“按軟件順時(shí)間發(fā)展的過程分階段進(jìn)行”的。??軟件生存周期模型:
瀑布模型(階段間具有順序型和依賴性,清楚地區(qū)分邏輯設(shè)計(jì)與物理設(shè)計(jì)、盡可能推遲程序的物理實(shí)現(xiàn),是文檔驅(qū)動(dòng)模型,遵循結(jié)構(gòu)化設(shè)計(jì));
原型模型(軟件產(chǎn)品的開發(fā)是線性順序進(jìn)行的,本質(zhì)是快速,用途是獲知用戶的真正需求,一旦需求確定,原型將被拋棄)。其核心都是將軟件開發(fā)劃分為:分析、設(shè)計(jì)、編碼、測試和維護(hù)。
??軟件生存周期劃分為以下幾個(gè)階段:可行性研究與計(jì)劃、需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、實(shí)現(xiàn)、組裝測試、確認(rèn)測試、使用和維護(hù)。
??軟件過程:是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟 ??軟件工程方法學(xué):通常把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué),也稱范型 ??軟件工程過程是軟件生存周期中各個(gè)可能的過程,這些過程可進(jìn)一步劃分成為了提供或獲得軟件產(chǎn)品或服務(wù),或是為了完成軟件工程項(xiàng)目需要完成的有關(guān)軟件工程活動(dòng),每一項(xiàng)活動(dòng)又可分解為一些軟件工程任務(wù)。標(biāo)準(zhǔn)定義了21個(gè)過程分屬三類:基本過程(include獲取、供應(yīng)、開發(fā)、運(yùn)作、維護(hù)過程)、支持過程和組織過程。??軟件工程三要素:方法、工具和過程。??軟件工程管理
目的:為了按照進(jìn)度及預(yù)算完成軟件計(jì)劃,實(shí)現(xiàn)預(yù)期的經(jīng)濟(jì)和社會(huì)效益。內(nèi)容:成本估算、進(jìn)度安排、人員組織、質(zhì)量保證、配臵管理等等。怎么強(qiáng)調(diào)軟件工程管理的極其重要性都不會(huì)過分
??Unit2 ??可行性研究
任務(wù)和目的:用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問題是否能夠在一定規(guī)模之內(nèi)解決。(確定這一問題是否存在值得去做的解)
過程和步驟:
實(shí)質(zhì):進(jìn)行一次大大壓縮簡化了的系統(tǒng)分析和設(shè)計(jì)過程,也就是在較高層次上以抽象方式進(jìn)行的系統(tǒng)分析和設(shè)計(jì)過程。
技術(shù)和工具:DFD+DD
??主要內(nèi)容
(1)澄清問題定義 ——規(guī)模、約束和限制
(2)導(dǎo)出新系統(tǒng)的邏輯模型
(3)導(dǎo)出若干個(gè)供選擇的物理解法(物理模型),并分別研究它們的可能行:
??數(shù)據(jù)流圖符號(hào)
Example:
??數(shù)據(jù)流圖的基本目的是 利用它作為交流信息的工具,另一個(gè)主要目的是作為分析和設(shè)計(jì)的工具。
??數(shù)據(jù)字典是關(guān)于數(shù)據(jù)信息的集合,也就是對(duì)數(shù)據(jù)流圖中包含的所有元素的定義的集合,它是通過對(duì)數(shù)據(jù)元素和數(shù)據(jù)結(jié)構(gòu)的定義,來描述數(shù)據(jù)流和數(shù)據(jù)存儲(chǔ)的邏輯內(nèi)容的。??數(shù)據(jù)流和數(shù)據(jù)字典共同構(gòu)成系統(tǒng)的邏輯模型。??數(shù)據(jù)字典的內(nèi)容:
數(shù)據(jù)流、數(shù)據(jù)元素、數(shù)據(jù)存儲(chǔ)、處理
??數(shù)據(jù)字典最重要的用途是作為分析階段的工具。
??Unit3 ??需求分析:
目的:精確地定義系統(tǒng)必須做什么,也就是對(duì)目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求?!獮槟繕?biāo)系統(tǒng)提出精確的邏輯模型。
任務(wù):確定對(duì)系統(tǒng)的綜合要求,包括功能需求、性能需求、可靠性和可用性需求、運(yùn)行要求、將來可能提出的要求。過程:處理邏輯的分解:自頂向下逐步分解直到每個(gè)處理邏輯已是不可再分的“功能單元”為止。書寫文檔:軟件需求規(guī)格說明
工具:狀態(tài)圖、IPO圖、層次方框圖、Warnier圖
??結(jié)構(gòu)化分析設(shè)計(jì)技術(shù)是70年代中期由E.Yourdon等人提出來的一種面向數(shù)據(jù)流的方法;要求系統(tǒng)的開發(fā)工作在結(jié)構(gòu)化和模塊化的基礎(chǔ)上進(jìn)行,它系統(tǒng)的運(yùn)用了描述模型的概念,按照軟件內(nèi)部數(shù)據(jù)傳遞和變換的關(guān)系,自頂向下逐層分解,直到找出滿足要求的可實(shí)現(xiàn)的軟件。
在這個(gè)方法里,“抽象”,“分解”,“模塊化”,“結(jié)構(gòu)化”是它的主要手段;面向數(shù)據(jù)傳遞、變換所形成的數(shù)據(jù)流(Dataflow)和數(shù)據(jù)流程圖(DFD)是它的主要依據(jù)。
這個(gè)方法的關(guān)鍵工作是:畫分層的DFD和確定數(shù)據(jù)定義與加工策略。??Yourdon方法(對(duì)應(yīng)的瀑布模型)的缺陷: 其實(shí)Yourdon方法是建立在三個(gè)假設(shè)之上的:
假設(shè)1:所有的需求都是可以預(yù)先定義的;
假設(shè)2:需求在較長一段時(shí)間內(nèi)是不變的(相對(duì)穩(wěn)定的);
假設(shè)3:運(yùn)用所提供的工具可以做到項(xiàng)目參與者之間清晰、準(zhǔn)確、有效的溝通。這三個(gè)假設(shè)往往是很難成立的:
“邏輯模型”的精確描述依賴于“自頂向下的求精過程”,而“自頂向下的求精過程”的順利進(jìn)行又依賴于精確的“邏輯模型”,這二個(gè)問題互相纏繞依賴而構(gòu)成方法學(xué)上的“死鎖”。??原型法(原型模型):
原型就是模型的意思(原型=模型),它指的是模擬某種產(chǎn)品的原始模型。運(yùn)用原型的策略:拋棄策略&附加策略 對(duì)原型的逐步求精過程是一個(gè)迭代過程
相對(duì)于Yourdon方法來說原型法是一個(gè)非線性的系統(tǒng)開發(fā)方法。不再強(qiáng)調(diào)高質(zhì)量的階段性文檔。
??螺旋模型:沿螺線自內(nèi)向外每旋轉(zhuǎn)一圈便開發(fā)出一個(gè)更為完善的軟件版本 ??Yourdon方法適合于“預(yù)先指定的系統(tǒng)”; ??原型法適合于“用戶驅(qū)動(dòng)的系統(tǒng)”。
??通常用“范式”定義消除數(shù)據(jù)冗余程度。第一范式數(shù)據(jù)冗余程度最大,第五范式數(shù)據(jù)冗余程度最小。??狀態(tài)轉(zhuǎn)換圖:
狀態(tài)時(shí)可以被觀察到的系統(tǒng)行為模式,一個(gè)狀態(tài)代表系統(tǒng)的一種行為模式,它規(guī)定了系統(tǒng)對(duì)事件的響應(yīng)方式。一張狀態(tài)圖有一個(gè)初態(tài)和0至多個(gè)終態(tài)。
事件:在某個(gè)特定時(shí)刻引起系統(tǒng)做動(dòng)作和(或)狀態(tài)轉(zhuǎn)換的控制信息。
??驗(yàn)證軟件需求的正確性:
一致性、完整性、現(xiàn)實(shí)性、有效性
??Unit4 ??總體設(shè)計(jì):
目的:確定系統(tǒng)的具體物理實(shí)現(xiàn)方案(系統(tǒng)結(jié)構(gòu)設(shè)計(jì)),確定組成每一個(gè)程序的模塊,以及模塊間的關(guān)系(軟件結(jié)構(gòu)設(shè)計(jì))。任務(wù):軟件結(jié)構(gòu)設(shè)計(jì)(過程設(shè)計(jì)是詳細(xì)設(shè)計(jì)階段的任務(wù))過程:
設(shè)想供選擇的方案
選取合理方案(每份方案有 系統(tǒng)流程圖、組成系統(tǒng)的物理元素清單、成本/效益分析、實(shí)現(xiàn)這個(gè)系統(tǒng)的進(jìn)度計(jì)劃 4份資料)等9步(P92)
??在軟件開發(fā)早期階段考慮測試問題,能促使軟件設(shè)計(jì)人員在設(shè)計(jì)時(shí)注意提高軟件的可測試性。??總體設(shè)計(jì)階段書寫的文檔:系統(tǒng)說明、用戶手冊(cè)、測試計(jì)劃、詳細(xì)的實(shí)現(xiàn)計(jì)劃、數(shù)據(jù)庫設(shè)計(jì)結(jié)果。
??總體設(shè)計(jì)過程中,推薦最佳方案后進(jìn)入“軟件結(jié)構(gòu)”設(shè)計(jì):設(shè)計(jì)出組成這個(gè)系統(tǒng)的所有程序、文件和數(shù)據(jù)庫,以及它們之間的聯(lián)系。軟件結(jié)構(gòu):由模塊組成的層次系統(tǒng)。模塊:數(shù)據(jù)說明、可執(zhí)行語句等程序。??C/S(Client/Server)結(jié)構(gòu)是軟件系統(tǒng)體系結(jié)構(gòu)
??“結(jié)構(gòu)化設(shè)計(jì)”概括地說就是:用一組標(biāo)準(zhǔn)的工具和準(zhǔn)則來確定系統(tǒng)應(yīng)該由哪些模塊、用什么方式聯(lián)結(jié)在一起,才能構(gòu)成一個(gè)最好的軟件結(jié)構(gòu)。
??模塊化就是把程序劃分成若干個(gè)模塊,每個(gè)模塊完成一個(gè)子功能,把這些模塊集成起來構(gòu)成一個(gè)整體,可以完成指定的功能滿足用戶的需求。
??模塊: 具有四種屬性的一組程序語句稱為一個(gè)模塊,這四種屬性分別是:輸入和輸出、邏輯功能、運(yùn)行程序、內(nèi)部數(shù)據(jù)。(前兩個(gè)是模塊外部屬性,后兩個(gè)是內(nèi)部屬性,總體設(shè)計(jì)完成外部屬性設(shè)計(jì)、詳細(xì)設(shè)計(jì)完成內(nèi)部屬性設(shè)計(jì))
??軟件結(jié)構(gòu)圖中,模塊用一矩形表示。??模塊間調(diào)用:用→連接
??開發(fā)具有獨(dú)立功能而且和其它模塊之間沒有過多相互作用的模塊,可以做到模塊獨(dú)立。??影響模塊獨(dú)立的因素:
耦合(不同模塊間互聯(lián)程度)內(nèi)聚(同一模塊內(nèi)各元素緊密程度)
??力爭高內(nèi)聚、低耦合。??5種耦合形式:
數(shù)據(jù)耦合、控制耦合、特征耦合、公共耦合、內(nèi)容耦合(從左到右耦合程度遞增)最弱的耦合是非直接耦合
??7種內(nèi)聚形式:
功能內(nèi)聚、順序內(nèi)聚、通信內(nèi)聚、過程內(nèi)聚、時(shí)間內(nèi)聚、邏輯內(nèi)聚、偶然內(nèi)聚(從左到右程度依次遞減)??模塊的扇出與扇入:
模塊的扇出是指一個(gè)模塊擁有的直接下級(jí)模塊的個(gè)數(shù)。模塊的扇入是指一個(gè)模塊的直接上級(jí)模塊的個(gè)數(shù)。
模塊的扇出系數(shù)應(yīng)控制在7以內(nèi),盡可能的加大模塊的扇入系數(shù)。
??作用域應(yīng)該是控制域的子集;
??模塊的控制域和作用域:
模塊的控制域(控制范圍):是指這個(gè)模塊本身以及所有直接或間接從屬于它的模塊的集合。
模塊的作用域(判斷作用范圍):是指受該模塊內(nèi)一個(gè)判斷影響的所有模塊的集合。(也就是該模塊內(nèi)存在著判斷調(diào)用語句,而所有受到該判斷邏輯影響的模塊,就是該模塊的作用域。)作用域應(yīng)該是控制域的子集;理想的是作用域都是直接下屬模塊。??數(shù)據(jù)流類型——數(shù)據(jù)在DFD中流徑特征
變換流:進(jìn)入系統(tǒng)中的數(shù)據(jù)所流經(jīng)的路徑幾乎是一樣的。事務(wù)流:進(jìn)入系統(tǒng)中的數(shù)據(jù)所流經(jīng)的路徑不完全是一樣的。
??
??事務(wù)中心往往包含多個(gè)處理邏輯。
??
??“事務(wù)”是指一組輸入數(shù)據(jù)。
??Unit5 ??詳細(xì)設(shè)計(jì):
目的:完成模塊的過程設(shè)計(jì)(為SC中每個(gè)模塊確定采用的算法和塊內(nèi)數(shù)據(jù)結(jié)構(gòu),用某種選定的表達(dá)工具給出詳細(xì)清晰的描述。)
模塊的邏輯設(shè)計(jì)(模塊的過程描述)主要內(nèi)容:
1)為每個(gè)模塊確定采用的算法 2)確定每個(gè)模塊使用的內(nèi)部數(shù)據(jù)結(jié)構(gòu) 3)確定模塊的接口細(xì)節(jié) 4)制定模塊的測試計(jì)劃
完成模塊的“內(nèi)部屬性”設(shè)計(jì),即給出系統(tǒng)中各個(gè)模塊的“運(yùn)行程序”和“內(nèi)部數(shù)據(jù)”;由此可見詳細(xì)設(shè)計(jì)的結(jié)果基本上決定了最終軟件的質(zhì)量。
詳細(xì)設(shè)計(jì)的目標(biāo)更重要的是便于維護(hù)。工具:
1.程序流程圖(流程圖)2.N-S圖(盒圖)
3.PAD圖(問題分析圖)
4.偽代碼和PDL語言
??邏輯設(shè)計(jì)應(yīng)遵循的理念:
1.從效率第一到清晰第一
2.結(jié)構(gòu)化的控制結(jié)構(gòu):結(jié)構(gòu)化程序設(shè)計(jì)=僅使用單入口單出口的三種基本控制結(jié)構(gòu) 3.逐步細(xì)化的實(shí)現(xiàn)方法
[例] 在一組數(shù)中找出其中的最大數(shù) 分別用程序流程圖、N-S圖和PAD圖描述 用“結(jié)構(gòu)化”保證程序的清晰易讀,用“逐步細(xì)化”實(shí)現(xiàn)程序的正確可靠,它們導(dǎo)致了一條自然的結(jié)論:模塊的邏輯設(shè)計(jì)必須用結(jié)構(gòu)化程序設(shè)計(jì)的原理來指導(dǎo)。(結(jié)構(gòu)化分析設(shè)計(jì)在詳細(xì)設(shè)計(jì)階段)??Yourdon方法的技術(shù)途徑:DFD→DFD+DD→SC→PDL
??Yourdon方法在分析階段,我們用DFD來表示軟件的邏輯模型;在設(shè)計(jì)階段,又按照數(shù)據(jù)流類型,分別用變換分析或事務(wù)分析將它們轉(zhuǎn)換成相應(yīng)的軟件結(jié)構(gòu)。??面向數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)方法的根據(jù)和基本思想:
算法和數(shù)據(jù)結(jié)構(gòu)是程序設(shè)計(jì)中不可分割的側(cè)面,算法的結(jié)構(gòu)依賴于它要處理的數(shù)據(jù)結(jié)構(gòu)。只要事先知道一個(gè)問題的數(shù)據(jù)結(jié)構(gòu),就可以由此導(dǎo)出它的程序結(jié)構(gòu)。
??基于數(shù)據(jù)流還是基于數(shù)據(jù)結(jié)構(gòu)的出發(fā)點(diǎn)不同,最終目標(biāo)也不同。SADT(結(jié)構(gòu)化分析設(shè)計(jì)工具)方法的目標(biāo)是得出軟件的最終SC圖,它把注意力集中在模塊的合理劃分上;面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)則要求得出程序的過程性描述,并不明確也提出軟件應(yīng)該先分成模塊等概念。
??SADT方法:DFD->SC(軟件結(jié)構(gòu)圖)->模塊的過程性描述(PDL等)|<-------總體設(shè)計(jì)-------> | |<--------詳細(xì)設(shè)計(jì)------->|
Jackson方法(面向數(shù)據(jù)結(jié)構(gòu)):數(shù)據(jù)結(jié)構(gòu)->程序結(jié)構(gòu)->程序的過程性描述(偽代碼等)|<-----總體設(shè)計(jì)-----> | |<----------詳細(xì)設(shè)計(jì)--------->| ??程序復(fù)雜程度的定量度量:
1.程序圖(流圖)(用任何方法表示的詳細(xì)設(shè)計(jì)結(jié)果都可以變換成程序圖)
流程圖中的各種處理框均簡化成一個(gè)結(jié)點(diǎn)
2.環(huán)域復(fù)雜度
程序的結(jié)構(gòu)復(fù)雜度可用強(qiáng)連通的有向圖中線性無關(guān)環(huán)的個(gè)數(shù)來度量 V(G)= 判定結(jié)點(diǎn)數(shù) + ??Unit6
??編碼(也稱實(shí)現(xiàn))
任務(wù):把模塊的過程性描述翻譯為用該語言書寫的源程序(或源代碼)。??編碼的風(fēng)格
1.程序要清晰直觀,不要過于巧妙
2.用一定的原則指導(dǎo)控制結(jié)構(gòu)的使用(避免使用容易引起混淆的結(jié)構(gòu)和語句)3.有規(guī)律地使用GOTO語句
不得不把效率的考慮放在首位的時(shí)候,而結(jié)構(gòu)化程序又不能滿足時(shí)間要求時(shí),就可用GOTO語句來減少重復(fù)的代碼段;
4.實(shí)現(xiàn)源程序的文檔化(軟件=程序+文檔)<有意義的變量名稱、適當(dāng)注釋、標(biāo)準(zhǔn)的書寫格式>
??Unit7: ??軟件測試:
定義:程序測試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程。糾錯(cuò)(調(diào)試)是為了確定錯(cuò)誤的性質(zhì),并且加以糾正。
??軟件測試包括機(jī)器測試(動(dòng)態(tài)測試)(黑盒測試&白盒測試)和人工測試(代碼復(fù)審)(代碼走查+會(huì)審+辦公桌檢查)程序編譯通過后,應(yīng)該先人工測試(發(fā)現(xiàn)邏輯錯(cuò)誤)后機(jī)器測試(在設(shè)定的測試數(shù)據(jù)上執(zhí)行被測程序).??動(dòng)態(tài)測試是一個(gè)包括:①設(shè)計(jì)“測試用例”→②執(zhí)行被測程序→③分析測試結(jié)果并發(fā)現(xiàn)錯(cuò)誤的過程。(①設(shè)計(jì)“測試用例”是最關(guān)鍵)
測試用例={ 輸入數(shù)據(jù) + 期望結(jié)果 }
按照在設(shè)計(jì)“測試用例”時(shí),是否涉及程序的內(nèi)部結(jié)構(gòu),把動(dòng)態(tài)測試分為: 白盒測試:從程序的內(nèi)部邏輯入手,按照一定原則設(shè)計(jì)測試用例。
黑盒測試:僅以程序外部功能為依據(jù)來設(shè)計(jì)測試用例。檢查程序是否完成應(yīng)做的和是否做了不該做的。(按規(guī)格說明書的規(guī)定)
??軟件測試的的步驟:[見筆記本上圖]
單元測試:在編碼階段完成;以模塊為單位,(主要白盒)發(fā)現(xiàn)的往往是編碼和詳細(xì)設(shè)計(jì)的錯(cuò)誤
綜合測試:(模塊組裝測試、集成測試)以軟件的設(shè)計(jì)信息為依據(jù),主要用黑盒,發(fā)現(xiàn)設(shè)計(jì)錯(cuò)誤,也可能發(fā)現(xiàn)需求說明錯(cuò)誤。
確認(rèn)測試(驗(yàn)收測試):以軟件的需求信息為依據(jù),用黑盒,發(fā)現(xiàn)需求說明書中的錯(cuò)誤,驗(yàn)證軟件的有效性 系統(tǒng)測試:指整個(gè)計(jì)算機(jī)系統(tǒng)(包括軟件與硬件)的測試。??代碼復(fù)審
1.代碼會(huì)審:開會(huì)逐句朗讀和講解程序,精力集中于發(fā)現(xiàn)錯(cuò)誤,會(huì)后改正錯(cuò)誤 2.走查:與會(huì)者扮演“計(jì)算機(jī)”的角色 3.辦公桌檢查:一個(gè)人參加的代碼會(huì)審 ??黑盒測試方法:
??等價(jià)分類法:
按測試結(jié)果“等價(jià)”把被測程序的輸入域劃分為若干個(gè)等價(jià)類,每一個(gè)等價(jià)類都選擇一例“測試用例”,與“應(yīng)做的事情”相對(duì)應(yīng)的是“有效等價(jià)類”,而與“不應(yīng)該做的事情”相對(duì)應(yīng)的稱之為“無效等價(jià)類”。
設(shè)計(jì)等價(jià)類的測試用例分為兩步: 1.劃分等價(jià)類并給出定義;
2.選擇測試用例的原則:有效等價(jià)類的測試用例盡量公用;無效等價(jià)類必須每類一例。[例]某城市的電話號(hào)碼……[看筆記] ??邊界值分析法(邊值法)??錯(cuò)誤猜測法(猜錯(cuò)法)??因果圖法
??白盒測試方法:[見筆記]
合理的白盒測試,就是要選取足夠的測試用例,以實(shí)現(xiàn)對(duì)源程序比較充分的覆蓋。??邏輯覆蓋法:(按照由低到高對(duì)程序邏輯覆蓋程度的順序)
語句覆蓋:每條語句至少執(zhí)行一次;
判定覆蓋:不僅每條語句至少執(zhí)行一次,而且每一分支至少執(zhí)行一次;
條件覆蓋:不僅語句覆蓋,而且每個(gè)條件均按“真”、“假”兩種結(jié)果至少執(zhí)行一次; 條件組合覆蓋:不僅語句覆蓋,而且每個(gè)條件的所有可能組合都至少執(zhí)行一次。
??路徑覆蓋法:(按照由低到高對(duì)程序邏輯覆蓋程度)
結(jié)點(diǎn)覆蓋:每個(gè)結(jié)點(diǎn)走一次;相當(dāng)于語句覆蓋 邊覆蓋:每條邊走一次;相當(dāng)于判定覆蓋
路徑覆蓋:每條路徑走一次;(不需要考慮程序的循環(huán))
??Unit8
??面向?qū)ο蠡驹恚菏姑枋鰡栴}的問題空間和在計(jì)算機(jī)上解決問題的解空間在結(jié)構(gòu)上盡可能一致。??基本概念:
(1)對(duì)象:由數(shù)據(jù)以及可以施加在這些數(shù)據(jù)上的操作(或服務(wù)、方法、處理)所構(gòu)成的統(tǒng)一體,它是面向?qū)ο筌浖幕灸K。
(2)類:對(duì)具有相同數(shù)據(jù)和相同操作的一組相似對(duì)象的定義(抽象)。(3)不同的對(duì)象彼此之間只能通過消息相互作用、相互聯(lián)系
(4)繼承:處于下一層次上的派生類自動(dòng)繼承了位于上一層次基類的屬性(數(shù)據(jù))和行為(操作)??面向?qū)ο缶褪羌仁褂脤?duì)象又使用類和繼承等機(jī)制,而對(duì)象之間僅能通過傳遞消息實(shí)現(xiàn)彼此間的通信。??UML 用視圖來表示被建模系統(tǒng)的各個(gè)方面,它把軟件模型分成5個(gè)視圖,每一個(gè)視圖代表完整系統(tǒng)的一個(gè)特定方面。每一個(gè)視圖又由一種或多種模型圖構(gòu)成。
1. 用例視圖:用來支持需求分析,也就是說系統(tǒng)將提供的功能是在用例視圖中描述的。
2. 邏輯視圖:定義系統(tǒng)的實(shí)現(xiàn)邏輯,重點(diǎn)關(guān)注的是系統(tǒng)的靜態(tài)結(jié)構(gòu)(類、對(duì)象及它們之間的關(guān)系),也描述系統(tǒng)內(nèi)部的動(dòng)態(tài)協(xié)作關(guān)系。它的模型圖包括類圖、對(duì)象圖、狀態(tài)圖、順序圖、協(xié)作圖及活動(dòng)圖等。3. 組件視圖:描述系統(tǒng)的實(shí)現(xiàn)模塊及它們之間的依賴關(guān)系。組件是不同類型的代碼模塊,通過代碼模塊的結(jié)構(gòu)和依賴關(guān)系來表示。
4. 部署視圖:描述軟件系統(tǒng)在計(jì)算機(jī)硬件系統(tǒng)和網(wǎng)絡(luò)上的安裝、分發(fā)和分布情況。5. 實(shí)現(xiàn)視圖:描述組成軟件系統(tǒng)的各個(gè)物理部件。??UML由三部分組成:基本構(gòu)造塊、規(guī)則和公用機(jī)制
??UML 定義了二類模型元素的圖形表示:一類模型元素用于表示模型中的某個(gè)概念,一類模型元素用于表示模型元素之間的關(guān)系 ?? 面向?qū)ο蠼#?/p>
對(duì)象模型——“誰做?”(類圖)動(dòng)態(tài)模型——“什么時(shí)候做?”(狀態(tài)圖)功能模型——“做什么?”(用例圖)
這三種模型都是必不可少的,對(duì)象模型是最核心的。
在面向?qū)ο蠓治鲋?,?gòu)造出完全獨(dú)立于實(shí)現(xiàn)的應(yīng)用域模型;在面向?qū)ο笤O(shè)計(jì)中,把求解域的結(jié)構(gòu)逐漸加入到模型中;在實(shí)現(xiàn)階段,把應(yīng)用域和求解域的結(jié)構(gòu)進(jìn)行編碼和驗(yàn)證。
??OO方法:OOA→OOD→OOP→OOT 是一個(gè)逐漸擴(kuò)充模型的過程,其間無需轉(zhuǎn)換概念和表示,開發(fā)活動(dòng)之間基本做到了平滑無縫過渡; ??對(duì)象模型:
類與類之間一般有四種關(guān)系:關(guān)聯(lián)、泛化(繼承)、依賴和細(xì)化。1.關(guān)聯(lián):表示兩個(gè)類的“對(duì)象”之間存在某種語義上的聯(lián)系。
2.聚集:聚集是關(guān)聯(lián)的特例,它表示類與類之間的關(guān)系是整體與部分的關(guān)系。3.泛化(繼承):泛化關(guān)系指的是類與類之間是“一般---特殊”的關(guān)系。4.依賴和細(xì)化:依賴關(guān)系是指一個(gè)模型元素依賴于另一個(gè)獨(dú)立的模型元素,細(xì)化關(guān)系是指一個(gè)模型元素細(xì)化成了另一個(gè)模型元素。??動(dòng)態(tài)模型:
描述了對(duì)象模型中對(duì)象的生命周期過程,即對(duì)象的狀態(tài),我們把一個(gè)觸發(fā)行為稱為一個(gè)事件。動(dòng)態(tài)模型就是通過描述對(duì)象的狀態(tài)、觸發(fā)狀態(tài)轉(zhuǎn)換的事件、以及對(duì)象的行為來描述軟件系統(tǒng)的動(dòng)態(tài)行為(行為模型)。??功能模型:
UML提供用例圖來表示功能模型,并稱之為用例模型。
功能模型也可用SADT中的一組DFD來表示。(也是需求分析階段)一幅用例圖包含的模型元素有:系統(tǒng)、行為者、用例和用例之間的關(guān)系。
一個(gè)用例是系統(tǒng)的一個(gè)完整的功能,通過關(guān)聯(lián)與行為者連接,關(guān)聯(lián)指出一個(gè)用例與哪些行為者交互,這種交互是雙向的。
用例是一個(gè)類,用例的實(shí)例是系統(tǒng)的一種實(shí)際使用方法,我們稱之為腳本。用例之間的關(guān)系主要有二種:擴(kuò)展關(guān)系和使用關(guān)系。
創(chuàng)建用例模型的工作包括:定義系統(tǒng)、尋找行為者和用例、描述用例、定義用例之間的關(guān)系,并確認(rèn)用例模型。
??Unit9:
??面向?qū)ο蠓治觯∣bject-Oriented Analysis,簡稱OOA)的關(guān)鍵就是識(shí)別出對(duì)象與類,并分析它們之間的關(guān)系,最終建立對(duì)象模型、動(dòng)態(tài)模型和功能模型。
圖: 參照當(dāng)前系統(tǒng)建立目標(biāo)系統(tǒng)
??通過劃分“主題”把一個(gè)復(fù)雜系統(tǒng)的對(duì)象模型分解成幾個(gè)不同的概念范疇。??
??軟件維護(hù)就是在軟件已經(jīng)交付使用之后,為了改正錯(cuò)誤或滿足新的需要而修改軟件的過程。??維護(hù)過程本質(zhì)上是修改和壓縮了的軟件定義和開發(fā)過程,而且事實(shí)上遠(yuǎn)在提出一項(xiàng)維護(hù)要求之前,與軟件維護(hù)有關(guān)的工作已經(jīng)開始了。
??進(jìn)行維護(hù)的原因:改正程序中的錯(cuò)誤和缺陷;改進(jìn)設(shè)計(jì)以適應(yīng)新的軟、硬件環(huán)境;增加新的應(yīng)用范圍;為了將來的維護(hù)工作。
??維護(hù)分為以下幾類:改正性維護(hù);適應(yīng)性維護(hù);完善性維護(hù);預(yù)防性維護(hù)
----------
??未涵蓋進(jìn)來的內(nèi)容:
??需求分析目的:確定目標(biāo)系統(tǒng)必須具備哪些功能
??總體設(shè)計(jì)的主要任務(wù):一.制定幾種可能的實(shí)現(xiàn)方案;二.設(shè)計(jì)程序的體系結(jié)構(gòu) ??詳細(xì)設(shè)計(jì)(模塊設(shè)計(jì))任務(wù):設(shè)計(jì)出程序的詳細(xì)規(guī)格說明 ??集成測試和驗(yàn)收測試:
集成測試(組裝測試):根據(jù)設(shè)計(jì)的軟件結(jié)構(gòu)
驗(yàn)收測試:按照規(guī)格說明書的規(guī)定,由用戶參與下對(duì)目標(biāo)系統(tǒng)進(jìn)行驗(yàn)收的測試
??通過對(duì)軟件測試結(jié)果的分析可以預(yù)測軟件的可靠性。??傳統(tǒng)軟件工程方法學(xué)的軟件過程,可以用瀑布模型來描述 ??瀑布模型的特點(diǎn):階段間具有順序性和依賴性、推遲實(shí)現(xiàn)的觀點(diǎn)
清楚地區(qū)分邏輯設(shè)計(jì)與物理設(shè)計(jì),盡可能推遲程序的物理實(shí)現(xiàn)。
??瀑布模型帶反饋環(huán),發(fā)現(xiàn)前面階段的錯(cuò)誤時(shí),沿反饋線回頭修改
??快速原型模型不帶反饋環(huán),軟件產(chǎn)品開發(fā)是線性順序進(jìn)行的,用途是獲知用戶的需求
??增量模型(漸增模型):把軟件產(chǎn)品分解成增量構(gòu)件。原則:當(dāng)把新構(gòu)件集成到原有構(gòu)件時(shí),所形成的產(chǎn)品必須是可測試的。它能在較短時(shí)間內(nèi)向用戶提交可完成部分工作的產(chǎn)品。要求開始實(shí)現(xiàn)各個(gè)構(gòu)件前就全部完成的需求分析、規(guī)格說明、總體設(shè)計(jì)。
??螺旋模型的基本思想:使用原形及其他方法來盡量降低風(fēng)險(xiǎn)??梢钥醋髅總€(gè)階段前都加了風(fēng)險(xiǎn)分析的快速原型模型。螺旋模型是風(fēng)險(xiǎn)驅(qū)動(dòng)型的。
??噴泉模型體現(xiàn)了面向?qū)ο箝_發(fā)過程迭代和無縫的特性。
??采用先行順序的開發(fā)方法不可能開發(fā)出當(dāng)今客戶需要的大型復(fù)雜系統(tǒng)。
構(gòu)件:功能清晰的模塊或子系統(tǒng)。模型:對(duì)事物的無歧義的書面描述。
RUP強(qiáng)調(diào)采用迭代和漸增的方式來開發(fā)軟件,重復(fù)一系列組成軟件生命周期的循環(huán)。??面向?qū)ο蠓椒?對(duì)象+類+繼承+用消息通信
??可行性分析中導(dǎo)出供選擇的解法的最簡單途徑,是從技術(shù)角度出發(fā)考慮解決問題的不同方案。
??系統(tǒng)流程圖是概括地描繪物理系統(tǒng)的工具,表達(dá)數(shù)據(jù)在系統(tǒng)各部件之間的流動(dòng)情況,而非對(duì)數(shù)據(jù)加工處理。??數(shù)據(jù)流圖(DFD)描繪信息流和數(shù)據(jù)從輸入移動(dòng)到輸出的過程中所經(jīng)受的變換。(描繪數(shù)據(jù)在軟件中流動(dòng)和被處理的邏輯過程),設(shè)計(jì)時(shí)只考慮系統(tǒng)必須完成的基本邏輯功能。
畫數(shù)據(jù)流圖的基本目的:利用它作為交流信息的工具;作為分析和設(shè)計(jì)的工具。符號(hào):數(shù)據(jù)源點(diǎn)/終點(diǎn),變換數(shù)據(jù)的處理,數(shù)據(jù)存儲(chǔ),數(shù)據(jù)流 ??數(shù)據(jù)存儲(chǔ)是處于靜止?fàn)顟B(tài)的數(shù)據(jù)流,數(shù)據(jù)流是處于運(yùn)動(dòng)中的數(shù)據(jù)。
??數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的信息的集合,即對(duì)數(shù)據(jù)流圖中包含的所有元素的定義的集合。
數(shù)據(jù)字典包含內(nèi)容:數(shù)據(jù)流,數(shù)據(jù)流分量,數(shù)據(jù)存儲(chǔ),處理 數(shù)據(jù)字典用途:分析階段的工具。
??逆向需求說明軟件系統(tǒng)不應(yīng)該做什么
??分析系統(tǒng)常用圖形工具:層次方框圖、Warnier圖 ??需求分析時(shí)要把數(shù)據(jù)結(jié)構(gòu)規(guī)范化。
??結(jié)構(gòu)化分析方法就是面向數(shù)據(jù)流自頂向下逐步求精進(jìn)行需求分析的方法。
把分析過程中得到的有關(guān)數(shù)據(jù)元素記錄在數(shù)據(jù)字典中,對(duì)算法的簡明描述記錄在IPO圖中。快速建立軟件原型是最好的需求分析技術(shù)。為快速構(gòu)建和修改原型,使用三種工具和方法: 第四代技術(shù) 可重用的軟件構(gòu)件 形式化規(guī)格說明和原型環(huán)境
??概念性數(shù)據(jù)模型是一種面向問題的數(shù)據(jù)模型,是按照用戶的觀點(diǎn)對(duì)數(shù)據(jù)建立的模型。??數(shù)據(jù)對(duì)象是軟件必須理解的復(fù)合信息的抽象。
??用“范式”定義消除數(shù)據(jù)冗余的程度,第一范式冗余最大。
??狀態(tài)是任何可被觀察到的系統(tǒng)行為模式,一個(gè)狀態(tài)代表系統(tǒng)的一種行為模式。??狀態(tài)圖的活動(dòng)表中經(jīng)常使用entry,exit,do三種標(biāo)準(zhǔn)事件。
??IPO圖是輸入、處理、輸出圖,處理框中列出處理的次序暗示了執(zhí)行的順序。??驗(yàn)證軟件需求的正確性:一致性、完整性、現(xiàn)實(shí)性、有效性 ??結(jié)構(gòu)設(shè)計(jì)是總體設(shè)計(jì)階段的任務(wù),過程設(shè)計(jì)是詳細(xì)設(shè)計(jì)階段的任務(wù) ??軟件結(jié)構(gòu)(即由模塊組成的層次系統(tǒng))可以用層次圖或結(jié)構(gòu)圖描繪。
??在軟件開發(fā)的早期階段考慮測試問題,可以促使軟件開發(fā)者設(shè)計(jì)時(shí)注意提高軟件的可測試性。??隨著模塊數(shù)增加,設(shè)計(jì)模塊間接口所需工作量也增加。??逐步求精是規(guī)格說明技術(shù)、設(shè)計(jì)和實(shí)現(xiàn)技術(shù)的基礎(chǔ)。
逐步求精定義:為了能集中精力解決主要問題而盡量推遲對(duì)問題細(xì)節(jié)的考慮。
??模塊獨(dú)立的概念是模塊化、抽象、信息隱藏和局部化概念的直接結(jié)果。
??耦合強(qiáng)弱取決于模塊接口的復(fù)雜程度,進(jìn)入或訪問一個(gè)模塊的點(diǎn),以及通過接口的數(shù)據(jù)。??模塊間的耦合程度影響系統(tǒng)的可理解性、可測試性、可靠性和可維護(hù)性 ??內(nèi)聚比耦合更重要。
??深度表示軟件結(jié)構(gòu)中控制的層數(shù),能粗略標(biāo)識(shí)系統(tǒng)大小。
寬度是軟件結(jié)構(gòu)內(nèi)同一層次上的模塊總數(shù)的最大值。
扇出過大意味著模塊過分復(fù)雜,扇入越大則共享該模塊的上級(jí)模塊越多(好)。好的軟件結(jié)構(gòu)通常頂層扇出高,中層扇出較少,底層模塊有高扇入。
??面向數(shù)據(jù)流的設(shè)計(jì)方法把信息流映射成軟件結(jié)構(gòu),信息流的類型(變換流、事務(wù)流)決定映射方法。??經(jīng)典程序設(shè)計(jì):只允許使用順序、IF_THEN_ELSE、DO_WHILE
擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì):外加DO_CASE、DO_UNTIL 修改的結(jié)構(gòu)程序設(shè)計(jì):外加BREAK ??系統(tǒng)響應(yīng)時(shí)間的兩個(gè)屬性:長度、易變性 ??用戶界面設(shè)計(jì)是一個(gè)迭代過程。
??過程涉及工具:程序流程圖、盒圖、PAD圖、判定表、判定樹、過程設(shè)計(jì)語言PDL ??程序復(fù)雜度定量度量:
1.McCabe方法(流圖,也叫程序圖):流圖中的區(qū)域數(shù)=環(huán)形復(fù)雜度=判定節(jié)點(diǎn)數(shù)+1
程序的環(huán)形復(fù)雜度取決于程序控制流的復(fù)雜程度,即取決于程序結(jié)構(gòu)的復(fù)雜程度。所以它是對(duì)測試難度的定量度量,也能對(duì)軟件可靠性預(yù)測。
2.Halstead方法(根據(jù)程序中運(yùn)算符和操作數(shù)總數(shù)來度量)??編碼和測試統(tǒng)稱為實(shí)現(xiàn)。
??程序的質(zhì)量主要取決于軟件設(shè)計(jì)的質(zhì)量。
??測試的目的:發(fā)現(xiàn)軟件中的錯(cuò)誤,根本任務(wù):保證軟件質(zhì)量 ??調(diào)試的目的:診斷并改正測試中發(fā)現(xiàn)的錯(cuò)誤 ??效率主要指處理機(jī)時(shí)間和存儲(chǔ)器容量兩方面。
??用戶角度:最嚴(yán)重的錯(cuò)誤是導(dǎo)致程序不能滿足用戶需求的錯(cuò)誤。
??一旦完成了需求模型就可以著手制定測試計(jì)劃,建立了設(shè)計(jì)模型之后就可以立即開始設(shè)計(jì)詳細(xì)的測試方案。??最佳測試效果:有最大可能性發(fā)現(xiàn)錯(cuò)誤的測試
??模塊組裝測試兩種方法:非漸增式測試(分別測試每個(gè)模塊)&漸增式測試(把下一個(gè)要測試的同已經(jīng)測好的結(jié)合起來測試)
??漸增方式分 自頂向下集成和自底向上集成
??為了保證加入模塊沒有引進(jìn)新的錯(cuò)誤,可能需要進(jìn)行回歸測試
??自頂向下測試方法主要優(yōu)點(diǎn):不需要測試驅(qū)動(dòng)程序,能夠在測試階段的早期發(fā)現(xiàn)接口錯(cuò)誤。
??回歸測試:重新執(zhí)行已經(jīng)做過的測試的某個(gè)子集。它用于保證由于調(diào)試或其他原因引起的變化,不會(huì)導(dǎo)致非預(yù)期的軟件行為或額外錯(cuò)誤。
??確認(rèn)測試的目的:驗(yàn)證軟件的有效性。
??如果軟件的功能和性能如同用戶期望的,就是有效的 ??確認(rèn)測試以用戶為主,重要內(nèi)容是復(fù)查軟件配臵。
??條件測試的目的不僅是檢測程序條件中的錯(cuò)誤,而且是檢測程序中的其他錯(cuò)誤。??在一段程序中已經(jīng)發(fā)現(xiàn)的錯(cuò)誤數(shù)往往和尚未發(fā)現(xiàn)的錯(cuò)誤數(shù)成正比。
??等價(jià)劃分法和邊界值分析法都只孤立地考慮各個(gè)輸入數(shù)據(jù)的測試功效,而未考慮多個(gè)輸入數(shù)據(jù)的組合效應(yīng)。??軟件可靠性:程序在給定的時(shí)間間隔內(nèi),按照規(guī)格說明書的規(guī)定成功運(yùn)行的概率 ??錯(cuò)誤:由開發(fā)人員造成的bug;故障:由錯(cuò)誤引起的軟件的不正確行為
??軟件可用性:程序在給定的時(shí)間點(diǎn),按照規(guī)格說明書上的規(guī)定,成功地運(yùn)行的概率。??預(yù)防性維護(hù):為了改進(jìn)未來的可維護(hù)性或可靠性…… ??軟件維護(hù)分為 非結(jié)構(gòu)化維護(hù)和結(jié)構(gòu)化維護(hù)
??維護(hù)事件流的最后一個(gè)事件是復(fù)審,它再次檢驗(yàn)軟件配臵的有效性,并保證事實(shí)上滿足了維護(hù)要求表中的要求。??軟件的可維護(hù)性:維護(hù)人員理解、改正、改動(dòng)或改進(jìn)這個(gè)軟件的難易程度。提高軟件維護(hù)性是支配軟件工程方法學(xué)所有步驟的關(guān)鍵目標(biāo)。
??決定軟件可維護(hù)性因素:可理解性、可測試性、可修改性、可移植性、可重用性 ??用戶文檔包括:功能描述、安裝文檔、使用手冊(cè)、參考手冊(cè)、操作員指南 ??面向?qū)ο蠓椒ㄓ脤?duì)象分解取代了傳統(tǒng)方法的功能分解。??對(duì)象彼此之間僅通過消息傳遞相互聯(lián)系。??面向?qū)ο?對(duì)象+類+繼承+消息傳遞通信
如果僅用對(duì)象和消息,則稱為基于對(duì)象的方法,而非面向?qū)ο蟮姆椒ā?/p>
如果進(jìn)一步要求把所有對(duì)象都劃分成類,則稱為基于類的方法,仍非面向?qū)ο蟮姆椒?。只有同時(shí)使用以上4點(diǎn),才是面向?qū)ο蟮摹?/p>
??OOD不同于面向過程設(shè)計(jì),其思想是:使用現(xiàn)實(shí)世界的概念抽象地思考問題而自然的解決問題。(重要的是應(yīng)用模型)
??人在認(rèn)識(shí)和解決復(fù)雜問題時(shí)最有力的思維工具是抽象。
??傳統(tǒng)的軟件開發(fā)方法以算法為核心,開發(fā)過程基于功能分析和分解。
面向?qū)ο蠓椒ɑ跇?gòu)造問題領(lǐng)域的對(duì)象模型,以對(duì)象為中心構(gòu)造軟件系統(tǒng)。??對(duì)象=描述屬性的數(shù)據(jù)+對(duì)數(shù)據(jù)施加的操作
??對(duì)象是具有相同狀態(tài)的一組操作的集合。(從OOD看對(duì)象)
對(duì)象是對(duì)問題域中某個(gè)東西的抽象,這種抽象反映了系統(tǒng)保存有關(guān)這個(gè)東西的能力與他交互的能力。(從信息模擬看對(duì)象)
??對(duì)象:以數(shù)據(jù)為中心的、主動(dòng)的、實(shí)現(xiàn)了數(shù)據(jù)封裝、本質(zhì)上具有并行性、模塊獨(dú)立性好 ??一個(gè)對(duì)象類型也可以看成是一種抽象數(shù)據(jù)類型
??類:對(duì)具有相同數(shù)據(jù)和相同操作的一組相似對(duì)象的定義。??消息具有:接受消息的對(duì)象、消息選擇符(消息名)、變?cè)??屬性是對(duì)客觀世界實(shí)體所具有的性質(zhì)的抽象
??繼承分但繼承和多重繼承(多個(gè)父類),使用多重繼承是要注意避免二義性。繼承中,底層的性質(zhì)將屏蔽高層的同名性質(zhì)。
??多態(tài)性通過虛函數(shù)實(shí)現(xiàn)。??虛函數(shù)->實(shí)現(xiàn)動(dòng)態(tài)聯(lián)編 ??函數(shù)重載通過靜態(tài)聯(lián)編實(shí)現(xiàn)。??OO 3models:
??描述 系統(tǒng)數(shù)據(jù)結(jié)構(gòu)——對(duì)象模型 ??描述 系統(tǒng)控制結(jié)構(gòu)——?jiǎng)討B(tài)模型 ??描述 系統(tǒng)功能計(jì)算——功能模型
??典型的軟件系統(tǒng)使用數(shù)據(jù)結(jié)構(gòu)(對(duì)象模型),執(zhí)行操作(動(dòng)態(tài)模型)并且完成數(shù)據(jù)值的變化(功能模型)??聚集表示類與類之間的關(guān)系是整體與部分的關(guān)系。??泛化即繼承。
??動(dòng)態(tài)模型表示瞬時(shí)的、行為化的系統(tǒng)的“控制”性質(zhì),它規(guī)定了對(duì)象模型中的對(duì)象的合法變化序列。??所有對(duì)象都具有自己的生命周期,狀態(tài)是對(duì)對(duì)象屬性值的一種抽象。一個(gè)觸發(fā)行為稱作一個(gè)事件。??用狀態(tài)圖描繪對(duì)象的狀態(tài)、觸發(fā)狀態(tài)轉(zhuǎn)換的事件以及對(duì)象的行為(對(duì)事件的響應(yīng))。
??每個(gè)類的動(dòng)態(tài)行為用一張狀態(tài)圖來描繪,各個(gè)類的狀態(tài)圖通過共享事件合并,從而構(gòu)成系統(tǒng)的動(dòng)態(tài)模型。動(dòng)態(tài)模型是基于事件共享而相互關(guān)聯(lián)的一組狀態(tài)圖的集合。??用例模型描述的是外部行為者所理解的系統(tǒng)功能。
??用例是一個(gè)類,他代表一類功能而不是使用該功能的某個(gè)具體實(shí)例。用例的實(shí)例稱腳本。??一個(gè)用例模型的創(chuàng)建包括:定義系統(tǒng)、尋找行為者和用例、描述用力、定義用力之間的關(guān)系、確認(rèn)模型。??針對(duì)每個(gè)類建立的動(dòng)態(tài)模型,描述了類實(shí)例的生命周期或運(yùn)行周期。
??狀態(tài)轉(zhuǎn)換趨勢行為發(fā)生,這些行為在數(shù)據(jù)流圖中->處理,在用例圖中->用例,同時(shí)與類圖中的服務(wù)對(duì)應(yīng) ??數(shù)據(jù)流圖的對(duì)應(yīng):
數(shù)據(jù)存儲(chǔ),原點(diǎn)/終點(diǎn):對(duì)象 數(shù)據(jù)流:對(duì)象的屬性值或?qū)ο?/p>
對(duì)象模型描述了數(shù)據(jù)流圖中的數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)以及數(shù)據(jù)原點(diǎn)/終點(diǎn)的結(jié)構(gòu)。
??分析過程總是提取系統(tǒng)需求的過程。
??需求陳述的內(nèi)容:問題范圍、功能需求、性能需求、應(yīng)用環(huán)境、假設(shè)條件 ??面向?qū)ο蠓治鍪滓墓ぷ鳎航栴}域的對(duì)象模型。??對(duì)象模型的建立:
確定對(duì)象類和關(guān)聯(lián) 給類增添屬性
用適當(dāng)?shù)睦^承關(guān)系合并組織類
建立了動(dòng)態(tài)模型和功能模型后,再定義類中的操作
??應(yīng)該按問題領(lǐng)域而不是功能分解方法來確定主題。??腳本描述事件序列
??從OOA到OOD,是一個(gè)逐漸擴(kuò)充模型的過程,OOD即是用OO的觀點(diǎn)建立求解域模型的過程。??OO中,對(duì)象是最基本的模塊。
??對(duì)象之間,應(yīng)降低交互耦合,提高繼承耦合。??對(duì)象間存在 服務(wù)內(nèi)聚、雷內(nèi)聚、一般-特殊內(nèi)聚。
??OOD準(zhǔn)則:模塊化、抽象、信息隱藏、若耦合、強(qiáng)內(nèi)聚、可重用。
??類構(gòu)件的三種重用方式:實(shí)例重用(最基本的重用)、繼承重用和多態(tài)重用。??系統(tǒng)的總框架是基于問題域的。
??設(shè)計(jì)實(shí)現(xiàn)服務(wù)的算法:算法復(fù)雜度、易理解、易實(shí)現(xiàn)、容易修改 ??程序設(shè)計(jì)風(fēng)格中從所完成的功能看,有兩類不同類型的方法:
策略方法:檢查系統(tǒng)運(yùn)行狀態(tài),處理出錯(cuò)情況,并不直接完成計(jì)算或?qū)崿F(xiàn)復(fù)雜算法。實(shí)現(xiàn)方法:僅針對(duì)具體數(shù)據(jù)完成特定處理,用于實(shí)現(xiàn)復(fù)雜算法。
??OO測試:單元測試、集成測試、確認(rèn)測試
——授課教師:寧波大學(xué) 錢旭明老師
——總結(jié)人:寧波大學(xué)
張睿卿
第三篇:潘海云論文
?計(jì)算機(jī)的保護(hù)策略?
?
我們所處的時(shí)代是信息技術(shù)高速發(fā)展的時(shí)代,人們的生活越來越多地依賴于信息技術(shù)。它一方面提高了人們的生活品質(zhì),另一方面也給人們帶來煩惱。如何確保計(jì)算機(jī)處于安全的環(huán)境下提供給用戶使用,是計(jì)算機(jī)管理人員必須思考的問題。?
關(guān)鍵詞:公共計(jì)算機(jī)、硬盤還原卡、影子系統(tǒng)?
????????圖書館、網(wǎng)吧、多媒體教室、機(jī)場和復(fù)印店等公共計(jì)算機(jī)由于使用的頻率高,并且由于用戶操作的失誤,經(jīng)常會(huì)導(dǎo)致文件丟失、病毒危害,并受到惡意軟件和黑客攻擊等問題。另外,隨著公共計(jì)算機(jī)系統(tǒng)使用的時(shí)間長,垃圾文件增加,常導(dǎo)致計(jì)算機(jī)的運(yùn)行速度變慢。如何確保公共計(jì)算機(jī)在安全狀態(tài)下快速地運(yùn)行,是每一個(gè)使用者都關(guān)心的問題。目前,最主要的幾種加強(qiáng)計(jì)算機(jī)系統(tǒng)的防護(hù)技術(shù)有基于硬件的硬盤還原卡以及基于軟件的影子系統(tǒng)等。???????????硬盤還原卡?
????????硬盤還原卡,也稱硬盤保護(hù)卡,它可以讓電腦硬盤在非物理損壞情況下,恢復(fù)到最初的樣子。還原卡的主體是一種硬件芯片,插在主板上與硬盤的???(主引導(dǎo)扇區(qū))協(xié)同工作,在每次啟動(dòng)計(jì)算機(jī)時(shí)自動(dòng)恢復(fù)?盤信息,它可以讓潘海云論文????系統(tǒng)每次都保持在新裝機(jī)時(shí)的狀態(tài)。換句話說,不管是病毒、誤改、誤刪、故意破壞硬盤的內(nèi)容等,都可以輕易地還原。因此,它廣泛應(yīng)用在網(wǎng)吧、圖書館、計(jì)算機(jī)機(jī)房等公共計(jì)算機(jī)上。???????????影子系統(tǒng)?
?????????操作系統(tǒng),同時(shí)創(chuàng)建一個(gè)和真實(shí)操作系統(tǒng)一模一樣的虛擬化影像系統(tǒng),主要用于保護(hù)操作系統(tǒng)。它構(gòu)建現(xiàn)有操作系統(tǒng)的虛擬影像?即影子模式?,它和真實(shí)的系統(tǒng)完全一樣,用戶可隨時(shí)選擇啟用或者退出這個(gè)虛擬影像。用戶進(jìn)入影子模式后,所有操作都是虛擬的,不會(huì)對(duì)真正的系統(tǒng)產(chǎn)生影響,一切改變將在退出影子模式后消失。因此所有的病毒、木馬程序、流氓軟件都
?計(jì)算機(jī)的保護(hù)策略?
?
我們所處的時(shí)代是信息技術(shù)高速發(fā)展的時(shí)代,人們的生活越來越多地依賴于信息技術(shù)。它一方面提高了人們的生活品質(zhì),另一方面也給人們帶來煩惱。如何確保計(jì)算機(jī)處于安全的環(huán)境下提供給用戶使用,是計(jì)算機(jī)管理人員必須思考的問題。?
關(guān)鍵詞:公共計(jì)算機(jī)、硬盤還原卡、影子系統(tǒng)?
????????圖書館、網(wǎng)吧、多媒體教室、機(jī)場和復(fù)印店等公共計(jì)算機(jī)由于使用的頻率高,并且由于用戶操作的失誤,經(jīng)常會(huì)導(dǎo)致文件丟失、病毒危害,并受到惡意軟件和黑客攻擊等問題。另外,隨著公共計(jì)算機(jī)系統(tǒng)使用的時(shí)間長,垃圾文件增加,常導(dǎo)致計(jì)算機(jī)的運(yùn)行速度變慢。如何確保公共計(jì)算機(jī)在安全狀態(tài)下快速地運(yùn)行,是每一個(gè)使用者都關(guān)心的問題。目前,最主要的幾種加強(qiáng)計(jì)算機(jī)系統(tǒng)的防護(hù)技術(shù)有基于硬件的硬盤還原卡以及基于軟件的影子系統(tǒng)等。???????????硬盤還原卡?
????????硬盤還原卡,也稱硬盤保護(hù)卡,它可以讓電腦硬盤在非物理損壞情況下,恢復(fù)到最初的樣子。還原卡的主體是一種硬件芯片,插在主板上與硬盤的???(主引導(dǎo)扇區(qū))協(xié)同工作,在每次啟動(dòng)計(jì)算機(jī)時(shí)自動(dòng)恢復(fù)?盤信息,它可以讓潘海云論文????系統(tǒng)每次都保持在新裝機(jī)時(shí)的狀態(tài)。換句話說,不管是病毒、誤改、誤刪、故意破壞硬盤的內(nèi)容等,都可以輕易地還原。因此,它廣泛應(yīng)用在網(wǎng)吧、圖書館、計(jì)算機(jī)機(jī)房等公共計(jì)算機(jī)上。???????????影子系統(tǒng)?
?????????操作系統(tǒng),同時(shí)創(chuàng)建一個(gè)和真實(shí)操作系統(tǒng)一模一樣的虛擬化影像系統(tǒng),主要用于保護(hù)操作系統(tǒng)。它構(gòu)建現(xiàn)有操作系統(tǒng)的虛擬影像?即影子模式?,它和真實(shí)的系統(tǒng)完全一樣,用戶可隨時(shí)選擇啟用或者退出這個(gè)虛擬影像。用戶進(jìn)入影子模式后,所有操作都是虛擬的,不會(huì)對(duì)真正的系統(tǒng)產(chǎn)生影響,一切改變將在退出影子模式后消失。因此所有的病毒、木馬程序、流氓軟件都無法侵害真正的操作系統(tǒng),它們的所有操作都只是假象。???????????兩者之間的比較?
????????硬盤保護(hù)卡實(shí)現(xiàn)起來很容易,只要把保護(hù)卡裝到主板插槽上,再安裝相應(yīng)的驅(qū)動(dòng)程序,便可以實(shí)現(xiàn)保護(hù)的功能。同時(shí),硬盤保護(hù)卡還可以進(jìn)行網(wǎng)絡(luò)拷貝,只需要對(duì)網(wǎng)絡(luò)里的一臺(tái)計(jì)算機(jī)進(jìn)行設(shè)置和操作,就可以通過同一網(wǎng)絡(luò)里帶有保護(hù)卡的計(jì)算機(jī)進(jìn)行統(tǒng)一的設(shè)置。但它有一個(gè)很致命的缺點(diǎn),那就是每次啟動(dòng)都會(huì)對(duì)硬盤進(jìn)行一次讀寫,這樣對(duì)硬盤的壽命有很大的影響。其次,硬盤保護(hù)卡也不能完全保護(hù)我們的系統(tǒng),如機(jī)器狗病毒可以穿透保護(hù)卡,從而使我們的電腦感染各種病毒。另外,安裝和維護(hù)成本較高。除需要購置硬盤保護(hù)卡以外,還需要在主板上安裝保護(hù)卡以及負(fù)責(zé)日常保護(hù)卡的維護(hù),這將帶來資金的投入和人員的擴(kuò)充。?????????影子系統(tǒng)作為一個(gè)軟件,只需要在計(jì)算機(jī)上安裝即可。安裝后選擇?模式設(shè)置?,在模式設(shè)置里選擇?進(jìn)入影子模式?確定后就可以了。當(dāng)然,進(jìn)入影子模式的盤符自己可以隨便選擇,可以完全進(jìn)入影子模式,也可以使某個(gè)盤進(jìn)入影子模式。但是,如果想下載安裝其他程序,先退出影子模式,重新啟動(dòng)電腦后選擇進(jìn)入進(jìn)入正常模式,安裝成功后重新進(jìn)入影子模式。因此,必須重啟兩次電腦才能安裝好軟件,這將給維護(hù)工作帶來額外的工作量。另外,我們?cè)谕顺鲇白幽J桨惭b軟件時(shí),必須確保我們安裝的軟件和移動(dòng)存儲(chǔ)器是沒有病毒的,否則,由于我們先入為主的觀念,將會(huì)放松對(duì)計(jì)算機(jī)進(jìn)行查毒、殺毒。如此,病毒將一直存在于我們的計(jì)算機(jī)內(nèi),直到我們發(fā)現(xiàn)它。?
????????通過對(duì)這兩種保護(hù)方式的比較,我們了解各種保護(hù)方式有各自的優(yōu)缺點(diǎn)。但如果從經(jīng)濟(jì)和實(shí)用性的角度來看,影子系統(tǒng)是一個(gè)非常不錯(cuò)的系統(tǒng)保護(hù)工具,在公共計(jì)算機(jī)上的應(yīng)用更受到管理人員的青睞。?
??????????如何打造一個(gè)安全的公共計(jì)算機(jī)環(huán)境?
無法侵害真正的操作系統(tǒng),它們的所有操作都只是假象。?
??????????兩者之間的比較?
????????硬盤保護(hù)卡實(shí)現(xiàn)起來很容易,只要把保護(hù)卡裝到主板插槽上,再安裝相應(yīng)的驅(qū)動(dòng)程序,便可以實(shí)現(xiàn)保護(hù)的功能。同時(shí),硬盤保護(hù)卡還可以進(jìn)行網(wǎng)絡(luò)拷貝,只需要對(duì)網(wǎng)絡(luò)里的一臺(tái)計(jì)算機(jī)進(jìn)行設(shè)置和操作,就可以通過同一網(wǎng)絡(luò)里帶有保護(hù)卡的計(jì)算機(jī)進(jìn)行統(tǒng)一的設(shè)置。但它有一個(gè)很致命的缺點(diǎn),那就是每次啟動(dòng)都會(huì)對(duì)硬盤進(jìn)行一次讀寫,這樣對(duì)硬盤的壽命有很大的影響。其次,硬盤保護(hù)卡也不能完全保護(hù)我們的系統(tǒng),如機(jī)器狗病毒可以穿透保護(hù)卡,從而使我們的電腦感染各種病毒。另外,安裝和維護(hù)成本較高。除需要購置硬盤保護(hù)卡以外,還需要在主板上安裝保護(hù)卡以及負(fù)責(zé)日常保護(hù)卡的維護(hù),這將帶來資金的投入和人員的擴(kuò)充。?????????影子系統(tǒng)作為一個(gè)軟件,只需要在計(jì)算機(jī)上安裝即可。安裝后選擇?模式設(shè)置?,在模式設(shè)置里選擇?進(jìn)入影子模式?確定后就可以了。當(dāng)然,進(jìn)入影子模式的盤符自己可以隨便選擇,可以完全進(jìn)入影子模式,也可以使某個(gè)盤進(jìn)入影子模式。但是,如果想下載安裝其他程序,先退出影子模式,重新啟動(dòng)電腦后選擇進(jìn)入進(jìn)入正常模式,安裝成功后重新進(jìn)入影子模式。因此,必須重啟兩次電腦才能安裝好軟件,這將給維護(hù)工作帶來額外的工作量。另外,我們?cè)谕顺鲇白幽J桨惭b軟件時(shí),必須確保我們安裝的軟件和移動(dòng)存儲(chǔ)器是沒有病毒的,否則,由于我們先入為主的觀念,將會(huì)放松對(duì)計(jì)算機(jī)進(jìn)行查毒、殺毒。如此,病毒將一直存在于我們的計(jì)算機(jī)內(nèi),直到我們發(fā)現(xiàn)它。?
????????通過對(duì)這兩種保護(hù)方式的比較,我們了解各種保護(hù)方式有各自的優(yōu)缺點(diǎn)。但如果從經(jīng)濟(jì)和實(shí)用性的角度來看,影子系統(tǒng)是一個(gè)非常不錯(cuò)的系統(tǒng)保護(hù)工具,在公共計(jì)算機(jī)上的應(yīng)用更受到管理人員的青睞。?
??????????如何打造一個(gè)安全的公共計(jì)算機(jī)環(huán)境?
????????首先,在計(jì)算機(jī)上安裝影子系統(tǒng),然后進(jìn)入正常模式下進(jìn)行相關(guān)的設(shè)置。修改????????配置文件,設(shè)置默認(rèn)啟動(dòng)系統(tǒng)為單一影子系統(tǒng)或完全影子模式(主要根據(jù)公共計(jì)算機(jī)所在的場合所決定),并把選擇系統(tǒng)的時(shí)間設(shè)置為一秒,這樣一般的用戶將在默認(rèn)的情況下進(jìn)入影子模式。另外,設(shè)置進(jìn)入正常模式的密碼,以防非管理人員進(jìn)入真實(shí)系統(tǒng)進(jìn)行破壞。這樣,將保證只有管理人員才能對(duì)系統(tǒng)進(jìn)行管理和維護(hù)。當(dāng)然,管理人員必須在計(jì)算機(jī)上安裝日常經(jīng)常使用的軟件,如??????、???閱讀器、下載工具、影音播放器等等。當(dāng)大部分的用戶都需要用到其他的軟件時(shí),則需要管理員進(jìn)入正常模式下進(jìn)行安裝。雖然這給用戶和管理人員帶來一點(diǎn)麻煩,但從維護(hù)和安全的角度來看,它將大大減少計(jì)算機(jī)感染病毒的風(fēng)險(xiǎn)。?????????其次,公共計(jì)算機(jī)上須安裝殺毒軟件。雖然裝有影子系統(tǒng)的計(jì)算機(jī)在每次啟動(dòng)后都將自動(dòng)恢復(fù),但仍不能確保計(jì)算機(jī)是處于安全的狀態(tài)之下,例如使用者攜帶的?盤含有病毒或木馬程序等,因此需安裝必要的殺毒軟件進(jìn)行檢測和殺毒。但是,由于計(jì)算機(jī)處于影子系統(tǒng)狀態(tài)下,每次啟動(dòng)后系統(tǒng)都將被還原,這樣殺毒軟件的病毒庫將不能得到及時(shí)的更新。此時(shí)需?穿透?影子系統(tǒng),即把殺毒軟件的病毒庫文件夾排除在保護(hù)之外。例如,在安裝了影子系統(tǒng)???????????????計(jì)算機(jī)上,進(jìn)入正常模式,在軟件主界面點(diǎn)擊?例外列表?,在彈出的窗口點(diǎn)擊?添加文件夾?,然后單擊瀏覽,選擇病毒庫文件夾,確定后重新啟動(dòng)計(jì)算機(jī)。如此,每當(dāng)殺毒軟件自動(dòng)更新病毒庫時(shí),都可以把數(shù)據(jù)保存起來,而不會(huì)使病毒庫被還原。這將保證殺毒軟件能夠及時(shí)更新和有效地對(duì)?盤等外存儲(chǔ)器進(jìn)行殺毒和保護(hù)。?
????????最后,由于管理人員安裝了影子系統(tǒng),難免會(huì)產(chǎn)生先入為主的觀點(diǎn)。他們認(rèn)為系統(tǒng)完全處于保護(hù)狀態(tài)中,但我們并不能確保安裝的軟件或用戶攜帶的?盤沒有病毒或木馬程序。此時(shí),為了使用戶的信息更加安全,在此建議在公共計(jì)算機(jī)上安裝防火墻軟件,如天網(wǎng)防火墻。安裝完成后,把安全級(jí)別設(shè)置為中或高,此外也可以自定義??規(guī)則,把有害的數(shù)據(jù)包擋在你的機(jī)器之外。下面是設(shè)置一個(gè)防止別人用木馬冰河來控制計(jì)算機(jī)的規(guī)則:首先,把規(guī)則名稱和說明填好,免得以后不知道這條規(guī)則具有什么樣的作用;然后,在數(shù)據(jù)包方向就設(shè)
置成?發(fā)送?,木馬都是從內(nèi)到外的,對(duì)方的??地址就設(shè)置成?任何地址?,不論是誰想用冰河來竊取信息都沒辦法了。冰河使用的協(xié)議是???,端口是????,所以就選擇???協(xié)議,本機(jī)端口的????;最后,設(shè)置成滿足上述條件的時(shí)候就攔截,同時(shí)記錄在日志里,并且會(huì)警告一聲。這樣,就可以防止木馬冰河入侵計(jì)算機(jī)了。?
????????結(jié)語?
????????俗語說,沒有堅(jiān)固不摧的矛,也沒有攻無不克的盾。由于計(jì)算機(jī)技術(shù)的不斷發(fā)展,總會(huì)有最新的病毒出現(xiàn)并入侵我們的電腦,也總會(huì)有相應(yīng)的解決策略。作為一個(gè)公共計(jì)算機(jī)的管理人員,需及時(shí)留意計(jì)算機(jī)技術(shù)革新,保證計(jì)算機(jī)處于安全的狀態(tài)下運(yùn)行。?
件主界面點(diǎn)擊?例外列表?,在彈出的窗口點(diǎn)擊?添加文件夾?,然后單擊瀏覽,選擇病毒庫文件夾,確定后重新啟動(dòng)計(jì)算機(jī)。如此,每當(dāng)殺毒軟件自動(dòng)更新病毒庫時(shí),都可以把數(shù)據(jù)保存起來,而不會(huì)使病毒庫被還原。這將保證殺毒軟件能夠及時(shí)更新和有效地對(duì)?盤等外存儲(chǔ)器進(jìn)行殺毒和保護(hù)。?
????????
???
第四篇:張海娟上課教案
《真理誕生于一百個(gè)問號(hào)之后》教案
張海娟
教學(xué)目標(biāo):
1.研讀三個(gè)關(guān)于科學(xué)發(fā)現(xiàn)的故事,著重從“問號(hào)”、“真理”及“從問號(hào)到真理的過程”,正確理解“真理誕生于一百個(gè)問號(hào)之后”的含義。
2.能聯(lián)系上下文,理解含義深刻的句子。
3.體會(huì)作者的寫作特點(diǎn),學(xué)習(xí)用事例說明道理的方法,并能仿照課文的寫法,寫一段話。
4.引導(dǎo)學(xué)生認(rèn)識(shí)凡事多問幾個(gè)為什么的重要性。教學(xué)重點(diǎn):
理解三個(gè)關(guān)于科學(xué)發(fā)現(xiàn)的故事,能從具體事例中正確理解“真理誕生于一百個(gè)問號(hào)之后”的含義。教學(xué)難點(diǎn):
能仿照課文的寫法寫一篇短文,用具體事實(shí)證明一個(gè)觀點(diǎn)。教學(xué)準(zhǔn)備:
學(xué)生:查找與課文中相類似的事例。老師:多媒體課件。教學(xué)過程:
一、回顧復(fù)習(xí):
1.根據(jù)意思寫詞語。
2.作者在文中提出了一個(gè)什么觀點(diǎn)? 3.作者列舉了哪幾個(gè)事例來說明觀點(diǎn)?
二、新課:
1.比較三個(gè)事例在內(nèi)容、寫法上的相同點(diǎn)。(是啊,“從細(xì)小的、司空見慣的現(xiàn)象中發(fā)現(xiàn)問題、追根求源,最后把“?”拉直
變成“!”,找到了真理?!边@也是課文中的哪個(gè)自然段的內(nèi)容?)2.理解課文第二小節(jié)【縱觀千百年來的科學(xué)技術(shù)發(fā)展史,那些定理、定律、學(xué)說的發(fā)現(xiàn)者、創(chuàng)立者,差不多都很善于從細(xì)小的、司空見慣的自然現(xiàn)象中看出問題,不斷發(fā)問,不斷解決疑問,追根求源,最后把“?”拉直變成“!”,找到了真理?!浚ㄕ?qǐng)學(xué)生讀)
提問:這里的“?”號(hào)和“!”號(hào),它們代表的是什么?(科學(xué)家的疑問和尋求到的真理。)3.尋求科學(xué)真理的過程。
師:從疑問到找到真理這是一個(gè)漫長的過程,科學(xué)家們憑借著什么在這漫漫的長途中尋找到真理?請(qǐng)同學(xué)們自已讀課文第3、4、5段,找找看,看看三位科學(xué)家靠什么找到了真理。A、見微知著 出示句子:
●洗澡是一件非常普通的事情,而美國……敏銳地注意到……
(你是從“敏銳”一詞,體會(huì)到謝皮羅教授的善于發(fā)現(xiàn),敏銳的觀察力,對(duì)嗎?請(qǐng)你再讀這句話,把你對(duì)這個(gè)詞的體會(huì)讀出來)
師:洗澡是件再普通不過的事情了,謝皮羅卻敏銳地捕捉到一個(gè)細(xì)節(jié)……并抓住了問題的本質(zhì),這種本領(lǐng)就叫——見微知著。謝皮羅教授善于從細(xì)小的、隱約的現(xiàn)象中,看到它的實(shí)質(zhì),這種見微知著的本領(lǐng)同樣在波義爾和奧地利醫(yī)生身上找到嗎?
讓學(xué)生找出相關(guān)的句子,并交流。……波義爾立即敏感的意識(shí)到…… 他感到很奇怪,連忙叫醒兒子……(讀出對(duì)加點(diǎn)詞語的體悟)
師:看來要想發(fā)現(xiàn)問題,有所成就,首先得練就一雙銳利的眼睛,善于觀察到生活中的細(xì)枝末節(jié),能見微知著。
B、不斷發(fā)問、獨(dú)立思考、追根求源
師:請(qǐng)同學(xué)用波浪線畫出他們發(fā)問的句子。并寫寫你從中感受到科學(xué)家什么樣的品質(zhì)。
學(xué)生交流,教師引導(dǎo)。
那一連串的疑問其目的是為了——用文中的一個(gè)詞:追根求源,或者說是打破沙鍋問到底,其實(shí)發(fā)問的過程也是他們獨(dú)立思考的過程,(板書:追根求源 獨(dú)立思考)
讓咱們跟隨著這些科學(xué)家一起發(fā)問,一起思考,一起追根求源,請(qǐng)齊讀這些發(fā)問的句子。C、鍥而不舍(堅(jiān)持不懈)
提問:當(dāng)他們發(fā)現(xiàn)問題之后,他們是怎樣做的?謝皮羅? 學(xué)生找句子,并交流
●謝皮羅緊緊抓住這個(gè)問號(hào)不放,進(jìn)行了反復(fù)的實(shí)驗(yàn)和研究。
(我聽出來了,你強(qiáng)調(diào)了“緊緊、反復(fù)”,為什么要這樣讀?)
(因?yàn)檫@樣突出了他那堅(jiān)持不懈的精神。)
提問:波義爾是怎樣做的?你找到的句子是?你讀這句話你準(zhǔn)備強(qiáng)調(diào)哪個(gè)詞?
這一奇怪的現(xiàn)象……許多實(shí)驗(yàn)。(強(qiáng)調(diào)許多)
師:誰來說說那位奧地利醫(yī)生? 他百思不得其解……
師:“百思”說明他想的——很多很多,可是沒有找到答案。是放棄還是繼續(xù)研究下去?此時(shí)他可能在想?
總結(jié):這三位科學(xué)家在提出問題后,他們鍥而不舍、不斷探索,最終取得成功??磥恚綄た茖W(xué)真理的過程就是:見微知著+善于發(fā)問+不斷探索+獨(dú)立思考+鍥而不舍。
過渡:其實(shí)呀,科學(xué)并不是那樣神秘莫測,真理也不是遙不可及。
4.學(xué)習(xí)最后兩段。
請(qǐng)同學(xué)們讀課文第7、8自然段,說說你從中讀懂了什么? 學(xué)生交流。
總結(jié):是呀!科學(xué)并不遙遠(yuǎn),它可能就在我們身邊,只要我們遇事能多問幾個(gè)為什么,并不斷探索,在解決了這些問題之后,我們就能得到真理。
5.領(lǐng)悟“!”所蘊(yùn)涵的情感。
師:現(xiàn)在我們?cè)倏纯催@個(gè)感嘆號(hào)“!”,我覺得它不僅僅是一個(gè)符號(hào),一個(gè)“!”凝結(jié)了多少難以名狀的情感??!當(dāng)他們走向了成功,回首自己走過的歷程時(shí),他們激動(dòng)地、驕傲、興奮……對(duì)世人說(指板書):真理誕生于一百個(gè)問號(hào)之后;……讓我們也堅(jiān)定地說——真理誕生于一百個(gè)問號(hào)之后!
6.交流類似謝皮羅、波義爾、奧地利醫(yī)生這樣的事例。學(xué)生交流課前找的資料。
小結(jié):這些科學(xué)家成功的事例再次告訴我們一個(gè)不變的事實(shí),那就是——真理誕生于一百個(gè)問號(hào)之后
三、體會(huì)寫法,仿寫練習(xí)。
1、課文學(xué)完了,我們來看一看這篇課文跟我們以前學(xué)過的 課文在寫法上有什么不同?(本文先點(diǎn)明觀點(diǎn),然后通過具體事例證明觀點(diǎn),最后總結(jié)觀點(diǎn)。)
學(xué)生回答之后,教師總結(jié):這篇課文圍繞著“真理誕生于一百個(gè)問號(hào)之后”這一觀點(diǎn),列舉具體事例加以證明。這樣的文章叫做議論文,不同于我們經(jīng)常閱讀的記敘文。
2、“失敗乃成功之母”這句格言也是一條真理,現(xiàn)在就請(qǐng)你 們仿照本文的寫法運(yùn)用具體事例來寫一篇短文。
附:板書設(shè)計(jì):
20、真理誕生于一百個(gè)問號(hào)之后
問題 拉直 真理
?-------------→!見微知著+善于發(fā)問+不斷探索+獨(dú)立思考+鍥而不舍
第五篇:海張五教案5
《賤賣海張五》教學(xué)設(shè)計(jì)
翠巒第一小學(xué) 喬鳳英 教學(xué)內(nèi)容:
九年義務(wù)教育小學(xué)五年制第十冊(cè)第5課《賤賣海張五》。教材分析:
本文取自馮驥才的《俗世奇人》,文章敘述了一件張明山捏泥人戲弄取笑海張五的事。這個(gè)生動(dòng)、傳奇的故事充分體現(xiàn)了泥人張嫉惡如仇,不畏強(qiáng)權(quán)和技藝高超的特點(diǎn),海張五財(cái)大氣粗、橫行霸道的性格。學(xué)生在有感情地朗讀課文的基礎(chǔ)上品味富有表現(xiàn)力的語言,體會(huì)作者對(duì)人物動(dòng)作、語言、神態(tài)細(xì)致入微地描寫,激發(fā)他們熱愛民間藝術(shù)的美好情感。設(shè)計(jì)理念:
本文教學(xué)設(shè)計(jì)以文題中的“賤賣”為主線,在此主線兩側(cè)進(jìn)行兩個(gè)人物的對(duì)比教學(xué),其中也包含有眾人對(duì)海張五的態(tài)度與泥人張的態(tài)度的對(duì)比等,從而烘托泥人張不畏強(qiáng)權(quán)、智者不銳的高貴品質(zhì)。教學(xué)目標(biāo):
1.正確、流利、有感情地朗讀課文。
2、聯(lián)系文化背景領(lǐng)悟文章的內(nèi)涵,對(duì)民族文化有所了解,激發(fā)學(xué)生熱愛民間藝術(shù)的美好情感。
3、在品讀的過程中了解故事情節(jié)、體會(huì)作者對(duì)人物細(xì)致入微的描寫方法。教學(xué)重點(diǎn):
學(xué)習(xí)作者對(duì)人物動(dòng)作、語言、神態(tài)的描寫方法。教學(xué)難點(diǎn):
品味文章富有特色的語言,想象故事發(fā)生時(shí)的場景。教學(xué)方法:
以讀代講、討論法和談話法 學(xué)
法:
讀寫結(jié)合和合作探究法 教學(xué)準(zhǔn)備:
1.泥人張相關(guān)泥塑作品的圖片。
2.課前搜集“泥人張”相關(guān)的背景資料,了解“泥人張”稱呼的由來。
3.多媒體課件。教學(xué)時(shí)間:
2課時(shí)。教學(xué)過程:
第1課時(shí)
一、欣賞圖片、導(dǎo)入新課
1、泥塑欣賞(課件)
2、師:同學(xué)們,剛剛我們看到的是歷代泥人張傳人的泥塑作品,其比例之精確,傳神之精妙讓人嘆為觀止!而今天我們所要學(xué)習(xí)的課文主人公就是“泥人張”的創(chuàng)始人:張明山。
3、同學(xué)們,通過預(yù)習(xí)、查找資料,你們對(duì)我國民間藝人“泥人張”已經(jīng)有了一些了解。誰愿意把你查找的資料與大家進(jìn)行交流?請(qǐng)一位同學(xué)對(duì)張明山做以人物簡介。
師:張明山作為泥人張民間藝術(shù)的創(chuàng)始人,不但技藝高超而且聰明睿智,更有不少趣聞流傳于世,下面請(qǐng)同學(xué)們走進(jìn)趣聞之一,(板書課題:賤賣海張五)
二、初讀課文,提煉主旨
1.請(qǐng)同學(xué)們自由朗讀課文,注意讀準(zhǔn)字音,讀通句子。(學(xué)生自由讀課文)
2.讀了課文,誰能說說課文主要講了一件什么事?(引導(dǎo)學(xué)生根據(jù)故事的起因、經(jīng)過、結(jié)果來概括主要內(nèi)容。)
3.本文是誰和誰之間的較量?(泥人張和海張五)
4.請(qǐng)大家快速讀課文,想想泥人張和海張五是怎樣的人?你能各用一個(gè)字把他們兩個(gè)人的特點(diǎn)概括出來嗎?(引導(dǎo)歸納后板書:泥人張是“奇”,海張五是“狂”。)
三、研讀理解,深情感悟
1.在了解“泥人張”高超的手藝之前,我們先來認(rèn)識(shí)一下海張五這個(gè)人物。海張五狂妄、橫行霸道,在課文的哪些地方有所體現(xiàn)呢?
2.學(xué)生讀課文,找出相關(guān)語句畫出來。
3.指名讀相關(guān)語句。(課件同時(shí)出示句子)
(1)中間一位穿得闊綽,大腦袋,中溜個(gè)子,挺著肚子,架式挺牛,橫沖直撞往里走。
(2)跟著就是海張五的大粗嗓門說:“捏什么?狗不理包子吧!”隨后一陣笑,拿泥人張找樂子。
(3)他朝著正走出門的泥人張的背影叫道:“這破手藝也想賺錢,賤賣都沒人要?!?/p>
誰愿意再來讀讀這幾句話?結(jié)合具體語境,要讀出每句話應(yīng)有的語氣。
誰愿意將這幾句話的內(nèi)容用表演的形式展現(xiàn)給大家。(學(xué)生先練習(xí),再指名表演。)
4結(jié)合剛才的表演,讓學(xué)生再來讀一讀描寫海張五的句子,體會(huì)他的狂妄。
5.海張五的狂妄、橫行霸道被同學(xué)們演繹得淋漓盡致,真是了不起!對(duì)海張五的狂妄——“做買賣的地界,誰有錢誰橫,官兒也怵三分”,這里“怵”是什么意思?泥人張也怵他嗎?
提問:從哪兒能看出泥人張不怵他?(“泥人張只管飲酒,吃菜,西瞧東瞅,全然沒把海張五當(dāng)個(gè)人物?!保?.面對(duì)海張五的無理挑釁、侮辱,泥人張是怎樣“回報(bào)”他的?
“回報(bào)”為什么要用引號(hào)呢?(學(xué)生:回報(bào)原意是指報(bào)答別人,這里是回應(yīng)的意思。)
7.課件出示第8、9自然段。
“只見人家泥人張似乎沒聽見,左手伸到桌子下邊,打鞋底下?lián)赶乱粔K泥巴。右手依然端杯飲酒,眼睛也只瞅著桌上的酒菜,這左手便擺弄起這團(tuán)泥巴來:幾個(gè)手指飛快捏弄,比變戲法的手還靈巧。海張五那邊還在不停地找樂子,泥人張這邊把那些話在他手里的泥上全找回來了。隨后手一停,他把這泥團(tuán)往桌上一撂,起身去柜臺(tái)結(jié)賬。
吃飯的人伸脖一瞧,這泥人真捏絕了!就像把海張五的腦袋割下來放在桌上一般:瓢似的腦袋,小鼓眼,一臉狂氣,比海張五還像海張五,只是只有核桃大小。”
8.請(qǐng)同學(xué)們細(xì)讀這兩段話,并畫出描寫泥人張動(dòng)作的詞,說說從中你體會(huì)到了什么?(泥人張的技藝高超,只用左手,不用眼瞧,卻能“飛快”,捏的泥人 “比海張五還像海張五”“只有核桃大小”?!八坪鯖]聽見”“打鞋底下?lián)赶乱粔K泥巴”“把這泥團(tuán)往桌上一撂”是無聲的反抗,表現(xiàn)出了泥人張作為手藝人不畏強(qiáng)權(quán),敢于同惡霸勢力作斗爭的高貴品質(zhì)。)
9.理解重點(diǎn)句子:
(1)“海張五那邊還在不停找樂子,泥人張這邊把那些話在他手里的泥上全找回來了?!弊寣W(xué)生說一說,這句中的“話”指什么話?泥人張?jiān)趺丛谀嗌险一貋砹?
(2)“比海張五還像海張五”。
提問:本來捏的就是海張五,為什么還這樣說? 10.能用一個(gè)詞來形容泥人張的高超技藝嗎?(引導(dǎo)學(xué)生大膽說,只要意思貼近即可,如:心靈手巧、身手不凡??)在第9自然段中用了“比??還”的句式,讀一讀,想一想這個(gè)句子什么意思?(表示第1個(gè)比第2個(gè)程度更深)并模仿這個(gè)句式說一句話。
11.泥人張與海張五的較量并沒有結(jié)束,引讀“第二天??”,學(xué)生接讀后3個(gè)自然段。
12.泥人張與海張五較量的結(jié)果是誰贏了?(泥人張)泥人張用他高超的技藝、不畏強(qiáng)權(quán)的品質(zhì)贏得了大家的支持與敬佩,更維護(hù)了自己的尊嚴(yán)。他贏得奇,贏得妙,所以文中第1自然段用了什么修辭方法向我們介紹了這個(gè)奇人?(夸張的手法)
13.課件出示句子“天津手藝人中,捏泥人的‘泥人張’排第一,而且,有第一,沒第二,第三差著十萬八千里。”
讀讀這句話,換一種表達(dá)方式來說一說,體會(huì)哪種說法更好。(運(yùn)用夸張的手法,更能突出泥人張的技藝高超。)
齊讀這句話,“而且、沒、差”要重讀。
四、精讀內(nèi)化,品味賞析
1.結(jié)合自己的感受,有感情地朗讀課文。
2.用自己的話講述《賤賣海張五》的故事。
(1)學(xué)生練講。
(2)指名講故事。
3.讀完了這個(gè)故事,能用一句話說說這個(gè)傳奇的藝術(shù)家泥人張給你留下了什么印象嗎?
五、拓展延伸,積累運(yùn)用
填空:課文第8自然段有關(guān)動(dòng)作的詞語填寫,體會(huì)這些詞語運(yùn)用的妙處。
師:用天津百姓的話來說,泥人張“捏嘛像嘛”,作為泥人張的創(chuàng)始人張明山,《俗世奇人》作者馮驥才夸其手藝人中排第一,有第一,沒第二,第三差著十萬八千里。著名畫家徐悲鴻在《泥人張感言》中盛贊其風(fēng)骨。慈禧太后壽宴無視眾多金銀珠寶獨(dú)愛泥人張的泥塑。在歷代泥人張傳人的不斷努力和創(chuàng)新下,泥人張這一泥塑藝術(shù)形式以聲名遠(yuǎn)播、享譽(yù)世界。
六、布置作業(yè)
1.簡要寫一寫自己所了解的“泥人張”。
2.排練這個(gè)小故事,在活動(dòng)課上表演。
板書設(shè)計(jì):
泥人張:奇:不畏強(qiáng)權(quán)、技藝高超
智斗
海張五:狂:財(cái)大氣粗、橫行霸道
教學(xué)反思:
小組合作和設(shè)疑的教學(xué)方法極大調(diào)動(dòng)學(xué)生積極性,激發(fā)學(xué)生的學(xué)習(xí)興趣,在今后的教學(xué)中還要運(yùn)用。