(自顶向下,逐层细化)
目录
目标:建立能够妥善解决用户问题的软件系统解决方案,简单地说就是定义“软件系统要完成哪些功能”
任务:需求开发(包括需求获取、分析、规格说明、验证)和需求管理(持续进行,直到软件生命周期终结)
软件开发人员:软件需求工程师and软件需求分析师
需求开发的两个阶段:
- 系统需求开发:为了获得整个系统的期望目标(即完成业务需求处理),包括软件系统和硬件系统(软件系统通常会承担主要的需求)
- 软件需求开发:以承载的系统需求为出发点,建立软件系统解决方案,使其满足系统需求
常见建模方法与技术:结构化分析方法(DFD和ER图),面向对象分析方法(用例图描述系统功能,概念类图描述系统静态结构,顺序图)
关注点:首要是理解现实,次要是建立高质量的软件系统~
主要制品:需求分析模型and软件需求规格说明文档~
目标:使用各种抽象软件实体建立系统的结构,搭建系统的实现框架
开发人员:软件设计师
划分为以下3个类:
(前两者均存在面向对象方法和结构化方法两种实现途径)
目标:构建软件
开发人员:程序员——编程实现和构造高质量软件产品
主要任务:编程、测试与调试等子活动
主要制品:源代码和可执行程序
目标:保证软件产品的质量
主要划分为3个层次:
主要任务:测试计划、测试执行和测试报告
主要制品:测试用过的高质量软件产品和测试报告
目标:将软件产品交付给用户和客户
主要任务:部署、用户培训、文档支持等
关注:交付的有效性,让客户和用户真正掌握软件产品,能够顺利地使用软件产品完成工作任务
重视点:项目总结和项目评价
目标:保障用户从接收产品到软件生命终结之间的正常使用
任务:完善性维护、适应性维护、修正性维护and预防性维护
(可由开发人员进行,也可以由专门的维护人员进行)
关注点:软件系统如何在效益和质量的总和平衡下演化
分享一张详细归纳的好图:
每个阶段都有明确的典型输入/输出、主要活动和执行人、各个阶段形成明确、连续的顺序过程
(特定软件系统的生命周期简要描述了该系统的开发活动历史,而一个软件生命周期模型则描述了新的软件系统该如何开发)
与简略的软件生命周期模型不同,软件过程模型进一步详细说明各个阶段的任务、活动、对象及其组织、控制过程,可以被看做是网络化的活动组织
因为要在整体上遵守软件生命周期的约束,所以不同的软件生命周期模型展开以后是不同的软件过程模型~
1.背景与动机:最早也是最自然产生软件的开发模型,完全依靠开发人员的个人能力进行开发
2.描述:依靠个人分享和理解直接构造软件的第一个版本,提交给用户使用;发现缺陷后就直接修改代码修改缺陷,直到全部完成后进行交付,然后进入维护阶段
3.特点
4.常用情况
1.背景与动机:将软件开发活动划分为不同的阶段,并且保证每一个阶段工作的正确性和有效性~
2.描述:自上而下,相互衔接,从一个阶段到另一个阶段的有序的转换序列~
虽然像瀑布流水逐级而下,瀑布模型允许活动出现反复和迭代~
3.特点
明显优势:为开发活动定义了清晰的阶段划分,这让开发者能够以关注点分离的方式更好地进行那些复杂的软件项目的开发活动~
局限性:
4.常用情况
1.背景与动机:实际开发中绝大多数复杂系统都是需要迭代完成的~
2.描述:在项目开始时,通过系统需求开发和核心体系结构设计活动完成项目队前景和范围的界定,然后再将后续开发活动组织为多个迭代、并行的瀑布式开发活动~
比较显著的要求是,需要在项目早期就确定项目的目标和范围,因此项目需求要比较稳定和成熟~
3.特点:
优点:
缺点:
4.常用情况:实践中广泛应用
1.背景与动机
和增量相同,都采用迭代式;不同点在于演化模型主要用在需求变更频繁或者不确定性较多的领域
2.描述
将软件开发活动组织为多个迭代、并行的瀑布式开发活动——主要任务是澄清和明确系统的核心需求,建立和交付核心系统~
对需求的反馈是演化模型进行迭代预测、开发活动组织和控制的主要依据,因此它也是“需求驱动”
3.特点
优点:
缺点:
4.常用情况
不稳定领域的大规模软件系统
1.背景与动机
简单的说,原型产生于真正产品构建之前,一种情况是,它被扩展之后成为真正的产品,另一种情况是,它模拟真正产品但不会出现在真正产品之中,而在真正产品中出现的是比原型质量更好地改进和替代~(第一种称为演化式原型,第二种称为抛弃式原型)
(基本特征不是注重演化式而是注重抛弃式原型)
2.描述
将需求开发活动展开为抛弃式原型开发的迭代,充分利用抛弃式原型解决新颖领域的需求不确定问题~
3.特点
优点:
缺点:
4.常用情况:存在这大量不确定性的新颖领域进行开发活动组织
1.背景与动机
解决软件开发的越来越高的风险~
基本思想:尽早解决比较高的风险(尽量早发现)
2.描述
基于风险驱动,完全按照风险解决的方式组织软件开发活动~
风险解决的基本思路是:
确定目标、解决方案和约束——评估方案,发现风险——寻找解决风险方法——解决风险方案~
3.特点:
优点:可以降低风险,减少项目因风险造成的损失
缺点:
4.常用情况
在高风险的大规模软件系统开发中有着较多的应用
1.背景与动机
多种过程模型方法互不相容,各有自己的优点和最佳实践方法,又都有自己的局限性;为了减少过程模型方法上选择的困难,同时由充分吸收和利用各种过程模型方法下的最佳实践方法,Rational公司提出了统一过程(RUP)——总结和借鉴传统的各种有效经验,建立最佳实践方法的集合,并提供有效的过程定制手段~
2.描述
模型概述:横轴以时间来组织,是过程展开的生命周期特征,体现开发过程的动态结构;纵轴以内容来组织,是自然的逻辑活动,体现开发过程的静态结构
核心实践方法:
- 迭代式开发:过去被反复证明的最佳实践方法
- 管理需求:重视需求工程中除了需求开发之外的需求管理活动
- 使用基于组件的体系结构:它帮助建立一个可维护、易开发、易复用的软件体系结构
- 可视化建模:利用UMl进行建模
- 验证软件质量:尽早和持续地开发验证,以尽早发现缺陷,降低风险和成本
- 控制软件变更:适应90年代以后需求变更越来越重要的事实
3.特点
优点:
缺点:
4.常用情况:RUP是重量级过程,能够胜任大型软件团队开发大型项目时的活动组织
1.背景与动机
传统的软件过程模型过于强调纪律,忽视了个人能力,尤其是过度强调计划、文档和工具~
人们开始总结实践中的经验和最佳实践方法,尝试建立轻量级的过程方法
2.描述
思想与原则
敏捷练满宣言所声明的价值观:
- 个体和互动:高于流程和工具
- 工作的软件:高于详尽的文档
- 客户合作:高于合同谈判
- 响应变化:高于遵循计划
极限编程:极限利用简单、有效地方法解决问题
3.特点
方法众多,各有特点也各有缺点
4.常用情况
适用于快速变化或者时间压力较大的项目~