Ch2.1-软件技术基础.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Ch2.1-软件技术基础.ppt

专题1:计算机软件技术基础 计算机软硬件技术基础 计算机技术基础与信息系统开发 软件质量——工程化软件开发的目标 计算机技术基础与信息系统开发 如何理解计算机技术基础与信息系统开发的关系? 理解计算机原理:开发高质量软件的基础 受限系统上对现实世界的模拟—数字化的世界 语言、开发工具的发展降低了软件开发门槛 非规范的开发方式引入了软件缺陷,提高了开发成本 质量—工程化软件开发的目标 什么是软件的质量 CMM(Capability Maturity Model能力成熟度模型):一个系统、组件或过程符合特定需求(客户/用户的要求与期望)的程度 思考:是不是运行正确的软件就是高质量的软件? 功能性属性 正确性(精确性) 软件第一质量属性 健壮性(容错/恢复) 航空/金融/军事 可靠性(平均无故障时间) 不可重复的错误难以发现。资源与内存泄漏/数据溢出(如千年虫) 非功能性属性 性能 时间-空间效率 不等于 运行速度 易用性:用户笨还是你笨? 清晰性 安全性(Security, not safety) 平衡:入侵代价获取的利益 可扩展性(适应变化) 兼容性(适应其他系统) 可移植性(适应环境) 思考:从程序员的角度来看,如何提高软件质量? 郎中三兄弟与提高软件质量的三个层次 1、高质量的软件开发过程和规范的程序设计 2、定期检查和修正错误 3、对已出现的错误进行修补 改变观念:软件开发不是编程 有设计有实现,高处设计,低处实现 工程思想:标准与规范(过程/方法/工具) 软件开发 等于 编程? 编程 等于 用编程语言表达算法逻辑? 制造业是如何提高产品质量,提高生产效率的? 编程是艺术还是技术?软件开发人员的数量构成大致会是如何? 1、软件开发中的设计 高处设计:不陷于细节,从总体上考虑 能对软件整体架构进行剖析 模块化与开放性思维(系统的思维方式) 模块规模与拆分 考虑程序流程 程序设计之前的可预测性 软件设计:不要重复发明轮子——代码重用的方式与模块化思想的演进 重用的好处:质量/效率/成本 重用的方法: COPY PASTE 模块化:系统的思维方式—分而治之,把复杂问题分解为简单问题。 面向对象 组件化 为什么面向对象? 区别:责任的转移——学生是对自己负责有行为的主体:对象 优点:如果需求发生变化,现在对参加某类培训的学员有特殊要求,两种设计方式会如何处理? 实验1中,我是怎么做的? 2、软件开发中的实现 用户的思考角度:语言是算法逻辑的表达方式? 思考:不使用第三个变量交换两个整型变量a,b的值,解法1: a=a+b; b=a-b; a=a-b; 很巧妙的算法吗?问题:该方法是否适用于浮点数?(如:a=10.3,b=7.5) 计算机设计者的思考角度 代码与数据是在有限的内存空间中的近似表示 数据有字长限制 浮点数有精度限制 地址表示与CPU的高低位 程序结构与缓冲区溢出 解法2: a=a^b; b=a^b; a=a^b; OS设计者思考角度: 例:windows的消息机制与程序运行。 .典型的原生Windows程序结构与开发过程 RAD背后——事件委托 由此想到的:编程语言的比较 语言与开发工具的关系 IDE,Framework以及RAD Visual Basic(Visual Basic) – ADO,ActiveX Visual C++(C/C++ - MFC)– ODBC,ADO C++ Builder(C/C++ - VCL)– BDE,ADO,DBExpress Delphi(OP - VCL)– BDE,ADO,DBExpress JBuilder(Java – JDK类库)– JDBC,跨平台 Power Builder(Power Script - PFC) JSP/ASP/PHP 开发工具间的选择与配合 内部接口 DLL COM(ActiveX) 组件 语言、编译器设计者的角度: C/C++:char实际上是一个整数 思考:以下代码有何问题? char a=255; …//其他代码 if(a==255) { DoSomeThing(); } 字节对齐与结构体的空间布局: 思考:求sizeof(MyStruct)的结果: typedef struct { int a; char b; char c; }MyStruct; 请在不同的编译器下检验结果。 隐式类型转换——难以发现的BUG 思考:下面的C代码有何问题? int number=100; int unit=3; float total=number*11/unit; 多线程中的高级语言单指令: 思考:在系统级多线程程序设计中,下面哪一条C语句需要考虑同步问题? A)x=1; B)x=y; C)x=x+1; x

文档评论(0)

docinppt + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档