软件工程导论作业第一章 - 图文
更新时间:2024-01-12 04:44:01 阅读量: 教育文库 文档下载
第一章习题
1. 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。概括的说,软件危机包含以下两方面的问题:如何开发软件和如何维护数量不断膨胀的已有软件。 软件危机主要有以下一些典型表现:
(1) 对软件开发成本和进度的估计常常很不准确;
(2) 用户对“已完成的“软件系统不满意的现象经常发生; (3) 软件产品的质量往往靠不住; (4) 软件常常是不可维护的
(5) 软件通常没有适当的文档资料;
(6) 软件成本在计算机系统总成本中所占的比例逐年上升;
(7) 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。 出现软件危机,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关
(1) 软件不同于硬件,缺乏“可见性“,规模庞大,而且程序复杂性随着程序
规模的增加而指数上升,软件本身的特点确实给开发和维护带来一些客观问题;
(2) 人们在开发和维护,忽视软件需求分析的重要性,认为软件开发就是写程
序并设法使之运行,轻视软件维护。。
3 什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机? 软件工程是指导计算机软件开发和维护的一门工程学科。
软件工程的本质特性:
1.软件工程关注于大型程序的构造。 2.软件工程的中心课题是控制复杂性。 3.软件经常变化。
4.开发软件的效率非常重要。 5.和谐的合作是开发软件的关键。 6.软件必须有效的支持它的用户。 7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造
产品。
用软件工程消除软件危机的7条定理:
1.用分阶段的生命周期计划严格管理。 2坚持进行阶段评审。 3实行严格的产品控制。 4采用现代程序设计技术。 5结果应能清楚的审查。
6开发小组的人员应该少而精。
7承认不断改进软件工程实践的必要性。
4.什么是软件过程?它与软件工程方法学有何关系?
软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
5. 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。
结构化范型采用了结构化技术来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。
优点:这种方法学为广大软件工程师所熟悉,在开发某些类型的软件时比较有效。 面向对象范型有四个要点:
1.把对象作为融合了数据及在数据上的操作行为的统一的软件结构。 2.把所有对象都划分成了类。
3.按照父类和子类的关系,把若干个相关类组成一个层次结构的系统。 4.对象彼此间仅能通过发送信息互相联系。
优点:降低了产品的复杂性,提高了软件的可理解性,简化了软件的开发和维护工作。还促进了软件的可重用性。
6. 什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用范围。
软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。 瀑布模型: 优点:
1.可强迫开发员采用规范的方法
2.严格地规定了每个阶段必须提交的文件
3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。 缺点:传统的瀑布模型过于理想化,是由文档驱动的。 快速原型模型:
通过快速构建起一个可在计算机上运行的原型系统,让用户试用原型并收集用户反馈意见的方法,获取用户真正的需要。 增量模型:
优点:能在较短时间内向用户提交可完成部分工作的产品;逐步增加产品功能可以使用户有较充实的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。 螺旋模型
优点:对可选方案和约束条件的强调有利于已有软件的重用;减少了过多测试;维护只是螺旋模型中另一个周期。 第二章习题
7.在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?
可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。 从三个方面研究每种解法的可行性(1)技术可行性(2)经济可行性(3)操作可行性 可行性研究过程的步骤 1、 复查系统规模和目标 2、 研究目前正在使用的系统 3、 导出新系统的高层逻辑模型 4、 进一步定义问题 5、 导出和评价供选择的解法 6、 推荐行动方针 7、 草拟开发计划 8、 书写文档提交审查
8. 北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第一位数字不
是0.校外电话又分为本市电话和外地电话两类。拨校外电话需要先拨0,若是本市电话则接着拨8位数字(第一位不是0),若是外地电话则拨3位区码后再拨8位电话号码(第一位不是0)。用定义数据的方法,定义上述的电话号码。
答:电话号码= [校内电话号码|校外电话号码] 校内电话号码= 非零数字+ 3 位数字 校外电话号码= [本市号码|外地号码] 本市号码= 数字零+ 8 位数字
外地号码= 数字零+ 3 位数字+ 8 位数字
非零数字= [1 |2 |3 |4 |5 |6 |7 |8 |9] 数字零= 0
3位数字= 3{数字}3
8位数字= 非零数字+ 7 位数字 7位数字= 7{数字}7
数字= [0 |1 |2 |3 |4 |5 |6 |7 |8 |9]
其中,[ ]意思是或,从校内电话号码或校外电话号码中选择一个;{ }表示重复,两边的数字表示重复次数的下限和上限;=意思是定义为;+意思是和,连接两个分量。 第三章习题
9.为什么要进行需求分析?通常对软件系统有哪些需求?
答:“需求分析”确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、具体的要求。为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求,只有深入理解了用户的需求,我们的工作才会有意义。
对软件通常有以下需求:
功能需求:指定系统必须提供的服务;
性能需求:指定系统必须满足的定时约束或容量约束,通常包括速度、信息量速率、主存容量、磁盘容量、安全性等方面的需求;
可靠性和可用性需求:指定系统的可靠性,可用性量化了用户可以使用系统的程度; 出错处理需求:说明系统对环境错误应该怎么响应;
接口需求:描述应用系统与它的环境通信的格式; 逆向需求:说明软件系统不应该做什么;
将来可能提出的要求:应该明确列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求。
10.怎样与用户有效地沟通以获取用户的真实需求? 答:
(1) 初步需求获取,通过访谈与会议、问卷调查、观察用户工作流程等方法; (2) 面向数据流,自顶向下求精
(3) 简易的应用规格说明 (4) 快速建立软件原型 复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行11.复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告,等待维修人员来排除故障,故障排除后回到闲置状态。 请用状态转换图描绘复印机的行为。
从问题陈述可知,复印机的状态主要有“闲置”、“复印”、“缺纸”和“卡纸”。引起状态转换的事件主要是“复印命令”、“完成复印命令”、“发现缺纸”、“装满纸”、“发生卡纸故障”和“排除了卡纸故障”。状态转换图如下:
第五章习题
5-1.为每种类型的模块耦合举一个具体的例子。
(1) 非直接耦合—例如,两个模块没有直接关系(模块1和模块2),模块独立性最强。
(2)数据耦合—例如,下左图
(3) 特征耦合—例如,上右图
“住户情况”是一个数据结构,图中模块都与此数据结构有关。“计算水费”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间也是标记偶合。
(4) 控制耦合--模块A通过传送开关、标志、名字等控制信息,明显地控制选择模块B的功能,例如下图
(5) 外部耦合—例如,下左图,模块A、B均需使用共享打印机
(6) 公共环境耦合—例如,上右图,模块A、B、C共享全局变量数组 (7) 内容耦合—例如,一个过程非正常地进入另一个过程 Sub AA(?)
? ? goto L ? End sub Sub BB(?)
? ? L: ? ? End sub
为每种类型的模块耦合举一个具体的例子?另一种答法
答:耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度, 进入或访问某一模块的点,以及通过接口的数据,一般模块之间可能的连接方式有7种,构成耦合的7种类型,它们之间的关系为:
下面举例说明以上各种耦合:
a.非直接耦合(Nondirect Coupling)在这种情况下,两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。例如在实数的运算中,有两个模块分别完成几个实数的求和,求乘积功能,这两个模块之间没有直接联系,只有在主模块调用中有执行的前后顺序而已,这个例子即属于非直接耦合。
b.数据耦合(Data Coupling)即一个模块访问另一个模块时,彼此之间是通过数据参数来交换输入,输出信息的,这种耦合为数据输入,输出信息的这种耦合为数据耦合。如有两个模块,其中A完成两个烽的比较,求出其中最大的并返回该值,模块B是完成了个数的比较,求出其中最大的并返回该最大值,为完成四个数的比较,模块B调用模块A即可完成,在这种调用关系中,模块A的运算结果作为一个参烽参加B的运算,这两个模块之间即发生数据耦合。数据耦合是松散的耦合,模块间的独立性比较强。
c.标记耦合(Stamp Coupling),即一组模块通过参数传递记录信息,这就是标记耦合。事实上,这组模块共享了这个记录,它是某一数据结构的子结构,而不是简单变量。
d.控制耦合(Control Coupling)即一个模块通过开关标志,名字等控制住处明显的控制,选择另一模块的功能,这就是控制耦合,如下 图所示,这一种耦合实质是在单一接口上实现选择多功能模块中的某项功能,如程序设计中用到多路选择结构即是最好的例子。
e.外部耦合(External Coupling)即一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递全局数据结构,而且不是通过参数表传递全局变量的信息。如C语言中都访问被说明为extern类型的外部变量的各个模块之间即发生外部耦合。外部耦合引起的问题类似于下面要介绍的公共耦合,区别在于外部耦合中不存在依赖于一个数据结构内部各项的物理安排。
f.公共耦合(Common Coupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合就是公共耦合。公共的数据环境可以是全局的数据结构,共享的通信区,内存的公共覆盖区等。如几个模块对同一个数据库的查询就属于这种耦合。公共耦合可以分为松散的公共耦合和紧密的公共耦合,其中松散的公共耦合是单向操作,如两个或多个模块对同一个文件的读操作;而紧密的公共耦合是双向的操作,如两个或多个模块对同一文件的读写操作。下面用图表示松散的和紧密的公共耦合。
g.内容耦合。即有下列情况时即出现内容耦合。 (1)一个模块访问另一个模块数据;
(2)一个模块不通过正常入口而转到另一个模块的内部; (3)两个模块有一部分代码重叠; (4)一个模块有多个入口。
2、 为每种类型的模块内聚举一个具体例子。 答:内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化的自然扩展,一般模块的内聚性分为7种,它们的关系如下图示:
下面举例说明各种内聚的情况
a. 偶然内聚。即模块内各部分之间没有联系,或者即使有联系也很松散,这种即为偶然内聚,它是
内聚程度最低的模块。如一些没有任何联系的语句可能在许多模块中重复多次,程序员为了节省存储,把它们抽出来组成一个新的模块,这个模块就是偶然内聚模块,例如C语言中的#define TRYODBCC??
b.逻辑内聚(Logical Cohesion)即这种模块把几种功能组合在一起,每次调用时,由传送给模块的
判定参数来确定该模块应执行哪一种功能。如根据输入的控制信息,或从文件中读入一个记录,或向文件写出一个记录。
c.时间内聚(Classical Cohesion)这种模块大多数为多功能模块,但模块的各人功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行,例如初始化模块和终止模块。
d.过程内聚(Procedural Cohesion)即一个模块内的处理是相关的,而且必须以特定次序执行,则这个模块称为过程内聚模块。例如我们把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。 e.通信内聚(Communication Cohesion)如果一个模块内部各功能部分都使用可相同的数据输入,
或产生了可相同的数据输入,或产生了可相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图来定义的。
f.顺序内聚,即一个模块内处理元素和同一功能紧密切相关,而且这些处理必须顺序执行(通常一个处理元素的输出数据据作为下一处理元素的输入数据)如在对员工加工资的数据库操作中,读取数据和更新数据即具有顺序内聚的关系。 g.功能内聚(Functional Cohesion)即模块内部所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚,功能内聚是最高程度的内聚。
第六章习题 1.假设只有SEQUENCE和DO_WHILE两种控制结构,怎样利用它们完成IF_THEN_ELSE操作? 答:转化如下:
K = 1
DO WHILE (条件 .AND. K.EQ.1)
程序块1 K=K+1
END DO
DO WHILE ( (.NOT. 条件) .AND. K.EQ.1)
程序块2 K=K+1
END DO
2.假设允许使用SEQUENCE和IF_THEN_ELSE两种控制结构,怎样利用它们完成DO_WHILE操作?
答:转化如下;
label: IF (条件) THEN
程序块 GOTO label
ELSE
程序块
END IF
3.画出下列伪码程序的程序流程图和盒图: START IF p THEN
WHILE q DO f
END DO
ELSE
BLOCK
g n
END BLOCK END IF
STOP 答:(1)流程图如图6-1所示:
7.某交易所规定给经纪人的手续费计算方法如下:总手续费等于基本手续费加上与交易中的每股价格和股数有关的附加手续费。如果交易总金额少于1000元,则基本手续费为交易金额的8.4%;如果交易总金额在1000元到10000元之间,则基本手续费为交易金额的5%,再加34元;
如果交易总金额超过10000元,则基本手续费为交易金额的4%加上134元。当每股售价低于14元时,附加手续费为基本手续费的5%,除非买进、卖出的股数不是100的倍数,在这种情况下附加手续费为基本手续费的9%。当每股售价在14元到25元之间时,附加手续费为基本手续费的2%,除非交易的股数不是100的倍数,在这种情况下附加手续费为基本手续费的6%。当每股售价超过25元时,如果交易的股数零散(即,不是100的倍数),则附加手续费为基本手续费的4%,否则附加手续费为基本手续费的1%。 要求:
(1) 用判定表表示手续费的计算方法; (2) 用判定树表示手续费的计算方法
判定表的每一列是一条计算规则。例如,第1列(规则l)规定,当交易总金额P少于1,000元,且每股售价Q低于l4元,且交易的股数n是l00的倍数时,给经纪人的手续费为: (1+0.05)×0.084P
第16列(规则l6)表明,当交易总金额P超过l0,000元,且每股售价Q在14元到25元之间,且交易的股数n不是l00的倍数时,手续费为: (1+0.06)X(0.04P+134)
图6-7 判定树 8.画出下列伪码程序的流图,计算它的环形复杂度。你觉得这个程序的逻辑有什么问题吗? C EXAMPLE
LOOP:DO WHILE X>0
A=B+1 IF A>10
THEN X=A
ELSE Y=Z END IF
IF Y<5
THEN PRINT X,Y ELSE IF Y=2
THEN GOTO LOOP
ELSE C=3 END IF
END IF G=H+R END DO IF F>0
THEN PRINT G ELSE PRINT K END IF STOP
环形复杂度V(G)=流图中的区域数
=流图中判定结点数目+1=6+1=7 =节点数E-弧数n+2=19-12+1=7
(2)该算法问题在于控制最外层循环的变量Z不仅没有经过初始化,并且在该循环内部没有任何有可能该变Z的语句。因此,该段代码中的WHILE循环部分代码要么不会执行,要么可能出现死循环。 第七章习题
7-4什么是模块测试和集成测试?它们各有什么特点?
答:模块测试是对每个单独的模块,分别用黑盒和白盒测试技术,测试它的功能是否正确,检查模块控制结构中的特定路径并发现最大数量的错误。其特点是:主要应用白盒测试的技术,对多个模块的测试可以并发的进行。
集成测试是把模块装配在一起形成完整的软件包,在装配的同时进行测试。特点是:可能发生接口问题。
为什么有了白盒测试还要有黑盒测试?
白盒测试发现程序的隐患,内存泄漏,误差累计问题,黑盒测试在这方面存在严重的不足。
黑盒测试只有测试软件外部的表现,即使软件的输入、输出都是正确的,都不能说明软件是正确的,因为程序有可能用错误的运算方式得出正确的结果。 白盒测试优点:
(1)可构成测试数据使特定程序部分得到测试。 (2)有一定的充分性度量手段
(3)可获得较多工具支持。
缺点:(1)不易生成测试数据
(2)无法对未实现规格说明的部分进行测试
(3)工作量大,通常只用于单元测试,有应用局限。 黑盒测试优点:
(1)适用于各阶段测试 (2)从产品功能角度测试
(3)容易入手生成测试数据。
缺点:(1)某些代码得不到测试
(2)如果规则说明有误则无法发现 (3)不易进行充分性测试。
7—8.对一个包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,
此时MTTF=10h;经过两个月测试后,总共改正了25个错误(第二个月改正了10个错误),MTTF=15h。要求:
(1) 根据上述数据确定MTTF与测试时间之间的函数关系,画出MTTF与测试时间τ的关系曲线。在画这条曲线时做了什么假设?
(2) 为做到MTTF=100h,必须进行多长时间的集成测试? (3)当集成测试结束时总共改正了多少个错误,还有多少个错误潜伏在程序中? 解答: (1)因为平均无故障时间MTTF与测试时间τ之间存在线性关系,即MTTF=a+bτ, 由于:10=a+b,15=a+2b, 得到:a=5,b=5
故:平均无故障时间MTTF与测试时间τ之间存在线性关系为:MTTF=5+5τ
(2)为做到MTTF=100h,有方程:100=5+5τ,故τ=19 即必须进行19个月的集成测试。 (3)由于经验:平均无故障时间与单位长度程序中剩余的错误数成反比,故有: MTTF=10000/( K * (ET-EC(τ) ) ) 由于:10=10000/( K * (ET-15) ),
15 = 10000/( K * (ET-25) )
得到:ET=45,K=33.33
当集成测试结束时,MTTF=100h,
有:100 = 10000/( 33.33 * ( 45-EC(19) ) )
故:EC(19)=42,即当集成测试结束时总共改正了42个错误,还有45-42=3个错误潜伏在程序中。
7-9. 如对一个长度为100000条指令的程序进行集成测试期间记录下下面的数据: (a) 7月1日:集成测试开始,没有发现错误。
(b) 8月2日:总共改正100个错误,此时MTTF=0.4h
(c) 9月1日:总共改正300个错误,此时,MTTF=2h 根据上列数据完成下列各题: (1) 估计程序中的错误总数;
(2) 为使MTTF达到10h,必须测试和调试这个程序多长时间? (3) 画出MTTF和测试时间τ之间的函数关系线。 (1)据估算平均无故障时间MTTF的公式有:
1/K(Et/100000-100/100000)=0.4 1/K (Et/100000-300/100000)=2
得:K=1000,Et=350 即程序中的错误总数达350。 (2)当MTTF=10h时,有
1/K (350/100000- Ec/100000)=10
得:Ec=340.按七八月分测试改错进度估算,还需进行2个月的集成测试。 (3)MTTF和测试时间τ之间的函数关系曲线如下:
7—10.在测试一个长度为24000条指令的程序时,第一个月由甲、乙两名测试员各自独立测试这个程序。经一个月测试后,甲发现并改正20个错误,使MTTF达到10h。与此同时,乙发现24个错误,其中6个甲也发现了。以后由甲一个人继续测试这个程序。问: (1) 刚开始测试时程序中总共有多少个潜藏的错误?
(2) 为使MTTF达到60h,必须再改正多少个错误?还需用多长测试时间? (3) 画出MTTF与集成测试时间τ之间的函数关系曲线。 解答:
(1)本题中采用的是分别测试法,测试前程序中的错误总数:B0=B1*B2/bc=20*24/6=80 (2)由于经验:平均无故障时间与单位长度程序中剩余的错误数成反比,故有: MTTF=24000/( K * (ET-EC(τ) ) ) 由于:10=24000/( K * (80-20) ) 得到:K=40
为使MTTF达到60h,有:
60 = 24000/( 40 * ( 80-EC(τ) ) )
故:EC(τ)=70,即总共需要改正70个错误,由于测试员甲和乙分别测试时,测试员甲已经更正了20个错误,以后由甲一个人继续测试这个程序,因此,还需要更正70-20=50个错误。
覆盖测试
1. 为以下流程图所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条
件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。
三、 条件覆盖
对于第一个判定(X>8 AND Y>5)
条件X>8取真值记为T1,取假值记为-T1 条件Y>5取真值记为T2,取假值记为-T2 对于第二个判定(X>0 OR Y>0)
条件X>0取真值记为T3,取假值记为-T3 条件Y>0取真值记为T4,取假值记为-T4 对于第三个判定(X>16 OR Y>10)
条件X>16取真值记为T5,取假值记为-T5 条件Y>10取真值记为T6,取假值记为-T6
五、 组合覆盖
1、X>8, Y>5 记做T1 T2,第一个判定的取真分支 2、X>8, Y<=5 记做T1 -T2,第一个判定的取假分支 3、X<=8, Y>5 记做-T1 T2,第一个判定的取假分支 4、X<=8,Y<=5 记做-T1 -T2,第一个判定的取假分支 5、X>0,Y>0 记做T3 T4,第二个判定的取真分支 6、X>0,Y<=0 记做T3 -T4,第二个判定的取真分支 7、X<=0,Y>0 记做-T3 T4,第二个判定的取真分支 8、X<=0,Y<=0 记做-T3 -T4,第二个判定的取假分支 9、X>16,Y>10 记做T5 T6,第三个判定的取真分支 10、X>16,Y<=10 记做T5 –T6,第三个判定的取真分支 11、X<=16,Y>10 记做-T5 T6,第三个判定的取真分支 12、X<=16,Y<=10 记做-T5 –T6,第三个判定的取假分支
基本路径测试方法
2、使用基本路径测试方法,为以下程序段设计测试用例。 void Do (int X,int A,int B) { 1 if ( (A>1)&&(B=0) ) 2 X = X/A;
3 if ( (A=2)||(X>1) ) 4 X = X+1; 5 } 一.控制流图:
二.计算环形复杂度:
环形复杂度:V(G)=10-7+2=5或V(G)=4+1=5 三.导出独立路径(用语句编号表示) 路径1: 1A→1B→2→3A→4→5 路径2: 1A→1B→2→3A→3X→4→5 路径3: 1A→1B→2→3A→3X→5 路径4: 1A→1B→3A→4→5 路径5: 1A→3A→3X→5 四、设计测试用例:
第八章习题
1.软件的可维护性与哪些因素有关?在软件开发过程中应该采取哪些措施才能提高软件产品的可维护性?
基本因素:可理解性,可测试性,可修改性,可移植性,可重用性。文档是影响软件可维护性的决定因素。
软件重用技术是能从根本上提高软件可维护性的重要技术。面向对象的软件技术是目前最成功的软件重用技术。
在进行需求分析时同时考虑维护问题。
尽可能在软件开发过程中保证各阶段文档的正确性。 重视程序结构的设计,使程序具有较好的层次结构。 使用维护工具或软件工程环境。 提高程序可读性,尽量使用高级语言编程
2. 什么叫预防性维护!:把今天的方法学应用到昨天的系统上,以支持明天的需要。实质
上是软件再工程。
百度的一张试卷 一、 填空题 1. 软件生命周期可划分为 、 和 3个时期,通常把这3个时期再细分为8个阶段,它们是① 、② 、③ 、④ 、⑤ 、⑥ 、⑦ 和⑧ ,其中的 阶段的工作量是8个阶段中最大的。 2. 可行性研究的任务是从 、 和 等三个方面研究 。 3. 至少应该从 、 、 和 4个方面验证软件需求的正确性,其中 和 这两个方面的正确性必须有用户的积极参与才能验证,而且为了验证这两个方面的正确性,往往需要开发 。 4. 软件总体设计时应遵循 、 、 、 、 、和 等6条基本原则。详细设计通常以 技术为逻辑基础,因为从软件工程观点看, 是软件最重要的质量标准之一。 5. 软件测试的目的是 ,通常把测试方法分为 和 两大类。因为通常不可能做到 ,所以精心设计 是保证达到测试目的所必须的。 6. 软件维护通常包括4类活动,它们分别是 、 、 、 。 二、判断下述提高软件可维护性的措施是否正确,正确的在括弧内写对,错的写错。 1. 在进行需求分析时同时考虑维护问题。 ( ) 2. 完成测试后,为缩短源程序长度而删去程序中的注释。 ( ) 3. 尽可能在软件开发过程中保证各阶段文档的正确性。 ( ) 4. 编码时尽可能使用全局变量。 ( ) 5. 选择时间效率和空间效率尽可能高的算法。 ( ) 6. 尽可能利用硬件的特点以提高效率。 ( ) 7. 重视程序结构的设计,使程序具有较好的层次结构。 ( ) 8. 使用维护工具或软件工程环境。 ( ) 9. 进行概要设计时尽可能加强模块间的联系。 ( ) 10. 提高程序可读性,尽可能使用高级语言编程。 ( ) 三、按下述要求完成给出的程序流程图,即在答案栏内写出图中A、B、C、D、E的正确内容 给程序输入二维数组W(I,J),其中I≤M,J≤N(MT N均为正整数)。程序打印出数组中绝对值最小的元素值Q=W(K,L),及其下标K、L的值。假定数组中仅有一个绝对值最小的元素。应该完成的程序流程图如下所示
[答案栏] A: B: C: D: E:
四、 下面给出了用盒图描绘的一个程序的算法,请用逻辑覆盖法设计测试方案,要求做到用语句覆盖和路径覆盖
五、 某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第1位数字不是0;
校外电话又分为本市电话和外地电话两类,拨外地电话需先拨0,如果是本市电话再接着拨8位电话号码(第1位不是0),如果是外地电话则先拨区码(3~5数字),再拨当地电话号码(7或8位数字,第1位不是0)。 请定义上述的电话号码。
六、 以下是用程序流程图描绘的处理算法,请把它改画为等价的盒图。
七、 办公室复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现缺纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接受复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排队故障,故障排除后回到闲置状态。 请用状态转换图描绘复印机的行为。
八.如下图所示的程序流程图描绘了一个非结构化的程序。
1. 为什么说它是非结构化的?
2. 利用附加变量flag设计一个等价的结构化程序,用盒图描绘设计结果。 3. 不用附加变量,设计一个等价的结构化程序,用盒图描绘设计结果。
九、有一个长度为48000条机器指令的程序,第一个月由甲、乙二人分别测试它。甲改正了
20个错误,使程序的平均无故障时间达到了8小时。乙在测试该程序的另一个副本时改正了24个错误,其中6个错误与甲改正的相同。然后,由甲一个人继续测试这个程序。请问
⒈ 刚开始测试时程序逻辑中的错误总数ET是多少?
⒉ 为使平均无故障时间达到240h,如果甲不利用乙的工作成果,则他还需再改正多少个错误?
⒊为使平均无故障时间达到480h,如果甲利用了乙的工作成果,则他还需再改正多少个错误?
答案
一、答:
1. 定义;开发;维护;问题定义;可行性研究;需求分析;总体设计;详细设计;
编码和单元测试;综合测试;维护;维护。 2. 技术;经济;操作;软件项目的可行性/
3. 一致性;现实性;完整性;有效性;完整性;有效性;原型系统。
4. 模块化;抽象;逐步求精;信息隐藏;局部化;模块独立;结构程序设计;可理
解性。
5. 发现错误;黑盒测试;白盒测试;穷尽测试;测试方案。 6. 改正性维护;适应性维护;完善性维护;预防性维护。 二、答:
⒈ 对;⒉ 错;⒊ 对;⒋ 错;⒌ 错;⒍ 错;⒎ 对;⒏ 对;⒐ 错;⒑ 对。 三、答:
A:|Q|>|W(I,J)| B:J=J+1 C:I=I+1
D:J循环 UNTIL J>N E:I循环 UNTIL I>M 四、答:
1. 实现语句覆盖的测试方案如下:
1) 覆盖THEN部分的语句,即使得条件(A>0)AND(B>0)和条件(C>A)OR
(D
输入:A=1,B=1,C=0,D=1 预期输出:X=2,Y=2
2) 覆盖ELSE部分的语句,即使得条件(A>0)AND(B>0)和条件(C>A)OR
(D
输入:A=0,B=-1,C=0,D=1 预期输出:X=1,Y=1
2. 实现路径覆盖的测试方案如下:
1) 覆盖两个条件均为假的路径
输入:A=-1,B=-2,C=-3,D=3 预期输出:X=1,Y=0
2) 覆盖第一个条件为假第二个条件为真的路径
输入:A=-1,B=-2,C=1,D=-3 预期输出:X=1,Y=4
3) 覆盖第一个条件为真第二个条件为假的路径
输入:A=1,B=1,C=0,D=2 预期输出:X=2,Y=2 4) 覆盖两个条件均为真的路径
输入:A=-1,B=-2,C=2,D=1 预期输出:X=3,Y=1
五、答:
电话号码=[校内号码|校外号码] 校内号码=非零数字+3位数字 校外号码=[本市号码|外地号码] 本市号码=数字零+非零数字+7位数字 外地号码=数字零+区码+当地号码
非零数字=[1|2|3|4|5|6|7|8|9] 数字零=0
3位数字=3{数字}3 7位数字=7{数字}7 区码=3{数字}5
当地号码=非零数字+6{数字}7 数字=[0|1|2|3|4|5|6|7|8|9] 六、答:
八、答:
1. 因为循环控制结构有两个出口,因此是非结构化的程序。 2. 利用附加变量flag设计的等价的结构化程序如下图(左) 3. 不用附加变量flag设计的等价的结构化程序如下图(右)
九.答:
⒈ 刚开始测试时程序中的错误总数为:
即,为使平均无故障时间达到480h,如果甲利用了乙的工作成果,则他还需再改正41个错误。
正在阅读:
软件工程导论作业第一章 - 图文01-12
22014年湖南省普通高等学校教学改革研究项目结题验收08-14
证券市场基础知识(打印1)05-08
2017-2018学年福建省高中学生化学竞赛预赛试题06-16
未来的课桌作文700字07-04
高中三国演义每十回题目答案03-27
水中微囊藻毒素测定05-08
新人教版小学数学五年级下册《真分数和假分数》精品教案07-10
世界真奇妙作文400字07-12
完美世界2012年第四季度财务报告05-26
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 软件工程
- 导论
- 作业
- 图文
- 人教版选修5《有机化学基础》全套测试试题(共十五套)
- 怎样当好新时期农村党支部书记和班子成员
- 六年级奥数 计算 突破繁分数(ABC级).学生版
- 管理学院第一次团员暨学生代表大会会议材料
- 住宅电气设计中负荷计算的需要系数到底应该取多少
- 中华人民共和国建筑法释义
- 2015年成都七中的学霸们都考上哪些大学
- 天全县历史文化遗产资源和转化利用研究
- 园林景观投标技术标
- 微机监测系统认定细则报部-071126修改
- SPWM调制法逆变器的调制方式
- 建筑学专业实习周记18篇
- 九年级英语教师教学工作计划
- mfc+窗口分析+popup+,overlap,child
- STM32F10x - SPI与I2S - 图文
- 应用数理统计习题
- 农村清洁工程建设项目建议书暨可行性研究报告书
- 2016年中考英语试卷答案及解析与点评9
- 湖北高院民事审判工作座谈会会议纪要2013
- 浙江省印刷行业企业名录2018版621家 - 图文