计算机软件工程第一章习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.计算机软件具有哪些共同特点?它们和硬件的主要区别有哪些?
(1)软件是一种逻辑实体,而不是具体的物理实体。因此,它具有抽象性。
(2)软件的生产与硬件不同,软件是由开发或工程化而形成的,它没有明显的制造过程。对软件的质量控制,必须立足于软件开发方面。软件成为产品之后,其制造只是简单的复制而已。
(3)任何机械、电子设备在运行和使用过程中,其失效率大致遵循如图1-6所示的U型曲线(即浴盆曲线)。软件的情况与此不同,它不存在磨损和老化问题。然而,它存在退化问题,设计人员必须多次修改(维护)软件。图1-7给出了软件故障率的理想曲线,图1-8给出了实际的软件故障率曲线。
故
障
率
时间
0t
图1-6 硬件的故障率曲线示意图
图1-7 软件的理想故障曲线
故
障
率
0时间t
理想曲线
实际曲线
由于负作用造成的
故障率提高
图1-8 软件的实际故障率曲线
(4) 软件的开发和运行往往受到计算机系统的限制,对计算机系统有着不同程度的依赖性。为了解除这种依赖性,在软件开发中提出了软件移植的问题。
(5) 迄今为止,虽然有许多软件工具能够帮助我们自动生成一些软件代码、结构和框架,
但是总体来说,软件的开发尚未完全摆脱手工的方式。
(6) 软件本身是复杂的。软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。
(7)软件的成本相当昂贵。软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它投入的成本是比较高的。
(8)相当多的软件工作涉及社会因素。许多软件的开发和运行涉及机构设置、体制运作及管理方式等问题,甚至涉及人们的观念和心理,这些因素直接影响到项目的成败。
(9)从市场上买到的软件,它本身就是一个完整的软件,而不能作为构件再组装成新的程序。但目前已有大量支持“软件复用”的软件和中间件作为相对独立的构件。
2.什么是软件生命周期?面向对象与传统软件工程有何相同之处?
计算机软件,从决定进行开发到最终退役所经历的一系列步骤与过程称为软件生命周期。通常将软件生命周期划分为需求分析、规格说明、设计、实现、集成、测试、维护和退役。
表1-1 两种软件开发方法生命周期的比较
结构化软件开发阶段面向对象软件开发阶段
需求分析阶段需求分析阶段
规格说明阶段(以结构化方法与技术进行描述)规格说明阶段(面向对象方法与技术进行描述,同时辅之以结构化方法与技术)
结构化概要设计阶段
面向对象设计阶段
详细设计阶段
实现阶段面向对象实现阶段
集成阶段集成阶段
维护阶段维护阶段
退役退役
3.软件工程过程包含哪几种基本活动?P、D、C、A各代表什么意思?
P(Plan)软件计划及规格说明过程。规定软件的功能及其运行时的限制。
D(Do)软件开发过程。产生满足规格说明的软件。
C(Check)软件确认过程。确认软件能够满足客户提出的要求。
A(Action)软件演进过程。为满足客户的变更要求,软件必须在使用的过程中演进。4.简述软件生存周期的各个环节及各环节的主要内容。
(1)需求分析阶段。探究抽象和求精概念,并明确客户的需求。
(2)规格说明(分析)阶段。分析客户的需求,形成规格文档。说明“产品要做什么”。这个阶段有时也称为分析阶段。
(3)设计阶段。规格说明顺序经历两个设计阶段。第一是结构设计,即把产品由一个整体分解成多个组成部分,称为模块。然后设计各个模块,这个阶段称为详细设计。在此阶段产生“设计文档”,描述“产品是如何做成的”。
(4)实现阶段。又可成为“编码阶段”,在这一阶段中,对各部分进行编码和测试。
(5)集成阶段。将各组成部分合并成一个整体并做测试。当开发者对产品满意后,就把它交给用户测试(验收测试)。将用户对产品的认可作为这个阶段终止的标志。
(6}测试阶段。针对不同的开发阶段,软件测试可以分为单元测试、集成测试、系统测试等不同的测试,其目的是及时发现软件开发各个阶段中的错误和问题。
(7)维护阶段。维护是指在客户认可产品满足规格文档之后,对软件所做的所有修改。维护包括改正性维护(或软件修正),主要是排除残余的故障,同时不改变规格说明,以及增进性维护(或软件更新),包括修改规格说明,并实现这些修改。而增进性维护又包括两种类型。第一是完善性维护,即用户认为能改善产品功能的修改,如附加功能或降低响应时间。第二是适应性维护,即为适应产品运行环境的改变而做的修改,例如,出现了新的政府法令。研究表明,平均来说,修正性维护大约占维护时间的17.5%,完善性维护占60.5%,适应性维护大约占18%。
(8)退役:产品退出服务。
5.软件危机主要包含哪些表现?结合自身实际,谈谈你对软件危机的认识和体会。
(1) 对软件开发成本和进度的估计常常很不准确。实际成本比估计成本有可能高出一个数量级,实际进度比预期进度拖延几个月甚至几年的现象并不罕见。这种现象降低了软件开发组织的信誉。而为了赶进度和节约成本所采取的一些权宜之计又往往降低了软件产品的质量,从而不可避免地会引起用户的不满。
(2) 用户对“已完成的”软件系统不满意的现象经常发生。软件开发人员常常在对用户要求只有模糊的了解,甚至对所要解决的问题还没有确切认识的情况下,就仓促上阵,匆忙着手编写程序。软件开发人员和用户之间的信息交流往往很不充分,“闭门造车”必然导致最终的产品不符合用户的实际需要。
(3) 软件产品的质量往往靠不住。软件可靠性和质量保证的确切的定量概念刚刚出现不久,软件质量保证技术(审查、复审和测试)还没有完全地应用到软件开发的全过程中,这些都导致软件产品发生质量问题。
(4) 软件常常是不可维护的。很多程序中的错误是非常难改正的,实际上不可能使这些程序适应新的硬件环境,也不能根据用户的需要在原有程序中增加一些新的功能。“可重用的软件”还是一个没有完全做到的、正在努力追求的目标,人们仍然在重复开发类似的或基本类似的软件。
(5) 软件通常没有相关的文档资料。计算机软件不仅仅是程序,还应该有一整套文档资料。这些文档资料应该是在软件开发过程中产生出来的,而且应该是“最新式的”(即和程序代码完全一致的)。软件开发组织的管理人员可以使用这些文档资料作为“里程碑”,来管理和评价软件开发工程的进展状况;软件开发人员可以利用它们作为通信工具,在软件开发过程中准确地交流信息;对于软件维护人员而言,这些文档资料更是至关重要、必不可少的。缺乏必要的文档资料或者文档资料不合格,必然给软件开发和维护带来许多严重的困难和问题。
(6) 软件成本在计算机系统总成本中所占的比例逐年上升。由于微电子学技术的进步和生产自动化程度不断提高,硬件成本逐年下降,然而软件开发需要大量人力,软件成本随着通货膨胀以及软件规模的不断扩大和数量的增加而持续上升。美国在1985年软件成本大约已占计算机系统总成本的90%。
(7) 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。软件产品“供不应求”的现象使人类不能充分利用现代计算机硬件提供的巨大潜力。
6.软件工程学的范畴指的是什么?它包含哪些内容?
计算机软件是整个计算机系统中具体实现各种功能和操作的核心部分。软件工程采用工程的概念、原理、技术和方法来开发和维护计算机软件,将工程管理技术的成功经验和思想与具体的软件开发过程、研究技术相结合,形成一整套适合于计算机软件开发的方法、规范和技术。