标签:定义 模型 实践者 软件工程 原型 开发 软件 过程 第四章
第四章 过程模型
如需获取相关MD和X-mind文件,请点击:https://share.weiyun.com/W3Bu8LvF
思维导图
过程模型的概念
过程模型为软件工程工作提供了特定的路线图
该路线图,划定了所有活动的流程、动作、任务、迭代的程度、工作产品及要完成的工作应如何组织
与此同时,软件工程方法必须是“灵活”的
惯用过程模型
惯用过程模式定义了一组划定的过程元素和一个可预测的工作流
瀑布模型
-
线性工作流
-
变体:V模型
-
适用于需求明确、准确定义和相对稳定的情况下
- 通常发生在,需要对一个已经存在的系统进行明确定义的适应性调整、或者增强的时候(需求明确的修改)
-
线性,工作流程明确清晰,缺乏变更,难以应对变更流
增量过程模型
- 即增量开发
- 第一个增量往往是“核心产品”,在后续版本进行增量和附加特性
- 在很多情况下,即使初始的软件需求有明确的定义,整个开发过程也不宜单纯的采用线性模型
- 增量模型在每个阶段都运用线性序列
演化过程模型
-
软件类似于其他复杂的系统,会随着时间的推移而演化。
-
演化过程模型,是专门针对不断演变的软件产品的过程模型,是迭代的过程模型
-
两种常用的演化过程模型
-
原型开发
-
即原型开发范例
-
开始于沟通
-
理想条件下,原型开发提供了定义软件需求的一种机制
-
原型开发是临时系统,是用来演示,沟通,厘清需求并且会被废弃的系统与模型
-
原型开发仍然存在问题
-
关键是要在游戏开始前,就制定规则
- 所有利益相关方必须承认原型是为了定义软件需求服务的
- 然后丢弃原型(至少是部分丢弃)
-
实际的软件系统仍是以实际效益为目标开发的
-
厘清原型的意义究竟是什么
- 不是为了展现系统可行,不是为了展现技术或者设计
- 而是为了厘清与定义需求,需求!!!
- 核心功能、功能的优先级、需求获取与分析、软件应具有的结构,用户感受到的体现应当如何?
-
结构原型
-
-
螺旋模型
-
结合了原型的迭代性质和瀑布模型的可控性,系统性特点
-
具备快速开发越来越完善的软件版本的潜力风险驱动型的过程模型生成器
-
采用循环的方式逐步加深系统定义和实现的深度,同时降低风险
-
确定一系列里程碑作为支撑点,确保利益相关方认可是可行的且令各方满意的系统解决方案
-
像螺旋一样,每一圈逐步进行从沟通到部署的一系列软甲框架活动
- 每个演进过程都要良好的标注和实现的里程碑
- 第一圈一般开发出产品的规格说明
- 接下来开发产品的原型系统
- 在每一圈——每一次迭代,都会逐渐完善改良,开发出不同的软件版本
- 每一圈都会有实际的产品,和相应的里程碑点
- 在每一圈经过策划部分时,根据实际情况,反馈,设计计划等,调整项目计划和改良相应设计
- 注重反馈
- 第一圈代表概念,在之后的圈里,逐步将这个概念实施
-
螺旋模型,是开发大型系统和软件的很实际的方法
-
开发人员可以在产品演进的任何阶段使用原型方法,进行迭代
-
要求在项目的所有阶段始终考虑技术风险,在风险变为难题之前将其化解
-
必须将项目计划看成是需要经常检查并改进的,必须经常对进度进行评估并考虑变更情况,从而对其进行修改
-
-
并发模型
-
也叫并发工程
-
允许软件团队进行本章所描述的任何过程模型中的迭代元素和并发元素
-
更适合于不同软件工程团队共同开发的产品工程项目
-
确保你所在组织的每一个过程都有客户,如果没有客户,过程将会变成空中楼阁,失去目标————Hunt
-
任何框架活动都可能处于并发工作的状态
- 例如新加入一个需求,此时正处于建模状态,沟通活动将由等待变更状态,转变为正在进行状态,而建模活动将会等待沟通的反馈,和沟通活动一同进行相应的调整
-
能够提供精确的项目当前状态图
-
即定了一个过程网络
- 某一点发生的事件,可以触发与之相关的事件的进行或状态的转换
-
演化过程的最终评述
-
许多情况下,及时投入市场是最重要的管理需求
-
演化过程模型就是为了解决上述问题的,但仍有其缺点
- 不确定性过强
- 对于演化过程速度的合理控制,是完成项目的关键点
- 侧重于灵活性和可扩展性,有极重可能会忽视高质量
- 但灵活,扩展,及时,准确的应对需求的重要性,未必就低于纯粹的高质量
-
寻求最终效益,找到合理和合乎实际的平衡点
专用过程模型
定义
- 应用面较窄且较专一,只适用于某些特定的软件工程方法
基于构建的开发
-
商业现货软件构件(COTS)由厂家提供,通过良好定义的接口(API)提供特定的功能,将之集成到正在开发的软件中
-
实际上是演化模型,以迭代的方式构建软件
-
建模和构建活动开始于识别可选构件
-
能够使软件复用,带来极大效益
- 缩短开发周期,并减少项目开发费用
形式化方法模型
- 主要活动,是生成计算机软件形式化的数学规格说明
- 使开发人员应用严格的数学符号来说明,开发和验证基于计算机的系统
- 可以提供一些正确性,但费时费力,效益受到怀疑
- 对其商业化环境下的应用和实际表现,采取怀疑态度,但在一些高度关注安全或者稳定性的软件领域有所应用
面向方向的软件开发
-
面向横切关注点,也就是方面的需求
- 某个关注点涉及到系统多个方面的功能,特性和信息,被称为横切关注点
-
被称为AOSD,AOP,或者AOCE
-
有兴趣可以查一下
-
过程并不成熟,应用极少
统一过程
用例驱动,以架构为核心,迭代并且增量的软件过程
成果:UML——统一建模语言
统一过程的阶段
-
UP的初始阶段
- 包括用户沟通和策划活动
- 沟通并确定初步计划,与利益相关者达成一致,确定需求和大体功能
-
UP的细化阶段
-
包括沟通和通过过程模型的建模活动
-
扩展了初始阶段定义的用例,并扩展了体系结构以包含软件的五种视图
- 用例模型
- 需求模型
- 设计模型
- 实现模型
- 部署模型
-
建立可执行的体系结构基线
-
-
UP的构建阶段
-
UP的转换阶段
-
UP的生产阶段
阶段性的并发进行
- 可能在构建,转换,生产的时候,下一个软件增量的工作已经开始
个人过程模型和团队过程模型
实际含义
- 开发团队定制了其自己的过程,根据客户和软件开发的客观要求,同时满足个人的小范围要求和企业的大范围要求
个人软件过程(PSP)
-
强调对产品以及产品质量的个人测量
-
定义了五种框架工作活动
- 策划
- 高层设计
- 高层设计评审
- 开发
- 后验
-
PSP强调对所犯错误进行记录和分析,以便制定消除错误的策略
-
尚未被广泛的采纳
- PSP是对能力的极大挑战,需要得到一定程度的承诺,而这种支持通常很难得到
- 许多个人改进的理念尚且值得学习
团队软件过程(TSP)
-
目标是建立一个能够“自我管理”的项目团队,团队能自我组织,进行高质量的软件开发活动
-
定义了以下目标
- 建立自我管理的团队,来策划和跟踪其工作,确定目标,建立团队自己的过程和计划
- 指示管理人员如何指导和激励其团队,并保持团队的最佳表现
- 使CMM(能力成熟度模型)的行为常规化,并依此约束员工,这样可加速软件过程改进
- 为高成熟度的软件组织提供改进指导
- 协助大学教授行业级团队技能
-
定义了以下框架活动
- 项目启动
- 高层设计
- 实现
- 集成和测试
- 后验
-
TSP过程认为:最好的团队需要具有自我管理的能力
PSP和 TSP都强调成功软件过程的关键因素
- 测量评估
- 策划
- 自我管理
- 实施
过程技术、产品和过程
过程技术
-
过程技术工具
- 以帮助软件开发组织分析现有过程,组织工作任务,控制并监控过程进度和管理技术质量
- 建造自动化,智能化的模型
-
代表性工具
- Igrafx Process Tools
- Adeptia BPM Server
- ALM Studio Suite
产品和过程
-
如果过程很薄弱,则最终产品必将受到影响
-
但是对过程的过分依赖也是很危险的
-
产品与过程的二象性
- 艺术家不仅对装裱好的画卷感到高兴
- 更在每一笔绘画的过程中享受乐趣
- 这也是创造性人才的根源之一
标签:定义,模型,实践者,软件工程,原型,开发,软件,过程,第四章 来源: https://www.cnblogs.com/fenixhuang/p/14238688.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。