相信我们对软件工程并不陌生,无论是理论还是实践我们都接触了。但当向阳师哥提起软件的生存周期时,你能很精确的表达出来吗?当丹丹师姐和大勇师哥在讨论自己项目时,你能察觉到两个人所在公司所用的生存周期的不同吗?我刚开始没有想到,相信大家也有同感吧!相信在以前学习的基础上,我们这次的软工之行会更加绚丽。
一、基础
1、生存周期
可行性分析:-确定开发目标
需求分析:“做什么”
概要设计:框架、数据库设计
详细设计:把功能转换为精确的、结构化的过程
程序编码:将设计转换为程序代码
测试:发现软件存在的问题
维护:延续软件寿命
2、生存周期模型
瀑布模型
属于整体开发模型,各阶段之间存在着严格的顺序性
演化(原型)模型
通过初建原型,步步完善,最后开发出用户需求软件
螺旋模型
综合瀑布和演化,增加了风险分析
喷泉模型
主要描述面向对象的开发过程,特点:迭代和无间隙
3、开发方法
结构化方法:面向数据流,有结构化分析、结构化设计、结构化程序设计组成
JasKson方法:面向数据结构
原型化方法:适合用户需求不清,业务理论不清楚
面向对象开发方法:以对象为基本元素,包括面向对象分析、设计和实现(Booch、Code、OMT)
二、项目管理
1、成本估算
策略
自顶向下:先总后单元
自底向上:先单元后总
差别估算法:与类似比较
方法:
专家估算法:依靠专家建议
类推估算法:具有相似条件的工作单元比较
算式估算法:专家和类推有很大主观色彩,算式类型:由理论或经验导出
模型
IBM模型:在60项目经验的静态模型
Putnam:动态多变量模型
COCOMO:结构性成本模型
基本:静态单变量,对整个系统进行估算
中级:静态多变量,分为系统和部件两个层次
高级:系统、子系统、模块三个层次
软件规模估算
LOC(代码行)估算:自底向上
FP(功能点)估算
2、风险分析
风险识别:识别可预测的风险
风险预测:风险发生的可能性和发生后产生的结果
风险评估:三元表示
风险控制:建立处理风险策略
3、进度管理
Gantt(甘特图)和PERT技术
(1)Gantt
优点:清晰的任务开始和结束时间,任务的并行性
不足:各任务关系不清晰,不了解关键点
(2)PERT技术
优点:关键路径,松弛时间
不足:无并行关系
4、文档管理
做过项目的人都明白,没有文档或文档不合理会给开发造成很大的困扰。高质量、高效率的开发必须依赖文档。
类型
开发前整理的开发文档(需求分析文档……)
开发过程中用到的图表
使用者
管理人员:可行性分析报告、项目开发计划、开发进度月报、项目开发总结报告
开发人员:可行性研究报告、项目开发计划、需求分析文档、概要和详细设计文档、数据库说明书、测试计划、测试分析报告
维护人员:设计说明书、测试分析报告
用户:用户手册和操作手册
5、人员管理
分析组、设计组、编码组、测试组、维护组和质量保证组。
一个项目是否能够成功的完成,除了管理者的项目经验外,还需要规范化的管理。通过做一些项目发现,项目管理中的估算、风险、进度、文档、人员,我们都需要考虑到,必须用我们的理论去指导实践,通过实践再去丰富理论。