您好,欢迎访问三七文档
1.美国一家公司在1982年计划用FORTRAN语言开发一个在VAX750计算机上运行的应用程序,估计这个程序的长度为10000条FORTRAN指令。如果平均每人每天可以开发出10条FORTRAN指令,请问:(1)开发这个应用程序将用多少人日?(2)假设程序员的月平均工资为4000美元,每月按20个工作日计算,这个软件的成本是多少美元?(3)1982年VAX750计算机硬件价格约为125000美元,在那一年这个软件的成本在总成本中占多大比例?(4)20年后,一台性能远远优于VAX750的微型计算机的价格约为2000美元,这时软件开发生产率已提高到平均每人每天可以开发出40条指令,而程序员的月平均工资也已涨到8000美元。如果在2002年开发上述FORTRAN应用程序,则该软件的成本在总成本中占多大比例?答:(1))(10001010000人日开发这个应用程序大约需用1000个人日。需要指出的是,上述工作量包括问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试等各个开发阶段的工作量,而不仅仅是编写程序所需的工作量。(2)每月平均工作20天,故开发这个软件需要用)(50201000人月每人每月的平均工资为4000美元,因此这个软件的成本大约为50×4000=200000(美元)(3)软件成本与硬件成本之和为计算机系统的总成本。这个软件的成本在总成本中所占的比例为%5.61125000200000200000(4)在2002年开发这个应用程序所需的工作量约为)(5.12204010000人月这个软件的成本大约为12.5×8000=100000(美元)该软件的成本在总成本中所占的比例为%9820001000001000002.根据历史数据可以作出如下的假设。(1)对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:)1960(28.04080YeM(2)存储器的价格按下面公式描述的趋势逐年下降:)/(72.03.019741位美分YP如果计算机字长为16位,则存储器价格下降的趋势为:)/(72.0048.019742字美元YP在上列公式中Y代表年份,M是存储容量(字数),P1和P2代表价格。基于上述假设可以比较计算机硬件和软件成本的变化趋势。(1)在1985年对计算机存储容量的需求估计是多少?如果字长为16位,这个存储器的价格是多少?(2)假设在1985年一名程序员每天可开发出10条指令,程序员的平均工资是每月4000美元。如果一条指令为一个字长,计算使存储器装满程序所需用的成本。(3)假设在1995年存储器字长为32位,一名程序员每天可开发出30条指令,程序员的月平均工资为6000美元,重复(1)(2)题所问。答:(1)在1985年对计算机存储容量的需求,估计是)19601985(28.04080eM)(447426340807字e如果字长为16位,则这个存储器的价格是447426372.0048.019741985P=5789(美元)(2)如果一条指令的长度为一个字,则使存储器装满程序共需4474263条指令。在1985年一名程序员每天可开发出10条指令,如果每月有20个工作日,则每人每月可开发出10×20=200条指令。为了开发出4474263条指令以装满存储器,需要的工作量是)(223712004474263人月程序员的月平均工资是4000美元,开发出4474263条指令的成本为22371×4000=89484000(美元)(3)在1995年对存储容量的需求,估计为)19601995(28.04080eM)(7357767940808.9字e如果字长为32位,则这个存储器的价格是7357767972.032003.019741995P=7127(美元)如果一条指令为一个字长,则为使存储器装满程序共需73577679条指令。在1995年一名程序员每天可开发出30条指令,每月可开发出6000条指令,为了开发出可装满整个存储器的程序,需用的工作量为)(12262960073577679人月开发上述程序的成本为122629×6000=735776790(美元)3.美国某科幻电影中有一个描写计算机软件错误的故事,很富于戏剧性。故事情节如下:由计算机HAL控制的宇宙飞船在飞往木星的旅途中,飞行指挥员鲍曼和HAL之间有一段对话。鲍曼命令道:“HAL,请对备用舱进行故障预报测试。”10秒钟后HAL报告:“一切正常。”但是,地面上的飞行指挥中心在重复做了故障预报测试后,却得出了相反的结论:“鲍曼,我是飞行指挥中心,你的计算机在预报故障时可能犯了错误,我们的两台HAL计算机都得出了和你的计算机相反的结论。”鲍曼用手指敲着控制台说:“HAL,是不是有什么东西干扰了你,以致出了这个差错?”“听着,鲍曼,我知道你很想帮助我,但是我的信息处理是正常的。不信就查看我的记录吧,你会看到它是完全正确的。”“我看过你的服务记录,但是……谁都可能犯错误啊。”“我并不固执己见,但是,我是不可能犯错误的……”“喂,我是飞行指挥中心,我们已经彻底分析了你所遇到的麻烦,我们的两台计算机得出了完全一致的结论。问题出在故障预报系统中,我们确信是程序设计有错误。你必须断开你的计算机并改为地面控制模式,我们才能改正这个错误。”当鲍曼断开计算机时,HAL立即又把自己接了上去。最后,鲍曼只好拆下计算机的存储器,才得以控制他的宇宙飞船。请问:(1)为什么鲍曼拆下存储器就能摆脱计算机的干扰而独自控制宇宙飞船?我们现在遇到的软件问题有这么严重吗?(2)如果不依靠飞行指挥中心,鲍曼怎样才能知道HAL的故障预报有问题?(3)应该怎样设计计算机系统,才能避免出现故事中描写的这类问题?答:(1)计算机通过运行程序来控制宇宙飞船,而程序指令存放在存储器中。拆下存储器之后,计算机因取不来指令而无法运行程序,因此也就无法控制宇宙飞船了。我们现在遇到的软件问题没有这么严重,还没有出现计算机不服从人的命令的情况。(2)除非鲍曼能亲自分析有故障的部件,或者在计算机上还安装有另外一套故障检测系统,否则不依靠飞行指挥中心他很难知道HAL的故障预报有问题。(3)应该把HAL设计成具有若干个储存的问题,供周期性测试之用。通过把应有的测试结果和HAL实际测试结果加以比较的方法,有可能发现HAL的故障预报问题。此外,不论怎样具体设计HAL系统,都应该设置一种人工操作模式,并把人工操作模式设置为最高等级的控制模式,在任何情况下计算机控制都不能取消人工操作命令。4.什么是软件过程?它与软件工程方法学有何关系?答:软件过程是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件过程定义了运用技术方法的顺序、应该交付的文档资料、为保证软件质量和协调软件变化必须采取的管理措施,以及标志完成了相应开发活动的里程碑。软件过程是软件工程方法学的3个重要组成部分之一。5.为什么说分阶段的生命周期模型有助于软件项目管理?答:软件是计算机系统的逻辑部件而不是物理部件,其固有的特点是缺乏可见性,因此,管理和控制软件开发过程相当困难。分阶段的生命周期模型提高了软件项目的可见性。管理者可以把各个阶段任务的完成作为里程碑来对软件开发过程进行管理。把阶段划分得更细就能够更密切地监控软件项目的进展情况。6.什么是里程碑?它应该有哪些特征?答:里程碑是用来说明项目进展情况的事件。通常,把一个开发活动的结束或一项开发任务的完成定义为一个里程碑。里程碑必须与软件开发工作的进展情况密切相关,而且里程碑的完成必须非常明显(也就是说,里程碑应该有很高的可见性)。7.假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的结果应该精确到小数点后4位。一旦实现并测试完之后,该产品将被抛弃。你打算选用哪种软件生命周期模型?请说明你作出选择的理由。答:对这个软件的需求很明确,实现开平方功能的算法也很成熟,因此,既无须通过原型来分析需求也无须用原型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模墟来开发该软件。综上所述,为了开发这个简单的软件,使用大多数人所熟悉的瀑布模型就可以了。8.假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本开发。由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪种软件生命周期模型?为什么?答:对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作,因此,选择生命周期模型时应该着重考虑哪种模型有助于加快产品开发的进度。使用增量模型开发软件时可以并行完成开发工作,因此能够加快开发进度。这个项目是开发该公司已被广泛应用的字处理软件的新版本,从上述事实至少可以得出3点结论:第一,旧版本相当于一个原型,通过收集用户对旧版本的反映,较容易确定对新版本的需求,没必要再专门建立一个原型系统来分析用户的需求;第二,该公司的软件工程师对字处理软件很熟悉,有开发字处理软件的丰富经验,具有采用增量模型开发新版字处理软件所需要的技术水平;第三,该软件受到广大刚户的喜爱,今后很可能还要开发更新的版本,因此,应该把该软件的体系结构设计成开放式的,以利于今后的改进和扩充。综上所述,采用增量模型来完成这个项目比较恰当。一.选择题1.软件工程学的目的应该是解决软件生产的()问题。A.提高软件的开发效率B.使软件生产工程化C.消除软件的生产危机D.加强软件的质量保证[解析]:随着软件生产规模扩大化、设计的体系结构复杂化,软件生产中暴露出许多问题,如软件质量难以保证、生产进度无法控制、可维护性差、生产成本高、需求定义不准确等。因此许多大型软件生产商试图用工程化的方法生产软件,以解决软件危机,从而出现了“软件工程”的概念。所以答案为B。2.在计算机软件开发和维护中所产生的一系列严重的问题通常称为软件危机,这些问题中相对次要的因素是()。A.文档质量B.开发效率C.软件功能D.软件性能[解析]:软件功能是根据软件用户的要求,在软件的需要分析阶段确定的,是软件开发的核心环节。文档质量是保证软件的质量和软件的可维护性、可重用性的重要指标。开发效率是软件开发中的一个重要问题,如果软件的效率比较低,可能导致软件的开发进度滞后,无法按期完成用户的任务,致使软件供应商在激烈的竞争中被淘汰。软件性能主要指软件开发基本完成后,软件的运行效率、稳定性等,软件的性能在很大程度上依赖于软件运行的硬件环境和部分的软件环境,所以相对而言,在软件开发中,它出现的问题的严重程度比较低。所以答案为D。3.软件工程方法学的研究内容包括软件开发技术和软件工程管理两个方面,其期望达到的最终目标是()。A.软件开发工程化B.清除软件危机C.实现软件可重用D.程序设计自动化[解析]:软件工程方法学是根据不同的软件类型,按不同的观点和原则,对软件开发中应遵循的策略、原则、步骤和必须产生的文档资料都做出规定,从而使软件的开发能够进入规范化和工程化的阶段,以克服早期的手工方式生产中的随意性和非规范性做法。所以答案为A。4.软件工程方法学的目的是使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是()。A.硬件环境B.开发人员的素质C.软件开发的环境D.软件开发工具和软件开发的环境[解析]:软件工程方法学得以实施的主要保证是:软件开发中要有良好的软件开发工具和支撑环境,才能支持好的软件开发方法学得到应用,因此方法与工具的结合以及配套的软件和软件开发环境是软件工程方法得以实施的重要保证。所以答案为D。二.填空题1.软件危机是在软件发展第二阶段末期,随着第三代计算的诞生而产生。2.软件生存期若分为三个大的阶段计划阶段、开发阶段、维护阶段。3.瀑布模型是以文档为驱动、适合于软件需求明确的软件项目的模型。4.螺旋模型将开发过程分为几个螺旋周期,在每个螺旋周期内为制定计划、风险分析、开发实施和用户评估四个步骤。三.名词解释1.软件生存周期
本文标题:第1章习题
链接地址:https://www.777doc.com/doc-3882104 .html