软件工程

概念

软件工程的目的是探索软件问题的解决办法

软件开发中存在的问题

30%完成,50% 延期、成本增加、由缺陷,20%失败

  • 开发成本高
  • 不能按时交付产品
  • 交付产品存在缺陷
  • 交付产品不符合客户需求

软件质量

软件开发过程中要平衡质量、成本、效率之间的关系,不能过度最求某一方面,质量不是测试出来的,而是在开发中构建出来的,强调质量的过程控制

  • 用户角度:满足需求,功能正常、性能正常、使用便捷
  • 开发角度:可测试、可读性好、可维护
  • 管理者:按时交付、满足预算、交付质量好

好的软件质量

  • 开发成本低
  • 按时交付软件产品
  • 实现客户需求
  • 具有良好的性能、可靠性、可扩展性、可以执行
  • 维护成本低

软件开发生命周期(开发过程)

问题定义

做可行性研究、产出可行性报告

需求设计

分析需求 -> 规格说明文档 -> 客户确认 -> 软件需求说明书

软件设计

结构设计、接口设计、组件设计、数据库设计 -> 软件设计说明书

软件开发

编写代码 -> 单元测试 -> 代码审查 -> 继承测试 -> 源代码 -> 构建

软件测试

单元测试 -> 子系统测试 -> 集成测试

部署维护

软件项目管理

计划:明确目标、制定计划、确定所需资源
组织:软件小组、明确成员的分工与职责、配置各种资源
领导:指导项目实施,检查、评价项目总体情况
控制:控制项目范围变更、监控项目进展、发现并纠正问题

软件配置管理

通过执行版本控制、变更控制的规程,使用核试的配置管理软件,来确保所有产品配置行的完整性和可追溯性

  • 版本管理
  • 变更管理

软件开发模型

迭代模型(增量模型、迭代模型)

迭代模型以价值驱动,强调在资源一定(人力等)的情况下完成价值最高的开发需求,一般也称敏捷开发

scrum 开发

scrum中由多个sprint(冲刺、里程碑)组成,在迭代中不允许变更需求、交付内容、交付日期,如果要进行需求调整,可以安排到下一个迭代中

  • 产品高经理根据产品的价值和市场需求排列出优先级列表(产品订单)
  • 开迭代规划会议,挑选出优先级最高的条目作为开发任务,一般任务的周期是1-4周
  • 每日会议,进展同步、困难提出、下次会议前需要做什么
  • 产生一个版本,确定产品质量,发布版本

参与角色

  • 产品负责人:确定产品的需求、发布计划、优先级,验收迭代结果
  • scrum主管:管理项目,帮助团队制定计划、组织会议、排除团队中的困难、保证团队不受打扰
  • 团队:4-10个人比较合适,人员过少可能技能不够,人员过多沟通复杂

xp极限编程

瀑布模型

原型模型

为应对需求难以确定的困难,将需求转化成可视化原型

软对开发管理

  • 人力资源管理 -> 团队组建 -> 团队建设(增强气氛、提高效率) -> 项目管理
  • 系统分析人员 -> 架构师 -> 程序员 -> 测试

团队沟通管理

  • 严格控制会议时间。一般不超过1小时,最多1.5小时
  • 明确会议的目的
  • 事先分发会议资料
  • 记录会议纪要及相关结论