1、自考软件工程软件工程第一章 绪论1、 解释术语软件: 一般是指计算机系统中的程序及其文档。软件工程 : 是应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度实现满 足用户要求的软件的工程,或以此为研究对象的学科。软件危机: 随着计算机的广泛应用, 软件生产率、 软件质量远远满足不了社会发展的需求, 成为社会、经济发展的制约因素,人们通常把这一现象称为“软件危机” 。2、 简答题简述软件开发的本质软件开发的本质:不同抽象层术语之间的“映射” ,以及不同抽象层处理逻辑之间的“映 射”。简述实施软件开发的基本途径 软件开发的基本途径是问题建模。常用的建模手段有:结构化方法、面向对象方法以及
2、诸 多面向数据结构方法等。简述何谓模型以及软件开发中所涉及的模型 所谓模型,简单的说,是待建系统的任意抽象,是特定意图下所确定的角度和抽象层次上 对物理系统的描述。在软件开发中,软件系统模型大体上可分为两类:概念模型和软件模 型。简述软件开发所涉及的两大类技术 一是过程方向,即求解软件的开发逻辑;二是过程途径,即求解软件的开发手段。第二章软件需求与软件需求规约1、解释以下术语:软件需求: 是产品/ 系统设计、实现以及验证的基本信息源之一,是任何软件工程项目的 基础。功能需求: 规约了系统或系统构件必须执行的功能,是整个需求的主体。非功能需求: 分为性能需求、外部接口需求、设计约束和质量属性需求
3、。性能需求规约了 一个系统或系统构件在性能方面必须具有的一些特征;外部接口需求规约了系统或系统构 件必须与之交互的用户、硬件、软件或数据库元素;设计约束限制了软件系统或软件系统 构件的设计方案的范围;质量属性规约了软件产品所具有的一个性质必须达到其质量方面 一个所期望的水平。需求规约: 是一个软件项 / 产品/系统所有需求陈述的正式文档,它表达了一个软件产品 / 系统的概念模型。2、简答题简述需求与需求规约的基本性质需求具有如下5个基本性质:必要的,该需求是用户所要求的;无歧义的,该需求只 能用一种方式解释;可测的,该需求是可进行测试的;可跟踪的,该需求可从一个开 发阶段跟踪到另一个阶段;可测
4、量的该需求是可测量的。需求规约满足以下4个基本性质:重要性和稳定性程度:按需求的重要性和稳定性,对 需求进行分级;可修改的:在不过多地影响其他需求的前提下,可以容易地修改一个单 一需求;完整的:没有被遗漏的需求;一致的:不存在互斥的需求。简述软件需求的分类 软件需求可以分为两大类:一类是功能需求,一类是非功能需求,而非功能需求又可分为 性能需求、外部接口需求、设计约束和质量属性需求。有哪几种常用的初始需求发现技术 初始需求发现技术常包括以下几个:1自悟交谈观察小组会提炼简述需求规约的 3 种基本形式非形式化的需求规约:即以一种自然语言来表达需求规约,如同使用一种自然语言写了 一篇文章;半形式化
5、的需求规约:即以半形式化符号体系来表达需求规约;形式化的 需求规约:即以一种基于良构数学概念的符号体系来编制需求规约,一般往往伴有解释性 注释的支持。简述软件需求规约的内容和作用需求规约是一个软件项 / 产品/ 系统所有需求陈述的正式文档,它表达了一个软件产品 /系 统的概念模型。需求规约的作用:需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产 品功能及其环境的体现;对于项目的其余大多数工作,需求规约是一个管理控制点; 对于产品/系统的设计,需求规约是一个正式的、受控的起始点;需求规约是创建产品 验收测试计划和用户指南的基础。简述需求规约在项目开发中的基本作用需求规约是软件开发组织
6、和用户之间一份事实上的技术合同书,是产品功能及其环境的 体现。对于项目的其余大多数工作,需求规约是一个管理控制点。对于产品 /系统的设计,需求规约是一个正式的、受控的起始点。需求规约是创建产品验收测试计划和用 户指南的基础,即基于需求规约一般还会产生另外两个文档初始测试计划和用户系统 操作描述。简述需求规约和项目需求的不同 需求规约是软件开发组织和用户之间一份事实上的技术合同书, 即关注产品需求, 回答“交 付给客户的产品 /系统是什么”;而项目需求是客户和开发者之间有关技术合同 -产品/系统 需求的理解,应记录在工作陈述中或其他某一项目文档中,即关注项目工作与管理,回答 “开发组要做的是什么
7、”。第三章 结构化方法1、 解释以下术语:需求分析: 分析是针对一个问题,系统化地使用信息对该问题的一个估算。就软件需求分 析而言,其目标是给出“系统必须做什么”的一个估算,即需求规格说明以一种系统 化的形式,准确地表达用户的需求,其中应不存在二义性和不一致性等问题。软件设计: 是在需求分析的基础上,定义满足需求所需要的结构,即针对给定的问题,给 出该问题的软件解决方案,确定“做什么”的问题。数据流图: 是一种描述数据变换的图形化工具, 其中包含的元素可以是数据流、 数据存储、 加工、数据源和数据潭。交换型数据流图: 具有较明显的输入部分和变换部分之间的界面、变换部分和输出部分之 间界面的数据
8、流图。事务型数据流图:数据到达一个加工T,该加工T根据输入数据的值,在其后的若干动作 序列中选出一个来执行的数据流图。模块: 执行一个特殊任务的一个过程以及相关的数据结构。2、 简答题何谓模块耦合?简述模块耦合的类型。 模块耦合是指不同模块之间相互依赖程度的度量。按从强到弱的顺序给出几种常见的模块 间耦合类型:内容耦合:当一个模块直接修改或操作另一个模块的数据,或一个模块不 通过正常入口转入到另一个模块的耦合;公共耦合:两个或两个以上的模块共同引用一 个全局数据项的耦合; 控制耦合: 是一个模块通过接口向另一个模块传递一个控制信号, 接收信号的模块根据信号值进行适当的动作的耦合;标记耦合:若一
9、个模块 A通过接口向两个模块B和C传递一个公共参数,那么称模块 B和C之间存在一个标记耦合;数据 耦合:模块之间通过参数来传递数据的耦合。何谓模块内聚?简述模块内聚的类型。 模块内聚是指一个模块内部各成分之间相互关联程度的度量。按从低到高的常见内聚类 型:偶然内聚:一个模块的各成分之间基本不存在任何关系的内聚;逻辑内聚:几个 逻辑上相关的功能被放在同一模块中的内聚;时间内聚:一个模块完成的功能必须在同 一时间内执行,但这些功能只是因为时间因素关联在一起的内聚;过程内聚:一个模块 内部的处理成分是相关的,而且这些处理必须以特定的次序执行的内聚;通信内聚:一 个模块的所有成分都操作同一数据集或生成
10、同一个数据集的内聚;顺序内聚:一个模块 的各个成分和同一功能密切相关,而且一个成分的输出作为另一个成分的输入的内聚; 功能内聚:模块的所有成分对于完成单一的功能都是基本的内聚。 何谓模块的控制域和模块的作用域? 模块的控制域是指这个模块本身以及所有直接或间接从属于它的模块的集合。模块的作用 域是指受该模块内一个判定所影响的所有模块的集合。为了表达系统功能模型, 结构化分析方法给出了哪些基本概念?它们是如何表示的?其基 本作用是什么?使用中应注意哪些问题?数据流: 是数据的流动。数据流是一类术语, 用于表达在分析中所要使用的、 用于表达“客 体”的信息。在使用中一般要给出标识,该标识是一个名词或
11、名词短语,并且往往直接使 用实际问题空间中的概念。加工:是数据的变换单元,即它接受输入的数据,对其进行处理并产生输出。加工也是一 类术语,用于表达在分析中所使用的、用于表达“处理”的信息。在使用中,一般也给出 标识,该标识一般 采用动宾结构,并且往往直接使用实际问题空间中的概念,以便表达 该加工的一定语义。以结构化分析方法建立的系统功能模型由哪些部分组成?每一部分的基本作用是什么? 由“数据流”、“加工”、“数据存储”、“数据源”、和“数据潭”等术语组成 解释结构符“ +”、“| ”、“ ”的含义,并举例说明。“+”:顺序;例如:“学生成绩”是由“姓名” “性别”“科目”和“成绩”构成的,记为
12、 学生成绩 =姓名+性别+学号+科目+成绩;“|”:选择;例如:“性别”是“男”或是“女” ,记为 性别=男|女;“ ”:重复;例如:“学生成绩表” 是由多个“学生成绩”构成的, 记为 学生成绩表 =学 生成绩。简述结构化方法总体设计的任务及目标。 总体设计阶段的基本任务是把系统的功能需求分配到一个特定的软件体系结构中。 简述结构化方法详细设计的任务及目标。详细设计的目标是讲总体设计阶段所产生的系统高层结构映射为以这些术语所表达的底 层结构,也是系统的最终结构。简述变换设计与事务设计之间的区别。 变换分析设计适用于具有明显变换特征的数据流图,事务分析设计适用于具有明显事务特 征的数据流图。简述
13、启发式规则的基本原理。1改进软件结构,提高模块独立性力求模块规模适中力求深度、宽度、扇出、扇入适 中尽力使模块的作用域在其控制域之内尽力降低模块接口的复杂度力求模块功能 可以预测。举例说明变换设计的步骤。设计准备一一复审并精化系统模型确定输入、变换、输出这三部分之间的边界“第 一级分解”一一系统模块结构图顶层和第一层的设计“第二级分解”一一自顶向下,逐 步求精。举例说明事务设计的步骤。设计准备复审并精化系统模型确定事务处理中心“第一级分解”系统模块 结构图顶层和第一层的设计“第二级分解”一一自顶向下,逐步求精。1、 解释以下术语类及其属性和操作: 类是一组具有相同属性、操作、关系和语义的对象的
14、描述。类的属性 是类的一个命名特性,该特性是有该类的所有对象所共享、用于表达对象状态的数据。类 的操作时对一个类中所有对象要做的事情的抽象。接口: 是操作的一个集合,其中每个操作描述了类、构件或子系统的一个服务。 关联及其链: 关联是类目之间的一种结构关系,是对一组具有相同结构、相同链的描述。 链是对象之间具有特定语义关系的抽象,实现之后的链通常称为对象之间的连接。 泛化:是一般性类目(称为超类或父类)和它的较为特殊性类目(称为子类)之间的一种 关系,有时称为“ is-a-kind-of ”关系。聚合:通过“一个类(类目)是另一类(类目)的一部分”这一性质,对关联集进行分类, 凡满足这一性质的
15、关联,都称为一个聚合。依赖: 是一种使用关系,用于描述一个类目使用另一类目的信息和服务。2、 简要回答以下问题:为了表达客观事物,UML合出了哪些基本术语?类与对象接口协作用况主动类构件制品节点为了表达客观事物之间的关系,UMLL合出了哪些基本术语?这些术语之间是什么关系?关联:结构关系;泛化:继承关系细化:精化关系;依赖:依赖关系。关联、泛 化和细化都是一类特定的依赖。什么是对象的构成与表示? 类是一组具有相同属性、操作、关系和语义的对象的描述,对象是类的一个实例。什么是类图的构成成分? 类图是可视化地表达系统静态结构模型的工具,通常包括类、接口、关联、泛化和依赖关 系等。什么是状态图的构成
16、成分? 状态图是显示一个状态机的图,其中强调了从一个状态到另一状态的控制流。通常一个状 态图中包含状态、转移及其相关的事件和动作、消息等。什么是顺序图的构成成分? 顺序图是一种交互图,即由一组对象以及按时序组织的对象之间的关系组成,其中还包含 这些对象之间所发送的消息。顺序图通常包含参与交互的对象、基本的交互方式(同步和 异步)以及消息等。在什么情况下需要建立状态图? 状态图用于创建有系统(或系统成分)的行为生存周期模型,表达有关系统(系统成分)的一种状态结构,给出有关系统(系统成分)在生存期间有哪些阶段、每一个阶段可从事 的活动以及对外所呈现的特性等方面的信息。在一个类的描述中,同时引入“操
17、作”和“方法”的目的是什么? 表达模型包之间的关系。为什么使用包?RUP为了控制信息组织的复杂性,UML提供了组织信息的一种通用机制一一包,支持形成一些 可管理的部分。第五章 面向对象方法1、简答题RUP的定义及主要特点。RUP是基于UML的一种过程框架,为软件开发,即为进行不同抽象层之间“映射”安排其 开发活动的次序,指定任务和需求开发的制品,提供了指导;并未对项目中的制品和活动 进行监控与度量,提供了相应的准则。 RUP的突出特点是,它是一种以用况为驱动的、以 体系结构为中心的迭代开发、增量式开发。演化模型与“ RUP增量、迭代开发”之间的关系。4 个阶段,RUP迭代、增量式开发是演化模型
18、的一个变体,即规定了“大的”迭代数目 并规定了每次迭代的目标。初始阶段的基本目标是:获得与特定用况和平台无关的系统体系结构轮廓,以此建立产品 功能范围;编制初始的业务实例,从业务角度指出该项目的价值,减少项目主要的错误风 险。精华阶段的基本目标是:通过捕获并描述系统的大部分需求,建立系统体系结构基线的第 一个版本,主要包括用况模型和分析模型,减少次要的错误风险;到该阶段未,就能够估 算成本、进度,并能详细地规划构造阶段。构造阶段的基本目标是:通过演化,形成最终的系统体系结构基线,开发完整的系统,确 保产品可以开始向客户交付,即具有初始操作能力。移交阶段的基本目标是:确保有一个实在的产品发布给用
19、户群。期间培训用户如何使用该 软件。RUP和UML之间的关系。RUP和UML是一对“姐妹”,它们构成了一种特定的软件开发法学。其中, UML作为一种可视化建模语言, 给出了表达事物和事物之间关系的基本术语, 给出了多种模型的表达工具; 而RUPP用这些术语定义了需求获取层、系统分析层、设计层、实现层,并给出了实现各 层模型之间映射的基本活动以及相关的指导。什么是特征?举例说明如何描述它。 特征是一个新的项及其简要描述,例如:“按不同科目计算平均成绩” :“计算平均成绩:按所学的不同科目计算每一个学生的期末 考试平均成绩,给出各分数段的人数分布情况。 ”需求获取层及相关概念。需求获取层目标:使用
20、UML中的用况、参与者以及依赖等术语来抽象客观实际问题,形成 系统的需求获取模型;基本术语:用况、参与者、用于表达用况参与者之间关系的关联、 用于表达用况之间的包含和扩展、用于表达参与者之间关系的泛化,术语确定了系统用况 模型的各种形态。需求获取模型的基本组成。使用UML中的用况、参与者以及依赖等术语来抽象客观实际问题,形成系统的需求获取模 型。建造一个系统需求获取模型的活动和任务,以及各活动的输入和输出。发现描述参与者和用况:输入:业务模型或领域模型,补充需求,特征表;输出:用况 模型概述,术语表。赋予用况优先级:输入:用况模型 概述,补充需求,术语表; 输出:体系结构描述用况模型视角。精华
21、用况:输入:用况模型概述,补充需求, 术语表;输出:用况精化。构造人机接口原型:输入:用况精华,用况模型概述, 补充需求,术语表;输出:人机接口原理。用况模型结构化:输入:用况 精华,用况模型概述 ,补充需求,术语表;输出:用况模型 精化。 如何描述系统的参与者和用况? 描述参与者:首先,对发现的每一系统参与者都要进行命名;其次,对参与者进行描述, 主要给出它的角色以及它对环境的要求。描述用况:当确定了系统的一个用况时,就应对其进行描述。该描述一般应首先给出该用 况的名字;然后给出该用况的概要说明。需求分析层及相关概念。 在系统用况模型的基础上,创建系统分析模型以及在该分析模型视角下的体系结构
22、描述, 所创建系统分析模型是系统的一种概念模型,解决系统用况模型中存在的二义性和不一致 性问题,并以一种系统化的形式准确地表达用户的需求。需求分析模型的基本组成。 分析类:是类的一种衍型,很少有操作和特征标记,而用责任来定义其行为,并且其属性 和关系也是概念性的,分为:边界类、实体类、控制类。用况细化:是一个协作。针对一个用况,其行为可用多个分析类之间的相互作用来细化, 并记为用况细化 分析。分析包:是一种控制信息组织复杂性的机制,提供了分析制品的一种组织手段,形成了一 些可管理的部分。建造一个系统需求分析模型的活动和任务,以及各活动的输入和输出。体系结构分析:输入:用况模型、补充需求、业务模
23、型或领域模型、体系结构描述 用况模型;输出:分析包概述、分析类概述、体系结构描述分析。细化用况:输 入:用况模型、补充需求、业务模型或领域模型、体系结构描述 分析;输出:用况细化 分析、分析类概述。对类分析:输入:用况细化分析、分析类概述;输出:分 析类完成。对包进行分析:输入:系统体系结构描述分析、分析包概述;输出: 分析类完成。需求分析模型对以后开发工作的影响。1对设计中子系统的影响。分析包一般将影响设计子系统的结构2对设计类的影响。分析包可以作为类设计时的规格说明。3对用况细化 设计的影响。用况细分 分析对用况细化设计有两方面影响,一个是它 们有助于为用况创建更精确的规格说明,另一个是当
24、对用况进行设计时,用况细化 分析 可作为其输入。需求获取模型与需求分析模型之间的比较。步需语言描述不同:客户语言与开发语言;视图:系统外与系统内;结构:使用用况以 结构化,外出外部视角系统结构与使用涎型类结构化,给出内部视角系统结构;作用: 标识“系统应该做什么,不应该做什么”与可以做出开发者理解系统如何勾画、如何设计 和如何实现基础;问题:可能存在冗余、不一致和冲突等问题与解决了上述问题;捕 获系统功能,包含体系结构方面具有意义的功能与给出细化系统功能,包括在体系结构方 面具有意义的功能;定义一些进一步需要在分析模型中予以分析与给出每一个用况细 化。设计层及相关概念。设计目标:定义满足系统/
25、产品分析模型所规约需求的软件结构;基本术语:设计类、用 况细化设计、设计子系统和接口、以及用于表达子系统之间关系依赖、用于表达设计类 之间关系的关联等,这些术语确定了系统设计模型的各种形态。设计模型的基本组成。设计子系统、设计类、用况细化设计、接口、以及用于表达子系统之间关系依赖、用于 表达设计类之间关系的关联等,这些术语确定了系统设计模型的各种形态。建造一个系统设计模型的活动和任务,以及各活动的输入和输出。体系结构设计:输入:用况模型、补充需求、分析模型、体系结构描述 分析模型角度; 输出:子系统概述、接口 概述、设计类概述、部署模型概述、体系结构描述设 计。设计用况:输入:用况模型、补充需
26、求、分析模型、部署模型;输出:用况 设计-实现、设计类概述、子系统概述、接口 概述;对类设计:输入:用况设计-实 现、设计类概述、接口 概述、分析类完成;输出:设计类完成设计子系统: 体系结构描述设计、子系统概述、接口 概述;输出:子系统完成、接口 完成。 需求分析模型与设计模型之间的比较。分析模型设计模型概念模型,是对系统的抽象,而不涉及实现 细节软件模型,是对系统的抽象,而不涉及实现 细节可应用于不同的设计特定于一个实现使用了 3个衍型类:控制类、实体类和边界 类使用了多个衍型类,依赖于实现语言几乎不是形式化的是比较形式化的开发的费用少(相对于设计是1: 5)开发的费用高(相对于设计是 5
27、: 1)结构层次少结构层次多动态的,但很少关注定序方面动态的,但更多关注定序方面概括地给出了系统设计,包括系统的体系结 构表明了系统设计,包括设计视角下的系统体 系结构整个软件生产周期中不能予以修改、增加等整个软件生存周期中应该予以维护为构建系统包括创建设计模型,定义一个结 构,是一个基本输入构建系统时,尽可能保留分析模型所定义的 结构第六章软件测试1基本概念软件测试:按照特定规程发现软件错误的过程。在 IEEE提出的软件工程标准术语中,对 软件测试的定义是:使用人工或自动手段,运行或测定某个系统的过程,其目的是检验它 是否满足规定的需求,或清除了解预期结果与实际结果之间的差异。测试用例:为了
28、发现程序中的故障而专门设计的一组数据或脚本。测试覆盖率:定量描述一个或一组测试的效率。2、简答题软件测试与调试之间的区别。测试从一个侧面证明程序员的“失败”。调试是为了证明程序员的正确。测试以已知 条件开始,使用预先定义的程序且有预知的结果,不可预见的仅是程序是否通过测试。调 试一般是以不可知的内部条件开始,除统计性调试外,结构是不可预见的。测试是有计 划的,并要进行测试设计。调试是不受时间约束的。测试室一个发现错误、改正错误、 重新测试的过程。调试是一个推理过程。测试的执行是有规程的。调试的执行往往要求 程序员进行必要的推理。测试经常是由独立的测试组在不了解软件设计的条件下完成的。调试必须由
29、了解详细设计的程序员完成。大多数测试的执行和设计可由工具支持。 调试时,程序员能利用的工具主要是调试器。简述语句覆盖、分支覆盖、条件组合覆盖、路径覆盖的含义及它们之间的关系。 路径覆盖:执行所有可能穿过程序控制流程的路径。语句覆盖:至少执行程序中所有语句一次。 分支覆盖:至少将程序中的每一个分支执行一次。 条件组合覆盖:使每个判定中的所有可能的条件取值组合至少执行一次。关系:语句覆盖W分支覆盖W条件组合覆盖W路径覆盖 简述单元测试、集成测试、有效性测试的含义及它们之间的区别。单元测试:主要检验软件设计的最小单元模块。该测试以详细设计文档为指导,测试 模块内的重要控制路径。集成测试:是软件组装的
30、一个系统化技术,其目标是发现与接口有关的错误,将经过单元 测试的模块构成一个满足设计要求的软件结构。有效性测试:发现软件实现的功能与需求规格说明书不一致的错误。 区别:单元测试集中于单个模块的功能和结构检验;集成测试集中于模块组合的功能和软 件结构检验;有效性测试验证软件需求的可追溯性。简述路径测试技术、事务流测试技术的主要依据。 路径测试技术依据的是程序的逻辑结构;事务流测试技术依据软件行为的描述。 针对程序流程图中出现的各种循环,如何选取测试路径?1单循环:1最小循环次数为0,最大次数为N,且无“跳跃”值。2非零最小循环次 数,且无“跳跃”值。 3具有跳跃值的单循环。2嵌套循环: 1从最深
31、层的循环开始,设定所有外层循环取它的最小值。 2测试最小值 减 1、最小值、最小值加 1、典型值、最大值减 1、最大值、最大值加 1。与此同时,测试“跳跃值”边界。 3设计内循环在典型值处,按 2测试外层循环,直到覆盖所有循环。3级联循环:如果级联循环中每个循环的控制变量有关,则可视为嵌套循环。如果级联循 环中每个循环的控制变量无关,则可视化单循环。简述程序流程图与事务流程图之间的主要区别。基本模型元素所表达的语义不同一个事务不等同于路径测试中一条路径,可能在中间 某处就完成了某一用户工作,终结了一个事务事务流程图中的分支和节点可能是一个复 杂的过程。简述白盒测试技术的要点。白盒测试技术依据程序的逻辑结构,以控制流程图作为被测对象建模工具,其中涉及过程 块、分支、节点、链以及路径,并针对测试民,给出了 4 种覆盖策略:语名覆盖、分支覆 盖、条件组合覆盖和路径覆盖,它们之间具有偏序关系,并且可根据项目需求给出其他覆 盖策略。该技术的基本要
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1