- 传统项目生命周期
世间万物皆有其生命,软件项目也是如此。随着互联网的发展,软件项目的生命周期也发生了很大的变化,为了更好的让大家理解软件项目,项目生命周期有狭义[具体]、广义[缘起/缘灭]之分,我们一般所说的项目生命周期主要指的是狭义的项目生命周期,我们以传统的软件项目为例进行介绍。
对于传统软件项目来说,它主要包含以下五个阶段:
- 调研阶段
目的:居安思危[效益]
人员:相关人员,侧重于产品经理
节点:多角度思路/方案,最后领导拍板- 设计阶段
目的:方案可视化
人员:产品团队主导,开发、测试、运维参与
节点:产品需求文档[功能分析、界面等]、项目里程表[开发、测试、部署时间节点等]
【效果图确选之后,架构师[技术选型]:技术文档[开发模式,前后端技术/框架/数据库/缓存/图片存储... ]】
【技术文档】 --> 耗时,所以大部分公司都是一般开发一遍书写技术文档- 开发阶段
目的:方案运行
人员:开发团队为主,运维团队参与
节点:阶段项目正常运行
【开工、编码实现】根据人数、技能进行功能拆分,开发完成之后,进行项目联调,开发环境和线上环境一致,可能需要运维人员协助。方案以代码形式运行起来即可。- 测试阶段
目的:保证项目功能完善
人员:测试团队为主,运维、开发参与
节点:项目功能符合要求
【集成测试】测试人员为主,其他为辅,按照《需求文档》进行测试,测试不符合要求有开发人员进行调整,测试人员进行:组件测试,功能测试,非功能性测试等- 运营阶段
目的:项目部署+运行维护
人员:运营团队为主、开发/产品团队参与
节点:项目终止、功能迭代等
【项目部署】项目预发布[测试并发、支付等] -> 项目发布
运维团队全过程参与
- 新型项目生命周期
对于传统的软件项目来说,由于 项目组织 和 团队组织 的特性导致传统的软件项目开发的过程中,文件的主导作用很大。而新兴的软件项目来说,项目的软件架构和团队组织架构都发生了千变万化,而且新旧项目生命周期的关注对象也发生了很大的变化,在新型软件项目管理中,
人/团队沟通协作
占到了很大的主导作用
。项目阶段
软件架构:
- 对于新型软件项目来说,项目在开发的过程,跟从项目整体功能入手的传统软件不一样。新型软件项目在开发前一般会对项目进行软件功能架构的拆分,拆分成多个彼此独立的子功能项目(降低耦合性),子项目彼此间约束很少,每个子功能项目都可能基于传统的项目的阶段特点对项目团队进行合理拆分。
团队架构:
- 由于软件架构的特性,每个子功能项目可以独立组件研发团队,新型软件项目研发团队主要是靠
人/团队沟通
协作来主导项目的开发进度,这就对人员的综合能力要求很高,相应的对负责人的专业技术能力要求更高了。针对子功能的迭代
- 计划阶段 -> 编码阶段 -> 测试阶段 -> 部署 -> 预发布 -> 发布 -> 反馈小团队
- 大量的子功能圆环嵌套进行并进开发。基于传统的开发模式演示出来。
- 新型管理方法:PLAY -> CREATE -> VERIFY 突出人/团队的沟通协作能力。
- 小团队:小而精,发挥优势,自己定义优先级,传统的项目推导由文件来推导项目的发展,自己团队的主观能动性推动项目的发展。
项目实施:
基于上面两方面内容的变动,导致我们项目编码的各个阶段发生了非常大的变化。
常见术语:由于软件架构导致的组织变化,软件开发的过程中出现了非常多的新鲜名称:
常见词语解决的问题:
- 持续集成: 开发团队和测试团队之间的无障碍协作沟通
质量内嵌
- 敏捷开发:在持续集成的基础上,产品团队和研发团队无障碍协作沟通
需求准确
- 狭义DevOps: 在持续集成的基础上,研发团队和运维团队无障碍协作沟通
快和稳,高质量发布
- 持续交付1.0: 各团队的无障碍协作沟通,实现项目产品的端到端交付能力,体现的是产品交付的完整过程
产品端对端的交付
新型软件生命周期效果图
新型软件项目周期.png
- 将项目拆分为多个子功能
- 持续计划、开发、测试、部署为一个,子功能1完成之后进行子功能2
- 在某一个时间点内,团队中的每一部分人员均在工作,达到了人员的高质量、高效使用。
- 最终目标:可执行的高效率高质量发布产品。