原帖 | Jack | 2024-09-17 21:54 | 👍0 | 阅读约1
Q:之前参与的一个项目开发、最开始的需求是设计一款上位机能读取本地某类设备的数据、后来做着做着又突然需要数据能上云端、再后来又突然要求能读取其他设备(别人生产的设备)的数据并且能进行数据管理,再后来又要求能将软件提供给不同客户进行设备管理,要求能生成不同的数据图表,最终开发了一年多PC端的同事表示玩不了了要重构才行,后期的功能开发周期也是越拉越长,维护起来也越来越麻烦,最终做出来的东西和一开始想要的完全不是一个东西了.想问一下这个主要问题出在哪里?
答:
这个项目的主要问题在于需求的频繁变更和需求范围的扩展(需求蔓延,Scope Creep),可以说是需求管理失败了,再加上初期架构设计没有充分考虑到这些潜在的扩展性需求,导致后期开发和维护的复杂性不断增加。你提到的这几个功能,比如上云,这些都是重大需求变化,如果可预见后期会有这些需求变化,就应该在程序设计之初就进行顶层设计,提前设计可扩展的程序架构,以及使用模块化设计。这样后期如果新增需求,改动时,无关的模块受到的影响将比较小。
你说的那个人要求重构,其实就是最开始你们没有进行架构设计,导致后期技术债务(比如使用大量的重复代码、耦合的模块、未优化的功能)太多了,随着需求逐渐变更,技术债务进一步加大,最终没人敢接手。
为什么需要尽早补上架构这一课,见 为什么要尽早接触架构设计知识?。
相关笔记