软件工程复习课_第1页
软件工程复习课_第2页
软件工程复习课_第3页
软件工程复习课_第4页
软件工程复习课_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、1. 软件工程方法学的3要素是什么;分别包含什么内容?软件工程由方法、工具和过程三部分组成,称软件工程的三要素。 软件工程中的各种方法为软件开发提供了“如何做”的技术。它包括了多个方面,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法过程的设计、编码、测试以及维护等。 软件工程使用的软件工具能够自动或半自动地支持软件的开发、管理和文档的生成。 软件工程中的过程是贯穿于整个工程的各个环节,是将软件工程的方法和工具综合起来,合理、及时地进行计算机软件开发的过程。过程定义了方法使用的顺序、要求交付的文档资料、为保证质量和协调变化所需要的管理、及软件开发各个阶段完成的里程碑。2.

2、 软件生命周期分为哪3个时期和8个阶段;顺序如何;跨越时间最长的是哪个?(问题定义->可行性研究->需求分析)->(总体设计->详细设计)->(编码->测试)->运行维护3. 几种常见的软件生命周期模型:瀑布模型:基本思想瀑布模型严格按照软件生存周期各个阶段来进行开发,上一阶段的输出即是下一阶段的输入,并强调每一阶段的严格性。它规定了各阶段的任务和应提交的成果及文档,每一阶段的任务完成后,都必须对其阶段性产品(主要是文档)进行评审,通过后才能开始下一阶段的工作。因此,它是一种以文档作为驱动的模型。快速原型模型:基本思想;什么是原型,它的特点其基本思想是

3、:软件开发人员根据用户提出的软件基本需求快速开发一个原型,以便向用户展示软件系统应有的一部分或全部功能和性能,同时使用户熟悉系统。在征求用户对原型的初步意见后,进一步使需求全面化、精确化,并据此改进、完善原型。如此迭代,直到软件开发人员和用户都通过原型确认软件系统的需求并达成一致的理解为止。软件需求确定后,便可进行设计,编码、测试等以后的各个开发步骤。特点:l 开发过程基本上是线性的;(原因有二:P86)l 加快了开发过程,降低了开发成本;l 原型模型比瀑布模型更符合人们认识事物的过程和规律,是一种较实用的开发框架;l 它适合于那些不能预先确切定义需求的软件系统的开发,适合于那些项目组成员(包

4、括分析员、设计员、程序员和用户)不能很好交流或通信有困难的情况。螺旋模型:引入的原因;特点-风险驱动,适用于大型软件开发;简化的螺旋模型是在每个阶段之前都增加了风险分析过程的快速原型模型。引入螺旋模型的原因:软件风险,普遍存在于软件开发项目中,项目越大,风险越大。软件风险可能在不同程度上损害软件开发过程和软件产品质量。喷泉模型:特点它是以面向对象的软件开发方法为基础,以用户需求为动力,以对象来驱动的模型。“喷泉”一词本身体现了迭代和无间隙特性。系统某个部分工作常常重复多次,相关功能在每次迭代中逐步加入演进的系统。所谓无间隙是指在开发活动,即分析、设计和编码之间不存在明显的边界。该模型很自然地支

5、持软部件的重用。4. 数据流图(DFD):什么是(它描述的是什么),成份和基本符号,结构数据流图-系统逻辑功能的描述工具数据流图有4种成分:源点和终点,处理,数据存储,数据流。注意:DFD有源点、终点,除此之外的每个节点是数据加工;5. 状态转换图:什么是,结构状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。此外,状态图还指明了作为特定事件的结果系统将做哪些动作。因此,利用状态转换图可以建立系统的行为模型。l 状态转换图中的成份(1) 状态 P56(2) 事件 事件是在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事

6、件的抽象,也就是引起系统做动作或(和)转换状态的控制信息/动作。(3) 状态转换 从一个状态到另一个状态,变迁的方向。注意:状态转换图的每个节点是一个状态,在一张状态图中只能有一个初态,而终态则可以有0至多个6. 数据字典:什么是,用途,与数据流图的关系,哪些信息需要在数据字典中被定义数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素进行定义的集合。它的作用也正是在软件分析和设计的过程中 给人提供关于数据的描述信息。数据流图和数据字典共同构成系统可行性研究阶段的逻辑模型。数据字典的用途 (1) 分析阶段的通信工具(2) 包含控制信息(3) 数据库设计的基础l 数据定义使用到的符号

7、及意义:由数据元素组成数据的方式:(1) 顺序 即以确定次序连接两个或多个分量;(2) 选择 即从两个或多个可能的元素中选取一个;(3) 重复 即把指定的分量重复零次或多次。(4) 可选 即一个分量是可有可无的(重复零次或一次)。可采用下列符号:= 意思是定义为 (或等价于);(1) + 意思是和(即,顺序连接两个分量);(2) 意思是或(即,从方括弧内列出的若干个分量中选择一个),通常用“|”号隔开供选择的分量;(3) 意思是重复(即,重复花括弧内的分量);(4) ( )意思是可选(即,圆括弧里的分量可有可无)。用例:标识符=字母字符+字母数字串字母数字串=0字母或数字7字母或数字=字母字符

8、数字字符7. 问题定义+可行性研究,阶段的基本任务(工作)是什么?可行性研究工作是在初步的需求定义(澄清问题的定义)之后进行的,其的目的是用最小的代价在尽量短的时间内(总成本的5%10%)确定该项目是否值得去解决,是否存在可行的解决方案。8. 需求分析阶段的基本任务(工作)是什么?要准确回答什么问题?需求分析就是通过对应用问题及其环境的分析与理解,采用一系列的分析方法和技术,将用户的需求逐步精确化、完全化、一致化,对目标系统提出完整、准确、清晰、具体的要求。最终形成需求规格说明文档的过程。在此,准确回答软件系统“必须做什么”。需求分析的主要任务(1)、确定需求-确定对系统的综合要求;(2)、建

9、立数据模型-利用图形工具描述系统的数据结构,并将数据结构规范化,建立数据模型;(3)、导出系统的逻辑模型-通常用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述整个逻辑模型。(4)、修正系统开发计划(5)、编写需求规格说明9. 需求分析要建立哪三大模型,分别用什么工具描述?模型的核心是数据字典,它描述了所有的在目标系统中使用的和生成的数据对象。围绕着这个核心的有三种图:实体-关系图(ERD)描述数据对象及数据对象之间的关系-数据模型;数据流图(DFD)描述数据在系统中如何被传送或变换,以及描述如何实现对数据流进行变换的功能(或子功能)-功能模型;状态-迁移图(STD)描述系统对

10、外部事件如何响应,如何动作-行为模型。因此,ERD用于数据建模,DFD用于功能建模,STD用于行为建模。10. 软件需求通常包括哪些方面?如何获取软件需求?软件需求是指用户对目标软件系统在功能、性能、行为、设计约束等方面的期望。(1) 功能需求;(2) 性能需求;(3) 可靠性和可用性需求;(4) 出错处理需求;(5) 接口需求;(6) 约束;(7) 逆向需求;(8) 将来可能提出的要求需求的来源l 客户或用户l 领域标准l 相关领域的专家l 系统或过程文档l 相关政策或法律11. 总体设计阶段的基本任务(工作)是什么?总体设计 (概要设计)-将软件需求转化为软件的系统结构和全局数据结构,确定

11、各组成成分(子系统或模块)之间的相互关系总体设计的任务l 划分出组成系统的物理元素-程序、文件、数据库、人工过程和文档等等。但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。l 设计软件的体系结构,也就是要确定系统是由哪些模块组成的,以及这些模块相互间的关系。12. 如何将数据流图转换成软件结构图?数据流图软件结构图13. 耦合的含义,1-7级耦合的具体含义,耦合级别的排列;模块独立性对于耦合的要求l 耦合(Coupling):是对软件结构内不同模块之间相互关联程度的强弱的度量。它取决于各个模块之间接口的复杂程度、进入或访问一个模块的点以及哪些信息通过接口传递。耦合是影

12、响软件复杂程度的一个重要因素。应该采取下述设计原则:尽量使用数据耦合,少量使用控制耦合和特征耦合,限制公共环境耦合的范围,完全不允许内容耦合,最终降低模块间接口的复杂性。14. 内聚的含义,1-7级内聚的具体含义,内聚级别的排列;模块独立性对于内聚的要求l 内聚(Cohesion):标志同一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。高内聚:模块内部完成单一的处理;低内聚:模块内部各部分关联不紧密,完成分散的多个处理任务;设计时应该力争做到高内聚。耦合,描述两个或多个模块之间的相互关联程度;内聚,描述一个模块内部各处理元素之间的互关联程度。耦合与内聚都是模块独立性的

13、定性标准,都反映模块独立性的良好程度。设计的目标应该是力争高内聚、低耦合。15. 详细设计阶段的基本任务(工作)是什么?任务:用一定的工具精确描述目标系统,从而方便在编码阶段可以把这种描述直接翻译成用某种程序设计语言书写的程序。(1) 确定每一模块的算法(处理流程)(2) 确定每一模块使用的数据结构(3) 确定本模块的接口和用户界面(4) 为每一模块设计一组测试用例(单元测试计划)16. 详细设计的描述工具-程序流程图、盒图、判定表/判定树等:什么是,基本符号和含义,特点程序流程图l 基本符号(国家标准)可表示的控制结构见前图(结构化程序设计中基本的控制流程)。循环的标准符号:主要优点是对控制

14、流程的描绘很直观,便于初学者掌握。程序流程图的主要缺点如下:(1) 程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。(2) 程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。(3) 程序流程图不易表示数据结构。盒图(N-S图)l 基本符号和表示的结构它有下述特点:(1) 功能域(即,一个特定控制结构的作用域)明确,可以从盒图上一眼就看出来。(2) 没有箭头,不可能任意转移控制。(3) 很容易确定局部和全程数据的作用域。(4) 很容易表现嵌套关系,也可以表示模块的层次结构。l 特点:(1) 可

15、以清楚表示条件组合和动作组合之间的关系(2) 判定树:是判定表的变化形式 P5254(3) 不是通用的过程设计工具,宜作为辅助测试工具17. 计算程序模块的环形复杂度的McCabe方法:计算工具:流图-退化了的程序流程图计算方法:3种方法计算方法:(1) 流图中的区域数等于环形复杂度区域:由边和结点围成的面积称为区域。当计算区域数时应该包括图外部未被围起来的那个区域。即流图的封闭区域数加1。(2) 流图的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。(3) 流图的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。18. 编码风格涉及的一系列内容编码风格源程序实

16、际上也是一种供人阅读的文档,有一个文档的风格问题。应该使程序具有良好的风格。源程序代码的逻辑简明清晰、易读易懂是好程序的一个重要标准。1、源程序文档化源程序文档化包括恰当的标识符、适当的注解和程序的视觉组织等等。l 标识符的命名(1) 标识符,包括模块名、变量名、常量名、标号名、子程序名、数据区名、缓冲区名、;(2) 这些名字应能反映它所代表的实际东西,应有一定实际意义。例如,表示次数的量用Times,表示总量的用Total,表示平均值的用Average,表示和的量用Sum等;(3) 名字不是越长越好,应当选择精炼的意义明确的名字。必要时可使用缩写名字,但这时要注意缩写规则要一致,并且要在每一

17、个名字第一次出现的时候给它加注释。同时,在一个程序中,一个变量只应用于一种用途。l 正确、适当的程序注释夹在程序中的注释是程序员与日后的程序读者之间通信的重要手段,注释决不是可有可无的;一些正规的程序文本中,注释行的数量占到整个源程序的1/3到1/2,甚至更多。注释分为序言性注释和功能性注释。(1) 序言性注释通常置于每个程序模块的开头部分,说明模块的功能、入口参数格式、参数含义、返回值、最初完成时间、最近修改时间、作者等信息;对于理解程序本身具有引导作用。(2) 功能性注释通常嵌于源程序体中必要的位置,提供理解语句、程序段的一些额外的信息。应注意:a. 注释经常描述的是一段程序,而不是每一个

18、语句;b. 采用适当的格式,明确区别程序与注释;c. 注释要正确。l 视觉组织-空格、空行和移行(1) 恰当地利用空格,可以突出表现运算的优先性,避免发生运算符书写的错误。(2) 自然的程序段之间可用空行隔开;(3) 移行,也叫做向右缩格。对于选择语句和循环语句,把其中的程序段语句向右做阶梯式移行;使程序的逻辑结构更加清晰。2、数据说明在设计阶段已经确定了数据结构的组织及其复杂性。在编写程序时,则需要注意数据说明的风格。为了使程序中数据说明更易于理解和维护,必须注意以下几点:l 变量命名时形成一定的规范;l 数据说明的次序标准化;l 当多个变量名在同一条语句中被说明时,应该按字母顺序排列这些变

19、量;l 如果设计时使用了一个复杂的数据结构,则应该用注释说明用程序设计语言实现这个数据结构的方法和特点。3、语句构造l 不要为了节省空间把多个语句写在一行;l 避免过深的循环嵌套或条件嵌套;l 尽量避免复杂的条件测试(判断),减少对“非”条件的测试(判断);l 采用缩进风格,使程序呈现出阶梯形式的清晰明显的层次结构;l 利用括号使逻辑表达式或算术表达式的运算次序清晰直观;ll 统一程序书写风格。4、输入输出设计在设计和编写程序时应该考虑下述有关输入输出风格的规则:l 对所有的输入数据都要进行检验,识别错误的输入,以保证每个数据的有效性;l 检查输入项的各种重要组合的合法性,必要时报告输入状态信

20、息;l 使得输入的步骤和操作尽可能简单,并保持简单的输入格式;l 输入数据时,应允许使用自由格式输入;l 应允许缺省值;l 输入一批数据时,最好使用输入结束标志,而不要由用户指定输入数据数目;l 在交互式输入时,要在屏幕上使用提示符明确提示交互输入的请求,指明可使用选择项的种类和取值范围。同时,在数据输入的过程中和输入结束时,也要在屏幕上给出状态信息;l 当程序设计语言对输入输出格式有严格要求时,应保持输入格式与输入语句的要求的一致性;l 给所有的输出加注解,并设计输出报表格式。5、程序的效率l 概述:程序的效率是指程序的执行速度及程序所需占用的内存空间。程序编码是最后提高运行速度和节省存储的

21、机会,因此在此阶段不能不考虑程序的效率。程序效率的几条准则:(1) 效率是一个性能需求,应当在需求分析阶段给出。软件效率应以需求为准,不应以人力所及为准;(2) 好的设计可以提高效率;(3) 程序的效率与程序的简单性相关,不要牺牲程序的清晰性和可读性来不必要地提高效率。l 运行时间效率 P2324l 存储效率在大中型计算机系统中,存储限制不再是主要问题。在这种环境下,对内存采取基于操作系统的请求分页式的虚拟存储管理。存储效率与操作系统的分页功能直接有关。采用结构化程序设计,将程序功能合理分块,使每个模块或一组密切相关模块的程序体积大小与每页的容量相匹配,可减少页面调度,减少内外存交换,提高存储

22、效率。在微型计算机系统中,存储器的容量对软件设计和编码的制约很大。因此要选择可生成较短目标代码且存储压缩性能优良的编译程序,必要时采用汇编程序。提高存储器效率的关键是程序的简单性。l I/O效率(1) 输入输出可分为两种类型:a. 面向人(操作员)的输入输出b. 面向设备的输入输出(2) 如果操作员能够十分方便、简单地录入输入数据,或者能够十分直观、一目了然地了解输出信息,则可以说面向人的输入输出是高效的。(3) 关于提高设备输入/输出效率的指导原则:a. 输入/输出的请求应当最小化;b. 对于所有的输入/输出操作,安排适当的缓冲区,以减少频繁的信息交换。c. 对辅助存储(例如磁盘),选择尽可

23、能简单的,可接受的存取方法;d. 对辅助存储的输入/输出,应当成块传送;e. 对终端或打印机的输入/输出,应考虑设备特性,尽可能改善输入/输出的质量和速度;f. 任何不易理解的、对改善输入/输出效果关系不大的措施都是不可取的;任何不易理解的所谓“超高效”的输入/输出是毫无价值的。19. 软件测试步骤:单元测试à集成测试(子系统、系统测试)à确认测试(Alpha)测试、(Bate)测试)à平行运行20. 软件测试的方法:(什么是)静态测试;动态测试白盒测试;黑盒测试(Alpha)测试;(Bate)测试l 静态测试-对软件(文档)进行分析、检查和审阅,不实际运行被测试

24、的软件。静态测试约可找出3070%的逻辑设计错误,主要工作是对需求规格说明书、软件设计说明书、源程序做检查和审阅(主要是阅读文档),包括:(1) 是否符合标准和规范;(2) 通过结构分析、流图分析、代码审查,指出软件缺陷。l 动态测试-通过运行软件来检验软件的动态行为和运行结果的正确性。动态测试的两个基本要素:被测试程序、测试用例。动态测试的步骤:(1) 选取输入数据,包括定义域内有效值,或定义域外无效值;(2) 对已选取值决定预期的结果;(3) 用选取值执行程序,记录执行结果;(4) 执行结果与预期的结果相比,不吻和即程序有错。l 黑盒测试已经知道了产品应该具有的功能,可以针对产品的每个(或

25、主要)功能点设计一组用例(包括输入数据和预期的输出数据),通过测试来检验是否每个功能都能正常使用;/测试:是指产品在正式发布之前往往要先发布一些测试版,让用户能够使用、反馈出相关信息或者找到存在的Bug,以便在正式版中得到解决;测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试;测试是指软件开发公司组织各方面的典型用户在日常工作中实际使用版本,并要求用户报告异常情况、提出批评意见,然后软件开发公司再对版本进行改错和完善。黑盒测试的优势:a.黑盒测试方法对测试人员的技术要求相对较低;b.黑盒测试不需要了解程序实现的细节,测试团队与开发团队可以并行完成各自

26、的任务。黑盒测试的局限性:测试结果的覆盖度不容易度量,测试的潜在风险较高。l 白盒测试知道产品的内部工作流程(甚至代码),可以对每一条主要执行通道设计一组用例,通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。白盒测试的内容主要包括:(1) 对程序模块的所有独立执行路径至少测试一次;(2) 对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测试一次;(3) 在循环的边界和运行边界限内执行循环体;(4) 测试内部数据结构的有效性。白盒测试的优势:a. 针对性强,测试效率高,通过不同的白盒覆盖指标有助于衡量对被测对象的测试覆盖程度;b. 在函数级别开始测试工作,缺陷修复的成本低。白盒

27、测试的局限性:对测试人员的技术要求高,没有一定编程经验的人是无法做白盒测试的。21. 软件测试的关键问题是什么?l 软件测试的直接目的是要衡量软件产品是否符合预期;l 软件测试的根本目的是确保软件满足用户需求;软件缺陷产生的原因有很多,但最主要的原因要归咎于产品描述。22. 白盒测试技术相关测试用例的设计-前5种方法(参见书上例子)发现错误的能力标准含义1(弱)语句覆盖每条语句至少执行一次2判定覆盖每一判定的每个分支至少执行一次3条件覆盖每一判定中的每个条件,分别按“真”、“假”至少各执行一次4判定/条件覆盖同时满足判定覆盖和条件覆盖的要求5(强)条件组合覆盖求出每一判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次l 语句覆盖-使被测程序中每个语句至少执行一次例:如右图,只需设计一个测试用例:设计输入数据,使得:A=2,B=0,X=4;即达到了语句覆盖,b、d分支没有覆盖到,这是最弱的覆盖标准。llll 判定覆盖-分支覆盖,每个判定的每个分支都至少执行一次(每个判定T一次、F一次;如果是case,则每个分支执行一次)例:对上述例题,设计两个用例: 用例判定值通过路径A=3,B=0,X=1A>1 and

温馨提示

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

评论

0/150

提交评论