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

下載本文檔

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

文檔簡介

MIS信息技術(shù)基礎(chǔ)專題之一面向開發(fā)人員的計算機技術(shù)基礎(chǔ)NAUZhu-Yihua如何理解計算機技術(shù)基礎(chǔ)與信息系統(tǒng)開發(fā)的關(guān)系?理解計算機原理是開發(fā)高質(zhì)量軟件的基礎(chǔ)受限系統(tǒng)上對現(xiàn)實世界的模擬——數(shù)字化的世界現(xiàn)代開發(fā)語言與開發(fā)工具的發(fā)展降低了軟件開發(fā)的門檻非規(guī)范的開發(fā)方式引入了軟件缺陷,提高了開發(fā)成本…提高軟件質(zhì)量——工程化軟件開發(fā)的基本原則什么是軟件的質(zhì)量?CMM(CapabilityMaturityModel能力成熟度模型):一個系統(tǒng)、組件或過程符合特定需求(客戶/用戶的要求與期望)的程度;思考:是不是運行正確的軟件就是高質(zhì)量的軟件?質(zhì)量的對立面:缺陷——BUG功能性屬性 正確性(精確性) 軟件第一質(zhì)量屬性 健壯性(容錯/恢復(fù)) 航空/金融/軍事 可靠性(平均無故障時間——借自硬件領(lǐng)域) 往往是不可重復(fù)的錯誤,難以發(fā)現(xiàn)。 常見問題:資源與內(nèi)存泄漏/數(shù)據(jù)溢出(如千年蟲)非功能性屬性 性能 時間-空間效率不等于運行速度 平衡:“又要馬兒跑,又要馬兒不吃草” 易用性:用戶笨還是你笨? 清晰性 安全性(Security,notsafety) 平衡:入侵代價>獲取的利益 可擴展性(適應(yīng)變化) 兼容性(適應(yīng)其他系統(tǒng)) 可移植性(適應(yīng)環(huán)境)思考:從程序員的角度來看,如何提高軟件質(zhì)量?郎中三兄弟(聽說過這個故事么?)與提高軟件質(zhì)量的三個層次1、 高質(zhì)量的軟件開發(fā)過程和規(guī)范的程序設(shè)計2、 定期檢查和修正錯誤3、 對已出現(xiàn)的錯誤進行修補總體觀念:有設(shè)計有實現(xiàn),高處設(shè)計,低處實現(xiàn)思考:軟件開發(fā)等于編程?編程等于用編程語言表達算法邏輯?工程思想:標準與規(guī)范(過程/方法/工具)思考:制造業(yè)是如何提高產(chǎn)品質(zhì)量,提高生產(chǎn)效率的?編程是藝術(shù)還是技術(shù)?軟件開發(fā)人員的數(shù)量構(gòu)成大致會是如何?程序開發(fā)中的設(shè)計高處設(shè)計:不陷于細節(jié),從總體上考慮。能對軟件整體架構(gòu)進行剖析模塊化與開放性思維(系統(tǒng)的思維方式)模塊規(guī)模與拆分考慮程序流程程序設(shè)計之前的可預(yù)測性不要重復(fù)發(fā)明輪子——代碼重用的方式與模塊化思想的演進重用的好處:質(zhì)量/效率/成本COPY&PASTE模塊化系統(tǒng)的思維方式:分而治之,把復(fù)雜問題分解為簡單問題。面向?qū)ο笏伎迹号嘤柊嗟纳险n問題一個講師在上完自己的課時,通知學員如何找到參加其他課程的教室。結(jié)構(gòu)化設(shè)計面向?qū)ο笤O(shè)計獲得名單對名單中的人,循環(huán):查找他的下節(jié)課查找下節(jié)課的地點查找到該地點的路徑告知走法1、制作一張課程-走法對照表2、張貼表區(qū)別:責任的轉(zhuǎn)移——學生是對自己負責有行為的主體:對象優(yōu)點:如果需求發(fā)生變化,現(xiàn)在對參加某類培訓的學員有特殊要求,兩種設(shè)計方式會如何處理?組件實驗1中的問題:界面代碼與功能代碼混用實驗1中的問題:模塊間的接口程序開發(fā)中的實現(xiàn)用戶的角度:語言是算法邏輯的表達方式?表達式不等于數(shù)學公式。語言是指令的集合。思考:不使用第三個變量交換兩個整型變量a,b的值解法1:a=a+b;b=a-b;a=a-b;很巧妙的算法嗎?問題:該方法是否適用于浮點數(shù)?(如:a=10.3,b=7.5)計算機設(shè)計者的思考角度思考:解法1是否存在BUG?計算機原理:數(shù)的二進制表示:字長與溢出解法2:a=a^b;b=a^b;a=a^b;CPU與高低位程序的結(jié)構(gòu)與緩沖區(qū)溢出操作系統(tǒng)設(shè)計者的思考角度例:windows的消息機制與程序運行方式典型的原生Windows程序結(jié)構(gòu)與開發(fā)過程事件驅(qū)動與消息隊列RAD背后——事件委托由此想到的:編程語言的比較語言與開發(fā)工具的關(guān)系IDE,F(xiàn)ramework以及RADVisualBasic(VisualBasic)–ADO,ActiveXVisualC++(C/C++-MFC)–ODBC,ADOC++Builder(C/C++-VCL)–BDE,ADO,DBExpressDelphi(OP-VCL)–BDE,ADO,DBExpressJBuilder(Java–JDK類庫)–JDBC,跨平臺PowerBuilder(PowerScript-PFC)JSP/ASP/PHP開發(fā)工具間的選擇與配合內(nèi)部接口DLLCOM(ActiveX)組件語言編譯器設(shè)計者的思考角度思考:下面代碼的輸出結(jié)果是什么1.charstr1[]="abc";charstr2[]="abc";constcharstr3[]="abc";constcharstr4[]="abc";constchar*str5="abc";constchar*str6="abc";if(str1==str2)printf("OK1");if(str3==str4)printf("OK2");if(str5==str6)printf("OK3");請在不同的編譯器下檢驗結(jié)果。C/C++:char實際上是一個整數(shù)思考:以下代碼有何問題?chara=255;…//其他代碼if(a==255){ DoSomeThing();}字節(jié)對齊與結(jié)構(gòu)體的空間布局思考:求sizeof(MyStruct)的結(jié)果:typedefstruct{inta;charb;charc;}MyStruct;請在不同的編譯器下檢驗結(jié)果。隱式類型轉(zhuǎn)換——難以發(fā)現(xiàn)的BUG思考:下面的C代碼有何問題?intnumber=100;intunit=3;floattotal=number*11/unit;多線程中的高級語言單指令例:在系統(tǒng)級多線程程序設(shè)計中,下面哪一條C語句需要考慮同步問題?A)x=1;B)x=y;C)x=x+1;x=1;VisualC++6.0Debug模式movdwordptr[ebp-4],1BorlandC++Buildermov[ebp-0x04],1x=y;VisualC++6.0Debug模式movecx,dwordptr[ebp-0Ch]movdwordptr[ebp-8],ecxBorlandC++Buildermovedx,[ebp-0x0c]mov[ebp-0x08],edxx=x+1;VisualC++6.0Debug模式movedx,dwordptr[ebp-4]addedx,1movdwordptr[ebp-4],edxBorlandC++Builderincdwordptr[ebp-0x04]分析:高級語言中的一條語句,并不一定對應(yīng)一條機器指令,在多線程程序中很可能在執(zhí)行中間被掛起,在普通應(yīng)用中利用CPU硬件本身的現(xiàn)場保護一般不會出現(xiàn)問題,但在操作系統(tǒng)的開發(fā)中就可能出現(xiàn)問題。例:下面的java代碼在多線程應(yīng)用中是否可能會發(fā)生問題?Stringstr=newstring(“美利堅合眾國”);…//其他語句str=“中華人民共和國”;分析:同上。編譯器優(yōu)化算法、性能與編程技巧編寫代碼之前先考慮算法的適用性例:對磁盤文件中的內(nèi)容(不重復(fù)的7位數(shù)字的號碼)進行排序輸出到另一個文件,可能有多少種算法?由于程序運行在受限環(huán)境下,可支配的內(nèi)存約1MB-1.2M左右,要求過程在10秒左右完成(磁盤空間充足)。分析:用字符串表示號碼——每個號碼7個字節(jié),1MB可存放143000個號碼用整數(shù)表示號碼——每個號碼4個字節(jié)(32位系統(tǒng)),可存放250000個號碼解法1:使用臨時文件,每次排序250000個號碼,使用快速排序等高效算法最后合并解法2:位圖算法,1MB可表示為一個約有8百萬個bit的字符串表示,鑒于號碼不會以0開始,一般也會保留某些數(shù)字前綴,1.2MB可以容納全部號碼集合。啟示:啟示:學習數(shù)據(jù)結(jié)構(gòu)不僅要學會算法本身,還應(yīng)該學會數(shù)據(jù)結(jié)構(gòu)與算法的特點與適用范圍。應(yīng)用不是純數(shù)學問題工程思想與性能的平衡可讀性:代碼長短與性能不成正比思考:比較下面兩段代碼哪個效率更高,哪個可讀性好?for(i=0;i<iTotal;i++){if(condition)DoSomeThing();ElseDoOtherThing();}if(condition){for(i=0;i<iTotal;i++)DoSomeThing();}Else{for(i=0;i<iTotal;i++)DoOtherThing();}對于大型的難以維護的系統(tǒng),在優(yōu)化算法和升級硬件的選擇上,后者是更為穩(wěn)妥的方法不要以程序的短小或運行的效率來顯示自己的水平,可讀性是第一位的使用常用和公認的算法,除非與小組成員進行交流不要依賴編譯器的某些特點以及未明確未定義的功能同樣,不要依賴操作系統(tǒng)中某些未公開的功能用戶需要的是體貼的功能,不是花哨的界面不要強迫用戶——你知道什么是流氓軟件嗎?如何評價?程序設(shè)計基本原則——規(guī)范與標準化命名規(guī)范?避免關(guān)鍵字例:在access中建立字段時起名為value,date,time,然后在應(yīng)用程序中對該表進行操作.?前綴,大小寫與匈牙利命名法,g_,m_,s_,公司或功能標記??有意義,簡單的名詞作變量名(或形+名),動詞作函數(shù)名?Min-Length&&Max-Information原則?可發(fā)音的名字?通用性,英文?避免歧義與誤識別的字母,如I與l與1?直觀的布爾類型,如isEmpty?常量用大寫?文件名與小組成員協(xié)商制作共同的命名規(guī)范數(shù)據(jù)類型?避免浮點類型——效率與精度,int類型是最有效率的?了解語言的類型兼容性?強類型語言C++/C#/Java?弱類型語言VB/VBScript/JavaScript/PHP/Perl?有符號類型與無符號類型?顯式類型轉(zhuǎn)換?類型轉(zhuǎn)換會不會丟失數(shù)據(jù)?操作符?熟悉優(yōu)先級,加括號永遠是好的習慣函數(shù)?避免參數(shù)過多?唯一出口原則??用函數(shù)取代常用的代碼段?進入時初始化,退出時清理內(nèi)存與指針思考:下面的程序運行后有結(jié)果是什么?#include<stdio.h>voidGetMemory(char*p){ p=(char*)malloc(100);}intmain(){ char*str=NULL; GetMemory(str); strcpy(str,”helloworld”); printf(str);}將GetMemory改寫成下面的代碼,main的調(diào)用改為str=GetMemory()后呢?char*GetMemory(void){ charp[]=”helloworld”; returnp;}?malloc與free,new與delete成對使用(并非數(shù)量上的成對,而是邏輯上的)?誰分配,誰釋放,否則必則在文檔嚴格說明?指針指向的內(nèi)存被釋放后,應(yīng)復(fù)位其值為NULL?C/C++:為字符串結(jié)束符占用的空間分配內(nèi)存?對地址操作一定要小心,因為和機器和硬件相關(guān),可能造成移植性的問題和難以檢查的錯誤。如:高低位字節(jié),對齊方式等性能效率?goto的合理使用?循環(huán)體內(nèi)不要定義變量?常用或大尺寸的數(shù)據(jù)設(shè)為全局變量(有爭議)或常量?傳址與引用?延遲執(zhí)行(如磁盤寫緩沖區(qū))風格與

溫馨提示

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

評論

0/150

提交評論