当前位置:C++技术网 > 资讯 > 如何开发一个软件:4 设计式、补丁式和增量式开发,你的开发属于哪一种?

如何开发一个软件:4 设计式、补丁式和增量式开发,你的开发属于哪一种?

更新时间:2015-06-24 16:36:24浏览次数:1+次

    一个人独立开发一个软件,采用的方式,多数是以个人想法加以实现。以个人的自由和整体了解,也就省掉了很多麻烦事,也因为个人开发属于自发性,没有他人的强制性压力,比较随意,很多都是想到哪里就做到哪里,做的不爽了或者时间不够了就暂时不做了,或者直接就不做了。并且因为是个人的作品,要求比较低,对于程序的稳定性、完整性和扩展性都缺少完整考虑,很少对纯粹的作品加以升级,当然不排除有。然而这些特点造就了个人开发的特点。在面对大项目开发时,我们要转向正式项目的开发,然而个人开发的模式已经不合适,我们如何转变,我们先从两种开发模式谈起。设计式开发、补丁式开发和增量式开发,你属于哪一种?
    回想起来,我也做过不少小软件,有控制台的,有窗口的,不过规模都比较小。开发周期也都比较短,并且都有那么一两次升级。有一个比较大一点的,升级次数最多,是一个记事本软件。因为系统记事本实在是太简陋了,然而Word、WPS这样的软件对于平时记点东西有实在是太大了,启动太慢,适用于办公,而不适用于个人平时的日记心得等类型的记事,因此,便以富文本的形式开发了一个记事本软件,叫做完美记事。在网上可以下载到,只有PC版的,win7系统直接使用,xp要按照.net framework2.0 。完美记事则是多次更新,最后一次更新是2014年上半年,因为目前时间紧张,也暂时没有升级这个软件。虽说是一个小软件,但是我个人想法的完整实现,简洁实用。只有一个工具栏,然后就是一个文本编辑框,底部有一个统计字数的状态栏,以及显示自己签名的指示标签。然而,在软件中,却包含了文本一键加密和解密、软件个性设置(含主题设置)和云记事等三大组件,这些组件使这个小软件不再那么简单,使用却是很简单的。还有一些常用的小工具比如插入日期以及日记头等。就是这么一个软件,表达出了个人的想法。这也是多数喜欢编程的人的做法,用软件来实现自己的思想,能够获得慢慢的成就感。
    为什么现在我暂时没有更新了呢?之前是怎么更新的?
    或许暂时没有更新的最大原因就出现于此。在做这个软件时,基本就是,想做就开始做了,然后边做边学,边学边做。有什么好的想法就加上,不断的完善软件,按照提出的想法,在网上查阅资料,了解开发的思路,然后自己实现。甚至有时候,必须自己从零构思。属于逻辑性的实现思路,则完全可以由个人来构造,而属于纯技术的,则要请教与网络。基本功能都实现后,后续增加的小功能也就容易,但是在功能达到一定量后,一个工具栏放不下了,然后就采用了下拉式,但是慢慢的级数变多了,从而并不那么快捷了。因此,也就暂停了。而期间的更新,则是想到就加上,加上就更新的模式,因为之前没有整体设计,就出现了,之后实现的与之前的实现不能很好的融合在一起。这样的小功能加多了之后,导致整个思路逻辑变得复杂,扩展性和可维护性很差。这是暂停更新的最大原因。而下一次升级,我想重构代码,设计一套完整的软件方案,同时保证稳定易用扩展性好且个性的记事本。然而,设计一个软件并不是一件简单的事情。只有成、从长计议。
    最近在工作中,开发一个功能,因为是公司的产品,必然要求要高很多,否则日后会出现各种各样的问题,用户反馈多了,软件的口碑就差了。并且日后升级维护也是很艰难的,因此就特别注重整体设计,在这个方面,加大了力度,尽可能考虑周全,提高稳定性。因此联想到之前的个人开发模式。
    设计式开发、补丁式开发,这两个词是我个人的叫法。可能与标准叫法不一致。标准叫法请参照相关书籍。
    补丁式开发则是个人开发最常见的。就是上面所讲的软件开发的一个过程。想到一个功能,就补上一个功能,很多都可以软件整体不合拍,感觉很别扭。虽然在表面上看,是一致的,但是因为内部实现杂乱,维护是不方便的,且容易在维护时不小心带来新问题。这种维护是最揪心的,永远都修复不完。这时候就需要重构,从根本上解决问题,那就是进入设计式开发模式。
    设计式开发的好处显而易见。设计式说的是在开发一个完整的软件前,必然先做好设计,写成设计策划,有一个完整的设计图和软件运行结构图。可以看到软件的架构。这种开发主要针对的是正式项目的开发,因为正式项目多数是由多人参与的,或者一个人开发后,会有他人来维护,如果在整体上没有设计,随性开发,必然给维护带来极大的不便,程序扩展也是很难的。设计式开发起来,维护,都是很容易的,不容易带入新问题。但是个人开发必然会经历这个阶段,你才会深刻理解设计式开发的重要性。只有到了你无法在坚持原有的开发思路下继续开发了,你就不得不寻求一个根本解决问题的方式,从而转向设计式开发,来重构整个软件,从而极大提高软件的健壮性。
    设计软件方面,本人写了《如何开发一个软件1_设计原则》、《如何开发一个软件2_设计步骤》和《如何开发一个软件3_实现原则和流程》,如果你感兴趣,欢迎阅读和点评。
    而增量式开发则与补丁式不一样。补丁是一种临时解决问题的方案,多数与软件整体架构不能融合。而增量式开发则是基于设计式开发的框架下的更新机制。因为设计式开发设计好了扩展机制,可以隔离每次开发的错误关联,也使软件开发维护时带来新问题的几率减少。每次只要将增加的部分保证正确通过,借助框架提供的机制,来实现增量的功能。也使增量开发的工作量大大降低,并且,你无需了解框架如何实现,只要知道框架提供的服务即可。你的开发时所要掌握的东西很少,只需要集中精力解决自己的问题即可。这也是各种框架要做到的。这个框架不是什么MFC框架等,是你自己在一个软件中构建的一种机制,可以简单也可以复杂。所以也不必对框架这种东西望而却步。你完全可以写出一个简单的框架。一个框架复杂的地方就是整个设计逻辑,能够完整的为整个软件服务。
    这些是我个人的开发中所领悟的。补丁式开发,是听同事说我们个人开发就像打补丁,我觉得这个很贴切,就以我们自己的案例来讲述这个过程。确实如此,从而进一步挖掘出这三种模式,也稍微分清楚了个人开发和项目开发的区别。个人开发,如果是没有经验的,基本都是一直在打补丁,写到哪就打到哪。只要针线拿的好,没有补丁打不好。而正式项目的开发,考虑的更为长远,稳定性、可维护性以及扩展性的要求都很高,因此需要注意的问题就很多,如果不加以设计,是很难长久发展的。一旦陷入重构,那将是花费更多的时间去开发一次,这样代价就很高。
    而我们既然知道这些,我们需要在平时开发时,注重这方面的训练,不管是多么小的软件,都要有升级的想法,有扩展的想法,要做一些基本的设计,根据软件的复杂性,做相应的设计。如果设计式开发经验丰富,你就很有可能会被提升为开发团队的指挥的地位,因为你可以把握整体的设计,而其他人则不能,这就是过人之处,而这些完全可以在平时的个人开发中加以训练,并不是一定要在工作中锻炼。如果你有心,你必然会成为一个优秀的人,否则,你即使在团队开发,也不见得会对这些体会深刻,也就做的不够好,不会脱颖而出。