收藏 分销(赏)

第十三章软件工程.ppt

上传人:快乐****生活 文档编号:10267139 上传时间:2025-05-08 格式:PPT 页数:49 大小:257.54KB 下载积分:14 金币
下载 相关 举报
第十三章软件工程.ppt_第1页
第1页 / 共49页
第十三章软件工程.ppt_第2页
第2页 / 共49页


点击查看更多>>
资源描述
第13章软件工程,13.1 软件工程的基本概念,13.2 软件需求分析,13.3 软件设计,13.4 程序设计基础,13.5软件测试,13.6程序的调试,习题,13.1 软件工程的基本概念,软件危机与软件工程,1.软件危机,软件危机主要表现在:,软件需求的增长得不到满足;,软件开发的成本和进度无法控制;,软件质量难以保证;,软件不可维护或维护成度非常低;,软件成本不断提高;,软件开发赶不上硬件的发展。,2.软件工程,为了消除软件危机,形成了软件工程的概念。,软件工程就是试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法。,软件工程包括3个要素,即方法、工具和过程。,方法是完成软件工程项目的技术手段;,工具支持软件的开发、管理、文档生成;,过程支持软件开发的各个环节的控制、管理。,软件工程的核心思想是把软件产品作为是一个工程产品来处理。,13.1.2 软件生命周期,分为定义、开发及维护三个阶段。,可行性研究,初步项目计划,需求分析,概要设计,详细设计,实现,测试,使用,维护,退役,定义阶段,开发阶段,维护阶段,13.1.3 软件开发工具与软件开发环境,1.软件开发工具,是指用来帮助开发,测试、分析、维护其他计算机程序及其文档资料的一类程序。,软件工具主要包括需求分析工具、设计工具、编码工具、确认工具、维护工具等。,2.软件工程环境,软件工程环境是指全面支持软件开发全过程的软件工具集合。,13.2 软件需求分析,需求分析与需求分析方法,1需求分析,软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。,需求分析阶段的工作包括四个方面:,需求获取,需求分析,编写需求说明书,需求评审,2.需求分析方法,常见的需求分析方法有:,结构化分析方法。,面向对象的分析方法。,结构化分析方法,结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。,结构化分析的步骤如下:,通过对用户的调查,获得当前系统的具体模型:,去掉具体模型中非本质因素,抽象出当前系统的逻辑模型:,根据计算机的特点分析当前系统与目标系统的差别,建立目标系统的逻辑模型,完善目标系统并补充细节,写出目标系统的软件需求规格说明;,评审直到确认完全符合用户对软件的需求。,结构化分析的常用工具,1.数据流图,数据流图是描述数据处理过程的有力工具,是从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。,2.数据字典,数据字典是对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义。,3.判定表,判定表是一种文本化的加工说明的流行格式,它特别适用于带有一组测试条件的说明。,条 件,分 类,1,2,3,4,金 额,1000,1000,1000,1000,动 作,账目状况,未过期,已过期,未过期,已过期,押下批准单,发出批准单,发出提货单,发出通知单,4.判定树判定树也是用来表达加工逻辑的一种工具。,软件需求规格说明书,是需求分析阶段的最后成果。,1.软件需求规格说明书的作用,便于用户、开发人员进行理解和交流。,反映出用户问题的结构,可以作为软件开发工作的基础和依据。,作为确认测试和验收的依据。,2.软件需求规格说明书的内容,概述;,数据描述;,功能描述;,性能描述;,参考文献;,附录。,3.软件需求规格说明书的特征,正确性;,无歧义性;,完整性;,可验证性;,一致性;,可理解性;,可修改性;,可追踪性。,13.3 软件设计,13.3.1 软件设计的基本概念,1.软件设计的基础,2.软件设计的基本原理,(1)模块化,模块化就是把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集成起来组成一个整体,可以完成指定的功能。,(2)抽象,用自顶向下由抽象到具体的方式进行分配控制,简化了软件的设计和实现,提高了软件的可理解性和可测试性,并且使软件更容易维护。,(3)信息隐蔽,信息隐蔽使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。,(4)模块独立性,每个模块完成一个相对独立的特定子功能,并且和其他模块之间的接口很简单。,模块的独立程度可以由两个定性标准来衡量,这两个标准分别称为耦合性和内聚性。藕合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此间结合的紧密程度。,一般较较优秀的软件设计应尽量做到高内聚、低耦合,即减弱模块间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。,13.3.2 概要设计,1.概要设计的任务,1)设计软件系统结构,2)数据结构及数据库设计,3)编写概要设计文档,4)概要设计文档评审,2.面向数据流的设计方法,3.设计的准则,提高模块独立性。,模块规模适中。,应减少模块的接口和界面的复杂性。,设计成单入口、单出口的模块。,设计功能可预测的模块。,详细设计,详细设计也称过程设计。在过程设计阶段,要对每个模块规定的功能以及算法的设计,给出适当的算法描述。,常见的过程设计工具有:,图形工具:程序流程图,N-S,PAD,HIPO。,表格工具:判定表。,语言工具:PDL(伪码)。,13.4 程序设计基础,13.4.1 程序设计方法与风格,1源程序文档化,(1)符号名的命名:具实际含义。,(2)程序注释:,序言性注释:整体说明;,功能性注释:语句或程序段的作用。,(3)视觉组织:使程序层次清晰。,2数据说明的方法,数据说明的次序规范化。,说明语句中变量安排有序化。,使用注释来说明复杂数据的结构和作用。,3.语句的结构,(1)在一行内只写一条语句。,(2)程序编写要做到清晰第一,效率第二。,(3)首先要保证程序正确,然后才要求提高速度。,(4)避免使用临时变量而使程序的可读性下降。,(5)避免不必要的转移。,(6)避免使用复杂的条件语句。,(7)尽可能使用库函数。,(8)数据结构要有利于程序的简化。,(9)要模块化,并且模块功能尽可能单一。,(10)利用信息隐蔽,确保各模块的独立性。,(11)从数据出发去构造程序。,(12)确保每一个模块的独立性。,(13)不好的程序不去修补,要重新编写。,输入格式要简单;,输入数据时,应允许使用自由格式;应允许缺省值;,输入一批数据时,最好使用输入结束标志;,对所有的输入数据都要检验数据的合法性;,在以交互式输入输出方式进行输入时,要在屏幕上使用提示符明确提示输入的请求;,当程序设计语言对输入格式有严格要求时,应保持输入格式与输入语句的一致性;给所有的输出加注释,并设计输出报表格式。,4 输入和输出,13.4.2 结构化程序设计 1 结构化程序设计的原则,(1)自顶向下:先考虑总体,后考虑细节。,(2)逐步求精:对复杂问题,逐步细化。,(3)模块化:把总目标分解为小目标(模块)。,(4)限制使用GOTO 语句。,2 结构化程序设计的基本结构,(1)顺序结构,A,B,(2)选择结构,假,条件,A,B,真,真,假,A,条件,真,假,A,条件,(3)重复结构(循环结构),(1)使用顺序、选择、循环控制结构表示程序的控制逻辑;,(2)选用的控制结构只有一个入口和一个出口;,(3)程序语句组成容易识别的块,每块只有一个入口和一个出口;,(4)复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现;,(5)语言中所没有的控制结构,应该采用前后一致的方法来模拟;,(6)严格控制GOTO 语句的使用。,3 结构化程序设计原则和方法的应用,13.4.3 面向对象的程序设计,1关于面向对象方法,面向对象方法的本质,就是主张从客观世界固有的事物出发来构造系统,提倡用人类在现实生活中常用的思维方法来认识、理解和描述客观事物,强调最终建立的系统中的对象以及对象之间的关系能够如实地反映问题域中固有事物及其关系。,2 面向对象方法的基本概念,(1)对象(object),具有属性和方法的实体叫对象。它由数据和可执行的一组操作共同组成。,例如:,一辆汽车是一个对象,它包含了汽车的属性(如颜色、型号、载重量等)及其操作(如启动、刹车等)。,一个窗口是一个对象,它包含了窗口的属性(如大小、颜色、位置等)及其操作(如打开、关闭等)。,对象有如下一些基本特点:,惟一性。指对象是可区分的。,分类性。具有相同属性和操作的对象抽象成类。,多态性。指同一个操作可以是不同对象的行为。,封装性。从外面看只能看到对象的外部特性,对象的内部,即处理能力的实行和内部状态,对外是不可见的。,模块独立性好。,(2)类(Class),类是具有共同属性、共同方法的对象的集合。,例如:Integer是一个整数类,它描述了所有整数的性质。任何整数都是整数类的对象,而一个具体的整数“123”是类Integer 的一个实例。,(3)消息(Message),消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。,(4)继承(Inheritance),继承是指使用己有的类来定义新的类。,已有的类称为基类,新类称为派生类。,继承分为单继承与多重继承。,(5)多态性(Polymorphism),同样的消息被不同的对象接受时可导致完全不同的行动,该现象称为多态性。,例如,在两个类Male(男性)和Female(女性)都有一项属性为Friend。一个人的朋友必须属于类Male 或Female,这是一个多态性的情况,13.5软件测试,软件测试的目的,软件测试是为了发现错误而执行程序的过程。,13.5.2 软件测试的准则,所有测试都应追溯到需求;,严格执行测试计划,排除测试的随意性;,充分注意测试中的群集现象;,程序员应避免检查自己的程序;,穷举测试不可能;,妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。,13.5.3 软件测试技术与方法,若从是否需要执行被测软件的角度,可以分为静态测试和动态测试方法。,若按照功能划分可以分为白盒测试和黑盒测试方法。,1.静态测试与动态测试,(1)静态测试,静态测试一般指人工评审软件文档或程序,以便发现错误。,静态测试包括:代码检查、静态结构分析、代码质量度量等。,(2)动态测试,动态测试是在样板测试数据上执行程序并分析输出以发现错误的过程。所以动态测试包括三部分:生成测试数据、执行程序与验证的输出结果。,2.白盒测试与黑盒测试,(1)白盒测试,软件的白盒测试是对软件的过程性细节作细致的检查。这一方法是把测试对象看作一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。,(2)黑盒测试,就软件测试来讲,软件的黑盒测试意味着测试要根据软件的外部特性进行。也就是说,这种方法是把测试对象看作一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。,13.5.4 软件测试的实施,软件测试过程分4个步骤,即单元测试、集成测试、验收测试(确认测试)和系统测试。,1.单元测试,单元测试是对软件设计的最小单位模块(程序单元)进行正确性检验的测试。单元测试的目的是发现各模块内部可能存在的各种错误。,单元测试的依据是详细设计说明书和源程序。,2 集成测试,集成测试是测试和组装软件的过程。它是把模块在按照设计要求组装起来的同时进行测试,主要目的是发现与接口有关的错误。集成测试的依据是概要设计说明书。,3 确认测试,确认测试的任务是验证软件的功能和性能及其他特性是否满足了需求规格说明中确定的各种需求,以及软件配置是否完全、正确。,4 系统测试,系统测试是将通过测试确认的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、支持软件、数据和人员等其他系统元素组合在一起,在实际运行(使用)环境下对计算机系统进行一系列的集成测试和确认测试。,13.6程序的调试,基本概念,在对程序进行了成功的测试之后将进入程序调试。,程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测试是尽可能多地发现软件中的错误。软件测试贯穿整个软件生命期,调试主要在开发阶段。,1 程序调试的基本步骤,(1)错误定位,(2)修改设计和代码,以排除错误,(3)进行回归测试,防止引进新的错误,因为修改程序可能带来新的错误,重复进行有关测试,以确认该错误是否被排除、是否引进了新的错误。如果所做的修正无效,则撤销这次改动,重复上述过程,直到找到一个有效的解决办法为止。,2.程序调试的原则,(1)确定错误的性质和位置时的注意事项:,分析思考与错误征兆有关的信息;,避开死胡同;,只把调试工具当作辅助手段来使用;,避免用试探法,最多只能把它当作最后手段。,(2)修改错误的原则,在出现错误的地方,很可能还有别的错误;,修改错误的一个常见失误是只修改了这个错误的征兆或这个错误的表现,而没有修改错误本身;,注意修正一个错误的同时有可能会引入新的错误;,修改错误的过程将迫使人们暂时回到程序设计阶段;,修改源代码程序,不要改变目标代码,软件的调试方法,1.强行排错法,作为传统的调试方法,其过程可概括为,设置断点、程序暂停、观察程序状态、继续运行程序是目前使用较多、效率较低的调试方法。涉及的调试技术主要是设置断点和监视表达式。例如:,通过内存全部打印来排错;,在程序特定部位设置打印语句,即断点法;,自动调试工具。,2.回溯法,该方法适合于小规模程序的排错。即一旦发现了错误,先分析错误征兆,确定最先发现“症状”的位置。然后,从发现“症状”的地方开始,沿程序的控制流程,逆向跟踪源程序代码,直到找到错误根源或确定错误产生的范围。,3.原因排除法,原因排除法是通过演绎和归纳,以及二分法来实现的。,演绎法是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。,归纳法是一种从特殊推断出一般的系统化思考方法。其基本思想是从一些线索着手,通过分析寻找到潜在的原因,从而找出错误。,二分法实现的基本思想是,如果已知每个变量在程序中若干个关键点的正确值,则可以使用定值语句(如赋值语句、输入语句等)在程序中的某点附近给这些变量赋正确值,然后运行程序并检查程序的输出。,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服