软件工程知识点总结

软件生存周期:从软件定义,开发,使用,维护直到结束使用的一系列过程。
软件工程的7条基本原理:1.坚持分阶段的生命周期计划严格管理。
2.坚持阶段评审。
3.坚持严格的产品控制。
4.采用现代程序设计技术。
5.结果能清楚审查。
6.开发小组成员少而精。
7.承认不断改进软件工程实践的必要性。
软件工程方法学三要素:方法,工具,过程。
两大方法:传统方法学,面向对象方法学。
软件工程阶段:1.问题定义
2.可行性分析
3.需求分析
4.总体分析
5.详细设计
6.编码和单元测试
7.综合测试
8.软件维护
系统流程图:概括的描绘物理系统的传统工具,基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件。系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程。
数据流图:描绘数据流从输入移动到输出的过程所经受的变换。在数据流图中没有任何具体的物理部件,他只是描绘数据在软件中流动和被处理的过程。数据流图是系统逻辑功能的图形表示。
数据字典:数据字典是关于数据信息的集合,对数据流图中包含所有元素的定义的集合、
数据字典应该对以下4类元素的定义组成:1.数据流2.数据元素3.数据存储4.处理
实体-联系图:数据对象,数据对象的属性及数据对象彼此之间相互连接的关系。
3种关系:(1:1)(1:N)(M:N)
通常按照属性间的依赖情况区分规范化的程度。
第一范式:每个属性必须是原子值。即仅仅是一个简单值而不含内部结构。
第二范式:满足第一范式,而且每个非关键字属性由整个关键字决定
第三范式:符合第二范式,每个非关键字属性都仅由关键字决定,而且一个非关键字属性不能仅仅是对另一个非关键字属性的进一步描述(即一个非关键字属性不依赖于另一个分关键字属性值。)
范式的介绍,作用
状态转换图:通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。
在需求分析阶段:建立功能模型的数据流图,建立数据模型的实体-联系图,建立行为模型的状态转换图。
模块独立的原因:1.容易开发。2.容易测试和维护
模块独立的两个标准:内聚和耦合
内聚:衡量一个模块内部各个元素彼此结合的紧密程度。
耦合:衡量不同模块彼此间互相依赖的紧密程度。
耦合的强弱取决于模块间接口的复杂程度,应该追求尽可能松散耦合的系统。
数据耦合:两个模块之间通过参数交换信息,而交换的信息仅仅是数据。
控制耦合:两个模块之间交换的信息中有控制信息。
特征耦合:当整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据。
公共环境耦合:两个或多个模块通过一个公共数据环境相互作用。公共耦合有两种形式1)一个系统往公共环境送数据,另一个模块从公共环境取数据,这是数据耦合的一种形式,是比较松散的耦合。2)两个模块既往公共环境送数据,又从公共环境取数据这种耦合比较紧密介于数据耦合和控制耦合之间。
内容耦合:1)一个模块访问另一个模块的内部数据
2)一个模块不通过正常入口而转入另一个模块内部
3)两个模块有部分重叠代码
4)一个模块有多个入口。
应该尽量使用数据耦合,少用控制耦合和特征耦合,限制使用公共环境耦合,完全不用内容耦合。
理想的内聚一个一个模块只做一件事。
设计时,应该追求高内聚和低耦合。
低内聚:
偶然内聚:一个模块完成一组任务,这些任务彼此间即使有关系,关系也是松散的,这种叫偶然内聚。
逻辑内聚:一个模块完成的任务在逻辑上属于相同或相似的一类
时间内聚:一个模块包含的任务必须在同一段时间执行。
中内聚:
过程内聚:一个模块内的处理元素是相关的,而且必须以特定次序执行。使用程序流程图作为工具设计软件时,常常通过研究流程图确定模块的划分,这样得到的往往是过程内聚的模块。
通信内聚:模块中所有元素都使用同一个输入数据和产生同一个输出数据
高内聚:
顺序内聚:一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行。根据数据流图划分模块时,往往得到的是顺序内聚的模块。
功能内聚:模块内的所有处理元素属于一个整体,完成单一的功能。
描绘软件结构的图形工具:层次图,HIPO图,结构图
面向数据流的设计方法:把信息流映射成软件结构,根据数据流确定软件结构的方法。
三种基本的控制结构:顺序,选择,循环
描绘程序设计构成的工具称为过程设计工具,他们分为三类:图表,表格,语言。
包括:程序流程图,盒图,PAD图(问题分析图),判定表,判定树,过程设计语言。
面相数据结构的设计方法:jackson方法和warnier方法。
pareto原理:测试中发现的错误中的80%很可能是有程序中20%的模块造成的。
黑盒测试:如果已经知道产品应该具有的功能,可以通过测试来检验是否每个功能正常使用。
白盒测试:如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。
测试的准则:
1)应该早在测试之前就准备测试计划
2)所有测试应能追溯到客户需求
3)把怕pareto原理应用到测试当中
4)从“小规模”测试开始,逐步扩大到‘“大规模”测试
5)穷举测试是不可能的
6)有第三方机构测试。
黑盒测试技术:等价划分,边界值分析,错误推测。
白盒测试技术:逻辑覆盖,控制结构测试。
两种集成测试的策略:自顶向下集成和自底向上集成。
回归测试:每当有新的子模块结合进来时,程序就发生了变化,所谓的回归测试就是重新执行已经做过的测试子集,以保证上述的这些变化没有带来非预期的副作用。
确认测试:也称为验收测试,目标是验证软件的有效性。
Alpha测试(α测试):用户在开发者指导的情况下,在开发者场所进行测试。
Beta测试(β测试):用户在一个或者多个场所进行测试,是在开发者不能控制的环境下的“真实”测试。
逻辑覆盖:
语句覆盖:使测试中的每个语句至少覆盖一次。
判定覆盖:(分支覆盖):不仅每个语句执行至少一次,而且每个判定的每种可能的结果都应该至少执行一次,也就是每个判定的每个分支都至少执行一次,
条件覆盖:不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。
判定、条件覆盖:既然判定覆盖不一定包含条件覆盖,条件覆盖不一定包含判定覆盖,就提出同时满足这两种覆盖的逻辑覆盖,这就是判定、条件覆盖。选取足够多的测试数据,是的判定表达式中的每个条件都取得各种可能的值,而且每个判定表达式也都取得各种可能结果。
条件组合覆盖:选取足够多的数据,使得每个判定表达式中的各个可能组合都至少出现一次。
点覆盖:选取测试用例,使得程序执行路径知道至少经过流图的每个结点一次,由于流图的每个结点与一条或者多条语句确定,因此点覆盖标准和语句标准是相同的,
边覆盖:选取足够多的数据,使得流图中每一条边至少执行一次,通常边覆盖和判定覆盖是一致的。
路径覆盖:选出足够多的数据,使得程序的每一条可能路径都至少执行一次。
黑盒测试技术:
等价划分:将程序的输入域划分成若干数据类,据此导出测试用例。一个理想的测试用例可以发现一类错误。
边界值分析:处理边界情况时程序最容易发生错误。
错误推测:列举 程序可能出现的错误,根据他们选择测试方案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值