版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章1.1什么是软件?软件和程序的区别是什么?答:⑴软件是程序、数据以及开发、使用和维护程序需要的所有文档的完整集合。软件的定义是:计算机程序、方法、规则、相关的文档资料以及在计算机上运营程序时所必须的数据。⑵软件不是程序,程序是软件的一部分。程序是为了解决某个特定问题而用程序设计语言描述的适合计算机解决的语句序列。它是由软件开发人员设计和编码的。程序执行时一般要输入一定的数据,也会输出运营的结果。没有相关文档,仅有程序是不能称之为软件产品的。1.2什么是软件生存周期?划分生存周期的重要原则是什么?答:(1)软件的生存周期是指某一软件项目被提出并着手实现开始,直到该软件报废或停止使用为止所经历的时间。(2)重要原则:各阶段的任务彼此间尽也许相对独立,同一个阶段各项任务的性质尽也许相同,从而减少每个阶段任务的复杂性,简化不同阶段之间的联系,有助于软件开发过程的组织管理。1.3什么是软件危机?它有哪些重要表现?为什么会产生软件危机?答:(1)软件危机是指在计算机软件的开发和维护过程中所碰到的一系列严重问题。重要表现:对软件开发成本和研制进度的估计经常很不精确,导致经费预算经常突破,进度超时完毕;由于开发人员经常对用户需求只有模糊的了解以及开发人员和用户又未能及时互换意见,导致已完毕的软件不能满足用户的需要;软件产品质量差,可靠性得不到保证;软件产品可维护性差;软件成本在计算机系统总成本中所占的比例逐年上升,软件的发展跟不上硬件的发展;软件开发生产率提高的速度远远跟不上计算机应用速度普及进一步趋势,软件发展跟不上用户的规定。产生软件危机的因素:导致软件危机的因素与软件自身的特点有关,也与软件开发人员在开发和维护时采用的生产方式、方法、技术有关。软件是计算机系统中的逻辑部件,软件产品往往规模庞大,结构复杂。给软件的开发和维护带来客观的困难;软件开发的管理困难。由于软件规模大、结构复杂、又具有无形性,导致管理困难,进度控制困难,可靠性无法保证;软件开发费用不断增长,维护费用急剧上升,直接威胁计算机应用的扩大;软件开发技术落后;生产方式落后;开发工具落后,生产效率提高缓慢。此外软件开发人员忽视需求分析的重要性,轻视软件维护也是导致软件危机的因素。1.4什么是软件工程?如何运用软件工程消除软件危机?答:(1)软件工程是指导计算机软件开发和维护的一门学科(2)一方面应当对计算机软件有一个对的的结识,彻底清除“软件就是程序”的错误观念;要使用好的开发技术和方法,并且要不断研究探索更好更有效的技术和方法;要有良好的组织、严密的管理,各类人员要互相配合,共同完毕任务,充足结识软件开发不是某种个体劳动的神秘技巧;应当开发和使用好的软件工具,从而有效提高软件生产率。采用“工程化”的思想做指导来解决软件研究中面临的困难和混乱。1.5何谓面向对象软件工程?简述它和传统软件工程的区别与联系?答:(1)以面向对象程序设计为基础的软件工程。传统软件工程是以结构化程序设计为基础,而面向对象软件工程是以面向对象程序设计为基础。与面向过程的软件工程的开发思想相比,面向对象开发方法不再是以功能划分为导向,而是以对象作为整个问题分析的中心,围绕对象展开系统的分析与设计工作。在开发过程方面,面向对象软件工程和传统软件工程同样也是把软件开发划分为分析、设计、编码和测试等几个阶段,但各个阶段的具体工作不同,除了在编码阶段使用的语言不同外,面向对象软件工程为待开发软件拟定“类与对象”一般在需求分析阶段进行,设计阶段则重要完毕对象内部的具体设计;而在传统软件工程中,将软件设计划分为“总体设计”和“具体设计”,分别完毕软件的总体结构图的设计和各个模块内部算法的具体设计。即:传统软件工程开发过程涉及需求分析、总体设计、具体设计、面向过程的编码和测试;面向对象软件工程开发过程涉及需求分析与对象抽取、对象具体设计、面向对象的编码和测试。1.6什么是软件生存周期模型?试比较本章介绍的四种模型的优缺陷,说明每种模型的使用范围答:(1)软件生存周期模型即为软件开发模型,是描述软件开发过程中各种活动如何执行的模型,是软件过程、活动、任务的结构框架。优点缺陷合用范围瀑布模型能清楚直观地表达软件开发全过程,明确规定要完毕的重要活动和任务,用来作为软件项目工作的基础。只有当分析员可以做出准确的需求分析时,才干得到预期的对的结果。它是一种抱负的线性开发模式,缺少灵活性,特别是无法解决软件需求不明确或不准确的问题。适合于需求很明确的软件项目开发的模型,对于经常变化的项目而言,瀑布模型毫无价值。快速原型模型通过实践让用户了解未来目的系统的概貌,以便判断哪些功能是符合需要的,哪些方面需要改善。反复改善,最终建立完全符合用户需求的新系统。克服瀑布模型的缺陷,减少由于软件需求不明确带来的开发风险。这种模型适合预先不能确切定义需求的软件系统的开发。在实际中开发原型系统使用的语言效率有时会很低,所选用的开发技术和工具不一定符合主流的发展;快速建立起来的系统结构加上连续的修改也许会导致产品质量低下。适合于一些需求可变、模糊不定的软件系统的开发增量模型有较大的灵活性。可以在较短的时间内向用户提交一些有用的工作产品。开发出一部分,向用户展示一部分,可让用户及早看到部分软件,及早发现问题。整个系统是由一个个构件集成在一起的,当需求变更时只变更部分部件,而不必影响整个系统。各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,冒所有构件集成不到一起的风险。适合于软件规定不明确,设计方案有一定风险的软件项目。螺旋模型加入了瀑布模型与增量模型都忽略了的风险分析,使用原型及其他方法来尽量减少风险该模型需要有相称丰富的风险评估经验和这方面的专门技术,这使该模型的应用受到一定限制。将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。第二章2.1在软件开发初期阶段为什么要进行可行性研究?可行性研究的任务是什么?应当从哪几个方面研究目的系统的可行性?答:(1)避免或者减轻项目开发后期也许出现的困境。其重要任务是,一方面需要进行概要的分析研究,初步拟定项目的规模和目的,拟定项目的约束和限制,必须分析几种也许解法的利弊,从而鉴定原定系统的目的和规模是否现实,系统完毕后带来的效益是否大到值得投资开发这个系统的限度。经济可行性、技术可行性、操作可行性、法律可行性。成本—效益分析可用哪些指标进行度量?答:成本方面涉及开发成本和运营维护成本;效益方面涉及经济效益和社会效益,经济效益可以用货币的时间价值、投资回收期、纯收入来度量。有人认为,只懂技术的分析员不一定能圆满完毕可行性研究的任务。你批准这种见解吗?为什么?答:批准。由于可行性研究的任务涉及三个方面,除了技术可行性之外,还需要进行经济可行性、操作可行性、社会和法律方面的可行性研究,而只懂技术的分析员对其他方面的研究有也许不满足用户的规定,所以只懂技术的分析员不一定能圆满完毕可行性研究的任务。在【例2.2】中,把投资改为6000元,每年节约金额改为2023元,年利率为6%,试计算投资回收期和纯收入。解:如下表年将来值(元)(1+n*I)现在值(元)累计的现在值(元)12345202320232023202320231.061.121.181.241.301886.791785.711694.921612.901538.461886.793672.505367.426980.328518.78投资回收期为(6000-5367.42)/1612.90+3=3.39(年)纯收入为8518.78-6000=2518.78(元)为方便旅客,某航空公司拟开发一个飞机票预定系统。旅游公司把预定机票的旅客信息(姓名、年龄、工作单位、身份证号码、旅游时间、旅游目的地等)输入进该系统,系统为旅客安排航班,打印出取票告知和账单,旅客在飞机起飞前的3天之内凭取票告知和账单交款取机票,系统校对无误即打印出飞机票给旅客。请写出开发此系统的问题定义,并通过可行性研究分析此系统的可行性。答:问题定义:飞机票预定系统重要实现以下功能:查询功能:把旅游时间、旅游目的地等输入进该系统,系统显示符合规定的航班。预定机票:把预定机票的旅客信息(姓名、年龄、工作单位、身份证号码、旅游时间、旅游目的地等)输入进该系统,系统为旅客安排航班,打印出取票告知和账单,并更新记录。校对并打印机票:旅客在飞机起飞前的3天之内凭取票告知和账单交款取机票,系统校对无误即打印出飞机票给旅客。可行性研究应从经济可行性、技术可行性、操作和社会、法律的角度阐述其可行性,这部分省略……2.6试为习题2.5写可行性研究报告的重要内容。(本题略)第三章3.1为什么要进行需求分析?需求分析要通过哪些环节?答:(1)可行性研究阶段粗略了解了用户的需求,甚至还提出了一些可行的方案,但是可行性研究的基本目的是最小的代价在尽也许短的时间内拟定问题是否存在可行的解法,因此许多细节都被忽略了,可行性研究并不能代替需求分析,它事实上并没有准确地回答“系统必须做什么”这个关键问题。(2)环节:1.需求获取:调查研究。从分析当前系统包含的数据开始,分析当前信息处理的方法与存储的局限性,用户希望改善的重要问题及其迫切性等。2.需求提炼:分析建模。需求提炼的重要任务是建立分析模型。把来自用户的信息加以分析,通过抽象建立起目的系统的分析模型。3.需求描述:编写SRS。为了使需求描述具有统一的风格,可以采用已有的且可满足项目需要的模板,也可以根据项目特点和软件开发小组的特点,对标准进行适当的改动,形成自己的SRS模板。4.需求验证。由分析员和用户一起对需求分析结果进行严格的审查、验证。保证需求说明可作为软件设计和最终系统验收的依据。3.2需求分析阶段的基本任务是什么?如何理解分析阶段的任务是决定“做什么”,而不是“如何做”?答:(1)1.拟定对系统的综合需求。分析员和用户双方拟定对软件系统的综合规定,具体有功能需求、性能需求、环境需求、接口规定、用户界面需求,此外尚有可靠性、安全性、保密性、约束、可移植性和可维护性等方面的需求,这些需求通常可以通过双方交流、调查研究来获取,并达成共同的理解。2.分析系统的数据需求。由于绝大多数软件系统本质上都是信息解决系统,系统必须解决的信息和系统应当产生的信息在很大限度上决定了系统的面貌。3.建立软件的逻辑模型。4.编写软件需求规格说明书。目的是使用户和开发者能对未来软件有共同的理解,明拟定义未来软件的需求、系统的构成及有关的接口。需求说明相称于用户和开发者之间的一份技术协议,是测实验收阶段对软件进行确认和验收的基准,是软件开发的基础。5.需求分析评审(2)需求分析事实上是调查、评价以至肯定用户对软件需求的过程,其目的在于精化软件的作用范围,也是分析和确认软件系统构成的过程,以拟定未来系统的重要成分及它们之间的接口细节。因此需求分析事实上是一个对用户意图不断进行揭示和判断的过程,它并不考虑系统的具体实现,而是完整地、严密地描述应当“做什么”的一种过程。3.3什么是结构化分析方法?该方法使用什么描述工具?答:(1)结构化分析方法是一种从问题空间到某种表达的映射方法,软件功能由数据流图表达,是结构化方法中重要的,被普遍采用的方法,它由数据流图和数据字典构成系统的逻辑模型。(2)数据流图、数据字典、结构化语言、鉴定树和鉴定表。3.4什么是数据流图?其作用是什么?其中的基本符号各表达什么含义?答:(1)数据流图是SA方法中用于表达系统逻辑模型的一种工具。它描述系统由哪几部分组成,各部分之间的联系等,以直观的图形清楚地描述了系统数据的流动和解决过程。→箭头,表达数据流;○圆或椭圆,表达变换数据的解决;□方框,表达数据的三原点或终点;=双杠或单杠,表达数据存储(文献)。除上述4种基本符号之外,有时也使用几种附加符号,星号(*)表达数据之间的关系(同时存在);加号(+)表达“或”关系,⊕号表达只能从中选一个(互斥的关系)。3.5画数据流图的环节是什么?应当注意什么事项?答:(1)第一步,先找外部实体(可以是人、物或其他软件系统),找到了外部实体,则系统与外部世界的界面就得以拟定,系统的源点和终点也就找到了;第二步,找出外部实体的输入和输出数据流;第三步,在图的边上画出系统的外部实体;第四步,从外部实体的输出流(源点)出发,按照系统的逻辑需要,逐步画出一系列变换数据的加工,直到找到外部实体处所需的输入流(终点),形成数据流的封闭;第五步,按照上述原则进行检查和修改。最后按照上述环节画出所有子图。(2)①画数据流图时,只考虑数据流的静态关系,不考虑其动态关系(如启动、停止等与时间有关的问题),也不考虑犯错解决问题。画数据流图时,只考虑常规状态,不考虑异常状态,这两点一般留在设计阶段解决。画数据流图不是画程序流程图,两者有本质的区别。数据流图只描述“做什么”,不描述“怎么做”和做的顺序,而程序流程图表达对数据进行加工的控制和细节。不能盼望数据流图一次画成,而是要通过各项反复才干完毕。描绘复杂系统的数据流图通常很大,对于画在几张纸上的图很难阅读和理解。一个比较好的方法是分层的描绘这个系统。在分层细画时,必须保持信息的连续性,父图和子图要平衡,每次只细画一个加工。3.6什么是数据字典?其作用是什么?它有哪些条目?答:(1)数据字典是对数据流图中所包含元素的定义集合。数据字典的作用正是在软件分析和设计的过程中,给人提供数据描述,即对数据存储(文献)和加工(解决)等名字进行定义。数据流、数据流分量(数据基本项)、数据存储(文献)和加工(解决)。3.7描述加工逻辑有几种工具?各是什么?写出其优缺陷。答:(1)描述加工逻辑一般用结构化语言、鉴定表和鉴定树。优点缺陷结构化语言既有结构化程序的清楚易读的优点,又有自然语言简朴易懂的优点,又避免了自然语言不精确也许产生二义性的缺陷。只有顺序、循环、条件三种控制结构。鉴定表能清楚地表达复杂的条件组合与应做动作之间的关系。不能描述循环的解决特性。鉴定树它比鉴定表更观,且易于理解和使用。(同鉴定表)3.8某高校计算机教材购销系统有以下功能。学生购买书时,要先填写购书单,系统根据各班学生用表及售书登记表审查有效性,假如有效,系统根据教材库存量表进一步判断书库是否有书,假如有书,系统把领书单返回给学生,学生凭书单到书库领书,对短缺的教材,系统用缺书单的形式告知书库,新书购进书库后,也由书库将进书告知返回给系统。请采用SA方法画出该系统的分层数据流图,并建立相应的数据字典。答:学生学生书库书库图书管理系统购书单进书告知领书单缺书单a)b)b)数据流条目:购书单=学院+专业+班级+购书种类+购书数量+价格进书告知=书名+进书数量+书类型+作者名称+出版社+价格领书单:书名+作者名称+出版社+数量+学院+专业+班级+价格缺书单=书名+作者名称+出版社+剩余数量+再购进数量数据存储条目:文献名:库存清单组成:书名+书籍编号+价格+作者名称+出版社+类型+现有数量组成方式:索引文献,以书籍编号为关键文献名:售书登记表组成:书名+书籍编号+售出数量+价格组成方式:索引文献,以书籍编号为关键文献名:各班学生用表组成:班级+人数+领书量组成方式:索引文献,以班级为关键数据项加工条目加工名:图书管理系统编号:无输入:购书单、进书告知、库存清单、售书登记表、各班学生用表输出:领书单、缺书单加工名:录入存储解决编号:1输入:进书告知加工逻辑:IF没有所输入的书籍记录THEN建立新的书籍记录,存入该书籍的基本记录ELSE输入书籍记录ENDIF加工名:查询解决编号:2输入:购书单输出:领书单、缺书单加工逻辑:根据购书单、售书登记表、各班学生用表及库存清单IF审查售书登记表及各班学生用表有效THENIF有库存THEN输出领书单ELSE输出缺书单加工名:审查、分类编号:1.1输入:进书告知输出:书籍信息加工逻辑:根据进书告知将书审查、分类加工名:审查有效性编号:2.1输入:购书单输出:有效加工逻辑:根据购书单、售书登记表、各班学生用表IF审查售书登记表及各班学生用表有效THEN输出有效加工名:判断书库是否有书编号:2.2输入:有效输出:领书单、缺书单加工逻辑:IF有库存THEN输出领书单ELSE输出缺书单ENDIF3.9某计算机公司为本科以上学历的人重新分派工作的政策是:年龄在25岁以下者,学历是本科男性规定报考研究生,女性则担任行政工作;年龄在25岁至45岁之间者,学历本科,不分男女,任中层领导职务,学历是硕士,不分男女,任课题组组长;年龄在45岁以上者,学历本科,男性任研究人员,女性则担任资料员,学历是硕士,不分男女,任课题组组长。请用结构化语言、鉴定表和鉴定树描述上述问题的加工逻辑。答:结构化语言:if年龄<25thenif学历=本科thenif性别=男then报考研究生endifif性别=女then担任行政工作endifendifendifif25<=年龄=<45thenif学历=本科then担任中层领导职务endifif学历=硕士then任课题组组长endifendifif45<年龄thenif学历=本科thenif性别=男then任研究人员endifif性别=女then任资料员endifendifif学历=硕士then任课题组组长endifendif鉴定表:年龄<2525<=年龄<=4545<性别男女男/女男/女男女男/女学历本科本科硕士本科硕士报考研究生√担任行政工作√任中层领导职务√任课题组组长√√担任研究人员√担任资料员√鉴定树男性:规定报考研究生本科 年龄<25 本科本科女性:担任行政工作本科:任中层领导职务重新分派工作25<年龄=<45硕士:任课题组组长男性:担任研究人员45年龄女性:担任资料员硕士:任课题组组长3.10数据库内容的需求分析工作重要从哪几方面进行?答:(1)信息需求信息需求指用户需要从数据库中获得的信息的内容和性质,信息需求是软件数据需求中最基本的需求,重要是拟定系统需要存储和使用哪些数据,用户需要从数据库中获得信息的内容和性质。解决需求解决需求是用户规定软件系统完毕的功能,以及对系统功能的解决时间、方式等方面的规定,如是规定批解决还是联机解决等。使用需求使用需求涉及:使用数据库时在安全性、完整性和一致性等方面的限制;查询方式、输入/输出格式和多用户等方面的规定;响应速度、故障恢复等性能规定。3.11建立全局E-R模型时,各分E-R模型之间也许出现的冲突有哪些?应如何解决?答:(1)各局部E-R模型之间的冲突重要有3类:属性冲突、命名冲突和结构冲突。(2)属性冲突:突理论上好解决,但事实上需要各部门讨论协商,解决起来也并非易事。命名冲突:解决方法与属性冲突的解决方法同样,也是通过讨论、协商等手段解决。结构冲突:使集成后的该实体取各局部E-R模型中属性的并集,再适当调整属性的顺序;实体间的联系在各局部E-R模型中具有不同的类型,解决办法是根据应用的语义对实体之间联系的类型进行综合或调整。第四章4.1总体设计阶段的重要目的和任务是什么?答:总体设计阶段的基本目的就是回答“概括地说,系统应当如何实现?”这个问题,因此总体设计又称为概要设计或初步设计。通过这个阶段的工作,开发人员将划分出组成系统的物理元素,如程序、文献、数据库等。但是这些物理元素还处在黑盒子的形式,具体的内部细节在具体设计阶段考虑。总体设计的另一项任务是设计软件的总体结构,即拟定系统中的每个程序是由哪些模块组成的,每个模块的功能及模块和模块之间的接口、调用关系等,但所有这些都不规定涉及模块内部过程的细节。4.2为每种类型的模块耦合和模块内聚各举一个具体例子。答:无直接耦合模块B和C模块D和E模块B和D模块B和E数据耦合函数调用时的值传递模块A:完毕两个数的输入。模块B:完毕两个数的比较,求出最大并返回。比较输入的两个数的大小。标记耦合 模块A模块C模块B数据结构数据结构控制耦合模块A 模块A 模块B功能1功能2功能3。。。功能n公共环境耦合模块A模块B公共模块模块A:学生信息查询模块B:选课查询模块C:成绩查询数据结构:学号+院系+课程模块模块A模块B公共模块内容耦合模块A模块B(公共数据)模块A模块BENTRYone:a)b)c)偶尔内聚moveatob;readdiskfile;movectod;…逻辑内聚模块A模块B功能1功能2。。。功能n参数信息时间内聚模块完毕各种初始化工作,同时打开若干个文献,同时关闭若干个文献等。通信内聚模块A模块A:学生信息查询数据结构 模块B:选课查询及成绩查询数据结构:学号+院系+课程模块A顺序内聚、功能内聚输入系数求解输入系数求解打印方程解4.3模块的耦合性和软件的可移植性有什么关系?说明理由。答:模块的耦合性越低软件的可移植性越高。模块的耦合性是指模块之间互相独立的度量,耦合强弱取决于借口的复杂限度,在软件的设计中尽也许设计弱的耦合的系统,这样程序容易测试、修改和维护,也便于移植到其他计算机上。4.4如何区分数据流图的类型?试述“变换型数据流图”和“事务型数据流图”的设计环节。答:(1)按照数据流图的性质可以将数据流图提成两种基本类型:变换型和事务型。变换型数据流图基本呈线性形状的结构,由输入、变换、输出3部分组成;当一个数据项到达解决某个模块时,将有多个动作之一,这就是事务型的。这种类型的数据流图常呈辐射状,即数据沿着输入通路到达下一个解决T,这个解决根据输入数据的类型分离成一束平行的数据流,然后选择执行若干个动作序列中的某一个来执行。(2)变换型数据流图的设计环节:拟定逻辑输入和逻辑输出的边界,找出变换中心;设计软件结构的顶层和第一层;设计中下层模块;对初始结构图优化。事务型数据流图的设计环节:在数据流图上拟定事务中心,输入流和活动途径;设计事务结构的顶层和第一层;设计事务结构的中下层;对初始的事务结构优化工作同变换结构。4.5画出习题3中的第3.8题的软件结构图。答:计算机教材购销系统接受输入审查并购书输出读取进书通知读取购书单信息审查有效性购书领书单缺书单进书告知购书有效/无效购书单领书告知缺书告知进书告知/购书单领书告知/缺书告知4.6试将图4.17的变换型数据流图转换成软件结构图。图4.17变换型数据流图答:4.7工资管理系统中的一个子系统有如下功能。由基本工资计算应扣除(如水电气费等)的部分;根据职工的出勤情况计算奖金部分;根据输入的扣除额及奖金计算工资总额部分;由工资总额计算应扣除税金部分;根据计算总额部分和计算税金部分传递来的有关职工工资具体信息生成工资表。试根据需求画出该问题的数据流图,并将其转换为软件结构图。答:数据流图职工出勤表基本工资职工工资表水电费用计算计算工资总额计算奖金税金计算工资单生成软件结构图软件结构图工资管理系统得到应扣除(如水电气费等)的部分和奖金得到应扣除的部分得到奖金基本工资出勤情况计算应扣除的计算奖金由应扣除的部分和奖金得到工资单计算工资总额计算税金职工工资详细信息输出工资单生成工资单输出工资表工资单4.8比较软件结构图和层次图的异同。答:软件结构图是软件系统的模块层次结构,结构图的重要内容有:模块、模块的调用关系、辅助符号。两个模块之间用单向箭头或直线连接起来表达它们的调用关系,用直线而不用箭头表达模块之间的调用关系。在调用线两旁通常尚有带注释的箭头表达模块调用过程中来回传递的信息,箭头指明传送的方向,以同一名字命名的模块在结构图中仅允许出现一次,一般总是位于上方的模块调用位于下方的模块,调用关系只能从上到下,调用顺序可以依据数据传递关系来拟定,一般由左向右。层次图是软件系统的模块层次结构,层次图中的每一个矩形框代表一个模型,矩形框之间的关系表达调用关系,层次方框图中方框代表一个数据,方框之间的连线表达组成关系。第五章5.1软件具体设计的基本任务是什么?有哪几种描述方法?答:(1)软件具体设计的基本任务就是为软件结构图中每一个模块拟定采用的算法和块内数据结构,用某种选定的具体设计工具更清楚地描述,从而在编码阶段可以把这些描述直接翻译成某种程序设计语言书写的源程序。(2)有图形、表格和语言三种描述方法。5.2结构化程序设计的基本要点是什么?答:结构化程序设计使用三种基本控制结构,有顺序、条件和反复;结构化程序设计采用自顶向下,逐步求精的设计方法和单入口单出口的控制结构。逐步求精,在总体设计阶段用逐步求精法可以把一个复杂问题解法分解和细划成由许多模块组成的层次结构和软件系统。5.3使用流程图、PAD图、N-S图和PDL语言描述下列程序的算法:(1)在数据A(1)~A(10)式中求最小数和次小数;答:流程图PAD图N-S图PDL语言PROCEDURE模块名(形式参数);PUT(“请输入十个数字”);FORi=1to10Get(A(i))ENDFOR;i=1;WHILEi<=10j=i+1;Min=A(i);WHILEj<=10IFMin>A(i)THENB=Min;Min=A(i);A(i)=B;ENDIF;j++;ENDWHILE;A(i)=Min;i++;ENDWHILE;PUT(“输出最小数:”);PUT(A(1));PUT(“输出次小数:”);PUT(A(2));(2)输入3个正整数作为边长,判断由这3条边构成的三角形是直角、等腰或一般三角形。答:流程图FFFTFTFFTTTT开始输入三个整数A1、A2、i<=3j=i+1Min=A(i)j<=3Min>A(j)B=MinMin=A(i)A(i)=Bj++A(i)=Mini++i=1A1^2+A2^2=AA1=A2A1=A等腰直角三角形直角三角形等腰三角形一般三角形结束PAD图sorti=1WHILEi<=3j=i+1Min=A(i)WHILEj<=3A(i)=Mini++Min>A(j)j++B=MinMin=A(i)A(i)=BTFdefN-S图输入三个整数A1、A2、A3Whilei<=3j=i+1Min=A(i)Whilej<=3Min>A(j)B=MinMin=A(i)A(i)=Bj++i=1A(i)=Mini++TFA1^2+A2^2=A3^2TFA1=A输出等腰直角三角形输出直角三角形TF输出等腰三角形输出一般三角形A1=ATFPDL语言PROCEDURE模块名(形式参数);PUT(“请输入三个正整数”);FORi=1to3Get(A(i))ENDFOR;i=1;WHILEi<=3j=i+1;Min=A(i);WHILEj<=3IFMin>A(i)THENB=Min;Min=A(i);A(i)=B;ENDIF;j++;ENDWHILE;A(i)=Min;i++;ENDWHILE;IFA1^2+A2^2=A3^2THENIFA1=A2THENPUT(“等腰直角三角形”)ELSEPUT(“直角三角形”)ENDIF;ELSEIFA1=A2THENPUT(“等腰三角形”)ELSEPUT(“一般三角形”)ENDIF;ENDIF;5.4任选一种排序(从大到小)算法,分别用流程图、NS图和PDL语言描述其具体过程。见5.3题第一问5.5画出下列程序的PAD图。repeatifx>0thenx1elsex2endif;S1;ify>0theny1ifz>0thenz1elsez2endif;S2;elsey2;endif;untill;答:开始开始结束UNTILLAS1BAABx>0defdefy>0x1x2Cy2TFTFdefz1z2S2z>0CFTy15.6程序流程图、NS图、PAD图和PDL语言的特点各是什么?你认为这4种详细设计工具哪一种最佳?为什么?答:程序流程图:优点:易学、表达算法直观。缺陷:程序流程图本质上不是逐 步求精的好工具,程序流程图中用箭头代表控制流,因此程序员 不受任何约束,可以完全不顾结构程序设计的精神,随意转移控 制,容易导致非结构化的程序结构;程序流程图不易表达数据结 构和层次结构。NS图:优点:功能域表达明确,功能域从盒式图上可以明显地看出来;很容 易拟定局部和全局数据的作用域;不也许随意转移控制;很容易 表达模块的层次结构,并列或嵌套关系;使得软件设计人员遵守 结构化程序设计的规定,自然地养成良好的程序设计风格。缺陷: 重要特点就是只能描述结构化程序所允许的标准结构PAD图:优点:用PAD图设计出来的程序必然是结构化程序;PAD图所描绘 的程序结构十分清楚,图中最左面的竖线就是程序的主线,即第一层结构。随着程序的层次增长,PAD图逐渐向右延伸,每增长一个层次,图形向右扩展一条竖线。PAD图中竖线的总条数就是程序的层次数;PAD图的符号支持自顶向下,逐步求精的方法,左边层次中的内容可以抽象,然后运用def从左向右逐步细化;用PAD图表达的程序逻辑易读、易懂、易记,使用方便;既可表达程序逻辑,也可用于描绘数据结构;可自动生成程序。运用软件工具自动完毕,省去人工编码工作,有助于提高软件的可靠性和软件生产率。PDL语言:特点:所有关键字都有固定语法,以便提供结构化的控制结构、数据说明和模块化的特性;为了使结构清楚和可读性好,通常在所有也许嵌套使用的控制结构的头和尾部都有关键字;描述解决过程的说明性语言没有严格的语法限制;具有数据说明机制,既涉及简朴的数据结构(例如,简朴变量和数组)又涉及复杂的数据结构(例如,链表或层次的数据结构);具有模块定义和调用机制,因此,开发人员应根据系统编程所用的语种,说明过程设计语言表达的有关程序结构。第六章6.1在软件项目开发时,选择程序设计语言通常考虑哪些因素?答:为了使程序容易测试和维护以减少软件开发总成本,选用的高级语言应当有比较抱负的模块化机制,以及可读性好的控制结构和数据结构;为了便于调试和提高软件的可靠性,语言的特点应当使编译程序可以尽也许地发现程序中的错误;为了减少软件开发和维护的成本,选用的语言应当有良好的独立编译机制。这些规定是选择程序设计语言的抱负标准,但在实际选用程序设计语言时,不能仅仅考虑理论上的标准,还必须同时考虑实际应用方面的各种因素和限制,如不同应用问题的特性、用户规定、应用环境等。重要的实用标准有下述几条:待开发软件的应用领域、用户的规定、软件的运营环境、软件开发人员的知识、软件的可移植性规定6.2举例说明各种程序设计语言的特点及合用范围。答:FORTRAN语言,它不仅面向科学计算,数据解决能力也极强。合用于科学工程计算 Pascal语言,具有很强的数据和过程结构化能力,它语言简明,数据类型丰富,程序结构严谨。它是第一个体现结构化编程思想的语言。用于描述结构化算法和科学计算,操作系统的编写 C语言:功能强大,支持复杂的数据结构,可大量运用指针,具有丰富灵活的操作运算符及数据解决操作符,它还具有汇编语言的某些特性,使程序运营效率高。可用于许多领域,特别是在操作系统等方面有较大优势。 Coble语言,它具有极强的数据定义能力,程序说明与硬件环境说明分开、数据描述与算法描述分开。结构严谨层次分明,广泛用于商业数据解决。 SQL:结构化查询语言,用于对数据库进行存取管理。汇编语言和Ada语言,重要用于实时解决和编写系统软件。 Prolog、Lisp语言。Lisp是一种函数型语言,特别合用于组合问题中符号运算和表解决,用于定理证明、树的搜索和其他问题的求解。Prolog是一种逻辑型语言,它提供了支持知识表达的特性,每一个程序由一组表达事实、规则和推理的句子组成,比较接近与自然语言。这两种语言重要用于人工智能系统开发。 C++、Java语言,是面向对象的设计语言,用于面向对象的方开发软件。6.3什么是程序设计风格?为了具有良好的程序设计风格,应当注意哪些方面的问题?答:程序设计风格是指一个人编制程序时所表现出来的特点、习惯、逻辑思绪等。要形成良好的程序设计风格,应从源程序文档化、数据说明、语句构造、输入输出和追求效率几个方面加以注意。6.4以下3个表达式表达的是同一个内容:(A)-6**A/3*B;-(6**A/3)*B;+(((6**A)/(-3))*x)你认为哪一种可读性最佳?哪一种最差?假如让你列出几条关于书写表达式的指导原则,你对表达式中运算符的数量和圆括号的层数将做何规定?答:(1)b的可读性最佳,c的可读性最差(2)表达式中运算符的数量应当以满足表达式为宜,不应加入过多无谓的运算符:括号的数量不应过多,适合恰当的括号使逻辑表达式的运算顺序清楚直观,过多或过少的括号都会减少可读性。6.5第4代语言有哪些重要特性?为什么受到广大用户欢迎?答:重要特性是:和谐的用户界面、非过程性,程序员只需告诉计算机“做什么”,而不必描述“如何做”。由于易学易用而受到广大用户欢迎。第七章7.1软件测试的基本任务是什么?简述测试的目的和基本原则。答:(1)测试阶段的基本任务应当是根据软件开发各阶段的文档资料和程序内部结构,精心设计一组“高产”的测试用例,运用这些用例执行程序,找出软件中潜在的各种错误缺陷。(2)目的:暴露程序中的错误。基本原则:1.测试用例既要有输入数据,又要有相应的输出结果。这样便于对照检查,做到“有的放矢”。2.测试用例不仅要选用合理的输入数据,还应选择不合理的输入数据。这样能更多地发现错误,提高程序的可靠性,还可以测试出程序的排错能力。3.除了检查程序是否做了它应当做的工作,还应当检查程序是否做了它不应当做的工作。例如,程序对的打印出用户所需信息的同时还打印出用户不需要的多余信息,即程序做了不应当做的工作仍然是一个大错。4.应当远在测试开始之前就制定测试计划。事实上,一旦完毕了需求分析模型就可以开始制定测试计划。在建立了设计模型之后,就可以立即开始设计具体的测试方案。因此在编码之前就可以对所有测试工作进行计划和设计,并严格执行,排除随意性。5.测试计划、测试用例、测试报告必须作为文档长期保存。由于程序修改以后有时也许会引进新的错误,需要进行回归测试。同时可认为以后的维护提供方便,对新人或此后的工作都有指导意义。6.PAreto原理说明,测试发现的错误中80%很也许是由程序中20%的模块导致的,即错误出现的“群集性”现象。可以把PAreto原理应用到软件测试中。但关键问题是如何找出这些可疑的有错模块并进行彻底测试。7.为了达成最佳的测试效果,程序员应当避免测试自己的程序。测试是一种“挑剔性”的行为,测试自己的程序存在心理障碍。此外,对需求规格说明的理解而引入的错误则更不容易发现。因此,应当由独立的第三方从事测试工作,会更客观、更有效。7.2简述静态测试与动态测试的含义。它们之间有什么不同点和相同点。答:静态测试就是静态分析,是指被测程序不在机器上运营,对模块的源代码进行研读,查找错误或收集一些度量数据,采用人工检测和计算机辅助静态分析手段对程序进行检测,只进行特性分析。动态测试是指通过运行程序发现错误。一般所讲的测试大多是指动态测试。相同点:都可以进行软件测试。不同点:静态测试的执行可以在程序编码编译前,动态测试只能在编译后执行;静态测试用于防止,动态测试用于矫正。7.3白盒测试用例和黑盒测试用例设计的基本方法。答:白盒测试用例:逻辑覆盖、循环覆盖、基本途径测试黑盒测试用例:等价类划分法、边界值分析法、错误推测法、因果图法7.4测试用例设计、组织和测试过程组织之间的关系和实践过程。答:7.5简述测试和调试的含义,它们之间有什么区别?答:测试的含义:软件测试是为了发现错误而执行程序的过程;一个好的测试用例可以发现至今尚未发现的错误;一个成功的测试是发现了至今尚未发现的错误的测试。调试的含义:为了解决存在的错误,即对错误定位、分析并找出因素改正错误。7.6软件测试要通过哪些环节?这些测试与软件开发各阶段之间有什么关系?答:单元测试、集成测试、确认测试、系统测试。单元测试以具体设计的说明为指导,测试模块内的重要控制途径,力求在模块范围内发现错误;进行集成测试来发现与模块接口有关的错误,最终组装成一个符合设计规定的软件系统;确认测试又称有效性测试,它和验收测试比较接近,合理的盼望则是指软件需求规格说明书中所拟定的指标。因此,需求规格说明书是确认测试的基础;系统测试保证个组成部分不仅单独的正常运营,并且在系统各部分统一协调下也能正常运营。7.7什么是单元测试,什么是集成测试,什么是确认测试?答:单元测试是对软件基本组成单元进行的测试。检查每个独立模块是否对的地实现了规定的功能。单元测试所发现的往往是编码和具体设计中的错误。各模块通过单元测试后,接下来需要进行集成测试。集成测试是将已分别通过测试的单元按设计规定组合起来再进行测试,以检查这些单元之间的接口是否存在问题,同时检查与设计相关的软件体系结构的有关问题。在这个测试阶段发现的往往是软件设计中的错误,也也许发现需求中的错误。确认测试是检查所开发的软件是否满足需求规格说明书中所拟定的功能和性能的需求。在这个测试阶段发现的是需求分析阶段的错误,如对用户需求的误解,有冲突的用户需求等。完毕确认测试后,得到的应当是用户确认的合格的软件产品。7.8一个C语言程序,读入3个正整数作为三角形的边长,规定程序打印如下信息:该三角形是等边的、等腰的或一般三角形。试设计一组测试用例,用来测试此程序。答:输入等价类测试用例说明测试数据盼望结果输入三个正整数且两边之和大于第三边两个整数相等2,3,2等腰三角形三个整数相等3,3,3等边三角形三个整数皆不相等2,3,4一般三角形输入两个整数、一个整数、零个整数两个整数2,3输入无效一个整数2输入无效零个整数输入无效输入三个数中有负数、0或小数输入中有负数-2,1,3显示犯错输入中有02,0,3显示犯错输入中有小数1.4、2、2.5显示犯错输入三个整数两个整数之和小于等于第三个整数两个整数之和等于第三个整数2,2,4显示犯错两个整数之和小于第三个整数1,2,4显示犯错7.9某高校拟对参与计算机应用水平考试成绩好的学生进行奖励,成绩合格者奖励50元,成绩在80分以上者奖励100元,成绩在90分以上者奖励200元,并公布奖励成绩及所获奖金,编写程序流程图,设计测试用例,写出测试途径及所满足的覆盖条件。答:答:开始结束90<成绩80<成绩60<成绩输入成绩输出成绩,未获奖金输出成绩,奖金奖励200元奖励100元奖励50元TFTFTFabcedfghijk测试用例:1.成绩不合格者,覆盖途径:abcegik2.成绩合格且80分以下者,覆盖途径:abceghjk3.成绩80分以上90分以下者,覆盖途径:abcefjk4.成绩90分以上者,覆盖途径:abcdjk7.10设某个程序用于求一元二次方程Ax+bx+c=0的根,A、b和c为整数。试采用等价类划分法和边界值分析法来设计测试用例。答:输入等价类测试用例说明测试数据盼望结果a≠0b2-4ac>0a=3,b=5,c=1有两个不同的根b2-4ac=0a=1,b=2,c=1有一个根b2-4ac<0a=3,b=2,c=1无实数根a=0b=0且c≠0a=0,b=0,c=3显示犯错b=0且c=0a=0,b=0,c=0根为任意值b≠0a=0,b=-6,c=3有一个根7.11DrikstrA说:“程序测试只能证明错误的存在,不能证明错误不存在。”Myers说:“测试是为了证明程序有错,而不是证明程序无错。”如何理解这两句话所蕴涵的意义。答:软件测试是为了发现错误而执行程序的过程,重要体现了测试的特点:挑衅性和不彻底性。7.12一个折半查找程序可搜索按字母顺序排列的名字列表,假如查找的名字在列表中则返回真,否则返回假。为了对它进行功能测试,应当设计哪些测试用例?答:输入等价类测试用例说明测试数据盼望结果字符皆为字母名字在列表中May返回真名字不在列表中Sky返回假字符中有数字或其他字符一个数字May3显示犯错多个数字May143显示犯错其他字符May-*.显示犯错第八章8.1为什么软件需要维护?维护有哪几种类型?简述它们的维护过程。答:(1)由于软件系统投入使用后还经常会发生一些变化,如对隐含错误的修改,新功能的加入,环境变化导致的程序变动等。(2)(3)规定进行软件维护的因素多种多样,概括起来有以下4种类型。改正在特定使用条件下暴露出来的,测试阶段未能发现的,潜在软件错误和设计缺陷。因在软件使用过程中数据环境发生变化(如事务解决代码改变),或解决环境发生变化(如安装了新硬件或更换了操作系统),需要根据实际情况,修改软件以适应这些变化。用户和数据解决人员在使用软件过程中,经常会提出改善现有功能、增长新的功能或者改善系统总体性能等规定,为满足此类规定而对软件进行的修改。为防止软件系统的失效而对软件系统所实行的修改。8.2什么是软件可维护性?可维护性度量的特性是什么?提高可维护性的方法有哪些?答:(1)软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的规定进行修改、扩充或压缩的容易限度。可理解性、可测试性、可修改性、可靠性、可移植性、可使用性、效率建立明确的软件质量目的和优先级;使用提高软件质量的技术和工具;选择便于维护的程序设计语言;采用明确的、有效的质量保证审查措施;完善程序的文档。8.3改正性维护与“排错”是否是一回事?为什么?答:不是一回事。改正性维护是把在软件投入使用后才逐渐暴露出来的错误的诊断、定位、改错的过程。排错是指在软件测试阶段,程序存在大量的bug,通过测试发现错误,通过排错来纠正错误。8.4软件维护困难的因素是什么?提高可维护性的方法有哪些?答:(1)许多软件的维护十分困难,因素在于这些软件的文档像源程序同样难以理解,又难以修改。从原则上讲,软件开发工作应严格按照软件工程的规定,遵循特定的软件标准或规范进行。但事实上往往由于种种因素并不能真正做到。例如,文档不全、质量差、开发过程不注意采用结构化方法、忽视程序设计风格等。(2)建立明确的软件质量目的和优先级;使用提高软件质量的技术和工具;选择便于维护的程序设计语言;采用明确的、有效的质量保证审查措施;完善程序的文档。8.5什么是软件维护的副作用?软件维护的副作用有哪几种?试举例说明?答:(1)维护的副作用是指由于修改软件而导致新的错误的出现或者新增长一些不希望发生的情况。修改代码的副作用、修改数据的副作用、修改文档的副作用修改代码的副作用:删除或修改一个子程序、删除或修改一个标号、删除或修改一个标记符、改变程序代码的时序关系、改变占用存储的大小、改变逻辑运算符、修改文献的打开或关闭、改善程序的执行效率,以及把设计上的改变翻译成代码的改变、为边界条件的逻辑测试做出改变时,都容易引入错误。修改数据的副作用:在重新定义局部的或全局的常量、重新定义记录或文献的格式、增大或减小一个数组或高层数据结构的大小、修改全局或公共数据、重新初始化控制标志或指针、重新排列输入/输出或子程序的参数时,容易导致设计与数据不相容的错误。修改文档的副作用:对交互输入的顺序或格式进行修改,假如没有对的地记入文档中,就也许引起重大的问题。8.6在软件计划中是否应当把维护费用计划在内?实际情况如何?答:应当算入。在软件维护过程中,需要花费大量的工作量,从而直接影响了软件维护的成本。8.7什么是软件再工程?软件再工程的意义是什么?软件再工程的相关技术有哪些?答:(1)软件再工程是一类软件工程活动,它可以使人们:增进对软件的理解;准备或直接提高软件的可维护性、复用性或演化性。(2)软件再工程旨在对现存的大量软件系统进行挖掘、整理,以得到有用的软件构件,或对已有软件构件进行维护,以延长其生存期。这是一个工程过程,可以将逆向工程、重构和正向工程组合起来,将现存系统重新构造为新的形式。(3)再工程课题相关技术改善软件重构、文档重写、加注释更新文档、复用工程、重新划分模块、数据再工程、业务过程再工程、可维护性分析、业务分析、经济分析理解软件浏览、分析并度量、逆向工程、设计恢复获取、保存及扩充软件的知识分解、逆向工程设计恢复、对象恢复、程序理解、知识库及变换第九章9.1面向对象方法的要点涉及哪些内容?答:面向对象方法学的出发点和基本原则是尽也许模拟人类习惯的思维方式,使开发软件的方法与过程尽也许接近人类解决问题的方法与过程;面向对象方法是一种新的思维方法,它不是把程序看作是工作在数据上的一系列过程或函数的集合,而是把程序看作是互相协作而又彼此独立的对象的集合。面向对象的方法学可以用下式来表述:OO=Objects+Classes+Inheritance+Communicationwithmessages即面向对象涉及既使用对象,又使用类和继承等机制,并且对象之间仅能通过传递消息实现彼此通信。9.2什么是基于对象?什么是面向对象?答:若仅使用对象和消息,则该方法称为基于对象的(Object-based)方法,而不是面向对象的方法;若进一步把所有对象都划分为类,则该方法称为基于类的(Class-based)方法。只有同时使用对象、类、继承和消息的方法,才是真正的面向对象的方法。9.3什么是类,什么是对象,类和对象是什么关系?答:(1)类是具有相同属性和操作的一组相似对象(实体)的集合,类为属于该类的所有对象提供了统一的抽象描述。对象是对问题域中客观存在的事物的抽象,是一组属性和在这些属性上的操作的封装体。类给出了属于该类的所有对象的抽象定义,而对象则是符合这种定义的一个实体。因此,对象又称为是类的一个“实例(Instance)”,类又称为是对象的“模板(Template)”。类代表一类抽象的概念或事物。对象是在客观世界中实际存在的类的实例。9.4传统软件开发方法存在哪些问题?面向对象方法学有哪些优点?答:(1)软件重用性差、软件可维护性差、开发出的软件不能满足用户需要。(2)与人类习惯的思维方式一致、软件稳定性好、可重用性好、较易开发大型软件产品、可维护性好,易于测试9.5类与类之间的关系涉及哪几种?各自合用于什么问题的描述?答:(1)继承、多态性、关联、依赖、实现、聚集和组合。(2)继承是子类自动地共享父类中定义的数据和方法的机制。多态性多态性指子类对象可以像父类对象那样使用,它们可以共享一个操作名,然而却有不同的实现方法,换句话说,指在父类中定义的属性或操作被子类继承后可以具有不同的数据类型或表现出不同的行为。关联模型元素间的一种语义联系,它是对具有共同的结构特性、行为特性、关系和语义的连接(Link)的描述,互相关联的两个对象间的连接是关联的一个实例。UML中的对象类的关联是面向对象技术中的实例连接,是通过对象的属性所建立的对象之间的联系。依赖就是一个类A使用到了另一个类B,而这种使用关系是具有偶尔性的、临时性的、非常弱的,但是类B的变化会影响到类A。实现用来规定接口和实现接口的类之间的关系,接口是操作的集合,而这些操作就用于规定类或者构件的一种服务。聚集和组合整体拥有各部分,部分与整体具有同样的生存期,如整体不存在了,部分也会随之消失,称为组合。组合是一种特殊形式的强类型的聚集。9.6典型的面向对象方法有哪些?各自的特点是什么?答:(1)Booch方法、Coad/Yourdon方法、OMT/Rumbaugh方法、OOSE方法/Jacobson方法、Wirfs-Brock方法(2)Booch方法并不是一个开发过程,只是在开发面向对象系统时应遵循的一些技术和原则。Booch方法是从外部开始,逐步求精每个类,直到系统被实现。因此,它是一种分治法,支持循环开发,它的缺陷在于不能有效地找出每个对象和类的操作。OMT方法覆盖了应用开发的全过程,是一种比较成熟的方法,用几种不同的观念来适应不同的建模场合,它在许多重要观念上受到关系数据库设计的影响,合用于数据密集型的信息系统的开发,是一种比较完善和有效的分析与设计方法。在OOAD方法中,OOA把系统横向划分为5个层次,OOD把系统纵向划分为4个部分,从而形成一个清楚的系统模型。OOAD合用于小型系统的开发。OOSE可以较好地描述系统的需求,是一种实用的面向对象的系统开发方法,合用于商务解决方面的应用开发。Wirfs―Brock方法不明确区分分析和设计任务,从评估客户规格说明到设计完毕,是一个连续的过程。9.7UML的组成元素有哪些?UML包含的13种图分别是什么?合用于什么场合?答:(1)基本构造块、规则、公共机制类图、对象图、用例图、构件图、部署图、包图、组合结构图、状态图、顺序图、通信图、活动图、计时图、交互概览图类图(ClassDiagram)描述了类、接口、协作及它们之间的关系。在面向对象系统建模中,类图是最常用的图,类图描述了系统的静态结构。对象图(ObjectDiagram)描述了对象及对象之间的关系,对象图也描述了系统在某个时刻的静态结构。用例图(UseCaseDiagram)描述了用例、参与者及它们之间的关系,用例图用来描述系统的功能。构件图(ComponentDiagram)描述模型元素之间的组织结构和依赖关系, 构件图描述了实现系统的元素的组织。部署图(DeploymentDiagram)描述系统环境元素的配置。包图(PackageDiagram)描述能作为一个集合进行命名和解决的建模元素组织,包的存在只是为了帮助组织模型的元素,在系统运营时不出现,完全是组织设计的机制。组合结构图(CompositeStructureDiagram)展示类或协作的内部结构。状态图(StatechartDiagram)描述系统元素的状态条件和响应。顺序图(SequenceDiagram)准时间顺序描述系统元素之间的交互。通信图(CommunicationDiagram)准时间和空间的顺序描述系统元素间的交互和关系,UML1.0中为协作图(CollaborationDiagram)。活动图(ActivityDiagram)描述系统元素的活动。计时图(TimingDiagram)重要用于表达交互过程中不同对象状态改变的定期约束。交互概览图(InteractionOverviewDiagram)是将活动图和顺序图综合在一起的图,并没有引入新的建模元素,其组成元素涉及活动图和顺序图两种元素。9.8UML有哪些特点,为什么UML已成为软件行业的标准建模语言?答:(1)特点:统一标准、面向对象、可视化及表达能力强大、独立于过程、易于掌握应用(2)使用UML进行软件系统的分析与设计,可以加速软件开发的进程,提高代码的质量,支持变动的业务需求。UML合用于各种大小规模的软件系统项目,能促进软件复用,方便地集成已有的系统软件资源。9.9UML中有哪些视图,“4+1”视图中的各图有什么功能?答:(1)用例视图、逻辑视图、进程视图、实现视图、部署视图。(2)用例视图(UseCaseView)表达系统的功能性需求,使用用例图来描述,用活动图来进一步描述其中的用例。逻辑视图(LogicalView)表达系统的概念设计和子系统结构等,用类图、对象图、逻辑结构图和包图描述系统静态结构,用状态图、顺序图、通信图(UML1.0版本中的协作图)和活动图描述系统动态行为。逻辑视图又称为结构模型视图。进程视图(ProcessView)表达系统的动态行为及其并发性,使用状态图、顺序图、通信图、活动图、计时图、构件图和部署图来描述动态行为,又称为行为模型视图。实现视图(ImplementationView)表达系统实现的代码结构和行为特性,用构件图来描述,又称构件视图。部署视图(DeploymentView)用于定义硬件结点的物理结构,表达实现环境和构件被部署到物理结构中的映射,部署视图用部署图来描述。9.10简述UML中重要图之间的关系,各种图在软件开发阶段的作用。答:其中用例图是在需求获取阶段要使用的图,活动图、类图、顺序图是在分析阶段要使用的图,状态图、类图、对象图、通信图是设计阶段要使用的图,由于在面向对象的方法中,分析阶段和设计阶段没有明确的界线,因此这种划分并不是一成不变的。9.11支持UML的软件开发工具重要有哪些?答:RationalRose2023、Together6.1、ArgoUMLv0.14等。9.12表达RUP软件开发生存周期的二维模型中,横轴表达什么,纵轴表达什么?答:横轴代表时间,显示了过程的生存周期,体现了过程的动态结构,通过周期、阶段、迭代和里程碑来表达。纵轴代表核心工作流,工作流将活动自然地进行逻辑分组,体现了过程的静态结构。9.13Rational统一过程中有哪4个阶段,各阶段需要完毕的重要工作有哪些?答:初始阶段、细化阶段、构造阶段、交付阶段。第十章10.1面向对象建模重要建立哪几种模型?各自的特点是什么?答:(1)用类和对象表达的对象(静态)模型、由用例和场景表达的用例(功能)模型、由状态机图和交互图表达的动态行为模型、由构件图和部署图表达的物理实现模型。(2)用例(功能)模型往往是从用户需求的角度来描述系统,指明系统应当“做什么”,直接反映用户对目的系统的需求,描述数据在系统中的变换过程及系统的功能。对象模型是对模拟客观世界的对象及对象彼此间的关系静态结构的描述,为建立动态模型和用例(功能)模型提供了实质性的框架。动态模型表达瞬时的、行为化的、系统的“控制”性质,定义对象模型中对象的合法变化序列,描述系统中不同对象类之间的交互。动态模型是基于事件共享而互相关联的一组状态图的集合。物理实现模型关注的是系统实现过程的建模,从实现子系统和实现元素(即构件)的角度来表现系统实现的物理组成。10.2什么是面向对象的分析?对象模型的层次是什么?答:(1)面向对象分析通过控制可见性和指导读者的注意力两个方面来体现Miller(7±2)原则,其中,通过控制读者能见到的层次数目来控制可见性,通过主题层从一个相称高的层次描述总体模型,并对读者的注意力加以指导。(2)5个层次相应着建立对象模型的5项活动:找出类与对象、辨认结构、辨认主题、定义属性、定义服务。10.3用例建模包含哪几个环节?答:需求分析与用例建模、拟定系统范围和系统边界、拟定参与者、拟定用例、拟定用例之间的关系。10.4对象模型包含哪些内容?对象建模的环节是什么?答:(1)对象模型是面向对象建模中最关键的一个模型,它的作用是描述系统的静态结构,涉及构成系统的类和对象、它们的属性和操作及它们之间的关系。(2)拟定类和对象、拟定关联、拟定属性、建立对象类图、划分主题、优化对象模型。10.5动态模型重要是通过UML的哪些图形来表达?这些UML图形分别建模问题中的哪些方面?各有什么特点?答:(1)交互(顺序图或通信图)或状态机(状态图或活动图)(2)(3)顺序图表达类(对象)准时间顺序的消息互换过程,体现出系统用例的行为。顺序图是用来显示参与者如何采用若干顺序环节与系统对象交互的模型。在顺序图中,所有的系统都被当作黑盒子看待,顺序图的重点是参与者发起的跨越系统边界的事件。系统行为描述系统做什么,而不解释系统怎么做。通信图与顺序图类似,通信图也是描述类(对象)之间的关联及其彼此之间的消息通信,但顺序图强调交互的时间顺序,而通信图强调交互的空间结构,这两者在语义上是等价的,两者可以互相转换,而不会丢失信息。状态图通过建立类对象的生存周期模型来描述对象的状态、触发状态转换的事件及对象随时间变化的动态行为(对事件的响应)。表现从一个状态到另一个状态的控制流,是展示状态与状态转换的图。活动图将各种活动及不同活动之间的转换用图形进行表达,就构成了活动图,活动图的作用是对系统的行为建模。活动图着重表现从一个活动到另一个活动的控制流,是内部解决驱动的流程。10.6物理实现模型包含UML的哪些图形?每种图的特点是什么?答:(1)构件图、部署图(2)构件图是描述构件及其互相关系的图,构件之间是依赖关系。通常,构件图包含3种元素:构件、接口和依赖关系。每个构件实现一些接口,并使用另一些接口。部署图由结点和结点间的关联关系组成,描述运营软件的系统中硬件和软件的物理结构,一般一个系统仅有一个部署图。10.7什么叫构件,构件有哪几种类型,UML中构件怎么表达?构件图的作用是什么?答:(1)构件是一个相对独立的可装配的物理块,一般作为一个独立的文献存在。构件具有拟定的接口,互相之间可以调用,构件之间存在依赖关系。构件定义了一个系统的功能,一个构件是一个或多个类的实现。UML2.0将构件划分为部署构件、工作产品构件、执行构件。在UML中,构件通过左部带有两个小矩形的大矩形来表达。构件图是描述构件及其互相关系的图。部署图的作用是什么?答:部署图(DeploymentDiagram)也称配置图、实行图,用来描述系统中计算结点的拓扑结构和通信途径与结点上运营的软件构件等。阅读下面的部署图10.46,规定:图10.46部署图示例标记出通用结点;答:第一幅图中长方体形状的均为结点标记出实例化的结点;答:第二幅图clientcomputer和servercomputer标记出通信关联;答:结点与结点之间的连线标记出构件之间的关系。答:依赖关系第十一章11.1面向对象设计应当遵循哪些准则?简述每条准则的内容,并说明遵循这条准则的必要性。答:(1)模块化、抽象、信息隐藏、弱耦合、强内聚、可重用。(2)模块化对象是面向对象软件系统中的模块,它把数据结构和操作这些数据的方法紧密地结合在一起构成模块。抽象抽象强调对象的本质、内在的属性,而忽略了一些无关紧要的属性。面向对象的程序设计语言不仅支持过程抽象,并且支持数据抽象。对象类事实上就是具有继承机制的抽象数据类型。此外,某些面向对象的程序设计语言还支持参数化抽象。信息隐藏在面向对象方法中,信息隐藏具体体现为类的封装性。类是封装良好的可重用构件,类的定义结构将接口与实现分开,软件外部对内部的访问通过接口实现,从而支持信息隐藏。弱耦合按照抽象与封装性,弱耦合是指子系统之间的联系应当尽也许少。面向对象系统中的耦合涉及交互耦合和继承耦合两种类型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高三班会《智驭手机 青春自主》教学设计
- 2025注册土木工程师水利水电考试卷及答案
- 初中地理八年级上册《黄河流域生态保护与高质量发展》教学设计
- 2026广东湛江市殡葬管理所招聘临聘人员2人备考必刷卷含答案
- 2026公务员考试题及答案 行测 真题
- 2026模拟员额检察官晋级考试高频真题真题及答案
- 初中八年级地理教学设计:农业区位因素与区域协调发展深度教学
- 2026年江苏电信人员招聘考试备考题库及详细答案解析
- 2026年殡葬服务员技能考试试题及答案解析
- 2026年保安证模拟考试试题及答案
- 爱粮始于心 节粮践于行2026年世界粮食日主题班会
- 产后产后恢复误区解读
- 2026校招:中国兵器工业笔试题及答案
- 四川省2025年1月普通高中学业水平合格性考试政治试卷(含答案)
- 建筑装饰制图与识图 课件 项目2任务2 点、直线和平面的投影
- 医学科研成果转化指南
- 企业股东资金往来税务合规操作方案
- 2025年太阳能光伏发电项目生态影响评估报告
- 消防队伍的荣誉观教育
- T-CACM 1142-2018 中医神志病临床诊疗指南 双相情感障碍
- 《气体防爆安全培训》课件
评论
0/150
提交评论