Q:之前参与的一个项目开发、最开始的需求是设计一款上位机能读取本地某类设备的数据、后

🔍 溯源 ✍️ Jack | 📅 2024-09-17 | 👍 0 | 原帖↗
#知识星球 #立芯嵌入式 #来源/立芯星球 #技术/项目实战 #质量/精华 #技术/架构设计 #技术/需求管理

原帖 | Jack | 2024-09-17 21:54 | 👍0 | 阅读约1

Q:之前参与的一个项目开发、最开始的需求是设计一款上位机能读取本地某类设备的数据、后来做着做着又突然需要数据能上云端、再后来又突然要求能读取其他设备(别人生产的设备)的数据并且能进行数据管理,再后来又要求能将软件提供给不同客户进行设备管理,要求能生成不同的数据图表,最终开发了一年多PC端的同事表示玩不了了要重构才行,后期的功能开发周期也是越拉越长,维护起来也越来越麻烦,最终做出来的东西和一开始想要的完全不是一个东西了.想问一下这个主要问题出在哪里?

答:
这个项目的主要问题在于需求的频繁变更和需求范围的扩展(需求蔓延,Scope Creep),可以说是需求管理失败了,再加上初期架构设计没有充分考虑到这些潜在的扩展性需求,导致后期开发和维护的复杂性不断增加。你提到的这几个功能,比如上云,这些都是重大需求变化,如果可预见后期会有这些需求变化,就应该在程序设计之初就进行顶层设计,提前设计可扩展的程序架构,以及使用模块化设计。这样后期如果新增需求,改动时,无关的模块受到的影响将比较小。

你说的那个人要求重构,其实就是最开始你们没有进行架构设计,导致后期技术债务(比如使用大量的重复代码、耦合的模块、未优化的功能)太多了,随着需求逐渐变更,技术债务进一步加大,最终没人敢接手。

为什么需要尽早补上架构这一课,见 为什么要尽早接触架构设计知识?


相关笔记