《软件工程复习-》由会员分享,可在线阅读,更多相关《软件工程复习-(9页珍藏版)》请在金锄头文库上搜索。
1、第一章 软件工程学概述1 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。(2) 用户对“已完成”软件系统不满意的现象经常发生。(3) 软件产品的质量往往靠不住。(4) 软件常常是不可维护的。(5) 软件通常没有适当的文档资料。(6) 软件成本在计算机系统总成本中所占的比例逐年上升。(7) 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。产生软件危机的原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。管理和控制软件开
2、发过程相当困难。软件是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。目前相当多的软件专业人员对软件开发和维护还有不省糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,这是使软件问题发展成软件危机的主要原因。软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。2什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。本质特性:(1) 软件工程关注于大型程序的构造。(2) 软件工程
3、的中心课题是控制复杂性。(3) 软件经常变化。(4) 开发软件的效率非常重要。(5) 和谐地合作是开发软件的关键。(6) 软件必须有效地支持它的用户。(7) 在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。缓解软件危机:软件危机只有缓解,不可能解决,特别是在目前这种硬件结构体系下开发的软件,其危机永远存在,即使未来的新一代计算机系统问世后,那也会产生新形式的软件危机。要缓解软件危机,既要有先进的技术和方法,又需要高水平的组织管理措施。而软件工程正是综合了管理和技术两方面,研究如何更好地开发软件的一门新兴学科。所以,就目前而言,软件工程是缓解软件危机的最好途径。6.什
4、么是软件过程?它与软件工程方法学有何关系?答: 软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件工程方法学包含软件过程。数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据字典组成:数据流,数据元素,数据存储,处理。数据元素组成:顺序、选择、重复, 可选。数据字典最重要的用途是作为分析阶段的工具。7.什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用范围。软件生命周期模型,是从一个特定角度提出的对软件过程的简化描述,是对软件开发实际过程的抽象,它包括构成软件过程的各种活
5、动、软件工件(artifact)以及参与角色等。瀑布模型的优点:有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。瀑布模型的缺点:(1)开发过程一般不能逆转,否则代价太大;(2)实际的项目开发很难严格按该模型进行;(3)客户往往很难清楚地给出所有的需求,而该模型却要求如此。(4)软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心。 瀑布模型的使用范围:(1)用户的需求非常清楚全面,且在开发过程中没有或很少变化;(2)开发人员对软件的应用领域很熟悉;(3)用户的使用环境非常稳定;(4)开发工作对用户参与的要求很低
6、。快速原型模型的优点:(1)可以得到比较良好的需求定义,容易适应需求的变化;(2)有利于开发与培训的同步;(3)开发费用低、开发周期短且对用户更友好。快速原型模型的缺点:(1)客户与开发者对原型理解不同;(2) 准确的原型设计比较困难;(3) 不利于开发人员的创新。快速原型模型的使用范围:(1)对所开发的领域比较熟悉而且有快速的原型开发工具;(2)项目招投标时,可以以原型模型作为软件的开发模型;(3)进行产品移植或升级时,或对已有产品原型进行客户化工作时,原型模型是非常适合的。增量模型的优点:(1)采用增量模型的优点是人员分配灵活,刚开始不用投入大量人力资源;(2)如果核心产品很受欢迎,则可增
7、加人力实现下一个增量;(3)可先发布部分功能给客户,对客户起到镇静剂的作用。增量模型的缺点:(1)并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构;(2)增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。增量模型的使用范围:(1)进行已有产品升级或新版本开发,增量模型是非常适合的;(2)对完成期限严格要求的产品,可以使用增量模型;(3)对所开发的领域比较熟悉而且已有原型系统,增量模型也是非常适合的。螺旋模型的优点:(1)设计上的灵活性,可以在项目的各个阶段进行变更;(2)以小的分段来构建大型
8、系统,使成本计算变得简单容易;(3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性;(4) 随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。 螺旋模型的缺点:(1)采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失;(2)过多的迭代次数会增加开发成本,延迟提交时间。螺旋模型的使用范围:螺旋模型只适合于大规模的软件项目。系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件(程序、文档、数据库、人工过程等)。数据流图(DFD)是一
9、种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。需求分析过程应建立的3种模型:数据模型、功能模型和行为模型状态转换图(简称状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。状态图还指明了作业特定事件的结果系统将做哪些动作。状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。事件是在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事件的抽象。层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。IPO图是输入、处理、输出图的简称,它是由美国IBM公司发展完善起来的一种图形工具,能够方便地描绘输
10、入数据、对数据的处理和输出数据之间的关系。3银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。 请用数据流图描绘本系统的功能5.办公室复印机的工作过程如下:未接收到复印命令时处于闲置状态,一旦接收到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现缺纸,
11、则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待绝维修人员来排除故障,故障排除后回到闲置状态。(请用状态转换图描绘复印机的行为。)第五章 总体设计模块是由边界元素限定的相邻程序元素序列,而且有一个总体标识符代表它。过程、函数、子程序和宏等,都可以作为模块。模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。信息隐藏:使一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。局部化是指把一些关系密切的软件元素
12、物理地放得彼此靠近。有助于实现信息隐藏。模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。模块独立的重要性:1. 有效的模块化(即有独立的模块)的软件比较容易开发出来。2. 独立的模块比较容易测试和维护。 耦合衡量不同模块彼此间互相信赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。低耦合:数据耦合 高内聚:功能内聚、顺序内聚尽量做到作用数据耦合,少用控制耦合和特征耦合限制公共环境耦合的范围,完全不用内容耦合。面向数据流的设计方法把信息流映射成软件结构,信息流类型决定了映射的方法。变换流:信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变
13、换中心,经加处理以后再沿输出通路变换成外部形式离开软件系统。事务流:以事务为中心,数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。事务中心所要完成任务:1.接收输入数据(输入数据又称为事务)。2.分析每个事务以确定它的类型。3根据事务类型选取一条活动通路。3 画出下列伪码程序的程序流程图和盒图4 下图给出的程序流程图代表一个非结构化的程序,请问:(1)为什么说它是非结构化的?(2)设计一个等价的结构化程序。(3)在(2)题的设计中你使用附加的标志变量flag吗?若没用,请再设计一个使用flag的程序;若用了,再设计一个不用flag的程序(1) 通常所说
14、的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。图示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。(2) 不使用flag把该程序改造为等价的结构化程序的方法如图所示。7.。P142 令P代表交易的总金额,Q代表每股的售价,n代表交易的股数。(1)表示手续费计算方法的判定表如图所示。判定表的每一列是一条计算规则。例如,第1列(规则1)规定,当交易总金额P少于1000元,且每股售价Q低于14元,且交易的股数n是100的倍数时,给经纪人的手续费为(l+0.05)0.084P 第16列(规则16)表明,当交易总金额P超过10000元,且每股售价
15、Q在14元到25元之间,且交易的股数n不是100的倍数时,手续费为(1+0.06)(0.04P+134)(3) 表示手续费计算方法的判定树如图所示。软件测试步骤:模块测试 子系统测试 系统测试 验收测试 平行运行代码审查:由审查小组正式进行人工测试源程序。代码审查比计算机测试优越的是:一次审查会上可以发现许多错误;用计算机测试的方法发现错误之后,通常需要先改正这个错误才能继续测试,因此错误是一个个地发现并改正的。也就是说,采用代码审查方法可以减少系统验证的总工作量。集成测试是测试和组装软件的系统化技术,有非渐增式测试和渐增式测试。渐增式测试有自顶向下集成和自底向上集成回归测试是指重新执行已经做过的测试的某个子集,以保证集成测试中发生的变化没有带来非预期的副作用。回归测试集3类测试用例:1. 检测软件全部功能的代表性测试用例。2. 专门针对可能受修改影响的软件功能的附加测试。3. 针对被修改的软件成分测试。白盒测试:按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。9黑盒测试:主要着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。1.