您的当前位置:首页正文

《软件工程案例教程》李军国主编习题答案

来源:画鸵萌宠网
《软件⼯程案例教程》李军国主编习题答案

第1章习题答案⼀、判断题

⼆、填空题

三、简答题1.软件的特点:①软件具有抽象性。

②软件与硬件的⽣产⽅式不同。③软件与硬件的维护⽅式不同。④软件具有复杂的逻辑性。⑤软件的成本较⾼。

⑥软件的使⽤和社会因素有关。2.软件危机产⽣的原因:①⽤户需求不明确。②缺乏正确的理论指导。③软件开发规模越来越⼤。④软件开发复杂度越来越⾼。3.软件危机的主要表现:①软件开发进度难以预测。②软件开发成本难以控制。③⽤户对产品功能难以满⾜。④软件产品质量⽆法保证。⑤软件产品难以维护。⑥软件缺少适当的⽂档资料。4.软件⼯程学的基本原则有哪些:①抽象。

②信息隐蔽。③模块化。④局部化。⑤确定性。⑥⼀致性。⑦完备性。⑧可验证性。

5 什么是软件的⽣命周期?

答案:软件与任何⼀个事物⼀样,有它的孕育、诞⽣、成长、成熟、衰亡的⽣存过程。这就是软件的⽣存周期。

6 软件⼯程过程有哪⼏个基本过程活动?试说明之。答案:软件⼯程过程的基本过程活动有4步:

①软件规格说明(需求定义)。规定软件的功能及其运⾏的限制;②软件设计与开发(设计开发)。产⽣满⾜规格说明的软件;③软件确认(测试)。确认软件能够完成客户提出的要求;

④软件演进(维护)。为满⾜客户的变更要求,软件必须在使⽤的过程中演进。四、综合题

1.详细说明软件⽣命周期分哪⼏个阶段?

答案:软件⽣命周期主要分为6个阶段:软件项⽬计划、软件需求分析和定义、软件设计、程序编码、软件测试,以及运⾏维护。

(1)软件项⽬计划:在这⼀步要确定软件⼯作范围,进⾏软件风险分析,预计软件开发所需要的资源,建⽴成本与进度的估算。根据有关成本与进度的限制分析项⽬的可⾏性。

(2)软件需求分析和定义:在这⼀步详细定义分配给软件的系统元素。可以⽤以下两种⽅式中的⼀种对需求进⾏分析和定义。⼀种是正式的信息域分析,可⽤于建⽴信息流和信息结构的模型,然后逐渐扩充这些模型成为软件的规格说明。另⼀种是软件原型化⽅法,即建⽴软件原型,并由⽤户进⾏评价,从⽽确定软件需求。

(3)软件设计:软件的设计过程分两步⾛。第⼀步进⾏概要设计,以结构设计和数据设计开始,建⽴程序的模块结构,定义接⼝并建⽴数据结构。此外,要使⽤⼀些设计准则来判断软件的质量。第⼆步做详细设计,考虑设计每⼀个模块部件的过程描述。经过评审后,把每⼀个加细的过程性描述加到设计规格说明中去。

(4)程序编码:在设计完成之后,⽤⼀种适当的程序设计语⾔或CASE⼯具⽣成源程序。应当就风格及清晰性对代码进⾏评审,⽽且反过来应能直接追溯到详细设计描述。

(5)软件测试:单元测试检查每⼀单独的模块部件的功能和性能。组装测试提供了构造软件模块结构的⼿段,同时测试其功能和接⼝。确认测试检查所有的需求是否都得到满⾜。在每⼀个测试步骤之后,要进⾏调试,以诊断和纠正软件的故障。

(6)软件维护:为改正错误,适应环境变化及功能增强⽽进⾏的⼀系列修改活动。与软件维护相关联的那些任务依赖于所要实施的维护的类型。2.试论述瀑布模型软件开发⽅法的基本过程。

答案:瀑布模型规定了各项软件⼯程活动,包括:制定软件项⽬计划,进⾏需求分析和定义,软件设计,程序编码,测试及运⾏维护。并且规定了它们⾃上⽽下,相互衔接的固定次序,如同瀑布流⽔,逐级下落。然⽽软件开发的实践表明,上述各

项活动之间并⾮完全是⾃上⽽下,呈线性图式。实际情况是,每项开发活动均应具有以下特征:(1)从上⼀项活动接受本项活动的⼯作对象,做为输⼊;(2)利⽤这⼀输⼊实施本项活动应完成的内容;

(3)给出本项活动的⼯作成果,做为输出传给下⼀项活动;

(4)对本项活动实施的⼯作进⾏评审。若其⼯作得到确认,则继续进⾏下⼀项活动,否则返回前项,甚⾄更前项的活动进⾏返⼯。第2章习题答案⼀、判断题

⼆、选择题

三、填空题

四、简答题

1可⾏性研究主要做4个⽅⾯的研究:

①经济可⾏性:进⾏成本⁄效益分析。从经济⾓度判断系统开发是否“合算”。②技术可⾏性:进⾏技术风险评价。从开发者的技术实⼒、以往⼯作基础、问题的复杂性等出发,判断系统开发在时间、费⽤等限制条件下成功的可能性。③法律可⾏性:确定系统开发可能导致的任何侵权、妨碍和责任。

④⽅案的选择:评价系统或产品开发的⼏个可能的候选⽅案。最后给出结论意见。2需求获取难的原因是:

①⽤户需求具有动态性(不稳定性)。②⽤户需求具有模糊性(不准确性)。③对需求达成⼀致的艰难性。④管理体制、机构设置处在变⾰中。⑤软件书籍没有将需求分析讲清楚。3.需求分析的原则:

①解决逻辑问题:需求分析是对问题的识别和说明,要回答“做什么”,⽽不是“怎么做”。

②以运⾏环境为基础:需求分析⼯作应以具体的运⾏环境为基础,实事求是。③⽤户参与的原则:需求分析⼯作是系统分析⼈员同⽤户不断交互的过程。④构造⾼质量的需求规格说明:需求规格说明是需求分析⼯作重要的完成标志。4.需求分析的任务有:

①画出⽬标系统的组织机构模型。②画出⽬标系统业务操作流程图。③画出⽬标系统的数据流图。

④列出⽬标系统的功能点列表,即功能模型。⑤列出系统的性能点列表,即性能模型。⑥列出⽬标系统的接⼝列表,即接⼝模型。⑦确定⽬标系统的运⾏环境,即环境模型。⑧⽬标系统的界⾯约定,即界⾯模型。⑨分析与评估开发⼯期、费⽤、进度、风险等。5数据流图的作⽤:

数据流图可以⽤来抽象地表⽰系统或软件。它从信息传递和加⼯的⾓度,以图形的⽅式刻画数据流从输⼊到输出的移动变换过程,同时可以按⾃顶向下、逐步分解的⽅法表⽰内容不断增加的数据流和功能细节。因此,数据流图既提供了功能建模的机制,也提供了信息流建模的机制,从⽽可以建⽴起系统或软件的功能模型。6数据词典的作⽤:

分析模型中包含了对数据对象、功能和控制的表⽰。在每⼀种表⽰中,数据对象和控制项都扮演⼀定的⾓⾊。为表⽰每个数据对象和控制项的特性,建⽴了数据词典。数据词典精确地、严格地定义了每⼀个与系统相关的数据元素,并以字典式顺序将它们组织起来,使得⽤户和分析员对所有的输⼊、输出、存储成分和中间计算有共同的理解。第3章习题答案⼀、判断题

⼆、选择题

三、填空题

四、简答题1.模块的基本属性:

①功能:描述该模块做什么?②逻辑:描述模块内部怎么做?③状态:模块使⽤时的环境和条件。④接⼝:指模块的输⼊与输出。2.软件设计的具体任务:①制定规范②结构设计③处理⽅式结构设计④数据结构及数据库设计⑤可靠性设计(质量设计)⑥编写软件设计⽂档⑦设计审查和复审⑧详细设计3.模块化的特征:

①抽象:⽤层次的⽅式构造和分析复杂系统。

②逐步求精:帮助开发⼈员把精⼒集中在与当前开发阶段最相关的那些问题上。③信息隐蔽:如果⼀个模块内包含的信息(过程和数据) 不允许外部的模块访问的话,其它模块不能对其访问。

④局部化:把⼀些关系密切的软件元素物理地放得彼此靠近。4.软件设计优化的准则:

①划分模块时,尽量做到⾼内聚、低耦合,保持模块相对独⽴性。模块划分的准则:“将相关的各部分放在⼀起,⽆关的东西不要放在⼀起。”②模块的⼤⼩要适中。

③模块的接⼝要简单、清晰、含义明确,便于理解,易于实现、易于测试和维护。④⼀个模块的作⽤范围应在其控制范围之内,且判定所在的模块,应与受其影响的

模块在层次上尽量靠近。

⑤软件结构的深度、宽度、扇⼊、扇出应适当。

⑥⼒求设计单⼊⼝和单出⼝的模块,避免“病态连接”,以防⽌内容耦合。⑦设计功能可预测模块的划分,应防⽌功能过分局限。5.结构化设计的优点:

①减少设计复杂性。将⼤化⼩,使复杂问题简单化。②结构独⽴。将程序划分成多个相对独⽴的模块。③模块功能单⼀化,可使软件设计获得最⼤的益处。④易于进⾏软件修改。⑤易于开发和维护。⑥加强了代码的可重⽤性。五、综合题

1.③、⑤、④、②、⑥、⑦、①2.③、⑥、④、⑦、②、⑤、①第4章习题答案⼀、填空题

⼆、简答题

1.⾯向对象是:Coad和 Yourdon给出的定义:“⾯向对象(Object Oriented,OO)=对象

(Object)+类(Classification)+继承(Inheritance)+通信(Communication with Messages)”。2.⾯向对象基本特征是:⾯向对象技术的基本特征主要是抽象性、封装性、继承性和多态性。

3.软件开发过程指:软件开发过程就是将软件系统所涉及到的应⽤领域和业务范围(现实世界)的问题空间和⽤于解决某些问题的软件系统的解空间之间的映射。4.传统软件开发⽅法存在的问题:(1)问题空间不能直接映射到解空间(2)软件复⽤程度低(3)分析不能直接过渡到设计(4)软件可维护性差(5)软件不满⾜⽤户需要5.⾯向对象开发⽅法的特点:

(1)对软件开发过程所有阶段进⾏综合考虑。

(2)软件⽣存期各阶段所使⽤的⽅法、技术具有⾼度的连续性,⽤符合⼈类认识世界的思维⽅式来分析、解决问题。(3)增强系统稳定性(4)具有良好的可复⽤性

6.统⼀建模语⾔:UML是具有指定的建模元素(图式符号),严格的语法(构图规则),明确的语义(逻辑含义)的建模语⾔,是⾯向对象技术领域内占主导地位的标准建模语⾔。7.Coda/Yourdon⽅法的⾯向对象设计模型:Coda/Yourdon⽅法的OOD模型是在OOA模型

5个层次(主题层、类与对象层、结构层、属性层和服务层)基础上,建⽴4个组元的设计模型:问题域组元(PDC)、⼈机交互组元(HIC)、任务管理组元(TMC)和数据管理组元(DMC)。8.简述UML视图结构:

(1)⽤例视图:描述系统的外部特性、系统功能等。(2)逻辑视图:描述系统设计特征。(3)进程视图:表⽰系统内部的控制机制。(4)配置视图:描述系统的物理配置特征。

(5)实现视图:表⽰系统的实现特征,常⽤构件图表⽰。三、综合题

1.类、属性、操作、继承、多态、封装及抽象类的概念:(举例略)

1)类,⼜称对象类(Object Class),是⼀组具有相同属性和相同操作的对象的集合。2)类具有属性,它是对象的状态的抽象,⽤数据结构来描述类的属性。3)类具有操作,它是对象的⾏为的抽象,操作实现的过程称为⽅法。

4)继承是类间的基本关系,它是基于层次关系的⽗类和⼦类之间共享数据和操作的⼀种机制。

5)多态是指同⼀个操作作⽤于不同的对象上可以有不同的解释,并产⽣不同的执⾏结果。6)封装是⼀种信息隐蔽技术,⽤户只能看见对象封装界⾯上的信息,对象的内部实现对⽤户是隐蔽的。

7)抽象类是没有实例的类,它把⼀些类组织起来,提供⼀些公共的⾏为,但并不需要使⽤这个类的实例,⽽仅使⽤其⼦类的实例。2.⾯向对象开发⽅法及每个⽅法的特点:(1)Booch⽅法

Booch⽅法描述了⾯向对象的软件开发⽅法的基础问题,指出⾯向对象开发是⼀种根本不同于传统的功能分解的设计⽅法。Booch⽅法的开发模型包括静态模型和动态模型,Booch⽅法偏向于系统的静态描述,对动态描述⽀持较少。(2)Coda/Yourdon⽅法

在Coda/Yourdon⽅法中,对于⼀个复杂问题建⽴问题域的分析模型,构造和评审OOA概念模型的顺序由5个层次组成,OOD模型是在OOA模型5个层次基础上,建⽴4个组元的设计模型。该⽅法简单、易学。(3)OMT⽅法

OMT⽅法使⽤了建模的思想,讨论如何建⽴⼀个实际的应⽤模型。从3个不同⽽⼜相关的⾓度建⽴了三类模型,三类模型描述的⾓度不同,却⼜相互联系。(4)OOSE⽅法

OOSE的开发活动主要分为三类:分析、构造和测试。OOSE将⾯向对象的思想应⽤于软件⼯程中,建⽴五个模型。OOSE⽅法的最⼤特点是⾯向⽤例,建⽴了Use Case 模型。OOSE⽅法⽐较适合⽀持商业⼯程和需求分析。第5章习题答案⼀、判断题

⼆、填空题

三、简答题1.⾯向对象分析:

⾯向对象分析就是运⽤⾯向对象的⽅法进⾏需求分析,其主要任务是分析和理解问题域,找出相应的描述问题域和系统责任所需的类及对象,分析它们的内部构成好外部关系,正确地抽象为规范的对象,定义其内部结构和外部消息传递关系,建⽴问题域精确模型的过程。

2.⾯向对象分析的模型的构成:

(1)基本模型:基本模型是⼀个类图。构成类图的元素所表达的模型信息,分为三个层次:对象层、特征层和关系层。(2)补充模型:补充模型有主题图和交互图。(3)详细说明

3.⾯向对象分析的过程:(1)获取客户对系统的需求(2)标识类和对象(3)定义类的结构和层次(4)建造对象-关系模型(5)建⽴对象-⾏为模型4.确定服务:

(1)确定访问对象属性的操作(2)来⾃事件驱动的操作(3)处理对应的操作(4)消除冗余操作5.动态模型:

对于⼀个系统来说,功能模型指明了系统应该“做什么”,⽽动态模型则明确规定了“什么时候做”。即在何种状态下、接受了什么事件的触发,来确定对象的可能事件的顺序。6.准备脚本:

在建⽴动态模型的过程中,脚本是指在某⼀执⾏期间内系统中的对象(或其他外部设备)与⽬标系统之间发⽣⼀个或多个典型的互换信息时产⽣的事件,所互换的信息值就是该事件的参数,对于各事件,应确定触发事件的动作对象和该事件的参数。7.准备事件跟踪图:

事件跟踪图能形象、清晰地表⽰事件序列以及事件与对象的关系。在事件跟踪图中,⼀条竖线代表⼀个类和对象,每个事件⽤⼀条⽔平的箭头线表⽰,箭头⽅向从事件的发送对象指向接受对象。事件按照先后顺序排列,时间从上向下递增。8.确定基本系统模型图:

基本系统模型是⽤来确定系统的边界和输⼊/输出数据流的,表明⼀个计算如何从输⼊值得到输出值,表明值之间的依赖关系及相关的功能,它不考虑计算的次序。9.⾯向对象分析的⽬的:

⾯向对象分析的⽬的是对客观世界的系统进⾏建模,是定义所有与待解决问题相关的类。完成对所求解问题的分析,确定系统“作什么”,并建⽴系统的模型。10.⾯向对象分析的基本任务:

⾯向对象分析的基本任务是运⽤⾯向对象的⽅法,软件⼯程师和⽤户必须充分沟通,以了解基本的⽤户需求,对问题域和系统责任进⾏分析和理解。

11.为建⽴分析模型,要运⽤的基本原则:(1)建⽴信息域模型;(2)描述功能;(3)表达⾏为;

(4)划分功能、数据、⾏为模型,揭⽰更多的细节;

(5)⽤早期的模型描述问题的实质,⽤后期的模型给出实现的细节。12.建⽴对象-⾏为模型的步骤:

(1)评估所有的⽤例,完全理解系统中交互的序列。

(2)标识驱动交互序列的事件,理解这些事件如何和特定的对象相关联。(3)为每个⽤例创建事件轨迹(event trace)。(4)为系统建造状态机图。

(5)复审对象—⾏为模型,以验证准确性和⼀致性。四、综合题

1.完成实例《图书管理系统》⾯向对象的分析过程,包括:静态模型、动态模型和功能模型。系统需求:

在图书馆管理系统中,要为每个借阅者建⽴⼀个账户,并给借阅者发放借阅卡(借阅卡号,借阅者名),账户存储借阅者的个⼈信息、借阅信息以及预定信息。

持有借阅卡的借阅者可以借阅书刊、返还书刊、查询书刊信息、预定书刊并取消预定,但这些操作都是通过图书管理员进⾏的,也即借阅者不直接于系统交互,⽽是图书管理员充当借阅者的代理与系统交互。

在借阅书刊时,需要输⼊所借阅的书刊名、书刊的ISBN/ISSN号,然后输⼊借阅者的图书卡号和借阅者名,完成后提交所填表格,系统验证借阅者所借阅的书刊是否存在,若存在,则借阅者可借出书刊,建⽴并在系统中存储借阅记录。

借阅者还可预定该书刊,⼀旦借阅者预定的书刊可以获得,就将书刊直接寄给预定⼈。另外,不考虑书刊的最长借阅期限,假设借阅者可以⽆限期地保存所借阅的书刊。答:分析模型

第6章习题答案⼀、判断题

⼆、填空题

三、简答题1.优化对象设计:(1)确定优先级(2)提⾼效率(3)调整继承关系2.设计内部结构:

(1)确定遗漏的属性和操作(2)指定类型,声明可见性3.⾯向对象启发规则是:①设计结果应该清晰易懂②⼀般-特殊结构的深度应适当③设计简单类④使⽤简单的协议

⑤使⽤简单的操作⑥把设计变动减⾄最⼩4.⾯向对象设计:

⾯向对象设计是⾯向对象⽅法在软件设计阶段应⽤与扩展的结果,就是根据在问题域中已建⽴的分析模型,运⽤⾯向对象技术进⾏系统软件设计,并且补充实现的细节部分,如⼈机界⾯、数据存储、任务管理等,形成符合成本和质量要求的、抽象的系统实现⽅案,在求解域中建⽴设计模型。5.设计任务管理⼦系统:

任务管理的设计包括:确定要执⾏的任务并识别它的特征、确定任务的优先级、创建协调任务来协调所有其他任务、为每个任务设计对象,并定义它们之间的关系。6.设计数据管理⼦系统:

数据管理⼦系统也称数据管理部分。数据存储管理是建⽴在某种数据存储管理系统之上,提供了数据在数据管理系统中存储和检索对象的基本结构,是系统存储或检索对象的基本设施。7.对全局资源管理:

全局资源包括物理资源(磁盘驱动器、处理器、通信线路)或逻辑资源(数据库、对象)。不但有访问权限的问题,还有访问冲突的问题。所以,应该标识全局资源,并制定访问它们的策略。8.选择控制流机制:

分析模型中所有交互⾏为都表⽰为对象之间的事件。系统设计必须从多种⽅法中选择某种⽅法来实现软件的控制。9.设计边界条件:

设计中的⼤部分⼯作都与系统稳定的状态⾏为有关。但必须考虑边界条件:系统如何启动、初始化、关闭以及故障处理。10.评审:

分析模型与设计模型映射,每个需求和每个系统设计问题都提到了,模型不包括任何冲突,能够实现,由⾮系统设计⼈员能够看懂模型。11.对象设计:

系统分析确定了问题域对象,以及它们之间的关系、相关的属性、操作。系统设计确定了⼦系统和⼤多数重要的求解域对象。12.设计关联:

根据应⽤系统中的使⽤⽅式来确定实现关联的策略。可以选定⼀个统⼀实现所有关联的全局性的策略,或者对不同的关联选择不同的实现策略。13.设计接⼝:

接⼝提供了⼀种⽅法,把对象基于操作的功能说明与具体实现区分开来,使得任何依赖和使⽤接⼝的客户不必依赖于接⼝的具体实现,有利于接⼝实现的替换。14.设计类中服务:

设计类中的服务是⾯向对象设计的⼀项重要内容。需要综合考虑对象模型、动态模型和功能模型,才能正确确定类中应有的服务。

15.⾯向对象设计中存在下述3种内聚形式:

①服务内聚:⼀个服务应该完成⼀个且仅完成⼀个任务。

②类内聚:设计类的原则是,⼀个类应该只有⼀个功能,它的属性和服务应该是⾼内聚的。

③层内聚:⼜称⼀般-特殊内聚。

16.客户/服务器(Client-service)交互⽅式和平等伙伴(Peer-to-peer)交互⽅式:①客户/服务器(Client-service)交互⽅式:在客户/服务器关系中,作为“客户”

的⼦系统调⽤作为“服务器”的⼦系统,执⾏某些服务后并返回结果。

②平等伙伴(Peer-to-peer)交互⽅式:在该交互⽅式中,每个⼦系统都可能调⽤其他⼦系统,因此,每个⼦系统都必须了解其他⼦系统的接⼝,⼦系统间必须相互了解接⼝。四、综合题

1.分析模型与设计模型的区别:

2.⽂件管理系统、关系数据库管理系统和⾯向对象数据库管理系统三种数据存储管理模式的优缺点:(1)⽂件管理系统A.主要优点:

a)使⽤它长期保存数据具有成本低和简单等特点b)数据按字节流存储,适合于存储⼤容量数据。B.主要缺点:

a)⽂件操作的级别低,操作繁琐,实现⽐较困难,为提供适当的抽象级别还必须编写额外的代码。b)⽂件管理系统是操作系统的⼀个组成部分,不同操作系统的⽂件管理系统往往有明显差异。(2)关系数据库管理系统A.主要优点:

a)提供了各种最基本的数据管理功能。b)为多种应⽤提供了⼀致的接⼝。c)⽀持标准化的语⾔。B.主要缺点:a)运⾏开销⼤。

b)不能满⾜⾼级应⽤的需求。c)与程序设计语⾔的连接不⾃然。(3)⾯向对象数据库管理系统

A.在关系数据库的基础上,将对象和关系作为数据储存,加强了⼀些操作功能。B.⾯向对象程序设计语⾔中扩充了数据库的功能。C.从⾯向对象⽅法本⾝出发来设计数据库。D.查询⽐关系数据库慢。

3.实例《图书管理系统》⾯向对象的设计过程。系统需求:

在图书馆管理系统中,要为每个借阅者建⽴⼀个账户,并给借阅者发放借阅卡(借阅卡号,借阅者名),账户存储借阅者的个⼈信息、借阅信息以及预定信息。

持有借阅卡的借阅者可以借阅书刊、返还书刊、查询书刊信息、预定书刊并取消预定,但这些操作都是通过图书管理员进⾏的,也即借阅者不直接于系统交互,⽽是图书管理员充当借阅者的代理与系统交互。

在借阅书刊时,需要输⼊所借阅的书刊名、书刊的ISBN/ISSN号,然后输⼊借阅者的图书卡号和借阅者名,完成后提交所填表格,系统验证借阅者所借阅的书刊是否存在,若存在,则借阅者可借出书刊,建⽴并在系统中存储借阅记录。

借阅者还可预定该书刊,⼀旦借阅者预定的书刊可以获得,就将书刊直接寄给预定⼈。另外,不考虑书刊的最长借阅期限,假设借阅者可以⽆限期地保存所借阅的书刊。设计模型:

第7章习题答案⼀、判断题

⼆、选择题

三、填空题

四、简答题

1. 简述程序设计语⾔的三种类型及特点?机器语⾔,汇编语⾔:依赖于机器,⾯向机器⾼级语⾔:独⽴于机器,⾯向过程或⾯向对象⾯向问题语⾔:独⽴于机器,⾮过程式语⾔(4GL)1.程序设计语⾔基本成分是什么?

答:基本成份可归纳为四种:数据成分、运算成分、控制成分、传输成分。

①数据成分:指明该语⾔能接受的数据,⽤来描述程序中的数据。如各种类型的变量、数组、指针、记录等。

②运算成分:它指明该语⾔允许执⾏的运算,⽤来描述程序中所需进⾏的运算。如+ 、- 、* 、/ 等。

③控制成分:它指明该语⾔允许的控制结构,⼈们可利⽤这些控制成分来构造程序中的控制逻辑。

④传输成分:它指明该语⾔允许的数据传输⽅式,在程序中可⽤它进⾏数据传输。2.良好的⾯向对象程序设计风格有哪些准则?

既包括传统的程序设计风格准则,也包括为适应⾯向对象⽅法所特有的概念(例如,继承性)⽽必须遵循的⼀些新准则:提⾼可重⽤性、提⾼可扩充性和提⾼健壮性。五、综合题

1. 如何选择适合项⽬的⾯向对象程序设计语⾔

开发⼈员在考虑⾯向对象语⾔的选择时,除了语⾔⾃⾝特点外也应考虑以下⼀些实际因素:(1)将来能否占主导地位(2)可重⽤性(3)类库和开发环境

(4)其他因素:对⽤户学习⾯向对象分析、设计和编码技术所能提供的培训服务⽔平;在使⽤⾯向对象语⾔时所能提供的技术⽀持资源;能提供给开发⼈员使⽤的开发⼯具、平台和发布平台,对及其性能和内存的需求,集成已有软件的⽅便程度等等。

2. 请分别画出顺序结构、选择结构、循环结构的结构⽰意图

顺序结构条件选择结构while循环结构

3. 考虑提⾼程序效率,必须明确的三条原则是?

程序的效率是指程序的执⾏速度及程序所需占⽤的内存的存储空间。程序编码是最后提⾼运⾏速度和节省存储的机会,因此在此阶段不能不考虑程序的效率。在讨论提⾼效率的要求,应该明确三条原则:①效率是⼀个性能要求,⽬标应在需求分析阶段给出。

②追求效率要建⽴在不损害程序可读性或可靠性基础之上,要先使程序正确,再提⾼程序效率;先使程序清晰,再提⾼程序效率。

③提⾼程序效率的根本途径在于选择良好的设计⽅法、良好的数据结构与算法,⽽不是靠编程时对程序语句做调整。4. 为什么要进⾏程序复杂性度量?

①随着软件项⽬开发规模的不断扩⼤,要保证软件产品质量难度也越来越⼤,单凭以往

的程序开发经验很难保证软件产品质量及开发的顺利进⾏,需要对产品及开发产品的过程进⾏度量,这就是软件度量。②程序复杂性度量是软件度量的重要组成部分,是指理解和处理程序的难易程度,主要

针对模块内程序的复杂性。它直接关联到软件开发费⽤的多少,开发周期的长短和软件内部潜伏错误的多少。对程序进⾏复杂性度量可以减少程序复杂性,提⾼软件的简单性和可理解性,并使软件开发费⽤减少,开发周期缩短,软件内部潜藏错误减少。

5. 对照本章内容,对⾃⼰熟悉的⼀门程序设计语⾔,尝试分析和总结其基本成分和技术特点。并编写包括输⼊输出,数据运算,注释的程序,长度不⼩于500⾏。略

6. 对照本章程序设计风格的内容,尝试修改代码。略

第8章习题答案⼀、选择题

⼆、简答题

1.软件测试的⽬的是什么?答:测试的⽬的:

(1)测试是⼀个为了发现程序中的错误为⽬的的程序执⾏过程;(2)⼀个好的测试⽤例是能最⼤限度地找到迄今为⽌尚未发现的错误;(3)成功的测试是能发现了那些尚未发现的错误。2.什么是⿊盒测试?有哪些常⽤的⿊盒测试⽅法?

⿊盒测试法是依据软件的需求规格说明书,检查程序功能是否满⾜需求的要求,主要的⿊盒测试⽅法有:等价类划分,边界值分析,错误推测法,因果图法和场景法。3.什么是⽩盒测试?有哪些常⽤的⽩盒测试⽅法

⽩盒测试主要针对于程序内部逻辑和数据流程的测试,因此⽩盒测试的测试⽤例设计需要了解程序的内部逻辑。常⽤的⽩盒测试⽅法主要有逻辑覆盖法、基本路径测试法。4.验证与确认之间的区别:

验证是检验开发出来的软件产品和设计规格说明书的⼀致性,即是否满⾜软件⼚商的⽣产要求,保证⽣产出的产品是⾼质量的产品。确认就是检验产品功能的有效性,即是否满⾜⽤户的真正需求,确认是⽤户需要的产品。

因为设计规格说明书本⾝有可能存在错误,即便软件产品中某个功能实现的结果和设计规格说明书完全⼀致,但也可能不是⽤户需要的,因为设计规格说明书⼀开始就对⽤户需求的理解错了,所以仅仅进⾏验证测试是不充分的,还要进⾏确认测试,5.软件测试应该划分⼏个阶段?各个阶段应重点测试的内容是什么?

答:⼤体上来说可分为单元测试、集成测试、系统测试、验收测试;每个阶段⼜分为确定测试计划,测试设计,设计测试⽤例,实施测试,进⾏测试报告五个步骤:。

1)单元测试对软件中的基本组成单位进⾏的测试,如⼀个模块、⼀个过程等等。它是软件动态测试的最基本的部分,也是最重要的部分之⼀,其⽬的是检验软件基本组成单位的正确性。

2)集成测试软件系统集成过程中所进⾏的测试,其主要⽬的是检查软件单位之间的接⼝是否正确。

3)系统测试,系统测试是对已经集成好的软件系统进⾏彻底的测试,以验证软件系统的正确性和性能等满⾜其规约所指定的要求,检查软件的⾏为和输出是否正确并⾮⼀项简单的任务,它被称为测试的“先知者问题”。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top