管理信息系統(tǒng)專題:面向開發(fā)人員的計(jì)算機(jī)技術(shù)基礎(chǔ)_第1頁(yè)
管理信息系統(tǒng)專題:面向開發(fā)人員的計(jì)算機(jī)技術(shù)基礎(chǔ)_第2頁(yè)
管理信息系統(tǒng)專題:面向開發(fā)人員的計(jì)算機(jī)技術(shù)基礎(chǔ)_第3頁(yè)
管理信息系統(tǒng)專題:面向開發(fā)人員的計(jì)算機(jī)技術(shù)基礎(chǔ)_第4頁(yè)
管理信息系統(tǒng)專題:面向開發(fā)人員的計(jì)算機(jī)技術(shù)基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、管理信息系統(tǒng)專題:面向開發(fā)人員的計(jì)算機(jī)技術(shù)基礎(chǔ)MIS信息技術(shù)基礎(chǔ)專題之一面向開發(fā)人員的計(jì)算機(jī)技術(shù)基礎(chǔ)NAUZhu-Yihua、如何理解計(jì)算機(jī)技術(shù)基礎(chǔ)與信息系統(tǒng)開發(fā)的關(guān)系?a)理解計(jì)算機(jī)原理是開發(fā)高質(zhì)量軟件的基礎(chǔ)i.受限系統(tǒng)上對(duì)現(xiàn)實(shí)世界的模擬一一數(shù)字化的世界ii.現(xiàn)代開發(fā)語(yǔ)言與開發(fā)工具的發(fā)展降低了軟件開發(fā)的門檻b)非規(guī)范的開發(fā)方式引入了軟件缺陷,提高了開發(fā)成本二、提高軟件質(zhì)量一一工程化軟件開發(fā)的基本原則a)什么是軟件的質(zhì)量?CMM(CapabilityMaturityModel能力成熟度模型):一個(gè)系統(tǒng)、組件或過(guò)程符合特定需求(客戶/用戶的要求與期望)的程度;思考:是不是運(yùn)行正確的軟件就是高質(zhì)量

2、的軟件?質(zhì)量的對(duì)立面:缺陷一一BUG功能性屬性正確性(精確性)軟件第一質(zhì)量屬性健壯性(容錯(cuò)/恢復(fù))航空/金融/軍事可靠性(平均無(wú)故障時(shí)間一一借自硬件領(lǐng)域)往往是不可重復(fù)的錯(cuò)誤,難以發(fā)現(xiàn)。常見(jiàn)問(wèn)題:資源與內(nèi)存泄漏/數(shù)據(jù)溢出(如千年蟲)非功能性屬性性能時(shí)間空間效率不等于運(yùn)行速度平衡:“又要馬兒跑,又要馬兒不吃草”易用性:用戶笨還是你笨?清晰性安全性(Security,notsafety)平衡:入侵代價(jià)獲取的利益可擴(kuò)展性(適應(yīng)變化)兼容性(適應(yīng)其他系統(tǒng))可移植性(適應(yīng)環(huán)境)思考:從程序員的角度來(lái)看,如何提高軟件質(zhì)量?郎中三兄弟(聽說(shuō)過(guò)這個(gè)故事么?)與提高軟件質(zhì)量的三個(gè)層次1、高質(zhì)量的軟件開發(fā)過(guò)程和規(guī)

3、范的程序設(shè)計(jì)2、定期檢查和修正錯(cuò)誤3、對(duì)已出現(xiàn)的錯(cuò)誤進(jìn)行修補(bǔ)b)總體觀念:i .有設(shè)計(jì)有實(shí)現(xiàn),高處設(shè)計(jì),低處實(shí)現(xiàn)思考:1、軟件開發(fā)等于編程?2、編程等于用編程語(yǔ)言表達(dá)算法邏輯?ii .工程思想:標(biāo)準(zhǔn)與規(guī)范(過(guò)程/方法/工具)思考:1、制造業(yè)是如何提高產(chǎn)品質(zhì)量,提高生產(chǎn)效率的?2、編程是藝術(shù)還是技術(shù)?軟件開發(fā)人員的數(shù)量構(gòu)成大致會(huì)是如何?c)程序開發(fā)中的設(shè)計(jì)高處設(shè)計(jì):不陷于細(xì)節(jié),從總體上考慮。能對(duì)軟件整體架構(gòu)進(jìn)行剖析模塊化與開放性思維(系統(tǒng)的思維方式)模塊規(guī)模與拆分考慮程序流程程序設(shè)計(jì)之前的可預(yù)測(cè)性i.不要重復(fù)發(fā)明輪子一一代碼重用的方式與模塊化思想的演進(jìn)重用的好處:質(zhì)量/效率/成本1 .COPY&

4、PASTE2 .模塊化系統(tǒng)的思維方式:分而治之,把復(fù)雜問(wèn)題分解為簡(jiǎn)單問(wèn)題。3 .面向?qū)ο笏伎迹号嘤?xùn)班的上課問(wèn)題一個(gè)講師在上完自己的課時(shí),通知學(xué)員如何找到參加其他課程的教室。結(jié)構(gòu)化設(shè)計(jì)面向?qū)ο笤O(shè)計(jì)1、 獲得名單2、 對(duì)名單中的人,循環(huán):a.查找他的下節(jié)課b.查找卜節(jié)課的地點(diǎn)c.查找到該地點(diǎn)的路徑d.告知走法1、制作一張課程-走法對(duì)照表2、張貼表區(qū)別:責(zé)任的轉(zhuǎn)移一一學(xué)生是對(duì)自己負(fù)責(zé)有行為的主體:對(duì)象優(yōu)點(diǎn):如果需求發(fā)生變化,現(xiàn)在對(duì)參加某類培訓(xùn)的學(xué)員有特殊要求,兩種設(shè)計(jì)方式會(huì)如何處理?4.組件ii .實(shí)驗(yàn)1中的問(wèn)題:界面代碼與功能代碼混用iii .實(shí)驗(yàn)1中的問(wèn)題:模塊間的接口d)程序開發(fā)中的實(shí)現(xiàn)i.用

5、戶的角度:語(yǔ)言是算法邏輯的表達(dá)方表達(dá)式不等于數(shù)學(xué)公式。語(yǔ)言是指令的集A口。思考:不使用第三個(gè)變量交換兩個(gè)整型變量a,b的值解法1:a=a+b;b=a-b;a=a-b;很巧妙的算法嗎?問(wèn)題:該方法是否適用于浮點(diǎn)數(shù)?(如:a=10.3,b=7.5)ii.計(jì)算機(jī)設(shè)計(jì)者的思考角度思考:解法1是否存在BUG?1 .計(jì)算機(jī)原理:數(shù)的二進(jìn)制表示:字長(zhǎng)與溢出解法2:a=aAb;b=aAb;a=aAb;2 .CPU與高低位3 .程序的結(jié)構(gòu)與緩沖區(qū)溢出iii.操作系統(tǒng)設(shè)計(jì)者的思考角度例:windows的消息機(jī)制與程序運(yùn)行方式典型的原生Windows程序結(jié)構(gòu)與開發(fā)過(guò)程(玲t(yī)oolIItextfilobinaryfi

6、le事件驅(qū)動(dòng)與消息隊(duì)列MYAPP.EXE、Windows福函Whhfe札hPNTV)期雅0-:來(lái)電910dHaMMCHEAT匠一gWM8MU3(MtfWMLBLrrroMioftN_gWMlFAINr:sWMRnEW二-Hi1i,I-r*-a.IV-r/rw*的QiJitu*VJiiFowPfoccilureRAD背后一一事件委托由此想到的:編程語(yǔ)言的比較語(yǔ)言與開發(fā)工具的關(guān)系IDE,Framework以及RADVisualBasic(VisualBasic)ADO,ActiveXVisualC+(C/C+-MFC)ODBC,ADOC+Builder(C/C+-VCL)BDE,ADO,DBExp

7、ressDelphi(OP-VCL)BDE,ADO,DBExpressJBuilder(Java-JDK類庫(kù))-JDBC,跨平臺(tái)PowerBuilder(PowerScript-PFC)JSP/ASP/PHP開發(fā)工具間的選擇與配合內(nèi)部接口DLLCOM(ActiveX)組件iv.語(yǔ)言編譯器設(shè)計(jì)者的思考角度思考:下面代碼的輸出結(jié)果是什么1.charstr1=abc;charstr2=abc;constcharstr3=abc;constcharstr4=abc;constchar*str5=abc;constchar*str6=abc;if(str1=str2)printf(OK1);if(str

8、3=str4)printf(OK2);if(str5=str6)printf(OK3);請(qǐng)?jiān)诓煌木幾g器下檢驗(yàn)結(jié)果。1. C/C+:char實(shí)際上是一個(gè)整數(shù)思考:以下代碼有何問(wèn)題?chara=255;/其他代碼if(a=255)DoSomeThing();2 .字節(jié)對(duì)齊與結(jié)構(gòu)體的空間布局思考:求sizeof(MyStruct)的結(jié)果:typedefstructinta;charb;charc;MyStruct;請(qǐng)?jiān)诓煌木幾g器下檢驗(yàn)結(jié)果。3 .隱式類型轉(zhuǎn)換一一難以發(fā)現(xiàn)的BUG思考:下面的C代碼有何問(wèn)題?intnumber=100;intunit=3;floattotal=number*11/u

9、nit;4 .多線程中的高級(jí)語(yǔ)言單指令例:在系統(tǒng)級(jí)多線程程序設(shè)計(jì)中,下面哪一條c語(yǔ)句需要考慮同步問(wèn)題?A)x=1;B)x=y;C)x=x+1;x=1;VisualC+6.0Debug模式movdwordptrebp-4,1BorlandC+Buildermovebp-0x04,1x=y;VisualC+6.0Debug模式movecx,dwordptrebp-0Chmovdwordptrebp-8,ecxBorlandC+Buildermovedx,ebp-0x0cmovebp-0x08,edxx=x+1;VisualC+6.0Debug模式movedx,dwordptrebp-4addedx

10、,1movdwordptrebp-4,edxBorlandC+Builderincdwordptrebp-0x04分析:高級(jí)語(yǔ)言中的一條語(yǔ)句,并不一定對(duì)應(yīng)一條機(jī)器指令,在多線程程序中很可能在執(zhí)行中間被掛起,在普通應(yīng)用中利用CPU硬件本身的現(xiàn)場(chǎng)保護(hù)一般不會(huì)出現(xiàn)問(wèn)題,但在操作系統(tǒng)的開發(fā)中就可能出現(xiàn)問(wèn)題。例:下面的java代碼在多線程應(yīng)用中是否可能會(huì)發(fā)生問(wèn)題?Stringstr=newstring(美禾慳合眾國(guó)”);其他語(yǔ)句str=中華人民共和國(guó)分析:同上。5.編譯器優(yōu)化v.算法、性能與編程技巧1 .編寫代碼之前先考慮算法的適用性例:對(duì)磁盤文件中的內(nèi)容(不重復(fù)的7位數(shù)字的電話號(hào)碼)進(jìn)行排序輸出到另一

11、個(gè)文件,可能有多少種算法?由于程序運(yùn)行在受限環(huán)境下,可支配的內(nèi)存約1MB-1.2M左右,要求過(guò)程在10秒左右完成(磁盤空間充足)。分析:用字符串表示號(hào)碼一一每個(gè)號(hào)碼7個(gè)字節(jié),1MB可存放143000個(gè)號(hào)碼用整數(shù)表示號(hào)碼一一每個(gè)號(hào)碼4個(gè)字節(jié)(32位系統(tǒng)),可存放250000個(gè)號(hào)碼解法1:使用臨時(shí)文件,每次排序250000個(gè)號(hào)碼,使用快速排序等高效算法最后合并解法2:位圖算法,1MB可表示為一個(gè)約有8百萬(wàn)個(gè)bit的字符串表示,鑒于號(hào)碼不會(huì)以0開始,一般也會(huì)保留某些數(shù)字前綴,1.2MB可以容納全部號(hào)碼集合。啟示:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)不僅要學(xué)會(huì)算法本2 .工程思想與性能的平衡a)可讀性:代碼長(zhǎng)短與性能不成正比

12、思考:比較下面兩段代碼哪個(gè)效率更高,哪個(gè)可讀性好?for(i=0;iiTotal;i+)if(condition)DoSomeThing();ElseDoOtherThing();if(condition)for(i=0;iiTotal;i+)DoSomeThing();Elsefor(i=0;iiTotal;i+)DoOtherThing();b)對(duì)于大型的難以維護(hù)的系統(tǒng),在優(yōu)化算法和升級(jí)硬件的選擇上,后者是更為穩(wěn)妥的方法c)不要以程序的短小或運(yùn)行的效率來(lái)顯示自己的水平,可讀性是第一位的d)使用常用和公認(rèn)的算法,除非與小組成員進(jìn)行交流3 .不要依賴編譯器的某些特點(diǎn)以及未明確未定義的功能4 .

13、同樣,不要依賴操作系統(tǒng)中某些未公開的功能5 .用戶需要的是體貼的功能,不是花哨的界面6 .不要強(qiáng)迫用戶一一你知道什么是流氓軟件嗎?如何評(píng)價(jià)?e)程序設(shè)計(jì)基本原則一一規(guī)范與標(biāo)準(zhǔn)化命名規(guī)范?避免關(guān)鍵字例:在access中建立字段時(shí)起名為value,date,time,然后在應(yīng)用程序中對(duì)該表進(jìn)行操作.?前綴,大小寫與匈牙利命名法,g_,m_,s_,公司或功能標(biāo)記??有意義,簡(jiǎn)單的名詞作變量名(或形+名),動(dòng)詞作函數(shù)名?Min-Length&Max-Information原則?可發(fā)音的名字?通用性,英文?避免歧義與誤識(shí)別的字母,如I與l與1?直觀的布爾類型,如isEmpty?常量用大寫?文件名與小組成

14、員協(xié)商制作共同的命名規(guī)范數(shù)據(jù)類型?避免浮點(diǎn)類型一一效率與精度,int類型是最有效率的?了解語(yǔ)言的類型兼容性?強(qiáng)類型語(yǔ)言C+/C#/Java?弱類型語(yǔ)言VB/VBScript/JavaScript/PHP/Perl?有符號(hào)類型與無(wú)符號(hào)類型?顯式類型轉(zhuǎn)換?類型轉(zhuǎn)換會(huì)不會(huì)丟失數(shù)據(jù)?操作符?熟悉優(yōu)先級(jí),加括號(hào)永遠(yuǎn)是好的習(xí)慣函數(shù)?避免參數(shù)過(guò)多?唯一出口原則??用函數(shù)取代常用的代碼段?進(jìn)入時(shí)初始化,退出時(shí)清理內(nèi)存與指針?biāo)伎迹合旅娴某绦蜻\(yùn)行后有結(jié)果是什么?#includevoidGetMemory(char*p)p=(char*)malloc(100);intmain()char*str=NULL;GetM

15、emory(str);strcpy(str,helloworld”);printf(str);將GetMemory改寫成下面的代碼,main的調(diào)用改為str=GetMemory()后呢?char*GetMemory(void),charp=helloworld”;returnp;?malloc與free,new與delete成對(duì)使用(并非數(shù)量上的成對(duì),而是邏輯上的)?誰(shuí)分配,誰(shuí)釋放,否則必則在文檔嚴(yán)格說(shuō)明?指針指向的內(nèi)存被釋放后,應(yīng)復(fù)位其值為NULL?C/C+:為字符串結(jié)束符占用的空間分配內(nèi)存?對(duì)地址操作一定要小心,因?yàn)楹蜋C(jī)器和硬件相關(guān),可能造成移植性的問(wèn)題和難以檢查的錯(cuò)誤。如:高低位字節(jié),對(duì)齊方式等性能效率?goto的合理使用?循環(huán)體內(nèi)不要定義變量?常用或大尺寸的數(shù)據(jù)設(shè)為全局變量(有爭(zhēng)議)或常量?傳址與引用?延遲執(zhí)行(如磁盤寫緩沖區(qū))

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論