需求的变化就是创新的机会
2008-04-09 04:15:55来源:互联网 阅读 ()
软件设计师不应该害怕需求的变化,更不应该为需求的变化而烦恼,任何需求的变化都可能蕴藏着巨大的机会,这种机会就是创新,这种创新就是未来的市场机遇,就是企业的进步的推动力。创新源于需求的不断变化。这是多年来从事软件开发工作的一点非常深刻的体会,这种变化包括各个方面的,可能是硬件的变化,可能是操作系统的变化,可能是用户群的变统统可以归结为用户需求的变化。我们的软件产品就是在需求不断的变化之中发展的。
如果我们为用户编写了一个软件,不管具体实现的功能如何,只要上述的几种变化出现,我们都不得不不对软件的设计进行调整,有时可能需要对系统的整体框架进行调,甚至重写部分或全部的源代码。刚开始学习编程的时,总是希望一条语句表达尽可能多的含义,梦想一个算法解决所有的问题,一个程序满足所有用户的要求,但这是不可能的,因为我们周围的世界处于不断的变化之中,今天你写的程序完全满足用户要求,一段时间之后,用户的系统升级了,你的程序在新的系统上运行就会产生错误,所以你必须更新程序以适应这种变化。这种变化还包括机器主板的变化引起硬件的冲突,某种型号板卡的停产或改型,用户特别指定的硬件设备等等。另外,我们的头脑不可能聪明到完全可以预览未来发生的事情,所有很难设计一个一劳永逸的软件,另外市场的选择,竞争对手的压力,也逼着我们不断的修改设计。
需求的变化是一个客观存在的事实,软件设计人员必须正确的面对这样的事实,不要指望你辛辛苦苦编写了一年的代码之后,你就可以高枕无忧,尽管你对软件的架构、算法处理的非常好,甚至可以说是完美,然而所有的你所津津乐道的那些完美的设计,都是相对的,当用户 的需求开始发生变化的时候,他们可能提出要增加一个新的功能,那么你很可能要改进设计。 除非你设计的东西没有人使用,否则对设计的更改总是不可避免的。
2000年底的时候,我的第一个商品化软件完成,尽管我不觉得多么好,但是在同其他厂商的竞争中赢得了用户的青睐,听到从市场上反馈的信息,我当时的感觉非常好,然而,很快我不得不修改我的代码,除了程序中存在的一些BUG之外,在用户群不到增加的情况下,用户的要求开始发生变化了,例如:A用户希望整个界面的字体采用楷体比较好,B用户50多岁的人比较多,希望字体能够大一些,可以看得清楚,C用户希望界面上的“医生”改为“医师”,D用户希望界面上的字段数量少一些,等等诸如此类的。关键是有些用户的需求是存在冲突 的,如果程序满足了张三的要求,而张三所要求的东西恰恰是李四要极力避免的,所以对于使用VB时间不长,经验不多的我来说,只能靠保留多个版本来解决这样的问题,我为每个用户保留一个备份,这样每个用户的要求都可以满足了,但是后期的代码的维护几乎让我陷入绝望的境地,试想一下,一个存在问题的函数,需要你在10个甚至更多的版本上同时修改,是一种什么样的感觉,而且每个版本的程序都多少有点区别,任何一次修改,你都必须小心翼翼,一不留神就会产生一个新的BUG,这种更改让人精神紧张。或许,我应该使用VSS之类的工具管理代码,但是我当时根本不知道世界上有这样的一种工具。所以在万般无奈之下,我必须想办法拯救自己,可不能陷入到需求变化和版本层出不穷的深渊,于是我开始构思下一版的软件,这个软必须能够解决现有版本的程序所面临的一切问题,同时可以支持网络版的功能。
在2002年,与后来的两个同时鼎力合作,终于在11月份完成的这个新版本的程序,整个程序界面上的控件都是在程序启动时动态创建,可以直接编辑,编辑完成之后将界面信息保存到数据库中,下次启动应用程序时再从数据库中动态加载界面,界面上的字体,颜色,甚至整个界面的风格都可以由用户自己选择。当这个软件第一次推出的时候,用户也比较喜欢,很多设计非常新颖。直到今天,这个版本的程序还在不断的完善,但是程序的样子与2002年11月相比,已经大不相同了,现在的程序更加美观,看起来更加专业,使用更为方便,也更稳定。但是这个程序比较庞大,因为它要同时支持Access和SQL Server数据库。这个程序也就成了我们的产品由单机版向网络版过度的一个桥梁。这就是我们的第三版软件。
可以说第三版软件彻底解决了第二版软件面临的问题,但是在网络方面遇到了挑战,那就是所有的网络版软件都面临的问题:流程的变更和业务规则的变更。第三版的设计初衷就是为了解决第二版遇到的问题,不过为了节约工作量,同时兼顾了网络版的功能,这就导致了第三版代码比较多,其中经常出现是单击版还是网络版的判断。对于网络版的用户需求的适应能力,第三版显得有点吃力了,我们不得不在程序中专门为某个用户增加一些特殊的处理,当网络版的用户快接近10家的时候,我们的噩梦又开始了,当然比第二版要乐观一点,因为VC中可以使用预编译条件解决了不少的问题,例如一个对话框资源可以根据不同的条件显示不同的外观等等。由于针对多家用户添加的那些if else实在是太多了,修改一个地方,一不小心就会影响其他的功能。当然这也与第三版程序结构的设计不太合理有关系,因为这个版本的程序我依然是在现蒸现卖,卖到2005年底的时候,我对于VC才有了点感觉,什么是面向对象的设计,什么是设计模式,系统架构等等的概念开始接触和学习。
在2003年非典刚刚开始的时候,我们的第一个网络版用户开始装机,从那时起第三版软件开始了网络版的考验,从第三个网络用户开始我就不得不规划第四版软件了,这个新版本的软件必须同时解决第二版和第三版所遇到的所有问题,同时可以非常方便的解决流程的变更和业务规则的变更问题。2004年2月,我正式开始设计第四版软件,这个软件可以设计界面,设计流程,增加和编辑业务规则,而且支持脚本和二次开发,到2005年11月,我们的BUG管理器通过第四版软件配置完成了,现在用得很好,到元旦前,估计我们得计划管理器也可以配置出来。这个版本的软件就像一个平台,可以搭建起几乎所有的数据库管理软件实现的功能,从而开发人员可以自如的面对用户需求 的变化。当然,并不是所有的需求都可以在不改变程序代码的情况下实现,但是相对于第三版软件,新版本的软件已经很优秀了,至少我们不需要为了实现每个用户的要求而修改程序的代码。另外,同第三版软件相比,该版软件的系统架构好多了,尽可能采用面向对象的设计,关于设计模式的很多规则也应用了不少。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:软件工程之需求分析(二)
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash