本章习题(P206-208)一、复习题1.简述软件的特点答:软件相对硬件而言有许多不同特点。
了解这些特别之处能够帮助我们全面.正确地理解计算机软件。
(1)软件是一种逻辑实体,而不是具体的物理实体,具有很强的抽象性。
我们只能把它记录在介质上,或在系统上运行,但却无法直接通过我们的眼睛看到软件的形态。
(2)软件是一个逻辑上复杂而规模上庞大的系统,涉及技术.管理等多方面的问题。
如果将代码比作零件,则一个软件是由成百上千万个零件组成的复合体,而且其结构远较机械装置复杂。
应该说软件的复杂程度高于同等规模的硬件产品。
(3)软件是智力产品,其价值体现在解决问题的知识和能力,而并不体现在软件载体本身。
软件的生产方式与硬件明显不同,设计方法和制造阶段不同;软件的生成成本主要在研发设计上,而大量复制几乎没有成本。
(4)在软件的运行和使用期间,没有硬件的磨损.老化问题。
但软件维护比硬件维护要复杂得多,软件的故障主是由于对软件的改变和使用环境的变化引起的。
(5)软件的开发和运行对硬件有较强依赖关系。
在软件开发有可移植性的问题,现在通常把软件的可移植性作为衡量软件质量的重要因素之一。
(6)软件工作涉及许多社会因素。
软件与人的关系密切,涉及到语言.文化等多方面,甚至关系到的道德领域。
{P182}2.什么是软件危机?主要有哪些表现?其产生的原因是什么?答:软件危机是软件开发领域,特别是在大型软件开发和维护过程中遇到的一系列严重问题的统称。
软件危机主要表现为费用高.开发过程不易控制.工作量估计困难.软件质量低.软件项目失败率高.无法判断大型系统能否正常工作以及软件维护任务重等现象。
产生软件危机的主要原因,一方面是软件本身所固有的抽象性.复杂性等特性;另一方面是人们当时对软件和软件开发过程的不正确认识。
{P182-183}3.简述什么是软件工程答:软件工程是应用计算机科学.数学及管理科学等原理开发软件的工程。
它借鉴系统工程的原则.方法,以提高质量,降低成本为目的。
软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门学科。
采用工程化方法和途径来开发与维护软件。
{P183-184}4.简述软件工程研究的基本内容与目标答:软件工程研究的内容包括与软件开发相关的理论,结构,过程,方法,工具,环境,管理,规范等。
理论与结构是软件开发的技术基础,包括程序正确性证明理论,软件可靠性理论,软件成本估算模型,软件开发过程模型,模块划分原理等。
软件开发技术包括软件开发方法学,软件工具和软件开发环境。
良好的软件工具可促进方法的研制,而先进的软件开发方法能改进工具。
软件工具的集成构成软件开发环境。
管理技术是提高开发质量的保证,软件工程管理包括软件开发管理和软件经济管理,前者包括人员分配,制定计划,确定标准与配置,而后者的主要内容有成本估算和质量评价。
软件工程的基本目标是提高软件质量,降低软件开发成本为。
{ P183-184 }5.软件生存周期一般可分为哪几个阶段?答:软件生存周期一般可分为:市场分析,可行性研究,以及项目定义阶段;需求分析阶段;设计(总体设计和详细设计)阶段;编码实现阶段;测试阶段;使用与维护阶段等。
{P184-185}6.试比较各种软件开发模型的优点和缺点答:常用的软件开发模型包括瀑布模型.原型模型和螺旋模型。
瀑布模型是软件工程的基础模型。
该模型简单直观,但缺乏灵活性,无法解决软件需求不明确或不准确的问题。
不适合大规模软件项目的开发。
原型模型的优点是支持软件需求开发,该模型提高了开发人员的效率,降低开发费用,缩短开发时间。
原型模型的缺点是容易给人错觉,用户不一定能理解原型与正式系统之间的差别。
管理开销大,并且资源管理也很困难。
螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。
螺旋模型需要多次迭代,会增加开发成本,延迟提交时间。
{P185-187}7.简述需求分析的任务和过程答:需求分析的根本任务就是要明确项目的目标,也就是准确地回答“系统要做什么”这个问题。
需求本身与系统如何实现是无关的。
对系统的综合需求主要有:系统功能需求.系统性能需求.运行环境需求.将来可能提出的需求。
需求分析过程包括需求的获取.需求分析.需求文档编写.需求管理等一系列活动。
{P196-199}8.简述面向对象的软件工程方法答:面向对象方法在软件工程领域能够全面运用。
它包括面向对象的分析.面向对象的设计.面向对象的编程.面向对象的测试和面向对象的软件维护等主要内容。
面向对象的分析直接针对问题域中客观存在的各项事物建立模型中的对象。
用对象的属性和服务分别描述事物的静态特征和行为。
面向对象的分析主要用于需求分析阶段。
面向对象的设计针对系统的实现运用面向对象方法。
包括把面向对象的分析模型直接搬到面向对象的设计;二是针对具体实现中的人机界面.数据存储.任务管理等因素实现采用与面向对象的分析相同的表示法和模型结构。
面向对象的编程又称作面向对象的实现。
是用一种面向对象的编程语言把面向对象设计模型中的每个成分书写出来。
面向对象的测试是对于用面向对象技术开发的软件,在测试过程中继续运用面向对象技术,进行以对象概念为中心的软件测试。
面向对象的软件工程方法为改进软件维护提供了有效的途径。
程序与问题域一致,各个阶段的表示一致,大大降低了理解的难度。
可提高软件维护效率。
{P193-194}9.什么是软件质量?如何保证软件质量?答:软件质量是指所有描述计算机软件优秀程度的特性的组合。
通俗地说就是,软件满足各功能.性能需求,符合标准的程度,程度高则质量。
IEEE定义软件质量为“与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体”。
软件质量是各种特性的复杂组合。
它随着应用的不同而不同,随着用户提出的质量要求不同而不同。
用户满意度是衡量软件质量的总体标准。
在软件项目的开发过程中,首先应强调软件总体质量,包括软件正确性.可维护性.健壮性.可用性与效率等多方面。
应在软件工程化生产的整个周期的各个阶段都注意软件的质量。
应制定软件质量标准,定量地评价软件质量。
主要采取的技术措施是审查和测试。
在软件开发的各个阶段都可以分别组织审查和测试,以实现全程的质量管理。
{P199-200}10.简述软件项目管理的内容答:项目管理是指把各种资源组合在一起,在规定的时间.预算和质量目标范围内完成项目的各项工作。
管理工作强调协调各方面的因素,达到整体的最优。
软件项目管理的主要内容包括项目的组织计划.资源管理.质量管理。
其中资源管理包括对项目开发所需的技术.人员.资金等方面的管理。
软件项目管理的手段主要是一系列制度.规范文档和专业管理工具。
{P202-2045}二、练习题(一)填空题1.一个完整的软件包括:____________________________________等几个组成部分。
程序、数据和文档(P62)2、为了便于对照检查,测试用例应由输入数据和预期的_________两部分组成。
输出结果3、结构化语言是介于自然语言和_________之间的一种半形式语言。
形式语言(二)选择题1.在软件开发中,下面任务不属于设计阶段的是______。
A.数据结构设计B.给出系统模块结构C.定义模块算法D.定义需求并建立系统模型D (P185)2.软件维护产生的副作用,是指_____。
A.开发时的错误B.隐含的错误C.因修改软件而造成的错误D.运行时误操作C (P194)3.提高软件质量和可靠的技术大致可分为两大类:其中一类就是避开错误技术,但避开错误技术无法做到完美无缺和绝无错误,这就需要_____。
A.消除错误B.检测错误C.避开错误D.容错B4._____是以提高软件质量为目的的技术活动。
A.技术创新B.测试C.技术创造D.技术评审D (P200)5.面向对象方法学的出发点和基本原则是尽可能模拟人类习惯的思维方式,分析.设计和实现一个软件系统的方法和过程,尽可能接近于人类认识世界解决问题的方法和过程。
因此面向对象方法有许多特征,如软件系统是由对象组成的;________;对象彼此之间仅能通过传递消息互相联系;层次结构的继承。
A.开发过程基于功能分析和功能分解B.强调需求分析重要性C.把对象划分成类,每个对象类都定义一组数据和方法D.对既存类进行调整C (P191)6.软件开发过程中,抽取和整理用户需求并建立问题域模型的过程叫________。
A.可行性研究B.需求分析C.总体设计D.编码实现B (P196)7.为了提高测试的效率,应该________。
A.随机地选取测试数据B.取一切可能的输入数据作为测试数据C.在完成编码以后制定软件的测试计划D.选择发现错误可能性大的数据作为测试数据D (P200-201)8.对象实现了数据和操作的结合,使数据和操作________于对象的统一体中。
A.结合B.隐藏C.封装D.抽象C (191)9.软件测试方法中的静态测试方法之一为________A.计算机辅助静态分析B.黑盒法C.路径覆盖D.边界值分析B (201)10.软件生命周期中所花费用最多的阶段是________A.详细设计B.软件编码C.软件测试D.软件维护D (P185)12.结构化程序设计主要强调的是________A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序易读性D (P188)13.需求分析阶段的任务是确定________A.软件开发方法B.软件开发工具C.软件开发费D.软件系统的功能D (P196)(三)讨论题1.试分析软件何时变得无用?提示:该题主要考虑对软件本质的分析和认识。
软件在运行和使用期间,没有硬件的磨损.老化问题。
但软件维护比硬件维护要复杂得多,软件的故障主是由于对软件的改变和使用环境的变化引起的。
软件的开发和运行对硬件有较强依赖关系。
因此,对于某种具体软件而言,当软件的运行环境变化到一定程度,或对软件的需求变化到一定程度,或者能够运行该软件的硬件退出市场后,这时种软件就会变得无用了。
{P182}2、试论系统开发的分析阶段有什么工作?需求分析阶段主要工作包括需求的获取、分析、编写文档、管理等。
(1)需求的获取需求获取是需求分析阶段的基本活动。
软件的需求来源可以是多方面的,这取决于待开发产品的性质和开发环境。
需求获取的关键是同用户之间的交流,它也是非常容易出现误解和歧义的环节。
需求获取的成功完全依赖于客户和开发者之间的合作效果。
(2)综合分析在需求信息获取的基础上,进行问题分析和方案的综合。
由于需求获取来源的多样性,最初的表达往往是不规范的,描述问题的形式和角度各不相同。
并不是用户提出的所有需求都是合理的,有些甚至是矛盾的,需要用科学的方法,找出系统各元素之间的联系,逐步细化所有的软件功能,接口特性和设计上的限制等。