代码改变世界

Tutorial:Function Sepcification-Define The Application

2011-12-06 17:23  一一九九  阅读(196)  评论(0编辑  收藏  举报

The information gathering process is the critical step of any successful functional spec. Just as important as the finished document is the thinking process you have to force yourself through in order to begin writing. It makes everyone think about what they are building, why they're building it, who will be using it, how they'll be using it, and what it will end up doing. At this early stage, everyone may have various shades of ambiguity about what they're getting ready to build and it's unlikely that anyone is in total agreement about what exactly the finished product will do. Here is a quick checklist of the general questions you should be asking (and depending on what the project is, you'll probably come up with more specific questions) at this early stage:

如同最终完成的文档一样重要,信息收集是任何成功的Spec的关键,是开始编写Spec必须经历的过程。这个过程促使每个人都考虑正在构建的是什么?为什么要构建?谁要使用它?她们怎么使用它?最终它会做什么。在初期阶段,每个人对于最终的要构建的内容存在各种歧义,而且对于最终要做成什么样子的产品没有共识。 这里有一个在开始编写Spec的时候你需要参考的的CheckList:

  1. What is the application supposed to be?
    Pretty basic but critically important. Make sure you have a strong grasp on what the product is before you start anything; additionally, make sure the team you're working with, and the management team ultimately responsible for the product, also have a strong grasp on what you are all doing. Expect lots of arguing and discussion during this stage!

    很基本但是非常重要的问题。 在开始构建程序之前确保你对你要构建的产品有所掌握,另外,需要确保你的团队,最终为产品负责的管理团队,也对你要做的事情有所了解。这个阶段会有很多的争论和讨论。
  2. What is the application supposed to do?
    Now that you know what the product is supposed to be, you should start dissecting what it is supposed to do. Identify the main objectives of this project based on its mission critical factors. Typically, there are one or two core pieces of functionality that make up the bulk of the final product with a bunch of other smaller items thrown in. Identify those core pieces and make them a priority. Do not allow the smaller items to get in the way, but make sure you抳e made a note of them. A good way to do this is to simply create a list of all the functions you want the application to perform and then rank them based on priority.

    现在你知道产品应该是什么,接下来,你需要分析它能够做什么?基于该项目的关键因素分析该项目的各个因素。通常,会有一个或者两个核心的功能组成最终的产品,这些核心功能会带过来一大堆小型的项目。 识别这些核心内容并且给他们先后的顺序,不要让这些小功能项目阻碍了项目的进展,但是需要确保他们在任务列表中。一个好的做这种方式是创建功能清单列表并且基于优先级进行排序。
  3. Who is going to be using this application?
    Find out who the audience is (i.e., who is going to be using this product). Knowing your audience is important in understanding why and how they are going to be using the final application...which is important in defining the scope of the project. Better yet, create use cases and develop user personas. User personas can be a great tool for allowing you, as the writer, to enter the world of your users and see everything from their perspective.

    找出来最终的用户是谁?知道你的用户是谁对于理解他们如何使用最终的产品十分重要,重要到能够定义项目的范围。更好的是创建用户用例,建立用户特征(注: 这个地方应该是具体的使用用户的个性、特征等,比如说老年人的材料入库员等), 用户个性特征是对Spec编写者是一个非常棒的工具,能够帮助Spec编写者进入用户的世界,能够从用户的角度看问题。
  4. What are the metrics?
    Most projects have a performance metric attached to them somewhere; e.g., revenue, page views, new members, etc. Make sure this is clearly known from the beginning. It will help focus your approach and the approach of the team as well, because even if you develop a great product it can still be a failure if it doesn't meet its metrics.

    大多数项目存在性能的指标: 比如说是收益,页面查看数,新会员等,确保项目开始的时候就清楚这些内容。这些将会帮助你和你的团队向目标靠近,因为,即使你开发了一个伟大的产品,如果这些指标达不到的话,也算失败了。
  5. Is there a precedent for this application?
    If what you're developing is similar to other products out there, it can make your learning curve much easier by researching those applications and discovering what works and what doesn't. Make it a point to perform a very thorough competitive analysis. Not only will it help you gain speed faster, but it will also give you an idea of what your competition is like and how to do it better.

    假如你正在开发的产品已经存在类似的产品,那么通过学习这些产品能够做什么不能够做什么能够使你的学习曲线简单一些。可以做一个彻底的竞争对手分析。你的的不仅仅的是更快的开发速度,也会帮助你了解你的竞争对手的产品和怎么样才能够做的更好一些。