软件工程导论课后习题解答
———————————————————————————————— 作者: ———————————————————————————————— 日期:
1
第一章
1-1 什么是软件危机?
答:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 1-3 什么是软件工程?
答:是指导计算机软件开发和维护的一门工程学科。
1-4 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。 答:目前使用得最广泛的软件工程方法学有2种: 传统方法学:也称为生命周期方法学或结构化范型。
优点:把软件生命周期划分成若干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。
缺点:当软件规模庞大时,或者对软件的需求是模糊的或会随着时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。
面向对象方法学:
优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。
1-5、根据历史数据可以做出如下的假设 :
对计算机存储容量的需求大致按下面公式描述的趋势逐年增加: M = 4080 e0.28(Y-1960)
存储器的价格按下面公式描述的趋势逐年下降: P1 = 0.3×0.72Y-1974(美分/位)
如果计算机字长为16位,则存储器价格下降的趋势为: P2 = 0.048×0.72Y-1974(美元/字)
在上列公式中Y代表年份,M是存储容量(字数),P1和P2代表价格。 基于上述假设可以比较计算机硬件和软件成本的变化趋势。要求计算:
(1) 在1985年对计算机存储容量的需求估计是多少?如果字长为16位,这个存储器的价格是多少?
(2) 假设在1985年一名程序员每天可开发出10条指令,程序员的平均工资是每月4000美元。如果一条指令为一个字长,计算使存储器装满程序所需用
1
的成本。
(3) 假设在1995年存储器字长为32位,一名程序员每天可开发出30条指令,程序员的月平均工资为6000美元,重复(1)、(2)题。
(1)在1985年对计算机存储容量的需求,估计是 M = 4080 e0.28(1985-1960)= 4080 e7=4474263(字) 如果字长为16位,则这个存储器的价格是
P = 0.048 × 0.721995-1974× 73577679 = 5789(美元)
(2)如果一条指令的长度为一个字,则使存储器装满程序共需4474263条指令。
在1985年一名程序员每天可开发出10条指令,如果每月的20个工作日,则每人每月可开发出10*20条指令。
为了开发4474263条指令以装满存储器,需要的工作量是: 4474263 / 200 ≈ 22371(月)
程序员的月平均工资是4000美元,开发出4474263条指令的成本是 22371 * 4000 = 89484000(美元) (3)在1995年对存储容量的需求估计为:
M = 4080 e0.28(1995-1960) = 73577679 (字)=4080e9.8 如果字长为32位,则这个存储器的价格是:
P = 0.003 × 32 × 0.721995-1974× 73577679 = 7127(美元) 如果一条指令为一个字长,则为使存储器装满程序共需73577679条指令。 在1995年一名程序员每天可开发30条指令,每月可开发出600条指令,为了开发出可装满整个存储器的程序,需要的工作量为
73577679 ? 600 = 122629(人月) 开发上述程序的成本为:
122629 × 6000 ≈ 735776790(美元)
1-6 什么是软件过程?它与软件工程方法学有何关系? 答:
软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
1
软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型
1-7 什么是软件生命周期模型,试比较瀑布模型,快速原型模型,增量模型,和螺旋模型的优缺点,说明每种模型的适用范围。
答:软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。
瀑布模型的优点:1.可强迫开发人员采用规范的方法;2.严格规定了每个阶段必须提交的文档;3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
瀑布模型的缺点:1.在软件开发初期,指明用户全部需求是困难的;2.需求确定后,经过一段时间才得到软件最初版本;3.完全依赖规格说明,导致不能满足用户需求。
适用中小型项目。
快速原型模型的优点:1满足用户需求程度高;2用户的参与面广;3返工现象少。
不适用大型软件的开发 适用于小型项目。
增量模型的优点:1短期内可以交付满足部分用户需求的功能产品;2逐步增加功能可以让用户去适应新产品;3开放式的软件可维护性比较好;4开始第一构件前,已经完成需求说明。
增量模型的缺点:1对现有产品功能造成破坏;2意义上的矛盾 适用于中型软件的开发
螺旋模型的优点:1集成了瀑布模型、快速原型模型、增量模型的优点;2支持用户需求动态变化;3需求分析与软件实现紧密联系相互依赖;4原型作为刑式的可执行的需求规格说明,即利用用户和开发人员共同理解,又可作为后续开发的基础;5为用户参与决策提供方便;6提高目标软件的适应能力;7降低风险;8在大型软件开发过程中充分发挥优势。
螺旋模型的缺点:1迭代次数影响开发成本,延迟提价时间;2找不到关键改进点,人才、物力、财力时间引起无谓消耗;3成于风险分析,败于风险分析。
1