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