您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程课后参考答案
第一章课后参考答案1.什么是软件危机?它们有哪些典型表现?为什么会出现软件危机?“软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。它们有以下表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。出现软件危机的主要原因(1)与软件本身的特点有关(2)与软件开发和维护过程中使用的方法不正确有关2.假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”时在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。3.什么是软件工程?它有哪些本质特征?怎么用软件工程消除软件危机?软件工程是指导知道计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。本质特征:(1)软件工程关注于大型软件的构造(2)软件工程的中心课题是控制复杂性(3)软件经常变化(4)开发软件的效率非常重要(5)和谐地合作是开发软件的关键(6)软件必须有效支持它的用户(7)在软件工程领域通常由一种文化背景的人替代具有另一种文化背景的人创造产品消除软件危机的原理:(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实行严格的产品控制(4)采用现代程序设计技术(5)结果应能清楚地审查(6)开发小组的人员应该少而精(7)承认不断改进软件工程实践的必要性5.根据历史数据可以做出如下的假设:对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:M=4080e0.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美元。如果一条指令为一个字长,计算使存储器装满程序所需用的成本。(3)假设在1995年存储器字长为32位,一名程序员每天可开发出30条指令,程序员的月平均工资为6000美元,重复(1)、(2)题。6什么是软件过程?它与软件工程方法学有何关系?软件过程是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型。软件过程是软件工程方法学的3个重要组成部分之一。7.什么是软件生命周期模型?试比较瀑布模型、快速模型、增量模型和螺旋模型的优缺点,说明每种模型的适用范围。通俗的说,简洁地描述软件过程的模型叫做软件生命周期模型,生命周期模型规定了把生命周期花费成哪些阶段及各个阶段执行的顺序。瀑布模型的优点:有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。瀑布模型的缺点:(1)开发过程一般不能逆转,否则代价太大;(2)实际的项目开发很难严格按该模型进行;(3)客户往往很难清楚地给出所有的需求,而该模型却要求如此。(4)软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心。瀑布模型的使用范围:(1)用户的需求非常清楚全面,且在开发过程中没有或很少变化;(2)开发人员对软件的应用领域很熟悉;(3)用户的使用环境非常稳定;(4)开发工作对用户参与的要求很低。快速原型模型的优点:(1)可以得到比较良好的需求定义,容易适应需求的变化;(2)有利于开发与培训的同步;(3)开发费用低、开发周期短且对用户更友好。快速原型模型的缺点:(1)客户与开发者对原型理解不同;(2)准确的原型设计比较困难;(3)不利于开发人员的创新。快速原型模型的使用范围:(1)对所开发的领域比较熟悉而且有快速的原型开发工具;(2)项目招投标时,可以以原型模型作为软件的开发模型;(3)进行产品移植或升级时,或对已有产品原型进行客户化工作时,原型模型是非常适合的。增量模型的优点:(1)采用增量模型的优点是人员分配灵活,刚开始不用投入大量人力资源;(2)如果核心产品很受欢迎,则可增加人力实现下一个增量;(3)可先发布部分功能给客户,对客户起到镇静剂的作用。增量模型的缺点:(1)并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构;(2)增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。增量模型的使用范围:(1)进行已有产品升级或新版本开发,增量模型是非常适合的;(2)对完成期限严格要求的产品,可以使用增量模型;(3)对所开发的领域比较熟悉而且已有原型系统,增量模型也是非常适合的。螺旋模型的优点:(1)设计上的灵活性,可以在项目的各个阶段进行变更;(2)以小的分段来构建大型系统,使成本计算变得简单容易;(3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性;(4)随着项目推进,客户始终掌握项目的最新信息,从而他或她能够和管理层有效地交互。螺旋模型的缺点:(1)采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失;(2)过多的迭代次数会增加开发成本,延迟提交时间。螺旋模型的使用范围:螺旋模型只适合于大规模的软件项目。8.为什么说喷泉模型较好地体现了面向对象软件开发过程无缝和迭代的特性?由于在整个开发过程中都使用统一的软件概念“对象”,所有其他概念(例如功能、关系、事件等)都是围绕对象组成的,目的是保证分析工作中得到的信息不会丢失或改变,因此,对生命周期各个阶段的区分自然也就不重要了,不明显了。分析阶段的得到的对象模型也适用于设计阶段和实现阶段。由于各阶段都使用统一的概念和表示符号,因此,整个开发过程都是吻合一致的,或者说是“无缝”连接的,这自然也就很容易实现各个开发步骤的多次反复迭代,达到认识的逐步深化。所以说喷泉模型较好的体现了面向对象软件开发过程无缝和迭代的特性。第二章课后习题参考答案1、在软件开发的早期阶段为什么要进行可行性研究?应从哪些方面研究目标系统的可行性?(1)开发一个软件时,需要判断原定的系统模型和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度,如果做不到这些,那么花费在这些工程上的任何时间、人力、软硬件资源和经费,都是无谓的浪费。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。(2)一般说来,至少应该从以下三个方面研究每种解法的可行性:a.技术可行性b.经济可行性c.操作可行性。2、为方便储户,某银行拟开发计算机储蓄系统。储户填写的存款单或取款单由业务员键入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印出存款单给储户;如果是取款,系统计算利息并打印出利息清单给储户。写出问题定义病画出此系统的数据流图。问题定义如下:如果是存款,储户填写存款单,然后交给业务员键入系统,同时系统还要记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、利率等信息,完成后由系统打印存款单给储户。如果是取款,储户填写取款单,然后交给业务员,业务员把取款金额输入系统并要求储户输入密码以确认身份,核对密码正确无误后系统计算利息并印出利息清单给储户。为了满足储户的需求,该系统需要迅速的对用户的要求做出反馈,要对用户输入的信息作出最快的处理,所以就需要很大的主存容量,以及强大的数据库支持。由于是所面向的用户是广泛的储蓄用户群,所以需要系统强大的安全性能支持。系统的分层数据流图如下:1、顶层数据流图储户银行系统储户存款单存单取款单利息清单业务员存款利率2、中层数据流图存款1取款2存款单存单取款单利息清单D1储户存款文件利率设置3存款利率D2存款利率文件3、底层数据流图存款单检查1.1输出存单1.3存款单存单D1.1储户帐户文件存入款户1.2存款信息D1.2事务流水帐D2存款利率文件密码校验2.1D1.1帐户文件取款处理2.2取款单取款信息打印利息清单2.3D1.2事务文件利息清单D2存款利率文件3、某航空公司拟开发一个机票预定系统。旅行社把预订机票的旅客信息(姓名、性别…等)输入进该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统核对无误即印出机票给旅客。写出问题定义病画出此系统的数据流图。问题定义:某航空公司,售票工作人员每天手工处理旅客预订票、安排航班、取票和收款业务,工作量较大,需要工作人员多等,总之人工不易管理,手续繁琐。数据流图如下:1、顶层数据流图飞机机票预订系统旅行社旅客订机票账单、取票通知单机票账单、取票单旅行社航班信息2、中间层数据流图预订机票1旅客取票2机票文件订票单账单、取票通知单机票设置航班3航班信息航班信息账单、取票单账单取票通知单3、底层数据流图安排航班1.2机票文件旅客信息账单有效订票单录入预定信息1.1取票通知单航班信息打印账单和取票通知单1.3取票单据核对取票凭证3.1账单、取票通知单取票通知取票信息交款3.2账单打印机票3.3机票交款信息机票文件4、住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,请分层次地画出描述本系统功能的数据流图。问题定义:本题要开发一个病人监护系统,实现对病人症状的自动监护,形成病人日志记录,减少人力的浪费。在监控过程中,随时接受病人的生理信息(脉搏、体温、血压、心电图),对病人的不正常生理信息(超出医生规定的安全范围的信息)发出警告,并向护士发出警告信息。护士还可以根据需要打印病人的病情报告。符号说明如下:F1-要求报告F2-生理信号F3-日期、时间F4-警告信息F5-安全范围F6-日志P1-接收信号P2-分析信号P3-产生警告P4-定时取样生理信号P5-更新日志P6-产生病情报告D1-患者日志D2-患者安全范围D3-生理信息E1-护士E2-病人E3-时钟方法一:E1护士E3时钟E2病人F1要求报告F2生理信号F3日前、时间E1护士F4警告信息D2患者安全范围D1患者日志F5安全范围F6日志P1接收信号P4定时取样生理信号P5更新日志P3产生警告信息P2分析信号P6产生病情报告F2生理信号危及病人信息定时的生理信号F2生理信号F6日志E1护士E3时钟E2病人P0患者监护系统F1要求报告F2生理信号F3日前、时间E1护士F4警告信息、病情报告D2患者安全范围D1
本文标题:软件工程课后参考答案
链接地址:https://www.777doc.com/doc-3259704 .html