软件工程复习题(简答题)
- 格式:doc
- 大小:57.50 KB
- 文档页数:7
软件工程复习题及答案一、选择题软件工程复习题(一)1、瀑布模型本质上是一种()A、线性顺序模型B、顺序迭代模型C、线性迭代模型D、及早见产品模型2、使用程序设计的控制结构导出测试用例的测试方法是()A、黑盒测试B、白盒测试C、边界测试D、系统测试3、软件结构图的形态特征能反映程序重用率的是()A、深度B、宽度C、扇入D、扇出4、软件结构图中,模块框之间若有直线连接,表示它们之间存在() A、调用关系B、组成关系C、链接关系D、顺序执行关系5、需求分析最终结果是产生()A、项目开发计划B、需求规格说明书C、设计说明书D、可行性分析报告6、快速原型模型的主要特点之一是()A、开发完毕才见到产品B、及早提供全部完整的软件产品C、开发完毕后才见到工作软件D、及早提供工作软件7、若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例:-1.001,-1.0,1.0,1.001。
设计这组测试用例的方法是()A、条件覆盖法B、等价分类法C、边界值分析法D、错误推测法8、软件详细设计主要采用的方法是()A、模块设计B、结构化设计C、PDL 语言D、结构化程序设计9、开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做 () A、.软件工程B、软件周期C、软件危机D、软件产生10、按软件生命周期方法设计软件的过程中,画数据流图属于下面哪个阶段的工作()A、需求分析B、概要设计C、详细设计D、软件维护11、在快速原型模型的开发过程中,仅作为需求说明的补充形式的原型是()A、探索型模型B、演化型模型C、实验型模型D、提交型模型12、程序设计语言的工程特性之一为()A、软件的可重用性B、数据结构的描述性C、抽象类型的描述性D、数据库的易操作性13、软件按照设计的要求,在规定时间和条件下达到不出故障,持续运行的要求的质量特性称为 ()A、可用性B、可靠性C、正确性D、完整性14、模块设计中,最不希望的内聚是()A、功能内聚B、通信内聚C、过程内聚D、偶然内聚15、实施快速原型模型方法开发软件的关键在于()A、CASE 工具的支持B、如何开发演化型模型C、项目主管的支持D、开发人员的素质16、程序流程图(框图)中的箭头代表()。
1什么是软件工程?基本原理有哪些? ................................................................................................. 2成本_效益分析可用哪些指标进行度量?(写出公式).................................................................... 3什么是数据流图?其中的基本符号各表示什么含义?画出定货系统基本数据流图。
.................. 4非渐增式测试与渐增式测试有什么区别? ......................................................................................... 5试从基本符号和设计方法分析HC图与JACKSON图异同点................................................................ 6软件测试的目的是什么? ..................................................................................................................... 7结构化程序设计的思想是什么? ......................................................................................................... 8请解释极限编程和自适应软件开发,并说明其异同?...................................................................... 9需求工程的起始阶段,需求工程师的主要工作是?.......................................................................... 10请画出“在餐厅使用信用卡付费”这一活动的完整用例图?........................................................ 11分析说明结构化分析和面向对象分析的区别? ...............................................................................12 请简要给出评价软件设计质量的标准? ..........................................................................................13 一个良好的设计类需要满足四个特点,请详细描述这四个特点?............................................... 14软件项目估算内容与步骤 ................................................................................................................... 15面向对象设计的准则是什么?有哪5个层次和4个部分?............................................................ 16简述软件工程目标和面临的主要问题。
软件工程试题整顿_简答题1、可行性研究旳任务是什么?首先需要进行概要旳分析研究,初步确定项目旳规模和目旳,确定项目旳约束和限制,把他们清晰地列举出来。
然后,分析员进行简要旳需求分析,抽象出该项目旳逻辑构造,建立逻辑模型。
从逻辑模型出发,通过压缩旳设计,探索出若干种可供选择旳重要处理措施,对每种处理措施都要研究它旳可行性,可从如下三个方面分析研究每种处理措施旳可行性。
㈠技术可行性:对要开发项目旳功能、性能、限制条件进行分析,确定在既有旳资源条件下,技术风险有多大,项目与否能实现。
㈡经济可行性:进行开发成本旳估算以及理解获得效益旳评估,确定要开发旳项目与否值得投资开发。
㈢社会可行性:要开发旳项目与否存在任何侵犯、阻碍等责任问题,要开发项目旳运行方式在顾客组织内与否行得通,既有管理制度、人员素质、操作方式与否可行。
2、什么是模块旳影响范围?什么是模块旳控制范围?他们之间应当建立什么关系?一种模块旳作用范围(或称影响范围)指受该模块内一种鉴定影响旳所有模块旳集合。
一种模块旳控制范围指模块自身以及其所有下属模块(直接或间接附属于它旳模块)旳集合。
一种模块旳作用范围应在其控制范围之内,且鉴定所在旳模块应在其影响旳模块在层次上尽量靠近。
假如再设计过程中,发现模块作用范围不在其控制范围之内,可以用“上移判点”或“下移受判断影响旳模块,将它下移到判断所在模块旳控制范围内”旳措施加以改善。
3、非渐增式测试与渐增式测试有什么区别?渐增式测试怎样组装模块?非渐增式测试与渐增式测试旳测试措施有如下区别:㈠非渐增式测试措施把单元测试和集成测试提成两个不一样旳阶段,前一阶段完毕模块旳单元测试,后一阶段完毕集成测试。
而渐增式测试往往把单元测试与集成测试和在一起,同步完毕。
㈡非渐增式需要更多旳工作量,由于每个模块都需要驱动模块和桩模块,而渐增式运用已测试过旳模块作为驱动模块或桩模块,因此工作量较少。
㈢渐增式可以较早旳发现接口之间旳错误,非渐增式最终组装是才发现。
1、什么是软件工程?它目标和内容是什么?软件工程就是用科学的知识和技术原理来定义,开发,维护软件的一门学科.软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高.软件工程内容:包括开发技术和开发管理两个方面。
2、软件开发中有哪几种过程模型?哪些适用于面向对象的软件开发?软件开发中常见的软件过程模型有瀑布模型、原型模型、螺旋模型、喷泉模型、统一软件过程等。
其中喷泉模型、统一软件过程适用于面向对象的软件开发.3、什么是结构分析方法?该方法使用什么描述工具?结构化分析:简称SA,面向数据流进行数据分析的方法.采用自顶向下逐层分解的分析策略.顶层抽象地描述整个系统,底层具体地画出系统工程的每个细节。
中间层则是从抽象到具体的过渡。
使用数据流图,数据字典,作为描述工具,使用结构化语言,判定表,判定树描述加工逻辑.4、什么是软件概要设计?该阶段的基本任务是什么?把一个软件需求转换为软件表示时,首先设计出软件总的体系结构。
称为概要设计或结构设计。
基本任务:⑴设计软件系统结构⑵进行数据结构及数据库的设计⑶编写概要设计的文档⑷评审5、软件维护有哪些内容?(1)校正性维护。
在软件交付使用后,一些隐含的错误在某些特定的使用环境下会暴露出来。
为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护.(2)适应性维护。
为了使应用软件适应计算机硬件、软件环境及数据环境的不断发生的变化而修改软件的过程称为适应性维护。
(3)完善性维护。
为增加软件功能、增强软件性能、提高软件运行效率而进行的维护活动称为完善性维护。
(4)预防性维护。
为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。
6、软件测试要经过哪些步骤?这些测试与软件开发各阶段之间有什么关系?软件测试要经过的步骤是:单元测试→集成测试→确认测试→系统测试.单元测试对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。
软件⼯程复习题(简答题)软件⼯程复习题(简答题)五、简述题:1,软件产品具有与硬件产品完全不同的特征是:答:(1)软件是⼀种逻辑实体,具有抽象性,我们可以把它们存储在介质上,但却不能直接看到软件的形态,因⽽必须通过运⾏,观察、分析、思考、判断才能了解软件的功能、性能及其他特性。
软件产品具有明显的⾮可视性。
(2)软件的⽣产和硬件⽣产不同。
软件是由开发或⼯程化⽽形成的,不是传统意义上的制造过程⽣产的。
硬件在⽣产过程当中仍然可能引⼊质量问题,这种问题在软件⽣产中⼏乎是不存在的。
软件的开发成本集中在开发过程上,硬件⽣产成本主要表现在原材料的消耗上。
(3)软件产品不会磨损。
软件产品也会出现故障,所不同的是硬件产品的故障主要来⾃于外界条件造成的部件磨损或⽼化,软件故障都是由于设计开发过程中的隐患造成的,硬件故障通过更换零件来解决故障,软件则是通过软件维护修改来排除故障。
2、软件危机的具体表现是:答:(1)软件开发没有真正的计划性,对软件开发进度和软件开发成本的估计不准确,计划制定盲⽬、⼯期超时、成本失控。
(2)对软件需求信息获取不充分,产品不能满⾜⽤户的实际需求。
(3)缺乏良好的软件质量评测⼿段,导致软件质量不能保证。
(4)对可理解性、可维护性理解不够,产品可复⽤性和可维护性不如⼈意。
(5)软件开发过程没有实现规范化,缺乏必要的⽂档资料或这⽂档资料不合格、不准确、难以进⾏专业维护。
(6)软件开发的⼈⼒成本持续上升。
(7)缺乏⾃动化软件开发技术,软件开发⽣产率低下,不能满⾜急剧增长的需求。
3、产⽣软件危机的原因:答:从客观上来看,软件⽣产不同于硬件,它的⽣产过程和产品都具有明显的“不可视”特征,这就导致在完成编码并且运⾏之前,对软件开发过程的进展情况较难衡量,软件产品的质量也难进⾏先期评价,因此对软件开发过程进⾏管理和控制⽐较困难。
软件运⾏过程中发现错误,必然是遇到了在开发时期引⼊的,在检测过程中没有检查出来的故障。
软件工程课程复习资料一、单项选择题:1.下面哪些UML图描述系统行为A.用例图B.类图C.对象图2.属于概要设计活动的是A.软件结构设计B.数据结构设计C.算法设计3.属行为型设计模式的是A.组合模式B.工厂方法模式C.观察者模式4.下列说法正确的是A.UML 是软件开发方法B.UML是系统描述语言C.UML是软件开发过程5.根据程序流程图划分的模块通常是A.信息内聚的模块B.过程内聚的模块C.逻辑内聚的模块6.如果某程序中的比较个数是m,则其 McCabe环形复杂度为A.m-1B.mC.m+17.按ISO9000-3的说明,下列属软件配置项的是A.软件开发方法B.软件开发组织管理制度C.软件开发合同8.软件测试的目的是A.证明软件无错B.发现软件中的所有错误C.尽可能发现软件系统中的错误9.软件重构关注的是A.软件体系结构B.模块细节C.软件性能10.软件项目开发计划的内容有A.数据分析B.风险分析C.功能分析11.在UML的类图中,描述整体与部分关系的是A.泛化关系B.聚合关系C.依赖关系12.软件过程能力成熟度模型CMM用以评价A.软件过程能力B.组织能力C.学习能力13.因计算机硬件和软件环境的变化而作出的修改软件的过程称为A.完善性维护B.改正性维护C.适应性维护14.对项目软件而言,软件功能需求信息主要由谁提供A.软件用户B.软件开发人员C.软件项目管理人员15.IDEF0 图反映不出A.系统做什么B.系统功能由谁做C.系统如何做16.原型模型是一种什么开发过程模型A.自顶向上B.由外至内C.增量式17.系统流程图描述A.物理系统B.逻辑系统C.软件体系结构18.需求规格说明书的内容不应该包括A.软件确认准则B.软件的性能描述C.算法过程的详细描述19.适合需求模糊或需求不确定系统开发的软件开发模型是A.瀑布模型B.RAD 模型C.原型模型20.UML 图中描述系统结构的是A.组件图B.顺序图C.状态图21.面向对象方法是一种什么软件开发方法A.层次化B.迭代增量式C.逐步求精22.不可以用来衡量软件可维护性的是A.可靠性B.可用性C.可行性23.系统分析员在需求分析最后负责编写A.用户手册B.概要设计说明书C.可行性研究报告24.为了提高软件的可靠性、可维护性等而对软件的修改称为A.改正性维护B.适应性维护C.预防性维护25.在结构化方法中,为使需求改变对软件影响较小,应该使软件结构A.与问题结构对应B.与问题结构独立C.与用户界面对应26.单元测试的计划应该在什么阶段完成A.需求分析B.概要设计C.详细设计27.下列属面向对象软件开发方法的是A.LCP 方法B.OMT 方法C.IDEF0 方法28.强调信息隐藏的软件工程设计方法是A.Jackson 方法B.Parnas 方法C.SA/SD 方法29.描述系统动态行为的模型是A.包图B.软件结构图C.状态图30.考虑输入条件组合的测试用例设计方法是A.等价分类法B.语句覆盖法C.因果图法31.下列能减少支援性维护活动的是A.利用软件包B.进行配置管理C.对用户进行适当培训32.只支持单重继承的程序设计语言是A.C++B.DelphiC.C33.IDEF0 图的顶层图是A.A0 图B.A-0 图C.A-1图34.在UML的用例图中,扩展关系是一种A.泛化关系B.依赖关系C.关联关系35.独立测试小组开始介入测试是在A.模块测试阶段B.集成测试阶段C.确认测试阶段36.在成本估计中容易低估局部问题的方法是A.基于经验模型的估计B.自底向上估计C.自顶向下估计37.在IDEF1X图中,如果子实体与父实体存在联系,则子实体将继承父实体的A.全部属性B.主关键字属性C.非主关键字属性38.结构化分析方法使用的工具是A.数据流图B.类图C.软件结构图39.白盒测试设计用例的方法是A.等价分类法B.基本路径覆盖法C.因果图法40.在衡量软件质量时,最重要的标准是A.可维护性好B.可用性好C.满足用户功能需求41.瀑布模型是一种A.演化模型B.顺序模型C.增量模型42.模块的独立程度可以由什么定性标准度量A.耦合度B.复杂度C.可靠性43.以下选项中,不属于对象的特点有A.继承B.多态C.封闭44.面向数据结构的设计方法有A.Parnas 方法B.Jackson 方法C.IDEF0 方法45.与UML配合最好的软件开发方法是A.RUP 方法B.Coad/Yourdon方法C.IDEF4方法二、填空题:1.统一建模语言UML提供了两种描述整体/部分关系的方法,分别是和 ;2.软件是计算机程序、及的完整集合,将其统称为软件配置,这些项称为软件配置项;通过正式复审的软件配置项称为 ,只有通过正式的变化控制过程才能改变它;3.纯收入是指在整个生存周期之内的与投资之差;4.瀑布模型是以驱动的软件生存周期模型,适合需求明确的软件系统开发;5.在单元测试期间,应该为被测模块编写相应的测试软件,一般地模块接收测试数据,并把数据传给被测模块,而模块则模拟实际模块完成少量数据处理;6.IDEF0方法用严格的自顶向下、逐层分解的方式进行系统的功能描述,其顶层图将图在建模范围内分解成个主要部分得到;7.如果一个模块完成多个逻辑上相近或相关的功能,并且每次调用只选择该模块中的一个功能执行,则称此模块为内聚的模块;8.程序静态分析的对象是 ;常生成各种引用表,如列出各模块中出现的全部标号;9.在数据流图中,每个加工至少有一个和一个 ;10.两个小组独立地测试同一个程序,第一组发现25个错误,第二组发现30个错误,在两个小组发现的错误中有15个是共同的,那么可以估计程序中的错误总数是 ;11.设E为程序图G中边的总数; N 为程序图中结点的总数,则该程序图的环形复杂度为 ;12.汽车有一个发动机;若用UML描述汽车和发动机之间的关系,则它们之间是_____关系;13.自顶向下结合的渐增式测试法,在组合模块时有两种组合策略,即策略和策略;14.在基本路径测试中,以详细设计为基础,导出控制流程图的拓扑结构: 程序图,在计算了程序图的之后,确定只包含独立路径的基本路径图,其中独立路径是包括一组的一条路径;从程序图来看,一条独立路径是至少包含有一条在其他独立路径中未有过的边的路径;15.在多层次的结构图中,其模块结构的层次数称为结构图的 ;结构图中同一层模块的最大模块数称为结构图的 ;16.耦合性是指两个模块之间的关系,模块之间的联系越复杂,每个模块的独立性就 ;17.可行性研究实质上是进行了一次过程;18.需求分析的任务是 ;19.NS图的主要优点是它强制设计人员使用技术,从而可保证软件设计的质量;20.结构型模式涉及如何组合类和对象,从而构成更大的对象,一是采用来组合接口或实现形成更大的结构;另一种方式通过方式来形成;21.为了便于对照检查,测试用例应由和预期的两部分组成;22.软件开发时,一个错误发现得越晚,为改正它所付出的代价就 ;23.在UML的用例图中,根据参与者与用例关系的不同,参与者可分为和次要参与者,参与者之间的关系只有关系;24.评价软件质量可以从三个方面进行,即产品或中间产品、和项目;25.软件配置管理是一组用于在计算机软件的整个生存周期内管理的活动;26.通过抽象,可以确定组成软件的 ;通过信息隐蔽,可以定义和实施对模块的过程细节和局部数据结构的 ;27.UML表示法的基础是 ,它描述建模元素的语义;28.条件覆盖是指设计足够的测试用例,使得至少出现一次;29.面向数据流图的结构化分析方法是根据的原则,按照系统中数据处理的流程,用数据图来建立系统的模型;30.评估软件企业的质量管理有两种方法,一种是按照认证,另外一种是按照CMM认证;31.风险估计从两个方面来度量,一是估计 ,二是估计与风险相关的问题出现后将会带来的损失;三、名词解释:1.集成测试2.设计模式3.信息隐藏4.用例5.结构化方法6.MVC四、判断题:1.测试计划、测试用例和出错统计等一般不用长期保存;2.在面向对象方法中,需求分析和设计没有差别;3.应用设计模式使得软件灵活,可重用性提高,应该尽量多使用;4.UML 是一种建模语言,可以被任何面向对象方法使用;5.任何系统都需要对数据进行处理,因而数据流图可描述任何系统;6.软件开发就是编写程序代码;7.面向对象软件开发最适合采用迭代、增量式的开发模型;8.设计模式是一种可以重用的面向对象软件设计方案;9.软件测试就是检查程序是否正确;10.软件项目计划在可行性研究阶段就已定稿;11.软件工程认为软件设计的最终目标是要取得最佳方案;12.只要对软件进行严格的测试,就能发现软件中的所有错误;13.初级技术人员在编码阶段参与软件项目的程度在各类人员中最高;14.单元测试常常在编码阶段进行;15.CMM 描述和分析了软件过程能力的发展与改进的程度;16.为了加快开发速度,可以一边写程序,一边设计文档;17.没有发现任何错误的测试是无效的测试;18.软件结构图中不能有控制信息流动;19.单元测试常常由独立的测试小组进行;20.用例建模只能用于面向对象软件系统的开发;21.数据流建模方法是一种自顶向下的需求分析方法;22.为了减少程序的长度,最好不要在程序中增加注释;五、简答题:1.在需求分析和设计阶段建立原型的好处有哪些2.什么是模块的扇入和扇出3.UML的特点是什么4.层次图和层次方框图有何区别5.软件测试对象应包括哪些内容6.试简要叙述文档在软件工程中的作用;7.为何螺旋模型主要适合开发人员和用户为同一个组织机构成员的软件项目的开发8.软件测试为何需要尽早和不断地进行9.简要说明如何实现MVC;10.试给出一种开源软件框架,并简要说明开源软件存在的问题;11.IDEF0方法有什么特点12.快速原型模型有几种各有何特点六、综合题:1.某网络学院决定开发一个管理所有学生和教师信息的交互式网络系统,该系统提供如下服务:1浏览学生信息:网络学院的任何人员,包括学生和老师,均可以浏览学院任何学生的信息,包括姓名、学号和专业名称;2浏览教师信息:网络学院的任何人,包括学生和老师,均可以浏览学院任何教师的信息,包括姓名、工号和职称;3登录:网络学院给学院每个人一个账号;拥有授权帐号的学生和老师,可以使用系统提供的页面设置个人密码,并使用该账号和密码向系统注册;4修改个人信息:学生或老师向系统注册后,可以发送电子邮件或使用系统提供的页面,对个人信息进行修改;5删除个人信息:只有网络学院的管理人员才能删除不再是学院学生或老师的人员的有关信息;试问哪些是参与者哪些是用例并用UML的用例图描述系统行为;2.试据下述伪代码描述的模块,改用NS图描述;BeginabDo Until x6If xl thenfIf x4 thenDo Until x5iEnd UntilElseghEnd ifElseSelect Case x2Case 1:Do While x3cEnd WhileCase 2:dCase 3:eEnd SelectEnd ifEnd UntilEnd3.某五星级宾馆共有H间客房;每间客房的房间号、房间等级、床位数以及占用状态分别存放在数组ROOM、RANK、NBED和STATUS中;房间等级用整数表示;房间状态有:空闲0表示和占用1表示;客房以房间为单位出租;试设计一个算法,依据散客的要求预定房间,要求输入为:人数M,房间等级要求RR为0表示任意等级均可;输出为:可供选择的房间号;要求用程序流程图描述算法;4.某医院打算开发一个以计算机为中心的患者监护系统,以解决医院人手不够和对危重病人的及时监护;该系统应能做到以下几点:随时接受每个病人的生理信号;定时记录病人情况形成患者日志;当病人生理信号超出医生规定的安全范围时向值班护士发告警信息;此外,护士在需要时,还可要求系统印出指定病人的病情报告;试椐此叙述绘出对应的DFD图;5.试采用设计模式描述算术表达式不含圆括号的设计方案;算术表达式是由加、减、乘、除和操作数构成的表达式,操作数假定为实数;6.请根据如下程序流程图设计该程序段的判定覆盖测试用例,其中输入为A,B,X,输出为X;参考答案一、单项选择题:1.A2.A3.C4.B5.B6.C7.C8.C9.B 10.B 11.B 12.A 13.C 14.A 15.C 16.B 17.A 18.C 19.C 20.A 21.B 22.C 23.A 24.C 25.A 26.C 27.B 28.B 29.C 30.C31.C 32.B 33.A 34.B 35.C 36.C 37.B 38.A 39.B 40.C 41.B 42.A 43.C 44.B 45.A二、填空题:1.聚集组合2.描述计算机程序的文档数据基线3.累计经济效益折合成现在值4.文档5.驱动模块桩模块6.A-0 3-67.逻辑 8.源程序标号交叉引用表9.输入流输出流 10.5011.E – N + 2 12.聚合13.深度优先广度优先 14.环形复杂性以前没有处理的语句或条件15.深度宽度 16.依赖越低17.大大压缩简化了的系统分析和设计过程 18.确定系统必须完成哪些工作19.结构化 20.继承对象组合21.输入数据预期输出结果 22.越大23.主要参与者泛化 24.过程25.变化 26.过程实体存取限制27.UML 元模型 28.判定表达式中每个条件的各种可能的值29.分解与抽象功能 30.ISO900131.风险发生的可能性三、名词解释:1.集成测试也称组装测试或联调;是指在单元测试的基础上,将所有模块按照概要设计要求组装成一个完整的系统而进行的测试;模块组装的方式有两种:渐增式和非渐增式;2.设计模式是普通面向对象设计问题的解决方案,这类问题以一组交互类的形式出现,用户根据需要定制这些交互类以形成专门的设计;所有设计模式均可以从四个方面加以描述:模式名称、问题描述、解决方案和效果;3.信息隐藏是指在模块设计时,使得一个模块内包含的信息过程或数据,对于不需要这些信息的其他模块来说是不能访问的;这样,改变模块的内部过程和数据的设计不会影响到其它模块;4.用例是参与者为达到某个目的而与系统进行的一系列交互,执行结果将为参与者提供可度量的价值;从参与者的角度来看,用例应该是一个完整的任务,在一个相对较短的时间内完成;5.结构化方法是一种传统的软件开发方法,其总的指导思想是自顶向下、初步求精、单入口、单出口,其基本原则是抽象和功能分解;6.MVC即模型、视图、控制器;其中,模型是应用对象,其包含一些数据值,维护数据并提供数据的访问方法;视图显示模型的部分或说有数据,多个视图可以以不同的方式来显示模型中数据;控制器处理用户输入事件;四、判断题:1.×2.×3.×4.√5.√6.×7.√8.√9.× 10.× 11.× 12.× 13.√ 14.√ 15.√16.× 17.√ 18.× 19.× 20.× 21.√ 22.×五、简答题:1.在需求分析和设计阶段建立原型的好处有:1增进开发人员和用户对系统需求的一致理解,明确软件需求,尤其是功能含糊的需求;2原型提供了一种有力的学习手段,能够使用户尽早接触系统;3原型可以用来识别或化解风险;4原型有的可以原封不动地成为产品,有的略加修改就可以成为最终系统的一个组成部分,这样有利于建成最终系统;2.扇入则定义为一个模块被调用或控制的模块个数;扇出表示一个模块直接调用或控制的其他模块数目;3.UML的特点是:1统一了面向对象方法的有关概念和描述方法;2表达能力强,能对各种并发分布式系统进行建模,且UML还提供了扩展机制;3UML专注于一种标准的建模语言,而不是一个开发过程;4.层次图主要用来描绘软件的层次结构,矩形框代表一个模块,矩形框之间的连线表示模块之间的调用关系,常与IPO图一起形成HIPO图;层次方框图主要描述系统的组成关系,一般自用域需求分析;5.软件测试并不等于程序代码测试,其应该贯穿于软件定义与开发的整个期间;因此,需求分析、概要设计以及程序编码等各阶段所得的文档,包括需求规格说明、概要设计说明、详细设计规格说明以及源程序代码都应成为软件测试的对象;6.在软件工程中,文档的作用是:1提高软件开发过程的能见度;2记录开发过程的有关信息便于使用与维护;3作为开发人员阶段工作成果和结束标志;4提高开发效率;5提供软件运行、维护和培训有关资料;6便于用户了解软件功能、性能;7.因为如果开发人员和用户属于不同的组织机构,则一般在正式的软件开发之前均需要签订合同,所有的风险分析均必须在签订合同之前完成;但螺旋模型需要在软件开发的每一个阶段都进行风险分析,当重要风险不能解决时,项目应该终止;由此螺旋模型可能因为风险使得合同在完成之前就终止,从而导致法律诉讼;故螺旋模型不适合开发人员和用户属于不同组织机构的情况;8.软件测试不应仅仅作为一个独立的软件开发阶段,而应贯穿到软件开发的各个阶段中;通过各阶段的评审,在早期把错误解决,以减少错误放大效应,这样不仅可以提高软件质量,而且也是降低软件成本的一个重要措施;由此,软件测试应该尽早和不断地进行;9.MVC是Model-View-Controller的简写;"Model" 代表的是应用的业务逻辑通过JavaBean,EJB组件实现, "View" 是应用的表示层由JSP页面产生,"Controller" 是提供应用的处理过程控制一般是一个Servlet,通过MVC把应用逻辑,处理过程和显示逻辑分成不同的组件实现;10.Struts是采用Java Servlet/JavaServer Pages技术,开发Web应用程序的开源应用框架; Struts框架主要有如下功能:1包含一个controller servlet,能将用户的请求发送到相应的Action对象; 2JSP 自由tag库,并且在controller servlet中提供关联支持,帮助开发人员创建交互式表单应用;3提供了一系列实用对象,如XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息等;开源软件存在的主要问题有:1技术服务支持较少;2版本控制困难;3性能不够稳定;4文档不全,等等;11.IDEF0方法的特点是:1采用方框和箭头等简单的图形符号描述系统的活动和数据流,描述活动所受到的约束条件及实现机制,清楚地反映了系统的功能;2采用严格的自顶向下、逐层分解的方式建立系统功能模型;顶层确定系统范围,采用抽象原则,然后有控制的逐步展开有关活动的细节,符合SA方法的分析策略;同时,IDEF0规定每张图至少有3个、最多有6个方框,上界6保证采用层次性描述复杂问题的可理解性,下界3保证分解有意义;12.根据原型的不同作用,有三类原型模型:⑴探索型原型;这种类型的原型模型是把原型用于开发的需求分析阶段,目的是要弄清用户的需求,确定所期望的特性,并探索各种方案的可行性;它主要针对开发目标模糊,用户与开发着对项目都缺乏经验的情况,通过对原型的开发来明确用户的需求;⑵实验型原型;这种原型主要用于设计阶段,考核实现方案是否合适,能否实现,对于一个大型系统,若对设计方案心中没有把握时,可通过这种原型来证实设计方案的正确性;⑶演化型原型;这种原型主要用于及早向用户提交一个原型系统,该原型系统或者包含系统的框或者包含系统的主要功能;在得到用户的认可后,将原型系统不断扩充演变为最终的软件系统,它将原型的思路扩展到软件开发的全过程;六、综合题:1. System 网络学院人员管理人员教师学生登录修改个人信息浏览学生信息浏览教师信息删除个人信息2.3.4.5.6.1选择测试路径:Ⅰ:a→ b → d 判定A>1∨B=0为假;判定A=2∧X>1为假Ⅱ:a→ c → e 判定A>1∨B=0为真;判定A=2∧X>1为真2选择测试用例Ⅰ:输入A=1 B=1 X=1 预期输出 X=1Ⅱ:输入A=2 B=0 X=4 预期输出 X=4。
软件工程复习题(带答案)软件工程复习题一、单选题1、软件开发的结构化设计(SD)方法,全面指导模块划分的最重要原则应该是( c )A模块高内聚 B模块低耦合 C模块独立性 D程序模块化2、软件工程方法的提出起源于软件危机,而其目的应该是最终解决软件的什么问题?( D )A产生危机 B质量保证 C开发效率 D生产工程化3、软件工程开发的可行性研究是决定软件项目是否继续开发的关键,而可行性研究的结论主要相关于( A )A软件系统目标 B软件的性能C软件的功能 D软件的质量4、软件需求分析一般应确定的是用户对软件的( D )A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求5、软件测试是满足软件的功能和性能要求,保证软件正确性的措施,一般软件测试计划的制订应始于软件开发的哪个阶段? ( D )A.需求分析B.软件设计C.程序编码D.软件计划6、软件工程方法是在实践中不断发展的方法,而早期的软件工程方法主要是指( B )A.原型化方法B.结构化方法C.面向对象方法.D.功能分解法7、数据流图描述数据在软件中流动和被处理变换的过程,它是以图示的方法来表示,即.( A )A.软件模型B.软件功能C.软件结构D.软件加工8、软件工程学涉及到软件开发技术和工程管理两方面的内容,下述内容中哪一个不属于开发技术的范畴?(D)A.软件开发方法B.软件开发工具C.软件工程环境D.软件工程经济9、软件文档是软件工程实施中的重要成份,它不仅是软件开发的各阶段的重要依据,而且也影响软件的()A.可理解性B.可维护性C.可扩展性D.可靠性10、从( )语言开始,软件摆脱了对硬件的依赖。
A.第一代B.第二代C.第三代D.第四代11、在下面列出的基本成分中,哪个不是实体关系图的基本成分? ( )A.实体B.数据存储C.关系 D属性13、结构化程序设计主要强调程序的(C)A.效率B.速度C.可读性D.大小14、在软件工程中根据程序的功能说明,而不关心程序内部逻辑的测试方法为( A )A.黑盒法B.白盒法C.灰盒法D.综合法15、软件开发的结构化分析方法,常用的描述软件功能需求的工具有( C )A业务流程图,数据字典 B.软件流程图,模块说明C.数据流图,数据字典D.系统流程图,程序编码16、结构化程序设计思想的核心是要求程序只由顺序、循环和( A )三种结构组成。
软件⼯程_简答题复习题(带答案).. ..第⼀章1,与计算机硬件相⽐,计算机软件有哪些特点?软件的特点如下。
1)⽆法直接观察计算机软件的物理形态,只能通过观察它的实际运⾏情况来了解它的功能、特性和质量等。
2)⼈们在分析、设计、开发、测试软件产品,以及在软件开发项⽬的管理过程中,渗透了⼤量的脑⼒劳动。
3)不存在像硬件⼀样的磨损和⽼化现象,但存在着缺陷维护和技术更新的问题。
4)软件的开发和运⾏必须依赖于特定的计算机系统环境。
5)具有可复⽤性。
3,什么是软件危机?什么原因导致了软件危机?软件危机的现象如下。
1)经费超出预算,项⽬⼀再拖延。
2)不重视需求,开发的软件不能满⾜⽤户的要求,项⽬成功率低。
3)没有规的软件⼯程⽅法,软件可维护性差、软件质量差、可靠性差。
4)开发⼯具落后,⼿⼯⽅式,开发效率低。
所有导致软件危机的原因,都与软件本⾝的产品特点相关。
1)软件是⼀个复杂的逻辑产品。
如果没有解决复杂问题的有效⽅法,以及软件产品的结构、质量、可维护性得不到保障,开发与维护费⽤就会持续升⾼。
2)软件产品不能实现⼤规模复⽤,这导致了软硬件⽣产效率的不同。
3)软件⽣产是脑⼒劳动,它看不见、摸不着,开发成本、开发周期等都⽆法做到准确估算,⽣产过程不易控制。
4)软件成本主要是由研发成本构成;⽽硬件的⽣产成本主要是材料和制造成本,分摊的研发成本很少,即软件研发过程与硬件制造过程相⽐要复杂得多。
5,请简述软件⼯程研究的容。
软件⼯程研究的容包括软件开发⽅法、软件开发模型、软件⽀持过程和软件管理过程。
软件开发⽅法的容涵盖市场调研、正式⽴项、需求分析、项⽬策划、概要设计、详细设计、编程、测试、试运⾏、产品发布、⽤户培训、产品复制、销售、实施、系统维护、版本升级等。
常⽤的软件开发模型有瀑布模型、迭代模型、增量模型和原型模型等。
软件⽀持过程由所⽀持的CASE⼯具组成,常⽤的CASE⼯具有Power Designer和Rational Rose等。
1.简述软件工程目标和面临的主要问题。
软件工程是一门工程性的学科,其目标主要是成功地建造一个大型软件系统。
包括:付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。
面临的主要问题是:软件费用软件可靠性软件维护软件生产率软件重用。
2.简述结构化程序设计方法的基本要点。
(1)采用自顶向下,逐步求精的程序设计方法。
(2)使用三种基本控制结构构造程序,分别是顺序,选择和循环(3)采用主程序员组的组织形式。
3.简述文档在软件工程中的作用。
(1)提高软件开发过程的能见度(2)提高开发效率(3)作为开发人员阶段工作成果和结束标志(4)记录开发过程的有关信息便于使用与维护;(5)提供软件运行、维护和培训有关资料;(6)便于用户了解软件功能、性能。
4.简述提高可维护性的方法。
(1)建立明确的软件质量目标(2)利用先进的软件开发技术和工具(3)建立明确的质量保证工作(4)选择可维护的程序设计语言(5)改进程序文档5.软件工程面临的主要问题有哪些?软件费用、软件可靠性、软件可维护、软件生产率、软件重用。
6.增量构造模型有什么特点?增量构造模型是部分阶段进行增量开发,即在该模型中,需求分析阶段和设计阶段与瀑布模型一样,按照瀑布模型方式进行开发,而编码和测试阶段不采用瀑布模型方式,而采用增量方式开发,即先对部分功能进行编码,进行测试,将这部分功能提交用户,然后再对另一部分功能进行编码,测试提交用户,直到把功能按这种方式开发完毕,在这种模型中,用户及早看到部分软件功能,及早发现问题,以便在其它软件功能开发时及时解决。
7.软件测试要经过哪些步骤?.(1)单元测试,集成测试,确认测试,系统测试。
8.简述需求分析方法应遵循的基本原则。
(1)必须能够表达和理解问题的数据域和功能域;(2)可以把一个复杂问题按功能进行分解并可逐层细化;(3)建模。
软件工程复习题(简答题)五、简述题:1,软件产品具有与硬件产品完全不同的特征是:答:(1)软件是一种逻辑实体,具有抽象性,我们可以把它们存储在介质上,但却不能直接看到软件的形态,因而必须通过运行,观察、分析、思考、判断才能了解软件的功能、性能及其他特性。
软件产品具有明显的非可视性。
(2)软件的生产和硬件生产不同。
软件是由开发或工程化而形成的,不是传统意义上的制造过程生产的。
硬件在生产过程当中仍然可能引入质量问题,这种问题在软件生产中几乎是不存在的。
软件的开发成本集中在开发过程上,硬件生产成本主要表现在原材料的消耗上。
(3)软件产品不会磨损。
软件产品也会出现故障,所不同的是硬件产品的故障主要来自于外界条件造成的部件磨损或老化,软件故障都是由于设计开发过程中的隐患造成的,硬件故障通过更换零件来解决故障,软件则是通过软件维护修改来排除故障。
2、软件危机的具体表现是:答:(1)软件开发没有真正的计划性,对软件开发进度和软件开发成本的估计不准确,计划制定盲目、工期超时、成本失控。
(2)对软件需求信息获取不充分,产品不能满足用户的实际需求。
(3)缺乏良好的软件质量评测手段,导致软件质量不能保证。
(4)对可理解性、可维护性理解不够,产品可复用性和可维护性不如人意。
(5)软件开发过程没有实现规范化,缺乏必要的文档资料或这文档资料不合格、不准确、难以进行专业维护。
(6)软件开发的人力成本持续上升。
(7)缺乏自动化软件开发技术,软件开发生产率低下,不能满足急剧增长的需求。
3、产生软件危机的原因:答:从客观上来看,软件生产不同于硬件,它的生产过程和产品都具有明显的“不可视”特征,这就导致在完成编码并且运行之前,对软件开发过程的进展情况较难衡量,软件产品的质量也难进行先期评价,因此对软件开发过程进行管理和控制比较困难。
软件运行过程中发现错误,必然是遇到了在开发时期引入的,在检测过程中没有检查出来的故障。
对这些故障的修改,就有可能修改早期的分析结果和设计结果,并调整编码。
由于软件的不可视性,在客观上造成了软件难以维护的结果。
从主观上来看,忽视软件需求分析的重要性,忽视软件的可理解性,文档不完备,轻视软件的可维护性,过分强调编码技巧等。
4、简述软件“生命周期”三个阶段的主要工作:答:软件定义阶段,主要进行软件项目策划、可行性研究和软件需求分析工作,通过和用户交流,了解软件必须完成什么工作,和用户达成共识。
软件开发阶段,主要对软件的体系架构、数据结构和主要算法进行设计和编码实现。
对于编码结果进行规范化测试之后,才能交付使用。
软件运行与维护阶段,分析和设计阶段遗留的问题和缺陷可能会逐步暴露出来,运行环境的变化也会对软件提出变更的要求,用户新的需求的提出常常要求扩充现有的软件功能和改进性能。
5,解决软件危机的途径有:答:(1)从管理层面上考虑,应注意推广和使用在实践中总结出来的开发软件的成功的技术和方法,并且探索更好的、更有效的技术和方法,注意积累软件开发过程中的经验数据,逐步消除早期形成的错误的概念和做法。
建立适合于本组织的软件工程规范;指定软件开发各个环节流程文件、工作指南和阶段工作产品模板;实施针对软件开发全过程的计划跟踪和质量管理活动;为每一项工程开发活动建立配置管理库;实施严格的产品基线管理斌建立组织的软件过程数据库和软件财富库;为各类员工及时提供必要的培训等。
(2)从技术层上考虑,应该开发和使用更好的软件开发工具,提高软件开发效率和开发工作过程的规范化程度。
在计算机软件开发的各个阶段,都有大量的繁琐重复的工作要做,应该有适当的工具帮助完成。
6、软件工程的七项基本原则:答:(1)用分阶段的生命周期计划严格管理软件工程过程。
(2)坚持在软件工程过程中进行阶段性评审。
(3)实行严格的产品控制。
(4)采用现代化的开发技术进行软件的设计与开发。
(5)工作结果应该是能够清楚地审查的。
(6)开发小组的人员应该“少而精”。
(7)承认不断改进软件工程实践的必要性。
7、一个良好的软件工程过程应当具备的特点:答:(1)易理解性。
(2)可见性。
(3)可支持性。
(4)可接受性。
(5)可靠性。
(6)健壮性。
(7)可维护性。
(8)高效率。
8,软件工程过程所包含的基本的过程活动:答:(1)软件规格说明:规定软件的功能、性能及运行限制。
(2)软件开发:产生满足规格说明的软件,包括设计与编码等工作。
(3)软件确认:确认软件能够满足客户提出的要求,对应于软件测试。
(4)软件演进:为满足客户的变更要求,软件必须在使用的过程中演进,以求尽量延长软件的生存周期。
9,一个良好软件工程过程的特点:答:(1)易理解性:在软件工程过程的每一个环节上使得设计人员、开发人员、用户能够充分理解其含义和目的。
(2)可见性:每个过程都以得到明确的结果而告终,保证过程的进展对外可见。
(3)可支持性:容易得到CASE的支持。
(4)可接受性:比较容易被软件工程师接受和使用。
(5)可靠性:不会出现过程错误,或者出现的过程错误能够在产品出错之前被发现。
(6)健壮性:不受意外发生问题的干扰。
(7)可维护性:过程可以根据开发组织的需求的改变而改进。
(8)高效率:从给出软件规格说明开始,能够较快地完成开发而交付使用。
10、线性顺序模型的优缺点:答:它提供了一个模板,使得分析、设计、编码、测试与维护工作可以在该模板的指导下有序展开,避免了软件开发、维护过程中的随意性。
采用这种模型曾成功地进行过许多大型软件工程的开发。
直到目前,对于需求确定、变更较少的项目,线性顺序模型仍然是一种可以考虑采取的过程模型。
11、使用原型法必须具备的两个前提:答:(1)用户必须积极参与原型的建造,同时开发者和用户必须有共识:建造原型仅是为了定义需求,之后就必须全部抛弃,实际的软件必须考虑到软件的质量和可维护性之后才能开发。
(2)必须有快速开发工具可供使用。
12、软件成分重用的意义:答:(1)需求分析在软件工程中的地位举足轻重。
一个完善的需求分析将指导我们走向成功之路,反之,错误的分析必将导致项目的彻底失败。
在大部或局部雷同的项目中重复地使用已经被前驱项目证明是正确的部分分析结果,是提高分析工作效率、保证分析成功的一种有效的方法。
(2)设计结果重用在开发类同项目的软件,尤其是在软件移植过程中能够极大地减少工作量,提高工作效率。
(3)代码重用是最直接的重用,包括基于“宏”的重用,基于函数库的重用和基于继承的重用。
13、采用框架技术进行软件开发的主要特点:答:(1)领域内的软件结构一致性好;(2)建立了更加开放的系统;(3)重用代码大大增加,软件生产效率和质量得到了提高;(4)软件设计人员要专注于对该领域的了解,使需求更充分;(5)存储了经验,可以让经验丰富的人员去设计框架和领域构件,而不是设计低级编程;(6)允许采用快速原型技术;(7)有利于在一个项目内多人协同工作;(8)大粒度的重用使得平均开发费用降低,开发速度加快,开发人员减少,维护费用降低,而参数化框架使得适应性,灵活性增强。
14、计算机系统工程师在选择硬件元素时,应当考虑的特性:答:(1)从集成化的角度考虑,对各种元件打包形成单独的构件块。
(2)各个元件/构件块之间尽量采用标准接口。
(3)性能、成本、有效性相对比较容易确定。
(4)尽量提供多种可供权衡选择的硬件方案。
15、系统分析的目标:答:(1)识别出用户的需求;(2)评价系统的可行性;(3)进行经济分析和技术分析;(4)在明晰总体需求的前提下,将要实现的功能分配给硬件、软件、人、数据库和其他的系统元素;(5)预测成本、进行进度设计;(6)生成系统规格说明,用作所有后续工程的基础。
16、设别用户真正需求时,分析人员应该弄清楚哪些问题:答:(1)用户所期望的功能和性能;(2)对于可靠性和质量提出的问题有哪些?(3)总的系统目标是什么?(4)成本、资源和进度有哪些限制和约束?(5)可能会有哪些扩充需求?(6)有哪些有效地技术可供使用?(7)制造的需求是什么?市场竞争情况如何?17、技术分析的目的:答:是提交系统的技术分析可行性评估,说明为完成系统功能、达到系统性能指标要采取什么样的技术、存在哪些技术风险并判定这些技术问题对成本有什么影响。
18、系统定义的评审目的:答:对系统定义进行评审其主要目的就是要保证:(1)正确地定义了项目的范围;(2)使当地定义了功能、性能和接口;(3)通过可行性分析证明了系统是可行的;(4)开发方和用户方对系统的目标达成共识。
19、用户对系统的需求有哪些?答:功能性需求:主要说明待开发的系统在功能上实际应该做到什么,通常包括系统的输入、输出、系统能够完成的功能。
非功能性需求:从各个角度对所考虑的可能的解决方案的约束和限制。
主要包括:过程需求(如交付需求、实现方法需求等)、产品需求(如可靠性需求、可移植性需求、安全保密性需求等)和外部需求(如法规需求、费用需求等)等。
20,系统定义的评审从管理方面考虑的关键问题?答:(1)商业需求是否已经确定,系统可行性分析的结论是否合理。
(2)市场是否真的需要所描述的系统。
(3)是否考虑过一组候选方案并进行了择优。
(4)每一系统元素的开发风险有哪些。
(5)是否剧本开发系统的有效资源。
(6)成本与进度的期望值是否合理。
21,系统定义的评审从技术方面应重点评审的问题?答:(1)系统的功能复杂性是否与开发风险、成本、进度的评估一致。
(2)功能分配定义是否足够准确。
(3)系统元素之间的接口、系统元素和环境的借口定义是否清晰。
(4)在规格定义中是否考虑了性能、可靠性和可维护性问题。
(5)系统规格说明是否足以支持后继的硬件和软件工程步骤。
22、关系数据库中二维表必须满足规范化约束条件:答:(1)表中的每一个项必须是不可再分的数据项;(2)表中的每列中的所有信息必须是同类型的数据,各列次序任意,每列对应一个唯一的名字;(3)表中每一行的数据各不相同,各行的数据不相同,次序任意。
23、建立数据字典的原则:答:(1)所有定义必须严密、精确、不存在二义性。
(2)书写格式应该简洁且严格。
(3)应可以方便的实现对所需条目的按名查询。
(4)应便于修改和更新。
24、体系结构设计的原则:答:(1)降低模块的耦合性,提高模块的内聚性;(2)保持适中的模块规模;(3)模块应具有高扇入和适当的扇出;(4)软件结构中的深度和宽度不宜过大;(5)模块的作用于应该处于其控制范围之内;(6)尽量降低模块的借口复杂度。
25、详细设计阶段的主要目的:答:详细设计阶段的主要目的是在体系结构设计的基础上,为软件中的每一个模块确定相应的算法及内部数据结构,获得目标系统具体结构实现的精确描述,为编码工作做好准备。
26、详细设计的任务:答:(1)确定每个模块的具体算法;(2)确定每个模块的内部数据结构和数据库的物理结构;(3)确定模块借口的具体细节;(4)为每个模块设计一组测试用例;(5)编写文档,参加复审。