感谢原作者的总结!下面是文章内容

 

因为一些需要,需要把曾经学习过的软件工程这门课程给从新学习一下,把自己的一些学习分享给大家,希望能够一起进步

软件的分类

process的模型9_白盒测试

软件的发展

process的模型9_瀑布模型_02

软件危机的表现

process的模型9_软件开发模型_03

process的模型9_软件工程_04

为了解决软件危机,所以诞生了软件工程这门学科

软件工程的内容

process的模型9_软件开发模型_05

软件生存周期

process的模型9_软件开发模型_06

软件的开发一般需要这8个阶段协同发展,但是具体问题具体分析,有些软件的开发并不一定都是要走这八个步骤,实际从事软件开发工作时,软件规模、开发环境及技术方法等因素会影响到阶段划分,及各阶段的执行顺序,形成不同生存周期模型,又称过程模型。

常用的软件过程模型

process的模型9_软件工程_07

瀑布模型

process的模型9_瀑布模型_08

瀑布模型特点:

1.阶段具有顺序性和依赖性前一阶段结束后一阶段开始,前一个阶段输出文档,后一个阶段输入文档。2.推迟实现观点瀑布模型在编码前设置系统分析、系统设计,推迟程序物理实现,保证前期工作扎实。3.质量保证观点瀑布模型每阶段坚持两个重要做法:是每阶段都必须完成完整、准确的文档。软件开发时人员间通信、运行时期维护的重要依据。是每阶段结束前对文档评审。

瀑布模型由于是单向的,所以实际开发中如果一个步骤出现问题,是没有办法返回处理的,为了解决这个问题,实际开发中的瀑布模型是带有反馈环的,就是说开发过程中如果之前的一部出现问题的话,还可以回去解决

process的模型9_软件开发模型_09

优缺点

process的模型9_软件开发模型_10

快速模型

根据用户的主要需求,建立一个软件原型,然后让用户进行评价,然后根据用户的评价和提出的更多的需求来开发出相应的软件产品

process的模型9_瀑布模型_11

优缺点

process的模型9_白盒测试_12

增量模型,渐增模型

process的模型9_白盒测试_13

process的模型9_白盒测试_14

瀑布模型和快速模型都是一次性把软件提交给客户的,而增量模型是分批的把软件提交给客户的,但也要担一定的风险,就是最后合在一起未必能成功

优缺点

process的模型9_白盒测试_15

螺旋模型

process的模型9_软件工程_16

process的模型9_软件开发模型_17

一个螺旋一个螺旋的开发,每走一圈软件都会强大一次,而且每一圈都有风险分析,包括成本经济效益等,一旦风险评估不通过,则开发立即结束,周期较长

优缺点

process的模型9_process的模型9_18

喷泉模型

process的模型9_软件开发模型_19

每一个圆都是一个阶段

process的模型9_process的模型9_20

优缺点

process的模型9_软件开发模型_21

Rational统一过程:二维声明周期过程

process的模型9_软件开发模型_22

每个阶段中对每个工作流的侧重点是不一样的,有的工作流中对测试侧重,有的对其他的侧重,比如初始主要业务建模和需求

优缺点

process的模型9_白盒测试_23

微软工程

process的模型9_白盒测试_24

每个工程都有一个里程碑,只要达到里程碑就认为阶段结束,就可以进入下一阶段了,这五个阶段是递进式的,五个阶段完成就形成一个软件,形成一个版本

process的模型9_软件开发模型_25

这样安排好处是,假如版本1出现问题,或者想要升级,直接上版本2,这都很迅速的可以实现

需求分析阶段

结构化的需求分析

具体步骤

process的模型9_process的模型9_26

1发现需求的办法

process的模型9_瀑布模型_27

需求出来之后,就需要根据需求找到最有用的需求,这个过程就是求精,然后我们要为需求建立模型,用图形符号和阻止规则来描述事务,它有三个图和一个数据字典组成

process的模型9_瀑布模型_28

process的模型9_process的模型9_29

规格说明:书写软件需求规格说明,作为分析阶段最终成果

复审:一定要复审,把需求问题解决,最好不要带到下一个阶段,不然会很费事

软件工程之需求阶段三大关系模式图加数据字典的介绍

结构化设计之概要设计和详细设计

经过需求分析阶段之后,系统已经知道了现在应该怎么做了。

总体设计就是概括的回答,系统应该如何实现的问题。因此总体设计又背称为概要设计,或者初步设计。

详细设计就是具体的实现所要求的数据,也就是说经过这个阶段对系统目标,应该对系统目标进行精确描述,从而在编码阶段可以直接把这个设计翻译成某种设计语言的书写程序。

process的模型9_白盒测试_30

结构化设计与分析关系图

process的模型9_软件开发模型_31

process的模型9_process的模型9_32

设计的原理,设计应该遵循的基本原理和概念

process的模型9_process的模型9_33

process的模型9_白盒测试_34

process的模型9_软件开发模型_35

process的模型9_瀑布模型_36

process的模型9_瀑布模型_37

模块独立模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合

耦合是模块和模块直接的,尽量追求低耦合

内聚是模块内元素之间的,尽量追求低内聚

耦合

process的模型9_process的模型9_38

process的模型9_process的模型9_39

其它情况也属于耦合

process的模型9_软件开发模型_40

process的模型9_软件开发模型_41

耦合原则

process的模型9_软件开发模型_42

内聚

process的模型9_瀑布模型_43

process的模型9_软件开发模型_44

process的模型9_软件工程_45

process的模型9_软件开发模型_46

内聚总结

process的模型9_process的模型9_47

启发规则人们在长期的额软件开发中积累了经验,总结出了一些启发式规则,能够帮助他们找到改进软件设计,提高软件质量

下面介绍一下启发规则

process的模型9_软件开发模型_48

process的模型9_瀑布模型_49

process的模型9_process的模型9_50

process的模型9_软件开发模型_51

process的模型9_瀑布模型_52

process的模型9_软件工程_53

process的模型9_process的模型9_54

process的模型9_白盒测试_55

面向数据流的设计方法就是给出设计软件结构的一个系统化的途径

人机界面设计,就是如何让用户觉得界面用着很舒服

过程设计就是设计出软件的具体逻辑实现

面向数据结构设计,数据结构既影响程序的结构也影响程序的处理过程,可从数据结构导出程序的处理过程,适合详细

设计。最后可以形成伪代码描述,根据伪代码描述进行设计会很方便写出相应的程序。

面向数据结构设计方法两种:Jackson和Warnier方法

process的模型9_软件工程_56

实现

编码就是将设计文档翻译源代码

process的模型9_白盒测试_57

黑盒测试:如果知道产品应具有功能,可通过测试来检验是否每个功能都能正常使用。

白盒测试:如果知道产品内部工作过程可通过测试来检验产品内部动作是否按照规格说明书的规定正常进行

测试准则

(1)所有测试应能追溯到用户需求,测试的目的是发现错误,其中最严重的是不能满足用户需求的错误。

(2)应尽早地和不断地进行软件测试。

(3)充分注意测试中群集现象(Pareto原理)。 测试后程序中残存错误数与程序中已发现错误数目成正比,80%错误与20%模块有关。

(4)测试应从小规模开始,逐步进行大规模测试。

(5)不能做到穷举测试。

(6)第三方测试原则

白盒测试的技术

白盒测试之逻辑覆盖

process的模型9_白盒测试_58

process的模型9_白盒测试_59

process的模型9_软件开发模型_60

process的模型9_软件开发模型_61

白盒测试之控制结构测试

基本路径测试和循环测试

基本路径测试:

根据过程设计结果画出相应流图计算流图的环形复杂度确定线性独立路径的基本集合(n独立路径:至少包含一条在定义该路径之前不曾用过的边。)设计测试用例覆盖基本集合的路径

循环测试:

process的模型9_白盒测试_62

黑盒测试技术

因为不明确软件的内部细节,所以测试软件功能

黑盒发现错误类型

常见黑盒测试技术

(1)等价类划分;(2)边界值分析;(3)错误推测等

process的模型9_process的模型9_63

process的模型9_软件开发模型_64

process的模型9_软件开发模型_65

测试步骤

process的模型9_process的模型9_66

调试

软件调试是在进行了成功的测试之后才开始的工作。它与软件测试不同,调试的任务是进一步诊断和改正程序中潜在的错误

软件可靠性