软件工程
概念
软件工程的目的是探索软件问题的解决办法
软件开发中存在的问题
30%完成,50% 延期、成本增加、由缺陷,20%失败
- 开发成本高
- 不能按时交付产品
- 交付产品存在缺陷
- 交付产品不符合客户需求
软件质量
软件开发过程中要平衡质量、成本、效率之间的关系,不能过度最求某一方面,质量不是测试出来的,而是在开发中构建出来的,强调质量的过程控制
- 用户角度:满足需求,功能正常、性能正常、使用便捷
- 开发角度:可测试、可读性好、可维护
- 管理者:按时交付、满足预算、交付质量好
好的软件质量
- 开发成本低
- 按时交付软件产品
- 实现客户需求
- 具有良好的性能、可靠性、可扩展性、可以执行
- 维护成本低
软件开发生命周期(开发过程)
问题定义
做可行性研究、产出可行性报告
需求设计
分析需求 -> 规格说明文档 -> 客户确认 -> 软件需求说明书
软件设计
结构设计、接口设计、组件设计、数据库设计 -> 软件设计说明书
软件开发
编写代码 -> 单元测试 -> 代码审查 -> 继承测试 -> 源代码 -> 构建
软件测试
单元测试 -> 子系统测试 -> 集成测试
部署维护
软件项目管理
计划:明确目标、制定计划、确定所需资源
组织:软件小组、明确成员的分工与职责、配置各种资源
领导:指导项目实施,检查、评价项目总体情况
控制:控制项目范围变更、监控项目进展、发现并纠正问题
软件配置管理
通过执行版本控制、变更控制的规程,使用核试的配置管理软件,来确保所有产品配置行的完整性和可追溯性
- 版本管理
- 变更管理
软件开发模型
迭代模型(增量模型、迭代模型)
迭代模型以价值驱动,强调在资源一定(人力等)的情况下完成价值最高的开发需求,一般也称敏捷开发
scrum 开发
scrum中由多个sprint(冲刺、里程碑)组成,在迭代中不允许变更需求、交付内容、交付日期,如果要进行需求调整,可以安排到下一个迭代中
- 产品高经理根据产品的价值和市场需求排列出优先级列表(产品订单)
- 开迭代规划会议,挑选出优先级最高的条目作为开发任务,一般任务的周期是1-4周
- 每日会议,进展同步、困难提出、下次会议前需要做什么
- 产生一个版本,确定产品质量,发布版本
参与角色
- 产品负责人:确定产品的需求、发布计划、优先级,验收迭代结果
- scrum主管:管理项目,帮助团队制定计划、组织会议、排除团队中的困难、保证团队不受打扰
- 团队:4-10个人比较合适,人员过少可能技能不够,人员过多沟通复杂
xp极限编程
瀑布模型
原型模型
为应对需求难以确定的困难,将需求转化成可视化原型
软对开发管理
- 人力资源管理 -> 团队组建 -> 团队建设(增强气氛、提高效率) -> 项目管理
- 系统分析人员 -> 架构师 -> 程序员 -> 测试
团队沟通管理
- 严格控制会议时间。一般不超过1小时,最多1.5小时
- 明确会议的目的
- 事先分发会议资料
- 记录会议纪要及相关结论