软件工程习题答案.docx
- 文档编号:4869128
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:24
- 大小:251.52KB
软件工程习题答案.docx
《软件工程习题答案.docx》由会员分享,可在线阅读,更多相关《软件工程习题答案.docx(24页珍藏版)》请在冰豆网上搜索。
软件工程习题答案
第1章软件工程概述
参考答案
一.选择题
1.B2.A3.B4.B5.D6.B7.D8.A9.D
二.填空题
1.设计编码测试
2.软件费用可靠性可维护性可重用性及生产率等
3.计算机软件开发和维护
4.分解抽象和信息隐蔽一致性确定性
5.软件的总目标待开发软件的需求
6.二三
7.计划阶段开发阶段维护阶段
8.软件需求明确
9.制定计划风险分析开发实施用户评估
三.名词解释
1.软件的定义如下:
在运行中能提供所希望的功能和性能的指令集,使程序能正确运行的数据结构,描述程序研制过程和方法所用的文档。
2.软件工程是指导计算机软件开发和维护的一门学科。
3.软件危机指的是软件开发和维护过程中遇到的一系列严重问题。
4.就是从提出软件产品开始,直到该软件产品被淘汰的全过程。
5.瀑布模型又称生存周期模型,由B.M.Boehm提出,是软件工程的基础模型。
其核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作。
6.螺旋模型将瀑布模型与演化模型结合起来,并且加入两种模型均忽略了的风险分析,弥补了两者的不足。
四.简答题
1.软件既是知识产品,又是与汽车,建筑物一样的工业产品,此外,软件还具有类似艺术,学术那样的知识性创造和特点,软件的特点如下:
软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性;
软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的;
在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题;
软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖关系;
软件的开发尚未完全摆脱手工的开发方式;
软件的开发费用越来越高,成本相当昂贵;
软件的开发是一个复杂的过程,因而管理是软件开发过程中必不可少的內容。
2.软件危机主要表现如下:
产品不符合用户的实际需要;软件开发生产率提高的速度远远不能满足客观需要,软件的生产率远远低于硬件生产率和计算机应用的增长速度,使人们不能充分利用现代计算机硬件提供的巨大潜力;软件产品的质量差;对软件开发成本和进度的估计常常不准确;软件的可维护性差;软件文档资料通常既不完整也不合格;软件的价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升。
造成软件危机的原因是:
软件的规模越来越大,结构越来越复杂,软件开发管理困难而复杂,软件开发费用不断增加;软件开发技术落后,生产方式落后,开发工具落后,生产率提高缓慢。
3.软件工程原则如下:
用分阶段的生存周期计划严格管理;坚持进行阶段评审;实行严格的产品控制;采用现代程序设计技术;应能清楚地审查结果;合理安排软件开发小组的人员。
4.软件工程是一门工程性的学科,其目标主要是成功地建造一个大型软件系统。
包括:
付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。
面临的主要问题是:
软件费用,软件可靠性,软件维护,软件生产率,软件重用。
5.软件生存周期一般分为如下几个阶段:
问题定义及可行性研究,需求分析,概要设计,详细设计,编码,测试,运行与维护。
软件生存期也可以分为三个大的阶段:
计划阶段、开发阶段和维护阶段。
6.软件的质量保证工作不能等到编码阶段结束之后再进行,其理由如下:
(1)大部分错误是在编码之前造成的。
(2)错误发现与改正得越晚,所需付出的代价也越高。
因此,在每个阶段都要进行严格的评审,以便尽早发现在软件开发过程中所犯的错误,这是一条必须遵循的重要原则。
7.在用瀑布模型开发软件时,每项开发活动均应具有如下特征:
(1)从上一项活动接收该项活动的工作对象,作为输入;
(2)利用这一输入实施该项活动应完成的内容;
(3)给出该项活动的工作结果,作为输出传给下一项活动;
(4)对该项活动实施的工作进行评审。
若其工作得到确认,则继续进行下一项活动,否则返回前项,甚至更前项的活动进行返工。
8.对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作,因此,选择生命周期模型时应该着重考虑哪种模型有助于加快产品开发的进度。
使用增量模型开发软件时可以并行完成开发工作,因此能够加快开发进度。
这个项目是开发该公司已被广泛应用的字处理软件的新版本,从上述事实至少可以得出3点结论:
第一,旧版本相当于一个原型,通过收集用户对旧版本的反映,较容易确定对新版本的需求,没必要再专门建立一个原型系统来分析用户的需求;第二,该公司的软件工程师对字处理软件很熟悉,有开发字处理软件的丰富经验,具有采用增量模型开发新版字处理软件所需要的技术水平;第三,该软件受到广大用户的喜爱,今后很可能还要开发更新的版本,因此,应该把该软件的体系结构设计成开放式的,以利于今后的改进和扩充。
综上所述,采用增量模型来完成这个项目比较恰当。
第2章可行性研究和需求分析
参考答案
一.选择题
1.B2.C3D4.A5.D6.A7.D8.B9.A10.B
二.填空题
1.值得去开发其中的问题能否解决
2.技术可行性经济可行性社会可行性
3.风险分析资源分析技术分析
4.需求分析和设计
5.物理系统用图形符号以黑盒子形式描绘系统里面的每个部件
6.技术可行性
7.调查研究分析与综合书写文档需求分析评审
8.需求规格说明书 初步用户使用手册 确认测试计划
9.数据流 加工数据存储 数据源点或终点
10.抽象性 概括性 层次性
三.名词解释
1.可行性研究就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。
其实质是要以较抽象的方式进行一次简化的,压缩了的需求分析和设计过程。
2.技术可行性是最难决断和最关键的问题。
根据客户提出的系统功能、性能及实现系统的各项约束条件,从技术的角度研究系统实现的可行性。
3.需求分析是准确地理解用户的需求并将其转换成需求定义,然后由需求定义转换成形式化的功能规约。
需求分析的困难表现在问题的复杂性、交流的障碍、不完备和不一致性、需求易变性。
4.数据流即数据通过一个系统时的变化方式。
输入数据首先转换成中间数据,然后转换成输出结果数据。
在此期间可以从已有的数据存储(如磁盘文件或内存缓冲区)中引入附加数据。
对数据进行转换是程序中应有的功能或子功能。
两个转换功能之间的数据传递就确定了功能间的接口。
5.数据流图是用来表示系统的功能的工具,它表示系统的逻辑模型,描述了数据流在系统中流动的情况它是一种功能模型。
四.简答题
1.可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。
也就是说可行性研究的目的不是解决问题,而是确定问题是否值得去解,研究在当前的具体条件下,开发新系统是否具备必要的资源和其他条件。
可行性研究是要进一次压缩简化了的系统分析和设计的过程,也就是说在较高层次上以较抽象的方式进行设计的过程。
在明确了问题定义之后,分析员应该给出系统的逻辑模型,然后从系统逻辑模型出发,寻找可供选择的解法。
研究每一种解法的可行性。
一般说来,应从经济可行性、技术可行性、运行可行性、法律可行性和开发方案等方面研究可行性。
2.经济可行性进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。
社会可行性要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。
3.包括如下步骤:
复查系统规模和目标;研究目前正在使用的系统;导出新系统的高层逻辑模型;重新定义问题;导出和评价供选择的方案;推荐一个方案并说明理由;推荐行动方案;书写计划任务书;提交审查。
4.本项目的开发价值;推荐这个方案的理由;制定实现进度表,这个进度表不需要也不可能很详细,通常只需要估计生存周期每个阶段的工作量。
5.一个可行性研究报告的主要内容如下:
(1)引言:
说明编写本文档的目的;项目的名称、背景;本文档用到的专门术语和参考资料。
(2)可行性研究前提:
可行性研究前提。
说明开发项目的功能、性能和基本要求;达到的目标;各种限制条件;可行性研究方法和决定可行性的主要因素。
(3)对现有系统的分析:
说明现有系统的处理流程和数据流程;工作负荷;各项费用支出;所需要各类专业技术人员的数量;所需要各种设备;现有系统存在什么问题。
(4)所建议系统的技术可行性分析:
所建议系统的简要说明;处理流程和数据流程;与现有的系统比较的优越性;采用所建议系统对用户的影响;对各种设备、现有软件、开发环境、运行环境的影响;对经费支出的影响;对技术可行性的评价。
(5)所建议系统的经济可行性分析:
说明所建议系统的各种支出,各种效益;收益投资比;投资回收周期。
(6)社会因素可行性分析:
说明法律因素,对合同责任、侵犯专利权、侵犯版权等问题的分析;说明用户使用可行性,是否满足用户行政管理、工作制度、人员素质的要求。
(7)其他可供选择方案:
逐一说明其他可供选择的方案,并说明未被推荐的理由。
(8)结论意见:
说明项目是否能开发;还需要什么条件才能开发;对项目目标有什么变动等。
6.系统流程图的作用可以总结如下:
(1)制作系统流程图的过程是系统分析员全面了解系统业务处理概况的过程,它是系统分析员作进一步分析的依据。
(2)系统流程图是系统分析员、管理人员、业务操作人员相互交流的工具。
(3)系统分析员可直接在系统流程图上拟出可以实现计算机处理的部分。
(4)可利用系统流程图来分析业务流程的合理性。
7.数据流图是用来表示系统的功能的工具,它表示系统的逻辑模型描述了数据流在系统中流动的情况,它是一种功能模型。
它用来定义系统的功能。
数据流图的作用主要有以下几条:
(1)系统分析员用这种工具可以自顶向下分析系统信息流程。
(2)可在图上画出需要计算机处理的部分。
(3)根据数据存储,进一步做数据分析,向数据库设计过渡。
(4)根据数据流向,定出存取方式。
(5)对应一个处理过程,用相应的语言、判定表等工具表达处理方法。
箭头表示数据流、圆圈表示加工、双横线表示存储、方框表示数据的原点和终点。
8.数据字典是用来描述数据流图中数据流、加工、存储的详细信息的。
数据字典最重要的用途是作为分析阶段的工具。
在数据字典中建立的一组严密一致的定义很有助于改进分析员和用户之间的通信,因此将消除许多可能的误解。
对数据的这一系列严密一致的定义也有助于改进在不同的开发人员或不同的开发小组之间的通信。
如果要求所有开发人员都根据公共的数据字典描述数据和设计模块,则能避免许多麻烦的接口问题。
9.需求分析必须能够表达和理解问题的数据域和功能域;按自顶向下、逐层分解问题;要给出系统的逻辑视图和物理视图。
五.应用题
1.
2.
第3章概要设计
参考答案
一.选择题
1.C2.A3.B4.A5.C6.C7.A8.C9.B
二.填空题
1.接口功能逻辑状态
2.强差
3.高内聚低耦合独立性
4.变换事务变换
5.高低高
6.受该模块内一个判定影响的所有模块
7.数据控制信息
8.公共耦合
9.输入变换(或称处理)输出
10.控制的层次层数一层中最大的模块个数
三.名词解释
1.模块:
模块在程序中是数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素,如高级语言中的过程、函数、子程序等。
2.信息隐蔽:
信息隐蔽指在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说,是不能访问的。
3.模块独立性:
模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。
4.耦合性:
也称块间联系。
指软件系统结构中各模块间相互联系紧密程度的一种度量。
5.内聚性:
又称块内联系。
指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。
四.简答题
1.衡量模块的独立性的标准是两个定性的度量标准:
耦合性和内聚性。
(1)耦合性。
也称块间联系。
指软件系统结构中各模块间相互联系紧密程度的一种度量。
模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。
模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。
(2)内聚性。
又称块内联系。
指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。
一个模块内各元素(语句之间、程序段之间)联系得越紧密,则它的内聚性就越高。
耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。
2.软件结构是软件系统的模块层次结构,反映了整个系统的功能实现,即将来程序的控制层次体系。
对于一个问题,可用不同的软件结构来解决,不同的设计方法和不同的划分与组织,得出不同的软件结构。
软件结构往往用树状或网状结构的图形来表示。
软件工程中,一般采用结构图(StructureChart,简称SC)的工具来表示软件结构。
结构图的主要内容有:
模块、模块的控制关系、模块间的信息传递和表示模块有选择地调用或循环调用的两个附加符号。
3.面向数据流的设计方法也称结构化设计方法(SD),它与结构化分析(SA)相衔接,它按一定的设计策略将数据流图转换成软件的模块层次结构。
有两种设计策略:
(1)事务型分析设计:
一个大的复杂的系统分解成较小的,相对简单的子系统,这些子系统彼此之间相对独立一些,而高层数据流图的数据处理往往反映这些子系统的功能,有平行分别处理的特点,因此,高层数据流图的转换通常可作为事务型处理,把一个加工逻辑看成是一类特定的事务,把它们分别映射成一个模块,最高层模块为系统模块,通过对输入初始命令的判断决定调用哪个模块。
这种事务型分析设计的策略也用于较低层数据流图向软件结构图的转换。
(2)变换型分析设计:
变换型数据流图具有主要的处理功能及实现这项处理功能所需要的输入数据流和经过处理后产生的输出数据流。
确定了第三部分,高层模块就可分解出三个从属于它的新模块,分别执行输入、变换、输出功能。
变换分析设计一般用于对较低层数据流图向软件结构图的转换。
软件结构图设计好后,还需要为每个模块提供必要的说明,如功能说明、接口说明等,IPO图是常采用的图形工具,软件结构图和各个模块的IPO图结合在一起才能较完整地描绘软件系统在总体上对需求功能的实现。
4.通常采取以下措施来降低模块间的耦合度:
(1)在耦合方式上降低模块间接口的复杂性。
模块间接口的复杂性包括模块的接口方式、接口信息的结构和数量。
接口方式不采用直接引用(内容耦合),而采用调用方式(如过程语句调用方式)。
接口信息通过参数传递且传递信息的结构尽量简单,不用复杂参数结构(如过程、指针等类型参数),参数的个数也不宜太多,如果很多,可考虑模块的功能是否庞大复杂。
(2)在传递信息类型上尽量使用数据耦合,避免控制耦合,慎用或有控制地使用公共耦合。
这只是原则,耦合类型的选择要根据实际情况综合考虑。
5.为了实现目标系统,最终必须设计出组成这个系统的所有程序和数据库(文件),对于程序,则首先进行结构设计,具体为:
(1)采用某种设计方法,将一个复杂的系统按功能划分成模块。
(2)确定每个模块的功能。
(3)确定模块之间的调用关系。
(4)确定模块之间的接口,即模块之间传递的信息。
(5)评价模块结构的质量。
第4章详细设计
参考答案
一.选择题
1.D2.C3.A4.B5.C6.C7.B8.A9.B10.C
二.填空题
1.图形工具表格工具语言工具
2.数据结构
3.详细设计说明书
4.ProblemAnalysisDiagram
5.程序框图算法
6.结构化程序设计
7.PAD自上而下从左到右
8.数据结构
9.程序设计语言应执行的功能
10.具体设计过程过程设计
三.简答题
1.以数据结构为基础导出程序结构的这一设计过程称为JSP方法,它是一种面向数据结构的开发方法。
JSP方法的主导思想是被解问题的程序结构往往与数据结构相对应,当问题的数据结构具有选择性质时,程序一般用选择结构来表示;若数据结构具有重复性质时,则用循环程序来处理;对分层的数据结构总是用分层的程序处理。
对于数据处理系统,程序的功能是将输入数据变换成输出数据且程序结构对数据结构有一定的依赖性,因此Jackson设计了以输入数据、输出数据结构为基础映射成程序结构的规则。
但在许多情况下,输入数据和输出数据之间没有结构上的对应关系,JSP方法把这种情况称为结构冲突。
解决冲突的方法是引入中间数据结构,即在输入数据和输出数据结构之间以中间数据结构发生关联,然后建立多个程序结构。
对于解决规模不大的、输入输出数据结构清晰且结构不互相冲突的问题,使用JSP方法较为简便。
该方法可与SD方法结合起来,用SD方法设计总的软件结构,用JSP方法设计某些模块。
2.流程图的优点是直观清晰、易于使用,是开发者普遍采用的工具,但是它有严重的缺点:
(1)可以随心所欲地控制流程线的流向,容易造成非结构化的程序结构。
编码时势必不加限制地使用GOTO语言,导致基本控制块多入口多出口,这样会使软件质量受到影响,与程序设计的原则相违背。
(2)流程图不易反映逐步求精的过程,往往反映的是最后的结果。
(3)不易表示数据结构。
为了克服流程图的最大缺陷,要求流程图都应由三种基本控制结构顺序组合和完整嵌套而成,不能有相互交叉的情况,这样的流程图是结构化的流程图。
3.结构化程序设计方法的基本要点有如下三点:
(1)采用自顶向下、逐步求精的程序设计方法,在需求分析、概要设计中,都采用了自顶向下、逐层细化的方法。
在详细设计中,虽然处于“具体”设计阶段,但在设计某个模块内部处理过程中,可以逐步求精,降低处理细节的复杂程度。
(2)使用三种基本控制结构构造程序,任何程序都可由顺序、选择、重复三种基本控制结构构造。
这三种基本结构的共同点是单入口、单出口。
不但能有效地限制使用GOTO语句,还创立了新的程序设计思想、方法和风格,同时为自顶向下,逐步求精的设计方法提供了具体的实施手段。
(3)主程序员组的组织形式。
指程序开发的人员组织方式应采用由一个主程序员(负责全部技术活动)、一个后备程序员(协调、支持主程序员)和一个程序管理员(负责事务性工作,如收集、记录数据、文档资料管理等)三人为核心,再加上一些专家(如通信专家、数据库专家)和其他技术人员组成小组。
这种组织形式突出了主程序员的领导,设计责任集中在少数人身上,有利于提高软件质量,并且能有效地提高软件生产率。
结构化程序设计方法是综合应用这些手段来构造高质量程序的思想方法。
4.结构化程序设计方法的要点是使用三种基本控制结构自顶向下、逐步求精地构造算法或程序。
该方法在设计处理过程时,应注意以下几点:
(1)首先要考虑程序完成的主要功能的步骤,细节问题(如出错处理、例外情况等)放在求精的步骤中考虑。
(2)要考虑判断处理和重复处理的问题,特别是判断的条件、重复开始和终止的条件,把这些条件写在算法中,可借助判定表把判定的条件及动作整理出来,不至于有漏掉及冗余的情况。
(3)要考虑数据对程序的影响,外部数据一般在数据字典中有定义,而模块内部定义的数据,不会在数据字典中出现,应列出表来,有利于算法的理解。
(4)三种基本控制结构只能按顺序出现或完整嵌套,不能出现相互交叉的情况,否则算法就是非结构化的,不易于理解与修改。
5.Jackson方法(JSP)设计步骤如下:
(1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson结构图表示这些数据结构。
(2)找出输入数据和输出数据结构中有对应关系的数据单元。
“对应关系”指这些数据单元在数据内容上、数量上和顺序上有直接的因果关系,对于重复的数据单元,重复的次序和次数都相同才有对应关系。
(3)按一定的规则由输入、输出的数据结构导出程序结构。
(4)列出基本操作与条件,并把它们分配到程序结构图的适当位置。
(5)用伪码写出程序。
6.PDL一般具有以下特点:
(1)所有关键字都有固定语法,以便提供结构化控制结构、数据说明和模块的特征。
(2)描述处理过程的说明性语言没有严格的语法。
(3)具有模块说明机制,包括简单的与复杂的数据说明。
(4)具有模块定义和调用机制,因此开发人员应根据系统编程所用的语种,说明PDL表示的有关程序结构。
PDL的总体结构与一般程序完全不同。
外语法同相应程序语言一致。
内语法使用自然语言,易编写,易理解,也容易转换成源程序。
除此以外,还有以下优点:
(1)提供的机制比图形全面,为保证详细设计与编码的质量创造了有利条件。
(2)可作为注释嵌入在源程序中一起作为程序的文档,并可同高级程序设计语言一样进行编辑、修改,有利于软件的维护。
(3)会自动生成程序代码,提高软件生产率。
目前已有PDL多种版本(如PDL/Pascal、PDL/C、PDL/Ada等),为自动生成相应代码提供了便利条件。
7.PAD图的特点如下:
(1)清晰地反映了程序的层次结构。
图中的竖线为程序的层次线,最左竖线是程序的主线,其后一层一层展开,层次关系一目了然。
(2)支持逐步求精的设计方法,左边层次中的内容可以抽象,然后由左到右逐步细化。
(3)易读易写,使用方便。
(4)支持结构化的程序设计原理。
(5)可自动生成程序。
第5章面向对象的方法
参考答案
一.选择题
1.C2.C3.B4.B5.A6.C7.C
二.填空题
1.对象动态功能对象
2.数据流图
3传递消息
4.对象
5.一个父类
6.超类子类
7.操作对象
8特殊类一般类
三.简答题
1.在设计类时需要遵循的方针是:
●信息隐蔽:
通过信息隐蔽可保护类的存储表示不被其他类的实例直接存取。
●消息限制:
该类实例的用户应当只能使用界面提供的操作。
●狭窄界面:
只有对其他类的实例是必要的操作才放到界面上。
●强内聚:
模块内部各个部分之间应有较强的关系,它们不能分别标识。
●弱耦合:
一个单独模块应尽量不依赖于其他模块。
●显式信息传递:
两个类之间的交互应当仅涉及显式信息传递。
●派生类当做派生类型:
每个派生类应该当做基类的特殊化来开发,而基类所具有的公共界面成为派生类的共有界面的一个子集。
●抽象类:
某些语言提供了一个类,用它作为继承结构的开始点,所有用户定义的类都直接或间接以这个类为基类。
为了在类的设计中做到抽象、信息隐蔽和模块化:
●以类作为系统的基本模块单元,通过一般化―特殊化关系和整体―部分关系,搭建整个系统的类层次结构,实现数据抽象和过程抽象;
●将数据和相关的操作封装在类内部,建立共有、私有和子类型等存取级别,将数据表示定义成为类的私有成员,实现信息隐蔽。
●通过建立类属性(类模板),将某些有可复用要求的类设计成在数据类型上通用的可复用的软件构件,这样有助于实现模块化。
2.答:
这个模型有5层结构,又被划分成了4个组成部分:
问题论域、用户界面、任务管理和数据管理。
问题论域部分的职责是:
组合所有的论域中定义的类,为应用设计适当的类层次,为适应语言要求简化继承层次,细化设计以改善性能,开发与
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 习题 答案