1软件工程基础知识
1.1CASE
Computer Aided Software Engineering,计算机辅助的软件工程
1.2软件生存周期
(1)可行性分析与项目开发计划
(2)需求分析
- 功能需求
- 非功能需求
- 设计约束
需求捕获、需求分析、编写规格说明书、需求验证
(3)概要设计
(4)详细设计
(5)编码
(6)测试
(7)维护
1.3软件项目管理
(1)成本估算
- Putnam模型
这是1978年Putnam提出的模型,是一种动态多变量模型。它是假定在软件开发的整个生存期中工作量有特定的分布。这种模型是依据在一些大型项目(总工作量达到或超过30个人年)中收集到的工作量分布情况而推导出来的,但也可以应用在一些较小的软件项目中。
L = Ck * K^1/3 * td^4/3
L-----------源代码行数(以LOC计)
K-----------整个开发过程所花费的工作量(以人年计)
td----------开发持续时间(以年计)
Ck----------技术状态常数,它反映“妨碍开发进展的限制”,取值因开发环境而异,见下表。
表:Ck的典型值开发环境举例
2000 差 没有系统的开发方法,缺乏文档和复审
8000 好 有合适的系统的开发方法,有充分的文档和复审
11000 优 有自动的开发工具和技术
- COCOMO模型
1981年Boehm提出“构造性成本模型”(Constructive Cost Model),简称CoCoMo模型。它是在静态、单变量模型的基础上构造出来的.
CoCoMo模型分为基本、中间、详细三个层次,分别用于软件开发的三个不同阶段。
基本CoCoMo模型 用于系统开发的初期,估算整个系统的工作量(包括软件维护)和软件开发所需要的时间。
中间CoCoMo模型 用于估算各个子系统的工作量和开发时间。
详细CoCoMo模型 用于估算独立的软部件,如子系统内部的各个模块。
基本CoCoMo模型
E = aLb
D = cEd
其中:E表示工作量,单位是人月(PM)。
D表示开发时间,单位是月(M)。
L是项目的代码行估计值,单位是千行代码
a ,b ,c ,d是常数,取值如下表所示。
Boehm把软件划分为组织型、半独立型和嵌入型三类,允许不同应用领域和复杂程度的软件按照三类软件的适用范围选取相应的参数a,b,c,d。
软件类型 a b c d 适用范围
组织型 2.4 1.05 2.5 0.38 各类应用程序
半独立型 3.0 1.12 2.5 0.35 各类实用程序、编译程序等
嵌入型 3.6 1.20 2.5 0.32 实时处理、控制程序、操作系统
中间CoCoMo模型
以基本CoCoMo模型为基础,在工作量估计公式中乘以工作量调节因子(EAF)
E = aLb *EAF
其中:L是软件产品的目标代码行数,a,b是常数,取值如下表所示。
中间CoCoMo模型参数
软件类型 a b
组织型 3.2 1.05
半独立型 3.0 1.12
嵌入型 2.8 1.20
工作量调节因子(EAF)与软件产品属性、计算机属性、人员属性、项目属性有关
软件产品属性
1.软件可靠性、2.软件复杂性、3.数据库的规模。
计算机属性
4.程序执行时间、5.程序占用内存的大小、6.软件开发环境的变化、7.软件开发环境的响应速度。
人员属性
8.分析员的能力、9.程序员的能力、10.有关应用领域的经验、11.开发环境的经验、12.程序设计语言的经验
项目属性
13.软件开发方法的能力,14.软件工具的质量和数量、15.软件开发的进度要求。
四种属性共15个要素。
每个要素调节因子 Fi, i=1,2,…...,15,的值分为:
很低、低、正常、高、很高、极高,共六级。
正常情况下 Fi=1。
Boehm推荐的Fi值范围
(0.70, 0.85, 1.00, 1.15, 1.30, 1.65)
当15个Fi的值选定后,EAF的计算如下
EAF=F1*F2*……*F15
调节因子集的定义和调节因子定值是由统计结果和经验决定的。不同的软件开发组织,在不同的历史时期,随着环境的变化,这些数据可能改变。
使用中间CoCoMo模型可以估算开发软件产品的工作量,比较各种开发方案的工作量
1.4进度管理
进度安排的常用图形描述方法有Gantt图和项目计划评审技术(Program Evaluation&Review Technique,PERT)图
- Gantt图
Gantt图(也称横道图)是安排工程进度计划的简单工具,如下图。
任务 | 负责人 | 2002年 | 2003年 | ||||||||||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 1 | 2 | 3 | 4 | ||
分析 |
| ▲ | — | — | ▲ |
|
|
|
|
|
|
|
|
|
|
|
|
测试计划 |
|
| ▲ | — | △ |
|
|
|
|
|
|
|
|
|
|
|
|
总体设计 |
|
|
|
| ▲ | — | △ |
|
|
|
|
|
|
|
|
|
|
详细设计 |
|
|
|
|
| △ | — | — | △ |
|
|
|
|
|
|
|
|
编码 |
|
|
|
|
|
|
|
| △ | — | — | — | △ |
|
|
|
|
模块测试 |
|
|
|
|
|
|
|
|
| △ | — | △ |
|
|
|
|
|
集成测试 |
|
|
|
|
|
|
|
|
|
|
| △ | — | — | △ |
|
|
验收测试 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| △ | — | △ |
文档 |
|
|
|
| ▲ | — | — | — | — | — | — | — | — | — | — | — | △ |
在Gantt图中,每项任务的开始时间和结束时间先均用空心小三角形表示,两者用横线相连,令人一目了然。当活动开始时,将横线左面的小三角形涂黑,当活动结束时,再把横线右边的小三角形涂黑。上图中,分析工作已经完成;测试计划、总体设计和编写文档工作已经开始,但尚未完成;其他几项工作尚未开始。
Gantt图简单明了,易画易读易改,使用十分方便。图上显示了年月时间,用它来检查工程完成的情况十分直观方便,但是它不能显示各项任务之间的依赖关系,只适用于简单的软件项目。
- Pert图
PERT(项目评估与评审技术,Project Evaluation and Review Technique)发展于20世纪50年代后期,用于为美国海军计划和控制大型的武器的开发项目。PERT图是一种图形化的网络模型,描述一个项目中任务之间的关系。图3-1展示了一个PERT图的例子。PERT图用来在任务被调度之前弄清项目任务之间的依赖关系。图中的方框代表项目任务(在图中我们使用了第2章的项目开发阶段),可以通过调整方框中的内容反映各种项目属性,例如进度和实际的开始和结束时间。箭头指示了一个任务依赖于另一个任务的开始或完成。
(点击查看大图)图3-1 一张PERT图 |
1.5软件配置管理
在软件开发过程中,由于没有进行变更控制,可能加剧项目的混乱,为了协议软件开发使得混乱减到最小,使用配置管理技术,使变更所产生的错误达到最小并有效地提高生产率。
最主要的就是版本控制:SVN、GIT
1.6项目管理工具
(1)国内的禅道
(2)oKit
(3)Collabtive
(4)Freedcamp
(5)Project Pier
(6)Achievo
(7)Redmine
1.7统一过程UP和敏捷开发
什么是软件开发中的迭代开发?
就是开发被组织成一系列固定的短期小项目,称为迭代,每次迭代都产生,经过测试、集成并可执行的局部系统。系统在迭代中持续扩展和精化,并以循环反馈和调整为核心驱动力,最终成为一个编程系统产品。
迭代开发,又被称为增量式开发,进化式开发,或者IID(Iterative and Incremental Development)
那什么是敏捷开发?
敏捷开发是迭代开发的一种,应用时间定量的迭代和进化式开发,使用自适应计划,提倡增量交付并包含其他提倡敏捷性的价值和实践。
2001年,敏捷联盟成立,他们发表了敏捷宣言。
敏捷的特点是,增量开发,快速原型,适用于中小型项目。
敏捷有很多门派,Xp、Scrum、UP,DSDM等等……他们都是在20世纪90年代发展起来的。
UP是Unified Process的缩写(统一过程),他是十分灵活和开放的,只要是其他敏捷方法中有用的实践,都鼓励引进,如:Xp的测试驱动,重构,持续集成;Scrum的公共项目室,日常会议等。
UP分为四个阶段:
1,初始,Inception:大体上的构思,业务案例,范围和模糊评估
2,细化,Elaboration:高风险核心架构的解决,确定大多数需求,更为实际的评估
3,构造,Construction:实现风险较低的元素
4,移交,Transition:进行beta测试和部署
1.8测试
(1)单元测试
- 模块接口
- 局部数据结构
- 重要的执行路径
- 出错处理
- 边界条件
(2)集成测试
(3)确认测试
- 有效性测试
- 软件配置审查
- 验收测试
(4)系统测试
自己理解就是布署测试。
- 恢复测试。检查系统的容错能力
- 安全测试。
- 压力测试。
- 性能测试。
- 可靠性、可用性和可维性测试(平均失效间隔时间 Mean Time Between Failures,MTBF)。
最后欢迎大家访问我的个人网站: 1024s