软件过程与项目管理

软件 一组对象或项目所形成的一个配置,由 程序 文档 数据 组成
四大特征 复杂性complexity 不可见性invisibility 易变性changeablility 一致性conformity
CASE工具 Computer-Aided Software Engineering

软件 = 对象Object + 消息Message
面向构件的软件 = 构件Component + 框架Framework
面向服务的软件 = 服务Service + 消息Message + 总线Bus
软件工程 IEEE: 将系统性的、规范化的、可定量的方法应用于软件的开发运行和维护,即将工程化应用到软件上
国务院学位委员会: 按预算和进度实现满足用户要求的软件产品的定义、开发、发布和维护的工程
工具 自动或半自动的软件支撑环境
SWEBOK 软件过程知识体系Software Engineering Body of Knowledge
软件开发就是从现实的需求到计算机的软件代码之间的映射和转换,可单步或多步
概念映射 问题的概念与解的模型化概念 学生 -> Class Student(No,Name,Grade)
业务逻辑映射 问题的处理逻辑与解的处理逻辑的映射 算法
问题空间 -> 需求模型 ->设计模型 -> 实现模型 -> 部署和运行模型 -> 软件(解)空间
功能性需求FR完成spec程度和非功能性需求NFR性能和质量
大部分实践都是没有理论基础的
核心概念 分治 复用 折中 演化
软件过程模型

  • 预测型Predictive
  • 迭代型Iterative
  • 增量型Incremental
  • 敏捷型Agile
    敏捷开发 固定节奏,小步快跑,及时反馈,应对变化,快速交付 增量+迭代+原型
    Scrum 由Sprint组成
    软件维护 纠错型Corrective,适应型Adaptive,完善型Perfective,预防型Preventive
    项目Project 为创建某种特定的产品或服务而组织或设计的临时的、一次性的活动。
    4P people,project,process,product
    产品结构分解Product Breakdown Structure 用分层的树形结构细分产品
    Gantt图 任务进度安排图
    工作包 WBS的叶节点,8、80原则,每个工作包不少于8小时,不多于80小时

任务分解方法:

  • 模板参照法
  • 类比法
  • 自顶而下
  • 自底而上
    成本估算
  • 代码行
  • 功能点
  • 用例点
  • 类比
  • 自下而上
  • 三点 最可能、最乐观、最悲观
  • 专家

组织方式

一窝蜂模式chaos team 没有明确分工
主治医生模式Chief-Programmer Team 一个人为主干
社区模式Community Model 如开源项目
交响乐团模式Orchestra 各司其职,规格严格
爵士乐模式Jazz Band 有arranger协调指导,各位即兴发挥
功能团队模式feature team 组织不同功能的人平等协作
官僚模式Bureaucratic model 行外领导
组织结构 职能型,项目型,矩阵型
责任分配矩阵RAM Responsibility Assignment Matrix
组织分解结构OBS