单元知识Word文件下载.docx
《单元知识Word文件下载.docx》由会员分享,可在线阅读,更多相关《单元知识Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
此方法首先要获得估计信息域的估计计数值、加权因子、FP计数值以及总计计数值。
3.软件工作量估计有:
参数方程法和COCOMO模型两种方法
4.基本COCOMO模型有:
有组织方式,半独立方式,嵌入方式
5.如何用插值法估算项目进度?
假如(x0,y0)和(x1,y1)是平面坐标系的两点,令(x,y)位于(x0,y0)和(x1,y1)的连线上。
当x0≤x≤x1时,
6、书上P28
第三章可行性研究
1.可行性研究的任务:
技术可行性,经济可行性,操作可行性,调度可行性
2.可行性研究的步骤
(1)确定新系统规模和目标
(2)研究现行系统(3)导出新系统的物理模型
(4)导出与选择最优方案(5)进行成本/效益分析(6)制订开发计划
3.开发成本
(1)硬件成本
(2)系统软件成本(3)软件开发成本(4)施工成本(5)用户培训费用6)不可预见费用。
4.运营成本
(1)人员费用
(2)网络运营费用(3)维修费用(4)耗材费
5.计算机系统的效益分为一次性效益和运营效益。
第四章需求分析和规范
1.确定系统时对系统的性能要求
(1)系统的吞吐量。
(2)响应时间。
(3)系统的可靠性和可恢复性。
(4)系统的安全性。
2.新系统的功能要求与边界确定
●应该明确规定目标系统必须完成的全部功能;
●应该清楚无二地规定新系统的边界。
3.系统的环境要求
1)硬件环境。
2)软件环境。
3)数据库系统。
4)通讯方式。
4.分析现行系统包括:
分析现行系统的功能需求,分析现行系统的行为需求,分析现行系统的数据需求,分析现行系统的查询需求。
5.分析现行系统的数据需求主要分析输入数据、中间数据和输出数据并用数据字典加以记录。
6.如何导出新系统的模型?
(图示)
7.开发原型系统的理由?
1)由于人认识能力的局限,不能预先指定所有要求;
2)在用户和系统分析员之间存在固有的通信阻碍;
3)用户需要一个“活的”系统模型,以便获得实践经验;
4)在开发过程中重复和反复是必要的和不可避免的;
5)目前有快速建立原型系统的工具可供选用。
8、开发原型系统的要求?
1)原型能表示用户所需要的功能;
2)原型能表现人机接口;
3)原型应容易修改;
9、原型系统的作用
1)作为需求分析的手段,加深用户对需求的理解;
2)可以作为用户需求规范的一部分;
3)可以作为用户产品的初始版本。
10.需求分析基本过程(图示)
11.需求分析的几个阶段:
问题分析问题评估和方案综合建模规约复审
12、需求获取常用的方法与面临的困难
(1)常用的方法
建立分析小组:
领域专家:
主角;
系统分析员:
导演
客户访谈
问题分析与确认
(2)面临的困难
•客户说不清楚需求
•需求易变性
•问题的复杂性和对问题空间理解的不完备性与不一致性
13.需求规范中表达式要求
1)表达式与内容应该与问题相关。
2)包含在规范中的信息是可嵌套的。
3)图和符号的使用应该是相一致的。
4)表达式应支持内容的修改。
14.需求规范的内容
1)项目背景:
包括拟开发产品及用户单位名称、有关参考文
件等。
2)产品概述:
描述目标产品的主要指标、特征和应用目的。
3)外部接口:
规定本系统和其它系统的接口情况。
4)功能要求:
规定新系统的功能及其边界。
5)性能要求:
包括吞吐量、响应时间、可靠性等。
6)逻辑模型:
通过数据流图分层描述现行系统的逻辑模型。
7)验收准则:
规定对最终产品进行验收的准则和方式。
8)产品附录:
包含一些可以补充本规范内容的材料。
15.数据流程图中的符号(P67)
16.数据流程图的种类并举例
总体图:
一个处理+多个外部实体
零级图:
处理+外部实体+存储节点
细节图:
处理+存储节点(例子见图)
17.数据流程图的改进
(1)检查数据流图的正确性:
数据守恒,文件的使用,父图和子图的平衡
(2)提高数据流图的易理解性:
简化加工间的联系,分解的均匀,适当地命名
(3)重新分解
18.数据字典的四个类型条目:
数据流,文件,数据元素,加工
19.数据字典与数据流图之间关系
▪数据流图描述了系统的“分解”;
▪依靠“字典”来说明各个成分的含义;
▪数据流图中所有名字的定义就构成一本字典;
▪数据流图和字典结合在一起构成了“需求说明书”;
▪数据流图中出现的每一个数据流名、每一个文件名和每一个加工名在字典中都应该有一个条目给出这个名字的定义。
20.数据元素,数据流,数据存储和处理定义的图示见书P75
21.判定表见书P76-78
22.判定表的判定表优缺点
优点:
表达逻辑清楚,条件或数据元素在表中只出现一次。
用户难以理解,条件增多时判定复杂难画。
23.判定树见书P78-79
24.判定树的优缺点
形式简单,意义直观,易于掌握和使用。
比较繁锁,同一个条件可能要书写多次,而且选择不
同的分枝条件对最终判定树的简洁程度有较大影响。
25.有限状态机的表示方式:
表格法和图形法(具体和应用实例见书P79-80)
26.Petri网广泛应用于计算机通信网络、计算机集成制造系统、分布式并行处理系统等。
27.Petri网例子见书P80-81
28.代数规范的数学公理要求:
这些公理是相互独立,完备,相容
29.代数规范的优缺点:
定义精确,无二义性,规范简洁。
不易于掌握,要求使用者有一定的数学基础。
30.序列的特性:
(P85)
(1)允许有重复出现的元素,
(2)序列中的元素是有序的,(3)一个空的序列记为< >
第五章总体设计
1.每个合理方案要提供以下几方面资料:
系统流程图,数据字典,成本/效益分析,实现这个系统的进度计划。
2.对于大型系统的设计,通常分为两个阶段:
结构设计和过程设计。
3.结构的划分的形式和各自作用?
水平划分:
为每个程序的主要功能定义模块层次中的分支数量。
垂直划分:
在程序中从顶向下分布控制和工作,即决策模块在层次的顶部,底部是工作模块。
4.模块的性质?
(1)有界性
(2)可插拔性(3)可互换性
5.将一个要设计的软件系统划分成模块的指导原则?
(见书P100)
6.模块的独立性的度量标准:
耦合和内聚。
7.常见的耦合:
(1)非直接耦合
(2)数据耦合(3)标记耦合(4)控制耦合(5)公共耦合(6)内容耦合
8.耦合的设计原则:
尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,避免使用内容耦合。
9.各耦合的强弱顺序10.
.
11.去除模块间控制耦合的方法:
(1)将被调用模块内的判定上移到调用模块中进行
(2)被调用模块分解成若干单一功能模块
12.最不好的耦合方式:
内容耦合内聚性最强的方式:
功能内聚
13.常见的内聚:
(1)偶然内聚
(2)逻辑内聚(3)时间内聚(4)过程内聚(5)通信内聚(6)信息内聚
(7)功能内聚
14.各内聚的强弱顺序:
15.内聚和耦合的关系?
16.模块化设计的准则?
(1).尽力提高模块独立性
(2).选择合适的模块规模
(3).模块的深度、宽度、扇出和扇入应适当
(4).模块的作用范围应该在控制范围之内
(5).降低模块接口的复杂程度
(6).设计单入口单出口的模块,避免“病态连接”
17.总体设计的图形描述工具有:
层次图,HIPO图,结构图
第六章详细设计
1.影响人-机接口设计的因素
一是考虑软件的类型,二是考虑使用软件的用户类型
软件的用户类型一般分为以下三种:
(1)应用领域用户。
(2)知识型用户。
(3)计算机职业用户。
2.非结构程序:
(1)一个单入口单出口的非结构控制块。
(2)“面条碗”程序,是一个有单入口和单出口的适形程序,但它不是结构的。
(3)具有两个出口的循环结构。
3.非结构程序的缺点
难以设计,难以阅读和理解,难以验证其正确性和难以测试的,难以维护,低的生产率
3.结构和非结构的转换方式
(1)布尔标志技术:
这种技术适合于将面向循环结构的程序转换结构程序。
(2)编码复制技术:
这种技术适合于程序中一个语句块有多个入口的情况。
(3)状态变量方法:
可将任何复杂的适形非结构程序变换成功能等价的结构程序。
4.盒式图的基本结构类型
5.N-S图有以下一些特点:
(1)功能域(即某一个特定控制结构的作用域)有明确的规定,并且可以很直观地从N-S图上看出来;
(2)它的控制转移不能任意规定,必须遵守结构化程序设计的要求;
(3)很容易确定局部数据和全局数据的作用域;
(4)很容易表现嵌套关系,也可以表示模块的层次结构。
6.PAD图的基本结构类型P141
7.PDL语言的特点和缺点
(1)PDL虽然不是程序设计语言,但是它与高级程序设计语言非常类似。
(2)用PDL写出的程序,既可以很抽象,又可以很具体。
因此,容易实现自顶向下逐步求精的设计原则。
(3)PDL描述同自然语言很接近,易于理解。
(4)PDL描述可以直接作为注释插在源程序中,成为程序的内部文档。
这对提高程序的可读性是非常有益的。
(5)PDL描述与程序结构相似,因此自动产生程序比较容易。
PDL的缺点是:
不如图形描述形象直观,因此人们常常将PDL描述与一种图形描述结合起来使用。
第七章程序设计
1.程序设计语言的分类:
从应用特点的角度来分:
基础语言,结构化语言,专用语言
从语言内在特点的角度来分:
系统实现语言,静态高级语言,块结构高级语言,
动态高级语言
从描述客观系统的角度来分:
面向过程语言,面向对象语言
2.程序的注释分为两种:
序言性注释和功能性注释。
3.语句构造应遵循的规则
Ø
不要为了节省空间而把多个语句写在同一行;
用空格或可读的符号使语句的内容更加清晰;
尽量避免复杂的条件测试;
尽量避免使用“非”条件的条件语句;
避免过多使用循环嵌套和条件嵌套;
利用括号使逻辑表达式或算术表达式的运算次序清晰 直观;
尽可能使用库函数;
让编译程序作简单的优化。
4.为什么要进行反缺陷程序设计
(1)来自“外界”的输入
(2)来自其他程序的调用。
(3)磁盘上的数据库记录。
(4)来自操作员的问题。
第八章软件测试
1.软件测试的基本原则
(1)尽早地、不断地进行软件测试。
(2)设计测试用例时,要给出测试的预期结果。
(3)开发小组和测试小组分开。
(4)要设计非法输入的测试用例。
(5)在对程序修改之后要进行回归测试。
2.软件测试的内容:
单元测试,集成测试,有效性测试,系统测试
3.白盒测试包括:
语句测试,分支测试,路径测试
4.黑盒测试检查的主要方面有:
程序的功能是否正确或完善;
数据的输入能否正确接收,输出是否正确;
是否能保证外部信息(如数据文件)的完整性等
5.等价类的划分基本原则:
(1)如果输入条件规定了取值范围,则可划分出一个有效的等价类(输入值在此范围内)和两个无效的等价类(输入值小于最小值、输入值大于最大值)。
(2)如果输入条件规定了输入数据的个数,则可相应地划分出一个有效的等价类(输入数据的个数等于给定的个数要求)和两个无效的等价类(输入数据的个数少于给定的个数要求、输入数据的个数多于给定的个数要求)。
(3)如果输入条件规定了输入数据的一组可能的值,而且程序对这组可能的值做相同的处理,则可将这组可能的值划分为一个有效的等价类,而这些值以外的值划分成无效的等价类。
(4)如果输入条件规定了输入数据的一组可能的值,但是程序对不同的输入值做不同的处理,则每个输入值是一个有效的等价类,此外还有一个无效的等价类(所有不允许值的集合)。
(5)如果输入条件规定了输入数据必须遵循的规则,则可以划分一个有效的等价类(符合规则)和若干个无效的等价类(从各种角度违反规则)。
6.单元测试的内容:
模块接口,局部数据结构,重要的执行路径,出错处理,边界条件
7.集成测试过程中要考虑的问题:
(1)数据穿过模块接口时是否会丢失;
(2)模块的功能是否会对其它模块的功能产生不利的影响;
(3)把子功能组合起来,能否达到预期的主功能要求;
(4)单个模块的误差累积起来是否会放大到不能接受的程度;
(5)全局数据结构是否有问题。
8.集成测试中将各个模块组装成系统的方法:
非增殖式组装方式和增殖式组装方式。
9.非增殖式组装方式和增殖式组装方式这两种方法各有优缺点?
(1)采用非增殖式组装方式时,可以较早发现模块间的接口错误,而采用增殖式组装方式时,只有在模块加进来时才可能发现,因此接口错误发现较晚。
(2)采用非增殖式组装方式时要对每个模块进行单元测试,需要编写的测试软件较多,工作量大,而采用增殖式组装方式时,利用已测试过的模块部分作为部分测试软件,因而工作量较小。
(3)非增殖式组装方式要求一下子把所有模块组装起来,如果发现错误则较难判断错误的位置,而采用增殖式组装方式时,由于每次只加入一个模块,因而错误往往与刚加入的模块有关,查错则相对容易些。
(4)采用非增殖式组装方式时,各模块的单元测试可以并行地进行,因此可以充分利用人力,加快测试进程,采用增殖式组装方式时却不能如此。
10.增殖式组装方式时,常用的有自顶向下和自底向上两种方法。
11.自顶向下的结合策略的好处:
能够较早地对主要的控制或关键的判断点进行检验。
自顶向下的结合策略的不足:
可能会遇到逻辑上的问题
解决办法:
(1)把许多测试推迟到用实际模块替换了存根模块以后再进行。
(2)由层次系统的底部向上组装软件。
12.自底向上结合的主要优点:
不需要设计存根模块,而设计测试驱动模块一般比建立存根模块要容易,同时比较容易设计测试用例,并且可以实现多个模块的并行测试,从而提高测试效率。
主要缺点是:
直到最后一个模块结合进来以前,程序作为一个整体始终不存在。
也就是说,对主要的控制直到最后才接触到。
13.调试的策略:
1、强行排错2、回溯法3、归纳法4、演绎法
14.软件可靠性如何度量?
软件可靠性可以用平均故障间隔时间(MTBF)来测量:
MTBF=MTTF十MTTR
其中,MTTF和MTTR分别是平均无故障时间和平均修复时间。
15.程序中错误总数量的估算
一、错误植入法
E=(E0/E1).E2
其中E为程序中固有错误的估计数;
E0为人工植入的错误数;
E1为调试过程中发现的人工植入的错误数;
E2为发现的程序中固有的错误数。
二、错误标记法
三、零-缺陷测试技术
第九章面向对象方法学引论
1.传统方法的缺点:
开发与维护的困难,程序修改困难
2.例化可以静态生成(是指程序编译时生成);
动态生成(指程序运行时生成)。
3.对象间的关系:
概化-特化关系,整体-部分关系,对象的相互作用关系,关联关系
4.面向对象程序的特性:
(1)封装性
(2)继承性(3)多态性
5.面向对象的系统设计:
(1)子系统层。
(2)类和对象层。
(3)消息层。
(4)责任层。
6.BertrandMeyer提出判定设计方法取得模块化能力的5准则:
(1)可分解性
(2)组合性(3)可理解性(4)连续性(5)保护性
7.Meyer建议了用于模块化体系结构的5个设计原理:
①语言的模块化单位;
②少数的接口;
③小的接口(弱的耦台);
④明显的接口;
⑤信息隐蔽。
8.领域分析过程:
(1)定义要研究的领域。
(2)归类从领域中抽取的项。
(3)收集领域中有代表性的应用样品。
(4)分析样品中每个应用。
(5)估计一个典型应用有多大的百分比使用了再使用对象。
(6)为对象开发分析模型。
9.OO分析模型的一般过程
获取客户对OO系统的需求。
标识用户案例或剧本(对用户需求的描述)。
建立需求模型。
使用基本需求为指导,选择类和对象。
为每个系统对象标识属性和操作。
定义结构并组织类的层次。
建立对象关系模型。
建立对象行为模型。
对照使用案例/剧本,评审OO分析模型。
10.对于类可以按类型进行归类:
设备类性质类相互作用类
对象和类也可以按性质分组:
有形性包括性顺序性持久性完整性
11.OOA过程:
使用案例,类-责任-协作者模型,定义系统和子系统,对象联系模型
12.对象行为的表示:
序列图,状态-跃迁图
13.高级的对象间相互作用模型
(1)基本相互作用。
(2)连续相互作用。
(3)和环境相互作用。
(4)组合相互作用。
第十一章面向对象的系统设计
1.面向对象设计的任务
系统设计系统整体结构的设计
对象设计对OOA模型中类/对象模型的具体化和细化
消息设计从对象-关系模型,设计出消息模型
设计模型复审
2.面向对象设计的图示P251
3.系统设计过程
⑴划分子系统;
⑵确定需要并发运行的子系统并为它们分配处理器;
⑶描述子系统之间的通信;
⑷确定系统资源的管理和控制;
⑸确定人机交互构件;
⑹选择实现数据管理和任务管理的基本策略。
4.四种主要子系统
▪问题域子系统
▪人机交互子系统
▪任务管理子系统
▪数据管理子系统
5.划分子系统原则和标准
原则:
(1)模块化、功能独立、信息隐藏
(2)同一个子系统的类拥有共同特性
(3)同一个子系统的类具有共同目的
(4)同一个子系统的类提供相似服务
子系统标准:
(1)有明确的接口,与其他子系统通信
(2)一般类只和子系统内部的其它类协作
6.子系统协作模型:
客户/服务器,端对端
7.人机交互设计
(1)分类分析用户特点,设计不同界面
(2)增加用户界面专用的类和对象
(3)利用快速原型演示,改进界面设计
8.任务管理设计
(1)策略
•确定任务的特征
•定义一个协调者任务和与之关联的对象
•集成其它任务和协调者
(2)步骤
•识别由事件驱动和时间驱动的任务
•识别关键性任务、任务优先级和任务管理类
•定义任务
•必要时扩充有关任务的类和对象
9.对象描述的形式:
协议描述,实现描述
10.实现描述是由下列信息组成:
①对象与类的名字规范;
②指明数据项和类型的私有数据结构规范;
③每个操作的过程描述。
10.领域对象的设计目的支持软件复用
第十二章面向对象系统的测试
1.OO软件的集成测试:
基于黑盒方法的集成测试基于线程的测试,基于使用的测试
2.类测试用例设计:
基于故障的测试用例设计,基于用例的测试用例设计
类间测试用例设计:
类-关系模型,类-行为模型