doubanclaimb46c1b29d5fd7bb5
again~
CHANGE! (from "Head First Design Pattern")
无论我们对一个应用程序的需求分析的多么到位,我们的设计做的多么的好,我们仍然需要面对变化带来的一系列问题。我们必须不断的改进我们的程序,否则它会很快“死掉”。
有时候我们不理解,为什么一个看起来相当简单的系统,在开发过程中竟然会面对如此多的变化。有时候我们不断的怀疑自己的能力,我们不停的在改进软件,但是它还是不能让客户完全满意,总是有新的变化要加入到软件中去。我们为此寝食难安。
俗话讲“追本溯源”,我们必须首先理解这些变化究竟是如何产生的,也许才能有对策来应付如此多的变化。如果我们不清楚变化产生的原因,我们似乎很容易迷失在变化带来的迷魂阵中,彷徨,无奈,甚至绝望。
虽然变化是多样的,但是肯定是有来源的。
想想我们从哪里开始入手开发软件的吧。Aha,用户需求分析!我们收集来自用户的需求,用于建立我们对于系统开发目标的认识。所有的一切都来自用户的需求,除非,我们仅仅是在做一场游戏。问题是,用户他们本身了解自己想要什么么?很显然,对于绝大部分用户,答案是否定的。
处在不同工作岗位的人对于自身的领域问题的认识是截然不同的,不要指望一个普通的员工能够了解整个系统的方方面面。我们通常的软件需求的获取来自为数不多的“需求提供者”,他们可能是公司的管理人员,于是他们会遗漏很多具体工作的细节;他们也可能是一个具体的工作人员,但是他对别的岗位的工作完全是一知半解。如果我们幸运,可能面对的是对整个目标领域十分了解的专家,我是指那种真正的专家,他们研究整个问题领域,他们可以通过计算预测领域问题,他们可以说出大部分的细节问题。但是从某种意义上说,这样的人几乎很难找到,即使有,他们恐怕也仅仅对于常态问题能够给出详细描述,而对于非常态问题,可能会有所遗漏。而对于一个复杂系统来讲,可能一些非常态问题一个领域从业人员干了一辈子也未必见到,但是却需要在程序中有所考虑,因为程序运行的速度如此之快,以至于会经常出现百年一遇的非常态问题。总之,不要指望从用户那里获得一个完整的、清晰的需求。这是变化的第一个来源,在需求分析的时候不可避免的产生了。
于是,我们竭尽全力的去挖掘需求,我们把分析人员放在现场和领域专家一同工作,深入方方面面,争取给出一个相对比较完整,比较清晰的需求分析报告。但是,相当多数的领域专家对于计算机系统和软件实现并没有什么概念(应该说是全部,因为他们如果了解这方面的话,就不需要我们去给他做软件分析设计了)。于是我们经常发现,我们根据采集的需求构造的系统实现交给用户试用的时候,他们会突然间想到很多新的需求。因为他们不知道计算机能做什么,只有看到一些具体的实现之后,才能想到他们想要的东西。而随着实现的不断改进,他们总能想到新鲜的东西。这样其实也不错,至少他们觉得计算机很酷,居然能做这些,让他们不断的接近自己的梦想。还有一种可怕的情况,我们把按照需求构造的软件给用户看的时候,他们会瞪大眼睛,用一种让人心碎的口气说到:“这根本不是我们所需要的!”……变化又来了,用户会对自己需求的看法进行变化,通常他们看到了软件中新的可能性或者自己内心深处原本想要的一些东西。
原本,我以为需求的变化基本来自用户,这些计算机盲不清楚他们想要些什么,不可理喻,好端端的就要改变原本的需求。但是我在软件的开发过程中发现了一个在很久以前我根本没有注意到的问题。我们开发人员自己也会要求对软件系统进行改变。这种改变可能来自:我们开发人员随着开发的进行,对于领域问题有了自己的一个深入的认识,对问题的处理产生了新的看法,决定用一种更好的方法来实现领域问题;而有时候,我们发现原本设计的结构会带来一些实现上的困难,比如循环依赖,类爆炸等等各种各样的问题,我们主动的会为了下一步的开发而改进原本的设计,这同样引入了对于系统的变化。可以这样说,就算用户特别好糊弄,根本不会变化需求(通常这样的用户不付钱),我们开发人员本身也会带来变化。Anyway,谁会容忍自己的程序没有达成自己的想法呢?程序员本身就是一群骄傲自满,非常自我的极端主义者,他们甚至会为自己的想法争的面红耳赤,拼的头破血流。
还有一点也是十分重要的,IT业的发展速度是惊人的,其他领域的发展速度也同样不慢。这是一个繁忙的时代,人们不停的前进,只为了能勉强跟上时代的步伐。技术在不断的变化,就在5年之前,谁会想到今天Web应用的模样?我们的软件也必须在多个方面变化,平台,开发环境,应用领域的变化,新的技术应用等等等等。如果不变化,那就只能失去竞争力,等着从这个地球上小时吧。
变化是多样的,我们无法准确预测一个系统会在开发过程中要面临什么样的变化。整个世界就是在变化中不断的前进着。与其抱怨自己的开发总是遭遇变化,不如好好的思考关于变化的本质问题,积极的去面对变化,在软件中包容变化,更加有效的应对用户和自己的漂泊不定的心。使用户满意的软件才具有存活的资本。
当然,这也不是说因为变化不可避免,我们就不必在需求收集和系统分析阶段付出努力了。这个世界的迷人之处在于未来的不可预测,而这个世界的合理之处也在于又一些规律可以让我们大概猜猜。当规律和实际结果逐渐比对的过程中,我们总是能找到一些更加准确的规律。我们只是不必为了做不到最好而烦恼,不必陷入过度设计和分析的陷阱。我们可以利用经验更好的处理变化,让自己和开发出来的软件适应变化。
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=807544
Hey,I’m back, and alive.
周六终于做完了学术报告,算是对自己一年多来在实验室的工作有了一个总结。从反馈上看似乎效果还不错,但是我自己觉得整个过程简直糟透了。心里的东西太多了,但是这个窗口太小了,我着急于把自己知道的东西倒弄出来,结果反而适得其反,我想我在实际做报告的过程中遗漏了大量的信息,因为我原本估算可能需要一个小时的冗长的报告,在四十分钟不到的时候就结束了,中间夹杂了一些停顿还。不知道师兄弟姐妹的真实感觉怎么样,我自己还是觉得糟透了,没有完全表达出我自己想要表达的全部思想,感觉因为几天没有睡好觉,思维有点麻木了,迟钝掉了。
不过不管怎么样,这个有点“恐怖”的紧张过程算是结束了,好也好,差也罢。至少老师觉得基本满意。That’s enough.而且在准备报告的过程中,通过总结,又产生了很多的好的想法。而且最开心的是找到了论文的一些基本立足点。我想大概下个星期应该能完成老师期望的论文初稿,经管可能还达不到老师的最终期望,但是至少可以给老师看看了吧。老师不断的给我们施加压力,总是感觉心慌气短,已经连续睡眠不足了。今天报告完毕可以稍微放松一下,中午回家就睡了大概两个小时。希望能缓解自己的“神经衰弱”吧。
因为太忙,以至于无暇写一些东西出来,说实话在忙起来的时候还真的没有时间更新Blog。这是不是反过来说明写Blog会耽误工作学习时间呢?这一点我还下不了一个定论。
这段时间也发生了很多事情,比如一直在一起奋战的几名同学调整到了校内实验室,一时间还有点怅然。老师给我换了一台机器,工作站,3G至强,1G内存,21寸液晶,250G硬盘,QuadroFX3400专业显卡,据说整机价格3万有余,用起来是很爽,同时也带来了更大的压力,搞得我连续两周只有周六周日会在家吃饭。而且头一次周六去实验室工作。这是一种某名的恐惧,感觉有无数双眼睛在看着我,如果我做的不够好,随时会受到指责。
至少,我现在有心情来更新Blog了,虽然已经很晚了。但是毕竟心里没有前几天那么着急了。不但清晰了自己的过去,整理的知识体系,而且清晰了自己的思路,明确了将来的工作目标。还是大有收获的。至于Blog,我想还是不能够经常更新吧,毕竟是研究生最后一年了,我要抓紧积累一些东西,同时还有一些重大的选择需要去考虑。夜了,Good Nightto Myself!
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=807540
时间过的飞快,一周的时间也是蛮快的。在这一周里,我又经常冒出一些想法,想要记录下来,不过因为时间不允许,加上先前和自己的约定,于是还是等到了今天。不过打开编辑器,发现已经忘的差不多了。有时候感慨仅仅会存在几个小时,甚至几分钟。就好像写论文一样,写的时候觉得自己写的真好,写过了以后一看,这叫写的什么玩意儿。有些想法在经过一周的洗练以后,就变得幼稚而无关紧要了。
周二买到了新的一起《程序员》,结果让自己大跌眼镜,《程序员》第三期竟然用了那么多的篇幅来做《Code Complete2e》中文版的宣传。这本书的确是不错的,但是是不是一定要大肆宣传呢?很明显这是商业利益。好书是要宣传的,但是放上一大堆没有任何意义的文字就太过分了。书评我们到处可以看到,不过评论到这个地步……广告啊广告,不是傻子都知道,这就是广告。《程序员》尽管是我现在唯一购买的国内计算机类杂志,不过每期值得我仔细读读的文章也就是3-5篇左右,而且还总有一些垃圾文字的存在(我不怕得罪人,我本来就是小人物),比如第三期里面的《软件开发版本控制工具点评》就有点非常不负责的味道了,如果这是一篇网文,或者是一篇Blog,都是不错的,但是放在众多专业人员关注的《程序员》杂志上,就有点太言之无物了,《程序员》篇幅有限,而且做为被广泛阅读的专业杂志,内容难道不应该更加专业一点么?
Wiki运行的不错,我得到了反馈,说我在上面维护的文档很有用处,但是和大多数小组Wiki面临的问题一样,如何不通过行政命令调动大家共同维护创作文档,分享经验,交流想法的积极性呢?目前来看,似乎还是讨论会和培训讲座更加有效一些,但是不可能每来一个人就要讲座一番。而我更不可能去给下下一届的人做讲座,所以,把文档留下来是必须的。当然我也可以不负责任,一走了之。但是那不是我的性格啊。好人难做,但是也要做好自己的本分啊,不能辜负了老师和同学的信任,更不能不负责任。
周五,我们导师过生日,我们实验室的学生凑份子一起给老师小办了一下。大家都很开心,每次的实验室聚会都是很开心的。而且铁一样的规律再次起了作用,“长江后浪推前浪,一届更比一届强”。在我们这届全面进入实验室以后,我们的师兄们逐渐退到了幕后,而时至今日,也是我们退出江湖的时候了,江山代有才人出,各领风骚数百年。能全身而退已经不错了,这是一个崇尚“年轻”的世界啊。娃哈哈哈……
不过因为导师的生日竟然忽略了高中老同学的生日,罪过罪过了,在此叩首谢罪,祝豆一切顺利,开心每天。
Flickr Leech ,一位有想法的达人做的Flickr工具,可以获取500张Flickr Interesting图片的缩略图,That really do help to me!
下一周计划全面整理自己的下一篇论文了,可能会安排自己更加忙一点。努力了!
BTW:
kkang:想请教你问题!请与我联系kli@jbcm.cn
这位仁兄,我已经给你的信箱去信,不知阁下有何指教,尚未受到您的回信。顺便,如果您有问题,是不是请主动联系我,而不是我联系您呢?
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=764631
Constructing
Recent Comments