什么是软体开发生命周期 (SDLC)?
2025年2月21日
常常听到人在谈的软体开发生命周期 (SDLC) 是什么。如果你上网搜寻软体开发生命周期 ,多半会看到以下这样的图。可以看到,要开发一个软体产品,不仅仅是程式的实作,还包含其他重要的元素,往下我们会逐一说明。
规划
在软体开发周期的起点,是规划阶段。在规划阶段会是由产品端,针对使用者与利害关系人的需求,来收敛出要开发什么 (what),以及为什么要开发该功能 (why)。
在 ExplainThis 写过的《软体工程师如何做好专案技术负责人的角色?》一文中有谈到「先前有机会跟一位 L7 职级的资深前辈聊,他提到不要一看到需求就开始想技术。更关键的是先从使用者的角度出发,跟产品端一起把要解决的问题定义好。事实上,产品经理想不完整,是很常见的状况。想要把专案带起来,称职的技术负责人,不会抱怨产品经理这个没想到、那个没想到,而是会主动跳出来,一起把产品端没想清楚的地方厘清好。唯有在厘清好需求后,才回过头来思考需要什么技术解决方案」。
对此,工程师在规划阶段,不该只依赖于产品经理,而是要采取主动的思维,确保要解决的问题,真的能带给使用者价值。要能做好这件事,推荐温习 E+ 的 《工程师可以如何培养产品思维》 一文。
设计
在厘清完需求后,软体团队通常不会马上进到开发实作,而是会先有完整的技术设计。这样做才能避免因为缺乏良好的设计,导致在未来要维护程式时,会因为程式码可扩展性差,导致很难维护;又或者因为缺乏妥善的设计,导致当未来流量逐渐变大后,效能与成本出现难以克服的瓶颈。
在设计阶段,除了《软体工程师如何做好专案技术负责人的角色?》 主题文谈到的要点外,也推荐读者可以温习 E+ 的 《软体工程师如何做好技术设计?》 主题文,来了解要做好技术设计,应该要注意什么面向。
实作与测试
在完成技术设计后,软体团队才会真的进到实作阶段,而实作完后会进一步测试来确保程式码有如预期进行。目前软体业界的趋势,有逐渐测试左移的倾向,所谓的左移是指把测试的责任由 QA 转移到开发者。
当某个人需要为自己所做的结果负责时,做出的成果品质会比较高,因为如果品质不高,后果不再是由别人帮忙扛,而是自己得负责。测试就是为软体的品质把关,所以当测试是由开发者负责,当程式出问题时,就不能甩锅说是 QA 没测到。当没办法甩锅,需要自己承担时,在写程式就会更加小心谨慎,以免未来的自己要帮现在的自己擦屁股。
对此,现代软体团队中,由开发者来写单元、整合,以及端到端等不同测试是非常普遍的。甚至有测试驱动开发(TDD) 的方式,在程式实作前就先写测试。即使不是所有人都认同 TDD 的方式,但由工程师来写测试这点,是目前社群普遍一致认同的观点。
部署与维护
在完成实作与测试后,软体还需要透过部署才能真的让使用者用到。在部署阶段,有很多细节需要照顾,推荐读者可以温习 《软体上线流程中有哪些阶段?》 以及 《什么是功能旗标(feature flags)? 为什么要用功能旗标?》 一文。
在完成上线后,因为软体持续被使用者用,可能随时会有各种意外。要能够确保有效及时捕捉到问题,推荐可以温习 《软体工程师该如何做好监控(monitoring)?》。在监控时遇到问题,也会需要有人立即去解决,这时需要团队有人负责轮班,在《软体工程师该如何值班(on-call)?》一文有详细的讨论。
在了解完软体开发的生命周期后,接下来我们我进一步谈,在规划、设计,以及实作与测试阶段,工程师可以如何善用 AI 来协助加速自己的效率与生产力。
阅读更多
在谈完以上的流程,接下来我们会进一步谈在上线过程中要特别注意的事、避免踩到的误区。 这些点我们在 E+ 成长计划的主题文都有更详细谈到,推荐感兴趣的读者阅读。
本文为 E+ 成长计划的深度内容,截取段落开放免费阅读。欢迎加入 E+ 成长计划阅读完整版本 (点此了解 E+ 的详细介绍)。