数据结构软件工程.ppt

上传人:小飞机 文档编号:6578960 上传时间:2023-11-14 格式:PPT 页数:53 大小:410.50KB
返回 下载 相关 举报
数据结构软件工程.ppt_第1页
第1页 / 共53页
数据结构软件工程.ppt_第2页
第2页 / 共53页
数据结构软件工程.ppt_第3页
第3页 / 共53页
数据结构软件工程.ppt_第4页
第4页 / 共53页
数据结构软件工程.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《数据结构软件工程.ppt》由会员分享,可在线阅读,更多相关《数据结构软件工程.ppt(53页珍藏版)》请在三一办公上搜索。

1、第9章 软件工程,9.1 软件工程概述 9.2 问题定义与可行性研究 9.3 软件的需求分析 9.4 软件的设计 9.5 软件的编程 9.6 软件的测试 9.7 软件的维护,9.1 软件工程概述,1软件与软件危机软件危机的产生:软件开发的复杂程度上升;大型软件的开发费用经常超出预算;完成时间常常超期;软件可靠性随规模的增长而下降;软件质量难以保证。,2软件工程软件工程研究的对象是大型软件系统的开发过程,它是一门交叉学科,涉及到计算机科学、管理科学、工程学和数学。“软件工程”的中心思想是把软件当作一种工业产品,要求“采用工程化的原理与方法对软件进行计划、开发和维护”。关键问题:质量、可靠性、开发

2、速度、经费。软件工程是从技术(方法和工具)和管理两方面研究如何更好地开发和维护计算机软件的一门新兴学科。,3软件生存周期软件生存周期的概念是从工业中产品生存周期的概念借用过来的。软件生存周期是从用户提出开发要求开始,直到该软件报废为止的这段时间,可分为3个时期:计划期、开发期和运行期。计划期又分为问题定义和可行性研究两个阶段;开发期分为4个阶段:需求分析阶段、设计阶段(总体设计、详细设计)、编码阶段和测试阶段;运行期即维护阶段。,软件生存周期的模型示意图“瀑布模型”,9.2 问题定义与可行性研究,1问题定义问题定义阶段的任务是要确定软件系统所要解决的任务。目标:提出关于问题性质、工程目标和规模

3、的书面报告,即软件系统目标与范围的说明。,2可行性研究 目的:用最小的代价确定在问题定义阶段确定的系统目标和规模是否现实,所确定的问题是否可以解决,系统方案在经济上、技术上和操作上是否可以接受。重点关注:经济可行性。估计开发费用以及新系统可能带来的收益,将两者进行权衡,看结果是否可以接受。,技术可行性。对要求的功能、性能以及限制条件进行分析,看是否能够做成一个可接受的系统。所考虑的因素通常还应包括开发的风险,是否能够得到需要的软件和硬件资源,以及一个熟练的、有能力的开发队伍,另外与系统开发有关的技术是否足以支持系统的研制。操作可行性。判断系统的操作方式在该用户组织内是否可行。,9.3 软件的需

4、求分析,9.3.1 需求分析概述软件的需求分析是开发期的第一个阶段。基本任务:用户和分析人员双方共同来理解系统的需求,并将共同理解形成一份文件,即软件需求说明书。需求说明书中描述的用户要求应该是一致的、无二义性的。,特点:面向用户问题:主要对用户的业务活动进行分析(而不是计算机软件结构或程序设计语言),明确在用户的业务环境中软件系统应该“做什么”。交流问题:用户只熟悉本身的业务活动和业务环境,不熟悉计算机技术;而开发人员恰恰相反。复杂度问题:对于一个大型而复杂的软件系统,用户很难精确完整地提出它的功能要求,需要经过多次长时间的讨论才能逐步精确、完善。,9.3.2 结构化分析方法(SA,Stru

5、ctured Analysis)SA方法的主导思想:采用“分解”和“抽象”的基本手段,自顶向下逐层分解,使复杂的问题得以有效地控制。主要描述工具:数据流图和数据字典。数据流图表示了软件的信息流向和信息的加工;数据字典是对这些信息和加工进行更详细的描述。SA方法与设计阶段的SD方法联合使用,能够较好地实现一个软件系统的研制。,9.3.3 数据流图数据流图是描述系统中数据流程的图形工具,它标识了一个系统的逻辑输入和逻辑输出以及把逻辑输入转换为逻辑输出所需要的加工。1数据流图的组成数据流图由四种基本成分组成,如下图所示:,(3)数据存储。它是数据流在加工过程中产生的临时文件或加工过程中需要查找的信息

6、。数据流表现的是动态数据特征;而数据存储表现的是静态数据特征。(4)源点和终点。表达不必很严格,它只是起到注释作用,补充说明系统与其它外界环境的联系。,示例:学生档案管理系统数据流图,2数据流图的结构复杂软件系统的数据流图通常采用分层的方式进行描述,分别为顶层、中间层和底层数据流图:(1)顶层。决定系统的范围、输入输出数据流,说明了系统的边界,把整个系统的功能抽象为一个加工。顶层数据流图只有一张,如下图所示。,(2)中间层。顶层之下是若干中间层,某一中间层既是它上一层加工的分解结果,又是它下一层若干加工的抽象,即它又可进一步分解。(3)底层。底层数据流图的加工是由基本加工构成的,所谓基本加工是

7、指不能再进行分解的加工。在画各层数据流图时,要注意父图与子图的平衡,各层数据流图及其加工的编号和数据守恒问题。,9.3.4 数据字典SA方法使用数据字典对数据流图描述的各个成分进行详细说明。数据字典是SA方法重要工具之一,与数据流图配套,缺一不可。数据字典中有四种条目:数据流、数据存储、数据项和基本加工。(数据流图中的非基本加工、源点、终点都不必描述)数据字典的作用:建立一组一致的定义,避免模块接口和系统接口的不一致性。,1符号约定(1)“+”表示与。例如:登记表=姓名+专业+班级+年龄+性别+籍贯;(2)“|”表示或。例如:存期=1|2|3|5,表示银行存期可有1年,2年,3年,5年,而“”

8、表示选择项。(3)“”表示重复。例如:发票=发票行,表示一张发票有若干行。,数据字典示例,2加工逻辑的描述加工逻辑是基本加工条目中的一项重要内容,有三种工具来描述加工逻辑:结构化语言,判定表,判定树。结构化语言介于自然语言和形式语言之间,其结构分为内、外两层,外层语法比较具体,内层语法比较灵活。外层语法描述操作的控制结构,如顺序、选择和循还等,这些控制结构将加工中的各个操作连起来。,判定表是用表格的形式列出在什么条件下作什么处理,一目了然。判定树是以一棵从左向右生长的树型表示来描述在各种条件下要作的事情,树的各个分支表示某种条件,分支的端点表示该分支对应的条件下要作的处理。,示例:“检查订货单

9、”的加工逻辑是如果金额超过500元,又未过期,则发出批准单和提货单;如果金额超过500元,但过期了,则不发批准单;如果金额低于500元,则不论是否过期都发出批准单和提货单,在未过期情况下不需发出通知单。可以用下表所示的判定表表示这个加工逻辑。,判定表示例,判定树描述示例 已过期不发批准单 金额500 未过期发出批准单、提货单检查订购单 已过期发出批准单、提货单和通知单 金额500 未过期发出批准单、提货单,9.4 软件的设计,9.4.1 软件设计概述目标和任务:需求分析阶段是解决软件系统“做什么”的问题,设计阶段是解决软件系统“如何做”的问题(关键!),也就是软件系统的功能、性能如何实现,可靠

10、性如何体现,最后应得到软件设计说明书。设计阶段分为两步:总体设计和详细设计。,总体设计是为软件系统定义一个逻辑上一致的结构:进行模块划分,建立模块层次结构及模块间的调用关系,设计全局数据结构及数据库,设计系统接口及人机界面等。总体设计的方法:模块化方法、功能分解方法、面向数据流的方法、面向数据结构的方法、面向对象的方法、面向组件的方法、面向服务的方法,等等。,详细设计是根据每个模块的功能描述,设计出每个模块的实现算法,以及这些算法的逻辑控制流程,并设计出这些模块所需的局部数据结构。详细设计的方法:结构程序设计方法。详细设计的表示工具包括图形工具和语言工具。图形工具:程序流程图、PAD(Prob

11、lem Analysis Diagram)图、NS图;语言工具:伪码和PDL(Program Design Language)等。,9.4.2 软件设计准则1软件结构抽象化的准则软件可以从结构上和过程上进行表示。软件结构表示软件的系统结构,是一种层次体系,它不考虑时间的先后和执行的顺序,而只给出各软件模块之间的关系和相互作用。,2模块化准则把软件划分为一些单独命名和编程的元素,这些元素称为模块。模块划分的目的:一是进行功能分解,尽量降低每个模块的成本;二是尽量减少模块间的接口,太多会使接口成本增加。目标:兼顾功能分解与接口划分问题,确保软件总成本最低。,模块划分与软件成本关系,3模块独立性准则

12、模块独立性是评价模块结构好坏的一条重要标准。模块独立性是指模块具有功能专一,模块之间无过多相互作用的特性。独立性的好处:易于开发、组合、修改、测试,并且能减少错误的传播。度量标准:(内聚性和耦合性)内聚性是模块内各部分之间联系紧密程度的度量,耦合性是模块之间联系紧密程度的度量。,(1)内聚性。反映一个模块内各元素彼此之间的结合程度。内聚性强,标志模块的独立性强;内聚性弱,标志模块的独立性差。(2)耦合性。是模块间相互连接紧密程度的度量。耦合性强,标志互联强,模块独立性差;耦合性弱,标志互联弱,模块独立性强。耦合强弱取决于划分模块造成模块间接口的复杂程度。模块独立性设计原则:应力求内聚性高,耦合

13、性弱。,9.4.3 结构化设计方法(SD,Structured Design)用于总体设计的一套方法,与SA方法联合使用。SD方法的基本思想来源于模块化、自顶向下逐步求精的功能划分。评价软件结构是模块的独立性准则。SD方法提供了从数据流图导出软件结构的方法和规则,它采用软件结构图来描述软件结构。数据流图软件结构图?,1数据流图的类型数据流图可分为两大类型:变换型和事务型。变换型数据流图包含输入流、输出流、变换流三部分。事务型数据流图的特点是一个数据流经过某个加工后,有若干平行数据流流出,输入数据流称为事务流,加工称为事务中心,若干平行数据流称为事务路径。变换型和事务型的数据流图形式如下图所示。

14、,变换型和事务型的数据流图形式,2软件结构图在软件结构图中,用方框表示模块,方框中用文字标记该模块的名字,方框之间的连线表示关系。模块之间的小箭头表示接口信息,小箭头旁边标记的文字表示接口信息的名字,小箭头的方向表示接口信息传送的方向。模块之间的菱形符号表示上层模块有条件地调用下层模块,弧形箭头表示上层模块重复地调用下层模块。,软件结构图,3变换分析变换分析是一组设计步骤,可把数据流图映射为一种标准结构。变换分析步骤为:确定数据流图的类型;确定输入流、中心加工和输出流的流界;第一级分解,设计上层模块;第二级分解,设计中下层模块;进一步精细化。,示例:顶层结构图,中下层结构图,4事务分析当数据流

15、图呈现出事务型特征时,就要用事务分析技术,将相应的数据流图映射为对应的标准结构图,其步骤与变换分析相同。,示例:事务分析及标准结构图,5设计后处理将数据流图映射为标准结构图,并加以修改完善后,还要用自然语言来描述每个模块的主要任务、主要功能、输入信息、输出信息等,为详细设计打好基础。,9.4.4 面向对象的程序设计方法面向对象(Object Oriented)程序设计方法简称为OO方法。面向对象的程序设计是以对象为基础,以消息驱动对象执行的程序设计技术。OO技术为软件开发提供了一种新的方法,引入了许多新的概念。这些概念是理解和使用OO技术的基础。,9.5 软件的编程,编程阶段也称为实现阶段。编

16、程的任务是为每个模块编写程序,也就是将模块的逻辑描述转换成某种程序设计语言编写的程序。编程阶段应交付的文档就是程序。编程的目的就是写出逻辑上正确、结构良好、易于阅读的程序。,选择编程语言的原则是:最少工作量原则。最少技巧性原则。最少错误原则。最少维护原则。最少记忆原则。编程风格反映了一个程序员在编程时所表现的特点、结构、逻辑思路的总和。编程风格包括源程序文件,数据说明,输入输出安排等。编程风格应遵循简明性和清晰性的原则。,9.6 软件的测试,在软件交付使用之前必须经过严格的软件测试,通过测试尽可能找出需求分析、总体设计、详细设计和软件编程中的错误,并加以纠正,得到高质量的软件。测试的定义是:为

17、了发现程序中的错误而执行程序的过程。注意:测试只能用于查找出程序中的错误,不能证明程序中没有错误。,测试的方法:白盒法和黑盒法。白盒法是把程序看成装在一个透明的白盒子里,也就是人们完全了解程序的结构和处理过程,按照程序内部的逻辑结构,检验程序中的每条通路是否都能按照预定的要求正确工作。黑盒法是完全不管程序内部的结构和处理,把程序看成一个黑盒子,只按照程序需求说明书规定的功能和性能正常使用,程序是否能适当地接受输入数据并产生正确的输出信息。,测试阶段应该注意的一些基本原则是:(1)测试用例应该由以下两部分组成:输入数据和预期的输出结果。(2)不仅要选择合理的输入数据作为测试用例,还应选用不合理的

18、输入数据作为测试用例。(3)除了检查程序是否做了应做的工作之外,还应检查程序是否做了不应做的事。(4)应该长期保留所有的测试用例,直至这个程序系统被废弃不用为止。,测试阶段分为以下几个步骤:(1)模块测试。又称单元测试,检查每个模块是否有错误,主要发现编程和详细设计阶段的错误;(2)组装测试。又称综合测试,检查模块之间的接口的正确性,主要用于发现总体设计阶段的错误;(3)确认测试。检查程序系统是否满足用户的功能和性能要求,主要用于发现需求分析阶段的错误。,设计测试用例是测试阶段的关键技术。测试用例包括预定要测试的功能,应该输入的测试数据和预期的结果。设计测试用例的基本目标是:确定一组最可能发现某个错误或某类错误的测试数据。通常是用黑盒法设计基本的测试用例,再用白盒法设计一些补充用例。,9.6 软件维护,在软件系统投入运行后,由于系统外部环境的变化、内部人为的、机器因素的影响,需要系统能够适应变化,消除各种干扰,需要进行系统维护。系统维护的目的是保证系统正常而可靠地运行,并随着环境的变化,不断改善和提高,始终处于正确的工作状态。根据维护对象的不同,系统维护可以分为应用软件维护、数据维护、代码维护和硬件设备维护。,习题:P233 2,4,5,6,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号