ideadata大数据视界吧 关注:17贴子:334
  • 9回复贴,共1

软件设计开发经验分享(二)

只看楼主收藏回复



1楼2017-05-18 15:10回复
    上次我们说到软件的概念完整性,接下来谈一谈调研与设计特性。
    链接:(http://www.ideadata.com.cn/wisdomAction/readWisdom.do?id=83)软件设计开发经验分享(一)
    无论是全新研发或者既有部分改进,我们在软件设计时都需要考察不同的方案,在它们之间的一些主要特性做调查和对比,从中选出最符合需求的。主要关注的特性我分为如下几大点:功能性、易用性、结构性、质量和效率以及成本等。
    功能性是最基础的特性,指的是满足用户功能需求的程度,它是我们最先考量的特性,在用户的需求中,功能性描述一般是占了绝大部分篇幅,是比较容易分析和度量的。需要注意的是严防功能需求蠕变和保持概念完整性。
    需求蠕变这个概念做过项目的人都很熟悉,它源自于客户源源不断的提出新的需求,从而使得设计和实现无法跟上需求的变化,最终导致项目或者产品失败。为了防止这一问题,我们可以使用一些项目管理工具和开发模型来控制这些变化。典型的例如需求追踪表,它要求每个需求都被记录、评审和追踪。需求尤其是新增需求需要经过严格流程才能加入到设计中,这样就会防止其无序增长。另外还有迭代增量模型,把用户需求都控制到一个阶段之内,新的需求放到后续迭代/增量中完成。


    2楼2017-05-18 15:11
    回复
      2025-06-05 03:11:31
      广告
      保持概念完整性是继承于上个文章的主题,它是要防止产生和主要概念不一致的功能。因为这些不一致的功能非但不能增加软件的亮点,反而会降低开发效率和用户满意度,但大家往往会忽略这点。比较典型的例子,最近几年很多软件都做社交化,然而受限于软件自身特性和外部环境,真正能做成功的几乎没有。例如金山词霸,在前期毫无铺垫并且社区运营缺位的情况下,在2011版本中强行加入IM和在线教育功能,导致产品上线后IM功能无人使用,在线课堂无人收看,用户反馈诸多不满。虽然第二年做了及时纠正,但已经被虎视眈眈的有道词典一举夺下业内老大的位置。我们并不是批评这些软件做社交功能,是批评它既没评估现有条件下的可行性,又没有在解决方案里体现社交在产品中的概念完整性以及和既有理念的融合。只做个登录和聊天界面完事,从未仔细考虑社交是如何正常运行的。


      3楼2017-05-18 15:11
      回复
        易用性简单来说,就是功能是否好用。凑巧的是,用户也经常在需求中这么描述,很容易理解,然而却很难度量,这给我们的设计和实施带来一定的难度。所以在需求捕获过程中,我们需要让用户明确给出什么是易用的,当然这样会让用户觉得很麻烦,所以我们一般让用户提出最关心的易用性,最好是易用性规则,然后结合通用规则统一处理。通用规则一般有三:一致性原则、最少意外、最少打扰。
        1、一致性原则是指用户在操作软件时,功能或者工作步骤所经过操作过程和展现方式是一致或者相似的。比如微软在最近旗下软件中使用的Ribbon界面,它最早出现在Office 2007中,后来逐步应用于Windows 8/8.1/10中的自带工具组件,如画图:


        4楼2017-05-18 15:12
        回复
          图2:Excel、Word、画图 软件的部分界面对比


          5楼2017-05-18 15:20
          回复
            从图中我们可以看到,Ribbon代替了传统软件界面中的菜单栏和工具栏,把常用命令放在默认的开始位置,减少了常用操作的鼠标点击次数,提高工作效率。不过在这篇文章中,我们并不着重于说Ribbon比前辈更好用,而是在于一旦你熟悉了某种使用Ribbon的软件,你会发现其他软件类似的功能你很快就能上手。所以这种一致性带来更高易用性的根本原因也就是在于降低了用户的学习成本。我们再拿微软做个反例,瞧一瞧Windows 10中的 Windows设置和控制面板。

            图3:Windows 10的设置界面


            6楼2017-05-18 15:21
            回复

              图4:Windows 10的控制面板界面
              明明都是系统设置类的功能,偏偏做到了两个不同界面的不同地方,有些功能两边都可以操作,有些必须在其中一个地方,但你并不知道有什么规律,有时候连我们这种软件业内人士都要找半天。虽说微软可能是考虑到老用户的使用习惯,但它这么做挨骂是必然的。一致性原则是一个比较通用的原则,不只是在易用性部分,在功能性、结构性部分也有所体现。


              7楼2017-05-18 15:21
              回复
                2、最少意外原则,顾名思义,就是在和交互的过程中尽量少的让用户感觉意外。意外会打断用户现有的思维流程,迫其思考该如何进行下一步,这无疑会增加用户的使用成本和降低产品的接受度。这个理论凡是计算机学科的人都应该觉得熟悉,它与处理机流水线阻塞以及编程语言中的异常处理会带来很多额外开销道理是一致的。要做到最少意外首先得知道用户是怎么理解整个交互流程,不能想当然的认为这些是意外,那些是正常;或者一刀切的不论什么问题都压制在内部不让用户感知到。所以作为软件的设计者,把自己代入用户角色去真正思考和使用软件非常重要,它不但能告诉你用户想要和不想要的,还能告诉你如何把想要的做到更好。受限于该问题的范畴,具体做法无法一一列举,但可以告诉大家一个黄金法则,那就是减少软件bug。
                图5:Oops——见惯不“怪”的Windows 蓝屏画面


                8楼2017-05-18 15:22
                回复
                  2025-06-05 03:05:31
                  广告
                  3、最小打扰原则和上一点有些类似,很多时候它们也往往在一起说明。可以理解为用户不太关注的信息尽量不要直接展示给用户。这条原则是基于“局部性原理”,有兴趣的可以去搜索下,不再赘述。然而哪些信息该不该显示,该如何显示,对设计人员仍是个关键问题,关于这点我们可从Linux的启动过程中得到一些启发。如今的Linux发行版默认启动时都有个滚动条来表明进度(见图6),当在这个界面按下ESC键,它就会显示出详细信息(见图7),包括系统硬件和服务的启动状态。
                  图6:SLES默认启动界面

                  图7:SLES详细启动界面


                  9楼2017-05-18 15:23
                  回复
                    这是一个很好的设定,普通用户其实只关心启动进度,并不想知道后台执行了什么操作;而当启动遇到问题时,系统管理人员又会根据启动信息来定位故障原因。一个简单的开关做到了隔绝大部分用户不关心的信息的同时,还能方便特殊状况下的维护,设计人员只需要分辨不同用户的关注点,而非取舍功能,这就降低了设计难度,是一个非常好的设计思路。现在很多软件的简易/专家模式的切换也是参考了这个观点。上述的模式开关只是完成该原则的一种方法,还有其他很多途径以在软件设计中逐步探索。若要举个反例的话,当年有款风靡全国的娱乐软件值得一提
                    图8:某下载站中关于“小狮子”的描述页面
                    以上3点说了软件易用性的通用规则,这3点主要是面对软件操作人员(人机接口)的易用性,还有针对开发者(机机接口)的易用性,机机接口我们可以把他简单理解为协议。
                    针对开发者的易用性也有一些通用规则,我总结了两点:一致性原则与标准性原则。
                    一致性原则主要是协议格式和概念上的一致性,例如我司iASM系统的对外协议是使用XML进行包装的,每种功能例如单条查询和智能地址录入对应了不同的协议条目。条目中都有含义相同的部分,例如协议序号,发送时间等等,在协议中表现为具体的属性,这些属性的名称,所在位置和功能在每个条目都是一致的。这样可以大幅降低对接系统开发人员的学习和开发成本。标准性原则体现在接口的承载协议上,要求我们使用的协议都是通用的,标准的。例如如果我们开发一个跨越互联网络的系统,那么优先使用HTTP这样的非常通用的协议承载,这样做可以让对接方充分利用现有知识和组件,达到降低成本的目的,也就提升了系统的易用性。
                    以上是两大设计特性,功能性与易用性的介绍。受限于篇幅,本次就讲到这里,在下篇里我们会讨论剩余的其他特性和调研决策方法。


                    10楼2017-05-18 15:24
                    回复