软件修改:设计有问题该怎么办?
牵扯的东西很多,请问该怎么改? 问题点数:100、回复次数:15Top
1 楼restart2001(...凤凰一辉...)回复于 2002-10-15 15:05:18 得分 10
那就是你前期工作没有做好,没有把系统需求搞清楚啊。。。
推倒重做,看看已经做的模块有几个可以继续用的。。Top
2 楼zhuma(竹马)回复于 2002-10-15 15:14:52 得分 10
重做需求(这次一定要做好哟)
抽取关键的数据结构和相应操作
尽量复用代码
如果项目不大
加上熬夜一个星期
应该能完成Top
3 楼w_rose(w_rose)回复于 2002-10-15 19:18:36 得分 0
可能的话,作为新的对象或者继承原来的对象,尽可能不要再原来内容上改。Top
4 楼stonespace(stonespace)回复于 2002-10-15 21:29:32 得分 10
在需求不可能在前期弄得很清楚的情况下,应该把体系结构设计得更灵活一些,可扩展性更好一些。可以参考《设计模式》。
如果在编码完成后修改,也可以考虑重构,以最小的修改改进结构的灵活性。然后再进行具体的修改。如果无法重构,就只能重新开发。
应该使用迭代开发过程,把风险消除在尽可能早的阶段。
Top
5 楼java_alias(六翼黑猫)回复于 2002-10-15 21:50:06 得分 0
楼上说得相当不错,PFPF~~~有些意思我也是知道,就是说不出来。为什么我上次出错的时候没有到这边问问呢,真是白痴阿Top
6 楼ziwuxian(子午线)回复于 2002-10-16 08:53:48 得分 10
如果你是用迭代增量开发,那比较好办点,可以重做一个迭代或者前几个迭代。如果不是,那就比较麻烦,说不定要全盘推倒,从头开始。
吃一堑长一智!Top
7 楼ziwuxian(子午线)回复于 2002-10-16 09:04:12 得分 0
如果采用迭代增量开发的话,那还好办,可以重新开发一个迭代或者前几个迭代。如果不是,困难就比较多,说不定全盘推倒,从头再来。
吃一堑长一智!Top
8 楼armu80830(此情可待)回复于 2002-10-17 19:33:49 得分 10
重做需求,有用的留下来,没用的重写Top
9 楼scalene(南瓜汤)回复于 2002-10-17 22:40:19 得分 10
呵呵,你这样问不出什么结果的。有可能需要结构性的调整,有可能只能做做打补丁的工作了,甚至有可能Drop整个项目才是明智的选择——这要看你具体的问题是什么,你现在项目完成的情况怎样,你还能容忍多大的付出。
你还是一个一个问题的问吧,每个问题讲清楚些,这样才可能有人能够帮的了你。Top
10 楼bydpdwz(蚊子)回复于 2002-10-18 09:03:48 得分 10
这几乎是每个程序员遇到过的问题吧,
简单说两点:
1、首要的任务是分析清楚这是一个什么性质的设计问题,是根本不能用还是效率不够高。还是无法灵活升级
2、根据上面得到的决定选择重新设计体系、部分代码重构或者打补丁
大家说的办法已经挺完整了,我想提醒一点值得注意:“效率优先”,在很多问题没有根本弄清楚的情况下,又没有足够长的时间和方法来全部重构,那就要注意先出一个demo版,清晰发现问题,要不盲目重构也无法保证第二个版本的设计不出问题,真要是那样,你就惨了。
重复一个设计的重要原则:架构具有灵活性和拓展性的体系结构。(多加一些看上去可以节省的代码到后来是非常值得的)
good luck.
Top
11 楼scalene(南瓜汤)回复于 2002-10-18 15:31:27 得分 10
to 蚊子:“多加一些看上去可以节省的代码到后来是非常值得的”。不完全同意。有很多时候初学者容易犯的错误是过分地追求重用和扩展性。1.要注意度的问题,真正可重用的设计还是比较少的,很多已经被设计成了模式,而模式也有一个应用环境的前提;2.具体问题具体分析:如果是一个Open Source的通用类库,灵活性和拓展性非常重要;对于一个应用领域的框架,灵活性和拓展性比较重要;如果只是一个特定的项目Code,对于灵活性和拓展性想得太多等于慢性自杀!Top
12 楼shshsh_0510(雨下了4年11个月零2天)回复于 2002-10-18 15:54:22 得分 0
说以前的问题都没用,现在,当做一个新问题来分析,对各个变更的需求分析其重要性、变通的方法,实在不行,就规划一下如何改吧Top
13 楼toulouse(猪头)回复于 2002-10-18 18:01:34 得分 0
列出要遵循的原则,然后作一个折中Top
14 楼bydpdwz(蚊子)回复于 2002-10-21 08:14:26 得分 10
to scalene(南瓜汤) :
让我想想,你说的也比较有道理,对于初学者是容易出现过多的关注拓展性而把自己深陷泥潭,在这个度无法掌握好的情况下,效率优先,专注完成可运行的第一个版本非常重要。因为新手往往不会遇到大型项目,所以不用过多考虑拓展问题,
现在的问题是楼主已经在说明,是设计出了问题,我想我们需要思考的是如何解决这个问题和如何避免这类问题的在此发生,要知道,当你完成第一个可运行版本,要开始第二个阶段的开发的时候此时却发现不得不推翻第一个版本的体系设计是多么痛苦的一件事情。
Top
15 楼scalene(南瓜汤)回复于 2002-10-21 10:41:48 得分 10
To 蚊子:"当你完成第一个可运行版本,要开始第二个阶段的开发的时候此时却发现不得不推翻第一个版本的体系设计是多么痛苦的一件事情"。
其实有几种可能的:1)你原来的设计确实非常烂,没办法再用了——那也只能扔掉;2)现阶段的目标制定的有很大问题,根本没有考虑到整个项目开发的一致性——重新制定阶段目标;3)可能目标和设计都有一些问题,但问题并没有你想象的那么严重,原有代码大部分或相当一部分可以利用——调整目标和方案,调整设计,应用一些设计模式和方法改进现有设计,可以得到一个比较好的折中方案;4)问题太大,项目工期和经费不允许——只好Drop掉。
多数情况,只要问题没有被拖到绝望的时候才想到去解决,或者最初的项目计划和市场目标太离谱,都是属于第三种情况者居多。而如何解决,则是一个比较细致的技术问题。这也是我第一个帖子让楼主把具体问题写清楚的原因。Top
16 楼bydpdwz(蚊子)回复于 2002-10-22 09:07:37 得分 0
nod,
楼主跑到哪里去了?可气!Top




