软件工程导论 第六版 课后习题答案.pdf
《软件工程导论 第六版 课后习题答案.pdf》由会员分享,可在线阅读,更多相关《软件工程导论 第六版 课后习题答案.pdf(30页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第一章第一章一、什么是软件危机它有哪些典型表现为什么会出现软件危机一、什么是软件危机它有哪些典型表现为什么会出现软件危机软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。软件危机的典型表现:软件危机的典型表现:(1)(1)对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进对软件
2、开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。都降低了开发商的信誉,引起用户不满。(2)(2)用户对已完成的软件不满意的现象时有发生。用户对已完成的软件不满意的现象时有发生。(3)(3)软件产品的质量往往是靠不住的。软件产品的质量往往是靠不住的。难以解决的问题。难以解决的问题。(6)(6)软件成本、软件维护费在计
3、算机系统总成本中所占比例逐年上升。软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。(7)(7)开发生产率提高的速度远跟不上计算机应用普及的需求。开发生产率提高的速度远跟不上计算机应用普及的需求。软件危机出现的原因:软件危机出现的原因:(1)(1)来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。(2)(2)软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。(3)(3)供求矛盾
4、将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。二、假设自己是一家软件公司的总工程师,当把图给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要二、假设自己是一家软件公司的总工程师,当把图给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢”应该怎么
5、反驳他码错误造成的,那么,一个人怎么能在设计阶段清除它呢”应该怎么反驳他答:答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,在早期引入变动,涉及的面较少,涉及的面较少,因而代价也比较低;因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更不仅工作量大,而且逻辑上也更复
6、杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。整体构架的错误。三、什么是软件工程它有哪些本质特征怎样用软件工程消除软件危机三、什么是软件工程它有哪些本质特征怎样用软件工程消除软件危机19931993 年年 IEEEIEEE 的定义:软件工程是:的定义:软件工程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把系统的、规范的、可度量的途径应用于软件开发、
7、运行和维护过程,也就是把工程应用于软件;把工程应用于软件;研究中提到的途径。研究中提到的途径。软件工程的本质特征:软件工程的本质特征:(1)(1)软件工程关注于大型程序软件工程关注于大型程序(软件系统软件系统)的构造的构造具具(5)(5)和谐地合作是开发软件的关键和谐地合作是开发软件的关键(6)(6)软件必须有效地支持它的用户软件必须有效地支持它的用户(7)(7)在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作完成一些工作)消除软件危机的途径:消除软件危机的途径:(1)(1)对计算机软件有一个正确的认
8、识对计算机软件有一个正确的认识(软件程序)软件程序)(2)(2)必须充分认识到软件开发不是某种个体劳动的神秘技巧,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、而应该是一种组织良好、管理严密、管理严密、各类人员协同配合、各类人员协同配合、共同完成的工程项目共同完成的工程项目(3)(3)推广使用在实践中总结出来的开发软件的成功技术和方法推广使用在实践中总结出来的开发软件的成功技术和方法(4)(4)开发和使用更好的软件工具开发和使用更好的软件工具四、简述结构化范型和面向对象范型的要点,并分析他们的优缺点。四、简述结构化范型和面向对象范型的要点,并分析他们的优缺点。1.1.
9、传统方法学:也称为生命周期方法学或结构化范型。优点:把软件生命周期划分成基干个阶段,每个阶段的任务相传统方法学:也称为生命周期方法学或结构化范型。优点:把软件生命周期划分成基干个阶段,每个阶段的任务相(2)(2)软件工程的中心课题是分解问题,控制复杂性软件工程的中心课题是分解问题,控制复杂性(3)(3)软件是经常变化的,开发过程中必须考虑软件将来可能的变化软件是经常变化的,开发过程中必须考虑软件将来可能的变化(4)(4)软件常常是不可维护的。软件常常是不可维护的。(5)(5)软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和软件通常没有适当的文档
10、资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和(4)(4)开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。缺点:当软件规模庞大对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。时,或者对
11、软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。2.2.面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。了软件重用。五、五、1-51-5 根据历史数据可以做出如下的假设根据历史数据可以做出如下的假设:对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:M=(Y-1960)M=(Y-1960)存储器的价格按下面公式描述的趋势逐年下降
12、:存储器的价格按下面公式描述的趋势逐年下降:P1=P1=(美分美分/位位)如果计算机字长为如果计算机字长为 1616 位,则存储器价格下降的趋势为:位,则存储器价格下降的趋势为:P2=P2=(美元美元/字字)在上列公式中在上列公式中 Y Y 代表年份,代表年份,M M 是存储容量是存储容量(字数字数),P1P1 和和 P2P2 代表价格。代表价格。基于上述假设可以比较计算机硬件和软件成本的变化趋势。要求计算:基于上述假设可以比较计算机硬件和软件成本的变化趋势。要求计算:(1)(1)在在 19851985 年对计算机存储容量的需求估计是多少如果字长为年对计算机存储容量的需求估计是多少如果字长为
13、1616 位,这个存储器的价格是多少位,这个存储器的价格是多少存储容量需求存储容量需求 M=M=(1985-19601985-1960)=4474263=4474263(字)(字)存储器价格存储器价格 P=*P=*(1985-19741985-1974)*4474263=5789*4474263=5789 美元美元(2)(2)假设在假设在 19851985 年一名程序员每天可开发出年一名程序员每天可开发出 1010 条指令,程序员的平均工资是每月条指令,程序员的平均工资是每月 40004000 美元。如果一条指令为一个美元。如果一条指令为一个字长,计算使存储器装满程序所需用的成本。字长,计算使
14、存储器装满程序所需用的成本。需要工作量需要工作量 4474263/200=223714474263/200=22371(人(人/月)月)(3)(3)假设在假设在 19951995 年存储器字长为年存储器字长为 3232 位,一名程序员每天可开发出位,一名程序员每天可开发出 3030 条指令,程序员的月平均工资为条指令,程序员的月平均工资为 60006000 美元,重美元,重复复(1)(1)、(2)(2)题。题。六、什么是软件过程它与软件工程方法学有何关系六、什么是软件过程它与软件工程方法学有何关系软件过程是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软
15、件过程是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型。软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型。软件过程是软件工程方法学的软件过程是软件工程方法学的 3 3 个重要组成部分之一。个重要组成部分之一。七、什么是软件生命周期模型试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的使用七、什么是软件生命周期模型试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的使用范围。范围。软件
16、生命周期模型是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。软件生命周期模型是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。瀑布模型瀑布模型优点:它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共优点:它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。虽然有不少缺陷但比在软件开发中随意的状态要好得多。同的指导。虽然有不少缺陷但比在软件开发中随意的状态要好得多。缺点:缺点:(1)(1)实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间
17、接的,这很容易由微小实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。的变化而造成大的混乱。(2)(2)经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。(3)(3)客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。后果也可能是灾
18、难性的。快速原型模型快速原型模型优点:使用户能够感受到实际的系统,使开发者能够快速地构造出系统的框架。优点:使用户能够感受到实际的系统,使开发者能够快速地构造出系统的框架。缺点:产品的先天性不足,因为开发者常常需要做实现上的折中,可能采用不合适的操作系统或程序设计语言,以使缺点:产品的先天性不足,因为开发者常常需要做实现上的折中,可能采用不合适的操作系统或程序设计语言,以使原型能够尽快工作。原型能够尽快工作。增量模型增量模型优点:优点:(1)(1)人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一个增量。人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢
19、迎时,可增加人力实现下一个增量。(2)(2)当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发布部分功当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发布部分功能给客户,对客户起到镇静剂的作用。能给客户,对客户起到镇静剂的作用。缺点:缺点:(1)(1)至始至终开发者和客户纠缠在一起,直到完全版本出来。至始至终开发者和客户纠缠在一起,直到完全版本出来。(2)(2)适合于软件需求不明确、设计方案有一定风险的软件项目。适合于软件需求不明确、设计方案有一定风险的软件项目。该模型具有一定的市场。该模型具有一定的市场。螺旋模型
20、螺旋模型优点:对于大型系统及软件的开发,这种模型是一个很好的方法。开发者和客户能够较好地对待和理解每一个演化级优点:对于大型系统及软件的开发,这种模型是一个很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。别上的风险。缺点:缺点:(1)(1)需要相当的风险分析评估的专门技术,且成功依赖于这种技术。需要相当的风险分析评估的专门技术,且成功依赖于这种技术。(2)(2)很明显一个大的没有被发现的风险问题,将会导致问题的发生,可能导致演化很明显一个大的没有被发现的风险问题,将会导致问题的发生,可能导致演化的方法失去控制。的方法失去控制。(3)(3)这种模型相对比较新,应用不广泛,其功
21、效需要进一步的验证。这种模型相对比较新,应用不广泛,其功效需要进一步的验证。该模型适合于大型软件的开发该模型适合于大型软件的开发八、为什么说喷泉模型较好的体现了面向对象软件开发过程无缝和迭代的特性八、为什么说喷泉模型较好的体现了面向对象软件开发过程无缝和迭代的特性因为使用面向对象方法学开发软件时,因为使用面向对象方法学开发软件时,各个阶段都使用统一的概念和表示符号,各个阶段都使用统一的概念和表示符号,因此,因此,整个开发过程都是吻合一致的,整个开发过程都是吻合一致的,或者说是无缝连接的,这自然就很容易实现各个开发步骤的反复多次迭代,达到认识的逐步深化,而喷泉模型则很好或者说是无缝连接的,这自然
22、就很容易实现各个开发步骤的反复多次迭代,达到认识的逐步深化,而喷泉模型则很好的体现了面向对象软件开发过程迭代和无缝的特性。的体现了面向对象软件开发过程迭代和无缝的特性。九、试讨论九、试讨论 RationalRational 统一过程的优缺点。统一过程的优缺点。优点优点:提高了团队生产力,在迭代的开发过程、需求管理、基于组建的体系结构、可视化软件建模、验证软件质量及提高了团队生产力,在迭代的开发过程、需求管理、基于组建的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面、针对所有关键的开发活动为每个开发成员提供了必要的准则、模版和工具指导,并确保全体成控制软件变更等方面、针对所有关键的开
23、发活动为每个开发成员提供了必要的准则、模版和工具指导,并确保全体成员共享相同的知识基础。它建立了简洁和清晰的过程结构,为开发过程提供较大的通用性。员共享相同的知识基础。它建立了简洁和清晰的过程结构,为开发过程提供较大的通用性。缺点:缺点:RUPRUP 只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容,此只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容,此外,他没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性。外,他没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重
24、用的可能性。十十RationalRational 统一过程主要适用于何种项目统一过程主要适用于何种项目大型的需求不断变化的复杂软件系统项目大型的需求不断变化的复杂软件系统项目十一十一.说明敏捷过程的适用范围说明敏捷过程的适用范围适用于商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束适用于商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束十二十二.说明微软过程的适用范围说明微软过程的适用范围适用于商业环境下具有有限资源和有限开发时间约束的项目的软件过程模式适用于商业环境下具有有限资源和有限开发时间约束的项目的软件过程模式第二章第二章1.1.在软件开发的早期阶段为什么要进行可行性
25、研究应该从哪些方面研究目标系统的可行性在软件开发的早期阶段为什么要进行可行性研究应该从哪些方面研究目标系统的可行性答:答:(1 1)开发一个软件时,需要判断原定的系统模型和目标是否现实,系统完成后所能带来的效益是否大到值得投资)开发一个软件时,需要判断原定的系统模型和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度,如果做不到这些,那么花费在这些工程上的任何时间、人力、软硬件资源和经费,都是无谓的开发这个系统的程度,如果做不到这些,那么花费在这些工程上的任何时间、人力、软硬件资源和经费,都是无谓的浪费。可行性研究的实质是要进行一次大大压缩简化了的系统分析和设计过程,就是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程导论 第六版 课后习题答案 软件工程 导论 第六 课后 习题 答案
限制150内