chap4-程序开发和软件工程_第1页
chap4-程序开发和软件工程_第2页
chap4-程序开发和软件工程_第3页
chap4-程序开发和软件工程_第4页
chap4-程序开发和软件工程_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章第四章 程序开发与软件工程程序开发与软件工程l 程序开发的过程程序开发的过程l“软件危机软件危机”l 软件工程概念软件工程概念l 本章将介绍软件工程的基本思想和本章将介绍软件工程的基本思想和 方法方法软件危机软件危机l硬件生产率大幅提高;软件规模越来越大;硬件生产率大幅提高;软件规模越来越大;软件生产率很低;硬、软件供需失衡软件生产率很低;硬、软件供需失衡l软件危机的具体体现软件危机的具体体现 软件开发进度难以预测 软件开发成本难以控制 用户对产品功能难以满足 软件产品质量无法保证 软件缺少适当的文档资料 软件危机软件危机(续)(续)l 最典型失败系统的例子最典型失败系统的例子 IBM公

2、司开发OS/360系统,共有4000多个模块,约100万条指令,投入5000人年,耗资数亿美元,结果还是延期交付。在交付使用后的系统中仍发现大量(2000个以上)的错误 软件危机软件危机(续)(续)l软件危机是指在计算机软件的开发和维软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。为护过程中所遇到的一系列严重问题。为了研究、解决软件危机,诞生了一门新了研究、解决软件危机,诞生了一门新兴学科兴学科软件工程学软件工程学。它把软件作为。它把软件作为工程对象,从技术措施和组织管理两个工程对象,从技术措施和组织管理两个方面来研究、解决软件危机方面来研究、解决软件危机 4.1 4.1 程

3、序设计过程程序设计过程l 程序设计程序设计(Programming)(Programming)需求分析需求分析程序设计程序设计编码编码测试与排错测试与排错一一 需求分析需求分析l 程序的程序的形式形式是程序语言描述的程序正文是程序语言描述的程序正文l 程序的程序的内容内容就是对需要解决的问题的描述就是对需要解决的问题的描述l 建模建模是计算机解题中的难点,也是计算机解题成败是计算机解题中的难点,也是计算机解题成败的关键的关键 建立计算机可以实现的计算模型。就是解题的数学模型 通过数值分析将计算模型化为等价的计算机可接受的方程 非数值问题更要依赖模型需求分析需求分析(续)(续)l 程序的规格说明

4、程序的规格说明(specification)(specification)规格说明是程序设计必须遵从的“宪法”没有模型就难于写出准确的规格说明一个程序(软件)经过分析可以分解为若干个子部分,除了总的规格说明之外,各子部分也要写规格说明。它们也是这些子部分开发、测试、验收的依据需求分析需求分析(续)(续)l一般子模块规格说明的内容一般子模块规格说明的内容 名称名称( (名称最好有较强的概括性,如矩阵二次型名称最好有较强的概括性,如矩阵二次型) ) 开发者开发者/ /日期:日期: 输入输入: : 算法模型:数学模型写公式,图模型画图算法模型:数学模型写公式,图模型画图 功能特征功能特征: : 输出

5、输出: : 性能约束性能约束: :需求分析需求分析(续)(续)l 整个应用程序的规格说明的内容应包括:整个应用程序的规格说明的内容应包括: 名称名称: 开发者开发者/日期日期: 功能特征功能特征: 程序结构:列出子部分名称、规格程序结构:列出子部分名称、规格(特征特征) 使用资源:使用资源: 软件型号、规格软件型号、规格 软件平台型号、版本软件平台型号、版本 数据库型号、版本数据库型号、版本 输入输入: 输出输出: 性能约束性能约束: 其它:保密级别、口令等其它:保密级别、口令等 需求分析需求分析(续)(续)l规格说明一般写在源程序头部的注释行中,规格说明一般写在源程序头部的注释行中,这种风格

6、流传至今这种风格流传至今l也可单独写规格说明文档(从软件工程的也可单独写规格说明文档(从软件工程的角度来说,应当这样。后面将讨论这个问角度来说,应当这样。后面将讨论这个问题),对于大的源程序题),对于大的源程序(千句以上千句以上)这种重这种重复是必要的复是必要的二二 程序设计程序设计l流程图流程图 流程图可清楚地看出执行逻辑。画流程图是作设计。设计先于编码l程序设计包括程序的控制流设计程序设计包括程序的控制流设计( (算法设计算法设计) )和和数据设计数据设计 只要数据结构定下来,算法的设计就比较容易。对大多数问题来说,两者并重 算法和数据结构设计应满足功能要求,还要满足规格说明对性能的要求l

7、程序设计还应该保证软件的程序设计还应该保证软件的质量质量 可靠性,安全性,可维护性,可移植性,适应性,可测试性等程序设计准则程序设计准则l 模块化模块化较小的模块;降低程序的复杂性;避免数据耦合少用全局变量,少通过嵌套作用域来传递参数l 结构化结构化每个模块内程序控制应是结构化的,即只有三种基本控制结构并层层嵌套;不用或少用GoTo语句l 数据隐藏数据隐藏凡与其它模块无关的数据尽可能作为局部量放在自己的模块内程序设计准则程序设计准则(续)(续)l 可测试性可测试性l 一致性一致性行文风格一致(排列对齐,空行、边框、关键字都出现在同样位置)表达方法尽量一致(同样的数据、控制结构同样表达,如用链表

8、都链表,用数组都数组)设计方法设计方法l需求分析定义的规格说明是在一个核心的、需求分析定义的规格说明是在一个核心的、大致的解题大致的解题模型模型之上,设计时要具体刻画出之上,设计时要具体刻画出来,来,具体到能一一对应编码为宜具体到能一一对应编码为宜l程序开发是从抽象到具体的过程。两种典型程序开发是从抽象到具体的过程。两种典型方法方法: :自顶向下逐步求精自顶向下逐步求精面向对象设计面向对象设计:面向对象编程是典型的由底向上设计;对象建模的关键是找出对象三三 编码编码l 编码编码(Coding)(Coding)是是正式地编写某种程序语言的源正式地编写某种程序语言的源程序,还包括以下工作:程序,还

9、包括以下工作: 模块最后重组 一致性完善 源程序级的程序优化:l 尽可能用符号常量l 减少重复计算l 将循环次数多的作内循环l 减少不必要的计算l 除了时间优化而外,还有空间优化即少占存储四四 测试与排错测试与排错l软件测试是为了发现程序中的错误而进软件测试是为了发现程序中的错误而进行的一系列工作过程。它有以下特征:行的一系列工作过程。它有以下特征: 测试的挑剔性 完全测试的不可能性l程序的可靠性程序的可靠性定义为定义为“在给定的时间和给定的环在给定的时间和给定的环境下,系统成功地执行所指定功能的概率境下,系统成功地执行所指定功能的概率” 测试的经济性测试技术测试技术l测试是将可能的输入值测试

10、是将可能的输入值( (一组数据一组数据) )输入输入运行后看程序是否满足预期结果运行后看程序是否满足预期结果( (机器动机器动作正确或输出值正确作正确或输出值正确) )。这一组测试数据。这一组测试数据称为测试用例称为测试用例(testing case)(testing case) 黑箱测试黑箱测试 白箱测试白箱测试黑箱测试黑箱测试l按规格说明指明的输入和预期的功能、性按规格说明指明的输入和预期的功能、性能进行测试。程序的使用性能是测试的主能进行测试。程序的使用性能是测试的主要目标。一般说的程序测试即指黑箱测试要目标。一般说的程序测试即指黑箱测试l等价类划分等价类划分l边值分析边值分析l测试用例

11、设计是一个需要创造性的工作,测试用例设计是一个需要创造性的工作,力求例子少而精,覆盖面大,且无一遗漏力求例子少而精,覆盖面大,且无一遗漏白箱测试白箱测试l让程序的每一条语句都执行一次本测试用让程序的每一条语句都执行一次本测试用例,这就是白箱测试例,这就是白箱测试l白箱测试也叫白箱测试也叫路径测试路径测试。所有的语句必须。所有的语句必须执行一次以上,这是最起码的要求。彻底执行一次以上,这是最起码的要求。彻底些,每条路径都要走到。些,每条路径都要走到。所有路径都走一所有路径都走一遍还不能保证彻底遍还不能保证彻底。因为每个判断的子条。因为每个判断的子条件也可能从未用过。只有每个判断的子判件也可能从未

12、用过。只有每个判断的子判断为断为真真为为假假都走一遍才相对彻底都走一遍才相对彻底排排 错错l排错排错(Debugging)(Debugging)也叫调试,排错是消除也叫调试,排错是消除程序中缺陷程序中缺陷(bug)(bug)的过程。一般有以下步的过程。一般有以下步骤:骤: 通过测试发现程序有错 找出出错的位置(定位) 分析出错原因,并改正之 再测试消除找出的缺陷排排 错错(续)(续)l 编码阶段的测试尽可能采用白箱技术。当一组数据多次运行有相同的错误则证明此模块有错。语法错误最好查,好的编译会指出出错地点。不能运行完的一般是连接错误,有的系统也会自动指出。能运行但不能得出正确结果是排错最常见的

13、工作l 错误定位的思维方法是“步步为营”、“缩小包围圈”。利用工具或人为设置检查点,每个检查点显示当前执行情况(数据值)l 一般需要接口处设检查点,以便了解进入本块的最初情况排排 错错(续)(续)l 找到出错原因改正错误要十分小心。不要找到一个就改,尽可能找出所有的错再改,以减少它们彼此因修改而产生的相互影响。经验表明,改一个错误派生出3-4个错是常有的事。对每次测试条件、结果的详细记录是十分重要的!l 一般把编码阶段的测试称为模块测试,对于不大的程序系统,以上方法和技术就足以应付了。对于较大的程序系统,下一步是整个程序系统的测试,将在软件工程中讲述4.24.2 软件工程概述软件工程概述l 软

14、件的发展:软件的发展:程序设计阶段(1946年1955年底)软件设计阶段(1956年1970年)软件工程阶段(1970年至今): l由于软件危机的产生,迫使人们不得不研究、改变软件开发的技术手段和管理方法。从此软件生产进入软件工程时 软件工程概述软件工程概述(续)(续)l1968年软件业界和科学工作者提出了软件工程的概念:任何软件都应当和其它产业任何软件都应当和其它产业的产品一样,由专业人员制作的产品一样,由专业人员制作( (软件中是系软件中是系统分析员、高级程序员、程序员统分析员、高级程序员、程序员) ),以,以系统系统的、工程的的、工程的方法开发制作,并提供全方位方法开发制作,并提供全方位

15、的售后服务管理的售后服务管理( (不能因开发者离开调走而不能因开发者离开调走而无人管无人管) )软件工程概述软件工程概述(续)(续)l所谓系统的方法是任何产品都有其创意、开发、生产、调试、使用、维护、退役的全过程,而不是只考虑其中的一部分(例如,软件开发)l所谓工程方法要有工程规范和工程管理。工程产品不要求绝对完善,只要求在给定时间、给定的经费和当前技术条件下符合规范的要求的最佳。工程管理要考虑到可行性、计划性、投入/产出、费用/效益软件工程概述软件工程概述(续)(续)l 软件开发不再是完成为解决某一问题而必需满足的功能、性能要求,而是作为一个软件产品的全面功能、性能要求。例如,可维护性、可扩

16、充性、可识性、可移植性等。软件工程以系统工程的方法制作软件产品,它包括:软件的系统软件的系统( (生存期生存期) )模型模型与此模型相对应的各种规范和标准与此模型相对应的各种规范和标准为达到这些规范、标准的方法和工具为达到这些规范、标准的方法和工具软件开发的全面管理软件开发的全面管理软件工程概述软件工程概述(续)(续)l 软件不仅仅是可运行的程序系统,为了维护和适应市场技术的发展,它必须有全套完整的文档,所以软件=程序+文档l 软件开发方法学的研究是软件技术发展最活跃的因素。所谓方法学(Methodology)是一组规范了的方法,按这组方法执行,可以得到较为理想的结果。把这组方法施行过程标准化

17、就是软件开发标准软件工程概述软件工程概述(续)(续)l 有了软件规范和标准,软件工具才有市场。软件工具从最初的编译器、连接器、加载运行的必备工具(现在已纳入操作系统范畴)到测试排错工具、格式美化器,到当今可执行的规范说明语言、模型描述代码自动生成工具。以“软件开发软件”的大量自动工具的出现,构成了良好的软件开发环境(Environment,开发环境即开发工具集的总称)。这些工具的互连和集成(在单一的界面上可以方便、灵活地使用这些工具)就构成了软件开发平台(flat)4.3 4.3 传统的软件工程传统的软件工程l软件工程是以系统的、规范的、定量的方软件工程是以系统的、规范的、定量的方法应用于软件

18、的开发、运营和维护,以及法应用于软件的开发、运营和维护,以及对这些方法的研究对这些方法的研究l软件工程一开始就以高质量、高效率、低软件工程一开始就以高质量、高效率、低成本开发大型软件系统为己任。强调采用成本开发大型软件系统为己任。强调采用强类型语言,严格规范、步步为营,实现强类型语言,严格规范、步步为营,实现软件的工程化开发软件的工程化开发一一 生存周期模型生存周期模型瀑布式生存周期模型瀑布式生存周期模型 / 线性顺序线性顺序l原型模型(原型模型(Prototyping)l螺旋模型(螺旋模型(Spiral)l构件组装模型(构件组装模型(Component)l快速应用开发(快速应用开发(RAD)

19、业务模型业务模型数据模型数据模型处理模型处理模型应用生成应用生成测试与交付测试与交付6090天天二二 需求分析需求分析l将用户需要抽象为模型,并指出什么样将用户需要抽象为模型,并指出什么样的软件能满足抽象出的模型的软件能满足抽象出的模型l分析任务分析任务:识别问题分析与综合建模写规格说明国家标准GB856D-88规格说明的内容 1. 1. 引言引言 1.1 1.1 编写说明编写说明 1.2 1.2 背景背景 立项根据或合同立项根据或合同 1.3 1.3 定义定义 指文中用到的术语、概念指文中用到的术语、概念 1.4 1.4 参考资料参考资料 2. 2. 任务概述任务概述 2.1 2.1 目标目

20、标 2.2 2.2 用户特点用户特点 2.3 2.3 假定和约束假定和约束 本软件前题条件本软件前题条件 3. 3. 需求规定需求规定 3.1 3.1 对功能的规定对功能的规定 可按信息结构分述可按信息结构分述国家标准GB856D-88规格说明的内容(续) 3.2 3.2 对性能的规定对性能的规定 3.2.1 3.2.1 精度精度 3.2.2 3.2.2 时间特性时间特性 3.2.3 3.2.3 灵活性灵活性 3.3 3.3 对输入输出的要求对输入输出的要求 3.4 3.4 对数据管理能力要求对数据管理能力要求 3.5 3.5 故障处理要求故障处理要求 3.6 3.6 其它专门要求其它专门要求

21、 4. 4. 运行环境规定运行环境规定 4.1 4.1 设备设备 4.2 4.2 支持软件支持软件 4.3 4.3 接口接口 4.4 4.4 控制控制 需求分析需求分析(续)(续)l需求阶段的其他工作需求阶段的其他工作 除了建模和写规格说明书之外,在需求阶段还要做以除了建模和写规格说明书之外,在需求阶段还要做以下工作下工作 可行性分析报告 项目计划 初步用户手册 评审分析模型分析模型l 分析模型诸元素分析模型诸元素数据模型:描述数据之间的关系,常用E-R图功能模型:描述软件如何处理数据,常用DFD图行为模型:以软件的数据状态改变来刻划软件的行为,事件是促使状态改变的动因,使状态转移,常用状态转

22、移图STDl 数据流图数据流图DFDDFDl 控制流图控制流图CFDCFD数据流图数据流图 DFDDFDl 信息在机内以数据形式出现。数据流图信息在机内以数据形式出现。数据流图(DataFlow Diagram)(DataFlow Diagram)的表示法很简单。的表示法很简单。只有四种图符只有四种图符外部实体数据流处理数据存储实体名数据名处理名名数据库查询应用的细化数据库查询应用的细化DFDDFD图图得到命令分析命令命令重组输出信息检查完整性得历史记录休整命令换成SQLDBMS分析应答输出数据用户命令历史命令命令合法命令出错1出错2终端数据被检数据出错了信息标志数据DB应答查询请求完整命令完

23、整命令不完整记录请求*数据库文件右图是细化的DFD图。*表示“与”,+表示“或”,也可用文字注明。一个圈就是一个过程/函数,可退化为一语句,也可再分解为一子DFD图,出入的数据流不变实体关系图实体关系图 ERDERDl实体实体关系图关系图(Entity-Relationship (Entity-Relationship DiagramDiagram简称简称ERDERD) )的图元是矩形框表示的图元是矩形框表示实体,中间写数据对象名;实体间的连实体,中间写数据对象名;实体间的连线即表示它们之间有关系,线上写关系线即表示它们之间有关系,线上写关系名。也可以把关系名写在凌形框内。联名。也可以把关系名

24、写在凌形框内。联线两端的符号表示在此关系下实体可以线两端的符号表示在此关系下实体可以1 1对对1 1出现,出现,1 1 对多,多对多出现。也可对多,多对多出现。也可以指示此关系是可选的以指示此关系是可选的实体关系图实例实体关系图实例l E-R图可以表示实体聚集和层次关系,如下图:选手分成不合格一般选手优秀干事国家队国奥队转业转队用用E-RE-R图表示层次关系图表示层次关系乒乓队田径队篮球队足球队组成国 家 队用用E-R图表示聚集关系图表示聚集关系三三 设计设计l 设计是构造软件的重要阶段,它根据分析得出的设计是构造软件的重要阶段,它根据分析得出的模型,以当今可用的技术和设施,作出决策。所模型,

25、以当今可用的技术和设施,作出决策。所以要设计出能运行的软件要作到以要设计出能运行的软件要作到: :数据设计数据设计 整个软件用到的数据体系结构设计体系结构设计 整个软件的程序组成过程设计过程设计 每个组成如何实现界面设计界面设计 用户怎样使用本软件?本 软件和环境如何相接设计设计(续)(续)l早期的设计分为概要设计早期的设计分为概要设计(preliminary (preliminary design)design)和详细设计和详细设计(detail design)(detail design)两个两个阶段阶段l设计不等于编码,设计不等于编码,“边设计、边编码、边边设计、边编码、边测试测试”是约

26、定俗成的,设计是约定俗成的,设计分析也无严分析也无严格界线格界线数据设计数据设计l数据设计(Data Design)是将需求分析中定义的数据模型进一步细化为软件实现需要的数据结构,它对应为分析模型中的E-R模型和数据字典l数据设计还要决定选用文件还是数据库系统l基于数据库的应用有时还需选定数据库系统并创建数据库。这些在需求分析时就应定下来,这个阶段是具体创建数据库体系结构设计体系结构设计l体系结构设计(Architectural design)的主要目标是建立整个软件的总体结构,在分析阶段中高层的模型图大体可以划分子系统,以及子系统间的数据联系l由于DFD图一般能反映数据和处理软件功能的两个方

27、面,所以从细化DFD图开始,完成后转成结构图(Structured Chart简称SC)建立体系结构的大体思路建立体系结构的大体思路l 细化细化DFDDFD图图l 分析细化的分析细化的DFDDFD图,调整图,调整SCSCl 结构调整结构调整l 调整时应考虑易于测试调整时应考虑易于测试界面设计界面设计管理输入设备(鼠标、键盘);确认用户输入;处理错误和显示错误消息;提供输入反馈(如输入自动回声);提供提示和帮助开发(开发者只要规定符号和提供帮助内容);窗口、域的显示,重叠和内容滚展;提供和应用程序的接口;界面管理功能和应用程序隔离;允许用户定制界面。 对应用开发者此刻要先做:界面的规格说明;界面

28、设计原则;定义到外部数据和外部设备或系统的接口过程设计过程设计l完成数据、体系结构、界面设计之后,就按处理规格说明,或控制规格说明,或状态转移图,一一写出过程程序。选定或设计相应的算法作出设计。此时并非用某种程序设计语言,而是类_xxx语言、PDL、细化图形(设计详细的结构化流程图)四四 软件测试软件测试l 软件测试软件测试是保证软件质量中的一种活动,软件质量要经过验证(Verification)和确认(Validation)过程,简称V&V验证验证是证实软件正确地实现了某些功能(所作的软件正确)确认确认是证实所作软件能够满足用户的要求(作出了正确的软件)测试是为发现软件错误而执行程序的过程本

29、节从软件工程角度系统地介绍测试测试的种类测试的种类l 单元(Unit,一个或多个模块)测试,它验证编码是否正确l 集成(Intergrated)测试,即按项目要求做完一完整软件,验证其功能、性能是否达到设计要求l 确认(Validation)测试,即全面验证本软件是否达到需求定义的规格说明的要求l 系统(System)测试,即全面测试作为软件产品的功能与性能,如错误恢复能力、安全性、抗干挠能力、极限能力等测试文档测试文档l在软件分析和设计时就要准备写出测试在软件分析和设计时就要准备写出测试计划。到设计完成后即时写出测试规模计划。到设计完成后即时写出测试规模说明说明( (包含测试计划包含测试计划) )。测试规格说明的。测试规格说明的大体内容如下页表大体内容如下页表: :测试规格说明测试规格说明. . 测试范围测试

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论