1.1.2 什么是好的管理软件
需求分析的工作目标是设计出好软件,从事管理软件的需求分析工作,当然就是设计出好的管理软件。好软件在人们的工作、学习、生活中俯拾皆是,百度、淘宝、QQ、微博、微信、Office等,使用好软件的感觉就是一个字——爽,看起来舒服,使用起来流畅,不拖泥带水,不磕磕绊绊,功能总是出现在需要的地方,总是能解决问题等。但究竟什么是好软件呢?作为软件行业的专业人士,对软件是好是坏的认识自然不能仅仅满足于此。
在正式讨论需求分析相关工作之前,先来看看究竟什么样的软件是好软件,以此作为未来工作的努力目标。
1.好软件是有用的
所谓的有用,就是指软件真正能够解决问题,不能解决问题的软件绝不是好软件。从企业管理的角度来看,或者可以增加收入,或者可以节约成本,最终反映在它能够促进利润的提升,这个利润可以是短期的,也可以是长期的。如果软件提升的利润大于软件的成本,那么这个软件是有用的,否则就不能说是有用的。
不过,利润是由多方面的因素决定的,大部分情况下很难说得清楚一个小软件对企业的利润有什么影响,也就很难说得清楚它是有用还是没用,因此可以尝试从一些更具体的方面来界定一个软件是不是有用。
有用的软件解决问题而不是制造问题。可以用软件解决的问题很多,小到简单地保存某种信息,大到为企业建设管理平台。但要知道,在用软件解决问题的同时一定会带来全新的问题——软件本身的问题,对于一个不是搞软件的企业来说,这种问题处理起来并不容易。有很多单位,好像是为信息化而信息化,目的不是解决现实问题,而是为了面子好看,结果导致使用软件不但没有解决问题,反而带来了许多额外问题。还有的时候,软件确实解决了某些小问题,但相对这些被解决的问题来说,软件本身带来的问题要严重得多,得不偿失。例如,为了获得某种报表开发了一款软件,却需要专人录入数据,专人维护系统,如果让这些人进行手工统计,报表不但可以按时出来,工作量还会小得多,这种软件实在不能说是有用的软件。
有用的软件可以提高工作效率。计算机的长处在于运算更快、更准,存储更多、更久,分享更全、更易,无论用户的要求多么无理它也不会闹情绪。利用好计算机的这些特点,没有理由不能提高工作效率。如果软件不能提高工作效率,绝对不能说是有用的软件。提高工作效率一般体现在这些方面:同样一件事情,完成的速度大大提高了,例如一个审批流程,以前可能需要三天,现在三个小时就可以完成了;或者经过软件优化后,有些工作根本就不需要了,例如使用财务软件后,登记明细账簿的工作就可以取消了;或者有些工作需要的人力资源大大减少了,例如编排生产计划,以前需要计划助理到车间收集生产状态,用了软件后可能这种岗位就不需要了;或者相同的人员,可以完成更多的工作,例如采用作业成本法计算生产成本,通过软件可以完成非常复杂的计算过程,并且快速、准确,在以前,同样一个成本会计不可能做到这一点;或者可以降低工作难度,例如生产数据统计员,使用软件后很多生产数据可以直接从生产过程中获得(如生产任务完成时间、机器号等),而不需要统计员再去进行手工统计。
有用的软件可以降低资源消耗。利用软件来降低资源消耗体现在许多方面,例如,可以通过库存管理减少仓库物料的无故丢失;可以通过计划管理软件提高库存的周转率降低资金的积压;可以通过办公管理软件降低办公物品的消耗;可以通过生产管理软件降低生产材料的消耗;可以通过调度软件让任务安排得更科学,降低生产能耗;等等。
软件的有用性还表现在很多方面,如规范流程,提升客户感知,增加企业核心竞争力,帮助决策等,这里不再赘述。
有用,是好软件的最基本条件,其他方面做得再好,如果缺少有用性,这个软件也不能说是一个好软件。软件开发之前为什么要进行需求调研呢?最重要的目的就是为了保证软件的有用性。
2.好软件是易学的
好软件充分考虑易学性。所谓易学,就是指软件功能方便学习,容易上手。对于易学性,需求分析者的终极目标是,所设计的软件功能不需要任何培训,用户看着界面就可以学会操作,用户通过自学有什么问题都能自己解决。当然,管理软件与面向公众的社交软件还是有很大区别的,要想达到这个境界不大可能,但在做设计的时候,设计人员应该时刻提醒自己,这里如果再努力一把,是不是用户就可以不用学习了?或者,是不是可以减少用户的学习难度?容易学习的功能,对于用户来说,使用中会觉得是一种享受,也就更加容易接受软件,对于后面的实施来说,可以大大减少培训成本。
比起十多年前,如今的用户对软件的易学性要求越来越高。由于一批又一批软件人的努力,现在的用户对软件体验的要求越来越高,对软件的期望也越来越高,对于学习软件的耐性却越来越少了。这些因素决定了,在易学性方面下多少工夫都是值得的。
3.好软件是易用的
好软件充分考虑易用性。所谓易用,就是指软件用起来舒服、趁手,处理问题全面、容易、方便、快捷,犯了错误容易纠正。请注意易用性与易学性之间的区别,易学性指软件容易学会,而易用性指学会之后,使用软件处理问题的感受,这是两个完全不同的概念。有些软件容易学会,但确实不易用,也许它容易学习的原因只是因为功能简单罢了,而功能简单往往预示着处理问题不全面,有一些问题甚至处理不了。软件的易用性一般体现在以下这些方面。
(1)在操作层面,界面美观大方,录入或操作快速、方便,功能出现在需要的地方,处理同一件事鼠标点击、键盘击键次数最少。
(2)在业务层面,处理问题容易、快捷,不需要切换一大堆界面,处理问题全面,一些异常业务也可以方便处理。
(3)在性能层面,软件反应速度快,占用资源少。
易学性是针对没有学会软件的新用户,易用性是针对已经学会软件并可以熟练操作的老用户。
4.好软件是灵活的
好软件充分考虑灵活性。所谓灵活,就是指软件不仅满足于能够实现用户当前的需求,还会充分考虑其他的特殊需求,充分考虑软件的发展,让软件易于扩展,易于应对可能的需求追加与变更。无论开始的需求工作做得多完善,用户的需求终究会有变化,或者需要修改某些需求,或者需要增加某些需求,或者需要取消某些需求,而灵活的软件具有柔性,即使用户的需求发生了变化,软件不修改也可以解决很多问题。当然,任何软件都不可能解决所有问题,作为设计者,能做的是尽量设计出可以应对更多需求变化的软件,也就是尽量增加软件的灵活性。
使用字典代替写死的数据,使用参数开关控制程序的代码分支等,这些都是提高软件灵活性的常用手段,人们所看到的几乎每一款好软件都有大量的参数开关(一般都在“设置”的功能中),这就是软件开发者为了软件的灵活性所做的努力。
5.好软件是健壮的
好软件充分考虑健壮性。所谓健壮性,是指软件在用户使用过程中有很强的容错性,可以帮助用户少犯错误,犯了错误可以纠正,可以反悔,用户在使用软件的过程中没有心理负担。在这里,“健壮”的反义词是“脆弱”,脆弱的软件,用户使用时需要小心翼翼,神经绷得紧紧的,数据不能录错,不能删错,操作顺序不能颠倒,不该点的按钮不能乱点,不该打开的界面不能随便打开等,一不小心犯了错误,就会付出很大的精力处理,有时候甚至只能由软件维护者在后台才能修好,总之,软件中仿佛布满了地雷,一不小心就会“引爆”,轻者“皮破肉烂”,重者“残废丧命”。
6.好软件是高效的
好软件考虑性能要求,追求高效性。所谓高效性,指程序执行速度快,占用的IT资源少。IT资源一般包括数据存储能力、服务器运算能力、网络传输能力、客户端运算能力等方面,不同的业务系统,不同的架构方式,甚至针对不同的用户,关于这几个方面的考虑重点并不相同。
软件功能再强大,能解决的问题再多,执行起来如蜗牛般缓慢,让人等得几乎要崩溃,也不算好软件。高效的软件会努力提高功能的运行效率,降低IT资源的消耗,让软件系统运行得更快速、更经济。
7.好软件是方便交互的
好软件方便用户与系统之间交互,具有交互性。交互性,指程序在执行过程中可以与用户进行友好沟通,让用户顺利获得应该知道的系统信息,让系统顺利获得用户提供的信息。例如,执行某一项操作需要用户等待很长时间,用户就会觉得烦躁,不知道是不是系统出了问题,不知道还要等待多久,但是,如果有进度条显示执行进度,那么就会大大减少用户的烦躁情绪,也就是通过进度条让用户知道系统内部的信息(执行进度),从而提高交互性。
当用户在界面上操作时,一个友好的系统会将执行信息根据需要反馈给用户,有些信息只是告诉用户一段程序执行的状态,如常见的告诉用户保存成功的提示消息,而有些是用于接受用户额外指令的,如让用户确认是否删除某记录的提示消息。系统反馈给用户的信息,可以通过各种方式表达出来,如弹出消息框、显示在某固定区域、写入日志文件等,有的时候也会通过组件形状变化、位置变化、颜色变化、文字字体变化之类的方式向用户传达。
8.好软件是可重用的
好软件具有可重用性。可重用性,指软件对不同环境的适应性。重用,可能是整个软件的重用,也可能是软件中某些功能的重用。有些产品型的软件,可以原封不动地用到多个企业中,不需任何修改,或者只需要进行少量修改,这就是整个软件的重用;有些软件的某些功能,可以复制到别的软件中继续使用,如很多团队的“用户管理”“权限管理”之类的功能。对于功能的重用,有些功能自成体系,跟本功能之外的功能、数据没有任何关系,具有最强的可重用性;有些功能隶属于某个环境,离开这个环境就没有任何意义,那么这种功能就没有任何可重用性。注意,这里所说的重用,是指功能级别的重用,跟代码级别的重用(封装函数、过程、类等)是两码事,不可混为一谈。
增加可重用性,可以大大降低团队的开发成本,提高开发速度,增加软件系统的稳定性等。