软件工程课程复习资料doc.docx
《软件工程课程复习资料doc.docx》由会员分享,可在线阅读,更多相关《软件工程课程复习资料doc.docx(45页珍藏版)》请在冰豆网上搜索。
![软件工程课程复习资料doc.docx](https://file1.bdocx.com/fileroot1/2023-2/3/b5a3a05d-c722-488f-8d54-3789d6a6c772/b5a3a05d-c722-488f-8d54-3789d6a6c7721.gif)
软件工程课程复习资料doc
《需求分析习题》2
1软件需求分功能需求、非功能需求、领域需求的定义。
1)功能需求:
定义了软件必须实现的功能,包括对系统应该提供的服务、如何对输入做出反映以及系统在特定条件下的行为的描述。
2)非功能需求:
非功能需求是对功能需求的补充,是对系统提供的服务或功能给出的约束。
包括时间约束、开发过程的约束、标准等、长应用于“整个系统”。
3)领域需求:
来至系统的应用领域的需求,反映了该领域的特点。
他们也可能是功能需求或非功能需求。
2用户需求和系统需求定义。
1)用户需求:
是用自然语言加图表的形式给出的关于系统需要提供哪些服务以及系统操作受到哪些约束的声明。
2)系统需求:
是详细地给出系统将要提供的服务以及系统所要受到的约束。
3用户需求描述什么需求,容易产生什么问题?
如何解决?
1)用户需求是从用户的角度来描述系统功能和非功能需求。
2)容易产生的问题
(1)描述不够清楚
使用自然语言描述,很难做到既精确无二义性,又不至于描述晦涩难懂。
(2)需求混乱
功能需求、非功能需求、系统目标和设计信息无法清晰地区分。
(3)需求混合
多个不同的需求可能被搅在了一起,以一个需求的形式给出。
3)解决方案
(1)设计一个标准的格式,保证所有的需求定义都按照改格式书写。
(2)使用一致的语言。
(3)对文本加亮(使用黑体或斜体)来突出显示关键的需求。
(4)尽量避免使用计算机专业术语。
4需求描述所使用的符号有哪些?
他们确定的含义是什么?
自然语言,结构化语言描述,PDL描述(设计描述语言),形式化描述,图形化描述(usecase)
书上P79页,表6-2所示
5软件需求分析的目的、任务?
(1)建立系统模型。
(2)深入描述功能确定的系统的接口特性和设计约束。
(3)写出规格说明书。
(4)进行复审和确认。
6软件需求分析包含哪几个阶段?
包括可行性的研究、需求导出和分析、需求的描述、需求有效性验证及需求管理。
7结构化分析方法中,数据字典的作用是什么?
(1)严格的数据定义可以减少分析人员的和用户之间的通信,消除误解。
(2)为以后进行系统设计及维护提供重要的依据。
8试述结构化分析过程和面向对象分析过程,并比较
(1)结构化分析过程实质上就是创建数据模型、功能模型和行为模型,其中数据建模的工具是实体关系图,功能建模的工具是数据流图,行为建模的工具是状态转换图,另外使用数据字典定义系统的所有数据项。
(2)面向对象分析过程是了解并定义上下文和系统的使用模型、设计系统体系结构、识别出系统中的主要对象、开发设计模型及描述对象接口。
(3)二者之间的比较
结构化方法首先关心的是功能,强调以模块(即过程)为中心,采用模块化、自顶向下、逐步求精设计过程,系统是实现模块功能的函数和过程的集合,结构清晰、可读性好,的确是提高软件开发质量的一种有效手段。
结构化设计从系统的功能入手,按照工程标准和严格规范将系统分解为若干功能模块。
然而,由于用户的需求和软、硬件技术的不断发展变化,作为系统基本成分的功能模块很容易受到影响,局部修改甚至会引起系统的根本性变化。
开发过程前期入手快而后期频繁改动的现象比较常见。
面向对象方法则从所处理的数据入手,以数据为中心来描述系统,数据相对于功能而言,具有更强的稳定性,这样设计出的系统模型往往能较好地映射问题域模型。
对象、类,、继承性、多态性、动态定连概念和设施的引入使用,显然令面向对象的设计方法具有一定的优势,能为生产可重用的软件构件和解决软件的复杂性问题提供一条有效的途径。
面向对象的设计过程就是指通过建立一些类以及它们之间的关系来解决实际问题,这就需要对问题域中的对象作整体分析,类和类间关系的设计要求较高,否则设计出的并不是真正意义上的面向对象的软件系统,而只是一些类的堆砌而已,不能体现出面向对象设计方法的优势之处。
9模块的独立性如何度量?
根据模块的外部特征和内部特征,提出了两个定性的度量标准--耦合性和内聚性。
耦合是模块之间相对独立性的量度,而内聚则是模块功能相对强度的量度。
如果说,一个模块在不需要另一个模块的情况下,能够完整地执行其功能,我们就称这两个模块是完全独立的。
模块独立性的概念是模块化、抽象和信息隐藏概念的直接产物,模块独立性是通过开发具有单一功能和与其他模块没有过多交互作用的模块来达到的。
10什么是耦合性和内聚性,都有哪些种?
1.耦合性
也称快间联系,指软件系统结构中各模块间相互联系紧密程度的一种度量。
模块之间系越紧密,其耦合性就越强,模块的独立性则越差。
模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。
模块的耦合性有以下几种类型,分为:
(1)无直接耦合
指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。
因此模块间耦合性最弱,模块独立性最高。
(2)数据耦合
指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。
(3)标记耦合
指两个模块传递的是数据结构,如:
高级语言中的数组名、记录名、文件名等这些名字即为标记,其实传递的是这个数据结构的地址。
(4)控制耦合
指一个模块调用另一个模块时,传递的是控制变量(如开关、标志等),被调模块通过该控制变量的值有选择地执行块内某些功能。
(5)公共耦合
指通过一个公共数据环境相互作用的那些模块间的耦合。
公共数据环境可以是全程变量或数据结构、共享的通信区、内存的公共覆盖区及任何存储介质上的文件、物理设备等。
(6)内容耦合
这是最高程度的耦合,也是最差的耦合。
当一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部,这种模块之间的耦合为内容耦合,这种情况往往出现在汇编程序设计中。
2内聚性
又称块内联系,指模块的功能强度的度量。
若一个模块内各元素(语句之间、程序段之间)联系的越紧密,则它的内聚性就越高,内聚性有以下几种类型:
(1)偶然内聚
指一个模块内的各处理元素之间没有任何联系。
(2)逻辑内聚
指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
(3)时间内聚
把需要同时执行的动作组合在一起形成的模块为时间内聚模块。
(4)通信内聚
指模块内所有处理元素都在同一个数据结构上操作(有时称之为信息内聚),或者指各处理使用相同的输人数据或者产生相同的输出数据。
(5)顺序内聚
指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入。
(6)功能内聚
这是最强的内聚;指模块内所有元素共同完成一个功能,缺一不可。
耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。
11理解场景的作用,掌握利用场景获取需求的方法。
场景描述法是采用把系统交互放到一个真实的生活片段中,这样比采用抽象的形式描述要容易理解,容易导出需求细节。
常用的方法,自然语言和用例。
书中P93页
12理解视点方法,掌握通过视点,导出需求的方法
书中P91页
13用结构化分析方法进行需求分析,需要建立哪些模型?
ERD用于数据建模,DFD用于功能建模,STD用于行为建模。
14如何描述给定系统的数据流图(DFD)、E_R图,DFD中的符号都有哪些?
含义是什么?
1)数据流图
(1)可以表示任何一个系统(人工的、自动的、或混合的)中的数据流程;
(2)每个表示加工的圆圈可能需要进一步分解以求得对问题的全面理解;
(3)着重强调的是数据流程而不是控制流程。
2)E_R图
(1)数据对象
(2)描述对象的属性
(3)描述对象间相互连接的关系
3)DFD中的符号
(1)□:
(方框)表示外部实体,代表数据源和数据池(终点)。
(2)○:
(圆框)表示加工,代表接收输入,经过变换,继而产生输出的处理过程。
(3)→:
(箭头)表示数据流,代表数据的流向和路径。
(4)〓:
(双杠)表示数据存储,代表系统加工的数据所存储的地方。
15数据流图中的加工逻辑说明工具有哪些,如何表示?
1)工具
目前用于写加工规格说明的工具有结构化语言、判定表和判定树。
2)表示
(1)结构化语言:
类型:
加工说明条目
编号:
2.1
名字:
询价
别名:
加工逻辑:
首先根据购书通知逐个进行多方询价
然后比较各种报价
比较其他情况(有无现货,付款方式,是否送
货等)
综合评定供应商,确定订货价格
输入数据:
购书通知
输出数据:
订货价格
触发条件:
每当书库管理员发出购书通知执行
发生频度:
一般每周一次,最多每天一次
(2)判定树和判定表
判定树和判定表适于描述多个逻辑条件的组合描述。
判定树根据判定条件的关系构造,内部节点为判定条件,叶子节点为判定结果。
判定表的基本结构为:
基本条件
条件项
基本动作
动作项
17UML中用于描述系统的静态模型的有哪些图?
描述系统的动态模型的有哪些图。
UML主要提供了九种不同的图,可以分成两大类,一类是描述系统静态结构的图,包括用例图、类图、对象图、组件图、配置图;另一类是反映系统动态特性的图,包括序列图、协作图、状态图和活动图。
18什么是类对象的泛化关系,聚合关系?
举例说明。
1)泛化(Generalization)
泛化是一种一般事物(父类)和特殊事物(子类)之间的关系。
举例:
学生与研究生之间是泛化关系,研究生是一类特殊的学生。
2)聚合(Aggregation)
聚合是一种特殊类型的关联,描述了整体和部分间的结构关系。
举例:
学校和系之间存在聚合关系,系是学校的一个组成部分。
19什么是顺序图、用例图,活动图和状态图?
1)顺序图
用于描述系统内各类和对象之间的动态协作关系以及系统外与系统内的交互情况,即系统执行各种功能时各个角色、类与对象之间相互传递消息的顺序关系。
2)用例图
用例图就是从用户的角度出发对如何使用系统地描述的模型。
3)状态图
状态图描述一个类对象在整个生命周期所可能经历的所有状态变化过程。
20类和对象是什么关系?
1)对象(Object)
对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组
属性和对这组属性进行操作的一组服务组成。
举例:
中国就是一个对象。
2)类(Class)
类是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的
抽象描述,包括属性和服务两个主要部分。
举例:
学生、人、树木等都是类。
3)关系
所谓类(Class)是对一类具有相同特征的对象的描述。
而对象是类的实例(Instance)。
21如何绘制活动图、用例图、状态图、顺序图、类图和对象图。
老师课件上有,书上P169页。
22结构化方法的基本原则?
1)使每个模块执行一个功能(坚持功能性内聚)
2)每个模块用过程语句(或函数方式等)调用其他模块
3)模块间传送的参数作数据用
4)模块间共用的信息(如参数等)尽量少
23什么是信息隐蔽原理,其带来的好处是什么?
1)信息隐蔽原理(信息隐藏是把机密信息隐藏在大量信息中不让对手发觉的一种方法。
)
信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在一个单一的设计模块中,定义每一个模块时尽可能少地显露其内部的处理。
信息隐蔽原则对提高软件的可修改性、可测试性和可移植性都有重要的作用。
模块应该设计得使其所含信息(过程和数据)对于那些不需要这些信息的模块来说不可访问;每个模块只完成一个相对独立的特定功能;模块之间仅交换那些为完成系统功能必须交换的信息,即模块应该独立。
2)带来的好处
(1)它支持模块的并行开发;
(2)减少测试和后期维护的工作量。
因为测试和维护阶段不可避免地要修改设计和代码,模块对大多数数据和过程处理细节的隐藏可以减少错误向外传播。
(3)整个系统扩充功能只需“插入”新模块,原有的多数模块无须改动。
《软件体系架构及界面设计》
1软件体系结构是系统的组成模式。
系统的组成反映的是系统组织所采用的基本策略。
系统组成的类型有哪些?
三种应用广泛的组成类型:
1、共享数据容器类型;
2、共享服务和服务器类型;
3、抽象机或分层类型。
2什么是容器模型?
其特点?
1)优点
(1)共享大量数据的有效方式,不同子系统间无需数据转换;
(2)子系统无需去考虑数据如何被集中管理的;
(3)共享数据模型是以容器模式发布的。
2)缺点
(1)子系统必须与容器数据模型相一致才能共享数据;
(2)数据进化会比较困难而且代价较高;
(3)将容器分布到多台机器上比较困难。
子系统必须要交换信息,通常可以采用一下两种方式:
1、所有共享数据放到一个中央数据库(容器)中,所有子系统都能从中存取数据;
2、每一个子系统维持自己的一个数据库,子系统之间的数据交互通过消息传递来实现。
当系统中存在大量的数据共享时,容器模型是最为常用的数据交换方式。
3客户/服务器模型的组成?
该模型的特点,并举例说明。
客户服务器模型是一个分布式系统模型,数据和加工过程在多个处理器之间分配;
1)模型的主要组成:
(1)一组为其它子系统提供服务的单机服务器;
(2)一组向服务器请求服务的客户机;
(3)连接客户机与服务器的网络。
2)客户-服务器模型的特点
(1)优点
1、分布式数据处理与共享;
2、有效地利用网络,并且可以使用较便宜的硬件设备;
3、可以容易地添加或更新服务器,不会影响系统其它部分。
(2)缺点
1、没有统一的共享数据模型,所以子系统可以以不同的方式组织数据,不利于新增服务器的数据集成;
2、每个服务器需要自己负责数据管理;
3、缺少对于服务器名称和服务状态的集中管理。
4分层模型的特点?
1、这种模型把系统组织成一系列的层次(抽象机),每一层提供一组服务;
2、这种模型支持增量式的开发,不同层次的服务可以单独交付;
3、层与层之间以接口相联系,一个接口发生改变,只有毗邻的层会受到影响;
5按照特定系统的功能需求说明,绘制软件结构图。
2.2.3结构化设计方法
从系统设计的角度出发,软件设计方法可以分为三大类。
第一类是根据系统的数据流进行设计,称为面向数据流的设计或者过程驱动的设计,以结构化设计方法为代表。
第二类是根据系统的数据结构进行设计,称为面向数据结构的设计或者数据驱动的设计,以LCP(程序逻辑构造)方法、Jackson系统开发方法和数据结构化系统开发(DSSD)方法为代表。
第三类设计方法即面向对象的设计。
结构化设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。
该方法实施的要点是:
①建立数据流的类型。
②指明流的边界。
③将数据流图映射到系统结构。
④用“因子化”方法定义控制的层次结构。
⑤用设计测量和一些启发式规则对结构进行细化。
数据流可以分成变换型数据流和事务性数据流,相应得到的系统结构也分为变换型系统结构和事务型系统结构。
在系统结构图(SC)中的模块
在系统结构图中不能再分解的底层模块为原子模块。
如果一个软件系统的全部实际加工(数据计算或处理)都由底层的原子模块来完成,而其它所有非原子模块仅仅执行控制或协调功能,这样的系统就是完全因子分解的系统。
如果系统结构图是完全因子分解的,就是最好的系统。
一般地,在系统结构图中有4种类型的模块:
v传入模块:
从下属模块取得数据,经过某些处理,再将其传送给上级模块。
v传出模块:
从上级模块获得数据,进行某些处理,再将其传送给下属模块。
v变换模块:
即加工模块。
它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。
大多数计算模块(原子模块)属于这一类。
v协调模块:
对所有下属模块进行协调和管理的模块。
在系统的输入/输出部分或数据加工部分可以找到这样的模块。
在一个好的系统结构图中,协调模块应在较高层出现。
2.2.3.1变换型数据流与变换型系统结构
变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据。
变换数据是数据处理过程的核心工作,而取得数据只不过是为它做准备,给出数据则是对变换后的数据进行后处理工作。
典型的变换型数据流图具有如下结构特点:
加工1取得系统物理输入数据A,加工2和3对输入数据进行简单处理,得到系统逻辑输入C。
加工4作为系统核心处理构件,进行C-〉D数据变换,获得系统逻辑输出D。
加工5对系统逻辑输出数据进行格式转换等,加工6进行系统数据物理输出。
系统的结构图由输入、中心变换和输出等三部分组成。
系统结构图
设计时,需要区分输入流、输出流和中心变换部分,即标明流的边界。
(不同的设计人员可能选择不同的流边界,这将导致不同的系统结构图。
)
首先设计主模块,用程序名字为它命名,将它画在与中心变换相对应的位置上。
做为系统的顶层,它调用下层模块,完成系统所要做的各项工作。
在系统结构的第一层,为每一个逻辑输入设计一个输入模块,它为主模块提供数据;为每一个逻辑输出设计一个输出模块,它将主模块提供的数据输出;为中心变换设计一个变换模块,它将逻辑输入转换成逻辑输出。
第一层模块与主模块之间传送的数据应与数据流图相对应。
然后自顶向下,逐层细化,设计中、下层模块。
这一步工作是为每一个输入模块、输出模块、变换模块设计它们的从属模块。
·输入模块要向调用它的上级模块提供数据,因而它必须有两个下属模块:
一个是接收数据;另一个是把这些数据变换成它的上级模块所需的数据。
·输出模块是从调用它的上级模块接收数据用以输出,因而也应当有两个下属模块:
一个是将上级模块提供的数据变换成输出的形式;另一个是将它们输出。
·中心变换模块的下层模块没有通用的设计方法,一般应参照数据流图的中心变换部分和功能分解的原则来考虑如何对中心变换模块进行分解。
事务型数据处理问题的工作机理是接受一项事务,根据事务处理的特点和性质,从若干个操作序列中选择分派一个适当的,然后给出结果。
我们把完成选择分派任务的部分叫做事务处理中心,或分派部件。
事务型分析的映射方式
事务流应映射为包含一个输入分支和一个分类事务处理分支的程序结构。
输入分支结构的开发与变换流的方法类似。
分类事务处理分支结构包含一个调度模块,它调度和控制下属的操作模块。
事务型系统结构图在数据处理中经常遇到,但是更多的是变换型与事务型系统结构图的结合。
例如,事务型系统结构中的某个分支本身又具有变换型的特点
6用户界面设计的原则?
1、UI设计必须考虑系统使用者的需求、经验和能力。
2、设计者必须认识到人在体力和脑力方面的局限(如短期记忆),超过了这些限制,用户就可能会出错。
3、设计者还必须认识到不同的用户可能会有不同的身体局限,也会有不同的操作偏好。
7用户交互方式的5种基本类型及其优缺点?
书中P224页
交互类型
主要优点
主要缺点
应用实例
直接操纵
快速和直观的交互
容易学习
较难实现
只适合于任务和对象有视觉隐喻的情况
视频游戏
CAD系统
菜单选择
避免用户错误
只需很少的键盘输入
对有经验的用户操作要慢
但菜单选择很多时会变得很复杂
绝大多数一般用途的系统
表格填写
简单的数据入口容易学习
占据很多屏幕空间
库存控制
个人贷款处理
命令语言
强大灵活
较难学习
差的错误管理
操作系统
图书管理信息检索系统
自然语言
适合偶然用户
容易扩展
需要键入的太多
自然语言理解系统不可靠
时刻表系统
WWW信息检索系统
《软件测试与维护》
1什么是静态测试方法和动态测试方法?
1)静态测试方法
静态方法是指不运行被测程序本身,仅通过分析或检查源程序的文法、结构、过程、接口等来检查程序的正确性。
静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。
静态测试结果可用于进一步的查错,并为测试用例选取提供指导。
基本特征是在对软件进行分析、检查和审阅,不实际运行被测试的软件
2)动态测试方法
动态测试是指通过运行软件来检验软件的动态行为和运行结果的正确性。
2什么是黑盒测试?
白盒测试?
它们基本的测试技术包括哪些?
1)黑盒测试
黑盒测试是从用户观点,按规格说明书要求的输入数据与输出数据的对应关系设计测试用例,是根据程序外部特征进行测试。
2)白盒测试
白盒测试是根据程序内部逻辑结构进行测试。
3)二者比较
黑盒测试
白盒测试
优
点
①适用于各阶段测试
②从产品功能角度测试
③容易入手生成测试数据
①可构成测试数据使特定程序部分得到测试
②有一定的充分性度量手段
③可或较多工具支持
缺
点
①某些代码得不到测试
②如果规格说明有误,则无法发现
③不易进行充分性测试
①不易生成测试数据(通常)
②无法对未实现规格说明的部分进行测试
③工作量大,通常只用于单元测试,有应用局限
性
质
是一种确认技术,回答“我们在构造一个正确的系统吗?
”
是一种验证技术,回答“我们在正确地构造一个系
统吗?
”
4)测试技术
(1)白盒测试
1、逻辑覆盖法
(1)语句覆盖
(2)判定覆盖
(3)条件覆盖
(4)判定/条件覆盖
(5)条件组合覆盖
(6)路径覆盖
(7)点覆盖
(8)边覆盖
2、控制结构测试
(1)基本路径测试
(2)条件测试
(3)循环测试
(4)串接循环
(2)黑盒测试
1、等价类划分法(等价分配)
把所有可能的输入数据(有效的和无效的)划分成若干个等价的子集(称为等价类别或等价区间),使得每个子集中的一个典型值在测试中的作用与这一子集中所有其它值的作用相同.
2、边界值分析法
3、二者区别
(1)边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。
(2)边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况
3根据程序流程图,绘出程序流图,并设计基于路径/分支判断覆盖/语句覆盖等的测试用例。
4掌握等价类划分和边界值分析方法,设计测试用例。
5.4.1等价类划分法(等价分配)
把所有可能的输入数据(有效的和无效的)划分成若干个等价的子集(称为等价类别或等价区间),使得每个子集中的一个典型值在测试中的作用与这一子集中所有其它值的作用相同.
可从每个子集中选取一组数据来测试程序等价类别或等价区间是指测试相同目标或者暴露相同软件缺陷的一组测试用例
例:
某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。
系统日期规定由年、月的6位数字字符组成,前四位代表年,后两位代表月。
如何用等价类划分法设计测试用例,来测试程序的日期检查功能?
如何划分等价类?
•有效等价类(合理等价类)
•无效等价类(不合理等价类)
划分等价类的标准:
•覆盖
•不相交
•代表性
划分等价类