《软件工程导论》参考答案整理.docx
《《软件工程导论》参考答案整理.docx》由会员分享,可在线阅读,更多相关《《软件工程导论》参考答案整理.docx(29页珍藏版)》请在冰豆网上搜索。
《软件工程导论》参考答案整理
参考答案(范村长下载的)
第1章
一、选择题
1.D2.C3.B4.D5.B6.A7.D
二、填空题
1.程序文档数据
2.抽象模块化信息隐蔽局部化一致性完备性可验证性
3.问题定义可行性研究需求分析
4.软件生命周期模型顺序性依赖性
5.制定计划风险分析实施工程客户评价
6.结构化分析结构化设计结构化程序设计数据流自顶向下,逐步求精功能的分解与抽象
三、思考题
1.答:
软件产品是一种无形的逻辑产品,是人们脑力劳动的结晶.软件产品只能以程序、数据和文档的形式出现.其存储介质是磁盘、磁带或光盘.通过计算机的执行才能体现出来.与硬件产品的制造不同,软件产品的成本主要花在研制上,而产品的制造实质上是所开发产品的拷贝.软件产品不会像硬件产品一样磨损,但仍然需要维护,而且维护的成本很高.软件产品的开发主要靠脑力劳动,所以产品研制的成本很高,很难像硬件产品那样实现工业化生产.
2.答:
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.概括地说,软件危机包含下述两方面的问题:
如何开发软件,以满足对软件的日益增长的需求;如何维护数量不断膨胀的软件.具体来说,软件危机主要有以下一些典型表现.对软件开发成本和进度的估计常常很不准确.用户对所交付的软件系统不满意的现象时有发生.软件产品的质量往往靠不住.软件常常是不可维护的.软件文档资料通常不完整、不合格.软件的价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升.软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上日益增长的软件需求.
3.答:
软件工程的基本目标是在给定的成本、进度等条件下,开发出满足用户需求的软件产品.简单来说,也就是要成功地建造一个大型软件系统.软件工程的成功主要是要达到以下几个目标:
付出较低的软件开发成本;达到用户所要求的软件功能;取得较好的软件性能;所开发的软件易于移植、可重用性好;需要较低的软件维护费用;能按时完成开发任务,及时交付使用;软件工程面临的主要问题是:
软件费用、软件可靠性、软件维护、软件生产率和软件重用等.
4.答:
软件工程的基本原理主要有以下七条:
用分阶段的生命周期计划严格管理;坚持进行阶段评审;实行严格的产品控制;采用现代程序设计技术;结果应该能清楚地审查;开发小组的人员应该少而精;承认不断改进软件工程实践的必要性.
5.答:
软件工程的原则主要有以下几点:
(1)抽象:
抽象是指抽取事物最基本的特征和行为,忽略与问题无关或关系甚少的其他细节.
(2)模块化:
模块化就是把一个问题划分成若干个较小的、较易解决的模块,每个模块完成一个子功能,将这些模块组装成一个整体即可完成指定的功能.
(3)信息隐蔽:
将模块内部的信息(数据和操作的细节)封装起来,其他模块只能通过该模块对外界提供的接口来访问该模块.
(4)局部化:
在一个物理模块内集中逻辑上相互关联的计算机资源,即按照特定的目的把相互关联的事物放在一起.
(5)一致性:
整个软件系统(包括程序、数据和文档)应能满足以下一些一致特性:
一致的概念、符号和术语;程序内部接口保持一致;软件与硬件环境的接口保持一致:
系统规格说明与系统行为保持一致;用于形式化规格说明的公理系统保持一致.
(6)完备性:
软件系统不丢失任何重要成分完全实现系统所需功能的程度.
(7)可验证性:
软件开发过程中的各个阶段的工作应该具有可验证性,以确保软件系统的正确性.软件系统的自顶向下、逐层分解应遵循使系统易检查、易测试、易评审的原则.
6.答:
软件生命周期是指软件产品从形成概念开始,经过定义、开发、使用和维护,直到最后退役的全过程.软件生命周期理论从时间角度对软件开发和维护的复杂问题进行分解,把漫长的软件生命周期划分为若干个相对独立的阶段,逐步完成每个阶段的任务.
一般来说,软件生命周期包括软件定义、软件开发、软件的使用与维护3个阶段.
软件定义的基本任务是弄清待开发的软件系统要做什么,即软件开发工程必须完成的总目标.
软件开发过程即软件的设计和实现,软件开发过程就是软件开发人员按照需求规格说明的要求,把抽象的系统需求实现到具体的程序代码和相关文档等,并经过严格测试产生最终软件产品的过程.
软件开发结束后,经过用户确认验收,便可安装到特定的用户环境中供用户使用.软件的使用即软件的运行.软件投入实际使用以后的主要任务是确保软件持久满足用户的要求.软件的维护就是为了延长软件的寿命而对软件产品进行修改或对软件需求变化做出响应的过程.
7.答:
根据作用和目的的不同,原型可以分为探索型、实验型和进化型.
(1)探索型主要针对开发目标模糊,用户和开发者对工程都缺乏经验的情况,目的是要弄清对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性.
(2)实验型主要用于大规模开发和实现之前,考核方案是否合适,规格说明是否可靠.
(3)进化型将原型方法的思想扩展到软件开发的全过程,目的是将系统建造得易于变化,在改进原型的过程中满足用户需求的变动,逐步将原型进化成为最终系统.
四、上机操作题
一个完整的软件应该包括程序、文档和数据.其中程序包括源程序代码和所发布的可执行文件.文档包括相关技术文档和用户文档,如可行性研究报告、需求规格说明书、详细设计说明书、工程开发计划、软件测试计划以及用户手册等.有关数据的数据库设计说明书、数据要求说明书等.
第2章(范村长下载的)
一、选择题
1.ABCD2.ABCD3.ABCD4.ABCD5.ACD6.B7.C
二、填空题
1.软件硬件人数据库文档过程
2.工程工程名称使用方开发方对问题的概括定义工程的目标工程的规模
3.技术可行性经济可行性运行可行性法律可行性
4.5%-10%
5.功能分解法数据流法信息造型法面向对象法
三、思考题
1.答:
(1)确定工程的规模和目标.
(2)研究正在运行的系统.
(3)建立新系统的高层逻辑模型.
(4)导出和评价各种方案.
(5)推荐可行的解决方案.
(6)编写可行性研究报告.
2.答:
(1)方案选择.
(2)选择的系统配置.
(3)选择方案的标准.
(4)各子系统的可行性.
(5)成本/效益分析.
(6)技术风险评价.
(7)有关法律问题.
(8)结论意见.
3.答:
成本/效益分析是从经济角度来评价开发一个工程是否可行,是属于经济可行性研究方面的.我们对工程进行成本效益分析,根据分析的成本与效益,两者进行权衡比较.效益有经济效益和社会效益,也称有形效益和无形效益.成本有开发成本和开发成功后的运行成本,对后者的考虑需要考虑系统预期的使用寿命.进行成本估算一般有这些方法:
经验估算法、因素估算法、WBS基础上的全面详细估算.
4.答:
系统评审是对系统规格说明书的评价,对系统分析出来的系统规格说明书是否正确,方案是否可行,存在的风险等等.开发人员和用户必须对其做出判断以确定是否进行该工程,怎样进行.它通常有管理评审和技术评审两部分,分别评价工程的社会性和开发工程的技术力量.
5.答:
基于计算机的系统是由软件、硬件、人、数据库、文档、过程这些系统元素组成,以实现某种方法、过程或借助处理信息进行控制的元素的集合.任一个基于计算机的系统都能够模型化为这样的一个信息交换,即“输入-处理-输出”.
四、上机操作题
统计某软件的Inp、Out、Inq、Maf、Inf值并记录下来,然后分析软件的复杂性,查出对应的系数值,计算出FP值.
第3章(范村长下载的)
一、选择题
1.A2.B3.ABCD4.ABCD5.B6.C7.A8.D
9.B
二、填空题
1.问题识别需求分析制定规格说明书评审
2.获得当前系统的物理模型抽象出当前系统的逻辑模型建立目标系统的逻辑模型
3.数据模型功能模型行为模型
4.数据流数据文件数据项加工
5.软件是做什么的
6.软件系统的功能
三、思考题
1.答:
数据流图有四种基本符号,分别为:
A数据输入的源点和数据输出的汇点,B加工,C数据流,D数据存储文件.四种符号分别有相应的画法.
2.答:
画数据流图的原则其实就是它的步骤,遵循这样的一个原则有助于数据流图的绘画.
首先画系统的输入/输出.将所要画的系统看作一个整体,确定这个整体与外界的联系.分析哪些是从外界获取,哪些是提供给外界的,就分别是输入和输出.
其次,画系统的内部.这是画数据流图的主要部分.一般遵循自顶向下,由外向内的原则.
3.答:
数据流图是结构化分析的基本工具,在需求分析中用它来建立现存/目标系统的数据处理模型.它可以描述系统的分解,即系统由哪些部分组成,各部分的联系,以及数据流的转换加工过程等,是一种很直观的方式.而用于软件设计时,这些处理将是生成最终程序功能模块的基础.
4.答:
数据字典是一种描述工具,它包括对词条的描述、数据结构的描述和加工逻辑说明.数据模型在描述细节、特殊情况等方面有所不足,比如数据流图描述了系统的组成和分解,但并没有说明系统各个成分的含义,所以必须为数据流图中出现的每一个成分给出定义,因此有必要配合文字的数据说明.数据字典就是这种数据说明,两者结合才完整地描述了一个系统.
5.答:
状态图(状态转换图)用来描述行为模型,行为模型也称状态机模型,通过描述系统的状态以及引起状态转换的事件来表示系统的行为.
状态图有事件、状态、行为等基本元素.事件是引起状态转换的控制信息,它发生在某个特定的时刻,引起系统从一个状态转换到另一个状态.
6.答:
需求分析的原则是:
必须能够表达和理解问题的数据域和功能域;按自顶向下、逐层分解的方式对问题进行分解和不断细化;要给出系统的逻辑视图和物理视图.
需求分析的任务是发现、求精、建模和规约目标系统的过程.包括由系统工程师建立并在软件工程计划中细化的软件范围、创建所需数据信息和控制流、操作行为的模型,以及分析可选择的解决方案、并将它们分配到各软件元素中去.
7.答:
软件需求分析中,常用的分析方法有面向数据流图的结构化分析方法(SA)面向数据结构的Jackson方法(JSD)面向对象的分析方法(OOA)用于建立动态模型的状态迁移图或Petri网等.而且通常会建立模型以方便问题的表达和理解,有行为模型、功能模型、数据模型.在这三种模型中分别采用的表达工具有E-R图、数据流图、状态图,同时还有数据字典.
8.答:
结构化分析方法利用抽象模型的概念,对需求的功能自顶向下逐层分解,使复杂的系统分解成足够简单,能够清楚地被理解和表达的若干子系统,便于软件结构设计为止.结构化对问题空间的理解采用分层的方法,逐层分解,由抽象到具体.
9.答:
需求分析是一个包括创建和维持系统需求文档所必需的一切活动的过程,主要步骤包括需求导出和分析、需求描述和文档编写、需求有效性确认这几个通用的高层需求过程活动.
需求导出和分析是软件开发人员和客户,以及系统最终用户一起调查系统应用领域的活动,该活动是一个非常困难的过程.需求描述是对系统开发需求的正式表达,以需求规格说明文档的形式给出.
需求确认是检验需求能否反映客户的意愿.它和分析有很多共性,都要发现需求中的问题.
四、上机操作题
1.
(1)确定该系统的数据成分:
数据源点:
负责入库、出库事务给订货系统的,所以应该是仓库管理员.
数据终点:
采购员,接受每天的订货报表.
数据流:
事务、订货.
数据存储:
订货信息、库存清单.
处理:
事务处理、产生报表.
(2)画出系统模型:
画出系统的数据源点、处理、数据终点,该订货系统的基本模型的数据流图如图A-1所示.
图A-1基本模型的数据流图
(3)求精:
把该系统的基本功能细化,描绘系统的主要功能.有“处理事务”和“产生报表”两大主要功能,如图A-2所示.
图A-2细化的数据流图
(4)进一步求精:
对该系统的主要功能进一步求精,如图A-3所示.
图A-3订货系统的数据流图
2.如图A-4所示.
图A-4订货报表的数据字典
3.如图A-5所示.
图A-5复印机软件的简化状态图
4.如图A-6所示.
图A-6图书管理系统实体-关系图
5.如图A-7所示.
图A-7电话系统的状态转换图
第4章(范村长下载的)
一、选择题
1.B2.B3.C4.B5.A
二、填空题
1.模块间的耦合性模块的内聚性
2.耦合性内聚性
3.功能内聚
4.时间内聚
5.判断调用循环调用
6.变换流事务流
三、思考题
1.答:
模块独立性是指每个模块只完成某一特定的子功能,而与其他模块之间的联系简单.换句话说,如果一个模块只具有某单一的功能,而与其他模块没过多的联系,那么,我们就说该模块具有较高的模块独立性.
2.答:
耦合性是指模块之间相互联系的紧密程度.模块之间的联系越紧密,耦合度就越高,其独立性也就越差.模块间的耦合性可分为如下七种类型:
非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合和内容耦合.
3.答:
内聚性是指模块内部各元素之间联系的紧密程度.模块内部各元素之间的联系越紧密,内聚性就越高,其独立性也就越强.模块的内聚性可分为如下七种类型:
功能内聚、信息内聚、通信内聚、过程内聚、时间内聚、逻辑内聚和巧合内聚.
4.答:
变换流型的数据流图一般由输入、变换(主加工)和输入三部分组成.在输入部分中,系统输入端的数据流称为物理输入,物理输入通过预处理、编辑和格式转换等辅助性加工后,转换成逻辑输入.接着数据流通过逻辑输入进入主加工,从主加工流出的即为逻辑输出.逻辑输出通过预处理、编辑和格式转换等辅助性加工后,转换成物理输出.这样,对数据流图进行划分,从物理输入到逻辑输入部分构成了系统的输入流,从逻辑输出到物理输出部分构成了系统的输出流,而位于它们之间的部分便是变换中心.
5.答:
实现事务流型的数据流图到程序结构图的转换有如下几个基本步骤:
(1)确定事务中心.
(2)将事务流型的数据流图转换为仅有高层模块的结构图.
(3)进一步分解结构图的接收模块和发送模块.
四、上机操作题
1.其对应的程序结构图如图A-8所示.
图A-8变换流型的程序结构图
2.该系统的数据流图如图A-9所示.
图A-9系统数据流图
第5章(范村长下载的)
一、选择题
1.C2.C3.C4.C5.D
二、填空题
1.程序框图加工处理步骤逻辑条件控制流向
2.顺序型选择型先判定(while)型循环后判定(until)型循环多情况(case)型选择
3.二维树型
4.伪码模块算法设计及处理细节
5.面向数据结构
三、思考题
1.答:
在程序的结构化设计中,必须遵守以下几点原则:
(1)程序语言中尽量少用goto语句,这样才使得程序结构更加清晰,便于阅读和查错.
(2)采用单入口和单出口的控制结构,使得程序的动态执行能与其静态结构相一致,从而有利于对程序的理解.而要实现单入口和单出口的控制结构,则须要采用顺序、选择和循环这三种基本控制结构,使得程序结构简单化.
(3)利于自顶向下逐步求精的方法进行程序设计.
2.答:
N-S图具有如下特点:
(1)图形的条理清晰,易于理解.
(2)便于确定全局数据和局部数据的作用域.
(3)有效地限制了随意地使用控制转移,符合了结构化程序设计的原则.
(4)易于表现模块的层次结构及其嵌套关系.
3.答:
PAD图具有如下特点:
(1)对于程序结构的描述更加清晰、直观.
(2)支持自顶向下、逐步求精的设计方法.
(3)描述出来的图形层次结构分明,其中每条纵线代表一层,给人一种很直观的层次感,增强了其可读性.
(4)可采用相关软件工具将PAD图转化为高级语言程序,通过这种自动化的方式,可大大提高了软件的生产率.
4.答:
Jackson方法的核心思想是:
对输入输出的数据结构进行分析,并按照一定的规则来导出程序的结构.
5.答:
对应的PAD图如图A-10所示.
图A-10PAD图
四、上机操作题
其对应的程序流程图如图A-11所示.
图A-11图书管理系统程序流程图
第6章(范村长下载的)
一、选择题
1.CB2.A3.D4.C5.B6.C7.D
二、填空题
1.属性操作数据状态方法行为
2.类对象
3.消息
4.继承
5.对象模型动态模型功能模型
6.主题层结构层服务层属性层
7.模块化信息隐蔽强内聚性
三、思考题
1.答:
面向对象的基本概念主要包含以下几个要点:
(1)面向对象方法认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成.
(2)面向对象方法把所有对象都划分成各种类(Class),每个类都定义了一组数据和一组方法.数据表示的是对象的静态属性,表明对象的状态信息.方法表示对象所能执行的操作,也就是类所能提供的服务.
(3)面向对象方法按照子类(派生类)与父类(基类)的关系,把若干个类组成—个层次结构的系统.
(4)面向对象方法认为对象彼此之间仅能通过传递消息互相联系.对象之间的消息传递机制很好地保证了对象之间的独立性,使开发出来的软件具有更好的可重用性和可维护性.
2.答:
用例的描述通常包括以下几个方面内容:
(1)用例的目标.要知道用例的最终任务是什么,想得到怎样的结果.
(2)用例是怎么启动的.说明哪个角色在什么样的情况下启动执行用例.
(3)参与者和用例之间的消息流,描述参与者与用例之间的消息是如何传送的.这些消息具有不同的种类和作用.
(4)用例的多种执行方案.考察用例中除了主路径外的其他路径,在不同的条件或特殊情况下,用例能依当时条件选择一种合适的执行方案.
(5)用例结束后的系统状态.注意什么情况下用例才能被看成是已经完成了,当用例被看作是完成时要把结果值传给角色.
(6)除上述几个方面以外,其他需要进行描述的内容.
3.答:
主题是在对象和结构的基础上更高一层的抽象,是为了提供面向对象分析结果的可见性.在面向对象分析中,主题是一种指导读者(如管理者、负责人等)和用户研究大型复杂模型的机制.主题有助于分解大型工程以便建立工作小组.主题所提供的机制可控制一个用户必须同时考虑的模型数目,给出面向对象分析模型的总体概貌,从某种意义上说相当于一种视图或面向过程里的模块和子系统.它的一个重要的作用就是为了对总体分析之后的结果便于理解和整体把握.
真实系统中有着大量的类和结构.包含几十个类的系统是中等规模的,大型的系统包含上百个甚至更多的类.这时应该提供好的通信条件以避免分析人员和用户的信息过量.首先通过控制分析人员能见到的层次数目来控制可视性.其次可以对读者进行引导,可以从一个相当高的层次来表示总体模型.开发小型系统时,由于开发模型比较简单,所以无需引入主题.在开发中型以及大型系统时,对象往往较多,其程序复杂度大大增加,所以需引入了主题的概念.
4.答:
(1)Coad和Yourdon的OOA方法主要由五个层次和五个活动组成.
五个层次分别为:
主题层、类&对象层、结构层、属性层和服务层.
五个活动分别为:
标识类&对象、标识结构、确定主题、定义属性和定义服务.
(2)OOA中的五个层次和五个活动贯穿在OOD过程中.OOD主要由四部分活动组成,它们分别为:
设计问题域部件、设计人机交互界面、设计任务管理部件和设计数据管理部件.
5.答:
(1)面向对象分析的测试主要包括以下五个方面的内容:
①对认定的对象的测试.
②对认定的结构的测试.
③对认定的主题的测试.
④对定义的属性和实例关联的测试.
⑤对定义的服务和消息关联的测试.
(2)面向对象设计的测试主要包括以下三方面内容:
①对认定类的测试.
②对构造的类层次结构的测试.
③对类库的支持的测试.
6.答:
面向对象测试用例设计的方法主要有:
传统测试用例设计方法、基于故障的测试方法、基于场景的测试方法、随机测试方法、分割测试方法、由行为模型导出的测试方法.
其中分割测试可以分为:
基于状态的分割测试、基于属性的分割测试和基于功能的分割测试.
四、上机操作题
1.要了解UML的相关资源,首选的是OMG(ObjectManagementGroup)的相关网站.UML由OMG采纳为标准并进行管理,在OMG的网站上提供了各种有用的资源及相关链接.当前市场上基于UML可视化建模的工具很多,如Rational公司的RationalRose,Microsoft的MicrosoftOfficeVisio,SparxSystems的EnterpriseArchitect(EA),SybasePowerDesigner等.
RationalRose是当前应用最广泛的UML建模工具之一.它支持各种模型图,包括用例图、顺序图、协作图、类图、状态图、活动图、构件图和配置图.Rose不直接支持对象图,但可以在类图和协作图中画出对象图.Rose支持双向工程,即正向工程和逆向工程.利用Rose的正向工程和逆向工程,可以使得模型和代码保持一致.Rose可以与Rational公司的其他工具很好地集成,很多第三方开发商也提供支持Rose的产品.同时Rose还支持团队开发.
2.可以首先设计一个表示图形的抽象类,让它包括位置等私有属性,以及改变位置、数据存取、显示图片和隐藏图片等操作;然后在图形类的基础上派生出直线、矩形和圆形等子类,适当加入必要的属性和方法,必要时重载如数据存取等部分方法.当然,还要有一个窗口框架类,设计适当的菜单和鼠标事件等,实现图形的显示或作图等操作.这时窗口类和图形类之间的响应即为所谓消息通信.
3.根据上述描述,选取一种比较熟悉的面向对象语言,具体的程序不难实现.
4.这实际上是电梯的工作过程的一个简化的模型.其状态图如图A-12所示.
图A-12电梯的状态图
5.下面给出打印服务器的顺序图和合作图,如图A-13和图A-14所示.仅供参考.
图A-13打印机服务器的顺序图图A-14打印机服务器的合作图
第7章(范村长下载的)
一、选择题
1.D2.C3.A4.B5.D6.C7.B8.B9.A
二、填空题
1.语法语义语用
2.顺序选择循环
3.性能需求分析
4.简单直接复杂化全局效率局部效率时间效率空间效率程序的执行速度程序占用的存储空间
5.可读性可靠性设计方法数据结构算法
6.冗余程序设计防错程序设计
7.自顶向下逐步求精模块化
三、思考题
1.答:
可以从工程应用领域、技术开发方法、软件运行环境、数据复杂性要求和软件开发人员的知识和技能等因素来考虑选择开发工具.
2.答:
程序设计风格是指一个人编程的特点、习惯、逻辑思路等.培养良好的程序设计风格应该注意源程序的文档化、数据说明、语句构造、输入输出等方面.
3.答:
程序中的注释是程序员与程序读者之间通信的必不可少的手段,用自然语言描述或伪码描述.它说明了程序的功能,特别是维护阶段,对理解程序提供了明确的指导.程序中的注释分为序言性注释和功能性注释.
序言性注释通常放在每个程序模块的开始,简单描述这部分模块的程序标题、功能和目的说明、数据描述、主要算法特征,还有接口说明、模块位置、开发简史等.对理解程序起着引导作用.
功能性注释嵌入到源程序当中,用以说明其后的语句或程序段的功能,即做的是什么工作.如果程序不是太难理解,一般无需解释怎么做,因为程序本身就是最好的说明.书写功能