软件 一组对象或项目所形成的一个配置,由 程序
文档
数据
组成
四大特征 复杂性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