zoukankan      html  css  js  c++  java
  • 个人软件过程4 功能说明和用户体验设计

        更新日线,是一项我们经常遇到的数据导入功能。

        这项功能的说明文字,我是这么写的:

        用户在初次使用本系统的时候,需要安装沪深两市从开市到本年度的所有历史数据,这些数据可以从某证券行情软件获得,是遵循一定格式的二进制文件。此后,每天两市交易结束之后,用户必须更新当天的日线行情,当然,用户也可能在几天后一次性更新最近几天的日线行情。用户更新日线,才能建立完整准确的数据基础,我们所有的分析工作都基于这些日线数据。

        事实上只需要这么简单的描述,就能够弄清楚这项功能的目标和具体的应用场景。

        不可避免的,我们需要做用户体验设计,这是将功能转换为一系列开发任务的前提。所谓用户体验设计,我们可以简单的理解为界面设计的一部分。界面设计包括两个方面:1、如何更美观;2、设置哪些最少的功能从而满足用户的全部要求。后者可以简单的理解为“用户体验设计”。

        我们可以根据功能的描述按部就班的演绎,接下来就是整个思考过程。首先,我们需要列出用户可能需要的操作、可能遇到的问题:

        1、 用户每次更新日线都需要选择一个行情文件,然后开始更新。

        2、用户可能误操作,导致选择的文件不是一个真正的行情文件。

        3、用户从分析软件中生成行情文件的时候,可能仅包括一个市场的数据、或者包含了期货、港股等其他市场的数据。

        4、用户可能记不清最近10天是否每天的日线行情都已经更新了。

        5、在更新日线的时候,用户需要看到更新的进度

        6、用户可能对系统中保存的数据完全没有信心,准备重新从两市开市的第一天开始安装历史数据。

        7、用户可能将一个文件更新两次,或者一些数据已经安装了但用户选择的另一个行情文件中包含了这部分数据。

        针对上述情形,我们可以简单的对界面元素进行设计,当然这里无需考虑美观问题,仅仅关注:1、用户遇到的问题,是否都能够处理;2、在能够处理所有问题的时候,界面是否最简单且最容易理解。经过简单的思考,我们可以得到界面的原型,这里用Vc 2010的对话框设计器可以简单的绘制草图如下:

    更新日线窗体

          第一行,“日期”那部分,用户将能够看到目前已经安装的行情数据的起止日期,每次安装数据后这里要实时刷新,这样用户就能够始终做到心中有数。下面一行很容易理解,左边是选择文件的控件,右边是启动更新的按钮。第三行是进度的文本信息报告区,刚进入界面的时候显然要提醒用户选择一个文件。第四行是进度条,开始更新之后进度条将报告更新的进度。接下来的两个按钮,第一个是删除最新的五天日线,第二个是删除全部的日线。

         这里不需要过多的分析,我们知道这种界面的形式,是能够应付上面用户可能遇到的所有情形的。菜鸟程序员很容易忽略的,是报告系统中行情的起止日期和进度文本区两个部分。

         这样的东西,一些资深的项目经理可能会不屑,因为什么呢?“你好象过早的进入界面设计了”,是的,确实如此。但老实说,如果项目经理的脑子里,不能在最快时间出现上面的窗体图形的话,他会怎样为团队的程序员分配开发任务?所以,书生们常常说项目管理大师,未必需要懂得编程,在软件领域甚至在其他任何领域,这简直是十足的扯淡。做事的团队,其实并不需要一个指手画脚的人,每个人需要很清晰、很简单的知道自己今天做什么、明天做什么、怎样做是对的也就是标准是什么,外行如何用他的想象力来实现?一个蹩脚的程序员永远不可能成为能干的项目经理,就如同一个从来没有碰过枪的人,怎么可能指挥千军万马作战?当然,公司经理完全可以不懂技术,为什么,因为他可以将这一块封装起来,技术总监会对他负责,公司经理也不会对技术团队指手画脚的具体到每一项工作。

         那么,完成用户体验设计之后,我们确定开发任务其实就非常简单了:

    任务清单

        上面的截图是第一项功能的任务清单,当然Tfs的一些术语翻译的很生硬,比如堆栈级别,其实是开发的顺序,用户情景,就是功能;不用太理会,我们简单的将这些任务指派给团队不同的成员,项目经理大体上就能开始轻松的当监工了。

        针对这项功能,我比较看重的是一个简单的重复测试,也就是循环执行安装一个文件、删除全部日线、安装同一个文件,这样循环多次,从而确定这两项功能的稳固性。因为显示进度的需要,更新日线的操作最好在后台运行,这样界面才不会僵死,那么这种乱序测试是对这部分后台操作的一个考验。

        到现在,我们已经完整的讲述了从启动项目开始,到程序员开始写代码之间的全过程。事实上没有多少多余的工作量,但整个开发过程将在这种简单的模式下,更趋规范。后面如果仍然有时间和兴趣,可能会对开发过程完整描述,记录学习VC++2010的过程。

  • 相关阅读:
    AtCoder Beginner Contest 205
    Codeforces Round #725 (Div. 3)
    Educational Codeforces Round 110 (Rated for Div. 2)【A
    Codeforces Round #722 (Div. 2)
    AtCoder Beginner Contest 203(Sponsored by Panasonic)
    AISing Programming Contest 2021(AtCoder Beginner Contest 202)
    PTA 520 钻石争霸赛 2021
    Educational Codeforces Round 109 (Rated for Div. 2)【ABCD】
    AtCoder Beginner Contest 200 E
    Educational Codeforces Round 108 (Rated for Div. 2)【ABCD】
  • 原文地址:https://www.cnblogs.com/by1990/p/2227404.html
Copyright © 2011-2022 走看看