软件工程化
1. 定义
想尽一切办法规避项目的风险,并能更快、更好的完成软件项目的交付和维护。
软件工程是研究和应用如何以系统性、规范性、可定量的过程化方法 去开发和维护软件, 以及如何把经过时间考研而证明正确的管理技术 和当前能够得到的最好的技术方法结合起来。
理论部分很有意思,就像文化沙漠遇到水。
2. 终极目的
多快好省-快速、高质量的完成软件工程(项目、系统)的交付。
交付周期越长,变化的可能性就越大,项目可能面临的风险概率就越高。
3. 演进过程
a. 瀑布流【略】
b. 敏捷开发【设计-开发-测试】
强调小步快跑(反复迭代、交付),交付产品周期短。
c. DevOps【设计-开发-测试-部署】
与敏捷类似,当强调开发和运维部署更加亲密无间(追求极致的效率和自动化)。
DevOps时敏捷开发升级版。
软件工程的演进过程和最终目的,想到我的座右铭:天下武功,唯快不破。
《整体架构图》的元素
前端研发规范 前端应用 前端标准研发流程 生成:工程模板生成、代码片段生成 构建:测试构架、打包构架 准入:规范检查、自动化测试 部署:服务部署、多环境管理 CI/CD: Jenkins Git/Github、代码(模板)生成器、webpack、babel、pretier Nginx Docker
前端工程化
【软件工程 + 前端 = 前端工程化】
前端工程化,是一种通过规范化、模块化、自动化等手段提高前端项目在研发、运维阶段的效率、质量。
| 前端工程化 | |||
|---|---|---|---|
| 方法 | 规范化 | 研发规范 | 规范化过程:沉淀研究的各个环节标准规范,统一研发流程和规范,为规模和自动化提供可能性。 |
| 模块化 | 基于模块(组件)开发 | 复用模块:将各项功能基于独立的模块去拆分开发,尽可能地做到模块级别的服用,从而大大提高整体效率和降低研发成本。 | |
| 自动化 | CI/CD | 自动化处理:基于定义的研发流程,建立一套自动化流水线,当特定动作发生(定期触发、Git Push)时,自动触发流水线执行CI/CO任务。 | |
| 理念 | DevOps | 【设计-开发-测试-部署】 |
CI/CD
Continuous Integration/Continuous Delivery(Deployment)持续集成/持续交付(部署)
它是一种工程化方法论,即通过自动化的手段、实现能持续的对项目进行构建、交付、部署,从而达到高效率、高质量的交付目标。
不得不说,老师画得图真的太好了,好生动好形象啊
CI/CD过分好了
| CI/CD持续集成/继续交付(部署) | |
|---|---|
| 持续集成 | 自动构建:当有新的变更代码提交(上传到代码仓库git push)之后,通过自动化的方式自动完成项目工程的构建、集成、测试等工作,并生成最终的发布产品。 |
| 持续交付 | 自动存储:能够将每次持续集成的构建记录、集成记录、测试记录、发布产品记录并保存下来,方便后续的追踪、监控、部署。 |
| 持续部署 | 自动部署:将指定(某一个持续集成的产品)的最终产品自动部署到生产环境中。 |