1、课后习题答案第一章1. 选择题(1)软件是计算机系统中与硬件相互依存的另一部分,它包括文档、数据和( )。 A. 数据 B. 软件 C. 文档 D. 程序(2)软件工程是一门研究如何用系统化、( )、可度量化等工程原则和方法去进行指导软件开发和维护的学科。A.规范化 B.标准化 C.抽象化 D.简单化(3)软件工程的出现主要是由于( )。A.方法学的影响 B.软件危机的出现C.其他工程学科的发展 D.计算机的发展(4)可行性研究主要包括经济可行性、技术可行性、法律可行性和( )等六个方面。A.运行可行性 B.条件可行性 C.环境可行性 D.维护可行性(5)编制项目开发计划的目的是用文件的形式,
2、把在开发过程中各项工作的负责人员、开发进度、所需经费预算、所需软件、硬件条件等问题做出的安排以( )记载下来。A.文件形式 B. 文档形式 C. 电子档案形式 D. 条文形式2.填空题(1)软件工程是开发 、 运行 、维护和修复软件的系统方法,这里所说的系统方法,是把系统化的、规范化的、可度量化的途径应用于软件生存周期中,也就是把工程化应用于软件中。(2)可行性研究的任务不是具体解决系统中的问题,而是确定问题是否值得解决、是否能够解决。(3)软件的开发计划也称项目实施计划,是一个综合的计划,是软件开发工作的指导性文档,阅读对象是软件开发的主管部门、软件技术人员和普通用户。3.思考题(1)软件危
3、机产生的原因是什么?为何要引入软件工程的概念?答:软件危机的产生,一方面是与软件本身的特点有关,另一方面是由于软件开发和维护的方法不规范、不正确造成的,其根本原因 忽视了软件开发前期的需求分析; 开发过程没有统一、规范的方法论的指导,文档资料不齐全,忽视了人与人之间的交流。 忽视测试阶段的工作,提交给用户的软件质量差。 请示软件的维护。(2)可行性研究的主要任务有哪些? 答:经济可行性 技术可行性 时机可行性 管理上的可行性 法律可行性 运行可行性(3)制定项目开发计划的主要任务是什么? 答:项目资源计划 软件开发中的资源包括用于支持软件开发的硬件,软件工具以及人力资源。 成本预算 成本预算就
4、是要估计总的开发成本,并将总的开发费用合理地分配到开发的各个阶段中去。 进度安排 进度安排确定最终的软件交付日期,并在限定的日期内安排和分配工作量。第二章 需求分析习 题1. 选择题(1)需求分析阶段的工作可以分成4个方面:对问题的识别、分析与综合、制订需求规格说明书和( )。A.需求分析评审 B.对问题的解决 C.对过程的讨论 D.功能描述(2)以下不是结构化分析方法描述系统功能模型的方法是()A数据流图 B数据字典 C加工说明D流程图(3)以下不是对象具有的特点是( ).A.数据的封装性 B.并行性 C.模块独立性好 D.对象是被动的(4)对象模型技术是1991年由Jame Rumbaug
5、h等5人提出来的,该方法把分析收集到的信息构造在对象模型、动态模型和功能模型中,将开发过程分为系统分析、系统设计( )和实现4个阶段。A.对象设计 B.类的设计 C.模块设计 D.程序设计(5)。按照层次来划分。UML的基本构造块包含:视图、图和( )A.功能模型 B.模型元素 C.示例 D.视图元素2.填空题(1)需求分析可分为对问题识别、分析与综合、编制需求分析文档、需求评审四个阶段。(2)需求分析的任务是理解和表达用户的需求,借助当前系统的物理模型导出目标系统的逻辑模型,解决目标系统“做什么”的问题所要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其他系统元素的接口细节,
6、定义软件的其他有效性需求。(3)系统分析是对问题的 识别 和 说明 的过程,分析员要回答的问题是“系统必须做什么”的问题,而不是“系统应该怎么做”的问题。(4)结构化分析方法是一种面向数据流的需求分析方法。这种方法通常与设计阶段的结构化设计衔接起来使用。(5)面向对角分析模型通常包括对象模型、功能模型、动态模型。(6)类是某些对象的模板,抽象地描述属于该类的全部对象的属性和操作。(7)UML是一种可视化的、用于绘制软件蓝图的标准建模语言。可心用UML对软件系统的各种制品(包括程序、文档等)进行描述。3.思考题(1)什么是需求分析?需求分析阶段的基本任务是什么?答;一个项目通过市场调研,进行深入
7、细致的可行性分析,获准开发后,为了保证制定的软件开发计划详细可行,还需要对软件目标及范围求精和细化,从而解决软件系统必须要做的工作。这就是本项目所阐述的需求分析需求分析的任务是理解和表达用户的需求,描述软件的功能和性能,确定软件设计的限制和软件同其他系统元素的接口细节,定义软件的其他有效性需求。(2) 什么是结构化分析方法?该方法使用什么描述工具?答:结构化分析方法是一种面向数据流的需求分析方法。该方法主要是利用数据流图、数据字典和加工说明等来描述系统的功能模型。(3) 什么是面向对象技术?面向对象方法的特点是什么?答;面向对象技术是一整套实用的软件开发方法特点:数据的封装性。以数据为中心。对
8、象是主动的。 模块独立性好。并行性。(4)什么是类?类与传统的数据类型有什么关系?答; 具有相同特征和行为的对象归结在一起就形成类,也就是说,类是具有相同属性和服务的一组对象的集合。在面向对象方法学中,类是某些对象的模板,抽象地描述属于该类的全部对象的属性和操作。(5)建立分析和设计模型的一种重要方法是UML,试问UML是一种什么样的建模方法?它如何表示一个系统?UML是一种可视化的、用于绘制软件蓝图的标准建模语言。可以用UML对软件系统的各种制品(包括程序、文档等)进行描述。UML虽然不是一种具体的编程语言,但是用UML描述的各种模型可以与各种编程语言直接相连。(6)UML中提供哪几种图?并
9、说明每种图所描述的内容是什么?(1)用例视图(Use Case View)。(2)逻辑视图(Logical View)(3)并发视图(Concurrent View)(4)组件视图(Component View)。(5)部署视图(Deployment View)第三章 选择项目的总体设计习 题1.选择题(1)系统开发的命名规则是( )A. 变量名只能由大小写英文字母、“_”以及阿拉伯数字组成 B. 名称的第一个字符必须是英文字母或数字 C. 全局变量、局部变量命名必须用英文字母简写来命名 D. 数据库表名、字段名等命名应尽量体现数据库、字段的艺能(2)面向事务设计方法首先确定主要的( C ),
10、然后逐层详细描述各个状态的( A )。A. 转化过程 B. 状态变化 C. 状态分类 D. 转化变化(3)使用面向对象的设计方法进行对象分析和设计时的步骤是( ABCED )。A. 识别对象 B. 确定操作 C. 定义操作D. 确定对象之间的通信 E. 完成对象定义(4)软件建模的三个模型是:( C )描述系统能什么,( F )描述系统在何时、何地由何角色、按什么业务规则去执行,以及执行的步骤或流程,( B )描述系统工作前的数据来自何处,工作中的数据暂存什么地方,工作后的数据放到何处,以及这些数据之间的关联。A. 设计模型 B. 数据模型 C. 功能模型D. 性能模型 E. 用例模型 F.
11、业务模型2. 填空题(1) 总体设计的主要任务是根据用户需求分析阶段得到的目标系统的物理模型确定一个合理的系统解决方案。(2) 面向数据流设计的目标是给出设计软件结构的一个系统化途径 。根据数据流,采用自顶向下逐步求精 的设计方法,按照系统的层次结构进行逐步分解,并以分层数据流图这种结构关系。(3) 面向对象的设计将面向对象分析方法建立的 需求分析模型 转化为构造软件的设计模型。(4)UML是统一建模语言的缩写,它是一种 可视化的图形符号 建模语言,利用它可以进行需求分析、概要设计 、 详细设计 、编程实现、项目计划、测试、原型迭代、产品发布和产品维护。模块间的耦合低 -耦合性-高非直接耦合
12、数据耦合 标记耦合 控制耦合 外部耦合 公共耦合 内容耦合强-模块独立性-弱内聚度低-内聚性-高偶然内聚 逻辑内聚 时间内聚 过程内聚 通信内聚 信息内聚 功能内聚弱-模块独立性-强功能分散 功能单一第四章 软件项目详细设计习题1.选择题(1)下面关于详细设计的说法错误的是()A详细设计阶段的任务是将解决问题的办法进行具体化B.详细设计阶级是以比较抽象的方式提出了解决问题的方法C.详细设计阶段不用真正编写程序,而是设计出程序的详细规格说明 D.详细设计是将概要设计的框架内容具体化、明细化(2)类图是静态图的一种,它包括的三个部分是( )。 A.属性 B.类 C.用户接口 D. 联系(3) 下面
13、关于数据库的描述正确的是( ) A.数据库是存储和处理数据用的 B.数据库设计的目的是使信息系统在数据库服务器上建立一个好的数据模型 C.数据库设计的主要工作是设计数据库的表 D.数据库是用来确定对象之间通信的工具 E.数据库设计的难易程度取决于数据关系的复杂程度和数据量的大小两个要素(4) 传统的详细设计的工具主要包括( ) A.程序流程图 B.数据结构设计 C.模块和接口 D.判定表E.程序设计语言2. 填空题(1) RUP(统一开发过程)模式的最大优点是按照角色识别用例 方法,该方法可以较为直观地建立起系统的架构,通过反复识别,避免需求中的露项。(2) 类有属性、操作、结束以及其他成分等
14、,属性 描述类性质的实例 所能具有的值,操作实现类的服务功能 ,用户接口就是 用户和系统交互的界面,联系代表 对象之间的关系.(3) 详细设计需要对系统的模块做概要性的说明,主要包括 模块 描述、 算法 描述, 数据 描述。(4) 面向对象的详细设计从概要设计的对象和类开始。算法是设计对象中每个方法 的实现规格,数据结构的设计与算法是同时进行的,因为这个方法要对类的属性进行处理,主要包括三类 对数据的维护操作,对数据进行计算,监控对象事件 。 第五章 软件项目的实现 习 题1. 选择题(1) 下列标识符中,不合法的用户标识符为()A.a#b B._int C.a_10 D.Pad (2)每个类
15、(C)构造函数。A. 只能有一个 B. 只可有共有的C. 可以有多个 D.只可有缺省的(3) 在私有继承的情况下,基类成员在派生类中的访问权限()。A. 受限制 B.保持不变 C. 受保护 D.不受保护(4)对象的三要素是( )。A.窗口、时间、消息 B.窗口、数据、动作C.属性、方法、事件 D.数据、函数、动作(5)程序的三种基本控制结构是( )。A.数组、递推、排序 B.递归、递推、迭代C.顺序、选择、循环 D.过程、子程序、分程序(6)下面叙述正确的是( )。 A.算法的执行效率与数据的存储结构无关 B.算法的空间复杂度是指算法程序中指令的条数 C.算法的有穷性是算法必须能在执行有限个步
16、骤之后终止 D.以上三种描述都不对2. 填空题 1.在类的成员声明时,若使用 protected 修饰符则该成员只能在该类或其派生类中的使用。 2.类的静态成员属于 类的方法 所有,非静态成员属于类的实例所有。 3.算法复杂度主要包括时间复杂度和 空间 复杂度。3. 思考题(1)第一代至第四代语言是如何划分的?各具有什么特点?包括哪些语言?第一代编程语言 机器语言 特征:面向机器。第二代编程语言 汇编语言 特征:用针对指令的符号代替二进制代码。第三代编程语言 高级语言 C、C+、pascal、第四代编程语言 4GL特征:数据库和数据仓库,数据的无逢交流。智能的数据交流类COM的大量使用。主要解
17、决数据的交流和有用信息的获取(2)过程设计语言具有哪些特征?(1)PDL虽然不是程序设计语言,但是它与高级程序设计语言非常类似,只要对PDL描述稍加变换就可变成源程序代码.因此,它是详细设计阶段很受欢迎的表达工具.(2)用PDL写出的程序,既可以很抽象,又可以很具体.因此,容易实现自顶向下逐步求精的设计原则.(3)PDL描述同自然语言很接近,易于理解.(4)PDL描述可以直接作为注释插在源程序中,成为程序的内部文档.这对提高程序的可读性是非常有益的.(5)PDL描述与程序结构相似,因此自动产生程序比较容易.PDL的缺点是不如图形描述形象直观,因此人们常常将PDL描述与一种图形描述结合起来使用.
18、(3)什么是对象?对象具有哪几种形式?对象是一种复合数据类型,它们将多个数据值集中在一个单元中,而且运行使用名字来存取这些值。解释对象的另一种方式是,对象是一个无序的属性集合,每个属性都有自己的名字和值。存储在对象中的已命名的值可以是数字和字符串这样的原始值,也可以是对象。(4)程序的编码风格主要体现在哪几个方面?答:编码风格包括四个方面,即源程序文档化,数据说明的方法,语句结构和输入输出方法。(5)面向对象生存期模型与传统的生存期模型有什么区别?传统的生存期有逻辑数据设计和逻辑过程设计这两个不同的阶段,但在OO生存期中这两个阶段合并为一个既包含数据,有包含过程的类。即完成高层分析和设计使用的
19、类应同时包含数据和服务。在观察问题域的方法上,OO分析与传统结构化分析有不同:一个类,在逻辑上既包含数据,又包含功能。它取消了实体只能定义数据的老概念。集成性取代了实体关系的子类型。处理分析图描述了不同类的实例之间的消息传送,取代了数据流图。传统的实体关系图被类的关系图和类的分层图所取代第六章 软件项目测试习题1.选择题(1) 软件测试的目地是( 1234 )为了提高测试的效率,应该( 2134 )。使用白盒测试法时,确定测试数据应根据(3214 )和只等的覆盖标准。与设计测试数据无关的文档是( 3124 )。软件的集成测试工作最好由( )承担,以提高集成测试的效果。供选择的答案:A. 评价软
20、件的质量 发现软件的错误 找出软件中的所有错误 证明软件是正确的B. 随机地选取测试数据 取一切可能的输入数据作为测试数据 在完成编码以后制订软件的测试计划选择发现错误的可能性大的数据作为测试数据C. 程序的内部逻辑 程序的复杂程度 使用说明书 程序的功能D 该软件的设计人员 程序的复杂程度 源程序 项目开发计划E 该软件的设计人员 该软件开发组的负责人 该软件的编程人员 不属于该软件开发组的软件设计人员(2)以消除瓶颈为目的的测试是( )A负载测试 B性能测试 C 动态测试 D覆盖测试(3)黑盒测试侧重于( )A软件的整体功能 B.有关代码的知识C以上都是 D.以上都不是(4)在下面列出的逻
21、辑驱动覆盖测试方法中,逻辑覆盖准则最弱的是( )A条件覆盖 B判定覆盖C语句覆盖 D判定一条件覆盖(5)从测试阶段角度,测试正确的顺序是( ),同时给出所选择的正确策略含义和被测对象是什么? 单元测试 集成测试 系统测试 验收测试A B C D2.填空题(1)测试的主要目的是找出软件的 错误 。(2)调试有助于监测和修复开发阶段中的错误。(3)大多数情况下,程序员测试自己所编写的单元所采用的测试为测试分类中的 单元测试。(4)对面向过程的系统采用的集中策略有:测试、调试两种。3.简答题(1)谈谈软件测试的一些基本原则。答:测试是为了发现程序中的错误而执行程序的过程。 好的测试方案是极可能发现迄
22、今为止尚未发现的错误的测试方案。 成功的测试是发现了至今为止尚未发现的错误的测试。第七章 软件维护习 题1. 什么是软件维护?答:软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。改正性维护,预防性维护,完善性维护,适应性维护。2. 请阐述软件维护的策略。答:改正性维护 适应性维护完善性维护 预防性维护3. 请列举几种提高软件的可维护性方法。答:维护组在维护活动开始之前就明确维护责任是十分必要的,这样做可以大大减少维护过程中可能出现的混乱。维护报告。用标准化的格式表达所有软件维护要求。维护的事件流。由一项维护要求而引出的一串事件。保存维护记录。应该为每项维护工作都
23、收集上述数据。可以利用这些数据构成一个维护数据库的基础。评价维护活动。根据对维护工作定量度量的结果,可以做出关于开发技术、语言选择、维护工作量规划、资源分配及其他许多方面的决定,而且可以利用这样的数据去分析评价维护任务。第八章 软件项目管理习题1. 请结合风险的特点阐述对软件风险的认识。风险包含了如下两个特性:不确定性风险可能发生,也可能不发生。损失如果风险变成了事实,就会产生恶性后果或损失。软件项目管理从某种意义上讲,就是风险管理。风险管理在国内软件行业的应用,远未达到预期应该达到的水平。人们往往看不到风险管理的重要性,这种错误的认识有时会让我们付出很大的代价。2. 请阐述软件评审的意义及其
24、作用。答:意义:在软件开发过程中,软件评审可以提高整个软件系统的质量,在软件管理方面采用软件评审来加以保证软件质量。作用:在软件开发的各个阶段都可能产生错误,如果这些错误不及时发现并纠正,会不断地扩大,最后可能导致开发的失败。软件评审是相当重要的工作,也是目前国内开发最不重视的工作。也就是用每个阶段的结束标准对本阶段的软件配置成分进行严格审查。3. 判断以下活动中那些事项目,哪些不是项目,并请说明理由。 (1)升级某政府部门的办公自动化系统 (2)打字员打印文件 (3)报考软件学院工程硕士研究生 (4)购买家用轿车 (5)每天骑车上班项目是在一定的时间内为了达到特定目标而调集到一起的资源组合,
25、是为了取得特定的成果开展的一系列相关活动。并归纳为:项目是特定目标下的一组任务或活动。根据定义判断。(1)是(2)不是(3)是(4)是(5)不是。第九章 软件项目开发总结 习 题一、软件开发中需要注意的问题有哪些?答:1命名方法要有统一的代码书写规范2设计过程中应考虑到的问题(1)优先站在用户使用方便、简捷性的角度来考虑。(2)再考虑程序设计的方便性、维护容易性、设备条件限制性等。(3)没有充分系统地做好需求分析就不要着急动手编写代码。(4)在代码时都要填写注释,至少一两句话。(5)尽量利用现有的产品、技术、代码。(6)界面布局混乱。3需要特别注意的问题(1)程序员工作需要安静环境,这点极端重要。(2)产品各部分的界面和操作习惯一致。尤其对于多人开发的系统来说,这点比较重要,要让用户觉得整个系统好像是一个人做出来的那样。(3)备份(4)及时保存(5)将常用且又常忘记的函数、命令、技巧等收集成一个文件。