第04章节程序开发和软件工程幻灯片

上传人:E**** 文档编号:90145922 上传时间:2019-06-09 格式:PPT 页数:31 大小:460KB
返回 下载 相关 举报
第04章节程序开发和软件工程幻灯片_第1页
第1页 / 共31页
第04章节程序开发和软件工程幻灯片_第2页
第2页 / 共31页
第04章节程序开发和软件工程幻灯片_第3页
第3页 / 共31页
第04章节程序开发和软件工程幻灯片_第4页
第4页 / 共31页
第04章节程序开发和软件工程幻灯片_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《第04章节程序开发和软件工程幻灯片》由会员分享,可在线阅读,更多相关《第04章节程序开发和软件工程幻灯片(31页珍藏版)》请在金锄头文库上搜索。

1、第四章 程序开发和软件工程,程序开发是软件开发的核心,程序开发过程是:建立计算模型、设计程序、编写代码、测试程序、交付使用,前四个步骤统称程序设计,简称编程 硬件快速发展使计算机的计算能力成倍增长,手工开发的软件无论是在生产率方面还是在质量方面都不能满足用户需求和市场要求,这就是所谓的“软件危机”。 60年代末提出软件工程思想,以系统工程的方法全面规划和管理软件的开发和使用,以大量辅助工具加速开发进程,以求高效、快速地生产大量合格的软件,4.1 程序设计过程,4.1.1 需求分析 程序的内容就是对需要解决的问题的描述。它首先要建立计算机可以实现的计算模型 建模仅仅是程序设计的基础。程序在此模型

2、上做什么事,即程序的规格说明(specification) 问题的提出只是用户的需要(need),把需要变为需求(requirement)是需求分析的工作,即有没有可能用软件来满足用户需要(可行性)。如果可行,这个程序应是什么样的(需求定义),这就是程序的规格说明 一个程序(软件)经过分析可以分解为若干个子部分,除了总的规格说明之外,各子部分也要写规格说明。它们也是这些子部分开发、测试、验收的依据,4.1.2 程序设计,除了功能、性能要求而外,程序设计还应该保证软件的质量,如: 可靠性:交付时规格说明均满足,但时好时坏。 安全性:由于使用不当导致所在系统崩溃。 可维护性:修改一个小错;引发一串

3、大错。 可移植性:不同平台上不能用 适应性:软、硬件平台中某部件升级或版本就不适应了。 可测试性:除了使用现场其它环境不能作有意义的测试,1. 设计准则,模块化:一个大的程序按功能或数据原则分解成为较小的模块,可以极大地降低程序的复杂性,有利于阅读、测试、修改 结构化:每个模块内程序控制应是结构化的,以便于测试、查错和修改。要采用结构化程序设计语言,不用或少用GoTo语句 数据隐藏:模块化实质也是局部化,凡与其它模块无关的数据尽可能作为局部量放在自己的模块内 可测试性:程序的可测试性在设计程序结构时就得考虑,以免最后变得不可追踪,不可测试 一致性:指程序编码完成后,行文风格一致(排列对齐,空行

4、、边框、关键字都出现在同样位置)、表达方法尽量一致,2. 设计方法,需求分析定义的规格说明是建立在核心的、大致的计算解题模型之上的,设计时要具体刻画出来,具体到能一一对应编码为宜 (1) 自顶向下逐步求精 例:地图上有若干城镇及相互连接的道路,各城镇间最大运输能力标注在路线上。要求设计一程序,计算任意指定两城镇间的最大流通能力。,进一步细化为:,地图用邻接表矩阵(77),对应权矩阵(76),进一步细化为:,对“找最大化”细化。逐一查找所有路径的算法是一株搜索树,(2) 面向对象设计 面向对象编程是典型的由底向上设计,对象建模的关键是找出对象。按Booch的方法: 先用自然语言陈述它的解 然后将

5、集合名词、概括(抽象)名词作为对象候选具体名词和形容词作为属性,动词作为操作的候选,副词可作属性或操作。 4.1.3 编码 即把以类_xxx语言描述的设计变成xxx语言的源程序,还应完成如下工作 1.模块最后重组:将功能相差不多或不够规范的模块以规范的库模块取代,模块大小在不甚影响其功能、性能前题下调整(合并、切分),增强一致性使程序简单。 2. 一致性完善:程序和输出结果表达风格的一致 3.源程序级的程序优化:尽可能用符号常量、减少重复计算、循环内的重复、不必要的计算,将循环次数多的作内循环,4.1.4 测试与排错,程序是由人设计(构造)的,如何保证程序的正确性,如何证明和验证程序的正确性就

6、是一个极大的同时也是极为困难的问题。比较实用的验证程序的方法就是测试。 测试只能证明程序有错,而不能确保程序的正确性。一个通过了某一测试的程序,也许还包含尚未发现的错误 1. 测试技术: 测试是将可能的输入值)输入运行后看程序是否满足预期结果 测试数据称为测试用例(testing case)。测试用例的选取和采用的测试技术有关。测试时,为了各个击破,一般编一段测一段 (1) 黑箱测试:只看输入和程序结果,不管程序内部执行过程 等价类划分: 程序的输入至少有两大类,分为有效输入(可得出正确值)等价类,一为无效输出等价类 边值分析:在等价类的基础上用边界值进行测试 (2) 白箱测试:也叫路径测试。

7、所有的语句必须执行一次以上,这是最起码的要求。彻底些,每条路径都要走到,2. 测试的经济性,测试是为了找出程序错误而执行程序的过程,应达到以下目标: 没有语法错误,运行应当有结果 典型用例结果正确 典型有效数据结果正确,无效数据有预防措施 对一切可能想得出的数据不出错 排错(Debugging)也叫调试,排错是消除程序中缺陷(bug)的过程: 通过测试发现程序有错 找出出错的位置(定位) 分析出错原因,并改正之。 再测试消除找出的缺陷 找到出错原因后,改正错误要十分小心。尽可能找出所有的错再改,以减少它们彼此因修改而产生的相互影响,4.2 软件工程概述,硬件技术高速发展,成本以十年两位数的速度

8、递减,导致了对软件的强烈需求。而软件系统的规模越来越大、越来越复杂、开发周期越来越长,软件的手工业生产方式使其成本急骤上升 1968年软件业界和科学工作者提出了软件工程的思想:任何软件都应当和其它产业的产品一样,由专业人员制作(软件中是系统分析员、高级程序员、程序员),以系统的、工程的方法开发,并提供全方位的售后服务管理(不能因开发者离开调走而无人管),软件工程以系统工程的方法制作软件产品,它包括:,软件的系统(生存期)模型; 与此模型相对应的各种规范和标准; 为达到这些规范、标准的方法和工具; 软件开发的全面管理。 软件开发方法学的研究是软件技术发展最活跃的因素。所谓方法学(Methodol

9、ogy)是一组规范了的方法,按这组方法执行,可以得到较为理想的结果。把这组方法施行过程标准化就是软件开发标准 根据美国电子工程学会(IEEE)的定义,软件工程是以系统的、规范的、定量的方法应用于软件的开发、运营和维护,以及对这些方法的研究,4.3 传统的软件工程,4.3.1 生存周期模型,瀑布式生存周期模型,4.3.2 需求分析,需求分析是摸清用户需要用软件解决什么问题,这些问题有什么特征、特点?可以抽象为何种模型?然后定义软件的规格说明,即指出什么样的软件能满足抽象出的模型。把对问题求解的描述变为对软件的需求 1. 分析的任务 (1) 识别问题 用户要求具有的功能行为和特殊要求,软件的功能、

10、性能要求。用约定的符号或正文逐条列出。在整个分析间要和用户充分协商 (2) 分析与综合 分析信息的流向、类型,如何处理等问题,判定信息处理的类型 (3) 建模:建立软件解题模型,也是刻画该问题的模型 (4) 写规格说明:说明软件在什么条件下能做什么事情,2. 需求阶段的其它工作,(1) 可行性分析报告:论证本规格说明在给定时间、经费条件下、采用的技术和环境设施是可行的、尽量预计风险。对于较小系统,可行性分析写入规格说明书的“背景”一段中,不另成文。 (2) 项目计划 列出本项目进度表,人员组织,经费支付,开发环境(可以利用软件工具PERT图完成),以及招聘计划,(上岗)培训计划。 (3) 初步

11、用户手册:从用户观点描述一次规格说明,验证需求定义是否遗漏,为正式用户手册打下基础 (4) 评审 由开发人员(高层)、用户(业主)、同行专家(非本项目)对交付的文档详细评审,通过后才能投入下一阶段。所有文档一经审批,改动需重申请,3. 分析模型,作为软件设计的基础,分析模型必须反映用户的要求,用它定义的需求集合应该易于验证。图形因表达概括能力强,信息量大、直观而成为通常的表示法 (1) 分析模型诸元素,(2) 数据流图,信息在机内以数据形式出现,信息流也是数据流。,数据流模型是一个很好的工具。数据流图简称DFD,表示法很简单,只有四种图符 双线表示数据存储加上箭头指示,它成为:,(3) 控制流

12、图,扩充DFD图为CFD(Control Flow Diagram)图把控制符号以虚线表示,数据利用双箭头表示连续输入。虚箭头上标明控制项(或事件)名。平行虚线表示控制项存储,竖线模表示控制(规格)说明,复印机的控制流图,(4)状态转移图,状态转移图(state-Transition Diagram)带园角框表示某个状态,状态间用箭头连线表示状态转移。箭头线上标注事件及由事件引起的动作,(5) 实体关系图,实体关系图(Entity-Relationship Diagram简称ERD)的图元是矩形框表示实体,中间写数据对象名;实体间的连线即表示它们之间有关系,线上写关系名。也可以把关系名写在菱形

13、框内。联线两端的符号表示在此关系下实体可以1对1出现,1 对多,多对多出现。也可以指示此关系是可选的,用E-R图表示层次关系,用E-R图表示聚集关系,(6) 使用情况图Use-case对于面向对象软件,根据客观世界发生的事情,描述可见对象间的交互行为,椭园表示行为,联线表示事件,带箭头的线表示行为之间的关系(一般细化时加上),细化后:,4.3.3 设计,根据分析得出的模型,以当今可用的技术和设施,作出决策: 这个软件总体是什么结构(分几部分,它们逻辑上有什么关系); 它与使用者交互的界面是什么?如何使用 ?它用到什么内部和外部数据?以什么算法过程实现所要求的功能和性能? 所以要设计出能运行的软

14、件要作到: 数据设计 整个软件用到的数据 体系结构设计 整个软件的程序组成 过程设计 每个组成如何实现 界面设计 用户怎样使用本软件?软件和环境如何相接,1. 数据设计: 将需求分析中定义的数据模型进一步细化为软件实现需要的数据结构,它对应为分析模型中的E-R模型和数据字典 2. 体系结构设计:主要目标是建立整个软件的总体结构 (1) 细化DFD图,每个处理框都可以细化为一子DFD图。细化后作为上层模块,其中放共享数据,调用语句,细化后成为被调用的子模块的候选,可使用结构图(Structured Chart简称SC),其中表示数据流向,方框表示模块 (2) 分析细化的DFD图,调整SC。并非每

15、一框都如上述变成模块。SC图只说明逻辑上可以这样去组成,但还要划分和调整。原则: 找出数据流图中数据流向的边界 减少数据调用引起的模块间耦合 (3) 结构调整:逻辑上变成SC图实际也可调整,例如一句话就可以表达的功能可以合并到另一模块,数据传递频繁也应合在一个模块内。太长太大都要分小 (4) 调整时应考虑易于测试,越是独立的模块越好测试,结构图是测试计划的根据,3. 界面设计:一般要考虑下面几点: 管理输入设备(鼠标、键盘);确认用户输入; 处理错误和显示错误消息; 提供输入反馈(如输入自动回声); 提供提示和帮助开发(开发者只要规定符号和提供帮助内容); 窗口、域的显示,重叠和内容滚展; 提

16、供和应用程序的接口; 界面管理功能和应用程序隔离; 允许用户定制界面。 4.过程设计 完成数据、体系结构、界面设计之后,就按处理规格说明,或控制规格说明,或状态转移图,一一写出过程程序。选定或设计相应的算法作出设计。此时并非用某种程序设计语言,而是类_xxx语言、PDL、细化图形(设计详细的结构化流程图),4.3.4 软件测试,软件质量要经过验证(Verification)和确认(Validation)过程,简称V&V。验证是证实软件正确地实现了某些功能(所作的软件正确);确认是证实所作软件能够满足用户的要求 1. 测试策略 (1)测试的种类,(2) 单元测试 对一个模块或几个模块组成的小功能单元作测试,一般以白箱测试为主,多个模块可以并行进行,测试用例应覆盖以下内容: 界面:内界面指本模块型构及对桩模块调用,参数个数,类型均应匹配。外界面指本模块有直接的I/O,则有关输入/输出文件开、关,数据格式、类型匹配与否均应测试。 模块的数据结构:类型是否不正确、不一致?初始化、缺省值使用情况;变量名拼错;上下溢出等数据异常,测试能否正确处理,即在一个算法的所有执行步

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号