在感觉项目代码的构架不行的时候,你们会怎么办?
来源:互联网 发布:教师优化作风的意义 编辑:程序博客网 时间:2024/05/21 15:49
十多年的软件研发经历告诉我,所有的项目、系统到后期都会遇到类似的问题,其中人员变动、需求变更是最大的原因。
在日本,很多银行的软件系统还在使用COBOL,美国国防部核弹部队仍在使用软盘,估计很多年轻的程序员连软盘什么样子都不知道。那么他们为什么不推倒重来呢?归结起来其实就是风险和成本的问题。
一个系统在生命周期可能十年或者更多,在此期间,如果没有完整的开发、运维和更新记录,你甚至连一份完整的需求、设计文档都没有,在加上人员变动,有时候系统里面一个看似很tricky的东西修改掉就可以造成系统的重大故障,在这种情况下重新整理需求本身已经不可能,把系统推到重来更简直是自杀。
就风险来讲,本人曾经在金融IT行业做过,参与过银行的核心系统升级和切换工作,开发工作动辄就是上千人的开发团队,涉及厂商上百家,预算以亿计,开发完成后升级切换的过程跟卫星发射有的一比,前期演练N多次,切换现场有指挥中心、科技队伍、厂商保障队伍、后勤队伍,医务保障队伍一应俱全,如果切换失败影响营业,不但可能造成巨大的经济损失,银监、客户也绝对不能饶了你。
就成本来讲,一个系统到了一定年限一般来说有两种可能,第一种是系统已经逐渐不再符合市场需求,起到的作用越来越小,那么,花大成本对系统进行升级改造和替换都不再划算,用最小的代价保证系统可用就行。如果一个系统市场前景越来越大,原有技术架构和设计或者功能设计不满足市场需求,那么就有必要花成本对系统进行升级改造或者干脆推出换代产品进行替换。
回到话题,怎么样才能避免项目/系统后期一团糟的情况呢:
1. 制定系统设计、开发规范和研发流程,并严格遵守,最大限度的避免人员变动造成的系统架构、设计和代码风格的变动。
2. 把系统重构贯彻到每次代码变更的过程中,不符合规范的代码、有问题的代码发现了就修改掉,不在系统的伤口上撒盐。不因为时间紧迫而错上加错。
3. 周期性的进行代码Review和小范围的重构。
在敏捷开发里面常说的一句话是:make it work, make it better, make it perfect。先把系统跑起来实现商业价值,再不间断进行优化,把这三句话贯彻到每一个研发周期中,就能最大可能的延长产品的生命周期。
- 在感觉项目代码的构架不行的时候,你们会怎么办?
- 2015061203 - 如果感觉现在的工作很无聊会怎么办?
- 在学校的时候,自己做过的一些项目,感觉挺有成就
- 感觉自己干什么都不行,怎么办?
- 项目1 我的代码真的不行呀
- 为什么我试用你们的软件,连接设备的时候会假死机?
- 挺好的。在这里感觉特踏实,有底气。你们是中国的骄傲。
- ipad 在宿舍可以连接上网,在办公室ipad连接d link的时候就不行
- 为什么项目在启动调试的时候,会转到Google搜索?
- 在Eclipse中每次运行android项目的时候总是会自动重启开启模拟器
- 【GIT语句】在用coding.net做项目的时候经常会用到
- 如果在做项目时,发现自己在规定的时间内肯定完成不了时,你会怎么办?
- 解决在极光推送的时候会出现一个 JPush提示:缺少统计代码
- eclipse 在debugger的时候有时候会卡住不动,既不报错也不向下走代码
- 天气这么冷,你们是怎么保证写代码的时候手不冷的呢?
- 基于Windows Sdk 与visual C++2008 在微软平台上构架自己的语音识别引擎(适用于windows 2000/xp2003/vista windows CE /mobile),本项目开源,源码请留下你们的Email,我给大家发
- 基于Windows Sdk 与visual C++2008 在微软平台上构架自己的语音朗读引擎(适用于windows 2000/xp2003/vista windows CE /mobile),本项目开源,源码请留下你们的Email,我给大家发
- 阅读的时候走神怎么办?
- 在js在页面中添加百度统计代码
- python的包
- React-native防多次重复点击
- leetcode-456. 132 Pattern
- 解决新建maven项目速度慢的问题
- 在感觉项目代码的构架不行的时候,你们会怎么办?
- uwsgi搭载nginx部署django
- ArrayList、LinkedList、Vector的区别
- javascript中with的用法
- OPENGL
- jquery笔记
- js获取当前城市,并根据当前城市获得当地天气
- fastjson使用遇到的问题
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(六)maven整合SSM