软件工程李爱萍-作业参考答案-最终版修改.docx_第1页
软件工程李爱萍-作业参考答案-最终版修改.docx_第2页
软件工程李爱萍-作业参考答案-最终版修改.docx_第3页
软件工程李爱萍-作业参考答案-最终版修改.docx_第4页
软件工程李爱萍-作业参考答案-最终版修改.docx_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章 1.1什么是软件?软件和程序的区别是什么? 答:软件是程序、数据以及开发、使用和维护程序需要的所有文档的完整集合。软件的定义是:计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必须的数据。 软件不是程序,程序是软件的一部分。程序是为了解决某个特定问题而用程序设计语言描述的适合计算机处理的语句序列。它是由软件开发人员设计和编码的。程序执行时一般要输入一定的数据,也会输出运行的结果。没有相关文档,仅有程序是不能称之为软件产品的。 1.2什么是软件生存周期?划分生存周期的主要原则是什么? 答:(1)软件的生存周期是指某一软件项目被提出并着手实现开始,直到该软件报废或停止使用为止所经历的时间。 (2)主要原则:各阶段的任务彼此间尽可能相对独立,同一个阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理。 13什么是软件危机?它有哪些主要表现?为什么会产生软件危机? 答:(1)软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 (2) 主要表现:对软件开发成本和研制进度的估计常常很不精确,导致经费预算经常突破,进度超时完成;由于开发人员常常对用户需求只有模糊的了解以及开发人员和用户又未能及时交换意见,导致已完成的软件不能满足用户的需要;软件产品质量差,可靠性得不到保证;软件产品可维护性差;软件成本在计算机系统总成本中所占的比例逐年上升,软件的发展跟不上硬件的发展;软件开发生产率提高的速度远远跟不上计算机应用速度普及深入趋势,软件发展跟不上用户的要求。 (3) 产生软件危机的原因:造成软件危机的原因与软件自身的特点有关,也与软件开发人员在开发和维护时采用的生产方式、方法、技术有关。软件是计算机系统中的逻辑部件,软件产品往往规模庞大,结构复杂。给软件的开发和维护带来客观的困难;软件开发的管理困难。由于软件规模大、结构复杂、又具有无形性,导致管理困难,进度控制困难,可靠性无法保证;软件开发费用不断增加,维护费用急剧上升,直接威胁计算机应用的扩大;软件开发技术落后;生产方式落后;开发工具落后,生产效率提高缓慢。另外软件开发人员忽视需求分析的重要性,轻视软件维护也是造成软件危机的原因。 1.4什么是软件工程?怎样利用软件工程消除软件危机? 答:(1)软件工程是指导计算机软件开发和维护的一门学科 (2)首先应该对计算机软件有一个正确的认识,彻底清除“软件就是程序” 的错误观念;要使用好的开发技术和方法,并且要不断研究探索更好更有效的技术和方法;要有良好的组织、严密的管理,各类人员要相互配合,共同完成任务,充分认识软件开发不是某种个体劳动的神秘技巧;应该开发和使用好的软件工具,从而有效提高软件生产率。采用“工程化”的思想做指导来解决软件研究中面临的困难和混乱。 1.5何谓面向对象软件工程?简述它和传统软件工程的区别与联系? 答:(1)以面向对象程序设计为基础的软件工程。 (2) 传统软件工程是以结构化程序设计为基础,而面向对象软件工程是以面向对象程序设计为基础。与面向过程的软件工程的开发思想相比,面向对象开发方法不再是以功能划分为导向,而是以对象作为整个问题分析的中心,围绕对象展开系统的分析与设计工作。在开发过程方面,面向对象软件工程和传统软件工程一样也是把软件开发划分为分析、设计、编码和测试等几个阶段,但各个阶段的具体工作不同,除了在编码阶段使用的语言不同外,面向对象软件工程为待开发软件确定“类与对象”一般在需求分析阶段进行,设计阶段则主要完成对象内部的详细设计;而在传统软件工程中,将软件设计划分为“总体设计”和“详细设计”,分别完成软件的总体结构图的设计和各个模块内部算法的详细设计。即:传统软件工程开发过程包括需求分析、总体设计、详细设计、面向过程的编码和测试;面向对象软件工程开发过程包括需求分析与对象抽取、对象详细设计、面向对象的编码和测试。 1.6什么是软件生存周期模型?试比较本章介绍的四种模型的优缺点,说明每种模型的使用范围 答:(1) 软件生存周期模型即为软件开发模型,是描述软件开发过程中各种活动如何执行的模型,是软件过程、活动、任务的结构框架。 优点 缺点 适用范围 瀑布模型 能清晰直观地表达软件开发全过程,明确规定要完成的主要活动和任务,用来作为软件项目工作的基础。 只有当分析员能够做出准确的需求分析时,才能得到预期的正确结果。它是一种理想的线性开发模式,缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。 适合于需求很明确的软件项目开发的模型,对于经常变化的项目而言,瀑布模型毫无价值。 快速原型模型 通过实践让用户了解未来目标系统的概貌,以便判断哪些功能是符合需要的,哪些方面需要改进。反复改进,最终建立完全符合用户需求的新系统。克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险。这种模型适合预先不能确切定义需求的软件系统的开发。 在实际中开发原型系统使用的语言效率有时会很低,所选用的开发技术和工具不一定符合主流的发展;快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。 适合于一些需求可变、模糊不定的软件系统的开发 增量模型 有较大的灵活性。能够在较短的时间内向用户提交一些有用的工作产品。开发出一部分,向用户展示一部分,可让用户及早看到部分软件,及早发现问题。整个系统是由一个个构件集成在一起的,当需求变更时只变更部分部件,而不必影响整个系统。 各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,冒所有构件集成不到一起的风险。 适合于软件要求不明确,设计方案有一定风险的软件项目。 螺旋模型 加入了瀑布模型与增量模型都忽略了的风险分析,使用原型及其他方法来尽量降低风险 该模型需要有相当丰富的风险评估经验和这方面的专门技术,这使该模型的应用受到一定限制。 将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。 第二章 2.1 在软件开发早期阶段为什么要进行可行性研究?可行性研究的任务是什么?应该从哪几个方面研究目标系统的可行性? 答:(1)避免或者减轻项目开发后期可能出现的困境。 (2) 其主要任务是,首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,必须分析几种可能解法的利弊,从而判定原定系统的目标和规模是否现实,系统完成后带来的效益是否大到值得投资开发这个系统的程度。 (3) 经济可行性、技术可行性、操作可行性、法律可行性。 2.2 成本效益分析可用哪些指标进行度量? 答:成本方面包括开发成本和运行维护成本;效益方面包括经济效益和社会效益,经济效益可以用货币的时间价值 、投资回收期、纯收入来度量。 2.3 有人认为,只懂技术的分析员不一定能圆满完成可行性研究的任务。你同意这种看法吗?为什么? 答:同意。因为可行性研究的任务包括三个方面,除了技术可行性之外,还需要进行经济可行性、操作可行性、社会和法律方面的可行性研究,而只懂技术的分析员对其他方面的研究有可能不满足用户的要求,所以只懂技术的分析员不一定能圆满完成可行性研究的任务。 2.4 在【例 2.2】中,把投资改为 6000 元,每年节约金额改为 2000 元,年利率为 6%,试计算投资回收期和纯收入。 解:如下表 年 将来值(元) (1+n*I) 现在值(元) 累计的现在值(元) 1 2 3 4 5 2000 2000 2000 2000 2000 1.06 1.12 1.18 1.24 1.30 1886.79 1785.71 1694.92 1612.90 1538.46 1886.79 3672.50 5367.42 6980.32 8518.78 投资回收期为 (6000-5367.42)/1612.90 +3=3.39(年) 纯收入为 8518.78-6000=2518.78(元) 2.5 为方便旅客,某航空公司拟开发一个飞机票预定系统。旅游公司把预定机票的旅客信息(姓名、年龄、工作单位、身份证号码、旅游时间、旅游目的地等)输入进该系统,系统为旅客安排航班,打印出取票通知和账单,旅客在飞机起飞前的 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 方法中用于表示系统逻辑模型的一种工具。 (2) 它描述系统由哪几部分组成,各部分之间的联系 等, 以直观的图形清晰地描述了系统数据的流动和处理过程。 (3) 箭头,表示数据流; 圆或椭圆,表示变换数据的处理; 方框,表示数据的三原点或终点; = 双杠或单杠,表示数据存储(文件)。 除上述 4 种基本符号之外,有时也使用几种附加符号,星号(*)表示数据之间的关系(同时存在);加号(+)表示“或”关系,号表示只能从中选一个(互斥的关系)。 3.5 画数据流图的步骤是什么?应该注意什么事项? 答:(1)第一步,先找外部实体(可以是人、物或其他软件系统),找到了外部实体,则系统与外部世界的界面就得以确定,系统的源点和终点也就找到了; 第二步,找出外部实体的输入和输出数据流; 第三步,在图的边上画出系统的外部实体; 第四步,从外部实体的输出流(源点)出发,按照系统的逻辑需要,逐步画出一系列变换数据的加工,直到找到外部实体处所需的输入流(终点),形成数据流的封闭; 第五步,按照上述原则进行检查和修改。 最后按照上述步骤画出所有子图。 (2) 画数据流图时,只考虑数据流的静态关系,不考虑其动态关系(如启动、停止等与时间有关的问题),也不考虑出错处理问题。 画数据流图时,只考虑常规状态,不考虑异常状态,这两点一般留在设计阶段解决。 画数据流图不是画程序流程图,二者有本质的区别。数据流图只描述 “做什么”,不描述“怎么做”和做的顺序,而程序流程图表示对数据进行加工的控制和细节。 不能期望数据流图一次画成,而是要经过各项反复才能完成。 描绘复杂系统的数据流图通常很大,对于画在几张纸上的图很难阅读和理解。一个比较好的方法是分层的描绘这个系统。在分层细画时,必须保持信息的连续性,父图和子图要平衡,每次只细画一个加工。 3.6 什么是数据字典?其作用是什么?它有哪些条目? 答:(1)数据字典是对数据流图中所包含元素的定义集合。 (2) 数据字典的作用正是在软件分析和设计的过程中,给人提供数据描述,即对数据存储(文件)和加工(处理)等名字进行定义。 (3) 数据流、数据流分量(数据基本项)、数据存储(文件)和加工(处理)。 3.7 描述加工逻辑有几种工具?各是什么?写出其优缺点。 答:(1)描述加工逻辑一般用结构化语言、判定表和判定树。 优点 缺点 结构化语言 既有结构化程序的清晰易读的优点,又有自然语言简单易懂的优点,又避免了自然语言不精确可能产生二义性的缺点。 只有顺序、循环、条件三种控制结构。 判定表 能清晰地表示复杂的条件组合与应做动作之间的关系。 不能描述循环的处理特征。 判定树 它比判定表更观,且易于理解和使用。 (同判定表) 3.8某高校计算机教材购销系统有以下功能。 学生购买书时,要先填写购书单,系统根据各班学生用表及售书登记表审查有效性,如果有效,系统根据教材库存量表进一步判断书库是否有书,如果有书,系统把领书单返回给学生,学生凭书单到书库领书,对短缺的教材,系统用缺书单的形式通知书库,新书购进书库后,也由书库将进书通知返回给系统。 请采用 SA 方法画出该系统的分层数据流图,并建立相应的数据字典。 答: 学生 学生 书库 书库 图书管理系统购书单 进书通知 领书单 缺书单 a) b) 数据字典 (1) 数据流条目: 购书单=学院+专业+班级+购书种类+购书数量+价格 进书通知=书名+进书数量+书类型+作者名称+出版社+价格 领书单:书名+作者名称+出版社+数量+学院+专业+班级+价格缺书单=书名+作者名称+出版社+剩余数量+再购进数量 (2) 数据存储条目:文件名:库存清单 组成:书名+书籍编号+价格+作者名称+出版社+类型+现有数量组成方式:索引文件,以书籍编号为关键文件名:售书登记表 组成:书名+书籍编号+售出数量+价格组成方式:索引文件,以书籍编号为关键 文件名:各班学生用表组成:班级+人数+领书量 组成方式:索引文件,以班级为关键 (3) 数据项 (4) 加工条目 加工名:图书管理系统 编号:无 输入:购书单、进书通知、库存清单、售书登 记表、各班学生用表 输出:领书单、缺书单 加工名:录入存储处理 编号:1 输入:进书通知 加工逻辑:IF 没有所输入的书籍记录 THEN 建立新的书籍记录,存入该书 籍的基本记录 ELSE 输入书籍记录 ENDIF 加工名:查询处理 编号:2 输入:购书单 输出:领书单、缺书单 加工逻辑:根据购书单、售书登记表、各班学生 用表及库存清单 IF 审查售书登记表及各班学生用表 有效 THEN IF 有库存 THEN 输出领书单 ELSE 输出缺书单 加工名:审查、分类 编号:1.1 输入:进书通知 输出:书籍信息 加工逻辑:根据进书通知将书审查、分类 加工名:审查有效性 编号:2.1 输入:购书单 输出:有效 加工逻辑:根据购书单、售书登记表、各班学生用 表 IF 审查售书登记表及各班学生用表 有效 THEN 输出有效 加工名:判断书库是否有书 编号:2.2 输入:有效 输出:领书单、缺书单 加工逻辑:IF 有库存 THEN 输出领书单 ELSE 输出缺书单 ENDIF 3.9 某计算机公司为本科以上学历的人重新分配工作的政策是:年龄在 25 岁以下者,学历是本科男性要求报考研究生,女性则担任行政工作;年龄在 25 岁至 45 岁之间者,学历本科,不分男女,任中层领导职务,学历是硕士,不分男女,任课题组组长;年龄在 45 岁以上者,学历本科,男性任研究人员,女性则担任资料员,学历是硕士,不分男女,任课题组组长。请用结构化语言、判定表和判定树描述上述问题的加工逻辑。 答:结构化语言: if 年龄25 then if 学历=本科 then if 性别=男 then 报考研究生 endif if 性别=女 then 担任行政工作 endif endif endif if 25=年龄=45 then if 学历=本科 then 担任中层领导职务endif if 学历=硕士 then 任课题组组长 endif endif if 45年龄 then if 学历=本科 then if 性别=男 then 任研究人员 endif if 性别=女 then 任资料员 endif endif if 学历=硕士 then 任课题组组长 endif endif 判定表: 年龄 25 25=年龄=45 45 性别 男 女 男/女 男/女 男 女 男/女 学历 本科 本科 硕士 本科 硕士 报考研究生 担任行政工作 任中层领导职务 任课题组组长 担任研究人员 担任资料员 判定树 男性:要求报考研究生 本科 年龄25 本科 女性:担任行政工作 本科:任中层领导职务 重新分配工作25年龄=45 硕士:任课题组组长 男性:担任研究人员 45 年龄 女性:担任资料员 硕士:任课题组组长 3.10 数据库内容的需求分析工作主要从哪几方面进行? 答:(1)信息需求 信息需求指用户需要从数据库中获得的信息的内容和性质,信息需求是软件数据需求中最基本的需求,主要是确定系统需要存储和使用哪些数据,用户需要从数据库中获得信息的内容和性质。 (2) 处理需求 处理需求是用户要求软件系统完成的功能,以及对系统功能的处理时间、方式等方面的要求,如是要求批处理还是联机处理等。 (3) 使用需求 使用需求包括:使用数据库时在安全性、完整性和一致性等方面的限制;查询方式、输入/输出格式和多用户等方面的要求;响应速度、故障恢复等性能要求。 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 控制信息 模块 B 功 能1 功能2 功能3 。功能 n 公共环境耦合 模块 A 模块 B 公共模块 模块 A:学生信息查询模块 B:选课查询模块 C:成绩查询数据结构:学号+院系+课程 模块 A 模块 B 公共模块 内容耦合 模块A 模块B(公共数据) 模块A 模块B ENTRY one: a) b) c) 偶然内聚 move a to b; read disk file; move c to d; 逻辑内聚 模块A 模块B 功能1 功能2 。功能n 参数信息 时间内聚 模块完成各种初始化工作,同时打开若干个文件,同时关闭若干个文件等。 通信内聚 模块A 模块 A:学生信息查询数据结构 模块 B:选课查询及成绩查询数据结构:学号+院系+课程模块 B 顺序内聚、功能内聚 输入系数 求解 打印方程解 求一元二次方程的 根 4.3 模块的耦合性和软件的可移植性有什么关系?说明理由。 答:模块的耦合性越低软件的可移植性越高。 模块的耦合性是指模块之间相互独立的度量,耦合强弱取决于借口的复杂程度,在软件的设计中尽可能设计弱的耦合的系统,这样程序容易测试、修改和维护,也便于移植到其他计算机上。 4.4 如何区分数据流图的类型?试述“变换型数据流图”和“事务型数据流图”的设计步骤。 答:(1)按照数据流图的性质可以将数据流图分成两种基本类型:变换型和事务型。变换型数据流图基本呈线性形状的结构,由输入、变换、输出 3 部分组成;当一个数据项到达处理某个模块时,将有多个动作之一,这就是事务型的。这种类型的数据流图常呈辐射状,即数据沿着输入通路到达下一个处理 T,这个处理根据输入数据的类型分离成一束平行的数据流,然后选择执行若干个动作序列中的某一个来执行。 (2)变换型数据流图的设计步骤: 确定逻辑输入和逻辑输出的边界,找出变换中心;设计软件结构的顶层和第一层;设计中下层模块;对初始结构图优化。事务型数据流图的设计步骤:在数据流图上确定事务中心,输入流和活动路径;设计事务结构的顶层和第一层;设计事务结构的中下层;对初始的事务结构优化工作同变换结构。 4.5 画出习题 3 中的第 3.8 题的软件结构图。 答: 计算机教材购销系统 接受输入 审查并购书 输出 读取进书通知 读取购书单信息 审查有效性 购书 领书单 缺书单 进书通知 购书 有效/无效 购书单 领书通知 缺书通知 进书通知/购书单 领书通知/缺书通知 4.6 试将图 4.17 的变换型数据流图转换成软件结构图。 图 4.17 变换型数据流图 答: 4.7 工资管理系统中的一个子系统有如下功能。 (1) 由基本工资计算应扣除(如水电气费等)的部分; (2) 根据职工的出勤情况计算奖金部分; (3) 根据输入的扣除额及奖金计算工资总额部分; (4) 由工资总额计算应扣除税金部分; (5) 根据计算总额部分和计算税金部分传递来的有关职工工资详细信息生成工资表。 试根据需求画出该问题的数据流图,并将其转换为软件结构图。 答: 数据流图 职工出勤表 基本工资 职工 工资表 水电费用计算 计算工资总额 计算奖金 税金计算 工资单生成 软件结构图 工资管理系统 得到应扣除(如水电气费等)的部分和奖金 得到应扣除的部分 得到奖金 基本工资 出勤情况 计算应扣除的 计算奖金 由应扣除的部分和奖金得到工资单 计算工资总额 计算税金 职工工资详细信息 输出工资单 生成工资单 输出工资表 工资单 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(“请输入十个数字”); FOR i=1 to 10 Get(A(i) ENDFOR; i=1; WHILE i=10 j=i+1; Min=A(i); WHILEjA(i) THEN B=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 条边构成的三角形是直角、等腰或一般三角形。 答:流程图 F F T F T F F T T T T 开始 输入三个整数A1、A2、i=3 j=i+1 Min=A(i) jA(j) B=Min Min=A(i) A(i)=B j+ A(i)=Min i+ i=1 A12+A22=AA1=A2 A1=A等腰直角三角形 直角三角形 等腰三角形 一般三角形 结束 PAD图 sort i=1 WHILE i=3 j=i+1 Min=A(i) WHILE jA(j) j+ B=Min Min=A(i) A(i)=B T F def N-S图 输入三个整数A1、A2、A3 While i=3 j=i+1 Min=A(i) While jA(j) B=Min Min=A(i) A(i)=B j+ i=1 A(i)=Min i+ T F A12+A22=A32 T F A1=A输出等腰直角三角形 输出直角三角形 T F 输出等腰三角形 输出一般三角形 A1=AT F PDL语言 PROCEDURE 模块名(形式参数); PUT(“请输入三个正整数”); FOR i=1 to 3 Get(A(i) ENDFOR; i=1; WHILE i=3 j=i+1; Min=A(i); WHILE jA(i) THEN B=Min; Min=A(i); A(i)=B; ENDIF; j+; ENDWHILE; A(i)=Min; i+; ENDWHILE; IF A12+A22=A32 THEN IF A1=A2 THEN PUT(“等腰直角三角形”) ELSE PUT(“直角三角形”) ENDIF; ELSE IF A1=A2 THEN PUT(“等腰三角形”) ELSE PUT(“一般三角形”) ENDIF; ENDIF; 5.4 任选一种排序(从大到小)算法,分别用流程图、NS 图和 PDL 语言描述其详细过程。 见 5.3 题第一问 5.5 画出下列程序的 PAD 图。 repeat ifx0 thenx1 else x2 endif; S1; ify0 theny1 ifz0 thenz1 elsez2 endif; S2; elsey2; endif; untill; 答: 开始 结束 UNTIL L A S1 B A B x0 def def y0 x1 x2 C y2T F T F defz1z2S2z0CFTy15.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; (b) -(6*A/3)*B; (c) +(6*A)/(-3)*x) (1) 你认为哪一种可读性最好?哪一种最差? (2) 如果让你列出几条关于书写表达式的指导原则,你对表达式中运算符的数量和圆括号的层数将做何规定?答:(1)b 的可读性最好,c 的可读性最差 (2)表达式中运算符的数量应该以满足表达式为宜,不应加入过多无谓的运算符:括号的数量不应过多,适合恰当的括号使逻辑表达式的运算次序清晰直观,过多或过少的括号都会降低可读性。 6.5 第 4 代语言有哪些主要特征?为什么受到广大用户欢迎? 答:主要特征是:友好的用户界面、非过程性,程序员只需告诉计算机“做什么”,而不必描述“怎样做”。 由于易学易用而受到广大用户欢迎。 第七章 7.1 软件测试的基本任务是什么?简述

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论