最新浙大-软件工程基础作业-答案_第1页
最新浙大-软件工程基础作业-答案_第2页
最新浙大-软件工程基础作业-答案_第3页
最新浙大-软件工程基础作业-答案_第4页
最新浙大-软件工程基础作业-答案_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、精品文档软件工程基础作业 第一章 概 述1什么是软件危机,它有哪些典型表现? 答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 概括地说,软件危机包含下述两方问题: 如何开发软件, 以满足对软件日益增长 的需求;如何维护数量不断膨胀的已有软件。 软件危机典型表现: 对软件开发成 本和进度的做计常常很不准确。 用户对已完成的软件系统不满意的现象经常用发 生。软件产品的质量往往靠不住。 软件常常是不可维护的。 软件通常没有适当的 文档资料软件成本在计算机系统总成本中所占的比例逐年上涨。 软件开发生产率 提高的速度,远远跟不上计算机应用迅速普及深入的趋势。 产生软件危机的原因:

2、 一方面与软件本身的特点有关, 另一方面也和软件开发与 维护的方法不正确有关。 软件不同于硬件, 它是计算机系统中逻辑部件而不是物 理部件。管理和控制软件开发过程相当困难。 软件是击规模庞大, 而且程式复杂 性将随着程式规模的增加而呈指数上升。 目前相当多的软件专业人员对软开发和 维护还有不省糊涂观念, 在实践过程中或多或省地采用了错误的方法和技术, 这 是使软件问题发展成软件危机的主机原因。 2简述产生软件危机的原因和解决的思路。答:软件危机产生的原因一方面与软件本身的特点有关,另一方面,是与 已有软件开发、维护的方法不正确有密切关系。解决软件危机, 既要有技术措施 (方法和工具 ),又要有

3、必要的组织管理措施。 即采用工程化的原则和方法组织软件开发是摆脱软件危机的一个主要出路。3什么是软件工程?它有哪些本质特性? 答:软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、 原理、技术和方法来开发和维护软件, 把经过时间考验而证明正确的管理技术和 当前能够瞧得到的最好的技术方法结合起来, 以经济地开发出高质量的软件并有 效地维护它。软件工程本质特性: 1、软件工程关注注于大型程序的构造; 2、软件工程的中心 课题是控制复杂性; 3、软件经常变化; 4、开发软件的效率非常重要; 5、和谐 地合作是开发软件的关键; 6、软件必须有效地支持它的用户; 7、在软件工程领 域中是

4、由具有一种文化背景的人替具有另一种文化背景的人创造产品。4软件工程是如何用来消除软件危机的? 答:消除软件危机的途径: 为了消除软件危要, 首先庆该对计算机软件有一个正 确的认识。 必须充分认识到软件开发不是某种个体劳动的神秘技巧, 而应该是一 种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。应该推广使 用在实践中总结出来的开发软件的成功的技术和方法, 并且研究探索更好更有效 的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做 法,应当开发和使用更好的软件工具。为了解决软件危机,既要有技术措施,又 要有必要的组织管措施。5假设你是某软件开发企业的 CEO,当你把教

5、材P.4的图1.1给手下的软件工 程师们看, 同时告诉他们应及早发现并改正错误的重要性时, 有人不以为然, 认 为要求在错误进入软件前就发现并清除它们是不现实的,并举例说: “如果一个 故障是编码错误造成的, 那么又如何能够在设计阶段就发现并清除呢?” 那你应 该如何说服?答:软件开发编码错误虽然无法完全避免, 但是我们要掌握先进开发技术以及正 确的开发方法, 才能降低因某些错误引发软件危机。 必须充分认识到软件开发不 是某种个体劳动的神秘技巧, 而应该是一种组织良好、 管理严密、 各类人员协同 配合、共同完成的工程项目。 应该推广使用在实践中总结出来的开发软件的成功 的技术和方法, 并且研究

6、探索更好更有效的技术和方法, 尽快消除在计算机系统 早期发展阶段形成的一些错误概念和做法, 应当开发和使用更好的软件工具。 为 了解决软件危机,既要有技术措施,又要有必要的组织管措施。6简述软件的定义。答:软件=程序+数据+文档7软件工程的目的是什么? 答:为高质量的软件开发提供一个科学的体系框架。8什么是软件工程方法学?软件工程是一种什么样的技术?包括哪三大要素? 分为哪三个分支?答:软件工程方法学就是指在软件生命周期全过程中使用的一整套管理和 开发技术方法的集合。 目前,使用最广泛的软件工程方法学分别是传统方法学和 面向对象方法学。软件工程作为一种层次化的技术,有方法、工具和过程三大要素,

7、并由于 其涉及学科内容的极为广泛, 而分为三个分支: 软件开发技术、 软件项目管理技 术、软件质量管理技术。9简述软件工程的基本原理。答:软件工程有 7 条基本原理:1 严格按照软件生命周期计划进行管理 2坚持进行阶段评审3实行严格的产品控制 4采用先进的程序设计技术5结果应能清楚的审查 6开发小组成员应少而精7承认不断改进软件工程实践的必要性10软件工程的基本开发原则有哪些?答:软件工程的基本开发原则有:1 模块化2抽象和信息隐蔽3模块的高内聚和低耦合4确定性5一致性6完备性11构成软件工程的基本元素有哪些? 答:除了前面给出的软件工程三大要素,还应该包括控制和质量保证。这 里的控制,即规模

8、控制、成本控制、复杂性控制等。12什么是软件过程?它与软件工程方法学有何关系?答:软件过程是指为了获得高质量软件产品,在软件工具支持下,由软件 人员完成的一系列软件工程活动。软件过程规定了开发软件所需完成的各项任务步骤。过程步骤的设定与软 件生命周期、生命周期模型、 软件开发工具, 以及参与开发的人员等诸方面因素 有关。13什么是软件生命周期?什么是软件生命周期模型?答:软件如同自然界任何事物一样,都有其孕育、诞生、成长、成熟、衰 亡的生存过程。软件的这一过程,称为软件生命周期。软件生命周期模型也称软件开发过程模型,是为了解决产业环境中的实际 问题,而提出的开发策略。是反映整个软件生命期中,系

9、统开发、运行、维护等 实施活动的一种结构框架。14简述软件生命周期方法学的途径,以及划分阶段步骤的目的和实质。答:软件生命周期方法学是软件工程的传统途径,划分阶段步骤的目的和 实质是:控制开发工作的复杂性,通过有限步骤,把抽象逻辑概念,转化为具体 物力实现。15试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明它们 各自的适用范围。答: 1瀑布模型。 瀑布模型广为人知和历史悠久,其优势是规范及文档驱动的方法。但问题 是,往往不能够真正满足用户的需求。适用于传统软件工程领域的结构化开发。2原型模型。是为了克服瀑布模型的缺点而提出来的。通过快速构建一个在机器上可运 行的原型系统, 让用

10、户试用原型, 并收集反馈意见的办法, 来获取用户真实的需 求。3螺旋模型。 螺旋模型适用于大型软件项目,比起之前的其它模型而言,有其一定的优 越性,但这些优越性并不是绝对的。 主要体现在对开发人员的风险评估经验和专 门知识的要求较高。 如果项目风险较大, 而开发人员的水平较低, 不能准确的识 别和分析风险,则势必造成重大损失。4增量模型。具有在软件开发早期阶段使投资获得明显回报和交易维护的优点,但是要 求软件具有开放的结构。第二章 可行性研究1在软件开发的早期阶段, 为什么要进行可行性研究?其目的和任务各是什么? 答:可行性研究的目的是用最小的代价,在尽可能短的时间内确定问题是 否可解决,以及

11、是否值得解决。可行性研究的任务不是解决问题,而是确定是否可解 /值得解。 2应该从哪些方面研究目标系统的可行性?答:主要从以下几个方面进行可行性研究:1. 技术可行性。以现有技术,能否在预定时间内完成该系统开发。2. 经济可行性。通过成本 -效益分析,估算系统的整体经济效益是否满足要 求。3. 操作可行性。分析系统的运行方式、操作规程是否适应用户应用需要。4. 社会可行性。分析系统在法律、社会、市场等方面的认可度。 3可行性研究有哪些工作步骤?答: (1) 复查定义,确定系统规模和目标。(2) 研究老系统(3) 导出高层逻辑模型 (conceptual design)(4) 重新定义(5) 导

12、出多种解法(6) 推荐行动方针(7) 开发计划 (粗略 )(8) 审查、存档 4简述系统流程图在可行性研究中的作用。答:系统流程图是概括的描述物理系统的传统工具。系统流程图反映的是 信息在系统各部分间流动的情况。系统流程图可以帮助了解和分析系统,以概括的方式表达对系统的认识, 并可以描述未来物理系统的概貌。5简述数据流图在可行性研究中的作用和用途。答:数据流图在可行性分析中可以帮助分析和描绘数据在软件中流动和被 处理的逻辑过程, 用图形的方式描述系统的逻辑功能, 是系统分析员和用户之间 理想的通信工具。6简单描述数据字典但内容和定义数据的方法。答:数据字典主要由下列 4 种元素定义组成:1数据

13、流2数据流分量3数据存储4处理 除了数据定义外,数据字典还应包含一些关于数据的其它信息。 定义数据的方法通常采用自顶向下分解的方式。并由顺序、选择、重复三 种基本数据元素类型组成数据。7说明软件计划的内容和目标。答:软件计划的内容 二 项目任务范围+环境资源+工作量+进度软件计划的目标是为了提供一个框架,以便于管理者对资源、成本和进度 等进行合理的估算。8 什么是软件范围?定义软件范围需要哪些信息?答:软件范围就是在技术和管理层面上都是无二义性和可理解的项目范围, 是软件开发各阶段的工作依据。定义软件范围需要以下信息:a. 与用户、总体目标及利益相关的问题。b. 有利于系统分析员理解的问题。c

14、. 集中于交流效果的问题。9 简述软件开发环境资源的三个层次。答:软件开发环境资源由三个层次构成:开发环境、软件构件以及最重要 的资源人。10软件环境资源的特征有哪些?它们对制定软件计划都有哪些意义?答:每一类资源都有四个特征:资源描述、可用性说明和资源提供的时间、 资源使用的延续时间。可以为制定软件计划估算软件开发所需的资源。11 软件计划中,安排软件开发进度主要可以用哪些工具?都有哪些优缺点?答:甘特图的优点是简单,能动态地反映开发进展;缺点是难以反映多个 任务间的逻辑关系。网络计划法则恰好弥补了甘特图的缺点,最适合反映多个工作之间的逻辑 关系。12 主要的成本估计技术有哪些?其依据的主要

15、是什么?答:主要有,代码行技术。是一种基于规模的分解估算:D= Xf(vi)以及基于问题的分解估算:EV = (Sopt+4Sm+Spess)/6还有功能点技术。这种技术以功能点(FP)为单位,度量软件的规模。 由于项目本身的复杂性,因此,成本估计技术主要采用分而治之”的分解技术对软件项目进行估算。13.为什么说成本估计是不可能精准的?答:那是由于太多的变化因素 一一人员、技术、环境、策略、复杂性等等, 使得成本估算永远不可能精确。14 .进行成本/效益分析的方法主要有哪些? 答:常用成本/效益分析的方法主要有:(1) 货币的时间价值 投资回收期(3)纯收入投资回收率15.软件计划的主要内容有

16、哪些?答:1.概 述:一般性地叙述开发项目,描述计划组织,并概述这个文档其余 部份的内容。2. 阶段计划:讨论项目开发周期 一一需求分析阶段、总体设计阶段、详 细设计阶段等等。详细说明每个阶段应该完成的日期,并指出不同阶段可以相互重叠的时间等等。3. 组织计划:规定从事这个开发项目的每个小组的具体责任。4. 测试计划: 概述应进行的测试和需要的工具, 以及完成系统测试的过程 和分工,在这一节中并不包括具体的测试方案。5. 变动控制计划:确定在系统开发过程中需求变动时的管理控制机制。6. 文档计划:这一节的目的是定义和管理与项目有关的文档。7. 培训计划:培训从事开发工作的程序员和使用系统的用户

17、的计划。8. 复审和报告计划:讨论如何报告项目的状况,并确定对项目进展情况进 行正式复审的计划。9. 安装和运行计划:描述在用户现场安装该系统的过程。10. 资源和配置计划: 概述关键的细节计划 进度、里程碑和按合同规 定应交付的系统配置成份。11. 索 引 16如何对制定完成的软件计划进行复审?为什么要复审? 答:软件计划的复审通常涉及有关软件工作范围和软硬件资源问题等。复 审应该邀请用户参加, 用户可提出建议, 并与开发人员最终商定内容。 复审内容 分为技术和管理两个方面:技术方面需要考虑的问题有: 系统的任务是否合理; 系统的给你复杂性是否与开发成本、进度以及风险一致; 系统规格说明书是

18、否足够充分; 系统性能要求是否恰当管理方面需要考虑的问题有: 计划中描述的工作范围是否符合用户需求? 计划中对资源的描述是否有效、合理? 计划中系统的开发成本与进度要求是否合理? 计划中人员的安排是否合理? 系统开发存在哪些风险?复审可以尽早发现错误,复审是软件质量保证的重要措施。 17为方便储户, 某银行拟开发计算机储蓄系统。 储户填写的存款单或取款单由 业务员键入系统。如果是存款,系统记录存款人的姓名、地址、存款类型、存款 日期、存款数量和利率等信息,并印出存款单给储户;如果是取款,系统计算利 息并印出利息清单给储户。请写出问题定义并分析此系统的可行性。答: 可行性研究的步骤1、复查定义,

19、确定系统规模和目标,我们认为用户要的还是真是用户所要的。2、研究老系统,研究老系统存在哪些问题?精品文档精品文档新系统效益是优于老系统效益3、导出高层逻辑模型老系统老系统模型新系统模型新系统精品文档4、重新定义 逻辑模型 复查定义 注:此时合同未签,应考虑成本,不宜反复太多次。给出供选择的方案经济上合算市场上接受第三章需求分析1 为什么要进行需求分析?通常对软件系统有哪些需求?答:需求问题是软件工程项目失败的主要原因。一个高质量的软件,很大程度上取决于对要解决的问题的认识, 以及如何准确的表达用户的需求。 需求分析就是要解决这个问题。通常,对一个软件系统的需求可以有功能需求、性能需求、可靠性和

20、可用 性需求、出错处理需求、接口需求等多个方面。2 怎样与用户有效地沟通,以获得用户的真实需求?答:访谈、情景分析,以及面向数据流的自顶向下求精等方法,编制简易 的系统规格说明文档,创建原型等,是获取真实需求的有效方法。3 需求分析的任务是什么?答:确定对待开发系统的综合要求。4通常系统的需求可以分为哪几个层次?答:一般可以分成5个层次:(1) 功能需求:系统必须做什么?(2) 业务需求:反映客户组织机构对系统高层次的目标要求。(3) 运行需求:运行环境、软硬件配置等。(4) 属性需求:包括用户关心的属性,如效率、灵活性、完整性、可靠性等; 开发者关心的属性,如可维护性、可复用性、可移植性等。

21、(5) 未来可能的扩充需求:如HDIS各组的合并,3维虚拟现实的效果等等。5 进行需求分析的步骤有哪些?答:1 确定系统的综合要求2 分析系统的数据要求3 导出逻辑模型4 修正系统开发计划6 简述建立原型模型对软件需求分析的作用。答:可以快速构建旨在演示目标系统主要功能的可运行程序,帮助用户确 定及提供更为精准的需求,以利用户和开发者能够在目标系统应该 “做什么”这 一问题上尽快达成一致。7解释实体-联系图及其用途。答:实体-联系图是按照用户的观点对数据建立的模型。描述从用户角度看 到的数据,反映用户的现实环境,并且与在软件系统中的实现方法无关。8 说明为什么需要进行需求验证及验证的步骤有哪些

22、?答:进行需求验证是为了确保软件开发的质量,降低开发成本。通常对需求进行验证的步骤有:验证需求的一致性、验证需求的现实性、验证需求的完整 性和有效性。9银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业 务人员键入系统,如果是存款则系统记录存款人姓名、住址 (或电话号码)、身份 证号码、存款类型、存款日期、到期日期、利率及密码 (可选)等信息,并印出存 单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码 正确或存款时未留密码,贝療统计算利息并印出利息清单给储户。请用数据流图描绘本系统的功能,并用实体一联系图描绘系统中的数据对象。E1储户F1存款单-F7密码P

23、11 一记录存款信息bX.P2F5存款信息D1存款信息F7密码F2取款单|F5存款信息一 F4利息P3E2业务员E1储户 +*1打印存单F3存单F5存款信息n储户甘丨自1F4利息 d _.P5打印利息清单P4核算密码r6取款信息计算利息-F8储蓄利率P6vF8储蓄利率设置利率厂F8储蓄利率匕D2存款利率P3 1 -F2取款单叫输入取款信息严F5存款信息无效取款信息D1存款信息F7密码F7密码P3.27密码校验,产ER模型本问题中共有两类实体,分别是 位储户可以在多家储蓄所存取款,储户”和储蓄所”,在它们之间存在 存取款”关系。因为一 一家储蓄所拥有多位储户, 所以 存取款”是多对多(M:N)关

24、系。储户的属性主要有姓名、住址、电话号码和身份证号码,储蓄所的属性主要是名称、地址和电话号码,而数额、类型、到期日期、利率和密码则是关系类型存取款的属性精品文档第四章总体设计1 为每种类型的模块耦合举一个具体的例子。答:1、内容耦合(Content Coupling): 一个模块修改另一个模块的内容。例1: A访问C的内部数据或不通过正常入口而转入 C的内部。2、公共耦合(Common coupling)若干模块通过一个公共数据环境相互作用 例2::精品文档3、控制耦合(Control coupling): 个模块通过传递开关、标志、名字等控制信 息,明显地控制选择另一个模块的功能。例3:B4

25、、数据耦合(Data coupling):模块间通过数据参数交换I/O信息2 为每种类型的模块内聚举一个具体的例子。答:低内聚巧合内聚(Coincidental cohesion):模块内各功能段之间不存在有意义的联系。逻辑内聚(Logical cohesion):将若干具有逻辑相似性的功能段放在一个模块内。 例如:A:from disk from tapeRead inputsfrom时间内聚(Temporal cohesion):把在系统运行的同一时间处理的元素组合成一个模块 例如:系统的初始化中内聚:过程内聚(Procedural cohesion):模块内的处理是相关,且须以特定次序执

26、行。通信内聚(Communicational cohesion):模块内各功能部分都使用了相同的输入数据,或产生 了相同的输出数据。例如:从同一磁带上读取不相干的数据 可能破坏独立性。高内聚:信息内聚(Information cohesion):模块完成多个功能,各个功能都在同一数据结构上操作, 每一项功能有一个唯一入口。功能内聚(Functional cohesion):个特定功能仅在一个模块内实现。3 简单说明系统总体设计的步骤步骤。答:典型的总体设计包括以下9个步骤:1、确定最佳方案2、选取合理方案3、推荐最佳方案4、功能分解5、软件结构设计6设计数据库7、制定测试计划8、书写文档9、审

27、查和复审4 举例说明模块化原理的经验1和经验25 为什么要尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,完全不 用内容耦合?答:减少模块之间的关联度,提高模块的独立性。因为内容耦合会导致一个模块修改另一个模块的内容,使得程序逻辑发生精品文档严重问题。而公共耦合是若干模块通过一个公共数据环境相互作用,公共部分的改动 将影响所有调用它的模块,公共部分的数据存取无法控制,并且复杂程度也会随 耦合模块的个数增加而增加。控制耦合是一个模块通过传递开关、标志、名字等控制信息,明显地控制 选择另一个模块的功能。由于接口单一,因此仍然会影响被控模块的内部逻辑。而数据耦合只是模块间通过数据参数来交换 I/

28、O信息,因此不会对其它模块 产生任何等影响。6为什么模块的规模要适中?答:过大不易理解;太小则接口开销过大。7 请说明为什么模块控制的宽度和深度要适度。答:深度过大表示分工过细,而宽度过大则表示系统复杂度大,所以模块 控制的宽度和深度要适度。8 简述面向数据流设计方法的基本思想。答:将由数据流图描绘的信息在系统中加工和流动的情况映射成软件结构。9 常用数据流类型有哪些?答:变换流和事务流。 10面向数据流的设计方法主要有哪几个步骤?答:1.复查基本系统模型2 复查并精化数据流图3 .确定数据流图具有变换特性还是事务特性4. 确定输入流和输出流动边界,从而孤立出变换中心5. 完成“第一级分解”6

29、. 完成“第二级分解”7 .使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化 11.用面向数据流的方法设计第二章习题 17系统的软件结构。答:精品文档精品文档不能是两个分开的子系统,是相同的前台单个处理不能是两个分开的子系统,是相同的前台单个处理第五章详细设计1 详细设计的任务是什么?答:包括模块的算法设计、模块内的数据结构设计、模块接口设计、其它 根据软件特点需要完成的设计、模块测试用例设计、设计文档编写、设计评审。2 在对系统做详细设计时,应遵循哪些原则?答: 模块的逻辑描述应清晰易读、正确可靠; 设计的处理过程应该简明易懂; 选择恰当的描述工具来描述模块算法。3. 简述结构化

30、设计的特点。答:自顶向下、逐步求精; 具有单入、单出的控制结构(取消 GOTO语句)4. 结构化程序设计中有哪几种基本控制结构?分别描绘在程序流程图、盒图和 PDA图中这些基本控制的图例。答:(1)顺序结构(2) 选择结构(3) 先判定型循环结构(4) 后判定型循环结构(5) 多情况选择5. 假设只有 SEQUENCE和DO_WHILE两种控制结构,请问应该如何完成 IF_THEN_ELSE 操作?答:转化如下:K=1DO While(条件 AND K.EQ.10程序块1K=K+1END DODO While (.NOT.条件).AND.K.EQ.1)程序块2K=K+1END DO6. 假设只

31、有SEQUENCE和IF_THEN_ELSE两种控制结构,请问应该如何完成 DO_WHILE 操作?答:转化如下:LABEL :IF (条件)THEN程序块GOTO LABELELSE程序块END IF7 试说明ISO为什么要建议停止使用程序流程图,而推荐使用PDA图?答:由于程序流程图中的GOTO语句回严重地损害程序结构,而无法实行 结构化设计。PDA图则既吸取了程序流程图好学、好用、好懂,方便、灵活的 优点,又保留了 N-S图结构化设计的特点,很好地满足了软结构构设计图形工 具的要求,以及PDA图所具有的 结构清晰,层次分明,易读; 支持逐步 求精的设计思想; 容易将PAD自动转换为高级语

32、言源程序等特点,因此,ISO 要推荐使用PDA图。8. 请画出下列伪码程序的程序流程图、盒图和 PDA图STARTIF p THENWHILE q DOfEND DOELSEBLOCKgnEND BLOCKEND IFSTOP答:流程图盒图f卩/tgqfnPDA图9. 试说明Jackson方法是一种怎么样的程序设计方法。它有哪些工作步骤?答:Jackson方法是以数据结构(data structure为基础设计每个模块的处理过 程,将数据结构转化成程序结构。具体工作步骤有:第1步:用Jackson图描述10的数据结构第2步:在两个图中指出有直接因果关系、可以同时处理的单元第3步:将数据结构映射

33、到程序结构第4步:列出所有操作条件,并分配到上幅程序结构图中第5步:用Pseudocode表示程序10. 请将教材P.124图6.13统计空格程序的Jackson图改画成为等价的盒图和PDA图。11. 人机对话由操作员信息和系统信息交替组成。假设一段对话总是由操作员信息开始,以系统信息结束,请用 Jacks on图描绘这样的一段人机对话过程。第六章 实现1说明什么是程序编码?为什么程序设计语言的特点和编码风格会影响到程序 的可靠性、可读性、可测试性和可维护性?答:所谓 “编码 ”,就是将在低级抽象层次得到的详细设计结果,翻译成用 某种程序设计语言书写的程序。是软件设计的自然结果。而程序设计语言

34、是否有理想的结构化、模块化机制,是否有可读性好的控 制结构和数据结构等特性, 以及程序设计语言提供的编译、 软件工具等, 再加上 程序的设计风格会很深刻的影响软件的质量和可维护性、可测试性、可靠性等。 2用户界面设计的最一般原则,即所谓“黄金规则”是什么?答: 1.置用户于控制之下; 2.减少用户的记忆负担; 3.保持界面一致。 3软件界面设计包含了哪几个方面的基本内容?答:界面设计包括三个方面: 1.软件构件间接口; 2.软件与其它系统的接口; 4用户界面提供系统服务的方式通常有哪两种?答:命令驱动和屏幕菜单驱动5. WIMF界面是屏幕菜单驱动用户界面的一种形式,其设计准则有哪些?答: (1

35、) 明确的动作:在屏幕上指点并操纵对象(2) 即时反馈:操作结构即见(3) 增量效应:图标应被拖曳连续移动,而非跳跃(4) 可视交互:交互操作与用户概念模型匹配(5) 剥皮式学习:学习系统功能复杂性逐层加深(6) 可逆动作:也即应有退回操作(7) 事先验证:只允许合法操作产生效果6. 为什么说软件界面设计的质量会直接影响到用户对软件产品的评价?答:用户界面(User-i nteface又称人机界面(ma n-computer in terface),是用户 和计算机联系的中间媒介, 是系统中最重要、 最关键的部分之一。 用户界面设计 的好坏,直接影响到系统设计的成败。这是因为,如果一个界面设计

36、的不好,也即通常所说的用户界面不友好, 可以使用户在使用时感到不便, 甚至制造麻烦, 系统就难以发挥应有的效益, 甚 至可能被用户弃用。7. 什么是系统响应时间?系统响应时间有哪些重要属性?答:系统响应时间指从用户完成某个控制动作,到系统给出预期响应的时间。系统响应时间有 2 个重要的属性:长度和易变性。8. 在设计软件系统的用户帮助设施时,需要注意解决哪些问题?答: 1.在用户与系统交互期间,是否任何时候都能获得关于系统任何功能 的帮助信息?2. 用户怎样请求帮助?3. 怎样显示帮助信息?4. 用户怎样返回到正常的交互方式中?5. 怎样组织帮助信息?9软件出错处理设计,即软件安全性设计。一个

37、交互式出错处理程序应该具备 哪些功能和属性?答: 1信息应该使用用户可以理解的术语描述。2信息应该提供有助于从错误中恢复的建设性意见。 3信息应该指出错误可能导致的后果。4信息应该伴随感官提示。5信息不能带有指责色彩。10测试的最基本目标是什么? 答:以尽可能小的代价,发现尽可能多的错误。11软件测试的原则有哪些?答: 应当把 尽早和不断的测试”作为座右铭 测试应由独立的专业测试机构来完成 测试工作要全面,但不可能实现 “穷举 ” 只能尽可能查错,不能证明程序中没有错 软件测试符合2-8(Pareto)原理 应妥善保存测试文档 制定严格、合理的测试计划 错误经过修改后,相关的测试必不可少 12

38、软件测试的方法有哪几种?答:黑盒测试和白盒测试。 13简单说明什么是白盒测试,什么是黑盒测试。答:黑盒测试是把程序看成一个黑盒子,完全不考虑程序的内部结构和处 理过程的测试方法。黑盒测试又称功能测试。白盒测试是对程序的执行细节进行测试,通过设计测试数据,验证程序模 块的每个路径的执行情况。白盒测试又称结构测试。14简述软件测试的步骤。答: (1) 单元测试 程序设计 & 代码 bugs(2) 子系统测试 模块连接(3) 系统测试 需求确认 & 系统设计(4) 验收测试 用户加入(5) 平行运行 新旧系统比较运行结果 15举例说明通常情况下穷尽测试是不可能的。 答:所谓的穷举测试就是把程序所有可

39、能的执行路径都检查一遍的测试。 即使是 一个中等规模的程序, 其执行路径的排列数也十分庞大, 由于受时间人力以及其 他资源的限制, 在测试过程中不可能执行每个可能的路径。 所以说穷举测试是不 可能的。例如:每个系统测试都是有时间、人员及其它资源限制,不可能这些资 源无限制使用的。还有系统一旦测试所花时间太长会影响系统最终交付时间的。 16为什么单元测试必须由编程者自己完成?答:单元测试是对程序逻辑结构的测试。而对程序结构最为熟悉的,莫过 于编程者。 再者,高质量的程序模块是构造系统的基础, 因此编程者必须向下一 道工序提交符合质量要求的产品。17单元测试的主要手段有哪些?答:代码审查、计算机测

40、试等。18单元测试主要从哪 5 个方面进行? 答:主要测试以下五个方面:1. 模块接口2. 局部数据结构3. 重要的执行通路4. 出错处理通路5. 边界条件19为什么人工代码审查十分重要? 答:一次审查可发现多个错误,不必改一个测一个。20集成测试主要有渐增式测试、非渐增式测试两种,试述两种方式的异同点。 答:渐增式测试:可以较早发现模块间的接口错误、出现的错误往往跟最 新加入的模块有关、在不断集成的过程中使模块不断在新的条件下受到新的检 测,测试更彻底,但较非渐增式测试费时。非渐增式测试由于最后才组装,因此错误发现得晚、发现错误后难以诊断 定位,但可以同时并行测试所有模块,能充分利用人力。

41、21描述集成测试的两种策略,并比较它们的优缺点。答:自顶向下测试和自底向上测试两种。 自顶向下测试的优点是不需要测试驱动程序,能够在测试阶段的早期实现 并验证系统的主要功能, 在早期发现上层模块的接口错误。 主要缺点是需要存根 程序,可能遇到与此相联系的测试困难, 底层模块的错误发现较晚, 而且对人力 的使用也不利。而自底向上测试的优缺点与自顶向下测试的优缺点正好相反。 22什么是回归测试?回归测试的测试用例集如何确定? 答:回归测试是指重新执行已经做过的测试的某个子集,以保证系统在发 生调试、功能变化等事项后,没有带来非预期的副作用。回归测试的测试用例集按以下方法确定: 1检测软件全部功能的

42、代表性测试用例。 2专门针对可能受修改影响的软件功能的附加测试。3针对被修改过的软件成分的测试。23什么是确认测试?确认测试的任务是什么?如何确认其范围? 答:验收软件的有效性 (功能和性能达标 )。 确认测试的工作范围主要有: 1按合同规定审查软件配置; 2设计测试计划,使通过测试保证软件能满足所有功能、性能要求; 3文档与程序一致,具有维护阶段所必须的细节; 4严格按用户手册操作,以检查手册的完整性和正确性。24设计测试方案的任务有哪些? 答:预定要测试的功能 设计输入的测试数据 列出预期结果25什么是逻辑覆盖测试法?它主要用于什么测试? 答:逻辑覆盖测试是一种对程序逻辑通路进行覆盖的测试

43、,通常适用于白 盒测试。26. 什么是等价划分法?它主要用于什么测试?答:是一种很常用的测试方法。其对测试数据的选择是基于对程序功能的 分析,按照程序输入要求和输出要求,选择若干数据进行测试功能的过程。等价划分法主要用于黑盒测试。27. 什么是边值分析法?它主要用于什么测试?答:根据经验,在程序处理的边界最容易发生错误的地方进行测试,主要 用于黑盒测试。28. 什么是错误推测法?它主要用于什么测试?答:利用有经验的测试者对程序可能发生错误的位置的推测进行测试的方 法,主要用于黑盒测试。29. 一个软件的测试策略应该是怎样的?答:黑盒设计二白盒补充 在任何情况下都应首先使用边界值分析的方法; 必

44、要时用等价划分法补充; 必要时再用错误推测法补充; 对照程序逻辑,检查测试方案。30. 什么是调试?调试和测试有什么不同?答:测试一一发现错误调试一一改正错误调试与测试的区别在于,调试作为测试的后续工作,主要是解决和排除测 试中出现的错误。31 .简单说明调试的方法和策略。答:调试过程的关键不是调试技术,而是用来推断错误原因的基本策略。 主要有: 试探法:凭经验猜测。 回溯法:由症状(symptom)最先出现的地方,沿 control flow向回检查。 适用于小型程序。 对分法:在关键点插入变量的正确值。 归纳法:从错误症状中找出规律,推断根源。 演绎法:普通 特殊32.什么是软件的可靠性、

45、可用性和正确性?答:软件可靠性是指程序在给定的时间间隔内,按照说明书的规定,成功 地运行的概率。软件可用性是指程序在给定的时间点,按照说明书的规定,成功地运行的 概率。软件正确性是指程序的功能正确。第七章 维护1什么是软件维护? 答:在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件 的过程。2软件维护有哪几种类型?答:改正性维护:诊断和改正错误; 适应性维护:为了和变化了的环境 (如软 硬件升级、新数据库等)适当地 配合而修改软件; 完善性维护:为了增加新功能,修改已有功能,改造界面,增加HELP等,而修改软件; 预防性维护:为了改进未来的可维护性或可靠性,或为了给未来的改进 奠定

46、更好的基础而修改软件。3为什么说软件文档维护和代码维护同样重要? 答:这是因为,软件文档是影响软件可维护性的决定因素。4为什么说维护的代价很高?应该怎样做才能降低维护的代价? 答:一般维护的工作量占生存周期 70%以上,维护成本约为开发成本的 4 倍(满足 8-2 规则)。维护代价分为:1有形代价:费用已上升至总预算的 80%; 2无形代价:占用资源以致延误开发; 修改不及时引起用户不满; 维护引入新错误,降低了软件质量;等等。 3维护工作量的经验模型: M = P + K*ec-d 降低维护代价的通常认识是:提高程序的可维护性,这也是软件工程学的 主要目的。5导致维护成本高企的原因主要有哪些

47、? 答:软件开发途径不好,导致软件可维护性差,原来的开发人员没有参与 维护,维护成本日益高涨等, 从维护工作量的经验模型可以看到, 维护工作量和 成本将呈指数增加。6什么是软件的可维护性? 答:软件可维护性可定性地定义为:维护人员理解、改正、改动和改进这 个软件的难易程度。7如何提高软件的可维护性? 答:可以从提高决定软件可维护性的因素着手,这些因素是:可理解性、 可测试性、可修改性、可移植性、可重用性、可靠性、可使用性、效率等。 8维护报告的主要内容有哪些?答: 维护申请报告 (Maintenance Request Form)由用户填写的外部文件,提供错误情况说明(输入数据,错误清单等)

48、,或修改说明书等。 软件修改报告 (Software Change Report)与MRF相应的内部文件,要求说明: 所需修改变动的性质; 申请修改的优先级; 为满足某个维护申请报告,所需的工作量; 预计修改后的状况。9为什么说文档是影响软件可维护性的决定因素? 答:由于长期使用的软件系统在使用过程中会有多次修改的经历,而文档 应该记载了这些重要的修改,所以文档比之代码更为重要。10什么是软件的系统文档? 答:系统文档是指软件系统从问题定义、需求说明、设计、实现到验收测 试计划等一系列和系统实现密切相关的技术文档。11什么是软件的用户文档? 答:提供用户了解、使用、操作和安装系统的文档资料。1

49、2什么是可重用性?如何通过提高软件的可重用性来提高软件的可维护性? 答:可重用性是指同一事物不加修改或稍加修改,就可以在不同环境多次 重复使用。 大量使用可重用软件构件, 可大幅提高软件的可维护性。 主要体现在 两个方面:1可重用构件通常都是组装成功的部件,加上每次重用又都会进一步完善 部件,因此可以大幅提高软件的可靠性,而改正性维护要求会降低。2很容易修改可重用的软件构件,使之适应新的应用环境,因此软件中使 用可重用构件越多,软件的适应性维护和完善性维护也越容易。 13为什么要进行软件可维护性复审?答:目的是提高软件的可维护性。 可维护性复审在软件开放的不同阶段有不同的重点。例如,在分析阶段

50、的 复审重点是:可靠性、可移植性、可用性。而编码阶段则主要是:可理解性、可 修改性、可移植性和效率。14什么是软件的逆向工程和再工程? 答:软件逆向工程是指当维护对象缺乏必要的文档资料时,分析已有程序, 寻求比源代码更高级的抽象表现形式, 恢复软件原有设计的过程。 换言之, 是一 个恢复设计的过程。软件再工程则是以软件工程学为指导,对目标软件进行重新设计、重新编 码和测试的过程。15逆向工程与再工程与软件的预防性维护有什么样的关系? 答:预防性维护是为了改进软件未来的可维护性或可靠性,或为了给软件 未来的改进奠定更好的基础而修改软件的过程。预防性维护就是对软件将来可能需要的改动,使用逆向工程与

51、再工程方法 对软件进行维护。16假设你的任务是对一个已有软件进行重大修改, 而且只允许你从以下文档中 选取两份: (a) 程序的规格说明; (b) 程序的详细设计结果 ( 自然语言描述加上某 种设计工具表示 );(b) 源程序清单 ( 其中有适当数量的注解 )。 你将选取哪两份文档?为什么这样选取?你打算如何完成这个任务? 答:应该选择(a)程序的规格说明和(b)程序的详细设计结果。 因为是重大修改,所以需要从修改程序规格说明和详细设计开始,对开发 文档进行重大修改,而源码也会需要重新编制。17分析预测在第二章习题 17 的储蓄系统交付使用后,用户可能提出哪些改进 或扩充功能的要求。 如果由你

52、来开发该系统, 你在设计时会采取哪些措施, 以方 便交付后的修改? 答:在软件工程过程的每一个阶段都应该考虑并努力提高软件的可维护性, 在每 个阶段结束前的技术审查和管理复审中,应该着重对可维护性进行复审。在需求分析阶段的复审过程中,应该对将来需改进的部分和可能会修改的部分 加以注意并指明, 应该讨论软件的可移植性问题, 并且考虑可能影响软件维护的 系统界面。在正式的和非正式设计复审期,应该从容易修改,模块华和功能独立的目标出 发,评价软件结构和过程,设计中应应该对将来可能修改的部分预算作准备。代码复审应该强调码风格和内部说明文档这两个影响可维护性的因素。 在设计和编码过程中应该尽量使用可重用

53、的软件构件, 如果需要开发新的构件, 也应该注意提高构件的可重用性。每个测试步骤可以暗示在软件正式交付使用前,程序中可能需要做预防性维护 部分。在测试结束时进行最正式的可维护性复审。在完成了每项维护工作之后,都应该对软件维护本身进行仔细认真的复审,维 护应该针对整个软件配置,不应该只修改源程序代码,每当对数据、软件结构、 模块过程或任其他有关的软件特点做了改动时,必须立即修改相应的技术文档。第八章 面向对象方法学引论1为什么要引入面向对象方法学?答: 1、瀑布模型的缺点:僵化2、SA - SD - SP 技术的缺点:本质上是基于过程的设计不易被理解;且功 能变化往往引起结构变化较大, 稳定性不

54、好。 系统有明确的边界定义, 且系统结 构依赖于系统边界的定义,这样的系统不易扩充和修改。数据与操作分开处理, 可能造成软构件对具体应用环境的依赖,可重用性(reusability)较差。2面向对象方法学有哪 4 个基本要素?答:对象、类、继承、消息 3面向对象方法学的优点主要有哪些?答:1以object为核心,强调对现实概念的模拟而不是算法。2以object模拟实体,需求变化不会引起结构的整体变化,因为实体相对 稳定,故系统也相应稳定。3一个 class 所有的 instances 都可重用它的代码;由 inheritance 派生出 的新的 class 可重用其父类的代码, 并且可以修改、扩充而不影响其父类的使用。4从稳定性、 Class 的独立性强、继承和多态性、容易理解、容易测试、 调试等几方面改善了可维护性。4什么是“对象”?它与传统数据有何不同? 答:对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体, 可以表示为:对象 Object: = 身份 ID + 方法 Method + 属性 Attribute+ 消息 Message。与传统数据相比,对象有以下特点: 以数据为中心,不设与数据无关的操作; Object主动处理而不

温馨提示

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

最新文档

评论

0/150

提交评论