软件工程导论真题精选.docx
- 文档编号:8827123
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:24
- 大小:18.86KB
软件工程导论真题精选.docx
《软件工程导论真题精选.docx》由会员分享,可在线阅读,更多相关《软件工程导论真题精选.docx(24页珍藏版)》请在冰点文库上搜索。
软件工程导论真题精选
[填空题]1什么是软件危机?
它有哪些典型表现?
为什么会出现软件危机?
参考答案:
软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。
它包括两方面:
如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。
软件危机的典型表现:
(1)对软件开发成本和进度的估计常常很不准确。
常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。
而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。
这些都降低了开发商的信誉,引起用户不满。
(2)用户对已完成的软件不满意的现象时有发生。
(3)软件产品的质量往往是靠不住的。
(4)软件常常是不可维护的。
(5)软件通常没有适当的文档资料。
文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。
(6)软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。
(7)开发生产率提高的速度远跟不上计算机应用普及的需求。
软件危机出现的原因:
(1)来自软件自身的特点:
是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。
(2)软件开发与维护的方法不当:
忽视需求分析;认为软件开发等于程序编写;轻视软件维护。
(3)供求矛盾将是一个永恒的主题:
面对日益增长的软件需求,人们显得力不从心。
[填空题]2研究下面的伪码程序:
程序是结
构化的吗?
说明理由。
参考答案:
该程序不是结构化的,结构化的程序只有一个入口和一个出口,而
该程序的流程途中有两个出口。
[填空题]3什么是软件工程?
它有哪些本质特征?
怎样用软件工程消除软件危机?
参考答案:
1993年IEEE的定义:
软件工程是:
①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。
软件工程的本质特征:
(1)软件工程关注于大型程序(软件系统)的构造;
(2)软件工程的中心课题是分解问题,控制复杂性;
(3)软件是经常变化的,开发过程中必须考虑软件将来可能的变化;
(4)开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具;
(5)和谐地合作是开发软件的关键;
(6)软件必须有效地支持它的用户;
(7)在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作)。
消除软件危机的途径:
(1)对计算机软件有一个正确的认识(软件≠程序);
(2)必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目;
(3)推广使用在实践中总结出来的开发软件的成功技术和方法;
(4)开发和使用更好的软件工具。
[填空题]4假设只有SEQUENCE和DO_WHILE两种控制结构,怎么利用它们完成IF_THEN_ELSE操作?
参考答案:
[填空题]5什么是软件过程?
它与软件工程方法学有何关系?
参考答案:
软件过程是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
软件工程方法学:
通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型。
软件过程是软件工程方法学的3个重要组成部分之一。
[填空题]6怎样与用户有效地沟通以获取用户的真实需求?
参考答案:
1、与用户沟通获取需求的方法:
访谈;面向数据流自顶向下求精;
2、简易的应用规格说明技术,快速建立软件原型;
3、银行计算机储蓄系统的工作过程大致如下:
储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓名、住址、身份证号码等存款信息,并打印出存款存单给储户;如果是取款且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并打印出利息清单给储户。
[填空题]7什么是软件生命周期模型?
试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的使用范围。
参考答案:
瀑布模型优点:
它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。
虽然有不少缺陷但比在软件开发中随意的状态要好得多。
缺点:
(1)实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。
(2)经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。
(3)客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。
快速原型模型优点:
使用户能够感受到实际的系统,使开发者能够快速地构造出系统的框架。
缺点:
产品的先天性不足,因为开发者常常需要做实现上的折中,可能采用不合适的操作系统或程序设计语言,以使原型能够尽快工作。
增量模型优点:
(1)人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一个增量。
(2)当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发布部分功能给客户,对客户起到镇静剂的作用。
缺点:
(1)至始至终开发者和客户纠缠在一起,直到完全版本出来。
(2)适合于软件需求不明确、设计方案有一定风险的软件项目。
该模型具有一定的市场。
螺旋模型优点:
对于大型系统及软件的开发,这种模型是一个很好的方法。
开发者和客户能够较好地对待和理解每一个演化级别上的风险。
缺点:
(1)需要相当的风险分析评估的专门技术,且成功依赖于这种技术。
(2)很明显一个大的没有被发现的风险问题,将会导致问题的发生,可能导致演化的方法失去控制。
(3)这种模型相对比较新,应用不广泛,其功效需要进一步的验证。
该模型适合于大型软件的开发。
[填空题]8说明微软过程的适用范围。
参考答案:
适用于商业环境下具有有限资源和有限开发时间约束的项目的软件过程模式。
[填空题]9为什么说喷泉模型较好的体现了面向对象软件开发过程无缝和迭代的特性?
参考答案:
因为使用面向对象方法学开发软件时,各个阶段都使用统一的概念和表示符号,因此,整个开发过程都是吻合一致的,或者说是无缝连接的,这自然就很容易实现各个开发步骤的反复多次迭代,达到认识的逐步深化,而喷泉模型则很好的体现了面向对象软件开发过程迭代和无缝的特性。
[填空题]10试讨论Rational统一过程的优缺点。
参考答案:
优点:
提高了团队生产力,在迭代的开发过程、需求管理、基于组建的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面、针对所有关键的开发活动为每个开发成员提供了必要的准则、模版和工具指导,并确保全体成员共享相同的知识基础。
它建立了简洁和清晰的过程结构,为开发过程提供较大的通用性。
缺点:
RUP只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容,此外,他没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性。
[填空题]11Rational统一过程主要适用于何种项目?
参考答案:
大型的需求不断变化的复杂软件系统项目。
[填空题]12简述结构化范型和面向对象范型的要点,并分析他们的优缺点。
参考答案:
1.传统方法学:
也称为生命周期方法学或结构化范型。
优点:
把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。
缺点:
当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。
2.面向对象方法学:
优点:
降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。
[填空题]13说明敏捷过程的适用范围。
参考答案:
适用于商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束。
[填空题]14在软件开发的早期阶段为什么要进行可行性研究?
应该从哪些方面研究目标系统的可行性?
参考答案:
(1)开发一个软件时,需要判断原定的系统模型和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度,如果做不到这些,那么花费在这些工程上的任何时间、人力、软硬件资源和经费,都是无谓的浪费。
可行性研究的实质是要进行一次大大压缩简化了的系统分析和设计过程,就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。
可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
(2)一般说来,至少应该从以下三个方面研究每种解法的可行性:
A.技术可行性。
对要开发项目的功能、性能和限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现,这些即为技术可行性研究的内容。
这里的资源包括已有的或可以搞到的硬件、软件资源,现有技术人员的技术水平和已有的工作基础。
B.经济可行性。
进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发,这些即为经济可行性研究的内容对于大多数系统,一般衡量经济上是否合算,应考虑一个“底线”,经济可行性研究范围较广,包括成本—效益分析,长期公司经营策略,开发所需的成本和资源,潜在的市场前景。
C.操作可行性。
有时还要研究社会可行性问题,研究要开发的项目是否存在任何侵犯、妨碍等责任问题。
社会可行性所涉及的范围也比较广,它包括合同、责任、侵权和其他一些技术人员常常不了解的陷阱等。
必要时还应该从法律、社会效益等更广泛的方面研究每种解法的可行性。
[填空题]15为方便旅客,某航空公司拟开发一个机票预定系统。
旅行社把预定机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入进入该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统校对无误即印出机票给旅客。
写出问题定义并分析系统的可行性。
参考答案:
[填空题]16为什么要进行需求分析?
通常对软件系统有哪些要求?
参考答案:
(1)为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求。
对软件需求的深入理解是软件开发工作获得成功的前提条件,不论我们把设计和编码工作做得如何出色,不能真正满足用户需求的程序只会令用户失望,给开发者带来烦恼。
(2)确定对系统的综合要求:
1、功能需求;
2、性能需求;
3、可靠性和可用性需求;
4、出错处理需求;
5、接口需求;
6、约束;
7、逆向需求;
8、将来可以提出的要求,分析系统的数据要求。
[填空题]17为每种类型的模块内聚举一个例子。
参考答案:
[填空题]18美国某大学有200名教师,校方与教师工会刚刚签订一项协议。
按照协议,所有年工资超过$26000(含$26000)的教师工资将保持不变,年工资少于$26000的教师将增加工资,所增加工资数额按下述方法计算:
给每位教师所赡养的人(包括教师本人)每年补助$100,此外,教师有一年工龄每年再多补助¥50,但是,增加后的年工资总额不能多于$26000。
教师工资档案存储在行政办公室的磁带上,档案中有目前的年工资、赡养的人数、雇佣日期等信息。
需要写一个程序计算并印出每名教师的原工资和调整后的新工资。
画出此系统的数据流图。
参考答案:
[填空题]19美国某大学有200名教师,校方与教师工会刚刚签订一项协议。
按照协议,所有年工资超过$26000(含$26000)的教师工资将保持不变,年工资少于$26000的教师将增加工资,所增加工资数额按下述方法计算:
给每位教师所赡养的人(包括教师本人)每年补助$100,此外,教师有一年工龄每年再多补助¥50,但是,增加后的年工资总额不能多于$26000。
教师工资档案存储在行政办公室的磁带上,档案中有目前的年工资、赡养的人数、雇佣日期等信息。
需要写一个程序计算并印出每名教师的原工资和调整后的新工资。
写出需求说明。
参考答案:
1、功能需求:
可以输入调资的标准,输入教师档案,经调资给出新的教师档案,需要存储档案;
2、性能需求:
软件的响应时间应小于
0.5s,更新处理要快;
3、灵活需求:
当需求发生某些变化时,该软件应该能够适应这些变化;
4、故障处理要求:
出现错误时,应给予警告或提示。
[填空题]20假设只有SEQUENCE和IF_THEN_ELSE两种控制结构,怎么利用它们完成DO_WHILE操作?
参考答案:
[填空题]
21研究下面的伪码程序:
图。
参考答案:
更多内容请访问《睦霖题库》微信公众号[填空题]22研究下面的伪码程序:
是非结构化,设计一个等价的结构化程序并图。
参考答案:
若此程序
[填空题]23研究下面的伪码程序:
此程序的
功能是什么?
它完成预定功能有什么隐含的前提条件吗?
参考答案:
此程序有二分查找的功能,它完成预定功能的隐含前提条件是现有
序列为从小到大顺序排好的有序序列。
[填空题]24某交易所规定给经纪人的手续费计算方法如下:
总手续费等于基本手续费加上与交易中的每股价格和股数有关的附加手续费。
如果交易金额少于1000元,则基本手续费为交易金额的
8.4%;如果交易总金额在1000元~10000元之间,则基本手续费为交易金额的5%,再加34元;如果金额超过10000元,则基本手续费为交易金额的4%加上134元。
当每股售价低于14元时,附加手续费为基本手续费的5%,除非买进、卖出的股数不是100的倍数,在这种情况下附加手续费的9%。
当每股售价在14元到25元之间时,附加手续费为基本手续费的2%,除非交易的股数不是100的倍数,在这种情况下附加手续费的6%。
当每股售价超过25元时,如果交易的股数(即不是100的倍数),则附加手续费为基本手续费的4%,否则附加手续费为基本手续费的1%。
用判定表表示手续费的计算方法。
参考答案:
令P代表交易的总金额,Q代表每股的售价,n代表交易的股数。
表示手续费计算方法的判定表如图所示:
[填空题]25人机对话由操作员信息和系统信息交替组成。
假设一段对话总是由操作员信息开始以系统信息结束,用Jackson图描绘这样的人机对话过程。
参考答案:
[填空题]26下面给出的伪码中有一个错误。
请仔细阅读这段伪码,说明该伪码的语法特点,找出并改正伪码中的错误。
字频统计程序的伪码如下:
参考答案:
INSERTtheextractedwordintothetable在这个后面,有没有给这个word的occurrence/count赋值为1。
[填空题]27航空公司A向软件公司B订购了一个规划飞行路线的程序。
假设你是软件公司C的软件工程师,A公司已雇用你所在的公司对上述程序进行验收测试。
任务是,根据下述事实设计验收测试的输入数据,解释你选取这些数据的理由。
参考答案:
[填空题]28严格说来,有两种不同的路径覆盖测试,分别为程序路径覆盖和程序图路径覆盖。
这两种测试可分别称为程序的自然执行和强迫执行。
所谓自然执行是指测试者(人或计算机)读入程序中的条件表达式,根据程序变量的当前值计算该条件表达式的值(真或假),并相应地分支。
强迫执行是在用程序图作为程序的抽象模型时产生的一个人为的概念,它可以简化测试问题。
强迫执行的含义是,一旦遇到条件表达式,测试者就强迫程序分两种情况(条件表达式的值为真和为假)执行。
显然,强迫执行将遍历程序图的所有路径,然而由于各个条件表达式之间存在相互依赖的关系,这些路径中的某一些在自然执行时可能永远也不会进入。
为了使强迫执行的概念在实际工作中有用,它简化测试工具的好处应该超过它使用额外的不可能达到的测试用例所带来的坏处。
在绝大多数情况下,强迫执行的测试数并不比自然执行的测试数大很多,此外,对强迫执行的定义实际上包含了一种技术,能够缩短在测试含有循环的程序时所需要的运行时间。
程序的大部分执行时间通常用于重复执行程序中的DO循环,特别是嵌套的循环。
因此必须发明一种技术,使得每个DO循环只执行一遍。
这样做并不会降低测试的功效,因为经验表明第一次或最后一次执行循环时最容易出错。
Laemmel教授提出的自动测试每条路径的技术如下:
当编写程序时每个DO循环应该写成一种包含测试变量T和模式变量M的特殊形式,因此:
选取一个包含循环和IF语句的程序,用Laemmel技术修改这个程序,上机实际测试这个程序并解释所得到的结果。
参考答案:
[填空题]29严格说来,有两种不同的路径覆盖测试,分别为程序路径覆盖和程序图路径覆盖。
这两种测试可分别称为程序的自然执行和强迫执行。
所谓自然执行是指测试者(人或计算机)读入程序中的条件表达式,根据程序变量的当前值计算该条件表达式的值(真或假),并相应地分支。
强迫执行是在用程序图作为程序的抽象模型时产生的一个人为的概念,它可以简化测试问题。
强迫执行的含义是,一旦遇到条件表达式,测试者就强迫程序分两种情况(条件表达式的值为真和为假)执行。
显然,强迫执行将遍历程序图的所有路径,然而由于各个条件表达式之间存在相互依赖的关系,这些路径中的某一些在自然执行时可能永远也不会进入。
为了使强迫执行的概念在实际工作中有用,它简化测试工具的好处应该超过它使用额外的不可能达到的测试用例所带来的坏处。
在绝大多数情况下,强迫执行的测试数并不比自然执行的测试数大很多,此外,对强迫执行的定义实际上包含了一种技术,能够缩短在测试含有循环的程序时所需要的运行时间。
程序的大部分执行时间通常用于重复执行程序中的DO循环,特别是嵌套的循环。
因此必须发明一种技术,使得每个DO循环只执行一遍。
这样做并不会降低测试的功效,因为经验表明第一次或最后一次执行循环时最容易出错。
Laemmel教授提出的自动测试每条路径的技术如下:
当编写程序时每个DO循环应该写成一种包含测试变量T和模式变量M的特殊形式,因此:
设计一个程序按照Laemmel技术自动修改待测试的程序。
利用这个测试工具修改上一问中人工修改的程序,两次修改得到的结果一致吗?
参考答案:
两次结果是一致的。
[填空题]30严格说来,有两种不同的路径覆盖测试,分别为程序路径覆盖和程序图路径覆盖。
这两种测试可分别称为程序的自然执行和强迫执行。
所谓自然执行是指测试者(人或计算机)读入程序中的条件表达式,根据程序变量的当前值计算该条件表达式的值(真或假),并相应地分支。
强迫执行是在用程序图作为程序的抽象模型时产生的一个人为的概念,它可以简化测试问题。
强迫执行的含义是,一旦遇到条件表达式,测试者就强迫程序分两种情况(条件表达式的值为真和为假)执行。
显然,强迫执行将遍历程序图的所有路径,然而由于各个条件表达式之间存在相互依赖的关系,这些路径中的某一些在自然执行时可能永远也不会进入。
为了使强迫执行的概念在实际工作中有用,它简化测试工具的好处应该超过它使用额外的不可能达到的测试用例所带来的坏处。
在绝大多数情况下,强迫执行的测试数并不比自然执行的测试数大很多,此外,对强迫执行的定义实际上包含了一种技术,能够缩短在测试含有循环的程序时所需要的运行时间。
程序的大部分执行时间通常用于重复执行程序中的DO循环,特别是嵌套的循环。
因此必须发明一种技术,使得每个DO循环只执行一遍。
这样做并不会降低测试的功效,因为经验表明第一次或最后一次执行循环时最容易出错。
Laemmel教授提出的自动测试每条路径的技术如下:
当编写程序时每个DO循环应该写成一种包含测试变量T和模式变量M的特殊形式,因此:
试分析Laemmel技术的优缺点。
参考答案:
优点是可以使得结果更为精确。
缺点是并不适用所有的程序,有时会有程序运行变得复杂。
[填空题]31对一个包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,此时MTTF=10h;经过两个月测试后,总共改正了25个错误(第二个月改正了10个错误),MTTF=15h。
要求:
根据上述数据确定MTTF与测试时间之间的函数关系,画出MTTF与测试时间τ的关系曲线。
在化这条曲线是做了什么假设?
参考答案:
[填空题]32对一个包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,此时MTTF=10h;经过两个月测试后,总共改正了25个错误(第二个月改正了10个错误),MTTF=15h。
要求:
为做到MTTF=100h,必须进行多长时间的集成测试?
当集成测试结束时总共改正了多少个错误,还有多少个错误潜伏在程序中?
参考答案:
[填空题]33在测试一个长度为24000条指令的程序时,第一个月由甲、乙两名测试员各自独立测试这个程序。
经一个月测试后,甲发现并改正20个错误,使MTTF达到10h。
与此同时,乙发现24个错误,其中6个甲也发现了。
以后由甲一个人继续测试这个程序。
问:
刚开始测试时程序中总共有多少个潜在的错误?
参考答案:
[填空题]34在测试一个长度为24000条指令的程序时,第一个月由甲、乙两名测试员各自独立测试这个程序。
经一个月测试后,甲发现并改正20个错误,使MTTF达到10h。
与此同时,乙发现24个错误,其中6个甲也发现了。
以后由甲一个人继续测试这个程序。
问:
为使MTTF达到60h,必须再改正多少个错误?
还需多长测试时间?
参考答案:
根据估算平均无故障时间的公式可得:
1/K(80/24000-20/24000)=101/K(80/24000-Ec/24000)=60计算可得:
K=40,Ec=70即还需要改正50个错误。
根据甲的改正进度,估计还需要3个月。
[填空题]35假设自己被指定为项目负责人,任务是开发一个应用系统,该系统类似于自己的小组以前做过的那些系统,但是规模更大且更复杂一些。
客户已经写出了完整的需求文档。
应选用哪些项目组结构?
为什么?
打算采用哪种(些)软件过程模型?
为什么?
参考答案:
根据上述,应该主程序员组的项目组结构。
因为项目小组已经开发过类似的系统,开发人员已经具备了一定的经验。
这个时候开发过程遇到的难题不会很多,所以应该减少通信开销,充分发挥技术骨干的作用,统一意志,统一行动,提高生产率,加快开发进度。
应该采用“已定义级”的软件过程模型。
因为客户已经写出了完整的需求文档,而且项目小组已经有过类似的开发经验。
软件过程已经文档化和标准化。
这种过程模型是基于在软件机构中对已定义的过程模型的活动、人员和职责都有共同的理解。
[填空题]36假设自己被指派为一个软件公司的项目负责人,任务是开发一个技术上具有穿心性的产品,该产品把虚拟现实硬件和嘴先进的软件结合在一起。
由于家庭娱乐市场的竞争非常激烈,这项工作的压力很大。
应该选择哪种项目组结构?
为什么?
打算采用哪种软件过程模型?
为什么?
参考答案:
由于待开发的应用系统类似于以前做过的系统,开发人员已经积累较丰富的经验,没有多少技术
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 导论 精选
![提示](https://static.bingdoc.com/images/bang_tan.gif)