版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1章 作业参考答案 PAGE 47第1章 软件与软件工程的概念1.1 举出你所知道的应用软件的例子。办公软件、游戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。1.2 认为“软软件就是程序序,软件开发发就是编程序序。”这种观观点是否正确确?为什么?认为“软件就是是程序,软件件开发就是编编程序。”这这种观点是错错误的。首先,软件是计计算机系统中中与硬件相互互依存的另一一部分,它是是包括程序,数数据及其相关关文档的完整整集合,程序序只是软件的组组成部分之一一;其次,在在软件开发中中,编程只是是软件开发过过程的一个阶阶段。1.3 如果将将软件开发比比作高楼大厦厦的建造,可可
2、以将软件的的设计比作什什么?可以将软件的设设计比作建筑筑设计,软件件设计的成果果相当于建筑设设计的设计图图纸。1.4 什么是是软件危机?它有哪些典典型表现?为为什么会出现现软件危机?软件危机:软件件危机是指在在计算机软件件的开发和维维护过程中所所遇到的一系系列严重问题题。典型表现:对软件开发成本本和进度的估估计常常很不不准确。用户对“已完成成的”软件系统不不满意的现象象经常发生。软件产品的质量量往往靠不住住。软件常常是不可可维护的。软件通常没有适适当的文档资资料。软件成本在计算算机系统总成成本中所占的的比例逐年上上升。软件开发生产率率提高的速度度,既跟不上上硬件的发展展速度,也远远远跟不上计计
3、算机应用迅迅速普及深入入的趋势。 产生软件危机的的原因: 除了软件本本身的特点,其其原因主要有有以下几个方方面: (1) 缺乏软软件开发的经经验和有关软软件开发数据据的积累,使使得开发工作作计划很难制制定。(2) 软件人人员与用户的的交流存在障障碍,使得获获取的需求不不充分或存在在错误。(3) 软件开开发过程不规规范。如,没没有真正了解解用户的需求求就开始编程程序。(4) 随着软软件规模的增增大,其复杂杂性往往会呈呈指数级升高。需需要很多人分分工协作,不不仅涉及技术术问题,更重重要的是必须须有科学严格格的管理。(5) 缺少有有效的软件评评测手段,提提交给用户的软件件的质量不能完完全保证。1.5
4、 什么是是软件工程?软件工程是指导导计算机软件件开发和维护护的工程学科科。采用工程程的概念、原原理、技术和和方法来开发发和维护软件件,把经过时时间考验而证证明正确的管管理技术和当当前能够得到到的最好的技技术方法结合合起来,以经经济地开发出出高质量的软软件并有效地地维护它,这这就是软件工工程。1.6 简述软软件生存期由由哪些主要的的阶段组成,每每一阶段的主主要任务是什什么?问题定义与可行行性研究:问问题定义必须须回答的关键键问题是:“要解决的问问题是什么”。可行性研研究要回答的的关键问题是是:“在成本和时时间的限制条条件下能否解解决问题?是是否值得做?”。需求分析:这个个阶段的任务务仍然不是具具
5、体地解决客客户的问题,而而是准确地回回答“目标系统必必须做什么”这个问题。软件设计:本阶阶段要回答的的关键问题是是“目标系统统如何做?”为为此,必须在在设计阶段中中制定设计方方案,把已确确定的各项需需求转换成相相应的软件体体系结构。结结构中的每一一组成部分都都是意义明确确的构件,此此即所谓概要要设计。进而而具体描述每每个构件所要要完成的工作作,为源程序序编写打下基基础,此即所所谓详细设计计。程序编码和单元元测试:本阶阶段要解决的的问题是“正正确地实现已已做的设计”,为此,需要选择合适的编程语言,把软件设计转换成计算机可以接受的程序代码,并对程序结构中的各个模块进行单元测试,然后运用调试的手段排
6、除测试中发现的错误。要求编写出的程序应当是结构良好、清晰易读的,且与设计相一致的。集成测试和系统统测试:集成测测试的任务是是将已测试过过的模块按设设计规定的顺顺序组装起来来,在组装的的过程中检查查程序连接的的问题。系统统测试的任务务是根据需求求规格说明的的要求,对必必须实现的各各项需求,逐逐项进行确认认,判定已开开发的软件是是否符合用户户需求,能否否交付用户使使用。为了更更有效地发现现系统中的问问题,通常这这个阶段的工工作由开发人人员、用户之之外的第三者者承担。运行维护:已交交付的软件投投入正式使用用,便进入运运行维护阶段。这这一阶段可能能持续若干年年。软件在运运行中可能由由于多方面的的原因,
7、需要要对它进行维维护。通常有有四种类型的的维护:改正正性维护、适适应性维护、完完善性维护和和预防性维护护。1.7 常见的的软件生存期期模型主要有有哪些?每种种模型的优缺缺点是什么?常见的软件生存存期模型主要要有瀑布模型型、快速原型型模型、增量量模型、螺旋旋模型、喷泉泉模型和统一一过程。瀑布模型优点:可强迫开开发人员采用用规范化的方方法;严格地地规定了每个个阶段必须提提交的文档;要求每个阶阶段交出的所所有产品都必必须经过质量量保证小组的的仔细验证。缺点:由于瀑布布模型几乎完完全依赖于书书面的规格说说明,很可能能导致最终开开发出的软件件产品不能真真正满足用户户的需要;用用户往往需要要等待很长时时间
8、才能看到到可以运行的的程序;适应应需求变更的的能力比较差差。适用范围:瀑布布模型只适用用于项目开始始时需求已确定定的情况。 (2) 快速原原型模型优点:有助于满满足用户的真真实需求;原原型系统已经经通过与用户户的交互而得得到验证,据据此产生的规规格说明文档档能够正确地地描述用户需需求。缺点:要求开发发人员快速建建立原型。适用范围:适用用于需求不明明确的软件项项目。(3) 增量模模型优点: 能在较短时间内内向用户提交交可完成一些些基本功能的的产品,即从从第一个构件件交付之日起起,用户就能能做一些有用用的工作。逐步增加产品的的功能可以使使用户有较充充裕的时间学学习和适应新新产品,从而而减少一个全全
9、新的软件可可能给用户组组织带来的冲冲击。项目失败的风险险较低,虽然然在某些增量量构件中可能能遇到一些问问题,但其他他增量构件将将能够成功地地交付给客户户。优先级最高的服服务首先交付付,然后再将将其他增量构构件逐次集成成进来。因此此,最重要的的系统服务将将接受最多的的测试。缺点:在把每个新的增增量构件集成成到现有软件件体系结构中中时,必须不不破坏原来已已经开发出的的产品。软件体系结构必必须是开放的的,即向现有有产品中加入入新构件的过过程必须简单单、方便。适用范围:适用用于工期紧张张、功能可以以划分、比较较复杂的软件件项目。软件件工程师必须须有较高的技技术水平,能能够设计出开开放的软件体体系结构。
10、(4) 螺旋模模型优点: 对可选方案和约约束条件的强强调有利于已已有软件的重重用,也有助助于把软件质质量作为软件件开发的一个个重要目标;减少了过多测试试或测试不足足所带来的风风险;在螺旋模型中维维护只是模型型的另一个周周期,在维护护和开发之间间并没有本质质区别。缺点:螺旋模型型是风险驱动动的,因此要要求软件开发发人员必须具具有丰富的风风险评估经验验和这方面的的专门知识,否否则将出现真真正的风险:当项目实际际上正在走向向灾难时,开开发人员可能能还以为一切切正常。 适用范围:适用用于内部开发发的大型软件件(开发周期期长、比较容容易受到社会会因素影响的的软件项目),软软件开发人员员具有丰富的的风险评
11、估知知识和经验。(5) 喷泉模模型优点:在开发过过程中使用统统一的概念和和方法,各阶阶段之间没有有明显的界限限,容易实现现各个开发过过程的多次反反复迭代,达达到了认识的的逐步深化,降降低了出错的的可能性。缺点:由于各个个阶段之间的的界线不明确确,容易造成成软件开发过过程的无序。适用范围:适用用于面向对象象的软件开发发。 (6) 统一过过程优点:提高了团团队生产力,在在迭代的开发发过程、需求求管理、基于于组件的体系系结构、可视视化软件建模模、验证软件件质量及控制制软件变更等等方面,针对对所有关键的的开发活动为为每个开发成成员提供了必必要的准则、模模板和工具指指导,并确保保全体成员共共享相同的知知
12、识基础。它它建立了简洁洁和清晰的过过程结构,为为开发过程提提供了较大的通用用性。缺点:RUP只只是一个开发发过程,并没没有涵盖软件件过程的全部部内容,例如如它缺少关于于软件运行和和支持等方面面的内容;此此外,它没有有支持多项目目的开发结构构,这在一定定程度上降低低了在开发组组织内大范围围实现重用的的可能性。适用范围:适用用于基于构件件的软件开发发。第2章 软件工工程方法与工工具2.1 软件工工程的三种基基本要素是什什么,各自的的作用是什么么?软件工程的三种种基本要素是方法、工具具和过程。(1) 软件工工程方法(mmethodd)为建造软软件提供技术术上的解决方方法(“如何何做”)。目目前使用得
13、最最广泛的方法法是传统方法法(结构化方方法)和面向向对象方法。(2) 工具为为方法的运用用提供自动的的或半自动的的软件支撑环环境。(3) 过程是是为了获得高高质量的软件件所需要完成成的一系列任任务的框架,它它规定了完成成各项任务的的工作步骤。2.2 简述传传统方法和面面向对象方法法的特点。(1) 传统方方法的特点传统方法也称为为生命周期方方法或结构化化范型。它采用用结构化技术术来完成软件件开发的各项项任务。这种种方法学把软软件生命周期期的全过程依依次划分为若若干个阶段,然然后顺序地逐逐步完成每个个阶段的任务务。每一个阶阶段的开始和和结束都有严严格的标准,对对于任何两个个相邻的阶段段而言,前一一
14、个阶段的结结束标准就是是后一阶段的的开始标准。 传统方法的主要要缺点是在适适应需求变化化方面不够灵灵活,另外,结构化方法要么面向行为,要么面向数据,缺乏使两者有机结合的机制。(2)面向对象象方法的特点点面向对象方法把把数据和行为为看成同等重重要,是将数据和和对数据的操操作紧密地结结合起来的方方法,这也是是面向对象方方法与传统方方法的重要区区别。面向对象方法的的出发点和基基本原则,是是尽量模拟人人类习惯的思思维方式,使使开发软件的的方法和过程程尽可能接近近人类认识问问题和解决问问题的方法与与过程,从而而使描述问题题的问题空间间与其解空间间在结构上尽尽可能一致。对于大型、复杂及交互性比较强的系统,
15、使用面向对象方法更有优势。2.3 形式化化方法的特点点是什么?形式化方法的主主要特点是:(1) 软件需需求规格说明明被细化为用用数学记号表表达的详细的的形式化规格格说明;(2) 设计、实实现和单元测测试等开发过过程由一个变变换开发过程程代替。通过过一系列变换换将形式的规格格说明细化成成为程序。 2.5 安装RRationnal Roose20000/20002/20003,并练习习基本操作。略。第3章 软件需需求获取与结结构化分析方方法3.1 为什么么结构化分析析要叫“结构构化”?有其其他可替代的的术语吗?“结构化”一词词应来源于“结结构化程序设设计”,先有有“结构化程程序设计”的的思想,后有
16、有结构化设计计及结构化分分析。有时称称传统的分析析方法,指的的就是结构化化分析方法。3.2顶层数据据流图或称环环境图的作用用是什么?顶层数据流图(或称环境图)仅包括一个数据处理过程,也就是要开发的目标系统。其作用如下:(1) 确定系系统在其环境境中的位置,与系统有联系的外部实体(包括硬件、软件、组织机构及人)有哪些。(2) 通过确确定系统的输输入和输出与与外部实体的的关系确定系系统的边界,也就是是要确定哪些些功能或处理理属于系统范范围之内,哪哪些属于系统统范围之外,需需要由其他系系统处理或人人工处理。3.3 在对数数据流图进行行分解时需要要注意哪些问问题?在对数据流图进进行分解时,需需要注意以
17、下下两个问题:(1) 当对数数据流图分层层细化时必须须保持信息连连续性,也就就是说,当把把一个处理分分解为一系列列处理时,分分解前和分解解后的输入/输出数据流必必须相同。(2) 注意分分层细化时对对编号的处理理方法。3.4 银行存存款业务如下下:客户到银银行柜台存款款时,首先填填写存款单(包包括帐号、姓名、存存款金额、存存款类型),如如果还没有开开户,则需要要先开户,填填写开户单(包包括姓名、身身份证号、地地址、电话、是是否留密码)。填填写完存款单单或开户单后后,交给营业业员,营业员员将存款单或或开户单信息息输入计算机机,系统记录录开户信息或或存款单信息息,如果是开开户并选择留留密码,则需需要
18、客户输入入密码。最后后印出开户单单或存款单给用户。请请画出银行存存款业务的分分层数据流图图(至少画出出两层)。(1) 识别外外部实体及输输入输出数据据流 外部实体:储户户、业务员。输入数据流:存存款单,开户户单,密码。可可以将存款单单和开户单抽抽象为事务。输出数据流:存存款单,开户户单。(2) 顶层数数据流图(3) 一层数数据流图对银行储蓄系统统进行分解,从从大的方面分分解为接收事事务、处理开开户、处理存存款三部分,得得到一层数据据流图。 (4) 二层数数据流图对 “处理存款款”及“处理开户”进行进一步步分解,得到到二层数据流流图,即处理理存款的数据据流图和处理理开户的数据据流图。 处理存款的
19、数据据流图处理开户的数据据流图3.5 按照以以下描述,画画出ER图。一本教材由许多多章组成,每每一章包含许许多节、小结结和习题组成成,章和节都都具有标题和和序号属性。ER图如下:教材教材章节小结习题序号标题序号标题第4章 结构化化设计方法4.1 当你“编编写”程序时时你设计软件件吗?软件设设计和编码有有什么不同吗吗?在“编写”程序序时并没有设设计软件。软软件设计包括括概要设计和和详细设计,编编码是将详细细设计中的过过程描述转换换成用程序设设计语言来描描述。4.4 是否存存在一种情况况:复杂问题题需要较少的的工作去解决决?这样的情情况对模块化化观点有什么么影响?通过对复杂的问问题进行合理理分解,
20、分解解为若干个相相对简单及独独立的子问题题,就可以用用较少的工作作去解决。这这种情况能够够较好地支持持模块化的观观点,每个子子问题用单独独的模块去解解决,模块之之间应该是高高内聚、低耦耦合的,这样样才能减少工工作量,否则则,虽然每个个模块的工作作简单了,但但模块之间的的联系很复杂杂,也增加了了问题解决的的难度和工作作量。4.8 用面向向数据流的方方法设计第33章习题3.44所描述的银银行存款业务务的软件结构构,并使用改改进方法对模模块结构进行行精化。(1) 对第33章习题3.44给出的数据据流图进行精精化,确定其其边界,如下下图所示。(2) 对上图图按事务型数数据流进行处处理,完成第第一级分解
21、,得得到顶层和一一层模块结构构图。存款业务存款业务输入数据调度输出数据第一级分解后的的结构图(3) 完成第第二级分解。对对上图所示的“输输入数据”、“输输出数据”和和“调度”模模块进行分解解,得到未经经精化的输入入结构、输出出结构和事务务结构。输入数据输入数据输入事务输入密码未经精化的输入入结构输出数据输出数据打印存款单打印开户单 未经精化的输输出结构调度调度处理存款处理开户记录存款信息记录开户信息记录密码未经精化的事务务结构将上面的三部分分合在一起,得得到初始的软软件结构,如如下图所示。存款业务存款业务输入数据调度输出数据输入事务输入密码打印存款单打印开户单处理存款处理开户记录存款信息记录开
22、户信息记录密码初始软件结构图图(4) 对软件件结构进行精精化。1) 由于调度度模块下只有有两种事务,因因此,可以将将调度模块合合并到上级模模块中,如图图所示。存款业务存款业务输入数据输出数据输入事务输入密码打印存款单打印开户单处理存款处理开户记录存款信息记录开户信息记录密码将调度模块合并并到上级模块块后的软件结结构2) “记录密密码”模块的的作用范围不不在其控制范范围之内(即即“输入密码码”模块不在在“记录密码”模模块的控制范范围之内),需需对其进行调调整,如图所示。存款业务存款业务输入事务输出数据输入密码打印存款单打印开户单处理存款处理开户记录存款信息记录开户信息记录密码 3) 提高模块独独
23、立性,对模模块结构进行行调整,如下下图所示。存款业务存款业务输入事务输入密码打印存款单打印开户单处理存款处理开户记录存款信息记录开户信息记录密码调整后的模块结结构图4.9 将大的的软件划分成成模块有什么么好处?是不不是模块划分分得越小越好好?划分模块块的依据是什什么?将大的软件划分分成独立命名名且可独立访访问的模块,不不同的模块通通常具有不同同的功能或职职责。这种方方法有利于将将复杂的问题题简单化,是是分而治之策策略的具体表表现。尽管模块分解可可以简化要解解决的问题,但但模块分解并并不是越小越越好。当模块块数目增加时时,每个模块块的规模将减减小,开发单单个模块的成成本确实减少少了;但是,随随着
24、模块数目目增加,模块块之间关系的的复杂程度也也会增加,设设计模块间接接口所需要的的工作量也将将增加。 划分模块的依据据是,模块只只具有单一的的功能且与其其他模块没有有太多的联系系。4.11 结构构化程序设计计禁止使用ggoto语句句吗?如果程程序中使用了了goto语句句,是否就可可以断定它是是非结构化的的? 结构化化程序设计并并不禁止使用用goto语句句。如果程序序中使用了ggoto语句句,并不能断断定它是非结结构化的。4.12 对于于给定的算法法,如何判断断它是否是结结构化的? 对于给给定的算法,如如果符合以下下三条原则,就就可以判断它它是结构化的的。 (1) 使用用语言中的顺顺序、选择、重
25、重复等有限的的基本控制结结构表示程序序逻辑。 (2) 选用的控制制结构只准许许有一个入口口和一个出口口。 (3) 程序语句组组成容易识别别的块(Bllock),每每块只有一个个入口和一个个出口。4.13 对于于图4-499所示的流程程图,试分别别用N-S图和PAD表示之之。 FFSTARTABQENDTFTP 图4-49 流流程图对应的N-S图图如下: 对应的PADD如下:while Pwhile PAuntil !QBwhile PABuntil !Q4.14 图44-50所示示的流程图完完成的功能是是使用二分查查找方法在ttable数数组中找出值值为item的数数是否存在。(1) 判断此此
26、算法是否是是结构化的,说说明理由。(2) 若算法法是非结构化化的,设计一一个等价的结结构化算法,并并用N-S图表示示。FFFFTFFtable(i)item(finish-start)1table(start)=itemtable(finish)=itemflag=0flag=1i(startfinish)/2table(i)=itemtable(I)1 & (FINISH-START)1 & TABLE(I)!=ITEMI(STARTFINISH)/2TABLE(I)1 & FLAG=0(FINISH-START)1 & FLAG=0I(STARTFINISH)/2TABLE(I)=ITEM
27、FLAG0TFFLAG=1TABLE(I)=0 & FLAG=0(FINISH-START)=0 & FLAG=0II(STARTFINISH)/2FTTABLE(I)=ITEMFTTABLE(I)=ITEMTABLE(I)ITEMT FFLAG=1TABLE(I)ITEMT FFLAG=1FINISH=I-1START=I+1FINISH=I-1START=I+14.15 使用用自顶向下、逐逐步细化方法法设计算法,完完成下列任务务:产生一个个1010的二维随随机整数方阵阵,先求出每每一行的最大大值和每一列列的最小值;然后求100个最大值中中的最小者,10个最小值中的最大者;最后求这两个数之差
28、的平方。(1) 首先写写出下面的程程序框架: main () 定义1010的二维整整数数组A,长度为100的一维数组组B, C;建立1010的的二维随机整整数数组A;- - - - - - - - - - - - - - - - - - - 1 求A中每一行的的最大值数组组B; - - - - - - - - - - - - - - - - - - - - 2求A中每一列的的最小值数组组C; - - - - - - - - - - - - - - - - - - - - 3求数组B中的最最小值minnOfB; - - - - - - - - - - - - - - - - - - - 44求数
29、组C中的最最大值maxxOfC; - - - - - - - - - - - - - - - - - - - 55(minOfBB- maxOffC)2 resullt; (2) 对后后面加标记的的部分进行细细化main () 定义1010的二维整整数数组A,长度为100的一维数组组B, C;/*建立10110的二维随机整整数数组A*/ - - - - - - - - - - - - - - - - - - 1for (i=0; i=9; ii+)for (j=0; j=9; jj+)产生随机整数 Ai,j; /*求A中每一行的的最大值数组组B*/ - - - - - - - - - - -
30、- - - - - - - - 22for (i=0; i=9; ii+) 求数组A第第i行的最大值值Bi; 22.1/*求A中每一一列的最小值值数组C*/ - - - - - - - - - - - - - - - - - - - - 3for (j=0; j=9; jj+) 求数组A第第j列的最小值值Cj; 33.1/*求数组B中中的最小值mminOfBB*/ - - - - - - - - - - - - - - - - - - - 44minOfB = B00;for (i=1; i=9; ii+) if (mminOfBB Bi) miinOfB = Bii; /*求数组C中中的最大
31、值mmaxOfCC*/ - - - - - - - - - - - - - - - - - - - 55maxOfC = C00;for ( ii=1; iiCi) maaxOfC = Cii; (minOfBB- maxOffC)2 resullt; (3) 下一步可以以继续对2.1和3.1进行细细化。具体略略。4.16 设计计算法完成下下列任务:输输入一段英文文后,无论输输入的文字都都是大写,还还是小写,或或大小写任意意混合,都能能将其整理成成除每个句子子开头字母是是大写外,其其他都是小写写的文字。假设在输入的文文字中,两个个单词间只允允许是空格、,、.、?、!,则在输出的文字中,大写的情
32、况有以下几种:整段文字的第一一个字母是大大写;“.”后的第一一个字母是大大写;“?”后的第一一个字母是大大写;“!”后的第一一个字母是大大写;设变量a存储输输入的字符串串,变量b存储结果字字符串,变量量c存储当前处处理的字符,变变量e存储c之前的字符符(当c为第一个字字符时除外)。算算法如下:输入字符串输入字符串a, n = strlen(a)如果a的第一个字符是字母,则转成大写。b0=a0for ( i=1; in; i+) c = ai, e=ai-1 c是字母T F e属于.?! T F c改大写 c改小写 bi=c给b加字符串结束标志 输出字符串b第5章 编码5.1 有人说说程序编好后
33、后能上机运行行就可以了,为为什么还要讲讲究风格和可可读性呢?你你觉得对吗?为什么? 对于学学生的练习题题和作业题,程程序编好后能能上机运行,一一般认为任务务就完成了。但但对于实际开开发的项目来来说,任务并并没有结束。编编码人员编写写完程序后,要要对自己的程程序进行单元元测试,测试试人员要进行行集成测试和和系统测试,提提交用户使用用后,还需要要对软件进行行持续的维护护修改工作。在在软件开发和和维护过程中中,都需要阅阅读程序。道道理很简单,如如果需要对某某段程序进行行修改,首先先要读懂,阅阅读程序是软软件开发和维维护过程中的的一个重要组组成部分,而而且读程序的的时间比写程程序的时间还还要多。所以以
34、,程序的风风格和可读性性很重要,具具有良好的程程序风格和可可读性的程序序,有助于对对程序的正确确理解,可以以大大减少阅阅读理解程序序的时间,从从而提高维护护工作的效率率。5.2 一般情情况下,程序序的效率和清清晰性相比哪哪一个更重要要?在计算机发展的的早期,由于于CPU效率低低,内存小,程程序在运行时时容易出现运运行时间太长长或内存溢出出问题。因此此,人们在编编写程序时,很很注重程序的的时间效率和和空间效率,而而不太注重程程序的清晰性性。随着计算机硬件件性能的飞速速发展以及软软件规模和复复杂性的急剧剧增加,这种种情况已经发发生了根本的的转变,程序序的清晰性越越来越受到重重视,程序的的清晰性不好
35、好会给测试、维维护修改带来来困难,这对对于规模庞大大和复杂的软软件尤其明显显。软件运行的效率率主要取决于于软件的体系系结构及算法法,编码阶段段虽然也有机机会提高效率率,但效果并并不明显。对对于效率没有有特殊严格要要求的系统来来说,要将程程序的清晰性性放在第一位位,在不影响响清晰性的情情况下,去改改进效率。5.6 在一行行内只写一条条语句,并且且采取适当的的移行格式,使使程序的逻辑辑和功能变得得更加明确。许许多程序设计计语言允许在在一行内写多多个语句。但但这种方式会会使程序可读读性变差。下下面是一段排排序程序,请请对其编码风风格进行改进进,以增加其其可读性。for (i=1; i=n-1; i+
36、) forr (j=11; jaaj+1) ttemp=aaj; aj=aj+11; aj+1=temp;改进后的代码如如下:for (i=1; i=n-1; i+) for (j=1; jajj+1) temp=aj; aj=aj+1; aj+1=temp;5.7 请对下下面代码的布布局进行改进进,使其符合合规范其更容容易理解。for (i=1; i=n-1; i+)t=i; for (j=i+1; j=n; j+) if (ajjatt) tt=j; if (t!=i) temp=at; at=ai; ai=teemp改进后的代码如如下:for (i=1; i=n-1; i+)t=i; f
37、or (j=i+1; j=n; j+) if (ajjatt) t=j; if (tt!=i) temp=at; at=ai; ai=teemp5.8使用你熟熟悉的语言编编写出习题44.15的程程序,注意编码风风格。下面为使用C语语言编写的习习题4.155的程序:#includde maath.h#includde sttdio.hh#includde sttdlib.h#includde tiime.h/* 求10110的二维数数组a的每一行的的最大值存入入一维数组bb,每一列的的最小值存入入一维数组cc,minOffB存储数组组b的最小值,mmaxOfCC存储数组c的最大值,rresult
38、t存储minOOfB与maxOffC之差的平平方。*/int maiin()int a10110, bb10,c10;int i,j,minnOfB, maxOffC, reesult;/*产生随机机数种子 */srand(unsiigned int)tiime(NUULL); /*建立100 10的二维随随机整数数组组a*/for(i=0;i=9;i+)for (j=0; j=9; j+)aij=rrand()%100+1; /产生1-1000之间的随随机数 /*求求a中每一行的的最大值数组组b*/ for (ii=0; ii=9; i+)/*求数数组a第i行的最大值值bi */bi=ai0
39、;for (j=1; jbi) bbi = aij; /*求a中每每一列的最小小值数组c*/ for (jj=0; jj=9; j+)/*求数数组a第j列的最小值值cj; */cj=a0j;for (i=1; i=9; i+)if (aaijjcjj) cj = aij;/*求数组bb中的最小值值minOffB*/ minOfBB = b0;for (ii=1; ii bi) minOffB = bbi;/*求数组cc中的最大值值maxOffC*/ maxOfCC = c0;for (ii=1; ii=9; i+)if (mmaxOfCCci) maaxOfC = cii; ressult =
40、 pow(minOffB- maxOOfC, 22); priintf(结果是:%d,reesult); retturn(rresultt); 5.9使用你熟熟悉的语言编编写出习题44.16的程程序,注意编编码风格。下面为使用C语语言编写的习习题4.166的程序:#includde sttdio.hh #includde sttring.h #includde cctype.h /*将一段英文文输入变量aa(假设两个单单词间只允许许是空格、,、.、?、!),将其整理成成每个句子开开头字母是大大写、其他都都是小写的字字符串存储在在变量b中。变量c存储当前处处理的字符,变变量e存储c之前字符。*/
41、void maain()char a10000, bb10000, c,e;int i,n;gets(aa);n=strllen(a); /将将整段的第一一个字母转成成大写。if(isaalpha(a0) a0=touppper(aa0);b0=a0; /处处理第一个字字符之后的每每个字符,将将.?!后面的的字母改为大大写,其他改改为小写。for (ii=1; ii7个(3)首字符“京”(4)非“京”(5)第2个字符字母(6)非字母(7)第37个字符符数字(8)非数字(9)测试用例如下:1)京H877774 (1),(4),(6),(8)2)京H87777 (2)3)京H8777745 (3)
42、 4)冀H877774 (5)5)京9877774 (7)6)京BA77774 (9) 6.6 比较测测试与测试,说说明其异同。测试与测试都是是集成测试之之后所进行的的测试,都属属于系统测试试。所不同的的是,测试是在开发发环境中所做做的测试,主主要由开发方方人员进行。而而测试则是在用用户实际工作作环境中所做做的测试,不不受开发人员员的干预。补充题:设计下下列伪码程序序的语句覆盖盖和路径覆盖盖测试用例:INPUT(A,B,C)INPUT(A,B,C)A5X=10X=1B10Y=20Y=2YNYNC15Z=30Z=3YNPRINT(X,Y,Z)INPUT(AA,B,C)IF A5THEN XX=1
43、0ELSE XX=1END IFIF B100THEN YY=20ELSE YY=2END IFIF C155THEN ZZ=30ELSE ZZ=3END IFPRINT(XX,Y,Z)STOP设输入数据为,输出数数据为。语句覆盖测试用用例:【,】, 【,】路径覆盖测试用用例:【,】【,】【,】【,】【,】【,】【,】【,】第7章 统一建建模语言UMML概述7.2 UMLL中有哪些关关系?解释类类图中聚合和和关联的相同同点和不同点点。在UML中,常常见的关系有有泛化、聚合合、关联、依依赖和实现。在类图中,关联联是一种结构构关系,它描描述了两个或或多个类的实实例之间的连连接关系。聚聚合描述了整整
44、体和部分之之间的结构关关系。按照关关联关系的定定义,聚合属属于一种特殊殊的关联关系系,只不过这这种关联关系系具有明确的的整体-部分含义而而已。从耦合合度的角度看看,聚合关系系要强于关联联关系。7.4 讨论顺顺序图与协作作图的关系,何何时用顺序图图建模优于协协作图建模,以以及相反的情情况。顺序图和协作图图都能描述对对象间的交互互关系,但两两者的侧重点点不同,顺序序图着重表现现交互的时间间顺序,协作作图则着重表表现交互对象象的静态链接接关系。但即即使他们各有有侧重,但从从语义上来说说是等价的,可可从一种图自自动转换为另另一种图。一般情况下,当当需要强调消消息传递的时时间顺序时,采采用顺序图;当表示
45、涉及及很多对象的的模型时,协协作图比顺序序图更形象。顺顺序图在分析析中更常用,而而协作图则在在设计中更常常用。7.5 考虑银银行系统中的的帐户会有哪几几种状态,画画出帐户对象的的状态图。账户的状态包括括开户、正常使使用、透支、休休眠、冻结和和注销。账户户对象的状态态图如下图所所示。第8章 面向对对象分析8.1比较面向向对象的分析析方法和面向向数据流的分分析方法,阐阐述它们各自自的特点。面向对象的分析析方法使用用用例模型来表表示用户的功功能需求,用用例模型相当当于功能模型型,在对用例例模型进行细细化的过程中中,也伴随着着对功能的分分解。但面向向对象的分析析方法并不是是以功能分解解为核心,在在获取
46、并分析析用户的功能能需求之后,重重点以类和对对象为核心,建建立对象模型型,交互模型型也是围绕对对象模型进行行的。面向数数据流的分析析方法是从建建立顶层数据据流图(环境境图)开始,之之后逐层对加加工进行分解解。面向数据据流的分析方方法是以功能能分解为核心心的。8.2 面向对对象分析需要要建立的三个个模型是什么么?面向对象分析需需要建立的33个模型是:由用例和和场景表示的的功能模型(用用例模型);用类和对象象表示的静态态模型(对象象模型);由由状态图和顺顺序图表示的的动态模型(交交互模型)。8.3 用例建建模的主要步步骤是什么? 用例建建模的主要步步骤如下:确定业务参与者者可以是与系统统有交互的外
47、外部硬件、软软件、组织、人人等。确定业务需求用用例参与者需需要系统提供供的完整功能能。创建用例图标识参与者者与用例之间间、用例与用用例之间的关关系。8.5 用例与与用例之间的的关系主要有有哪两种?其其区别是什么么? 用例之之间的关系主主要有包含含(也称使使用)和扩扩展。包含表示一一个用例所执执行的功能中中总是包括被被包含用例的的功能;扩展是指一一个用例的执执行可能需要要由其他用例例的功能来扩扩展,扩展联系可可用于对期望望或可选的行行为建模,但但其主要用途途是使基本用用例的功能不不依赖于扩展展用例。8.6 对于复复杂的系统,其其对象模型应应该由哪五个个层次组成?对于复杂的系统统,对象模型型应该由
48、下述5个层次组成成:主题层(也称为范畴畴层)、类-对象层、结结构层、属性性层和服务层层,如图所示示。对象模型的五个个层次8.7 解释关关联类的作用用,在什么时时候需要使用用关联类?关联类的作用是是描述关联的的属性。在关联关系比较较简单的情况况下,关联关关系的语义用用关联关系的的名字来概括括。但在某些些情况下,需需要对关联关关系的语义做做详细的定义义、存储和访访问,为此可可以建立关联联类(assocciatioon claass)。8.8 按照以以下描述,画画出UML类图:一本教材由许多多章组成,每每一章包含许许多节、小结结和习题组成成,章和节都都具有标题和和序号属性。UML类图如下下:8.9
49、考虑一一个计算机超超市,出售硬硬件、外设和和软件。分析析谁是这个系系统的参与者者?这个系统统有哪些主要要用例?画出出用例图。系统的参与者:系统管理员员(admiinistrrator),售售货员(saalespeerson),客客户(cusstomerr)。主要用例编号参与者用例说明1adminisstratoorMaintaiin prooduct inforrmatioon(维护商商品信息)增加、修改、删删除商品信息息(商品编号号、名称、型型号、价格)2Maintaiin memmbershhip innformaation(维维护会员信息息) 增加、修改、删删除会员信息息(会员编号号、姓
50、名、身身份证号、办办卡日期)3salespeersonScan meembersship ccard(扫描会员卡卡)在商品出售之前前,系统通过过扫描仪刷卡卡(会员卡)来来确认顾客的的会员身份4Scan prroductt codee(扫描商品品的条形码)通过扫描商品的的条形码,自自动识别商品品的名称和价价格5Input aamountt of pproducct(输入商商品数量)对于已经扫描的的条形码,手手工输入购买买的此件商品品的数量6salespeerson,custoomerAccept paymeent(接收收现金付款)Charge paymeent too cardd(使用银行行卡付
51、款)7salespeersonPrint rreceippt(打印收收据)用例图如下:第10章 面向向对象设计10.1 软件件模块之间的的依赖性可以以从哪些角度度和抽象层次次进行分析?在面向对象软件件中,常见的的软件模块有有类、接口、包包、构件。因因此,分析软软件模块之间间的依赖性就就可以从类、接接口、包和构构件的角度和和层次进行分分析。 10.2 消除除包之间循环依依赖性的方法法是什么? 本质上,两个包包之间的依赖赖性来自于两两个包中类之之间的依赖性性。类之间的的循环依赖性性是个特别棘棘手的问题,好好在大多数情情况下可以通通过重新设计计避免循环依依赖性。具体体方法是增加加新包。举例例说明如下:在下图中,包AA依赖于包B,反过来包包B又依赖包A,构成了循循环依赖。具具体解决办法法是:将包B依赖的包A中的元素从包包A中分离出来来,组成包CC,使得包B不再依赖包包A,而是依赖赖包C。10.3 请给给出构件的一一般
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度催告函制作与执行保障合同2篇
- 二零二五年度出租车行业人才培养与输送合同4篇
- 2025年度职业规划培训保密及信息共享合同3篇
- 2025年度个人心理咨询与培训合同2篇
- 二零二五年度重型卡车交易担保服务合同范本4篇
- 2025年度数据中心装修与设施升级合同4篇
- 二零二五年度船舶建造与港口设施建设合同范本4篇
- 二零二五年度大理石石材环保技术研发与应用合同4篇
- 2025年度车辆质押融资与二手车交易服务合同4篇
- 二零二四年度专业皮革清洗与护理合同2篇
- 开展课外读物负面清单管理的具体实施举措方案
- 2025年云南中烟工业限责任公司招聘420人高频重点提升(共500题)附带答案详解
- 2025-2030年中国洗衣液市场未来发展趋势及前景调研分析报告
- 2024解析:第三章物态变化-基础练(解析版)
- 北京市房屋租赁合同自行成交版北京市房屋租赁合同自行成交版
- 《AM聚丙烯酰胺》课件
- 系统动力学课件与案例分析
- 《智能网联汽车智能传感器测试与装调》电子教案
- 客户分级管理(标准版)课件
- GB/T 32399-2024信息技术云计算参考架构
- 人教版数学七年级下册数据的收集整理与描述小结
评论
0/150
提交评论