關於部落格
  • 18103

    累積人氣

  • 0

    今日人氣

    0

    訂閱人氣

2000.10.30 管四

2000.10.30 管四 【上卷A面】 …帶講義來啊,有沒有?來,第五章,…有的沒的…,來,有沒有16頁?16頁是不是有第5個主題,軟體工程?軟體工程啊,是一門極年青的學問,發展迄今不過10年,這要注意哦,這是民國72年,72年那時候,∴算十年,這民國82年,82年,那現在已經89年,89年了,∴應該算快20年了,快20年,他主要的目的啊,這裡要開始畫,…聽不清楚…,他主要的目的是使軟體系統的發展能如同工程設計般,是不是上禮拜有教過?這個,今天要把這個結束掉哦,我們下禮拜要上第3章la,有一定的法則可循,在發展全程中可以予以生產管制和品質管制,”生產管制”畫線,”品質管制”畫線,他也幫你框了la,∴只要畫”生產管制”和”品質管制”就好,那我上禮拜是不是有跟你講過,生產管制是不是要使軟體盡早完成?然後品質管制是不是要發展一個好程式?記不記得?有沒有?有沒有講過?有嘛。好。 唯有如此,軟體發展才能擺脫藝術的方式而邁入科學方式,換言之,軟體系統發展需如同工程般的發展成好幾個階段,”好幾個階段”畫線,好幾個階段,你要參考,這裡是不是幫你寫好?page 22。是不是參考22頁?有沒有?22頁,22頁看一下,22頁,前面他幫你改了,改了頁數了,頁數是21頁,有沒有?等一下,是21頁,有沒有?有沒有?有沒有改?…有的沒的…,參考21頁,21頁是不是有5個步驟?有沒有?你看21頁,21頁是不是有5個,5個,6個步驟?6個步驟。調查規畫、系統分析、系統設計、程式發展、系統測試、系統建置與維護,有沒有找到?這裡有6個步驟。好,翻回來16頁,我們待會再講那6個步驟,∴分成好幾個階段,好幾個階段啊,那邊reference page 21,底下是不是寫21?還是22?22。改一下21。全程予以複審,好,全程予以複審,那個walk through啊,walk through,什麼叫複審?我們看那個,來,什麼叫複審?在19頁。把那個名詞看一看,19頁,19頁,請看19頁,第7個,第7個名詞,全程實施結構化複查,有沒有找到”複查”?複查就是複審,walk through,有找到啊,這個要注意,這個要再抄啊,就抄到下課都抄不完啊,∴我們用看的,這樣比較快,比較省時間啊,我們是用時間換取金錢啊,∴我們用看的比較快,我們看那個複,複查,要注意哦,一開始他沒有畫啊,就不要畫他,系統中任何一部分的設計,均應由第三者貫穿複查,這個包括你設計程式喔,一般人設計程式,設計完之後,一run有錯,不會去怪自己寫錯了,都會怪電腦有問題,系統有問題,os有問題,對不對?這都不對啊,要找別人幫你看啊,∴要由第三者貫穿複查,包括系統分析、系統設計、程式設計等,由於第三者的介入,這是重點哦,∴他幫尔畫線哦,由於第三者的介入,你用紅筆再畫la,用紅筆畫,由於第三者介入,可使錯誤盡早發現,第3者比較客觀,他可以幫你找出錯誤,以收集思廣益之效,進一步可防止程式之私產化,這一句話滿毒的,這一句話滿毒,什麼意思啊?這是為老闆設計的,∵你寫完程式之後,萬一你想加薪水、跳槽,你會跟老闆講說我要跳槽,你要不要加我薪水?那假設說你自己寫的程式,別人看不太懂,我想一樣嘛,任何人都看不太懂,除非加什麼?註解。應該聽得懂嘛,除非寫什麼?註解。…聽不清楚…,所以啊,這老闆會安排一個人在你旁邊看你程式,∴你要求加薪啊,或者要跳槽,老闆會說那你走啊,∴這要注意,他會安排第三者在你旁邊,∵你要寫一個程式,拜託,不是你在學校寫那種50行啊、60行啊,在公司寫程式,一般來講都是2、3仟行,都是很多模組,模組模組之間的關係,會定得很清楚,才寫得出來,∴這個要防止程式私產化,並可防止弊端發生,什麼叫弊端發生?防止你要求加薪la、你要跳槽,這是為老闆,老闆寫的,∴讀書啊,讀書的時候要少用goto啊,但是寫程式偶爾要用什麼?goto。聽懂嗎?goto、goto…聽不清楚…,甚至寫之後,要把他殺掉啊,點什麼?點exe檔。這不是,這不是說我們狠啊,這要保護我們自己啊,∵現在不景氣啊,動不動就裁員,還有現在公司啊,…有的沒的…,…cut…,…有的沒的…,…cut…,…有的沒的…,我們看那個16頁,16頁,…有的沒的…,…cut…,16頁這裡,16頁,16頁這裡,全程予以複審,好,walk through,並採用標準的方法,要注意哦,寫程式有標準方法,怎樣標準方法?就像我們講的,程式設計哪幾個步驟?記不記得?有沒有?程式設計幾個步驟?第一個叫需求分析,第2個叫什麼?畫流程圖,或寫演算法。第3個步驟叫程式撰寫,第4個步驟叫什麼?測試。第5個步驟叫什麼?寫註解。要寫註解,並採用標準方法,那所有的標準方法,在後面我們是不是有講到6個步驟?那6個步驟的標準方法。始能發展一個正確,這個正確就是good的程式,什麼叫good的程式?好的程式。正碓、成本低、結構好、易維護、極可靠之軟體系統,好,極可靠之軟體系統,好,我們看底下啊,底下為軟體工程一些重要的結果,第一個結果叫模組化程式設計法,這個上禮拜是不是有抄過?結構化程式設計,第一個重點叫由上而下,第2個重點是模組化程式設計,記不記得?第3個一定要能夠變成一個什麼?模組。模組要變成一個什麼?程式。記不記得?那藉由模組之間的耦合力,要越弱越好,內聚力,要越強強好,這個都會考哦,這個都必考哦,不管你考二技、插大、研究所,這些都必考,一定要知道,…cut…,模組化程式設計法,一開始要注意聽哦,常常我們看到一個程式,更綿長達數頁報表紙,程式不是比長的,要注意,程式不是比長的,雖然整個綿綿不絕十分壯觀,事實上絕非好的程式法,不但看起來十分吃力,維護起來更屬不易∵程式,好,這邊開始畫,這邊是重點,程式必須模組化,這在上禮拜就講過,程式一定要模組化,模組化就是副程式,就是寫一個副程式,即一個程式應分解成若干功能獨立的模組,這一直畫哦,你要把程式分成模組,每一個模組應盡可能與其他模組無依賴關係。他已經幫你註解了,這叫內聚,耦合力比較什麼?比較弱。兩個之間的耦合力要很弱,模組是任一具獨立的功能的程式片斷,好,後面不要畫,例如fortran中可為主程式、副程式、函數等,最常用的標準,好,這邊再畫,最常用的準是以不超過二頁報表紙為限,要注意,一頁是66行,好,你回去算,一頁是66行,∴二頁應是132行,那這本晝這邊寫約120行,好,那後面再畫,常一個模組太長時,應切成二個模組,這我在上禮拜是不是都講過?好,模組跟模組之間的連繫,應透過參數的傳遞。好,這要畫起來,好,這第一個叫模組化設計,第2個是由上而下,這我上禮拜有講過,這標題畫起來,Top-Down,但是注意聽哦,那個最近的物件導向是什麼?butter up。Butter up。他是由下而上,他是由下而上。但是結構化程式就是由上而下,他從上面畫到下面的,那注意哦,由上而下程式設計法,一開始就要畫,由於人類有限的心智無法克制重重複雜,∴這裡告訴你說人類的腦袋是有限的,∴你讀書,讀一讀,可能會忘掉,只有忍耐,要常常讀,這是正常的,假設你今天不忘的話,那你就是天才,你就是天才,過目不忘就是天才,∴這邊啊,我們人都一樣la,包括我們也是一樣la,一定會忘,我是也會忘la,∴常常要看,除了這個東西不用看,∵這個東西我教了20幾次,∴不會忘,…有的沒的…,好,這邊要注意哦,這邊啊,解決辦法是,之一是由上而下程式設計法,要注意哦,他說啊,人類的心智無法克服重重複雜,因此造成軟體不可靠性,常常會有錯誤,…聽不清楚…,解決的辦法之一是由上而下程式設計法,亦常稱為逐步細化法,這畫起來,∴由上而下,又稱為逐步細化法,或逐層抽象法,一層一層抽出來,∴我在上禮拜好像有講過這一個東西,記不記得?成績處理系統要分成什麼?I、P、O。這叫input、process、output,記不記得?然後我說這個再分,∴這種就由上而下,好,這不要忘掉了,也叫做逐步細化法,也叫逐層抽象法,好,一直畫,重點在先考慮最高層的總功能,欲實現此總功能,需先實現次高層功能,即將總功能分為若干次功能,依此類推,直到最底層為基本功能而後,而後止,就是我上次講過的,你是不是到這邊是最基本功能?那這個最基本功能就是我們講的,叫仵麼?模組。記不記得?模組。好,第3個,結構化程式法,這畫起來,然後這一行的最後,一句話,任何的程式均可藉下列3種基本結構表現出來,有沒有找到?3種基本結構,第一個叫什麼?循序結構。畫起來,循序結構,畫起來,然後再看那個17頁,17頁是不是第2個?第2個叫什麼?選擇結構。把他畫起來,選擇結構,把他畫起來。然後第3個是不是循環結構?17頁的下面是不是有循環結構?有沒有?把他畫起來。…有的沒的…,循環結構啊,循環結構,畫起來,循環結構後面是不是有測,前測,前測式迴圈,有沒有找到?畫起來,這我講過哦,前測叫while loop,記不記得?然後是不是有個後測?後測叫repeat loop,記不記得?還有一個,自己補一下,還有一個固定次數,這都教過了 哦,有3種哦,一種叫前測,一種叫後測,一種叫固定次數,這個不要忘掉哦,3種,那我記得我那時候講過,這個至少做,至少做一次,至少做一次,至少做一次,這個不要忘掉啊,至少做一次,好,請翻過來,看那個18頁,18頁啊,18頁這邊啊,這邊有一個例題9,這我上課是不是抄筆記給你了?有沒有?你看一下,是不是抄筆記給你?這就上禮拜抄的嘛,抄,是不是抄的很長?然後例題10,這是不是講過了?這個流程圖是非結構化,記不記得?我那個時候是不是有跟你講說可以改成什麼?結構化。好,例題11,注意了哦,the advantages,advantages是優點,他都幫你註解了,好,of structured programming,要注意,structured programming是結構化桯式,are,要注意,他跟你講結構化程式的優點是什麼?A,easy to read。我上禮拜是不是有寫4點給你?容易閱讀,容易除錯,對不對?程式,程式嘛,模組較小,不容易寫錯,對不對?容易造成什麼錯?界面傳遞錯誤。記不記得?記不記得?第3個什麼?第3個分工合作。有沒有?發揮團隊精神。有沒有?使軟體盡早完成。記不記得?應該都有聽過嘛,有沒有?那要注意哦,是不是有4個優點,但是有兩個缺點?第1個缺點叫程式較長。記不記得?第2個呢?執行時間較長。記不記得?∴注意哦,他跟你講優點是什麼?A,easy to read。這沒有錯。B呢?May save the cpu time。錯,會不會節省時間?不會。程式比較長,不會節省時間。C呢?easy to maintain。好,這沒有錯。D呢?program may be small。這D錯掉,程式不會比較小,反而比較什麼?比較長。∴這一題答案是A、C。這是不是講過了?有沒有講過?有沒有?上禮拜講過嘛。好,我們再看那個,第4個叫少用goto的程式法,少用goto程式法,這待會看,黑板待會要抄,這邊就是少用goto法,我們看那個,先看第5點啊,第5點,在18頁第5點,第5點是不是有一個叫可讀性程式型態?有沒有找到?可讀性程式型態。凡是能夠增加可讀性者,均應採用,要注意,這邊這要畫起來,凡是能夠增加可讀性者,均應採用,例如變數的命名應有意義,好,底下他是不是幫你寫好了?那是我叫他們要註解,是不是有一個叫sum,s-u-m,s-u-m叫什麼?總和。有沒有找到?總和。還有,增加註解,寫程式一定要有註解,寫程式一定要有註解,以前我在學校,規定學生一定要寫註解,不寫註解,程式就完蛋,程式就完蛋,一定要寫註解,像那個大學生更奇怪,我叫他寫一個程式,…聽不清楚…,好,一定要,寫程式一定要寫什麼?註解。一定要寫註解,那老師才會看得懂,增加註解,或do迴圈用下列凹入撰寫程式方法表示,凹入撰寫程式,他已經幫你畫了,再畫一下,我是不是講過?像C語言、passcal,是不是有凹入結構?記不記得?凹入結構提高程式什麼?可讀性。∴在19頁,這要注意聽哦,我教的東西都很正統,我教的都是很正統,∴這要注意聽,以後你讀…讀,都很輕鬆,…有的沒的…,…cut…,看19頁19頁上面是不是有個do 30?30,continue,有沒有找到?do 30,30,continue,有沒有?do 20,20,continue;do 10,是不是10,continue?有沒有?是不是凹入結構?好,再看第6個,主程式師隊,有沒有找到主程式師隊?你寫程式,要寫程式,一定要組個team,∴一般來講都要有個team,但是台灣的公司,軟體公司都是一個啊,好,從寫程式,寫程式、設計程式、debug,到寫document、跑程式,包括掃…聽不清楚…也都是一個人,那這是不對的,這是不對的,∴在這邊跟你講啊,在進行大程式設計時,應組織一個主程式師隊,包括第一個是主程式師,好,這個畫起來,要注意哦,你要,你要知道這種觀念啊,∴畢業以後啊,讀完畢業以後,你第一個志願,進入資策會,資策會,他有一個叫軟體工程開發處,專門在做這種case,他裡面就是一群人在做,不是一個人在做,他是一群人做一個大case,什麼公家機關的電腦啊,接下來做…有的沒的…,好,那第一個,主程式師隊,在進行大程式設計時,應組織一個主程式師隊,包括第一個主程式師,這個主程式師,就是所謂的project leader,project leader應該聽過吧,project leader,在那個公司叫project manager,manager,這個叫做,這個叫做專案什麼?經理。專案經理。應該知道嘛,專案經理,但是一般來講,都是講什麼?leader。 leader。這個就是負責這個project的,這叫主程式師啊,那注意,第2個啊,第2個叫程式庫員,程式庫員這個層次就很低啊,其實啊,這個是外國的東西,其實在台灣啊,這邊啊,一個軟體啊,除了這以外,底下啊,會有3種人,一個叫SA,一個叫SE,一個叫P,program,PR,這個叫做系統分析師,這叫系統工程師,這叫什麼?程式設計師。會有這3種人,會有這3種人,會有這3種人,這專門是搞什麼?這專門搞那個os方面的,∵你要寫程式要,要架上去的時候要怎麼架?要這個人負責。那整個程式是由這個來規畫的,系統分析師規畫出來,規畫出來之後,由這個來codeing,應該聽得懂嘛,由這個來寫程式,然後包括什麼?測試。包括註解,這不要抄,這不要抄,…聽不清楚…,∴以前啊,以前資策會,資策會不是有軟體檢定嗎?他的軟體檢定,這叫甲級,這種叫乙級,這種叫丙級。他分成3等,甲、乙、丙。但是我現在不曉得說有沒有分啊,…聽不清楚…,…cut…,18頁啊,…有的沒的…。…cut…,18頁啊,我們現在講到19頁,對不起,19頁,19頁是不是程式庫員?程式庫員負責什麼?文書、跑程式、記錄,要注意哦,文書就是做什麼?document。文件。做文件,跑程式、記錄等工作,那你看這個寫的實在是,以使主程式師不分心於雜務,你看這個多誇張啊,這個程式,他程式庫員,就是程式這個哦,程式設計師哦,他要做雜務,做什麼?掃地、泡茶。有沒有?你看這個寫的實在太誇張了。第3個叫支援程式師,要注意,這個就很可惡了,這叫backup programmer,backup programmer,這叫什麼意思?這個backup programmer是什麼?備用。備 用嘛。是不是備用?意思是說假設程式師要求加薪的時候,就可以把他幹掉了,有沒有?∴你看,一旦主程式師出缺,看到沒有?這個很壞哦,可隨時什麼?接捧。這都是寫給老闆,老闆的,這都是為了老闆在設計的,好,∴注意哦,現在不太會考這種東西,∵以前啊,二技有考什麼?解釋名詞。現在不可能考解釋名詞,∴就看一看算了,好,我們看第7個,第7個是不是叫全程實施結構化查詢?這個複查,這是不是剛才講過了?walk through,這講過了,好,第8個是不是良好文件說明?要注意哦,documentation,好,這一開始他有畫,當一個軟體系統發展完成後,應將所有之細節具文字,即將工作名稱,好,後面就不要畫了,他沒畫你就不要畫,目標描述、系統流程圖、檔案設計表、輸出輸入媒體設計表、程式流程圖、程式描述表、測試、點…點,按一定,好,這要畫起來,按一定標準格式以具體文字、圖表表示之,好,後面呢,IBM推出HIPO,這HIPO把他框起來,HIPO是重點,HIPO是hierarchical,hierarchical要注意哦,hierarchical啊,input process output charts,要注意,hierarchical是什麼?層次。Hierarchical是層次,層次,層次系統,層次系統啊,其實這個層次系統是指誰?指這個圖。這個圖就是誰?這個啊,這個啊,這個,這個圖就是什麼?結構圖。這個圖就是結構圖,∴這邊有一個hierarchical input process output charts,input跟process output加起來就IPO,IPO圖,以電腦來協助文件的製作,以電腦來協助文件製作,什麼叫HIPO?要注意,HIPO是一種協助描述軟體系統,有沒有找到?描述軟體系統不同層次,”不同層次”他是不是幫你框起來?就是結構圖。就是這個。不同層次啊,其目的是在top down設計,由上而下設計,担供一種結構化的方湗,讓人可以很快的了解某一個軟體系統的功能,並利用圖解法,” 圖解法”,這框起來,圖解法就是,底下,底下會看到了,”圖解法”框起來,表示出每一功能的輸出、處理,輸出的,輸入、輸出,輸入、處理、輸出的關係,I-P-O關係,∴這種圖要注意,在底下是不是有3個?第一個叫目視目錄表,目視目錄表,又稱為hierarchical chart,這畫起來,hierarchical chart,就是這個東西,hierarchical chart就是這個東西,第2個要注意,描述圖,或細部圖,他是下一頁,描述圖或細部圖,是在20頁,20頁是不是,這裡有一個圖,這裡有一個圖,描述圖,要注意哦,上面那個是結構圖la,第2個圖叫描述圖,描述圖,大概看一看就好,這個考出來的機率滿低的,這是描述圖,那什麼叫細部圖?這個圖沒有寫得很詳細,什麼意思呢?他輸入,注意看哦,他輸入是不是寫一個異動記錄,跟主檔記錄?有沒有講說異動記錄什麼東西?主檔記錄有什麼東西?沒有講,對不對?假設你講得很詳細,這叫細部圖,有沒有?∵調薪對不對?像我舉個例子講喔,假設你畫這樣,這邊是輸入,那這邊假設異動記錄,異動記錄一般來講,異動記錄一般來講一定會有什麼?一定會有一個叫,像說員工代號,員工代號,然後第2個一定什麼?這個調薪。調薪。到底要加還是減,調薪。那這個主檔,主檔記錄,就很多了,主檔記錄,第一個一定是什麼?員工代號。然後,到底是啊,性別啊,性別,然後薪水,很多la,然後再來是住址,很多很多,這個叫主檔記錄,這個假設都寫出來,叫做細部,聽懂嗎?細部圖。一定要寫很細細的,∴在這邊有一個概略圖跟什麼?細部圖。好,∴20頁這個圖啊,20頁這個圖叫做概略圖,那我現在寫在黑板上這個叫細部圖,假設輸入再描述的話,那第9個,程式驗證,那個不要看,打叉,那個不要看,那個已經不合了,那我們講那個第4個,第4個叫少用goto,∴這邊這個要抄一段東西,這要抄一段東西,先抄我再來解釋啊,注意,這個地方很重要,這個必考,…cut…假想,假想記憶體,有兩種方式,一種叫需求分頁,demand page,在程式要執行前,必須先載入主記憶體,要注意哦,程式要執行,這沒有錯,執行前一定要放到什麼?主記憶體。記不記得我們講過?我記得那時候講過,link之後,link之後,要注意,link,會產生什麼?AAA點什麼?EXE。∴你要RUN的話,要注意,你要RUN,你要RUN一定要有一個東西,這個東西是什麼?LOADER。記不記得?LOADER是把程式放到什麼?主記憶體。…以便執行,聽不清楚…,好,當程式位址空間大於,要注意,什麼叫程式位址空間?注意,這是考古題,這是考古題,程式位址空間大於主記憶體,什麼叫程式位址空間?這個指的,要注意,指是指這個檔。AAA點什麼?EXE。這個指這個檔,就是指這個啊,∴我這邊註解啊,程式,要注意,假設這種程式,程式指的是AAA點什麼?AAA點C。要注意,程式指的是這樣,那這個東西叫什麼?叫source file。叫原始程式檔。或叫來源檔,來源,來源,source file,來源檔,來源程式檔。這個不太一樣哦,這個沒有Link,這是經過link以後產生,∴假設你的程式位址空間大於主記憶體空間,程式即無法執行,∵程式,程式,你的這個程式太大了,沒辦法放進來,假設你程式100k,這邊只有50k,放不進來,此時可將程式分成許多PAGE,很多PAGE,∴把程式分很多PAGE,並將主記憶體分成與PAGE相等大小之BLOCK,或者叫frame,區塊,區塊,注意哦,這個page,注意,注意,這一個page,一般來講都是一個frame,那考試的時候,都是跟你講說他是1K byte,1K byte,程式要執行時,只需載入要用的page即可,要注意哦,要用的page即可,好,你趕快註解,我左邊擦掉了,再寫一段,…聽不清楚…cut…,若參考的page不在memory內,要注意,假設你要,你要用的那個page,不在主憶體裡面,必須先移出某頁,先移出某頁,注意,先移出某頁,再將此頁移入啊,再將此頁移入啊,如此重覆的page in、page out,最後也可以得到執行結果,這邊我要擦掉了哦,快點哦,…cut…我這邊寫個例子啊,這邊舉個例子,我待會就要解考古題,這個例子滿重要,∵這東西在OS還會看到,作業系統,好,看這邊,從這邊開始看啊,等一下,從這邊開始看,從這邊哦,處理過程,第一個步驟,loder僅載入部份page,這什麼意思?現在這邊啊,有4個,這邊記憶體才4k,這是我的假設啊,這邊啊,這邊的程式總共有8k,∴他放進來只放一部份,他放進來放一部份而已,∴這邊放進來,這裡,這4個page,放進來,∴這邊放了一部份的page,就是4k,這邊4k而已,好,這邊執行程式,注意聽哦,執行程式,1到1000,goto 1000,假設主程式,這個執行下來,這邊第一個動作哦,注意,放進來,這第一個動作,執行到這裡,這第2個動作叫goto 1000,今天1000假設在這邊,注意,1000假設在這邊,跳過來就可以,是不是跳過來就可以?這叫擊中。聽懂嗎?擊中。今天假設1000不在這裡面,慘了,1000假設在這裡面,慘了,叫未擊中,聽得懂嗎?沒有擊中。就是沒有在裡面,叫沒有擊中,∴你看這邊呢,若遇到goto 1000,敘述,行號1000不在memory內,”不在memory內”這叫未擊中,沒有擊中,hit叫擊中,沒有擊中將產生page fault interrupt,這叫頁誤中斷,頁誤中斷,這屬於呢,屬於軟體中斷的一種,中斷有三種,要注意,中斷有三種,一種叫硬體中斷,一種叫軟體中斷,一種叫I/O中斷,像這種是屬於軟體中斷,硬體中斷像記憶體死掉了,那叫硬體中斷,好,記憶體死掉了,那個,那個中斷,好,這邊要注意哦,什麼叫記憶體死掉?知道嗎?記憶體壞一個bit,壞一個bit,用command也可以檢查出來,已經壞掉了,某一個bit壞掉了。 ∴產生中斷,那產生中斷以後,一定要執行什麼?要執行中斷服務常式。叫ISR,Interrupt service routine,ISR。處理page in跟page out的問題,那注意聽哦,什麼叫page in跟page out?∴這邊呢?第3個步驟,他會產生中斷,生中斷做什麼事?注意聽哦,他處理ISR,處理ISR做什麼?你要先決定,要把這4個page,哪一個page移出去,注意,這4個page,哪一個page移出去?∴假設好,這個page移出去。先page out,先page out,把這,這一頁移出去,再把這一頁怎樣?移進來。再page in。但是你想一想,為什麼要把這頁移出去?就像說今天,這教室假設坐完了,突然有一個新生進來了,怎麼辦?要怎麼辦?你不能叫他坐地上嘛,那不可能嘛,那這時候怎麼辦?聽兩次的,已經兩次的,專科跟專五的聽得差不多了嘛,好,那個專科生聽過的就請他出去,可以了,∴先補的先出去,聽得懂嗎?第2種叫什麼?要注意,∴這邊有一個策略,先進先出,第2個策略就是久未使用者先移出,這個程式很久都沒用到,要叫他出去,什麼程式很久都沒用到?一開始放進來的時候,連debug都會放進來,debug知道嗎?除錯程式。除錯程式你不一定會用到啊,∴電腦會去挑,第一個把除錯程式怎樣?放回去。把他請回去。這叫久未使用者先移出。第3個,最佳取代策略,什麼意思?永遠都用不到la,就像說教室裡面有一個永遠在打瞌睡,那已經沒有什麼前途了,對不對?請他出去。這叫最佳取代策略。∴3個策略,∴用哪個策略?要看啊。電腦一般來講是用這個策略,電腦,電腦一般來講是用這個策略,∵這種策略很難做,很難做。這種策略會有異常現象,abnormality,我們到時候會講,OS會講,這種策略是沒有異常現象,∴電腦採用,無異常現象,以後我會講,沒有異常現象,以後再講,現在先不要講,∴電腦採用,電腦採用此方法,∴他要處理page in跟page out,∴先page out,再page in,但是注意聽哦,你,你,你就畫這樣,移進移出,移進移出,是不是可以解決掉?∵你程式是不是比較大?你抄一進一出,一進一出,∴你常常看你程式run得很慢,這個,最常看到是不是電動玩具?電動玩具快的人去玩,被你打死了,對不對?他會跟你講請等一下,對不對?然後他又,那個燈又亮了,開始在抓東西,是不是又抓一個快的出來跟你對打?聽懂嗎?然後你又把他打死了,他是不是又找一個快的進來跟你對打?跟你對打,對不對?∴這種就是一進一出,∴page in之後,繼續執行,好,我們看這個優點,來,優點就是可解決程式位址空間,注意哦,可解決程式位址空間大於主記憶體的問題,這是考古題,可解決程式位址空間大於主記憶體的問題。好,第2個呢,程式不需要連續儲存,要注意哦,這個以後會講,不需要連續儲存,殘餘空間比較小,要注意,這種page,page啊,他比較啊,畫在這裡,畫在這裡,畫在這裡,他不要連續儲存,好,∴他的殘存空間比較小,這個等待,這個change啊,好,OS會講,OS我們會講,OS會講。好,那缺點要注意哦,常常page in、page out,這剛剛講的,常常要做這個動作,這個動作做什麼?∵這個記憶體是在我們的主記憶體裡面,那這個在哪裡?硬碟裡面。∴常常要做什麼?I/O嘛。速度怎樣?慢下來。為什麼會慢?主記憶體的速度是以這個為單位,這個磁碟是以這個為單位,這個應該知道吧,這個ms是10的什麼?負3次方。這10的什麼?負9次方。這應該記得吧,∴哪個速度快?這個快。是不是這個快?這個是不是太慢了?∴一進一出,速度會怎樣?慢下來。∴你看,常常page in、page out,使得程式執行效率降低。好,你抄一抄,我全部都擦掉了哦,我全部都擦掉了哦,…cut…,喂!…喂!注意聽哦,你現在這個啊,有一個page system,這個分頁,這個分頁系統,要注意,那邊…聽不清楚…主記憶體只有3個page,主記憶體只有3個page,程式Q執行時,需要…聽不清楚…5個不同的page,∴上面這個是在記憶體,在那個磁碟裡面,注意,這個號碼是在磁碟裡面,這個是,東西是在記憶體,他說啊,需要5個不同的page,當Q執行,會產下列各個page address,∴你要參考這些東西,注意聽哦,你要參考這些東西,好,一開始是空的,聽好哦,一開始主記憶體空的,主記憶體空的,沒有東西,∴你要參考第2頁,第2頁是不是不在裡面?∴沒有擊中。沒有擊中。你要參考第3頁,第3頁有沒有在裡面?沒有在裡面。∴沒有擊中。你要參考第2頁,第2頁是不是在裡面?∴這叫擊中了,這叫擊中了。在裡面了哦,是不是在…聽不清楚…這裡面?擊中了。我要參考第1頁,第1頁有沒有在裡面?沒有在裡面。∴2、3、1。這個不在這裡面,請問要移走誰?2號。現在誰先進來?∴這個要注意,在電腦裡面會有一個東西,這個東西叫Queue,Queue叫什麼?佇列。Input什麼?input什麼?佇列。誰先進來?2號先進來。誰再進來?3號再進來。誰再進來?1號進來。∴先移的為?2號。這聽得懂嗎?先移走2號,把這移走,∴移走了之後變什麼?變成這裡5、3、1。∴注意,這個queue變了,這個queue變成什麼?3、1、5。5進來了。好,2號有沒有在裡面?被移走了。是不是被移走了?∴沒有擊中。∴把誰移出去?把3號移出去。3號移出去,∴這邊1、5、2、3號移出去,∴2取代這個3號,好,這個不在裡面,那誰移走了?1號移走了。∴1號移走了。∴1號移走了。這裡5、2、4,好,這個在裡面,這個叫什麼?擊中。∴5、2、4,那3號不在裡面,∴移走誰?5號。5號移走了。∴5號移走了,2、4、3。這邊呢?這邊呢?5號移走了,好,這個呢?在裡面。這叫擊中。∵這個是3、2、4。好,這個不在裡面,移走誰?移走2號。∴移走2號,4、3、5,移走2號。移走2號。好,這個不在裡面,移走誰?移走4號。∴移走4號,變3、5、2,∴移走4號,好,那這擊中幾次?3次。∴我們算failure,好,考試的時候考failure,failure叫什麼?失敗。擊中3次,失敗呢?9次。好,那Hit ratio多少?Hit ratio是算成功的啊,∴擊中3次,總共12次,∴比率多少?12分之3等於多少?4分之1,4分之1,這個多少?25 percentage。∴25 percentage。這個效率滿差的。 來,我再講第2個,…有的沒的…,一開始就空的,沒有擊中,這放進來,這個不在裡面,放進來,這裡要注意哦,這個不在裡面,這個寫過來,好,這邊呢?不在裡面。2、3、1。好,這不在裡面怎麼辦?看,看前面3個。要注意,看前面3個。誰最久沒使用?1、2、3,是不是這個最久沒使用?把3怎樣?移走。3移走,∴這個進來,這個是不是在裡面?這叫什麼?擊中。好,這有沒有在裡面?沒有。對不對?看前面3個,把誰移走?把誰移走?1號移走,∴把1號移走,好,這在裡面,這叫擊中,2、5、4,這個沒在裡面,怎麼辦?你看前3個。前3個把誰移走?2號移走。∴2號移走。這個不在裡面,把誰移走?看前3個。4號移走。4號移走。好,這個在裡面,這個就叫擊中,好,這個在裡面,這叫什麼?擊中。好,注意,他擊中幾次?1、2、3、4、5。∴失敗幾次?failure幾次?12扣5,∴失敗幾次?7次。好,那他的hit ratio,擊中率是多少?擊中率等於12分之7,再乘以佰分之100,∴這個相當於42 percentage。這個有問題嗎?這樣做一做有沒有問題?你抄一抄,我們動一下。…cut…,這個要注意,不在裡面,∴這邊要放進來,好,這個在裡面,∴擊中,這不在裡面,放進來,好,注意哦,這不在裡面,怎麼辦?看未來。看未來。未來有誰?未來有誰?有2號、有3號。有沒有1號?沒有1號。沒有1號。∴1號沒有未來,把他請出去了,這個聽懂嗎?這個能不能聽得懂?這聽不懂麻煩了哦,你要去找書哦,2號在裡面,這叫擊中,2、3、5,這個不在裡面,看未來,未來有誰?5號、3號、2號。2號是不是最遙遠?∴2號,把他移走。最遙遠的,把他移出去。這當然會擊中,在裡面,這當然會擊中,∴4、3、5。好,那這個不在裡面,你看未來,未來有誰?未來有誰?未來有5、2。對不對?有5,有2。2沒有用。沒有未來之後,再看什麼?以前。再看以前。∴5、2,5、2,然後再看以前,以前有誰?3,4。3、4。4是不是最遙遠?把4移走。∴把4移走。好,這個在裡面,這叫做擊中,好,這在裡面,這叫擊中,那這個擊中幾次?好,我們剛才是算失敗la,失敗幾次?失敗等於1、2、3、4、5、6,6次。那hit ratio多少?hit ratio等於12分之6,一半啊,∴等於少percentage?50 percentage。∴這50 percentage。…change b…假設你有,在disk上12個page,你主記憶體12個page,是不是就將近100分之100?∵通通放在裡面嘛,對不對?∴主記憶體page愈多,他的擊中率越高,這個要注意哦,這個策略一定比這個策略好,∵看這個百分比就知道了,那要注意,這邊剛才講過了,好,那這邊有一個考古題,考1啊,虛擬記憶體頁取代演算法以頁,尋頁的缺失叫page fult,較低的為佳,好,這個可能沒有講,我們剛才都講過了嘛,這個page fault的愈低,當然是擊中率怎樣?越高。下列法則,何者有最低的什麼?尋頁缺失率。哪個page fault最小?這個,要注意,這個擊中率最差,對不對?那再來這個呢?這個是最好,這個不要去理他,這個不要去理他,這個考比較深的os才會考…聽不清楚…,那注意,我們講這一個跟這一個,和這一個,這一個什麼東西?替代一個長期不欲使用的,就是我們講的叫什麼?OPT。是不是OPT?這個最好,∴答案是D。 那注意哦,現在講page,page demand paging,他有3個頁框,3個就是這裡,3個,這裡有3個,你要參考的page在這裡,7、1,7、1、2、1、3、5,1,你要參考的page在這裡,我們要用什麼?先進先出。∴用這個策略,I的策略,∴一開始,這個不在裡面,好,這也不在裡面,∴7、1,好,這也不在裡面,7、1、2,這在裡面,叫什麼?擊中。就7、1、2,這個不在裡面,∴移走誰?誰最早進來?7。7是不是最早進來?你只要看這個queue的時候,7、1、2,∴7最早進來,∴這裡3、1、2,這個呢?注意哦,這邊1、2、3,∴要把誰移走?1號移走。∴把1號移走。好,這個呢?要注意,1號移走,是不是變2、3?那現在把誰移走?2號移走。∴2號移走。∴他跟你講說page fault有幾次?幾次page fault?失誤哦。失誤哦。∴這是我們剛才講叫failure幾次?這邊是1、2、3、4、5、6,∴6次。∴答案是選D,答案選D。…cut…這叫demand segment。這叫demand segment,這要注意,這是一段一段的,這一段、這一段、這一段,注意,這一段的大小不一樣,注意聽哦,段的大小不一樣,∴這邊假設,這是他的disk,這個叫disk,∴假設這邊是memory,memory,假設說這裡有,這裡有,總共有90K,然後這邊啊,這邊是main,這100K,假設這裡,這裡100K,那這是main,然後這裡是,這個是叫sub 1,這邊,這邊有free,這邊幾K?這邊10K。這應該聽懂嘛,等一下哦,等一下,這應該聽懂嘛,∵這兩個加起來多少K?90K。對不對?∴注意,假設這個啊,你的程式是這樣,這個MAIN,要呼叫,這個SUB,然後這邊呼叫SIN,那這邊呼叫COS,假設這樣,假設這樣,∴你這邊啊,你執行到這裡的時候,這裡要呼叫什麼?這個也執行完了,執行完了,注意哦,從這邊執行,這邊假設執行完了,執行到一半,執行到一半,執行完了,執行完了,這個執行完是不是要呼叫這裡?他放得進去嗎?注意,放得進去嗎?這個不要放在這邊,假設這個放在這,你這個執行完了,注意,這個執行完了,這個執行完了,這個不加尾巴,執行到一半,執行到一半,執行到一半的時候,你呼叫自己,那執行完之後,回到這一點,回到這一點,那回到這一點,這邊呼叫自己,那注意哦,你執行到這一點的時候,要呼叫這裡,那表示說你這邊要放進來,對不對?放進來夠放嗎?不夠放。∴你要把誰移出去?要把這些移出去。一樣la,是不是一樣道理?先移出,先移出,再什麼?再移入。∴這種是一樣的,但是要注意哦,這個重點就在這裡,大小不同的什麼?程式片段。∴要注意,大小不同的片段,大小不同的片段,這個,這一段比較大,再來這個,這個最大,再來這個,這個是複數,一樣,觀念是一樣。 這一章的最後一個主題,叫軟體系統發展生命週期,要注意,發展生命週期,∴這個主要有一個名字叫life cycle,life cycle,生命週期,就是你要做一個大程式要怎麼做?你要幫別人做大程式,怎麼做?就像說你要幫學校做一個選課,選課,選課加退選的系統圖案,那個很大,他有包括成績處理系統,怎麼辦?你要先去跟誰做溝通啊?你要先跟教務處。教務處裡面的什麼?課務組。跟什麼?註冊組。對不對?好,你要去跟他們溝通,∴你要去收集資料,但是,注意聽,電腦不是萬能的,什麼東西可以做?什麼東西不能做?不能做,用,用人工配合,∴要收集資料,你跟對方談的時候,一定要知道對方要產生幾個表格,要出來是什麼表格,進來資料是什麼?∴你收集完之後,你要回來討論,∴這就我剛才講的,這由誰來做啊?project manager來做。好,那個專案經理來做。他去跟對方談,談完之後,回來做個報告,到底可不可行,可行性研究報告,到底可不可行,能不能做,電腦不是萬能的,萬一他半年就要做完了,那個東西你做要做一年,那就不能接,不然你要罰款,會罰款,真的到時候做一做,虧了,最後接得一團亂,結果虧了,時間一直delay,搞到最後要200萬才能做完,那昏倒了,我們倒貼100萬,∴這個要注意,這個可行性研究報告,哪一段不能做,要由人工配合,然後把那個資料帶回來,他們人工怎麼做,人工怎麼做,哪一站,然後哪一站,哪一站,帶回來之後,你開始要畫他的整個系統,這是對方做的,人工處理,整體系統架構規畫書,好,怎麼做,怎麼做,這個步驟做完換哪裡,好,或者這個步驟做完換,這樣一直做下去,怎麼做,這是人家跟你講啊,那講完之後,你要帶的資料,∴這要談的非常得詳細,不然你的後面會出問題然後這邊要注意,這邊有系統分析,這第一個步驟就是調查規畫,第2個步驟叫系統分析,這丟給什麼?高級系統分析師。高級系統分析師。他幫你畫這個圖,DFD,叫data flow diagram,data flow diagram,叫資料流程圖,什麼叫資料流程圖?就是我剛才講的,這是一個系統,這叫成績處理系統,他需要什麼東西?需要科目名稱。好,什麼科目?像說國文有哪幾個學分啊?幾個學分?大概幾個小時,學分是算你們的成績,那個時數算老師的薪水,各科成績像說國文多少分,英文多少分,數學多少分,經過一個成績處理之後,這一個程序,這一個process,這要注意,這個程序,說穿了,就是一個什麼?即為模組,就是模組,或者叫這叫什麼?副程式。有時候我們叫他是模組,有時候叫他是什麼?副程式。模組,或者是procedure,那這邊要產生什麼?產生這個成績單,跟什麼?補考,退學、獎學金名單。喂!這是一個很粗糙的一個結構啊,這個結構還要再細分出來,一直分,一直分,一直分,∴我待會講這個細分之後怎麼變成程式,∴這邊畫完之後,注意,畫完之後,這邊就是一個新系統,功能規格書,這個是別人做的,這是我們做的,我們畫出來的,喂!這是我畫的簡單的例子啊,這裡有兩個東西,新系功能規格書有兩個東西,一個叫迷你規格,你要描述這個東西,叫什麼名稱,然後這個怎麼做,這個怎麼做,這要怎麼做,∴這要說明這個程序名稱,跟他的程式倒底做什麼,∴要用什麼?要用什麼?虛擬碼。用虛擬來說明,這個程式做什麼?那虛擬碼就是English like,好,English like,很像英文嘛,虛擬碼,那注意,第二個是資料字典,這叫Data Dictionary,假設你有寫過data base,應該知道什麼叫Data Dictionary,就要描述這些東西,∴你要儲存資料流程,好,流程,等一下,流程的,這個逗點拿掉,流程的輸入,輸入,輸出資料的名稱,要注意,輸入、輸出資料的名稱,好,資料的名稱,∴你要描述這個東西,還有說明,這什麼意思?就是我剛才講的,像說這個科目名稱,科目裡面呢?有名字。名字倒底要幾個character呢?像說這個是english,要幾個character呢?∴char,這邊要8個字母,我們留8個字母,像說他這裡呢?這個時數,hour呢?時數。時數呢?我們用integer來表示。Integer,3個小時,時數,那學分呢?到底多少學分呢?也是用什麼?integer表示。∴像這個科目,就要描述這個3個欄位,要把他描述得很清楚,∴這個說明是這樣講,他的裡面到底什麼型態,什麼結構,∴這個東西放在哪裡?放在這裡。資料字典。∴這個地方就放在迷你規格,這個,左、右這些東西放在什麼?資料字典。這叫新系統功能規格書。好,你先抄,我等你,…cut…,現在要注意哦,這系統設計,你要把這個dfd啊,這個圖形啊,這個剛才,我們剛才舉個例子要幫他畫畫出來,然後也要轉成這個圖形,那這個怎麼辦?好,這要注意聽哦,你要轉的時候啊,你要找一點啊,注意,某一點切下去,某一點把他切下去,這邊都是進來,那這邊是出來,某一點切下去,∴這一點叫做轉換中心,這一點叫轉換中心,∴我剛才講了,交接蒙特樓,蒙特樓要有成熟感,∵要怎麼切?你看這個像不像?這可以吧?是不是可以?從這一點,左邊進來的,這邊右邊出去,那你會說這樣可以,這樣可不可以?這樣可不可以?也可以啊。對不對?在以前我去那個資策會受訓的時候,…有的沒的…cut…,地方,我們就稱為呢?轉換中心。轉換中心。然後這邊呢?這邊叫做輸入,afferent。然後這個叫什麼?efferent,輸出。∴這要注意哦,這就是所謂的,這,假設講的話,這是我們講的,叫I、P、O,∴這裡就是I、P、O,這種東西,讀了老半天啊,其實都差不多la,就是名詞改了la,這叫做主程式嘛,這叫做輸入、輸出,對不起,輸入、處理、輸出,那注意,我們 再來切分這一部份,這一部份怎看?這要注意聽哦,我現在要講一個觀念給你聽,A,注意聽哦,這個什麼意思?A呼叫D對不對?A呼叫D對不對?也就是說,應該是這樣講la,不要這樣講,不是,應該這樣講才對,A做完之後給D,對不對?A做完東西是不是給D?A做完東西給D。那注意聽哦,誰呼叫誰?誰呼叫誰?我們剛才講A呼叫D不對,誰呼叫誰?A做完之後,A做完之後給D對不對?聽懂嗎?A做完之後給D,∴誰呼叫誰?D呼叫A。D做到一半的時候,做不下去了,沒有值,我做不下去,∴說A你幫我算一算,你幫我算一算,就我給你角度,你幫我算什麼?sin出來。一般在電腦裡面,不是給角度,都給什麼?進度。應該聽懂嘛,進度,你要是聽不懂算了,聽不懂算了,角度跟進度還要互換la,還要從,聽不懂算了,除非搞懂角度,好,要給值,好,事實上不是給角度哦,是給進度,像說我們給sin 30,30度,他給我0.5,對不對?sin 30應該聽懂嘛,聽懂嗎?這邊喔,沒關係,聽不懂算了,當做都沒說,沒關係,現在數學很差la,不要說三角函數la,…有的沒的…,這邊要注意啊,你要那個考插大,拜託,去補一下微積分啊,不然到時候你會槓龜哦,∵插大微積分很重要,這邊要注意哦,這個要注意,這個要呼叫他,執行完之後,回到這裡,∴現在誰呼叫誰?D呼叫A。∴D呼叫A,我們把箭頭打回來,就在呼叫,∴打回來,像要寫的時候,這個呼叫這個,∴這個呼叫這個,好,這個打回來,這個呼叫這個,∴這怎麼畫圖?這畫圖的話,變成這樣,C呼叫D,然後D呼叫誰?呼叫A。這個是呼叫啊,呼叫,那這邊呢?B。B呼叫誰?呼叫A。∴我畫這樣,你看這是不是結構圖出來了?這是一個什麼圖?結構圖。那再看這個好了,Z呼叫Y,那Y呼叫什麼?X。這邊註明Z、Y、X,好,這邊點點點,那這種分析方法,喂!這個點點點表示不畫了啊,那注意哦,這種分析方法叫transform analysis,轉換分析,那其實喔,你在看電動玩具的時候,電動玩具,應該有玩過電動玩具吧,不是現在什麼三國演義那一種哦,不是那一種哦,什麼模擬程式啊,蓋房子那個沒有,那個不是,早期的電動玩具很多個,就像說第一個,什麼小蜜蜂la,第2個小精靈la,第3個,什麼,什麼那個樸克牌啊,好,第4個,什麼什麼一堆,有沒有?然後他問你,你要哪一個。那這種就是menu,出來就是在這裡,menu在這裡,那根據你的call,他會跳到哪個rutting,這應該聽懂嘛,跳到哪個rutting,∴一般是看到這種東西,對不對?好,∴這種叫transaction analysis,叫做什麼?異動分析。這要注意哦,這是一個交易中心,這是一個主程式,顯示那個螢光幕那個,你要有幾種遊戲,你要選哪一個,你給他一個值,他就往哪裡走,∴K等於1,往這裡走;K等於2,往這裡走;K等於3,往這裡走,∴像這種,這裡有一個程式,根據你條件的判斷,他到哪個rutting去,∴從這個流程,這個程式流程,資料流程圖,對不起,資料流程圖轉成什麼?結構圖。那這種轉換叫做transaction analysis,那在你的書本上有,來,我看書本上啊,∵這裡我們要寫那個名詞,∴直接看書本上,這個書本上在哪裡?在那個23頁,∴這邊參考23頁,好,這邊也要參考23頁,這裡我沒有寫名詞,這裡我想說這個不用抄,用看的比較快啊,你看23頁一開始啊,有沒有找到23頁?…cut…有的沒的…cut…聽不清楚…,23頁,23頁一般而言啊,一般而言,根據以上所述的方法,在設計階段,還須再細分幾層,而後我們便須根據DFD,有沒有找到?DFD轉換成什麼?結構圖。這畫起來,DFD轉換成結構圖。這結構圖有著層次的結構,好,這不要畫哦,有了結構圖就可以很容易把程式給寫了出來,可是從,好,開始畫,”從”開始畫,從DFD要變成結構圖則需要相當的技術,最重要的是找出主要的變換流程,”變換流程”把他框起來,transform flow,根據這個變換流程,一直畫,左邊的稱之為輸入流程,afferent flow左邊則稱為輸出流程,efferent flow,好,這畫起來,這是我黑板上講的這叫afferent flow,這叫efferent flow,然後在底下,底下是不是有個圖?圖就是我寫的黑板,是不是這個圖?對不對?是不是這個圖?對不對?然後這個轉成這個圖,在那個講義上還沒有轉得很漂亮,沒有全部轉完,他這裡有沒有轉?沒轉。他不是沒轉嗎?我全部把他轉過來。這裡我不轉了,好,那再注意看,23頁,23頁的底下那一段,另外一個方法,這畫起來,另外一個方法稱為交易分析,這叫transaction analysis,他的形式通常是一個資料流入一個程序之後,產生好幾個選擇性的路徑,分別傳送資料出去,這個負責傳送的程序,我們稱之為交易中心,transaction center,就是這個,喂!就是這個,transaction center,然後分出的路徑,要注意,這一條路徑,這一條路徑,這一條路徑,這有3條路徑,這叫做動作路徑,叫action path,action path,好,這個畫起來,畫到底了。好,等一下,22頁啊,22頁倒數第5行,是不是1,內聚力?在上面那一行,一般我們用下列兩種方式來評估模組的好壞,有沒有找到?第一個叫內聚力,用以衡量模組內部不同事物聚集力量大小的標準,愈強愈好,這把他畫起來,然後耦合力,剛才那個cohesion,下面是coupling,用以衡量模組之間彼此獨立的程度,好,然後在底下那一行,共享情況很少者稱為低耦合力,耦合力越弱當然是越好,好,這畫起來,好,那這個應該沒問題了,蓋掉了,我們看下一個步驟,…cut…,第4個,程式設計,程式設計就是程式發展,程式發展就是程式撰寫,把這個圖,注意哦,把這個圖,好,剛才還有一個東西忘了講,好,這圖出來之後,什麼會出來?你的程式的架構是不是會出來?倒底有幾個模組?1、2、3、4。是不是都互相出來?∴你的程式規格出來了,還有什麼會出來?這個,這個地方負責什麼?INPUT。這個地方負責什麼?output。你的i/o檔案會出來,檔案,你的檔案規格會出來,∴這邊檔案規格會出來,好,那再看下一個步驟,這個結構出來之後,我們要變成程式,這是一個一個模組,是不是要寫個程式?∴把那個模組,將結構圖的模組轉成什麼?程式。利用三種基本結構。這是不是講過了?3種是什麼?循序、選擇、迴圈。這是不是講過了?我前一陣子是不是有設計程式給你看過嘛?循序、選擇、迴圈。好,∴程式,要注意哦,程式寫出來之後,他的產品剛好是程式碼,跟什麼?說明書。說明書是什麼東西?就是註解。就是註解。就是你們的專題的報告有沒有?專題報告。…cut…系統測試,要注意哦,你做完程式,我好像上禮拜講過,記不記得?我說這個做完之後,注意聽哦,這個做完之後,是不是這個要測?假設這土程式做完是不是要測?這要測。然後這邊呢?你做完這input的時候,這要測。對不對?做完之後,測完之後呢?這要整個測。∴怎麼測?∴一開始要怎麼測?單元測試。測這個叫單元測試,整個測叫什麼?整體測試。∴模組測試就是單元測試,整個測叫整體測試。測試完之後呢,在學校是拿給老師測,老師是不是亂帶?對不對?那外面是拿給客戶測,這叫接收測試,都沒有問題的時候,注意,都沒有問題了,要做系統轉換,什麼叫系統轉換?你平常做的是人工處理,對不對?那人工處理是不是要用寫的?但是你要用電腦處理是不是要把他儲存起來,寫的東西要儲存起來,儲存到檔案,∴叫系統轉換,好,把原來的資料,要放到什麼?電腦來儲存。那平行作業什麼意思?就是說你新的系統,這個是舊系統,這個新系統,你要run run看,check看看有沒有錯,run一半,看看有沒有錯,再run下去,有沒有錯,這要run很久,看看有沒有錯,假設都沒有錯,整個程式都沒錯,那表示正常,這要run很久,∵我畫的是只有一個程式,其實你那個系統是很多副程式,每個都要run,∴要試範的,兩個一起RUN,那個設都沒有問題,把舊的系統拿下來,那新系統把他掛上去,就可以用了,∴這叫平行處理,∴記得哦,這有考哦,單元、整體、接收、系統轉換、平行作業,這個都做完之後,都沒問題了,都可以RUN了,最後這邊就要寫出什麼?使用手冊。在台灣最差的就是這個步驟,使用手冊寫到最後只有自己看得懂,別人都看不懂,好,∴這個很糟糕,這個使用手冊,這要把他建上去,然後建完之後,你要做什麼?維護。好,要做維護。 好,結構圖是哪個的產品?等一下,等一下,講完了,結構圖是哪個產品?哪個產品?系統什麼?設計。這聽得懂嗎?喂!來…來,講完了,這個什麼產品?可行性研究報告。還有什麼?整體系統功能規格書。對不對?這個呢?這個呢?喂!同學,這個呢?資料流程圖。這個什麼?迷你規格。還有什麼?資料字典。一定要背起來啊,∵我是讀這個,∴我知道啊,我專長就在這裡la,但是讀到最後後悔la,…有的沒的…,這個,就是剛才講的,這是結構圖,結構圖就是,程式規格是什麼?I/O檔案規格。那這個呢?設計出來就是什麼?程式。∴要寫什麼?說明書。對不對?程式說明書。這個呢?使用說明書。 我們再講一個,有一個叫corautine(corporative),這個co是合作,股份有限公司也是這個,有沒有?合作。那這個是routine,是什麼?副程式。∴他是屬於什麼?互動程式。注意哦,副程式在未執行完成,注意,一般來講主程式呼叫副程式,副程式要執行完,就傳回來,這要注意,這還沒有執行完,將控制權回轉至呼叫他們的副程式,要注意哦,控制權回轉至呼叫他們的副程式,這什麼意思?像這個啊,這個在unix才能看到,unix,做…做,做到一半,喂!wake up,換你la,做到一半,喂!Wake up,換你la,有沒有?呼叫他。∴做到一半,喂!wake up,換你了,把他叫醒,那這個做到一半,喂!換你了,這做到一半,換你了,這做到一半,換別人,有沒有?有沒有這種程式?你玩到現在有沒有這種程式?有沒有?沒有嗎?windows裡面沒有嗎?windows裡面不是就兩個程式一起run,有沒有?這個run一下,這個run一下,有沒有?有沒有?你上網的時候不是開了好多視窗,在亂看啊,有沒有?先看這裡,那邊又可以看,對不對?或者這個在下載,這邊在看,有沒有?這就是類似這種,這種類似什麼?multi tasking。∴用在什麼?concurrent program。這個用在multi tasking。這叫什麼?多工。多工。微電腦的工作就是time shell,分時系統,一人分一段時間,好,你趕快抄,這個是補充1哦。…cut…,要注意哦,這個配合什麼?這要配合top down design。這叫由上而下程式設計,由上而下程式設計。∴注意哦,上面寫完了,上面寫完了,上面寫完了,一定要建立一個這東西,注意哦,建立這個東西,這是重點,建立一個虛擬子程式,這叫stub module,又叫做傀儡模組,這什麼意思啊,上面我寫完了,然後call底下,是不是要call底下?沒有底下這個,能run嗎?同學,沒有這個能run嗎?∴不能run。∴我剛剛有這個程式,要注意,剛剛有這個程式,不能run,一定要再加一個程式,這個叫做虛擬子程式,這個,∴假設你只有這一個,一run,電腦就會罵你,罵這個,注意哦,你只有這一段程式的話,電腦就會罵你,罵這個東西,你call他,沒有這個東西哦,你怎麼call?∴我們要寫一段假的程式,這種叫什麼?虛擬子程式。虛擬子程式啊。那要注意聽哦,這種寫法就是演算法的寫法,要注意,這種是演算法的寫法,不是這個程式哦,這個程式不能run哦,這是演算法,我們待會看講義,講義有那個名詞,演算法的名詞,要注意哦,這個演算法,∴input name、hours、rate,輸入3個東西,這3個,當這個name不等於end of data,你輸進來的東西不是end of data,像說我們舉個例子講,我輸入是john,他工作了10個小時,每個小時是100塊,我們要算他的錢,∴name,name是john,不等於這個東西,∴要do,do這個東西,∴call,call這個,∴他會把這3個東西傳過去,hours,hours,10個小時,一個小時是100塊,假設這樣,要算出什麼?wages。薪水。薪水。∴你看這個強迫印,hours等於呢?10個小時。Rate等於呢?100塊。表示我是不是有收到東西?注意聽哦,我是不是強迫印?是不是我收到東西?這就是怕參數傳遞錯誤。薪水呢?這個東西,你看,連算都沒算哦,連算都沒算,就是多少?999。點什麼?99。不管他多少小時,多少個錢,反正就是這個數字嘛,這個數字是假資料,∴注意聽哦,看這個圖,我call他,他傳一個假資料給我,這個假資料就是999點什麼?99。∴傳回來給我,傳回來給我,∴傳回來999點什麼?99。參數傳過去兩個,傳回來是不是一個?好,∴印出來,名字,名字就叫什麼?john。然後wages多少?999點什麼?99。然後再輸入下一個,下一個是不是從頭回來做?是不是在那邊一直轉?一直轉。∴沒有這個程式不能run,有這個程式才能run,這個叫虛擬子程式,由上而下,記得,由上而下,要進入什麼?虛擬子程式。好,先看那個書本啊,來,先看講義,來,講義這邊有一個東西一定要看一下,27頁,27頁是不是有一個精選練習?精選練習第1題回去自己看,第2題是不是請簡述下列名詞的意義?有沒有找到?第1個名詞叫proper program,這個要打勾,畫一顆星,這要看。第2個,hipo,hipo我講過了,這個不再解釋。Pseudo code,這個畫一顆星。Vtoc,剛才講過了,不講了。第5個,walkthrough,這個也講過了,不講了。Chief programmer tean,那個”tean”打錯了,team,這個也講過了,不講了。第7個,data coupling,這個也講過了,不講了。第8個,data cohesion,講過,不講了。第9個,coroutine,是不是講過?不講了。第10個,preprocessor,這個欠著,打一顆星,打一顆星,這以後會講。會在C語言會講,第11個是stub module,好,打一顆星。好,請看28頁,28頁,注意,什麼叫真程式?這是定義,凡一個程式只有一個入口,畫起來,”一個入口”,我們寫程式當然只能一個入口,就是結構化程式,一個出口,這畫起來,沒有無窮迴路,這畫起來,不能為無窮迴路,沒有無法執行到指令的稱之,沒有無法執行到,什麼叫無法執行到?寫程式寫到這樣的,莫名其妙,跳過來,這邊,這邊都不會執行到,這個叫無法執行到。你用什麼指令才會用這個?go to 100。是不是100跳到這裡來?對不對?∴” 沒有無法執行到”畫線,然後畫一個箭頭出來,即無go to指令,沒有go to指令,沒有go to的指令,就是沒有go to指令,這叫真程式,∴注意,他定義什麼叫真程式?程式一入口、一出口,沒有無窮迴路,沒有什麼?無法執行到的指令。 好,第3個是不是叫pseudo code?虛擬碼。虛擬碼,注意聽哦,主要是運用結構化程式設計的基本邏輯結構,”基本邏輯結構”畫線,然後畫一個箭頭出來,3種。”基本邏輯結構”畫線,畫出來,3種。表示他有3種基本結構,循序、選擇、迴圈。”內縮”畫線,”內縮”畫一個箭頭出來,凹入結構,內縮就是凹入結構,內縮就是凹入結構,撰寫方法及程式語言的符號,”符號”畫線,符號就是什麼?符號就是這個,喂!input la、while la,有沒有?output。這叫符號。來說明程式的步驟,不僅可提供程式設計師的參考,更可避免直接撰寫程式的缺點,為什麼可避免直接撰寫程式的缺點?寫程式是不是要語法?你用C語言寫是不是要語法?語法不對的話是不是不會過?但是學這種東西有沒有要語法?沒有語法。你高興怎麼寫就怎麼寫?∴避免撰寫程式的什麼?用避免直接撰寫程式的什麼?缺點。就是不考慮什麼?語法。這能不能聽得懂?聽懂嗎?好,然後再看底下,底下是不是有一個叫…第9個不要看,打叉,第9個筆記給你了,第10個欠著,preprocessor欠著,第11個是不是傀儡模組?”傀儡模組”畫線,”由上而下”畫線,由上而下的程式設計法中,高階呼叫低階的模組的測試工作,可藉由呼叫stub module來完成,”藉由呼叫stub module來完成”畫線,好,被呼叫的stub module只要傳回一個成功或不成功的訊息即可,”成功或不成功”,好,畫線,上面寫個什麼?假資料。假資料。假資料。俟低一階模組設計好後,再廢除這些stub module,要注意,什麼意思?這是不是,這是不是虛擬子程式?我假設,我在寫完這個程式,這個程式就可以怎樣?廢掉了。這個程式有沒有用?沒有用。∴我把真正的副程式寫完之後,這邊可以去掉,好,這邊可以去掉,好,那這底下也有這段程式,但是,底下那段程式有bug,∴你可以不要看,29頁是不是有這段程式,他有bug,不要看,看我寫的就好,…cut…底下這東西,要不要考慮這個東西,不要考慮這東西,我們是丟一個假,丟一個call他,然後丟一個假資料,回來就好了,∴不考虛這個東西,∴這叫黑箱測試,我不考慮,∴這叫black box,這叫黑箱測試。 …cut…來,這我把他講,講一講,把他結束了,把他講一講,這種東西要配合,配合由下而上的程式設計,他要配合這個東西,由上而下的程式設計,∴下層模組做完了,寫完了,∴注意哦,這個什麼意思?這底下這一層寫完了,這叫下層模組,下層模組做完了,然後這邊,你注意看這裡,必須建立一個驅動程式,要注意,驅動程式,driver,才能測出下層的什麼?程式是否正,確。∴這邊要建立一個東西,注意,建立一個這個東西,驅動程式,那注意,這個驅動程式啊,這叫driver,這個
相簿設定
標籤設定
相簿狀態