软件开发生命周期
软件系统的文档
软件系统工具
软件工程过程:包括4个方面活动
软件设计的4个活动
1
瀑布模型
是一个严格串行化的过程模型,因果关系紧密相连,前一个阶段工作的输出结果,是后一个阶段工作的输入。每一个阶段工作完成后,都伴随着一个里程碑,对该阶段的工作进行审查和确认。
2
原型模型
根据用户提出的软件系统的定义,快速的开发一个原型,该原型包含目标系统的关键问题、反映目标系统的大致面貌。
3
螺旋模型
在快速原型的基础上扩展而成,支持大型软件开发,适用于具有高风险的系统。
总结:为了使软件生命周期中的各项任务能够有序的按照规程进行,需要一定的工作模型对各项任务给予规程约束,这样的工作模型 称为 软件过程模型。
敏捷方法的特点
敏捷方法的核心思想
主要敏捷方法
1. 极限编程XP
是一种近螺旋式的开发方法,提倡测试先行,将复杂的开发过程分解为一个个相对比较简单的小周期,通过交流、反馈、简单、勇气,开发人员和客户可以非常清楚开发进度、变化、待解决的问题、潜在的困难等,并根据实际情况及时的调整开发过程。
在执行交付计划之前,极限编程要求团队对系统的架构做一次预研(架构穿刺),当架构的初始方案确定后,就可以进入每次小版本的交付,每个小版本交付又被划分为多个周期相同的迭代,在迭代过程中,要求执行一些必须的活动,如编写用户故事、故事点估算、验收测试等。
2. 水晶系列方法
提倡“机动性”的方法,包含具有共性的核心元素,每个都含有独特的角色、过程模式、工作产品和实践。
3. 并列争求scrum
侧重于项目管理,是迭代式增量软件开发过程,包括了一系列实践和预定义角色的过程骨架。在scrum中使用Product Backlog来管理产品的需求,Product Backlog是一个按照商业价值排序的需求列表。根据Backlog的内容,将整个开发过程分为若干个短的迭代周期(sprint)。在spring中,scrum团队从Product Backlog中挑选最高优先级的需求组成Spring backlog。在每个迭代结束时,scrum团队将递交潜在可交付的产品增量。当所有spring结束时,提交最终的软件产品。
角色
1. 产品负责人- product owner职责:把方向 — 做正确的事
PO是利益相关方的代表,从业务角度出发,对需求按权重排序,合理调整产品功能和迭代顺序。
2. scrum主管 - scrum master 职责:找方法 — 正确的做事
SM负责提高团队效率,确保所有的障碍backlog中的问题都已分配并可以得到解决,开发思想得到利益相关方的理解和支持,让利益相关方获得最大化的投资回报。
3. 开发团队:职责:执行 — 把事情做正确
尽一切可能去完成任务,发布产品,充分理解PO的产品愿景,合作完成冲刺中的每一个目标,更好的支持可能需要进一步开发的产品发布。
工件
1. product backlog:按照商业价值排序的需求列表。
2. spring backlog:从Product Backlog中挑选最高优先级的需求。
3. 产品增量 increment:每个迭代结束时交付给客户的内容。
4. 燃尽图:显示当前冲刺中未完成的任务数目,描述随着时间的推移而剩余的工作量,可用于表示工作进展。
活动
每个迭代召开“四会”:计划会、站立会、评审会、回顾会。
1. 冲刺计划会:在每个冲刺之初,由PO讲解需求
2. 每日站立会:每天进行沟通的内部短会。
会议由SM主持,团队成员把注意力集中在回答关键问题上,把已完成的任务从"处理中"状态转为"已完成"。会议结果:更新后的燃尽图、障碍backlog、冲刺backlog。
3. 冲刺评审会:在冲刺结束前给PO演示并接受评价的会议。
开发进度通过实际已完成的产品的功能审核来进行控制。开发团队演示这个spring中完成的功能,由PO断定实际所发布的功能是否与既定的spring目标一致。会议结果:对当前冲刺的结果和整个产品的开发状态达成共识。
4. 冲刺回顾会:在冲刺结束后召开的关于持续演进的会议。
分析冲刺的成功经验、所遇到的障碍、改进目标。
4. 特性驱动开发方法FDD
是一个迭代的开发模型,FDD认为有效的软件开发需要3个要素:人、过程、技术。6种关键的项目角色:项目经理、首席架构设计师、开发经理、主程序员、程序员、领域专家。
5个核心过程
RUP描述了如何有效的利用商业的、可靠的方法开发和部署软件,是一种重量级过程。RUP类似一个在线指导者,它可以为所有方面和层次的程序开发提供指导方针、模板以及事例支持。RUP软件开发生命周期是一个二维的软件开发模型,有9个核心工作流。
9个核心工作流
1. 业务建模
理解待开发系统所在的机构及其商业运作,评估待开发系统对所在机构的影响。
2. 需求
定义系统功能及用户界面,使客户知道系统的功能,使开发人员理解系统的需求,为项目预算及计划提供基础。
3.分析与设计
把需求分析的结果转化为分析与设计模型。
4. 实现
把设计模型转化为实现结果,对开发的代码做单元测试,将不同的模块集成为可执行系统。
5. 测试
检查各个子系统之间的交互、集成,验证所有需求是否被正确实现,对发现的软件质量上的缺陷进行归档,对软件质量提出改进建议。
6. 部署
打包、分发、安装软件,培训用户,提供技术支持。
7. 配置和变更管理
跟踪并维护系统开发过程中产生的所有制品的完整性和一致性。
8. 项目管理
为软件开发项目提供计划、人员分配、执行、监控等方面的指导,为风险管理提供框架。
9. 环境
提供软件开发环境,提供过程管理和工具支持。
RUP生命周期的4个阶段
核心概念
RUP的特点
RUP采用“4+1”视图模型来描述软件系统的体系结构。
1. 用例视图:分析人员和测试人员关注系统的行为,描述系统的功能需求。
2. 逻辑视图:最终用户关注系统的功能,描述系统的静态结构。
3. 进程视图:系统集成人员关注并发和同步特征,描述线程间的并发和同步。
4. 实现视图:程序员关注模块之间的依赖关系, 描述系统代码构件组织和模块。
5. 物理视图:系统工程师关注系统的部署、安装。定义软件到硬件的映射。
能力成熟度模型CMM
能力成熟度模型集成CMMI
1. 初始级
过程通常是随意且混乱的。
2. 已管理级
确保策划、文档化、执行、监督、控制项目级的过程。
为过程建立明确的目标,能实现成本、进度、质量目标。
3. 已定义级
企业能够根据自身的特殊情况定义适合企业和项目的标准流程,将这套管理体系与流程予以制度化,同时企业开始进行项目积累,企业资产的收集。
4. 量化管理级
建立了产品质量、服务质量、过程性能的定量目标,对过程性能的可预测。
5. 优化级
通过增量式、创新式的过程与技术改进,不断改进过程性能。