软工题第六章
- 格式:doc
- 大小:111.00 KB
- 文档页数:10
软件工程导论第六版课后习题答案完整版首先,感谢您对软件工程导论课后习题答案的需求。
以下是软件工程导论第六版课后习题的完整答案。
第一章:软件工程概述1.1 问题1. 什么是软件工程?答:软件工程是一种应用工程原理、方法和工具来开发和维护高质量软件的学科。
1.2 问题1. 什么是软件?答:软件是一系列按照特定顺序组织的计算机数据和指令。
第二章:软件过程模型2.1 问题1. 软件过程模型有哪些类型?答:常见的软件过程模型包括瀑布模型、迭代模型、螺旋模型和敏捷开发模型等。
2.2 问题1. 瀑布模型的特点是什么?答:瀑布模型是一种线性顺序模型,以阶段划分为基础,每个阶段的任务在进入下一个阶段前必须完成。
第三章:需求分析与规格说明3.1 问题1. 软件需求描述包括哪些方面的内容?答:软件需求描述需要包括功能性需求、非功能性需求、用户需求和系统需求等。
3.2 问题1. 什么是需求跟踪?答:需求跟踪是指在软件开发过程中,通过建立需求和软件项目中其他相关工件之间的关联,确保需求的准确实现和变更的有效管理。
第四章:软件设计4.1 问题1. 软件设计的目标是什么?答:软件设计的目标是通过确定软件的整体结构和组成部分,确保软件满足需求并具有良好的可维护性和可重用性。
第五章:软件测试与维护5.1 问题1. 什么是软件测试?答:软件测试是一种评估和改进软件质量的过程,目的是发现错误并提高软件的可靠性和可用性。
5.2 问题1. 什么是软件维护?答:软件维护是指在软件交付后的整个生命周期中对软件进行修改和改进,以满足用户需求和修复错误。
第六章:软件配置管理6.1 问题1. 软件配置管理的目标是什么?答:软件配置管理的目标是确保软件在开发和维护过程中的可控性和可追踪性,以及保持软件配置的稳定性和一致性。
6.2 问题1. 软件版本控制是什么?答:软件版本控制是指对软件的不同版本进行管理,包括版本的创建、检出、合并和更新等操作。
至此,我们完成了软件工程导论第六版课后习题的完整答案。
六、项目质量管理1. 项目质量包含哪几方面的含义?答:影响软件质量的主要因素,这些因素是从管理角度对软件质量的度量。
McCall 等人1979年提出的质量要素模型得到普遍认可,该模型把影响软件质量的因素划分为三组:正确性、健壮性、效率、完整性、可用性、安全性(产品运行);可理解性、可维修性、灵活性、可测试性(产品修改);可移植性、可重用性、互运行性(产品转移)。
2. 简述软件项目的质量计划包括哪些内容,以及编制质量计划的主要依据是什么?答:质量管理计划描述项目的质量管理体系,即实施质量管理所需要的组织结构、责任、程序、过程和资源。
质量管理计划根据质量规划得到,其内容包括质量方针、质量目标、界定说明和项目描述。
项目的质量方针是由高层管理部门提出的关于质量的意图和方针,此政策应该描述质量目标、质量层次、执行政策以及项目组中各成员的责任。
项目的质量方针是由高层管理部门提出的关于质量的意图和方针,此政策应该描述质量目标、质量层次、执行政策以及项目组中各成员的责任。
项目的界定说明是项目立项时将项目的可交付成果记录下来的项目目标文件。
项目描述按照项目立项时确定的产品说明为基础,随着项目发展阶段逐渐深化、细化,直至包含技术问题的细节和影响质量的具他问题。
质量管理计划制定应该基于项目章程、项目管理计划(其中的需求管理计划、风险管理计划、干系人参与计划、范围基准等)、项目文件(其中的假设日志、需求文件、需求跟踪矩阵、干系人登记册等)、事业环境因素(其中的政策法规、软件领域的相关规则/标准/指南、组织结构、市场条件、工作条件和文化观念等)和组织过程资产(组织的质量管理体系、质量模板、历史数据等)等已有相关文档和知识。
3. 你认为项目质量管理与项目质量控制过程有哪些联系?项目变更对于质量控制有哪些影响?答:项目的质量管理与质量控制有以下几点联系:1)质量计划是质量控制和质量保证的共同依据。
2)达到质量要求是质量控制和质量保证的共同目的。
软件⼯程习题解答(含基本章节应试例⼦以及⼀个UML案例)软件⼯程习题解答⼀、软件⽣存周期各阶段的基本任务?1. 问题定义:(1)回答要解决的问题是什么。
(2)系统分析员应该提出关于问题性质、⼯程⽬标和规模的书⾯报告。
(3)经过和⽤户讨论,澄清含糊不清的地⽅,改正理解不正确的地⽅,得出⼀份双⽅都满意的⽂档。
(4)问题定义是软件⽣命周期中最简短的阶段。
2.可⾏性研究:(1)前⼀阶段定义的问题有可⾏的解决办法吗?(2)系统分析员要进⾏⼀次⼤⼤压缩和简化了的系统分析和设计。
导出⾼层逻辑模型(⽤数据流图表⽰)。
确定⼯程规模和⽬标,准确估计系统的成本和效益。
(3)使⽤部门的负责⼈根据可⾏性研究的结果决定是否继续进⾏该⼯程的开发⼯作。
3.需求分析:(1)主要确定⽬标系统必须具备哪些功能。
(2)系统分析员和⽤户密切配合,充分交流,得出经⽤户确认的系统逻辑模型(数据流图、数据字典、算法描述)。
4.总体设计:(1)回答如何解决问题。
(2)系统分析员应使⽤系统流程图或其他⼯具描述每种可能系统;估计每种⽅案的成本和效益。
推荐⼀较好的系统──有其详细计划。
设计软件的结构(⽤层次图或结构图描述)。
5.详细设计:(1)回答应该怎样具体地实现这个系统。
(2)设计出程序的详细规格说明(⽤HIPO层次图加输⼊/处理/输出图)或PDL语⾔(过程设计语⾔)。
6.编码和单元测试:(1)写出正确的容易理解,容易维护的程序模块。
(2)程序员:选取⼀种适当的⽤⾼级语⾔书写程序(或汇编语⾔)。
仔细测试编写出的每⼀个模块。
7.综合测试:(1)通过各种类型的测试,使软件达到预定的要求。
(2)最基本的测试是集成测试和验收测试⽅法。
集成测试是根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配的过程中对程序进⾏必要的测试。
验收测试是按照需求规格说明书的规定,由⽤户对⽬标系统进⾏验收。
(3)⽤正式⽂档将测试计划、详细测试⽅案以及实际测试结果保存。
软件工程一、选择题1、软件需求规格说明的内容不包括(B)A、主要功能B、算法的详细描述C、用户界面及运行环境D、软件的性能2、面向对象的分析方法主要是建立三类模型,即(D)A、系统模型、ER模型、应用模型B、对象模型、动态模型、应用模型C、ER模型、对象模型、功能模型D、对象模型、动态模型、功能模型3、在ER模型中,包括以下基本成分(C)A、数据、对象、实体B、控制、联系、对象C、实体、联系、属性D、实体、属性、操作4、各种软件维护的类型中最重要的是(A)A、完善性维护B、纠错性维护C、适应性维护D、预防性维护5、若有一个计算类型的程序,它的输入量只有一个X,其范围是[—2.0,2.0],现从输入的角度考虑一组测试用列—2.001,-2,20,2.001,设计这组测试用列的方法是(C)A、条件覆盖法B、等价分类法C、边界值分析法D、错误推测法6、下列白盒测试法,哪种是最强的覆盖准则(D)A、语句覆盖B、条件覆盖C、判定覆盖D、条件组合覆盖7、确定测试计划是在(A)阶段制定的。
A、总体设计B、详细设计C、编码D、测试8、数据字典是软件需求分析阶段最重要的工具之一,其最基本的功能是(C)A、数据库设计B、数据通信C、数据定义D、数据维护9、软件开发当中,抽取和整理用户需求并建立问题域精确模型的过程(D)A、生成期B、软件意向C、结构化程序设计D、面向对象分析10、以下不属于IT企业当中过程管理和过程改进模型的是(D)A、ISO9001B、CMMIC、软件企业文化D、UML11、适合互联网上编程并可供不同平台运行的面向对象程序设计的语言是(java)12、软件结构图中,模块之间用直线连接,则表示他们之间存在(A )。
A、调用关系B、组成关系C、链接关系D、顺序执行关系13、生命周期方法设计软件的过程中,画用例图属于(A)阶段的工作.A、需求分析B、概要设计C、详细设计D、软件维护14、PDL属于(B)语言。
第一章4.什么是软件工程?它与软件工程方法学有何关系?软件过程是为了开发高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
软件过程定义了运用技术方法的顺序,应该交付的文档资料,为保证软件质量和协调软件变化必须采取的管理措施,以及标志完成了相应开发活动的里程碑。
软件过程是软件工程方法学的3个重要组成部分之一。
2、假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的结果要求精确到小数点后4位。
一旦实现并测试完成后,该产品将被抛弃。
你打算选用哪种软件生命周期模型?说明你做出选择的理由。
该软件的要求很明确,实现开平方算法的功能也很成熟,因此既无需通过原型来分析需求也无需用原型来验证设计方法。
此外,一旦实现并测试完成后,该产品将被抛弃,因此无需使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。
综上所述,为了开发这个软件,使用瀑布模型就可以了。
8.假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本的开发。
由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。
你打算采用哪种软件生命周期模型?为什么?答:对这个项目的一个重要要求是,严格按照已对外公布的日期完成产品开发工作,因此,选择生命周期模型时应该着重考虑哪种模型有助于加快产品开发的进度。
使用增量模型开发软件时可以并行完成开发工作,因此能够加快开发进度。
这个项目是开发该公司已被广泛应用的字处理软件的新版本,从上述事实至少可以得出三点结论:第一,旧版本想当于一个原型,通过收集用户对旧版本的反应,较容易确定对新版本的需求,没有必要再专门建立一个原型系统来分析用户的需求;第二,该公司的软件工程师对子处理软件很熟悉,有开发字处理软件的丰富经验,具有采用增量模型开发新版本字处理软件所需要的技术水平;第三,该软件收到广大用户的喜爱,今后很可能还要开发更新版本,因此,应该把该软件的体系结构设计成开放式,以利于今后的改进和扩充。
第六章习题(1)复习题1、简述自然语言与形式语言的概念以及区别、汇编语言与机器语言的概念及区别。
自然语言是某一社会发展中形成的一种民族语言,而形式语言是进行形式化工作的元语言,它是以数学和数理逻辑为基础的科学语言。
用机器指令形式编写的程序称为机器语言,用带符号或助记符的指令和地址代替二进制代码成为语言进化的目标。
这些使用助记符语言的语言后来就被称之为汇编语言。
(P135P136)2、什么是高级程序设计语言?它有什么特点?高级语言是汇编语言的一种抽象。
高级语言的设计目标就是使程序员摆脱汇编语言细节的繁琐。
高级语言同汇编语言都有一个共性,那就是:它们必须被转化为机器语言,这个转化的过程称为解释或编译。
(1)高级语言接近算法语言,易学、易掌握;(2)高级语言设计出来的程序可读性好,可维护性强,可靠性高;(3)高级语言与具体的计算机硬件关系不大,其程序可移植性好,重用率高;(4)高级语言自动化程度高,开发周期短,利于提高程序的质量。
(P138)3、列举程序设计语言的几种范型。
程序语言大致分为命令式程序设计语言、面向对象的程序设计语言、函数式程序设计语言和逻辑型程序设计语言等范型。
(P138-140)4、简述语言虚拟机。
提示:语言虚拟机是某种语言的解释器。
语言虚拟机是建立在硬件和操作系统之上,针对不同的硬件和操作系统有不同的虚拟机,通过语言虚拟机屏蔽掉硬件的差异。
这样使得硬件系统能够支持这种语言编写的程序的有效执行。
目前最流行的语言虚拟机是Java虚拟机。
(P147)5、计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么?提示:主要有编译、解释等方式,也有两种方式的混合使用的形式。
编译是使用编译器将高级语言编写的源程序转换成计算机可以执行的机器语言可执行程序,也可以理解为用编译器产生可执行程序的动作。
编译方式是一次编译,然后执行程序可以反复多次执行。
解释是另一种将高级语言转换为可执行程序的方式。
第六章软件开发一、单项选择1.给定如下所示的JAVA代码,则运行时,会产生哪种类型的异常()String s = null;s.concat( "追加的字符串");A. ArithmeticExceptionB. NullPointerExceptionC. IOExceptionD. ClassNotFoundException参考答案:B答案解析:空值的字符串变量无法进行追加字符串运算。
A选项为数学运算异常;C选项为输入输出异常;D选项为未找到类定义的异常。
知识点:税务系统业务能力升级测试大纲(信息技术类)-专业知识与技能—第六章软件开发—第二节 Web熟悉开发 4.了解Java编程。
2.为使得开发人员对软件产品的各阶段都进行周密的思考,从而减少返工,所以编制下列哪个文件是很重要的()A.需求说明B.概要说明C.软件开发文档D.测试大纲参考答案:C试题解析:软件开发文档是软件开发使用和维护过程中的必备资料。
它能提高软件开发的效率,保证软件的质量,而且在软件的使用过程中有指导,帮助,解惑的作用,尤其在维护工作中,文档是不可或缺的资料。
知识点:税务系统业务能力升级测试大纲(信息技术类)-专业知识与技能—第六章软件开发—第一节软件开发基础知识3.下列哪个文档属于软件开发人员为用户准备的有关该软件使用、操作、维护的资料()A.开发文档B.管理文档C.用户文档D.软件文档参考答案:C试题解析:用户文档可以帮助用户掌握相关软件的使用、操作及维护。
知识点:税务系统业务能力升级测试大纲(信息技术类)-专业知识与技能—第六章软件开发—第一节软件开发基础知识4.关于中间件特点的描述,不正确的是()A.中间件可运行于多种硬件和操作系统平台上B.跨越网络、硬件、操作系统平台的应用或服务可通过中间件透明交互C.中间件运行于客户机/服务器的操作系统内核中,提高内核运行效率D 中间件应支持标准的协议和接口参考答案:C试题解析:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。
软件工程(第五版)-习题及答案---第六章-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII一、选择题1、UML的主要特点不正确的是(C)。
A、面对对象,表达能力强B、可视化建模C、面对过程,表达能力强D、统一标准2、静态建模图不包括(B)。
A、用例图B、协作图C、类图D、对象图3、用例图的模型元素不包括(D)。
A、用例B、系统C、行为者D、软件开发者4、类图的要素不包括(D)。
A、类名称B、操作C、属性D、对象5、时序图中的要素不包括(A)。
A、执行者B、对象C、对象生命线D、消息6、对象模型的描述工具是(C)。
A、状态图B、数据流图C、对象图D、结构图7、协作图的要素不包括(A)。
A、用例B、对象C、链D、消息8、类图反映了系统中对象之间的抽象关系,不包括(D)。
A、关联B、聚合C、泛化D、内聚9、下面(D)不是状态图的图符。
A、圆角的矩形B、实心圆点C、实心圆环D、椭圆10、描述类中某个对象的行为,反映了状态与事件关系的是(A)。
A、状态图B、数据流图C、对象图D、结构图11、动态模型的描述工具(C)。
A、对象图B、设计图C、状态图D、结构图12、表示对象的相互行为的模型是(A)模型。
A、对象B、动态C、结构D、静态13、有关类和对象的描述中,错误的是(A)。
A、一个类只能有一个对象B、对象是类的具体实例C、类是某一类对象的抽象D、类和对象的关系是一种数据类型和变量的关系14、用例图中用例之间的关系通常有关联关系、依赖关系和(C)关系。
A、协作B、聚合C、泛化D、内聚15、动态模型图包括:时序图、协作图、状态图和(C)图。
A、对象图B、设计图C、活动图D、结构图二、简答题1.简要介绍用例图的三个要素。
答:用例图主要包括以下三个元素:①用例(Use Case):用例是系统的使用过程或要执行的动作序列,用来描述某个参与者使用系统所完成的功能。
在图中用椭圆来表示,用例名称可写在椭圆中或椭圆下面。
第六章习题一、选择题1. 对象是面向对象范型的( A )。
每个对象可用它自己的一组( B )和它可以执行的一组( C )来表征。
应用执行对象的( C )可以改变该对象的( B )。
它的应用必须通过( D )的传递。
可以认为,这种( D )的传递大致等价于过程性范型中的函数调用。
某些语言提供了特殊功能,允许对象引用自己。
若一个对象没有显式地被引用,则可让该对象( E )。
供选择的答案:A. ①基本单位②最小单位③最大单位④语法单位B ~ C. ①行为②功能③操作④数据⑤属性D. ①接口②消息③信息④操作⑤过程E. ①撤消②歇着③缺省④隐式引用⑤引用自己2.在面向对象软件开发过程中特别重视复用。
软件构件应独立于当初开发它们的应用而存在。
在以后的应用开发中,可以调整这些独立构件以适应新问题的需要。
因此,应使得类成为一个( A )的单元。
这样就有一个( B )生存期问题。
( B )生存期有自己的步骤,与任一特定应用的开发( C )。
按照这些步骤,可以完整地描述一个基本( D )。
而不仅仅考虑当前正在开发的系统。
系统开发的各个阶段都可能会标识新的类。
随着各个新类的标识,( B )生存期引导开发工作逐个阶段循序渐进。
在设计与实现类时,应尽可能利用既存类提供为当前应用所需要的功能,利用既存类的三个可能途径是:( E )复用既存类;对既存类进行( F )以得到满足要求的类;重新开始进行开发。
供选择的答案:A. ①可复用②可测试③可适用④可靠B. ①应用②寿命③类④软件C. ①相关②密切相关③负相关④无关D. ①概念②实体③事件④事情E, F. ①修改②更新③照原样④演化3 从分析到设计的过程流如图所示。
一旦已经开发完成一个合理完整的( A )模型后,就要着手( B )的设计。
这需要描述( B )的特征,以准确表达待实现的用户需求,以及实现需求所必须的支持环境。
一旦定义了各个( B ),就开始( C )设计,这时,可利用CRC卡片,将属性转换为( D ),将关系转换为( E )。
供选择的答案:A ~ C. ①分析②系统设计③模块设计④子系统设计⑤对象设计⑥数据设计⑦操作设计⑧行为设计 D ~ E. ①对象②数据结构③算法④消息传递⑤控制⑥并发处理⑦进程⑧过程二、简答题1. 用面向对象范型开发软件时与用结构化范型开发软件时相比较,软件的生命周期有何不同?这种差异带来了什么后果?2. 为什么在开发大型软件时,采用面向对象范型比采用结构化范型较易取得成功?3. 为什么说夏利牌汽车是小汽车类的特化,而发动机不是小汽车类的特化?4. 对象和属性之间有何区别?5. 什么是对象?它与传统的数据有何异同?6. 什么是模型?开发软件时为什么要建立模型?7. 试用面向对象方法分析设计下述程序:在显示器屏幕上圆心坐标为(100,100)的位置有一个半径为40的圆,在圆心坐标为(200,300)的位置画一个半径为20的圆,在圆心坐标为(400,150)的位置画一条弧,弧的起始角度为30度,结束角度为120度,半径为50.8. 用面向对象方法解决下述问题时需要哪些对象类?类与类之间有何关系?在显示器屏幕上圆心坐标为(250,100)的位置,画一个半径为25的小圆,圆内显示字符串“you”;在圆心坐标为(250,150)的位置,画一个半径为100的中圆,圆内显示字符串“world”;再在圆心坐标为(250,250)的位置,画一个半径为225的大圆,圆内显示字符串“Universe”。
9. 试建立下述订货系统的用例模型。
假设一家工厂的采购部每天需要一张订货报表,报表按零件编号排序,表中列出所有需要再次订货的零件。
对于每个需要再次订货的零件应该列出下列数据:零件编号,零件名称,订货数量,目前价格,主要供应者,次要供应者。
零件入库或出库称为事务,通过放在仓库中的终端把事务报告给订货系统。
当某种零件的库存数量少于库存量临界值时就应该再次订货。
10. 为什么说面向对象方法与人类习惯的思维解题方法比较一致?第六章习题习题一、选择题1. 答案: A. ①, B. ⑤, C. ③, D. ② E. ③分析:对象是面向对象范型的基本单位。
每个对象可用它自己的一组属性和它可以执行的一组操作来表征。
应用执行对象的操作可以改变该对象的属性,属性一般只能通过操作来改变。
它的应用必须通过消息的传递。
发送给一个对象的消息定义了一个方法名和一个参数表(可能是空的),并指定某一个对象。
而由一个对象接收的消息则引用消息中指定的方法的代码,并将实际参数与参数表中相应的形式参数结合起来。
接收对象对消息的处理可能会改变对象中的状态,即改变接收对象的属性,并发送一个消息给自己或另一个对象。
可以认为,这种消息的传递大致等价于过程性范型中的函数调用。
然而,执行方法得到消息结果的目的是想修改相关对象的内部状态,而不只是修改变元并返回它们。
某些语言提供了特殊功能,像smalltalk提供了self,允许对象引用自己。
若一个对象没有显式地被引用,则可让该对象缺省。
2. 答案:A. ①, B. ③, C. ④, D. ②, E. ③, F. ④分析:在面向对象软件开发过程中特别重视复用。
软件构件应独立于当初开发它们的应用而存在。
构件的开发瞄准某些局部的设计和实现,它们可用于当前问题的解决,但为了在以后的项目中使用,它们还应当足够通用。
在以后的应用开发中,可以调整这些独立构件以适应新问题的需要。
为使得类成为一个可复用的单元,有一个类生存期的问题。
类生存期与应用生存期交叉。
在应用生存期的每一个阶段都可做类的标识。
类生存期有自己的步骤,与任一特定应用的开发无关。
按照这些步骤,可以完整地描述一个基本实体。
而不仅仅考虑当前正在开发的系统。
系统开发的各个阶段都可能会标识新的类。
随着各个新类的标识,类生存期引导开发工作逐个阶段循序渐进。
在设计与实现类的时候,有三种利用既存类的途径:§原封不动地复用既存类。
§对既存类进行演化以得到满足要求的类。
§重新开始进行开发。
3.答案:A. ①, B. ④, C. ⑤, D. ②, E. ④分析:从分析到设计的过程流如图所示。
一旦已经开发完成一个合理完整的分析模型后,就要着手子系统的设计。
这需要描述子系统的特征,以准确表达待实现的用户需求,以及实现需求所必须的支持环境。
在定义子系统时,需要在用户需求的整个上下文环境中互相协调:各个用户需求分配给哪个子系统?在OOA中定义的对象驻留在哪个子系统内?哪些子系统并发运行?负责协调和控制它们的系统构件是谁?全局资源在子系统中如何管理?等。
在设计子系统的过程中,需要定义4种重要的设计构件:§问题论域:负责实现用户需求的子系统。
§人机交互:实现用户界面的子系统(包括可复用的GUI子系统)。
§任务管理:负责控制和协调各种事件驱动、时钟驱动、并发执行任务的子系统。
§数据管理:负责对象存储和检索的子系统。
每一个构件都可以用一些类、必须的关系和行为来定义。
构件之间的关系可以通过建立每个构件的消息模型来建立。
一旦定义了各个子系统,包括上述的各个设计构件,就开始对象(类)设计,这时,可利用CRC卡片,将类转换为设计实现,转换工作如图所示。
二、简答题1. 答:用结构化范型开发软件时,软件的生命周期如下:(1)陈述需求阶段;(2)规格说明(分析)阶段;(3)设计阶段;(4)实现阶段;(5)维护阶段。
用面向对象范型开发软件时,软件的生命周期为:(1)陈述需求阶段;(2)面向对象分析阶段;(3)面向对象设计阶段;(4)面向对象实现阶段;(5)维护阶段。
粗看起来,用这两种不同的范型开发软件时软件生命周期基本相同。
但是,仔细分析起来就会发现两者之间有本质差别。
用结构化范型开发软件时,规格说明(分析)阶段的主要任务是,确定软件产品应该“做什么”;而设计阶段通常划分成结构设计(即概要设计)和详细设计这样两个子阶段。
在结构设计子阶段,软件工程师把产品分解成若干个模块,在详细设计子阶段再依此设计每个模块的数据结构和实现算法。
如果使用面向对象范型开发软件,则面向对象分析阶段的主要工作是确定对象。
因为对象就是面向对象软件的模块,因此,在面向对象分析阶段就开始了结构设计的工作。
由此可见,面向对象分析阶段比它在结构化范型中的对应阶段----规格说明(分析)阶段-----走得更远,工作更深入。
这两种范型的上述差异带来了重要的结果。
使用结构化范型开发软件时,在分析阶段和设计阶段之间有一个很大的转变:分析阶段的目的是确定产品应该“做什么”,而设计阶段的目的是确定“怎么做”,这两个阶段的工作性质明显不同。
相反,使用面向对象范型开发软件时,“对象”从一开始就进入了软件生命周期,软件工程师在分析阶段把对象提取出来,在设计阶段对其进行设计,在实现阶段对其进行编码和测试。
由此可见,使用面向对象范型开发软件时,在整个开发过程中都使用统一的概念“对象”,围绕对象进行工作,因此,阶段与阶段之间的转变比较平缓,从而减少了在开发软件过程中所犯的错误。
2. 答:结构化技术要么面向怎么处理(例如,面向数据流的设计方法),要么面向数据(例如,面向数据结构的设计方法),但却没有既面向处理又面向数据的结构化技术。
用结构化技术开发出的软件产品的基本成分,是产品的行为(即处理)和这些行为所操作的数据。
由于数据和对数据的处理是分离的,尽管开发者把程序划分成了许多模块,但是这些模块之间的联系却是比较紧密的,因此,使用结构化范型开发出的软件产品本质上是一个完整的单元。
由此带来的后果是,软件规模越大,用结构化范型开发软件的技术难度和管理难度就越大。
与结构化技术相反,面向对象技术是一种以数据为主线,把数据和处理相结合的方法。
面向对象范型把对象作为由数据及可以施加在这些数据上的操作所构成的统一体。
用面向对象范型开发软件时,构成软件系统的每个对象就好像一个微型程序,有自己的数据、操作、功能和用途,因此,可以把一个大型软件产品分解成本质上相互独立的小产品来处理,这就不仅降低了软件开发的技术难度,而且也使得对软件开发工作的管理变得相对容易了。
3. 答:夏利牌汽车具有小汽车的全部属性和行为,它只不过是一种特定品牌的小汽车,因此,夏利牌汽车可以从基类“小汽车”派生出来,也就是说,夏利牌汽车是小汽车类的特化。
发动机是组成小汽车的一种零件,小汽车还有车身、车灯、轮子等许多种其他零件,小汽车所具有的许多属性和行为发动机都不具有,因此,发动机不能从小汽车类派生出来,它不是小汽车类的特化。
4. 答:对象是对客观世界实体的抽象,它是描述实体静态属性的数据和代表实体动态行为的操作结合在一起所构成的统一体。
属性只不过是对象的一种特性,它是组成对象的一种成分。