华软软件工程期末考试资料(必过)

华软软件工程期末考试资料(必过)
华软软件工程期末考试资料(必过)

软件工程概念与过程

?软件的特性

软件是一种逻辑实体,而不是具体的物理实体。它具有抽象性

软件的生产与硬件不同

大多数软件是定制的

在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题 软件的开发和运行常常受到计算机系统的限制对计算机系统有着不同程度的依性 软件开发至今尚未完全摆脱手工艺的开发方式

软件是复杂的

软件成本相当昂贵

相当多的软件工作涉及到社会因素

?软件危机

指在落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致计算机软件的开发和维护过程中所遇到的一系列严重问题。产生于软件发展的第二阶段(软件系统阶段)末期。

产生:

硬件性价比和应用范围、数量增大--》软件的需求和规模增大--》软件开发技术落后、低产量、低质量--》软件危机

软件危机---主要表现

对软件开发成本和进度的估计不准确

用户不满意

软件质量不高、可靠性差

软件常常不可维护、错误难以改正

缺乏适当的文档资料

软件成本占系统总成本的比例逐年上升(1985----90%)

软件开发速度跟不上计算机发展速度

归结为主要为三方面----“时间、成本、质量”

软件危机--原因1

软件规模日渐庞大(数量、功能、成本、质量、时间)

软件开发管理困难。

逻辑部件而不是物理部件。

在写出程序代码并在计算机运行之前,软件开发过程的进展情况较难衡量,软件开发的质量也较难评价。因此,管理和控制软件开发过程相当困难。

开发人员错误的观念、方法和技术

重编程、轻需求。

生产方式落后:个体手工方式。

开发技术落后\开发工具落后

软件危机---原因2

忽视软件开发前期的需求分析

开发过程缺乏统一的、规范化的方法论的指导

文档资料不齐全或不准确

忽视与用户之间、开发组成员之间的交流

忽视测试的重要性

不重视维护或由于上述原因造成维护工作的困难

需求变化预料不足

?ISO/IEC 12207定义的软件过程

按ISO/IEC 12207软件开发生存周期过程,软件设计由两个活动组成

软件体系结构设计-software architectural design

顶层设计(top-level design)

描述系统顶层的结构和组织

标识各个构件

软件详细设计-software detailed design

充分描述每个构件使之可以编码

软件生命周期

?软件生命周期定义

?它是指一个软件从提出开发要求开始到该软件报废为止的整个时期(生存过程)。从时间角度,把整个周期划分为若干个阶段(步骤),每个阶段有明确

的任务,然后再逐步完成每个阶段的任务

?软件从孕育、诞生、成长、成熟、衰亡的生存过程

?软件生存期各阶段

?制定计划(Planning)

?需求分析和定义(Requirement Analysis and Definition)

?软件设计(Software Design)

?程序编写(Coding/Programming)

?软件测试(Testing)

?运行/维护(Running/Maintenance)

?软件生命周期模型

?线性顺序模型

?瀑布模型

?RAD模型

?原型模型

?渐增模型

?螺旋模型

?统一过程

?敏捷软件开发

瀑布模型--特点

?优点:

?提供了软件开发的基本框架,比靠“个人技艺”开发好的多。

?严格活动序列,严格阶段成果评审,有利于大型软件开发过程的人员的组织和管理

?缺点:对用户需求变更的响应较困难。

?初始阶段较长,用户极大的耐心,需求的不确定性;

?后期阶段时,需求错误、设计及实现错误才出现

?适用:需求明确、大型的项目。

RAD模型--特点

优点:开发时间短;快速发布

缺点:多团队开发协调困难;了解需求困难;不注意小细节

原型模型----特点

优点:

成品的用户满意度高。用户参与,需求不断完善

缺点

软件的“临时版本”,未考虑性能需求

进度控制、质量检验较难,技术方案未必最优,会导致开发过程的不可收敛性

系统结构通常较差,连续的变更损坏了系统的结构

适用:

中小规模、生存期短的系统,知识型系统

用户定义了一组一般性目标,但不能标识出详细的输入、处理及输出需求

开发者可能不能确定算法的有效性、操作系统的适应性或人机交互的形式

当你的客户有一个合理的需求,但对细节则没有任何线索时,先开发一个原型系统是一个好的选择

演化软件过程模型

渐增模型

以尽早占领市场为目的,逐步发布版本;

可有计划地管理技术风险

螺旋模型

不同版本、不同形式的不断进化;

需要高水平的风险评估技术

并发开发模型

由用户要求、管理决策和评审结果驱动;

每一个软件工程活动触发活动网络的状态变迁

渐增模型-特点

优点:易于预测、管理、控制使用的资源;快速版本发布

缺点:有可能消弱结构和设计

使用:用户需求不明确;设计用户界面

螺旋模型-特点

(spiral model)TRW B.Boehm,1988提出。将过程用螺旋线表示,每个回路表示软件过程的一个阶段。因此,最里面的回路可能与系统可行性有关,下一个回路可能与系统需求定义有关,再下一个回路与系统设计有关。

优点:渐增、使用原型模型减少风险,快速、可在软件的整个生命期间使用

缺点:客户与开发团队需要丰富的风险评估专业知识,演化是否完全可控

并发开发模型优缺点

优点:适用所有类型的软件开发;尤其适用客户端/服务器应用程序;

在实际项目中使用是成功的;将降低整个过程的风险

缺点:对管理要求较高

形式化方法模型1

通过一组指定的活动来产生计算机软件的数学规约。

软件工程师应用一个严格的、数学的符号体系来进行规约、开发和验证基于计算机的系统

特点:完全可以产生无缺陷的软件

缺点:成本高;与客户交流困难

使用在对可靠性要求极高的系统开发中

RUP简介

RUP(Rational Unified Process)Rational统一过程

近30年的发展和实际运用

每一次软件开发过程定义了九个核心规程

六个技术规程

业务建模规程、需求工程、分析和设计规程、实现规程、测试规程、

部署规程

三个管理规程

配置和变更管理规程、项目管理规程、环境规程

开发周期的四个阶段

初始阶段、细化阶段、构造阶段、移交阶段

工作流描述

业务建模(Business Modeling)

理解系统的组织结构及其商业运作,确保所有参与人员对开发系统有共同的认识。

需求分析(Requirements)

定义系统功能及用户界面,明确客户需要的系统的功能,开发人员理解系统的需求,为项目预算及计划提供基础。

分析与设计(Analysis and Design)

把需求分析的结果转化为实现规格。

实现(Implementation)

定义代码的组织结构、实现代码、单元测试、系统集成。

测试(Test)

验证各自子系统的交互与集成。

配置(Deployment)

打包、分发、安装软件,升级旧系统;培训用户及销售人员,并提供技术支持。制定并实施beta测试。

设置和变更管理(Configuration and Change Management)

跟踪并维护系统所有产品的完整性和一致性。

项目管理(Project Management)

为计划、执行和监控软件开发项目提供可行性的指导;为风险管理提供框架。

环境(Environment)

为组织提供过程管理和工具的支持。

RUP的四个阶段

RUP包括以下四个阶段:

起始阶段、细化阶段、构建阶段、交付阶段

每个阶段结束于一个主要的里程碑(Major Milestones)

每个阶段本质上是两个里程碑之间的时间跨度

RUP的四个阶段--初始阶段

进行如下的活动

明确说明项目规模,了解环境以及最重要的需求和约束,以便可以得出最终产品的验收标准。

计划和准备商业理由。评估风险管理、人员配备、项目计划以及成本/进度/收益折衷的被选方案。

综合考虑被选构架,评估构架。

准备项目的环境,评估项目和组织,选择工具,决定流程中要改进的部分。

评估标准如下:

出资人同意系统范围定义以及费用和进度评估。

主要用例是否符合需求。

费用和进度评估、优先级、风险以及开发过程的可信性。

任何已开发的原型的深度和广度。

实际开销与计划开销。

初始阶段的焦点是需求和分析工作流。

RUP的四个阶段-细化阶段

细化阶段的评估标准如下:

标明用例模型中的用户和参与者,并且建立用例的描述文档。用例模型需完

成80%。

创建软件系统开发过程中的软件结构的描述文档。

创建可执行的系统原型。

细化商业案例和风险列表。

创建整个项目的开发计划。

细化阶段的焦点是需求、分析和设计工作流。

RUP的四个阶段--构建阶段

主要目标如下:

优化资源、避免不必要的报废和返工,使开发成本降到最低。

尽快达到质量的要求。

快速完成有用的版本,例如Alpha 版、Beta 版和其他测试发布版。

完成所有功能的分析、开发和测试。

迭代式、递增地开发随时可以发布的产品。

确定准备好软件系统的外部环境。

构建阶段的焦点是实现工作流。

RUP的四个阶段-交付阶段

主要目标如下:

进行Beta版测试,按用户的要求验证新系统。

替换旧的系统。

对用户和维护人员进行培训。

开始调整活动,例如调试、性能或可用性的增强。

与用户达成共识,配置基线与评估标准一致。

交付阶段的焦点是实现和测试工作流。

RUP的迭代开发模型

RUP中的每个阶段可以进一步分解为迭代。

与传统的瀑布模型相比较,迭代过程的优点:

降低了在一个增量上的开发风险。

降低了产品无法按照既定进度进入市场的风险。

加快了整个开发工作的进度。

核心工作流介绍-需求捕获工作流

需求捕获通过对应问题的理解和分析,确立问题涉及的信息、功能和系统行为,将用户需求精确化、完全化。

需求的焦点主要在初始和精化阶段,在精化阶段后期,需求捕获的工作量大幅下降。

主要的UML制品:

分析模型、分析类、用例实现(分析)、分析包、构架模型 参与的工作人员:

构架设计师、用例工程师、构件工程师

主要包括四种活动:

构架分析、分析用例、分析类、分析包

敏捷软件开发

敏捷软件开发(轻量级方法)

XP方法,SCRUM方法,DSDM方法

敏捷软件开发联盟(Agile联盟)的4个价值观和12条原则

1.个人和交互高于过程和工具

2.可运行软件高于详尽的文档

3.与客户协作高于合同(契约)谈判

4.对变更及时做出反映高于遵循计划

敏捷软件开发联盟(Agile联盟)开发遵循的12条原则

1.最优先的是通过尽早地和不断提交有价值的软件来使客户满意

2.欢迎变化的需求,即使该变化出现在开发的后期,为了提高客户的

竞争优势,敏捷过程利用变化作为动力

3.以几周到几个月为周期,尽快、不断地交付可运行的软件

4.在整个项目过程中,业务人员和开发人员必须天天一起工作

5.以积极向上的员工为中心建立项目组,给与他们所需要的环境和支

持,对他们的工作给与充分的信任

6.项目组内效率最高、最有效的信息传递方式是面对面交流

7.测量项目进展的首要依据是可运行的软件

8.敏捷过程提倡可持续的开发,项目发起人、开发者和用户应能长期

保持恒定的速度

9.应该时刻关注技术上的精益求精和好的设计,以增强敏捷性

10.简单化是必不可少的,这是尽可能减少不必要工作的艺术

11.最好的架构、需求和设计出自于自我组织的团队

12.团队要定期反思怎样才能更加有效,并据此调整自己的行为

XP方法

四个价值观:交流;简单;反馈;勇气

12个核心实践

完整的团队、计划对策、系统比喻、小发布、测试、简单设计

结对编程、设计改进、持续集成、代码全体共有、编码标准、可持续步调

其它敏捷方法

自适应软件开发

思考、协作、学习

动态系统开发方法

可行性研究、业务研究、功能模型迭代、设计和构建迭代、实现 Scrum

Crystal

特征驱动开发

敏捷建模

系统工程与可行性分析

系统工程

基于计算机的系统

系统工程的任务

可行性分析

可行性研究的任务

可行性研究的步骤

可行性研究的文档

?系统工程

系统工程的主要任务是根据总体协调的需要,把自然科学和社会科学中的基础思想、理论、策略和方法等从横的方面联系起来,应用现代数学和电子计算机等工具,对系统的构成要素、组织结构、信息交换和自动控制等功能进行分析研究,借以达到最优化设计,最优控制和最优管理的目标。

业务过程工程:业务能够有效地使用信息的体系结构

业务目标语境中分析和设计

数据体系结构

?为业务和业务功能的信息需要提供框架。

?体系结构的个体构造是被业务所使用的数据对象

应用体系结构

?为了某些业务目的而在数据体系结构变换数据对象的系统元素,一

般为程序(软件)系统

技术基础设施

?为数据和应用体系结构提供基础,支持的硬件和软件,包括计算机

和计算机网络、通信链路、存储技术和实现这些技术的体系结构(如

客户/服务器)

系统工程的任务

识别用户的要求

系统建模和模拟

硬件系统模型、软件系统模型、人机接口模型、数据模型 成本估算及进度安排

可行性分析

生成系统规格说明

产品工程:对一组应定义的能力影射为可工作的产品

?四种不同的系统构件:软件;硬件;数据(和数据库);人员

?基于计算机的系统的元素

软件;硬件;人员;数据库;文档;规程

可行性分析

?可行性研究的任务

定义:研究软件项目是否值得开发、关键技术、难点、能否解决、怎样达到目标 主要任务

社会/法律可行性

技术可行性

经济可行性

结论:可以进行开发;需要等待某些条件;

需要对开发目标进行某些修改之后才能开发;不能进行或不必进行开发?主要从哪几个方面分析项目的可行性

社会可行性

也称法律可行性

待开发系统,是否存在侵权、妨碍、责任等问题

合同

社会影响

其它:市场分析;政策分析;竞争实力分析;时间和资源可行性

技术可行性

技术风险,给出限制范围内能否实现功能、性能

资源有效性,已有的,可得到的硬件、软件、人员等

相关技术的发展是否支持

关键技术、算法、过程等

经济可行性

对开发成本进行估算,预期经济效益,确定是否值得投资开发

在测算成本和效益时注意项目相关方不同的考虑点

成本估计

效益分析

成本估计

购置并安装软件、硬件及有关设备的费用

系统开发费用

一次性

方法:自顶向下成本估计;由底向上成本估计;算法模型估计;

类比估计;专家判断;Parkinson估计和销价取胜法 系统安装、运行和维护费用

人员培训费用

其它

效益分析

社会效益

经济效益:货币的时间价值;效益来源;例题

效益来源

自动化水平提高,减少了工作人员;减少运行费用

由于自动编辑,减少错误;交易处理速度提高

较少货币管理上的损失;减少不良帐单或信贷损失

更快的收取应收帐款;库存减少与库存过期损失etc。。。

?经济可行性分析(根据一个实际案例从成本和效益进行分析)

可行性研究的步骤

系统定义:目标、性质、范围、规模、约束和限制

对现行系统进行分析研究(高层系统流程图、确定系统功能) 导出新系统逻辑模型

设计方案(不同角度、多个方案)

推荐可行的方案(技术可行性、经济可行性)

编写可行性研究报告

编写目的是:说明该软件开发项目的实现在技术、经济和社会条件方面的可行性;评述为了合理地达到开发目标而可能选择的各种方案;说明并论证所选定的方案。

面向对象与业务过程建模

?UML定义:一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示定义:

是对象管理组织(OMG)制定的一个通用的、可视化的建模语言标准,可以用来可视化(visualize)、描述(specify)、构造(construct)和文档化(document)软件密集型系统的各种工件(artifacts,又译制品)

由UML表示法指南、UML语义、OCL规范和用户定义的UML扩展组成

UML是

是一种语言:用来获取关于某一主题的知识和表达关于该主题的知识,以便于进行交流

基于面向对象范型

应用于建模和系统

用于对系统进行描述、可视化、构造和文档化

是一种通用的、广泛适应的、得到工具支持和工业标准化的革命性的建模语言 统一了信息系统和技术工程的最佳工程实践的成果

应用于大量不同类型的系统、领域和方法或过程

UML的目标

成为一种易用、表达能力强的可视化建模语言,并且是简单的和可扩展的

具备扩展和特化机制

独立于实现(程序设计语言)

独立于过程(开发)

促进面向对象工具市场的成长

支持高级概念(协作、框架、模式和组件)

通过使用组建技术、可视化程序设计、模式和框架,解决反复出现的体系结构复杂性问题

可升级、广泛适用

融合了最佳的工程实践

使用UML

UML给出了面向对象建模的符号表示和规则,但未给出使用的过程和方法,因此,需要有使用UML的过程。

过程描述做什么、怎么做、何时做及为什么做,即描述一组特定次序的活动

使用UML过程的基本特征是:用例驱动,以体系结构为中心,反复,渐增式。

用例包含了功能描述,它们将影响后面所有阶段及视图。

以体系结构为中心

在开发的早期建立基础的体系结构(原型)是十分重要的,进一步对原型进行精化,建立一个易于修改、易理解和允许复用的系统。

主要是在逻辑上将系统划分为若干个子系统(UML包)

反复

UML的建模型过程要经过若干次的反复

渐增式

渐增式开发是在多次反复迭代的过程中,每次增加一些功能(或用例)的开发,每次迭代都包含了分析、设计、实现和测试。

MDA开发的三个阶段

CIM(Computation Independent Model)

聚焦于系统环境及需求,不涉及系统内部的结构与运作细节 PIM(Platform Independent Model)

聚焦于系统内部细节,不涉及实现系统的具体平台

PSM(Platform Specific Model)

聚焦于系统落实于特定具体平台的细节.如Sping、EJB3、.NET都是一种具体平台

?活动图的画法

Rational Rose工具简介

Rose的基本功能

面向对象建模;用例分析支持UML、COM、OMT和Booch’93;语义检查;

支持可控的迭代开发;双向工程;支持多用户并行开发;可以与数据建模工具集成;OLE链接、自动化;多平台可用性

Rational Rose的特点

保证模型和代码高度一致、支持多种语言

为团队开发提供强有力的支持、支持模型的Internet发布

生成使用简单且定制灵活的文档、支持关系型数据库的建模

Rational Rose中的视图

Use Case View(用例视图):包、Actor、Use Case、对象、消息和关系

Logical View(逻辑视图):包、类、状态和关系

Component View(组件视图):包、组件和依附关系

Deployment View(部署视图):节点和关系

活动图(Activity Diagram)定义

活动图能够表达顺序流程控制和并发流程控制,并发活动可以同时执行也可以顺序执行。如果排除了这一点,活动图很像一个传统的流程图

表示过程机理、业务过程以及工作流的技术,描述活动的顺序,展现从一个活动到一个活动的控制流。

它是一种变种的状态图,通过动作来组织,主要用于描述某一方法、机制或用例的内部行为

它依据对象状态的变化来捕获动作与动作的结果。

活动图中的基本原素

活动的起点、活动的终点:用于表示活动图中所有活动的起点和终点。

活动:用于表示活动图所描述的过程(或算法)的某一步。一般该步骤应为原子的,即不可再细分。

活动图中的基本原素-组合活动

用于表示活动图所描述的过程(或算法)的某一步。该步骤可再细分成多个活动的组合。

状态机中进行的非原子的执行单元。活动的执行最终延伸为一些独立动作的执行,每个动作将导致系统状态的改变或消息的传递

通过动作来组织,主要用于描述某一方法、机制或用例的内部行为

活动的属性定义

名称:该活动的名字。也用于简要描述该活动的内容,显示在该活动图元之中。

描述:关于该活动内容的详细描述。可采用正文形式,也可以用某种编程(或描述流程的)语言来描述。

对象:与其它图中的对象意义相同。在活动图中有两种用法:

与信号流相连,表示与活动图所刻画对象进行交互(接收或发送信号)的其它对象;

与数据流相连,表示某些活动的输入(产品)或输出(产品)。

对象属性

名称:该对象的名字。用于标识,并显示在图元中。

描述:关于该对象的详细描述。

State:表示该对象所处的状态。显示在图元中名称之后。

注意:作为活动输入或输出的各个对象,完全可能是同一对象,只是由于经过活动处理,其状态不同而已,所以要标明其状态;而与活动流程进行交互(发送或接收信号)的对象,一般不用注明状态。

信息流与数据流

信息流

用于连接各活动、组合活动及各特殊活动,表示各活动间的转移。

数据流

用于连接一个活动与一个对象,表示该对象是该活动的输入或输出。

信号流

用于连接一个信号发送或信号接收与一个对象,表示向该对象发送或从该对象接收一个信号。与之相连的对象是外部的,而不是作为活动的输入或输出,所以也不用注明状态。

注:信号流与数据流在图符形式上是一样的,略有粗细不同。

信息流属性

名称:

该信息流的内部名称。作为系统内部记录之用,不显示。

描述:

关于该信息流的文字描述,不显示。

重复:

活动图提供的一种简化机制,用于表示多条并行或重复的信息流。当多个活动内容相同或相似,且连接关系也相同或相似时,就可以使用这种机制,使

布图简洁、清晰。它用信息流附近的“*”号表示。

入口条件:

该信息流的入口条件。它是信息流被触发的前提之一。

注意:信息流表示活动图中各活动间的转移。

它的触发条件有四种:

前一活动的完成;

某个活动的输入对象可用

某个输入信号的到来;

入口条件得以满足。

其中,1)必须满足。在此基础上,若有其它条件,则其它条件必须同时满足,信息流才被触发。

当从某个活动引出多条信息流时,一般要为这些信息流标明不同(严格的说,应该"互斥")的入口条件,这样就实现了活动流程的分支。

信息流中的事件信息

活动图中表示与外界对象的信息交互(发送或接受信号)有两种表示法

使用信号接收和信号发送;

使用信息流上的事件信息和发送信息。

这两种表示法是完全等效的。其中,信号接收与事件信息等效,信号发送与发送信息等效

发送信息能表示多个输出信号,而信号发送则只能表示一个。

事件信息:事件即输入信号。其信息包含如下三项:

发送信号对象:发送该输入信号的对象

输入信号:输入信号名称。一般为某个消息。

参数表:输入信号的参数表。

判断及两种表示方式:特殊活动的一种,活动图—分支

用于表示活动流程中的判断、决策。

同步条

特殊活动的一种,用于表示活动之间的同步。一般有一个或多个信息流向它引入,有一个或多个信息流从它引出,表示引入的信息流同时到达,引出的信息流被同时触发。

属性定义

名称:该同步条的名字。用于标识,不显示。

描述:关于该同步条的详细描述,不显示。

同步条件:表示该同步条所要遵循的条件,亦即各引出信息流被同时触发的条件。一般是针对各引入信息流的。显示在同步条图元旁边。

活动图—泳道

活动的合法连接

活动图元素

活动图-推荐的使用场合

理解牵涉多个用例的工作流:在难于区分不同用例而对整个系统的工作过程又十分清楚时,可以先构造活动图,然后用切片技术派生用例图

分析用例:能直观清晰地分析用例,了解应当采取哪些动作以及这些动作之间的依赖关系

处理多线程应用:采用“分层抽象,逐步细化”的原则描述多线程

使用活动图建模

可以附加到任何建模元素中描述其行为,包括用例、类、接口、节点、协作、操作和方法

对工作流建模步骤

1.识别要对工作流描述的类或对象,找出负责工作流实现的业务对象,可以是领域实

体,也可是一种抽象的概念或事物,建立泳道

2.确定工作流的初始状态和终止状态,明确工作流的边界细化

3.对动作状态或活动状态建模

4.对动作流建模:先处理顺序动作,在处理分支与合并等条件行为,再处理分叉与汇

合等并发行为

5.对对象流建模:找出与工作流相关的重要对象,连到相应的动作状态或活动状态

6.对建立的模型进行精化或细化

?什么是需求工程

需求工程是指应用已证实有效的技术、方法进行需求分析,确定客户需求,帮助分析人员理解问题并定义目标系统的所有外部特征的一门学科。它通过合适的工具和记号系统地描述待

开发系统及其行为特征和相关约束,形成需求文档,并对用户不断变化的需求演进给予支持。软件需求分析

需求工程

1.需求获取

2.需求分析与协商

3.系统建模

4.需求规约

5.需求确认

6.需求管理

需求定义

IEEE软件工程标准词汇表(1997年)中定义需求为:

用户解决问题或达到目标所需的条件或能力(Capability)。

系统必须满足或具有的条件或能力,以满足合同、标准、规格说明或其它形式上强制的文档

准确地定义未来系统的目标,确定为了满足用户的需求系统必须做什么。

用<需求规格说明书> 规范的形式准确地表达用户的需求。

它把可行性分析及初步计划期间建立的软件需求描述求精和细化。

需求分析从多角度、多层次把软件功能和性能等的总体概念描述为具体的规格说明,以做为开发软件的基础,它是质量和成败的关键

准确需求的重要性

研究分析:

项目失败最重要的8个原因中的5个与需求有关

需求阶段产生的错误将扩散到其他阶段

以需求为基础的设计与编码阶段对错误的检测与发现很困难

后期发现的需求错误的修正费用很高(图示)

软件项目的成本与时间超支,大多是需求分析不准确造成

5个有关需求

不完整的的需求;没有用户的介入

不实际的客户期望;需求和规范的变更;提供不再需要的能力

需求工程中包含的步骤

需求获取。需求分析。需求精化。需求讨论。

需求规格说明书。需求建模。需求验证。需求管理

?需求如何获取和确认

获取原则

将复杂问题分解、逐层细化;能够表达和理解问题的数据域和功能域;建立模型

需求获取

需求类型

领域需求:反映了应用领域的基本问题

功能性需求:定义了系统做什么

非功能性需求:定义了系统工作时的特性

详细需求类别

功能、性能、环境、界面、易用、文档、数据、资源、安全、成本、交付、质量

八项黄金贵规则

尽量保持一致、为熟练用户提供快捷键、提供有效反馈、设计完整的对话过程

提供简单的错误处理机制、允许撤销动作、提供控制的内部轨迹、较少短期记忆负担

软件需求各组成部分之间的关系

需求获取的难点、需求获取的方法与策略、需求获取的原则

有效需求实践、阶段结果

?怎样进行有效需求分析?

分析的原则

1.问题的信息域必须被表示和理解

2.软件将完成的功能必须被定义

3.软件的行为必须被表示

4.描述信息、功能和行为的模型必须被划分,可以分层次地揭示细节

5.分析过程应该从要素信息移向实现细节

?需求分析的重要性

?软件需求分析特别重要。在软件工程的历史中,很长时间里人们一直认为需求分析是整个软件工程中的一个简单步骤,但在过去十多年中越来越多的人认识到它是整个过程中最关键的一个过程。只有通过软件需求分析,才能把软件功能和性能的总体概念描述为具体的软件需求规格说明,从而奠定软件开发的基础。许多大型应用系统的失败,最后均归结到需求分析的失败:要么获取需求的方法不当,使得需求分析不到位或不彻底,导致开发者反复多次地进行需求分析,致使设计、编码、测试无法顺利进行;要么客户配合不好,导致客户对需求不确认,或客户需求不断变化,同样致使设计、编码、测试无法顺利进行。

?需求分析的艰难性

问题的多面性、获取中的问题

领域知识缺乏、利害关系人与开发人员的交流问题

不完备性和不一致性、需求易变性、需求错误的类型

?软件需求规格说明书(SRS)

参考GB856T—88 软件需求说明书

需求规格说明1979 Balzer and Goldman提出了作出良好规格说明的8条原则需求规格说明

1.功能与实现分离,既描述“做什么”而不是:“怎样实现”

2.要求使用面向处理的规格说明语言,讨论来自环境的各种刺激可能导致系统出现什

么样的功能性反应,以此来定义一个行为模型,从而得到“做什么”的规格说明

3.如果目标软件是一个大系统中的一个元素,那么整个大系统也包括在规格说明的描

述之内,描述该目标软件与系统的其他元素的交互的方式。

4.规格说明必须包括系统运行的环境。

5.规格说明必须是可操作的,充分完全和形式的。

6.规格说明是一个认识的模型,而不是一个设计实现的模型。

7.规格说明必须容许不完备性和扩充

8.规格说明内必须局部化和具有松散的耦合,当信息被修改时,只要修改某个单独的

段落,并可以容易增加或删除一些段落。

用例分析与用例图

使用UML过程的基本特征是:用例驱动,以体系结构为中心,反复,渐增式。

用例包含了功能描述,它们将影响后面所有阶段及视图。

需求建模

用例图作用:获取需求、指导测试、对过程中的其他工作流起指导作用

用例图的画法:

用例图是显示一组用例、参与者以及它们之间关系的图。

用例图从用户的角度而不是开发者的角度来描述对软件产品的需求,分析产品所需的功能和动态行为。

用例图常用来对需求建模,用例图是至关重要的,它的正确与否直接影响到客户对最终产品的满意度。

用例图的内容:参与者、用例、泛化、扩展和包含关系

参与者( Actor) 是系统外部的一个人或物,它以某种方式参与了系统的执行过程。

参与者对系统而言总是外部的

参与者在系统的不同组成部分可能扮演不同的角色

参与者用一个人形的图案表示

识别参与者

定义:用例

用例表示系统的一项外部功能,它从用户的角度分析所得的需求。为完成一个相对完整的一种功能,系统执行的一系列动作的集合

用例是对一组序列动作的描述,系统执行这些动作将对用例的参与者产生可以观察的结果。

用例用实线的椭圆表示

软件工程期末考试题含答案

一、选择题 1.瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和_。 ( C ), A .详细计划 B .可行性分析 C .运行阶段 D.测试与排 错 2.在结构化的瀑布模型中,哪一个阶段定义的标准将成为软件测试年勺系统测试阶段的目标( A ) A .需求分析阶段 B .详细设计阶段 C.概要设计阶段 D .可行性研究阶段, 3.软件工程的出现主要是由于(C ) , A.程序设计方法学的影响 B.其它工程科学的影响 C.软件危机的出现 D.计算机的发展, 4.软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实旅的主要保证是(C) A.硬件环境 B.软件开发的环境 C.软件开发工具和软件开发的环境 D.开发人员的素质 5.软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为(B) A.相互排斥B相互补充C独立使用 D.交替使用 是软件开发中的一个重要工具,它主要应用于哪种软件开发方法(C) A.基于瀑布模型的结构化方法 B.基于需求动态定义的原型化方法 C.基于对象的面向对象的方法 D.基于数据的数据流开发方法 7.在下面的软件开发方法中,哪一个对软件设计和开发人员的开发要求最高(B) A.结构化方法B原型化方法C面向对象的方法 D.控制流方法 8.结构化分析方法是一个预先严格定义需求的方法,它在实施时强调的是分析对象的(B) A.控制流 B.数据流 C.程序流 D.指令流 9.软件开发的结构化生命周期方法将软件生命周期划分成(A) A.计划阶段.开发阶段.运行阶段 B.计划阶段.编程阶段.测试阶段 C.总体设计.详细设计.编程调试 D.需求分析.功能定义.系统设计 10.软件开发的瀑布模型,一般都将开发过程划分为:分析、设计、编码和测试等阶段,一般认为可能占用人员最多的阶段是(C) A.分析阶段 B.设计阶段 C.编码阶段 D.测试阶段

软件工程期末考试重点

软件工程期末考试重点 《软件工程》期末复习重点 第一章软件工程 1. 什么是软件工程。 A.把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;b.研究a中提到的途径。2. 软件工程的三要素:方法、工具和过程。 第二章软件过程 1. 软件生命周期分为哪几个阶段?每个阶段的基本任务是什么? a.软件定义:确定软件开发工程必须完成的总目标问题定义:要解决的问题是什么 可行性研究:上阶段所确定的问题是否有可行的解决办法?需求分析:目标系统必须做什么 b.软件开发:具体设计和实现在前一个时期定义的软件。概要设计:怎样宏观地解决问题 详细设计:应如何具体地实现这个系统 编码和单元测试:写出正确的、易理解、易维护的程序综合测试:通过各类型测试使达到预定要求。 c.运行维护:修正错误,使软件持久地满足用户需要。改正性维护:诊断和改正使用中的错误适应性维护:修改

以适应环境变化 完善性维护:根据用户的要求改进和扩充以完善预防性维护:修改以为将来的维护作准备 2. 常用的过程模型有哪些?各自的特点及不足。如:瀑布模型的不足是不能适应需求的动 态变更。 A.瀑布模型 特点: 可强迫开发人员采用规范化的方法。严格地规定了每个阶段必须提交的文档。要求每个阶段交出的所有产品都必须是经过验证的。 缺点:太理想化,于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。如果需求规格与用户需求之间有差异,就会发生这种情况。只适用于项目开始时需求已确定的情况。 B.快速原型模型 特点:快速 软件产品开发基本上是线性顺序进行。降低了规格说明文档变化的可能性。减少了后续阶段错误的可能性。 c.增量模型 1 优点: 人员分配灵活,刚开始不用投入大量人力资源。

软件工程期末考试及答案

软件工程期末考试及答 案 Company number【1089WT-1898YT-1W8CB-9UUT-92108】

2. 3. 就程序设计语言的工程特性而 言,对程序编码有哪些要求? 4. 模块的内聚性包括哪些类型? 四、理论应用题(每小题15分,共30分) 1. 请使用PAD图和PDL语言描述 在数组A(1)~A(10)中找最大 数的算法。 2.根据下列条件使用等价类划分 法设计测试用例。某一8位微机, 其八进制常数定义为:以零开头的 数是八进制整数,其值的范围是- 177~177,如05,0127,-065。 五、实践应用题(每小题15分,共15分) 1.某电器集团公司下属的厂包括 技术科、生产科等基层单位。现在 想建立一个计算机辅助企业管理系 统,其中: 生产科的任务是: (1)根据销售公司转来的内部合同(产品型号、规格、数量、交获日期)制定车间月生产计划。 (2)根据车间实际生产日报表、周报表调整月生产计划 (3)以月生产计划为以及,制定产品设计(结构、工艺)及产品组装月计划。 (4)将产品的组装计划传达到各科,将组装月计划分解为周计划,下达给车间 技术科的任务是: (1)根据生产科转来的组装计划进行产品结构设计,产生产品装配图给生产科,产生外购需求计划给供应科,并产生产品自制物料清单。 (2)根据组装计划进行产品工艺设计,根据产品自制物料清单产生工艺流程图给零件厂。试写出以上系统中生产科和技术科处理的软件结构图。

软件工程期末答案 一、名词解释题(每题3分,共15分)。 1.是描述软件开发过程中各种活动如何执行的模型。 2.数据字典是用来定义数据流图中的各个成分的具体含义的。它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。 3.内聚性是模块独立性的衡量标准之一,它是指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。4.JSP方法是面向数据结构的设计方法,其定义了一组以数据结构为指导的映射过程,它根据输入,输出的数据结构,按一定的规则映射成软件的过程描述,即程序结构。5.指相同的操作或函数、过程可作用于多种类型的对象上并获得不同结果。或(不同的对象,收到同一消息可以产生不同的结果。)二、填空题(每空2分,共20分)。 1.软件配置管理 2.容错功能 3.11 4.可移植性 5.输出结果 6.歧义性 7.模块 8.实例化 9.形式语言 10.F/(1+(n*i)) 三、简答题(每小题5分,共20分)。 1.结构冗余:包括静态冗余、动态冗余和混合冗余。

软件工程导论期末考试试题和答案

1.软件生存周期一般可分为__问题定义__、可行性研究、_需求分析_____、设计编码、__ 测试________、运行与维护阶段。 2.按软件的功能进行划分,软件可以划分为系统软件、支撑软件 和应用软件。 3.可行性研究主要集中在以下四个方面经济可行性、技术可行 性、法律可行性和抉择。 4.用户界面的可使用性是用户界面设计最重要的也是最基本的目标。 5.常见的软件概要设计方法有3大类:以数据流图为基础构造模块结构的___结构化设计 方法_________,以数据结构为基础构造模块的__jackson方法__________,以对象、类、继承和通信为基础的__面向对象设计方法__________。 6.__数据流图________和__数据字典___共同构成系统的逻辑模型。 7.软件测试的方法有__分析方法________和___非分析方法_______(即黑盒法)。 8.单元测试一般以___白盒_____________测试为主,___黑盒______测试为辅。 9.成本估计方法主要有__自底向上估计________、_自顶向下估计_________和算法模型估 计三种类型。 1.下列哪个阶段不属于软件生存周期的三大阶段( C )。 A、计划阶段 B、开发阶段 C、编码阶段 D、维护阶段 2.需求分析是(A )。 3.A、软件开发工作的基础B、软件生存周期的开始 4.C、由系统分析员单独完成的D、由用户自己单独完成的 5.原型化方法是软件开发中一类常用的方法,它与结构化方法相比较,更需要(B )。 6.A、明确的需求定义B、完整的生命周期 7.C、较长的开发时间D、熟练的开发人员 8.软件维护时,对测试阶段未发现的错误进行测试、诊断、定位、纠错,直至修改的回归 测试过程称为( A )。 9.A、改正性维护B、适应性维护 10.C、完善性维护D、预防性维护 11.一般说来,投入运行的软件系统中有错误(A )。

软件工程期末考试题3

试卷一 中南大学考试试卷 2006--2006 学年学期时间110分钟 专业年级:总分100分,占总评成绩 100% 注:此页不作答题纸,请将答案写在答题纸上 填空题(本题20分,每小题2分) 1. 瀑布模型是以文档为驱动、适合于()软件项目的开发。 2. 需求分析的基本任务是()。 3. 若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例:-1.001,-1.0,1.0,1.001。设计这组测试用例的方法是()。 4. 根据程序流程图划分的模块通常是()内聚的模块。 5. 软件的分类,按其功能可分为:系统软件、()和应用软件。 6. UML的定义包括UML语义和()两个部分。 7. 客观世界中的若干类,通常有两种主要的结构关系:即分类结构和( )。 8. IDEF1X图用来描述系统的()模型,主要有实体、联系和()三种成分,其中实体可分为独立实体和(),且一个实体只能在图中出现一次。 二、简答题(本题30分,每小题5分) 1. 什么是软件工程?软件工程和计算机科学有何区别?

2. 面向对象方法和结构化方法有何区别与联系? 3. 什么是模块的作用域和模块的控制域?为何要求模块的控制域必须在作用域内? 4. 什么是设计模式?试举例说明组合设计模式的应用。 5.什么是依赖倒置原则?它和开闭原则有何联系? 6. 软件生存期过程和软件生存期模型有何联系?瀑布模型有何特点? 三、绘图题(本题34分) 1. 某单位拟开发一个计算机房产管理系统,要求系统具有分房、调房、退房和查询统计等功能。房产科将用户申请表输入系统后,系统首先检查申请表的合法性,对不合法的申请表,系统拒绝接收;对合法的申请表根据类型分别进行处理。 (1) 如果是分房申请,则根据申请者的情况(年龄、工龄、职称、职务、家庭人口等)计算其分数,当分数高于阀值分数时,按分数高低将申请单插到分房队列的适当位置。在进行分房时,从空房文件中读出空房信息,如房号、面积、等级、单位面积房租等,把好房优先分给排在分房队列前面的符合该等级房条件的申请者;从空房文件中删掉这个房号的信息,并从分房队列中删掉该申请单,再把此房号的信息和住户信息一起写到住房文件中,输出住房分配单给住户,同时计算房租,并将算出的房租写到房租文件中。 (2) 如果是退房申请,则从住房文件和房租文件中删除有关信息,再把此房号的信息写到空房文件中。

软件工程期末复习知识点整理

复习整理 、绪论 1. 软件的定义 软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。(软件=程序+文档) 2.软件工程的定义 是指导计算机软件开发和维护的一门工程学科;采用工程化的原理与方法对软件进行计划、开发和维护;把证明正 确的管理技术和最好技术综合运用到软件开发中;研究经济地开发岀高质量的软件方法和技术;研究有效维护软件 的方法和技术。 3.软件危机的概念,及出现的原因 软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。 产生原因: ⑴软件规模越来越大,结构越来越复杂 ⑵软件开发管理困难而复杂。 ⑶软件开发费用不断增加。 ⑷软件开发技术落后。 ⑸生产方式落后,仍采用手工方式。 ⑹开发工具落后,生产率提高缓慢。 4.三种编程范型的特点 (1)过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构 +算法;着眼于程序的过程和基本控制结构,粒度最小 (2)面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对 象,粒度比较大 (3)基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合 整个领域的类对象,粒度最大 二、软件生存周期与软件过程 1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动 定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期 目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段, 给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。 主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护( P19) 2、软件生命周期划分为哪几个阶段 软件生命周期分为三个时期八个阶段: 软件定义:问题定义、可行性研究; 软件开发:需求分析、概要设计、详细设计、编码、测试; 软件运行:软件维护

软件工程期末考试资料

软件工程 第一章: 1.软件的组成不仅是程序、数据和文档,而且还有完成一定功能和性能所蕴含 的知识和经验。 2.领域知识是基于计算机的系统的设计、软件需求获取和系统测试不可或缺的。 3.软件发展的历史给我们的启发是社会需求和硬件进步是软件技术发展的基 础。 4.软件的进步和成就促进了信息社会和知识经济的发展。 5.按照应用领域、基本属性和特点研究软件有助于对软件的理解,提高了软件 开发、使用和维护的针对性。 6.软件工程学科具有鲜明的工程特性。 第二章: 1.面向对象方法是现代软件工程技术体系的基石,它以分类、继承、聚合、封装、多态和消息传递等贴近人类思维习惯的概念。 2.因面向对象与生俱来的自然性、直观性,以及支持软件复用、改善软件结构等许多优势,面向对象方法后来居上,迅速取代结构化方法而成为当前主流的软件开发方法学。 3.UML通过图形化的表示机制从多个侧面表示软件系统的分析和设计模型。 4.UML定义了5类图形机制:用例视图,包括用例描述和用例图;结构视图,包括视图,包括包图、类图和对象图;行为视图,包括交互图、状态图与活动图;构件视图和部署视图。 5.RUP将软件生存周期(即软件制品的进化状态)划分为初始、细化、构造、移交、生产5个阶段。 6.RUP将软件开发过程分解为业务建模、需求、设计、实现、V&V、部署、配置和变更管理、项目管理、环境9个工作流。 7.软件项目团队可利用5个阶段、9个工作流组织管理软件项目的开发活动。RUP 过程中生成的各类制品通常以UML表示。 8.软件开发过程是基于面向对象方法学的,包括需求获取、需求分析、体系结构设计、人机交互设计、详细设计、实现、测试、维护与进化等重要的软件开发阶段。 第三章: 1.软件需求是指利益相关方对目标软件系统在功能、性能和质量等方面的期望,以及对目标软件系统在运行环境、资源消耗等方面的约束。 2.软件需求可划分为功能需求、质量需求和约束性需求3种类型,其中质量需求和约束性需求统称为非功能需求。 3.软件需求的质量要素包括正确性、完全性和可行性。 4.需求调查包括:访谈和会议、调查问卷、业务文档分析、现场观摩。 5.需求建模包括:抽象、分解和多视点分析。 6.需求模型包括:策划、需求获取、需求分析、需求规范化、需求验证和总结等活动。 7.对大中型软件项目以及初期初期需求不明朗的软件项目,需求工程过程采用迭 代方式。

2019最新软件工程导论期末考试题库及答案

2019最新软件工程导论期末考试题库及答案 1.填空题 1.一般来说,可以从__一致性__、_完整性___、_现实性____和_有效性___四个方面验证软件需求的正确性。 2.IPO图是_输入、处理和输出图_的简称,它是美国IBM 公司发展完善起来的一种图形工具。 3.系统流程图是描述__物理模型__的传统工具,用图形符 号表达了系统中各种元素之间的_____信息流动_____情况。4.数据流图中的箭头表示数据流,椭圆或圆形表示数据处理,矩形表示数据的源点/终点。5.软件测试的步骤按顺序分别是:___单元测试_____、子系统测试、系统测试(子系统和系统测试通常称为集 成测试)、__确认测试__和_____系统测试(集成测试)____ 6.软件生命周期一般可分为_问题定义_、可行性研究、_需求分析_、设计编码、_测试_、运行与维护阶段。 7.可行性研究主要集中在以下四个方面_经济可行性_、__技术可行性____、__法律可行性___和抉择。 8.在结构化设计中,HIPO图应用在总体设计阶段,由IPO图和_层次图_两部分组成。 9.复杂问题的对象模型通常由下述五个层次组成:主题层、___类与对象_层、__结构___层、_属性_层和__服务_层。 10.实施精化设计的目标是基于模块的“高内聚低耦合” 的原则,提高模块的_独立性。 11.软件生命周期一般可分为___问题定义_、可行性研究、__需求分析__、概要设计__、详细设计、编码、__软件测试_、运行与维护阶段。 12.面向对象的数据存储管理模式分为__文件__、_关系数据库__和__面向对象数据库___三种。 13.单元测试一般以_白盒_测试为主,__黑盒__测试为辅。

软件工程(清华钱乐秋版)期末复习重点

1、什么是软件工程 在《计算机科学技术百科全书》中软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。 2、软件生存周期分哪几个阶段分别简述各个阶段的任务。 答:软件生存周期有计算机系统工程、需求分析、设计、编码、测试、运行和维护6个阶段。 A 计算机系统工程的任务是确定待开发软件的总体要求和范围,以及该软件与其他计算机 系统元素之间的关系,进行成本估算,做出进度安排,并进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中做出选择。 B 需求分析主要解决待开发软件要“做什么”的问题,确定软件的功能、性能、数据、界面 等要求,生成软件需求规约。 C 软件设计只要解决待开发软件“怎么做”的问题。软件设计通常可分为系统设计和详细设 计。系统设计的任务是设计软件系统的体系结构,包括软件系统的组成成分、各成分的功能和接口、成分间的连接和通信,同时设计全局数据结构。详细设计的任务是设计各个组成成分的实现细节,包括局部数据结构和算法等。 D 编码阶段的任务是用某种程序设计语言,将设计的结果转换为可执行的程序代码。 E测试阶段的任务是发现并纠正软件中的错误和缺陷。测试主要包括单元测试、集成测试、确认测试和系统测试。 F软件完成各种测试后就可交付使用,在软件运行期间,需对投入运行的软件进行维护,即可发现了软件中潜藏的错误或需要增加新的功能或使软件适应外界环境的变化等情况出现时,对软件进行修改。 3、简述各类软件过程模型的特点。 答:典型的软件过程模型有:瀑布模型、演化模型(增量模型、原型模型、螺旋模型)、喷泉模型、基于构件的开发模型和形式方法模型等。 A瀑布模型中,上一阶段的活动完成并经过评审后才能开始下一阶段的活动,其特征是: 接受上一阶段活动的结果作为本阶段活动的输入; 依据上一阶段活动的结果实施本阶段应完成的活动; 对本阶段的活动进行评审; 将本阶段活动的结果作为输出。 B 增量模型将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软 件的一个可发布的增量版本,后一个版本是对前一个版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。 C 原型方法从软件工程师与客户的交流开始,其目的是定义软件的总体目标,标识需求。 然后快速制定原型开发的计划,确定原型的目标和范围,采用快速设计的方式对其建模,并构建模型。被开发的原型应交付给客户使用,并收集客户的反馈意见,这些反馈意见可在下

软件工程导论期末考试题

一、单项选择题 1.适合于面向对象方法学的软件生存周期模型是( B ) A.瀑布模型 B.喷泉模型 C.螺旋模型 D.增量模型 2.从实用角度看,数据规范化程度在大多数场合选用第( C )范式。 A. 1 B.2 C.3 D.5 3. 可行性分析研究的目的是( A )。 A.项目值得开发否 B.争取项目 C.开发项目 D.规划项目 4. 模块的内聚性最高的是 ( D ) A.逻辑内聚 B.时间内聚 C.偶然内聚 D.功能内聚 5.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做 ( B ) A. 软件工程 B. 软件危机 C. 软件周期 D. 软件产生 6. 需求分析阶段的任务是确定( D ) A.软件开发方法 B.软件开发工具 C.软件开发费 D.软件系统的功能 7. 完整的软件结构通常用( B )图来表示。 A. IPO 图 B. HIPO 图 C.PAD 图 D.DFD 图 8. 在白盒法技术测试用例的设计中( A )是最弱的覆盖标准。 A.语句 B.路径 C.条件组合 D.判定 9?对象实现了数据和操作的结合,使数据和操作( C )于对象的统一体中。 A.结合 B.隐藏 C.封装 D.抽象 10. 在数据流图中,圆代表( C )。 A.源点 B.终点 C.加工 D.模块 11. 模块内聚度越高,说明模块内各成分彼此结合的程度越( B )。 A.松散 B.紧密 C.无法判断 D.相等 12. 软件测试方法中,黑盒、白盒测试法是常用的方法,其中黑盒测试主要用于测试( B )。 A.结构合理性 B.软件外部功能 C.程序正确性 D.程序内部逻辑 13. 面向对象开发方法中, ( C )是占主导地位的标准建模语言。 A.Booch 方法 B.Coad 方法 C.UML 语言 D.OMT 方法 14. 软件需求分析的主要任务是准确地定义出要开发的软件系统是( C ) A.如何做 B.怎么做 C.做什么 D.对谁做 15. 结构化程序设计的一种基本方法是( C ) A.筛选法 B.迭代法 C.逐步求精法 D.递归法 二、填空题 1. 目前使用最广泛的软件工 程学方法分别是传统方法学和(面向对象方法学 ) )和事务流。 文档 ) 。 ( 重复 )三种结构。 自顶向下 的集成测试方法,对软件结构中下层使 6. 软件维护包括 ( 改正性维护 )、适应性维护、完善性维护、预防性维护。 7. 面向对象方法学建模得到的三个基本子模型是 (对象建模 ) .动态模型、功能模型。 8. 复杂大型问题的对象模型通常由主题 2. 数据流图中信息流的类型有(变换流 3. 软件的定义是:软件 =程序+数据+ 4. 经典结构程序设计包括顺序、选择和 5. 集成测试时对软件结构中上层使用 用 ( 自底向上 ) 的集成测试方法。

山东大学-软件工程复习重点整理

第一章 1.1软件工程(SE)的定义、向、作用: SE:在将有关软件开发与应用的概念科学体系化的基础上,研究如有计划、有效率、经济的开发和利用能在就算机上正确运行的软件的理论和技术的工程法学,一些开发和维护软件的法、过程、原则。是一个系统工程,既有对技术问题的分析与综合,也有对开发过程和参与者的管理。 SE的向:面向对象模式,结构化模式,基于过程的模式等 SE的作用:付出较低的开发成本,达到要求的软件功能,取得较好的软件性能,开发的软件易于移植,需要较低的维护费用,能按时完成开发工作,及时交付使用。 1.2开发模式:软件开发的全部过程,活动和任务的结构框架,它能直观的表达的表达软件开发全过程,明确要完成的主要活动,任务和开发策略。 1.3说明错误、故障和失效的含义及联系(并举例): 错误:是在软件生产过程中人为产生的错误(需求说明中的错误,代码中的错误) 故障:是在功能实现过程中产生的问题;是错误导致的结果,是在软件中一个错误的表现(一个错误可能产生多个缺陷,静态存在的) 失效:是相对于系统指定行为的偏离,系统违背了它应有的行为(动态存在的) 联系:当一个开发者编写程序时,会在代码中出现错误。当这个程序被编译或集成到一个系统中时,系统就存在故障。当你运行这个系统时,可能会导致失效,即人们产生错误,故障是错误的结果(部观角:从开发者的角度看待问题),当故障执行时出现失效(外部视角:从用户角度看到的问题)。并不是所有的错误会导致故障,并非每个缺陷都对应相应的失败。1.4软件质量应从哪几个面衡量,论述之: (1产品的质量)(2过程的质量)(3商业环境背景下的质量) (1)产品的质量:用户从失败的数目和类型等外部特征进行评价,如果软件具有足够的功能并且易于学习和使用,用户就断定软件是高质量的;开发者从缺陷的数目和类型等部特征来作为产品质量的依据。 (2)过程的质量:有很多过程都会影响到最终的产品质量,只要有活动出了差错,产品的质量就会受到影响;开发和维护过程的质量与产品的质量是同等重要的。 (3)商业环境背景下的软件质量:将技术价值和商业价值统一起来。 1.5软件系统的系统组成(系统的要素有哪些):对象(实体)+ 活动+ 关系+ 系统边界活动:活动是发生在系统中的某些事情,通常描述为由某个触发器引发的事件,活动通过改变属性把一个事物变成另一个事物。 对象:活动中涉及的元素称为对象。 关系:是指活动与对象之间的关系。 系统边界:即系统包含的功能与系统不包含的功能之间的界限。 1.6现代软件工程大致包含几个阶段及各个阶段的文档: (1)需求分析:主要包括问题定义、可行性分析、需求分析《需求规格说明书》

软件工程导论》期末考试试题与答案

《软件工程导论》期末考试-试题与答案 一、填空题 1.软件工程中的结构化分析 SA 是一种面向________的分析方法。 2.软件模块独立性的两个定性度量标准是_________________。 3.软件开发是一个自顶向下逐步细化和求精的过程,而软件测试是一个________的过程。 4. ________和数据字典共同构成了系统的逻辑模型 5. ___________是一种黑盒测试技术,这种技术把程序的输入域划分为若干个数据类,据此导出测试用例。二、单选 题 1.在软件危机中表现出来的软件质量差的问题,其原因是_______。A.软件 研发人员素质太差B.用户经常干预软件系统的研发工作C.没有软件质量标 准 D.软件开发人员不遵守软件质量标准2.在软件质量因素中,软件在异常条件下仍能运 行的能力成为软件的_____。A.安全性B.健壮性C.可用性D.可靠性 3.在下列测试技术中,______不属于黑盒测试技术。A.等价 划分B.边界值分析C.错误推测D.逻辑覆盖 4.软件工程方法是在实践中不断发展着的方法,而早期的软件工程方法主要是指______。A.原型化方法B.结构化方法C.功能化方法D.面向对象方法 5. ______是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是 隐蔽的,外界只能通过有限的接口与对象发生联系。A.多态 B.继承C.封装D.消息 6. Jackson 方法是在软件开发过程中常用的方法,使用 Jackson 方法时可以实现______。A.从数据结构导出程序结构B.从数据流图导出初始结构图C.从模块结构导出数据结构D.从模块结构导出程序结构 7.软件测试时为了________而执行程序的过程。A.纠正 错误B.发现错误 C.避免错误 D.证明错误 8.在软件系统中,一个模块应具有什么样的功能,这是由_____决定的。A.总体 设计B.需求分析C.详细设计D.程序设计 9.面向对象分析是对系统进行_________的一种方法。A.需求 分析B.程序设计C.设计评审D.测试验收 10.软件文档是软件工程实施中的重要部分,它不仅是软件开发各阶段的重要依据,而 且影响软件的_______。A.可理解 性B.可维护性C.可扩展性D.可 移植

《软件工程》期末考试题及答案++精华版!!

《软件工程》期末考试样题 一、填空题 1.软件开发模型有(瀑布模型)(螺旋模型)第四代技术模型(原型模型)构件组装模型、混合模型。 2.可行性研究一般可以从(经济)可行性、(技术) 可行性、运行可行性、法律可行性和开发可行性等方面来研究。 3.现在向银行存款,年利率为i,若希望在n 年后从银行得到F元,现在应该存入的钱数为 (F/(1+i)n)。 4.数据流图的基本符号包括(数据输入的源 点和数据输出的汇点)、(加工)、(数据流)、(数据存储文件)。 5.Jackson图除了可以表达程序结构外,还可以 表达(数据结构),它首先要分析(数据结构),并用适当的工具来描述。 6.详细设计的工具有图形工具)、表格工具和(语言工具)。 7.IPO图由(输入)、处理和(输出)三个框组 成。这个图的特点是能够直观的显示三者之间的关系。 8.面向对象技术是一整套关于如何看待(软件系统)和(现实世界)的关系,以什么观点来研究问题并进行分析求解,以及如何进行系统构造的软件方法学。面向对象方法是一种运用(对象)、(类)、(继承)、(封装)、聚集、消息传送、多态性等概念来构造系统的软件开发方法。 二、单项选择题 1.下列( A )属于系统软件。 A.WINDOWS 2000 B.Word C.Flash D.3D MAX 2.下列哪个图是N-S图的构件( C )。 A. B.

3.对于螺旋模型,下列( D 卡尔坐标表达的活动。 A. 制定计划 B. 实施工程 C. 风险分析 D. 程序编码 三、多项选择题 1.软件危机可以表现为(ABXD A.产品不符合用户的需要 B.软件产品的质量差 C.软件的可维护性差 D.软件的价格昂贵 2.Jackson图中一般可能包括(A.表头 B.表体 C.表名 D.字段名 AD )。、内容耦合是最高程度的耦合 、应该尽量使用内容耦合 、高级语言一般设计成允许内容耦合的形式、如果一个模块有多个入口,可能发生内容.下列属于不标准的书写格式( BCD )。、书写时适当使用空格分隔 、一行写入多条语句 、嵌套结构不使用分层缩进的写法 、程序中不加注释 ,错误的) 软件生存周期是从软件开始开发到开发结束 () 系统流程图是一个典型的描述逻辑系统的传() 数据流图和数据字典共同构成系统的逻辑 A

软件工程导论期末考试简答题

简答题 1、什么是软件工程?它目标和内容是什么? 软件工程就是用科学的知识和技术原理来定义,开发,维护软件的一门学科。软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。软件工程内容:包括开发技术和开发管理两个方面。 2、软件开发中有哪几种过程模型?哪些适用于面向对象的软件开发? 软件开发中常见的软件过程模型有瀑布模型、原型模型、螺旋模型、喷泉模型、统一软件过程等。 其中喷泉模型、统一软件过程适用于面向对象的软件开发。 3、什么是结构分析方法?该方法使用什么描述工具? 结构化分析:简称SA,面向数据流进行数据分析的方法。采用自顶向下逐层分解的分析策略。顶层抽象地描述整个系统,底层具体地画出系统工程的每个细节。中间层则是从抽象到具体的过渡。使用数据流图,数据字典,作为描述工具,使用结构化语言,判定表,判定树描述加工逻辑。 4、什么是软件概要设计?该阶段的基本任务是什么? 把一个软件需求转换为软件表示时,首先设计出软件总的体系结构。称为概要设计或结构设计。 基本任务:⑴设计软件系统结构⑵进行数据结构及数据库的设计⑶编写概要设计的文档⑷评审 5、软件维护有哪些内容? (1)校正性维护。在软件交付使用后,一些隐含的错误在某些特定的使用环境下会暴露出来。为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护。 (2)适应性维护。为了使应用软件适应计算机硬件、软件环境及数据环境的不断发生的变化而修改软件的过程称为适应性维护。 (3)完善性维护。为增加软件功能、增强软件性能、提高软件运行效率而进行的维护活动称为完善性维护。 (4)预防性维护。为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。 6、软件测试要经过哪些步骤?这些测试与软件开发各阶段之间有什么关系? 软件测试要经过的步骤是:单元测试→集成测试→确认测试→系统测试。 单元测试对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。该阶段涉及编码和详细设计文档。 集成测试是为了检查与设计相关的软件体系结构的有关问题,也就是检查概要设计是否合理有效。 确认测试主要是检查已实现的软件是否满足需求规格说明书中确定了的各种需求。 系统测试是把已确认的软件与其他系统元素(如硬件、其他支持软件、数据、人工等)结合在一起进行测试。以确定软件是否可以支付使用。 7、什么是软件生存周期?它有哪几个活动? 软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。 包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。 8、衡量模块独立性的两个标准是什么?各表示什么含义? 内聚和耦合。内聚:又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标。 耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标。 9、什么是结构分析方法?结构化分析方法通过哪些步骤来实现? 结构化分析:简称SA,面向数据流进行数据分析的方法。采用自顶向下逐层分解的分析策略。顶层抽象地描述整个系统,底层具体地画出系统工程的每个细节。中间层则是从抽象到具体的过渡。实现的步骤:⑴了解当前系统的工作流程,获得当前系统的物理模型。⑵抽象出当前系统的逻辑模型。⑶建立目标系统的逻辑模型。⑷作进一步补充和优化。

最新软件工程期末考试题

41.软件是一种产品。 A.物质 B. 逻辑√ C. 工具 D. 文档 2.软件产品的生产主要___ _ _。 A. 研制√ B. 再生产 C. 开发 D. 生产 3.软件工程是一门__ _学科。 A. 工程性 B. 原理性 C. 综合性√ D. 理论性 4.类是面向对象方法中的一个重要概念,类的描述分为:名称、和操作。 A. 角色 B. 用例 C. 方法 D. 属性√ 5.下列描述中正确的是___ __。 A.软件工程的主要是解决软件开发中的技术问题 B.软件工程主要解决软件产品的生产率问题 C.软件工程的主要思想是强调在软件开发过程中需要运用工程化的原则√ D.软件工程只是解决软件项目的问题. 6.需求分析最终结果是产生。 A.项目开发计划B.可行性分析报告C.设计说明书D.需求分析说明书√7.需求分析中,开发人员要从用户那里解决最重要的问题是。 A.要让软件做什么√B.要给软件提供哪些信息 C.要求软件工作效率怎样D.要让该软件具有何种结构 8.分层DFD是一种比较严格又易于理解的描述方式,它的顶层图描述了系统的。 A.软件的作者B.输入与输出√C.细节D.绘制的时间 9.数据字典中,一般不包括条目。 A.源点与终点√B.数据存储C.数据流D.加工 10.软件需求分析是保证软件质量的重要步骤,它的实施应该是在。 A.编码阶段B.软件设计阶段√C.软件定义过程D.软件开发全过程11.软件的主要功能和结构是在阶段确定的。 A.测试B.编程C.分析设计√D.维护 12.需求分析最终结果是产生。 A.需求分析说明书√B.可行性分析报告C.项目开发计划D.设计说明书 13.可行性研究主要从方面进行研究。 A.技术可行性,经济可行性,操作可行性B.经济可行性,系统可行性,时间可行性 C.经济可行性,系统可行性,操作可行性D.技术可行性,经济可行性,社会可行性√ 14.可行性分析研究的目的是。 A.项目值得开发与否√B.开发项目C.争取项目D.规划项目 15.需求分析中开发人员要从用户那里了解。 A.输入的信息B.用户使用界面C.软件做什么√D.软件的规模 16.需求分析阶段研究的对象是。 A.软硬件要求B.系统要求C.分析员要求D.用户需求√ 17.系统流程图用于可行性分析中的的描述。 A.目标系统B.当前逻辑模型C.当前运行系统√D.新系统 18.数据字典是用来定义中的各个成分的具体含义的。

软件工程期末考试复习题及答案

(4分) 变换型结构的数据流呈() A. 线性形状 B. 辐射状 C. 椭圆形 D. 阶梯形 得分: 0 知识点: 软件工程,软件工程作业题展开解析 .答案 A .解析..2. (4分) 可行性研究阶段使用的图形工具是() A. DFD图 B. N-S图 C. PAD图 D. Warnier图 得分: 0 知识点: 软件工程,软件工程作业题展开解析 .答案 A .解析..3. (4分) 软件的开发模式有() A. 面向过程模式、面向对象模式、混合模式 B. 变换模式、渐增模式、瀑布模式 C. 自顶向下模式、自底向上模式、关系模式 D. 分步模式、渐增模式、非渐增模式 得分: 0 知识点: 软件工程,软件工程作业题展开解析 .答案 B .解析..4. (4分) 模块的初始化工作和模块处理意外故障均属于() A. 时间内聚 B. 顺序内聚 C. 功能内聚 D. 逻辑内聚 得分: 0 知识点: 软件工程作业题,软件工程展开解析 .答案 A .解析..5. (4分) HIPO的含义是()

A. 层次、输入、处理、输出 B. 高速、信息、程序、目标 C. 顶层的IPO图 D. 关于输入、处理、输出的层次 得分: 0 知识点: 软件工程,软件工程作业题展开解析 .答案 A .解析..6. (4分) 数据字典和数据流图共同构成系统的() A. 物理模型 B. 结构模型 C. 设计说明书 D. 逻辑模型 得分: 0 知识点: 软件工程作业题,软件工程展开解析 .答案D .解析..7. (4分) 好的软件结构它的外观形状一般呈() A. 线性 B. 扇形 C. 椭圆形 D. 层次型 得分: 0 知识点: 软件工程,软件工程作业题展开解析 .答案 C .解析..8. (4分) CMU/SEI推出的()将软件组织的过程能力分为五个成熟度级别,每一个级别定义了一组过程能力目标,并描述了要达到这些目标应该具备的实践活动。 A. CMM B. PSP C. ISO-9000 D. RUP 得分: 0 知识点: 软件工程,软件工程作业题展开解析 .答案 A .解析..9. (4分) 若要保证开发出来的软件局部优化,而且能尽早发现设计上的错误,应采用()

软件工程导论期末试题

软件工程导论期末考试试题 一.选择(20分) 1、瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和( C)。 A、详细计划 B、可行性分析 C、运行阶段 D、测试与排错 2、从结构化的瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中哪个环节出错,对软件的影响最大(C )。 A、详细设计阶段 B、概要设计阶段 C、需求分析阶段 D、测试和运行阶段 3、在结构化的瀑布模型中,哪一个阶段定义的标准将成为软件测试中的系统测试阶段的目标(A )。 A、需求分析阶段 B、详细设计阶段 C、概要设计阶段 D、可行性研究阶段 4、软件工程的出现主要是由于(C )。 A.程序设计方法学的影响 B.其它工程科学的影响 C. 软件危机的出现 D.计算机的发展 5、软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是(C ) A、硬件环境 B、软件开发的环境 C、软件开发工具和软件开发的环境 D、开发人员的素质 6、软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为 ( B) A、相互排斥 B、相互补充 C、独立使用 D、交替使用 7、UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法(C ) A、基于瀑布模型的结构化方法 B、基于需求动态定义的原型化方法 C、基于对象的面向对象的方法 D、基于数据的数据流开发方法

8、在下面的软件开发方法中,哪一个对软件设计和开发人员的开发要求最高(B ) A、结构化方法 B、原型化方法 C、面向对象的方法 D、控制流方法 9、结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的(B ) A、控制流 B、数据流 C、程序流 D、指令流 10、软件开发的结构化生命周期方法将软件生命周期划分成(A ) A、计划阶段、开发阶段、运行阶段 B、计划阶段、编程阶段、测试阶段 C、总体设计、详细设计、编程调试 D、需求分析、功能定义、系统设计 二.填空(20分) 21.系统流程图是描述物理模型的传统工具,用图形符号表示系统中各个元素 表达了系统中各种元素之间的(信息流动)情况。 22.成本效益分析的目的是从(经济)角度评价开发一个项目是否可行。 23.自顶向下结合的渐增式测试法,在组合模块时有两种组合策略:深度优先 策略和(宽度优先策略) 。 24.独立路径是指包括一组以前没有处理的语句或条件的一条路径。从程序图 来看,一条独立路径是至少包含有一条(在其他独立路径中未有过)的边的路径。 25.汇编语言是面向(机器) 的,可以完成高级语言无法完成的特殊功能,如与外部设备之间的一些接口工作。 26.在JSP方法中解决结构冲突的具体办法是(中间数据结构或中间文件)。 27.详细设计的任务是确定每个模块的内部特性,即模块的算法、(使用的数据)。 28.所有软件维护申请报告要按规定方式提出,该报告也称( 软件问题)报告。 29.有两类维护技术:在开发阶段使用来减少错误、提高软件可维护性的面向 维护的技术;在维护阶段用来提高维护的效率和质量的(维护支援)技术。 30.科学工程计算需要大量的标准库函数,以便处理复杂的数值计算,可供选 择的语言有:(FORTRAN语言)、PASCAL语言、C语言和PL/1语言。三.判断(10分)

软件工程期末试题及答案(六)

软件工程期末试题及答案(六) 选择题 1.软件测试的目的是()。 A)试验性运行软件B)发现软件错误C)证明软件正确D)找出软件中全部错误2.软件测试中白盒法是通过分析程序的()来设计测试用例的。 A)应用范围B)内部逻辑C)功能D)输入数据 3.黑盒法是根据程序的()来设计测试用例的。 A)应用范围B)内部逻辑C)功能D)输入数据 4.为了提高软件测试的效率,应该()。 A)随机地选取测试数据B)取一切可能的输入数据作为测试数据 C)在完成编码以后制定软件的测试计划D)选择发现错误可能性最大的数据作为测试用例5.与设计测试用例无关的文档是()。 A)项目开发计划B)需求规格说明书C)设计说明书D)源程序 6.测试的关键问题是()。 A)如何组织软件评审B)如何选择测试用例 C)如何验证程序的正确性D)如何采用综合策略 7.软件测试用例主要由输入数据和()两部分组成。 A)测试计划B)测试规则C)预期输出结果D)以往测试记录分析 8.成功的测试是指运行测试用例后()。 A)未发现程序错误B)发现了程序错误C)证明程序正确性D)改正了程序错误9.下列几种逻辑覆盖标准中,查错能力最强的是()。 A)语句覆盖B)判定覆盖C)条件覆盖D)条件组合覆盖 10.在黑盒测试中,着重检查输入条件组合的方法是()。 A)等价类划分法B)边界值分析法C)错误推测法D)因果图法 11.单元测试主要针对模块的几个基本特征进行测试,该阶段不能完成的测试是()。A)系统功能B)局部数据结构C)重要的执行路径D)错误处理 12.软件测试过程中的集成测试主要是为了发现()阶段的错误。 A)需求分析B)概要设计C)详细设计D)编码 13.不属于白盒测试的技术是()。 A)路径覆盖B)判定覆盖C)循环覆盖D)边界值分析 14.集成测试时,能较早发现高层模块接口错误的测试方法为()。 A)自顶向下渐增式测试B)自底向上渐增式测试C)非渐增式测试D)系统测试15.确认测试以()文档作为测试的基础。 A)需求规格说明书B)设计说明书C)源程序D)开发计划 16.使用白盒测试方法时,确定测试数据应根据()和指定的覆盖标准。 A)程序内部逻辑B)程序的复杂度C)使用说明书D)程序的功能 17.程序的三种基本结构是()。 A)过程子、程序、分程序B)顺序、选择、循环 C)递归、堆栈、队列D)调用、返回、转移 18.结构化程序设计的一种基本方法是() A)筛选法B)递归法C)归纳法D)逐步求精法 19.软件调试的目的是() A)找出错误所在并改正之B)排除存在错误的可能性 C)对错误性质进行分类D)统计出错的次数

相关文档
最新文档