应用软件的根本着眼点

发表于天极网 转载CSDN等  发表时编者有所删改,标题为:《应用软件系列谈》(分成四部分)

               应用软件的根本着眼点

                    
作者:老单

   
抛开软件企业以盈利为目的项目操作和工程规划行为,应用软件在被抹掉“高新”光环、揭去“技术”面纱后,单从用户最终所得能到的应用实惠的角度来审视它,我们可以更清晰地看到我们给了用户些什么、我们还应该给用户什么,这会更准确地确定应用软件的实质性目标。
    为此,我们需要明确应用软件根本性的着眼点,并由此探索使应用软件开发脚落实地的思路和方法。

一、日常器具与应用软件
   
我们每个人在日常生活中都在使用日常器具,假如你处在一个经常要从商场中购买日常用品的家庭主妇的位置、或者家里的“大件”器物本身就是你购买的,那你会很容易地获得一种感受:你不用担心想要的东西会买不到,你家里需要什么器具、应该具有哪些功用、档次价格怎么定位才合适……这一切,商家会比你还考虑得多得多。面对琳琅满目的商品,我们所需要的就是根据自己的需要放心地挑选,商家给了我们太多的实惠,并且有质量、服务的保证,我们会心怀感激地、爽快地向商家掏出钱来的。我们在器具的购买和使用中得到了我们使用目标和价值收益的充分满足,这得益于器具生产、经营中的产家和商家的不懈努力。
    标志人类质的飞跃的先民们的石器,其实不过是被打磨了几下的石头;标志工业革命的蒸汽机,现在来看的确是一种简单的机器;那么,今天我们奉为“高、新”的应用软件产品,在未来不会太远的时候回头看时,也只不过是一种“软器具”而已。但是,软件人降尊纡贵拿自己的东西和日常家用器具比比,不让自己汗颜的可能不多。不客气地说,应用软件作为高科技矫子,虽然受到用户的无限敬仰,但其光怪陆离的外衣里面包裹着的是养尊处优的假神,顶礼膜拜的香客们很少能得到其灵验的恩赐。我们可以将应用软件看作一个较为特殊的器具,但却难以获得器具给我们的优厚待遇。
    面对具体应用的软件系统具有特别强的专用性,而且专用系统基本上是先有用户需求,然后才会逐渐形成目标系统,不可能在此前展示适合其应用的专用系统。如果以保障用户利益为出发点,应用软件也可以像一般产品那样先根据要求生产,然后再由用户验收以决定是否购买,但肯定没有人会那么做,因为他“掌握着主动权”,没有必要去“冒险”。多年来,我们已经习惯于首先考虑扩大和保全自己的利益,为求稳妥总是设法让自己处于主动和有利的地位,更有一种意识是将用户置于自己的对立面,以一纸“需求合同”之类的文书“界定”工作范围、牵制用户以保障自己的经济利益。我们在将目标产品提交给用户的时候,那东西看似根据用户前期“需求界定”生产出来的,用户只能不容置疑地笑纳。但是,即便是我们拥有经验丰富的分析设计师、客户方有资深的领域专家的配合,应用系统的真实目标也并非在工程开始之初可以很明确地被定义清楚;就算系统界面所能表述的内容是如何地全面、完整,用户只有在真正将其应用于业务过程中才会体会到其不足,甚至于运行结果与设想目标大相径庭。
    用户在决定将系统交由软件商进行生产的那天开始,他们似乎已经得认命、没有了结果的选择权。应用软件的提供者个人也是消费者,设身处地地想想,在全社会大力倡导保障消费者权益的今天,让应用软件的用户处在被动和无助的境地,面对弱势的他们,我们是不是应感到惭愧?我们是不是该想想看怎样才能更好地保护用户的利益,更进一步让他们真心感到我们产品物超所值呢?
    作为器具,对用户最终的根本表现也应是功能、性能的实用性。器具的实用目标是从最终的使用者入手的,用户肯定比生产者更直接地感受实用性,在器具应用过程中会直接评价其优劣和功能实用性。由于日常用具的生产者在设计和实现时不会让自己趋炎附势地裹上“高新科技”的外衣而远离用户,获得和总结需求就会直接和自然的多;生产者本身也是器具的使用者,以最终用户的角色面对目标产品,其出发点和目标会更实际和准确。有此前提,商品的功能确实往往超出用户的设想,商家们常常让用户得到意想不到的功能收获。这正是我们需要学习的地方。
    应用软件的生产要求将每一产品作为相对独立的个体去实现其个性化要求,其实现过程就如具有明确应用要求的器具的设计制作过程一样,深入到应用一线,针对具体的应用进行沟通、了解、分析、研究、判断、推理、归纳、交流、总结、设计和实施。关键是要以最终产品的个性要求目标的全面满足为出发点,摆脱经济利益的束缚,一切行为服从于最终目标的实现,在此基础上考虑质量、周期、收益的均衡。

二、应用软件准确目标及实现
    应用软件作为一种特殊的商品,不能像一般的商品那样可实现先期的样品展示,而顾客要付钱总得付得心里明白,放弃“用户别无选择”的假想,我们就得设法让顾客放心、又让自己不受损失。我们似乎已想了许多的办法,其中“解决方案”的提供和逐步完善被认为是一种与用户沟通和解决问题的好方法,但纸上谈兵的本质却越来越难以让用户放心地掏出钱来了。产品应用领域的细化使器具的制造商可以很专注地开展具体应用需求的把握,应用软件的生产商也希望生产出一种普遍实用于一个行业的东西,所以就有了“行业应用”的划分。“商品化”的应用软件往往让用户感到蹩脚,因为应用软件商努力尝试以包罗万象的功能和强有力性能支持来生产出获得“行业”用户的普遍认同的“产品”,其结果是所提供的东西要么是画蛇添足的百宝箱,要么是哗众取宠的藏宝图,用户在领略了眼花缭乱的游戏式的功能操作迷宫后,没有付款的嗤之以鼻,付了款的大呼上当。
  再回到这个问题:对于应用软件,我们可不可以提出一种先根据用户要求生产然后再提交用户验收以决定付款的解决方式呢?太多的经验会告诉我们,一个系统难以交付的最主要原因是用户对系统不会轻易认可,他们的业务处理要求太易变化、功能添加要求会无度增加,项目到了后期让人焦头烂额的原因似乎是我们“对用户没有经济约束”。但排除了其它一些风险因素以后,如果你不从用户身上找原因的话,要回答这个问题,问题的关键就落在了我们“能不能如期地、全面地满足用户真实需求”这点上来了。
    这问题本身不太取决于给高手们看家的什么开发方法、什么架构、什么平台、什么工具等等实现技术。作为一个以实用为目标的东西,用户看重的是它的使用价值,而不是“技术含量”,技术和方法只是提供了一种实现的可能,不直接表现在目标上,立足于提高产品生产效益的“先进”技术的采用也不是“卖点”。这里更需要的是过程中目标的归纳、总结、确定和管理技术,因为其失误会对结果产生致命的影响。这一技术不是耍小聪明式的“创造”,是立足应用的需求发掘和目标落实。
  要想得到用户的认可,得从提供给用户应用实惠方面下功夫。觉醒的用户会先对需求进行较为全面的概括,再逐步对其进行归纳和分析,最终确定自己完整的系统目标。这一过程一般会伴随系统开发的全过程,回避这一事实肯定是不可取的、而且是不负责任的,正确的方法应是与用户一道努力使目标完整实现。
    现在来看看产品“目标”到底是什么。按照生产者基本出发点和着眼点的不同、目的要求的不同、对产品本身的认识理解不同,目标大体可分为三个层次。第一层,目标是最终实现一个可以与用户实现完整交易的产品;第二层,目标是按照用户需求完成的完整的应用系统;第三层,目标是提供给用户使用的全面支持其业务活动的灵活工作的工具集。
    在第一层中,以商业化的模式理解应用软件产品,以商业运作方式去操作软件工程过程,其商业利益目标指导下的生产行为脱离软件产品本质,结果不仅是经济利益无法保证,更主要的是社会效益无从谈起,实际上就是一锤子买卖。
    在第二层理解中,对应用软件有这样几个关键词:需求、完整、系统。所谓“需求”就是用户业务应用所需的功能、性能需要;所谓“系统”就是由一个个既相对独立又相互制约的“块”相互协作共同完成业务处理的统一体,其中包含着大量的时序和流的控制。这三个关键词合起来就是一句话:完整需求下的完整系统。然而,尽管有用户方大力的支持和开发方积极的努力,需求的完整性还是无法保证的,因为“需求”本身会随着项目进展、用户认识的提高和应用的发展而改变和扩展的,以静制动的“完整”规划需求只能是一个梦;同样的,系统本身作为一个有机整体从本质上已经制约了应用的灵活性和应用的扩展,系统内部越是联系紧密其扩展和灵活应用的空间越小,但不幸的是,紧密联系、有机协作正是“系统”的内涵,并常常被推崇。这样一来,扩展的难以实现,阻碍了对逐步认知的用户提出的需求调整和完善要求的实现,越想完整越是完整不了,越是强调协作越是牵一发动全身,这样的“系统”让其制造者在短暂的成功之后顾此失彼于无尽的擦不净屁股的疲惫之中。
    按第三层理解将“完整的系统”看作“简单”的工具集,软件人一般是不认可的,但一旦将着眼点自愿地落实在支持用户一个个相对独立的业务处理操作上时,将系统的各“块”以灵活工具化的理念去设计和实现也就会顺理成章、水到渠成了。
    用户的业务活动中,会有一些处理操作的数据来源牵扯到其它相关的业务结果数据,而且在时间顺序上有一定的制约,但大多数据操作是以源数据为依据的,与结果性数据并没有太严格的数据相关性,这就使我们有可能将“系统”的业务处理支持化整为零,分别进行规划和部署。在实现的方法层面上,所谓组件化开发正是力争让各自相对独立的应用分别实施得以实现,在技术支持层面上,面向对象、构件化为通用的更为小的“块”的规范和复用提供支持,这都有力保障了化整为零、分别实现的实施策略。在此,开发需求推动下实现技术进步的良苦用心可见一斑。
    对于数据相关性较强的处理操作,充其量也只不过是多考虑了一下源数据是否已经存在而已。对于时间顺序性较强的操作间的协调,仍然可以归结对数据源的保证机制上,因为数据是处理操作的对象,是源、也是结果,那只要对数据标志进行检测,也就可决定本次操作的具体处理方式。
    对于各个组成个体,所要考虑的更多的是友好性的体现方式,更趋成熟的一种高层次的理念是“人性化”的服务,这种服务实现的基础是生产者的素质修养。通俗一些讲,你所制造出来的东西会体现你的意识,带有你的灵魂和意志,将自己设身于很“低能”的用户,“你”除了业务熟悉一些外,对计算机这神秘的东西很怯,那就考虑怎么才能让“你”将“系统”的操作逻辑与业务逻辑轻松挂钩,并很快达到“熟练”操作的程度。这里暂不讲需要在设计上使系统与业务本身相贴近,重点是每一操作处理过程中,在计算机规范逻辑与人的惯性思维逻辑的冲突点上,及时地给以准确、友好的操作指导。开发、特别是设计者们,往往以“高科技”意识将自己架空,除了什么编程工具、平台、架构等等的所谓技术,不屑于实用性的实际工作的真正落实。事实上,实用性的全面实现要比所谓“完整系统”的实现要难一些,这还需要一种理念、一种精神的支撑。
    在统一设计、特别是数据设计的基础上,当一个“系统”化整为零后,就变为一个个由数据作为联接纽带的相对独立的个体了,我们就可将这种个体视同一个地地道道的工具了,其操作对象是数据,基本目标是实现对具体范围数据的具体业务处理,如果我们将数据的“范围”和“处理”方式扩展为由用户可选的,那就更接近于工具或用具的内涵了。个体的独立的功能范畴,可以让工具化的实现人员定向准确了解和把握具体需求、集中精力于松散联系的业务处理和紧密相关的数据操作的规划和实现。不仅如此,构件式的处理工具的调用机制会为其应用的灵活性增色不少,友好的交互界面会给操作者以“人文关怀”,在这方面你可以尽情地表现创造性发挥的崇高和伟大。
    用户友好性在很大程度上表现为文字内容,遍布功能操作的各个角落的操作提示,是工具化个体的重要组成部分,其精髓远不只是操作的简单说明那么肤浅,除了在结构上体现操作的流畅以外,提示的方式、时机、准确性、易理解性等等,无不包含着目标要求和设计理念;用户文档、技术资料、应用引导、问题检索等等,其规模在整个系统开发工作中占有相当大的工作量,如果没有其指导应用的功用,除非是很小的系统,尽管我们在设计和实现上都力争实现易操作目标,应用的实现仍然几乎是缘木求鱼。
    问题的本质还在于对目标的认识和在实现过程中的落实,出发点和实际工作切入点决定了目标结果的优劣。

三、从微软产品的例子说开去
   
不管我们嘴皮了上怎么曲意诋毁和恶毒中伤,微软公司的产品我们总还是在用。没有谁能强迫我们使用什么,微软的东西被广泛使用是有其必然原因的。微软的产品更多地被定义为系统软件,但其产品中许多东西却更是极力趋向于应用软件范畴,这肯定不是其不经意的结果的。
    先看一个简单的例子。在设计一个应用程序中文件读取或存放的功能模块时,你可以调用Windows的文件浏览小窗口,那窗口几乎就是一个资源管理器。如果你是存放文件时打开该窗口,你可以编辑目录,这体现了工具窗口的灵活性;如果你是打开文件时打开该窗口,你仍然可以编辑目录,这似乎与我们惯常的逻辑不相符,因为我们一般认为在“打开”文件操作时就不会去“新建”一个什么的,这是微软的失误吗?不,这正是体现了其作为工具尽可能提供灵活操作实现渠道的本质,如果硬要牵强你的逻辑的话,那也可以说“你不反对用户在‘打开’一个文件之前新建一个文件夹吧”。问题的实质是落在一个“浏览窗口”是作为灵活实用的工具提供给用户的,还是作为一个业务实现逻辑过程的一部分包装在一个整“块”中的。这本身固然是技术实现手段提供的一种便利,但我要说的是,技术提供手段,但你要实现什么是由你的出发点决定的,为了符合自己的浅薄逻辑,以“规范”去束缚应用操作,是费力不讨好的。在这里,为用户操作着想、达到灵活方便的目标可不单是“实现技术”所决定的,说到根本,是应用软件的目标取向和目标实现的落实问题。
    我们再来看看微软的Excel。电子表格作为Office的组成部分,的确只是一个表格处理的“小”工具,但却提供了全面的、友好的数据记录处理功能,一些非专业人员可以轻松地用它完成一般的业务数据操作。我在一个客户的业务部门里遇到了一个“计算机水平”不高的中年妇女,如果不是亲眼所见,我真不敢相信她竟然抛开上级机关下发的几个相似的专业MIS不用,而一直使用Excel进行办公业务中的数据处理,其缘由是她觉得Excel更为方便、灵活和直观。事实上,据我了解她的工作的确很是出色的。细想一下,不管是什么ERP还是什么什么玄妙的系统,其实现内容上更多的不过是些数据记录的处理,特别是一般的可表格化的、数字型字段居多的业务记录的处理,而这些处理对Excel正好是专长的。我们的应用软件开发,在做了大量的分析、研究、审查、设计、讨论、再审查等等等等的工作后,处心积虑地生产出的东西,应是专业化程度极高的、极其贴近应用需求的吧,结果到了最终的用户那里怎么就不如人家的一个小小的工具了呢?如果你是那个不被采用的MIS的项目主管,那你在付出了长期艰苦努力却在用户那里丢人现眼之后,是去卖Office呢还是告微软垄断呢?
    最后,回想一下我们怎么就轻易地用上了微软的东西,而且爱不释手呢。就说Windows这东西你说它是不是一个大系统?如果不算大的话,为什么再没有人也做一个那样的东西好去感受一下做世界首富的滋味呢?那么,Windows既然是个大系统的话,一定复杂得了不得、一定是难以上手、难以应用的。然而,事实上Windows不但对于我们专业人员可以很快地上手,对于一般的事务处理人员、学生、家庭主妇也一样可以很快地熟练使用,这是为什么呢?
    首先,Windows具有友好的操作界面,可以很好地与用户的操作思路结合起来,“引导”用户使用。一方面界面的布局比较直观,功能划分清晰、操作路径结构化显示、同一功能可在相关操作中灵活调用,这使得用户应用能够顺畅地进行;另一方面,在顺序性较强、结果多样或不可恢复操作的每一个环节,不厌其繁地给以明确的说明性操作提示,准确指导用户操作。友好性的高目标是将操作者定位为一无所知“初次使用者”,这对不同层次操作者是“向上兼容”的,这看似简单的一种做法,实际体现的是友好性、易用性的本质。应用软件的用户不是机灵好动的中学生、不是喜欢意外惊喜的游戏玩家,他们需要的是你的东西能够很简便、明确地支持其工作。
    第二,Windows有健全易用的帮助系统。Windows不仅有完整的、系统的、易读的用户文档支持,而且有准确到位的联机帮助系统,可以很好地为用户排忧解难。这部分应是系统本身的组成部分的,形式多样、花样翻新的产品资料投入绝对应是软件商家不惜本钱的地方,因为,再好的东西只有设法让用户投入应用才能体现其价值,也才有可能被广泛地使用。很难想象在买一支钢笔都会得到一份说明书的今天,应用软件系统会没有用户文档、帮助等的支持体系,但这种事在我们这个圈子里可一点儿也不新鲜。
    第三,Windows对于底层的技术处理进行封装,只以尽量方便的操作界面展示给用户;对于复杂的操作,以引导程序、范例等提供实时的帮助,支持用户正确的操作。
Windows再大、再包含高深的“专有、内核”技术,对最终有用户是绝没必要眩耀的,相反的,能让用户体验到系统的简单、易用、实用的方法才是真正的高深技术。技术实现是方法,而不是目的,应用软件是个“应用层”的器具,用户只关心那石器怎么用、好不好用,不关心你是怎么打磨出来的。
   
第四,微软没有因为一个完整系统的提供就停止其继续的努力,通过一切可以利用的途径、渠道,充分提供给系统用户以纠错更新、功能增强、安全防范等等的便利,同时提供相应的帮助体系。售后支持是一个应用软件产品的基本组成部分,是应从成本、过程和目标上规划到整个系统的生命周期中的,这同于一般商品,又高于一般商品。
    ……
    有一个答案很是简单和浅显的问题:微软已经不惜血本地采用高深的“内核技术”生产出了那么出色的产品以后,为什么还要花那么大的代价完善其用户应用指导和系统维护体系呢?可惜熟视无睹的我们很少用心往深处想想。
    爱自己的产品,除了从开始就处心积虑地规划、脚踏实地的落实外,最终要使得用户全面地了解、学会使用也将是得从出发点上、从用户服务意识上下功夫开始的一场艰苦的战役。东西再好没人用就没有任何价值,如果是好东西就绝不要藏着掖着,也许可以允许一个程序设计者“玩弄技术”而孤芳自赏,但一个产品的责任者可决不敢处处“留一手”。让用户容易使用是基本目标,如果能让用户喜欢甚至入迷那就更了不得,因为你会由此而财源滚滚的。

四、我就是用户、我就是企业的主人
   
我就是用户,这说起来似乎并不难,但你产品的最终用户到底是怎样一个人呢?你也许不完全了解,或者你的出发点使你根本就不想了解。
    软件设计者到了对计算机相关软件硬件知识有了一定掌握的时候,才可能设计和编写系统,而往往到了这个时候已经很难将用户与一个初学者画等号了。就比如说实现产品的易用性这个问题,一方面,如果让开发人员做一些“低级的”易用性处理,他自己总感到幼稚可笑,甚或会以“过低地看待用户的能力”为用户“报不平”;另一方面,说白了,他们只想做“有技术含量”的工作,看不上这样的小儿科的玩意儿。事实是,一厢情愿地希望用户有自己那么熟练的操作能力那往往是空想,建立在想象基础上的软件系统,在使用时给以用户的艰难和尴尬只能导致一个结果,那就是不用!如果不从自身找原因,而指责用户的低能是严重的不负责任的行为。遗憾的是,以技术高手自居的设计者们难以理解这一点。
    我敢说,当一个软件设计师到商场中为自己买一件哪怕不值钱的用具或者小电器的话,他一定也会千挑百选的,他会以学者姿态、以设计软件的理论鉴定那小玩意的可用性、易理解性、易应用性、稳定性、可靠性、完整性、完备性、安全性、可扩充性、可复用性、可检测性等等等等,如果不信你可以问问商场的售货员,他们一定会说最怕、最不愿接待的就是“学者”模样的顾客。但是,到了这样的“学者”设计自己的东西的时候,决难将自己设身处地于一个用户,他更愿陶醉于自己的技巧、灵感的创造性世界里,他的东西将是最具什么性、什么性的,如果他用尽心思设计出来的东西被用户说“不好使”的话,那只能是因为用户太低能,他不会在乎的,因为那样的用户他实在是见得多了、习惯了。
    “我是用户”其实是一种落实真实需求的技术,不但需要理论的支持,还得有实践的积累,这是要应用软件开发管理者从各个方面仔细考虑和认真实现的。
    软件企业的效益来自于软件项目工程的收益,一个系统、一个产品都是通过一个个设计开发人员的劳动实现,而最终的用户才是我们的衣食父母,如果你生产的东西不好,那就是亲生父母一样是不会买帐的。反过来,如果用户抛弃了我们,生产者是失败者,企业也会因此破落。所以,企业要生存就得考虑产品的生命力,而产品的好坏由每一参与生产和管理的员工决定,企业的命运也就落实到了每一员工的身上。由此,软件开发者的“我是企业的主人”的意识也应该是顺理成章的了,其实软件企业也常常会这样教导自己的员工,并概括为“企业文化”内涵。但是,怎么做好企业的主人?这并没有被从技术层面上规划、落实,这使之成为教条和空谈。
    一个企业的产品是不是受欢迎,这一般是由技术决定的,而对于应用软件,使产品受到用户欢迎的技术并不高深,就是一个理念、一个工作行为的出发点,就是一种负责精神、一种与用户休戚与共的意识,这一技术最为重要的是针对准确目标的扎实的具体工作的落实,这需要软件人的努力实干。
    处在应用软件设计开发前线的技术中坚们,你们的行为决定着用户投入的实质性回报、决定着企业生死存亡的命运、决定着自己的荣辱得失,将自己的意志加于自己的产品之前,应该先正心、修身,这才可能让产品如你一般地出色,然后将产品实现的着眼点地放在准确目标和责任之上,才好让你服务的企业和你一起辉煌。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值