git-开发模式

1、基础知识

1.1、项目的周期

1.2、开发框架演变

1.2.1、演变图

1.2.2、说明

ORM - 一台主机承载所有的业务应用
MVC - 多台主机分别承载业务应用的不同功能,通过简单的网络通信实现业务的正常访问
RPC - 应用业务拆分、多应用共用功能、核心业务功能 独立部署,基于远程过程调用技术(RPC)的分布式服务框架 提高业务功能复用及项目的整合
SOA - 粗放型的RPC分布式实现了大量的资源浪费,提高机器利用率的 资源调度和治理中心(SOA) ,基于现有资源的高效利用,进一步提高服务的能力
微服务 - 随着互联网的发展、各种技术的平台工具出现、编程语言的升级、开发规范的标准化等因素,中小型企业也有了相应的能力来发展更轻量级的SOA模式。

1.3、开发方法

关于项目的功能迭代,主要考虑的是项目在运行后期,开发团队的工作方法,就是开发模式,目前常见的开发模式主要有传统和新型两种分类:
传统:边做边改、瀑布、迭代、增量、快速原型、螺旋模型等
新型:敏捷、精益、DevOps等

2、开发模式

2.1、瀑布

2.1.1、流程图

2.1.2、优势

因为瀑布模型的每个阶段的边界划分很清楚,而且以线性的顺序依次完成。如果我们将阶段间的联系划分的更细一些,意味着我们在阶段性交接工作成果的时候没有更多的验证约束。即使交接的工作成果有问题,我们只需要纠正一下即可。
瀑布模型有明确的需求分析,层次性的开发思路,我们只需要按部就班的完成各阶段的工作内容就可以,它是一种理想化的开发模型,非常适合过程管理。

2.1.3、劣势

直接影响正常的产品交付日期
瀑布模型的优势也是劣势。按计划完成任务很好,但是真正的工作中有非常多的不确定性。

1、需求不确定:因为我们的分析阶段是自己调研的,而用户在真正接触到产品前,需求会发生变化,而且开发过程中会有很多的不确定因素,导致我们不能按照理想化的路走下去。
2、反馈太慢长:我们按照计划开发产品,A阶段完成后,只有到B阶段的时候才会检查A阶段工作结果的效果,效果反馈慢。而且有些错误是不可避免的,因为需求分析阶段是最容易出现错误的阶段,也就是说,我们
会在错误的道路上走到最后(部署出来)才发现错了(需求错误),这就意味着,当我们意识到错误的时候,已经迟了,我们需要花费很大的成本来修复错误。
3、缺乏并行性:每个阶段只接受上一阶段的成果后才工作,没有办法多阶段并行工作。
4、效率低下:A阶段在进行过程中,剩余的阶段都在等待,大量的资源(人力、物力)可能处于闲置状态,而且工作的人技术不一定很好。

2.1.4、场景

大部分的项目初期阶段
某些核心、大型、稳定性要求高的项目

2.2、迭代

2.2.1、流程图

2.2.2、优势

1、反馈周期短:每个阶段的工作成果可以快速的交付给用户,用户接到产品后,使用的效果,都可以快速的反馈给产品人员。
2、降低产品风险: 开发工作按照既定的计划进行推进,而且推进的过程中,可以结合上一个阶段的用户反馈来细化需求或者合理的变动部分功能/业务逻辑,并开始新一轮的迭代.
3、提高效率: 阶段性的功能拆分及快速质量反馈,使开发人员清楚产品的功能定位和问题焦点,工作效率会提高,加快整个项目工作的进度。

2.2.3、劣势

团队水平:项目研发过程中,功能需求变动频繁导致风险增多,这对领导/组织者水平要求要高一些,软件研发团队的综合应变水平也有一定的要求。

2.2.4、场景

大部分项目的中后期的通用做法
高风险项目

2.3、敏捷开发

敏捷开发,是一种应对快速变化的用户需求的一种开发软件的管理新模式,其实它是XP、Scrum等数十种软件开发项目管理方法的集合,主要特点是:响应变更快、关注产品价值、注重个人的能力。

2.3.1、流程图

2.3.2、优势

产品团队、研发团队、测试团队之间更注重紧密协作,
团队小而精干,面对面(口头、源代码)交流,来深入理解产品的结构和功能。
开发内嵌测试,质量前置,等等

2.3.3、劣势

团队的组建较难,人员不多,但综合技术能力要求较高。

2.3.4、场景

项目复杂、交付周期短,功能迭代快的项目

3、综合的项目生命周期

4、传统 vs 敏捷

 

posted @ 2023-06-08 17:54  小粉优化大师  阅读(16)  评论(0编辑  收藏  举报