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