


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MIS信息技术基础专题之一面向开发人员的计算机技术基础NAU Zhu-Yihua一、如何理解计算机技术基础与信息系统开发的关系?a)理解计算机原理是开发高质量软件的基础i. 受限系统上对现实世界的模拟一一数字化的世界ii. 现代开发语言与开发工具的发展降低了软件开发的门槛b)非规范的开发方式引入了软件缺陷,提高了开发成本二、提高软件质量一一项目化软件开发的基本原则a)什么是软件的质量?CMM(Capability Maturity Model能力成熟度模型 :一个系统、组件或过程符合特定需求 客户/用户的要求与期望)的程度;思考:是不是运行正确的软件就是高质量的软件?质量的对立面:缺陷一一BU
2、G功能性属性正确性 精确性)软件第一质量属性健壮性 容错/恢复)航空/金融/军事可靠性 平均无故障时间一一借自硬件领域)往往是不可重复的错误,难以发现。常见问题:资源与内存泄漏 /数据溢出 如千年虫)非功能性属性性能时间-空间效率不等于运行速度平衡:“又要马儿跑,又要马儿不吃草”易用性:用户笨还是你笨?清晰性安全性 vSecurity, not safety)平衡:入侵代价 获取的利益可扩展性v适应变化)兼容性 适应其他系统)可移植性 适应环境)思考:从程序员的角度来看,如何提高软件质量?郎中三兄弟V听说过这个故事么?)与提高软件质量的三个层次1、高质量的软件开发过程和规范的程序设计2、定期检
3、查和修正错误3、对已出现的错误进行修补b)总体观念:i. 有设计有实现,高处设计,低处实现思考:1、软件开发等于编程?2、编程等于用编程语言表达算法逻辑?ii. 项目思想:标准与规范 过程/方法/工具)思考:1、制造业是如何提高产品质量,提高生产效率的?2、编程是艺术还是技术?软件开发人员的数量构成大致会是如何?c)程序开发中的设计高处设计:不陷于细节,从总体上考虑。能对软件整体架构进行剖析模块化与开放性思维 系统的思维方式)模块规模与拆分考虑程序流程程序设计之前的可预测性i. 不要重复发明轮子一一代码重用的方式与模块化思想的演进重用的好处:质量/效率/成本1. COPY & PASTE2.
4、模块化系统的思维方式:分而治之,把复杂问题分解为简单问题。3. 面向对象思考:培训班的上课问题一个讲师在上完自己的课时,通知学员如何找到参加其他课程的教室结构化设计面向对象设计1、获得名单2、对名单中的人,循环:a. 查找他的下节课b. 查找下节课的地点c. 查找到该地点的路径d. 告知走法1、制作一张课程-走法对照 表2、张贴表区别:责任的转移学生是对自己负责有行为的主体:对象优点:如果需求发生变化,现在对参加某类培训的学员有特殊要求,两种 设计方式会如何处理?4. 组件ii. 实验1中的问题:界面代码与功能代码混用iii. 实验1中的问题:模块间的接口d)程序开发中的实现i. 用户的角度:
5、语言是算法逻辑的表达方式?表达式 不等于 数学公式。语言是指令的集合。思考:不使用第三个变量交换两个整型变量a,b的值解法1:a=a+b。b=a-b。a=a-b。很巧妙的算法吗?问题:该方法是否适用于浮点数?如:a=10.3,b=7.5)ii. 计算机设计者的思考角度思考:解法1是否存在BUG ?1. 计算机原理:数的二进制表示:字长与溢出解法2 :a=aAbob=aAb。a=aAb。2. CPU与高低位3. 程序的结构与缓冲区溢出iii. 操作系统设计者的思考角度例:windows的消息机制与程序运行方式典型的原生Windows程序结构与开发过程JesHgeRirtrUSERModuloT4
6、1M9 ?JUM Wn W片4 qututMYAPP.CXCMSd 罠零4(口理_工 Cnsle*tmkn4(上 ShwWmilf -p IfJiMdBds曲.-1rmm ni. whrm;Windowshirgjw PiCh:*:lurc、odEFwd eV irm. IFmFW 肚 I ”7)(*WM CREATK . “LRUTTOXDOWN-.eUfAlXr?IftMjCljOSIl- zWMjwTlKrY.I-m.lt r. i 1 VUiifklURAD背后一一事件委托由此想到的:编程语言的比较语言与开发工具的关系IDE, Framework 以及 RADVisual Basicv
7、Visual Basic)ADO,ActiveXVisual C+vC/C+ - MFC ) -ODBC,ADOC+ BuilderC/C+ - VCL ) -BDE,ADO,DBExpressDelphivOP - VCL) -BDE,ADO,DBExpress JBuildervJava -JDK 类库)-JDBC,跨平台 Power BuildervPower Script - PFC) JSP/ASP/PHP开发工具间的选择与配合内部接口DLLCOM printf(OK1 。if(str3=str4 printf(OK2 。if(str5=str6 printf(OK3 。请在不同的编
8、译器下检验结果。1. C/C+ : char 实际上是一个整数 思考:以下代码有何问题? char a=255 。/其他代码if(a=255DoSomeThing( 。2. 字节对齐与结构体的空间布局 思考:求 sizeof(MyStruct 的结果: typedef structint a 。char b 。 char c 。MyStruct 。 请在不同的编译器下检验结果。BUG3. 隐式类型转换难以发现的 思考:下面的 C 代码有何问题? int number=100 。 int unit=3 。float total=number*11/unit 。4. 多线程中的高级语言单指令例:在
9、系统级多线程程序设计中,下面哪一条 C 语句需要考虑同步问题?A )x=1 。 B)x=y 。 Cx=x+1 。x = 1。 Visual C+ 6.0 Debug 模式 mov dword ptr ebp-4,1 Borland C+ Builder movebp-0x04,1x = y。 Visual C+ 6.0 Debug 模式 movecx,dword ptr ebp-0Chmovdword ptr ebp-8,ecxBorland C+ Builder movedx,ebp-0x0c movebp-0x08,edxx = x +1。 Visual C+ 6.0 Debug 模式 m
10、ovedx,dword ptr ebp-4add edx,1 movdword ptr ebp-4,edxBorland C+ Builder inc dword ptr ebp-0x04 分析:高级语言中的一条语句,并不一定对应一条机器指令,在多线程程序 中很可能在执行中间被挂起,在普通应用中利用 CPU 硬件本身的现场保护一 般不会出现问题,但在操作系统的开发中就可能出现问题。例:下面的 java 代码在多线程应用中是否可能会发生问题?String str = new string( “美利坚合众国”。/其他语句str = “中华人民共和国 ”。 分析:同上。5. 编译器优化v. 算法、性
11、能与编程技巧1.编写代码之前先考虑算法的适用性例:对磁盘文件中的内容不重复的7 位数字的电话号码)进行排序输出到另一个文件,可能有多少种算法? 因为程序运行在受限环境下,可支配的内存约 1MB-1.2M 左右,要求过程在 10 秒左右完成 磁盘空间充足)。分析:用字符串表示号码每个号码 7 个字节, 1MB 可存放 143000 个号 码用整数表示号码每个号码 4个字节 32位系统),可存放 250000个号码 解法 1:使用临时文件,每次排序 250000 个号码,使用快速排序等高效算法最后合并 解法 2:位图算法, 1MB 可表示为一个约有 8 百万个 bit 的字符串表示,鉴于号码不 会
12、以 0 开始,一般也会保留某些数字前缀, 1.2MB 可以容纳全部号码集合。启示:2. 项目学想与性结构平仅要学会算法本身,还应该学会数据结构与算a) 可读性点代码长短与性能不成正比思考:比较下面两段代码数个效率更高,哪个可读性好?for(i=0。iviTotal。i+if(con diti onDoSomeThi ng( 。ElseDoOtherThi ng( 。if(con diti onfor(i=0 。 iviTotal 。 i+DoSomeThi ng( 。Elsefor(i=0 。 iviTotal 。 i+ DoOtherThi ng( 。b) 对于大型的难以维护的系统,在优化算
13、法和升级硬件的选择上,后 者是更为稳妥的方法c) 不要以程序的短小或运行的效率来显示自己的水平,可读性是第一 位的d) 使用常用和公认的算法,除非与小组成员进行交流3. 不要依赖编译器的某些特点以及未明确未定义的功能4. 同样,不要依赖操作系统中某些未公开的功能5. 用户需要的是体贴的功能,不是花哨的界面6. 不要强迫用户一一你知道什么是流氓软件吗?如何评价?e) 程序设计基本原则一一规范与标准化命名规范?避免关键字例:在access中建立字段时起名为 value, date, time, 然后在 应用程序中对该表进行操作?前缀,大小写与匈牙利命名法,g_,m_,s_,公司或功能标记??有意义
14、,简单的名词作变量名(或形+名 ,动词作函数名?Mi n-Le ngth & Max-I nformatio n原则?可发音的名字?通用性,英文?避免歧义与误识别的字母,如I与l与1?直观的布尔类型,如isEmpty?常量用大写?文件名与小组成员协商制作共同的命名规范数据类型?避免浮点类型 效率与精度 ,int 类型是最有效率的 ?了解语言的类型兼容性?强类型语言 C+/C#/Java?弱类型语言 VB/VBScript/JavaScript/PHP/Perl ?有符号类型与无符号类型 ?显式类型转换?类型转换会不会丢失数据?操作符?熟悉优先级,加括号永远是好的习惯 函数?避免参数过多?唯一出
15、口原则??用函数取代常用的代码段 ?进入时初始化,退出时清理 内存与指针思考:下面的程序运行后有结果是什么 ?#include void GetMemory(char *p p=(char*malloc(100。int main(char *str=NULL 。GetMemory(str 。strcpy(str, ” hello world printf(str。将 GetMemory 改 写 成 下 面 的 代 码 ,main 的 调 用 改 为 str=GetMemory( 后呢? char* GetMemory(voidchar p= ” hello world ” return p。?malloc 与 free , new 与 delete 成对使用 或常量 ?传址与引用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国建筑低辐射玻璃行业市场前景预测及投资价值评估分析报告
- 低压开关柜LCC分析报告
- 交通工程中的交通工程测量技术研究与应用
- 停车场开发可行性研究报告
- 体育教育实践研究报告
- 主题公园项目可行性研究报告
- 拉线警示套项目投资可行性研究分析报告(2024-2030版)
- 旅游目的地的旅游安全保障体系建设与应急管理研究报告
- 参加教师研修的心得体会
- 学习记忆电生理基础-洞察及研究
- 房产自愿转让协议书
- 初中物理神奇的电磁波+物理教科版九年级下册
- 2024年中考地理真题(带答案)
- GB/T 718-2024铸造用生铁
- 人力资源管理体系设计全案
- 八年级地理会考复习知识点
- 屠户吹狼阅读答案
- 《多联机空调系统工程技术规程》JGJ174-2024
- GJB3206B-2022技术状态管理
- SYT 6883-2021 输气管道工程过滤分离设备规范-PDF解密
- JTJ-248-2001港口工程灌注桩设计与施工规程-PDF解密
评论
0/150
提交评论