❶ 软考高级-信息系统项目管理师怎么备考
1、对知识点进行梳理:对于一些硬性记忆的内容没什么好说的,但除此之外,所有的知识点强烈建议应该进行梳理,尽可能将知识点贯穿起来,同时需要与曾经做过的项目进行结合,甚至可以用新的知识点来分析曾经的项目,将知识可以活用起来这是最终目标,而且一定要掌握分析方法。
2、多看试题分析,理解为什么会是这样的答案。注重分析过程,不要太过注重结果,当然,那些死记硬背的题目无需这样考虑,希赛的在线真题测试不错。如果具备相关的工作经验,在此会对你有莫大的帮助,但也会带来一定负面作用,因为你的经验未必正确。
3、软件行业中有很多内容是很难衡量对错的,在工作中有时候经验比知识更重要,但考试的时候知识就比经验重要了,综合知识中会出现一类题型,介于经验和知识之间模棱两可的,此时肯定是以考试为主,这类题型一定要注意,甚至有可能出现各个不同版本的答案。对于此类题目没有什么好的建议,只能说多看以前的试题吧,会有所帮助的。但有时候真的不明白,为什么这种模棱两可或者说没有唯一答案的题总是出个不停,难道是为了卡过线人数?
4、多看看网上的实际案例分析,多从不同角度或角色来分析一个项目,如果已经具备了多年的项目管理经验,那就和项目管理知识点结合起来重新对案例进行分析,如果缺少项目管理经验,那就多思考一下为什么别人会给出这样的建议,基点是什么?重点在哪里?依据是什么?解决的问题在哪里?多问问为什么。
❷ 如何快速处理大量信息,你需要做好这5件事!
我们来看一个场景:
项目需要,需要临时快速选择成员组成一个团队,针对客户需求,1天时间内给出一个方案建议。部门中有这么3个人供选择。第一个人,工作经验丰富,做过很多项目;第二个人,擅长文案编辑工作,能够拿出漂亮的文档或PPT;第三个人,梳理和掌握信息能力强,能快速吸收大量信息并能现学现用。如果从这三个人中选择成员,哪个人的机会最大?
毫无疑问,能够快速掌握和处理各种信息的人,即第三个人能够获得这个机会。因为这类人对信息的消化吸收能力强,他可以快速掌握客户所在行业情况、客户企业本身情况以及需求和目标。只有掌握了这些前提信息,才能够“对症下药”,提出满足客户需求的方案或建议。
由此可见,有高水平的信息处理能力多么重要,它可以为我们争取更多的机会。如今我们面对怎样的信息环境?哪些因素会影响我们处理信息效率?我们又该怎样提高我们的信息处理能力?
信息超载现象
不管是企业还是个人,现如今都面临信息超载问题,即需要处理的信息超过我们的信息加工能力。如何高效快速处理大量的信息,从中找出对自己有效的信息是一个挑战。企业为了解决这个问题,使用大数据分析,使用人工智能,搭建数据中台。其出发点就在于存储、收集和分析数据,并提取有效的信息供业务决策。那么,我们个人该如何应对信息超载现象呢?
你是否经历过这些情况?早上到办公室打开邮箱,一堆未读邮件需要处理?工作上有一堆资料需要阅读?微信群有几百条未读信息?想入手一瓶防晒或精华,在考虑选哪个牌子时,网络搜索出来大量信息?不管你在电梯、楼道还是商场,也被各种信息所包围?
“当信息量过多以至于个体无法对全部信息进行处理分类和利用时,会发生什么情况?他们会筛选、忽略、跳过或忘记信息。或者他们会暂停更深入的处理,直到信息超载情况结束”。
在信息泛滥的时代,我们该如何快速处理、有效利用各种信息?首先,我们需要了解一下在信息超载的情况下,有哪些因素会影响我们如何处理信息。
影响因素
兴趣 。大量的信息中,唯一能让个体产生积极、兴奋的情绪恐怕就是与个体兴趣相符合的信息了。这类信息再多,对信息处理者来说都不是难题。
先验知识 ,是指个体对某一主题或领域有经验或了解。与个体先验知识相关的信息,对处理者而言,会比较简单轻松,他可以套用或改进以往的处理方法,不需要过多的思考。
信息的特点 。信息以什么渠道、什么样的方式呈现在个体的面前会有影响。单渠道还是多渠道、是文字、图片、视频还是声音的形式展现,对信息处理者来说,意味着不同的处理难度和不同的精力投入。
情绪 。人们处于积极的情绪下,对信息的解读会更自信,速度也更高;而在消极的情绪下,信息处理效率低。
语言 。“即便以同一种语言进行沟通,同样的词汇对不同的人来说意义也会不同。年龄和情境是导致这种差异的两个最显着的因素”。呈现在个体面前的信息,不表示都是个体所能理解的,比如一个英语背景的人,他很难看懂和理解一篇病毒学分析的文章,以及一个初入社会的年轻人,他很难懂得年长者的老生常谈。
在众多的信息中,我们不能只处理自己感兴趣、自己看得懂或者处理起来容易的信息。而是过滤无效的信息,利用有效的信息。那么我们该如何做呢?
快速处理信息秘诀
1、逐步建立“信息处理系统”。 这类处理方法主要针对复杂的问题。想象你购买房子或是选择一份工作。当你开始处理这类问题时,大量的信息朝你涌来。在做决策之前,我们肯定要明确自己的需求,然后收集和分析外界信息,看自己的需求是否得到匹配。这时候可能会有多个备选方案,然后我们需要制定评分标准,并对不同的候选方案进行评价,最后选择一个对自己来说综合效益最大的那个方案。
这里涉及到明确需求→外界信息分析→需求匹配→制定方案→方案分析→方案选择,到最后实施这几个步骤。
我们在应用信息解决问题的过程中,应该有意识地建立这样完善的系统。以后凡是复杂的问题,能够自动启发系统运行,按照该步骤执行。
建立“信息处理系统”,需要做到以下几点:
1)更好地认识自己。认识清楚自己,你可以更快地着手处理信息,而不是通过搜索大量的信息,来发现和启发自己。
2)积累可靠的信息处理渠道,比如可靠的房源发布渠道是哪里,可靠的招聘渠道是哪里,这有助于你找到高质量的信息,过滤掉虚假和低质量的信息。
3)培养做决策以及提高执行力。
2、储备经验知识库 。每个人都有不同的经历和认知,过去的经历会造就未来的我们。有些事情会重复发生多次,有些事情的处理方法在其他地方同样适用。因此,生活工作中,学会总结经验和反思教训,积累自己的经验知识。当以后遇到同类的信息时,我们就可以自动处理一些信息,而不用投入太多时间和精力。
3、减少和科技产品的联系 。过于依赖手机,ipad和电脑等科技产品,会让我们总是被杂、散和乱的数字信息所打扰。减少与科技产品的联系,可以让我们过滤掉很多没有意义的信息。
4、避免在情绪不高的时候处理信息。 人在情绪低落的的时候,对信息的理解可能出现偏差、遗漏和过滤 。
5、给自己休息时间 。提高信息处理速度和效率不是埋头整理,也需要给自己休息的时间。我们需要从信息的海洋里抽出来,让自己休息。这样有利于从大局上对信息进行认识,分清主次。
总结
信息超载的情况在所难免。理解影响我们处理信息的因素,然后找到相应的解决办法才是正确的应对方法。逐步建立自己的“信息系统”,帮助我们处理复杂问题;建立自己的经验知识库,提高“自动处理”信息的能力;减少与科技的联系,避免不断被数字信息叨扰;在情绪好的时候处理信息,以及不要埋头在信息的海洋里,要给自己休息的时间。
❸ 在高级产品经理眼里,产品架构是怎样的
一般来说,搭建产品架构这件事情,只有少数的高级PM才能胜任,绝大多数刚入门的产品经理或产品专员,还涉及不到任务这么艰巨的工作(简单的产品功能结构不算)。
经历过需求的采集、分析和筛选,我们对产品的定位和用户的需求有了越来越深刻的认识,对整个产品方向的把控和版本迭代节奏也会更有感觉。这种感觉你也可以称之为“产品感”,虽然讲得有点悬乎,可又的确存在。以我个人的经验来看,不断地了解用户需求和场景,也是积累产品感的一种良好的方式。有了不错的产品感,我们要继续往前走,才能将产品推向一个更高的高度。
产品经理之前已经将产品第一个版本的功能需求都整理好了,也输出了一份详细的功能需求列表,这个时候要做的工作就是为产品搭建一个好的架构,也就是产品设计的第三个环节——搭框架了。任何一款互联网产品都应该有一个产品架构,有了这个强大而坚实的架构作为产品的基础,我们才能将产品需求给一个一个填充进去,让产品变的丰富立体,更有血有肉起来。
那究竟什么是产品架构,产品经理又该如何态纯塌来搭建一套好的产品架构,我们来接着往下看。
什么是产品架构
任何一个产品都有自己的产品架构(也有很多人把它称为信息架构),就好比每一个人都有自己的骨骼系统一样,你的骨架大小决定了你大致的身材会是如何,每个人的身材都不一样,高、矮、胖、裤旦瘦各有不同。
有些产品的产品架构比较繁杂,例如大部分to b 的产品,如客户关系管理系统、ERP软件、电商网站的管理后台、物流管理后台、SaaS软件等;有些架构则比较轻便、简单,比如绝大多数的to c 的产品,像我最近在玩的图友、摩拜单车、直播APP映客、花椒等,当然还包括微信(虽说现在功能越来越多了,但大体架构依然是简单、清晰明了的)。
我们直接看几个例子:
天猫商家工作后台
这是天猫商家的工作后台,看到左侧这一排满满的导航菜单了吗,是不是感觉超级复杂,光店铺管理就有超过10个二级菜单,要梳理好淘宝、天猫这种量级的电商平台产品架构可真不是一件简单的事。不过我也常常好奇一点,这么复杂的后台,卖家们都能清楚地知道每一个功能在哪里么。
复杂架构的产品,对产品经理的能力要求较高,需要产品经理能提供功能完备、结构严谨的架构系统,让用户能通过操作流程来使用各个功能。所以这样一个架构的特点是,它会带来一定的学习成本,有些甚至需要对产品的用户进行培训(像淘宝开设了淘宝大学以及淘宝社区)。这种架构产品的用户群体一般比较聚焦,只针对某一类人群,需要对海量功能进行合理整合、灵活布局来聚焦核心用户场景。
脸萌官网
再来看一个例子,这是曾经爆红一时的脸萌app的产品官网,仔细分析一下这个官网的产品架构,是不是超级简单,简单到只剩下2个菜单——首页、关于我们。这里要注意一点,即使是简单的2个菜单(有些官网只有一个菜单),也依帆圆然构成了完整的用户体验,因为通过这个架构,网站的目标和用户的需求都已经得到了充分的满足。当然,如果你想要重新定义网站的目标,或是用户的需求发生了变化,那你就该去准备重新调整产品架构了。
轻架构的产品,它的目标就是提供给用户一个简单明了的信息架构,让用户使用方便、体验流畅。对于产品经理来说,设计轻架构的产品,难点在于体验和创新。我们可以通过给产品做减法来不断聚焦用户的核心使用场景,让用户简单易上手,等产品的用户体量上升到一个新的台阶的时候,再去拓展产品的使用场景,延展产品架构。
典型的几个产品架构模型
Jesse James Garrett在《用户体验要素》这本书中,为我们系统阐述了互联网产品的几个典型的产品信息架构模型。第一种信息架构模型比较符合我们产品经理对产品架构的理解和定位,后面三种信息架构模型,你可以当作是第一种模型的补充,或者你也可以把它当作页面级别的信息架构梳理。
第一种,层级结构(hierarchical structure)
层级结构模型
书中原文是这么来描述这种产品架构的——“在层级结构中,节点与其他相关节点之间存在父级/子级的关系。子节点代表着更狭义的概念,从属于代表着更广义类别的父节点。不是每个节点都有子节点,但是每个节点都有一个父节点,一直往上直到整个结构的父节点。层级关系的概念对于用户来说非常容易理解,同时软件也是倾向于层级的工作方式,因此这种类型的结构是最常见的。”
这种伞状式的产品架构,恐怕是互联网、移动互联网产品中使用最多的一种信息结构,比如我们使用频度最高的微信、手q,以及各类to c 的移动APP,甚至是复杂的to b 类产品,都是使用这种产品架构进行产品设计。这种架构的特点是符合人类的认知习惯,因为人类天生就有分类的习惯,比如书桌,我们会习惯把书籍放在一起,把录音卡带等放到一边;又比如我们的衣柜,我们一半会将不同季节的衣服放在不同的位置。在生活中,整理物品是为了更容易地找到自己需要的东西。
下图是蜻蜓fm早期版本的一个层级信息架构:
蜻蜓fm的产品信息架构
在使用层级结构的时候,需要注意层级的深浅和宽窄这个问题。
大家都有过逛商场的经验,其实有时候做产品和逛商场很相似,有的商场设计的比较合理,很容易地能够让逛商场的用户找到想要的商品品类,有的商场设计却经常让你迷路,来来回回折腾好几次。在确定产品架构的时候,考虑产品架构的深度和广度成为了产品经理的一道必选题,就拿淘宝APP和唯品会APP来说,淘宝属于广而深的架构,唯品会则属于浅而窄的架构(相对)。在偏深度的架构中,用户操作起来效率不高,用户获取信息、完成目标任务的路径增多,但是相对而言,减少了用户选择的入口。在偏广度的架构中,用户面对的入口增多,在选择入口的时候比较费时,但是减少了用户的操作路径。
广度和深度的架构模式
宽而浅的产品架构和窄而深的产品架构,各有优势和劣势,具体使用哪一种产品架构,关键是要结合自身产品的定位、业务特性、发展阶段和用户特征及使用场景来进行取舍和判断。
第二种,自然结构(organic structures)
自然结构模型
原文描述如下——“自然结构不会遵循任何一致的模式。节点是逐一被连接起来的,同时这种结构没有太强烈的分类概念。自然结构对于探索一系列关系不明确或一直在演变的主题是很合适的。但是自然结构没有给用户提供一个清晰的指示,从而让用户能感觉他们在结构中的哪个部分。如果你想要鼓励自由探险的感觉,比如某些娱乐或教育网站,那自然结构可能会是个好的选择;但是,如果你的用户下次还需要依靠同样的路径,去找到同样的内容,那么这种结构就可能会把用户的经历变成一次挑战。”
事实上,这种形态的产品架构一般在to c 的游戏、娱乐、资讯产品里面运用的比较广泛,例如优酷视频、好奇心日报等。当然,很多时候自然结构是应该结合层级结构来进行思考的,比如用户进入好奇心日报这个网站,可能的一种使用方式是,用户心里已经有一个明确的资讯目标,想看一下最近商业有发什么大故事,所以用户会点击上方的“全部分类”,选择电影,选择商业板块然后进行浏览。也有另一种使用方式,就是毫无目标,直接就是这么从上到下浏览下去,看到自己感兴趣的文章标题便点击进去。
好奇心日报官网
自然结构很适合轻架构产品的浏览式形式,尤其比较适合to c 类的娱乐休闲类产品,因为这类产品的目标用户,绝大多数时候的使用场景都是无聊式地浏览,并没有明确的用户目标,也不需要解决什么特定的任务。
第三种,线性结构(sequential structures)
依旧来看下原文描述——“线性结构来自于你最熟悉的线下媒体。连贯的语言流程是最基本的信息结构类型,而且处理它的装置早已被深深地植入我们的大脑中了。书、文章、音像和录像全部都被设计成一种线性的体验。在互联网中线性结构经常被用于小规模的结构,例如单篇的文章或单个专题;大规模的线性结构则被用于限制那些需要呈现的内容顺序对于符合用户需求非常关键的应用程序,比如教学资料。”
说的直白一点,所谓线性结构,就是你用一个讲述故事的方式去给用户介绍你的产品,多见于产品专题页、帮助文档的设计。其实这部分也没什么可讲的,关键是讲述故事或者问题的时候,你的思路是否清晰,很多时候这部分工作也会由运营的同事替我们代劳。
金山快盘专题页
上图就是金山快盘做的一个活动专题页,通过线性结构讲故事的方式来将自己“100G空间永久免费”的活动宣传出去。
第四种,矩阵结构(matrix structure)
矩阵结构模型
书中是这么描述矩阵结构的:“矩阵结构允许用户在节点与节点之间沿着两个或更多的“维度”移动。由于每一个用户的需求都可以和矩阵中的一个“轴”联系在一起,因此矩阵结构通常能帮助那些“带着不同需求而来”的用户,使他们能在相同内容中寻找各自想要的东西。
举个例子来说,如果你的某些用户确实很想通过颜色来浏览产品,而其他人偏偏希望能通过产品的尺寸来浏览,那么矩阵结构就可以同时容纳这两种不同的用户。然而,如果你期望用户把这个当成主要的导航工具,那么超过三个维度的矩阵可能就会出现问题。在四个或更多维度的空间下,人脑基本上不可能很好地可视化这些移动。”
看了上面这段话,你的第一反应是不是想到了下面这个产品设计界面:
淘宝的宝贝详情页
矩阵式的信息结构,需要将多种信息内容放置在一个页面里,所以它的重点和难点是在于如何做好信息分层,让信息更加有效率地传达给自己的目标用户,这个问题我们放在后面来讲。
总体来说,产品经理了解这几个典型的产品信息架构模型,对于后期自己设计产品架构的时候,会更加明确应该朝哪个方向进行努力。这就好比一个建筑师在设计房屋之前,都需要先有足够的建筑设计知识,其中搭建建筑物的框架便是其中少不了的重要一课。
在具体的工作场景中,大多数产品经理从事的工作基本会分为两个大类,一类是C端产品经理,负责和普通用户打交道,更考验对用户痛点和兴奋点的把握和拿捏;另一类则是B端产品经理,负责和企业用户打交道,更考验对业务本质和行业战略的思考。那么,具体这两种类型的产品该如何来搭建产品架构呢?
To C 类的产品如何搭建产品架构
先简单介绍下业务背景:
2014年开始变热的O2O行业,已经迅速从表层变革进入深水区,很多O2O相关商业模式被验证错误或者迅速发展壮大,这个过程无数创业公司创立和倒下。除了商场、吃喝玩乐商户、线下服务商户等成为O2O热点之外,到家模式也成为一个新热点,美甲的、按摩的、泡脚的手艺人很多都变成了流动作业(典型如河狸家),如果说吃喝玩乐等希望辐射的是商圈流量,那到家服务无非希望搞定社区这块“富矿”。
15年初,当时我所在的公司正好也看中社区O2O这个行业(当然是老板有相关资源,又觉得市场前景广阔),而做社区O2O,有个绕不开的门槛——物业,如果有谁愿意费力气去啃物业这块儿硬骨头,就能有机会赢得未来。
于是我们就组建了一个小团队,先去做了一番市场调研,看一下市面上的这些社区O2O产品都做了哪些连接社区居民的服务,得出了这么一份竞品分析报告:
竞品分析报告
把玩了几十款APP后,我们发现只有少数几家公司的产品做了向业主提供在线支付物业费、停车费的服务,更别谈业主可以在线报修,呼叫安保等服务。
总的来说,当时的社区O2O还不算是一片红海,仍然有市场空间和机会进行切入。以产品的开发背景来说无非是两类APP,一类是“叮咚小区”“小区无忧”为代表的第三方创业公司,一类便是开发商自有的“住这儿”“彩之云”等移动端应用。
第一类像“叮咚小区”这种平台模式,没有用户基础,只靠烧投资人的钱来铺地面工作,当时来看是圈了不少小区,但是由于没有根基,用户随时会被抢走,想要做到成规模的应用不知道要烧多少年。目前传闻好像已经倒闭了,估计资本的钱也烧的差不多了吧。
第二类应用大都停留在试水阶段,扮演配合物业的角色,还没找到完整的盈利模式。“彩之云”可以算得上其中的优秀代表了,其垂直电商模式或许可以成为一个突破口,同阿里争夺“最后一公里”。
而当时的BAT等巨头还都持观望态度,没有太大动作,又或者是等待哪一家创业公司做起来之后再进行投资收购。很明显,大家都把这块难啃的骨头放在了一边。
由于当时公司在房地产物业这块有相关资源,所以,我们团队将产品的切入点定位在了物业公司,物业服务站和物业从业人员这里。而后,通过相关小区的试点,验证产品可行性后,再将产品的使用场景拓展到进行车位信息化管理、社区商户平台——商户通过物业平台入驻小区并投放广告、为成熟的业委会提供在线管理平台、社区教育等等。当时,产品的名字暂时就命名为“乐业安居”,正有让社区的老百姓拥有了我们的产品,就能安居乐业的意思。
经过一系列的产品设计准备工作,就要开始搭建APP的产品架构了。结合之前的市场调研及产品路径规划,以及团队对O2O的理解,梳理了一下我对社区O2O产品架构的规划思考,主要由4个tab组成:
社区:负责连接人与人,这个部分可以满足邻里之间人与人的交流沟通,你既可以在这里发布相关信息寻求帮助或需求交换,也可以在这里找到志趣相投的邻居一起去做一件事情。包括后期的业委会、居委会等等,都可以在这里展示相关信息。
物业:负责连接人与物业,这个部分就是通过移动互联网来改善业主和物业的连接效率,让物业的服务成本降低,效率提高,也提升业主的用户满意度。
周边:负责连接人与O2O服务,这个部分就是第三方O2O(如家政服务、维修服务、养老服务、社区教育等)、电商团购的综合展示舞台,通过整合资源可实现有自己特色的O2O社区服务。
我的:负责管理与”业主“有关的所有信息,如”我的报修“、”我的缴费“、若后面产品拓展做了社区教育,则还可能有”我的课程“等等。
社区o2o的产品架构
当然,第一个产品版本的开发,打算就先做2个部分——”物业“和”我的“,既然是从物业作为切入点,就先把这个点做好,后期在相关小区试点可行后,立即迭代产品,再引入其他功能让产品的使用场景变得更加丰富起来。
如果你仔细分析,应该可以看出这里面的框架逻辑——连接。
这里就涉及到对O2O最本质的理解,它的本质是什么?O2O本质其实就是用互联网去改善消费者和服务提供者的连接,让他们之间的连接变得效率更高、成本更低。所以整个产品架构都是围绕着连接去做的功课,连接人与人,人与物业服务、人与其他服务,这样对于用户来说,他们对你产品的认知逻辑就会非常清晰,每一次打开产品的时候,都能够轻松地找到自己想要的东西。
就这个案例,我们尝试着来做一点总结:
1. 做好分类
前面我们就已经说过一点,人类天生就有分类整理的习惯,有这个习惯也是为了更方便地找到自己所需要的东西。超市里的商品摆放也是如此,所有的商品需要按照不同的分类,摆放在不同的货架上,并且上面还要贴上相应的指示牌,告诉用户这是什么商品区域。
我们常用的Windows 资源管理器也是一个极佳的例子,试想一下:如果我们将自己电脑上的所有文档都归存在一个盘里,而且这个盘并没有文件夹的形式让你分类管理你的文件,word文档、excle文档、ppt文档、pdf文档、视频文件、图片格式文件等都混杂在一起,那你想要找到自己需要的文档也则太难了。幸好在Windows 资源管理器模式下,我们可以创建文件夹,并且可以按照文件的名称、修改日期、类型、大小等进行排序和分组,这样才方便了我们更加快捷地找到自己所需的信息和文档。
同理,网站或者移动APP应用也是如此,信息越多,就越需要组织和整理。我们可以根据逻辑习惯来对信息进行分类整理,如上面所举的例子,就是根据社区O2O“连接”的逻辑进行分类的;当然,也可以直接去探究用户的想法,了解用户的使用习惯。一个好的产品经理,往往也是这个行业的资深人士,或者称为行业专家。因为只有产品经理自己本身对所处行业有极深的理解,他才能更准确地命中产品架构的脉门,有时候甚至是一击而中。
2. 平衡用户与商业
对产品架构的设计,一方面是要了解用户的信息需求,另一方面也要了解整个产品的商业目的和诉求。一般情况下,用户目标和商业目标之间肯定存在着矛盾,比如用户都不想看广告,但企业又希望能够把自己的业务和广告推荐给用户(典型如微信的朋友圈广告)。如果一个产品只满足用户的目标,产品体验当然会不错,但这个产品也很难走的长远,毕竟企业的终极目标是要盈利的。
这个时候,如何平衡用户与商业,就成为考量产品经理的功底的重要一环了。在这方面,我们向微信团队进行学习,微信在平衡用户体验和商业目标这一块做的非常好。还记得2015年1月份的朋友圈广告么,当时一经推出,便立刻成为了朋友圈的热门话题,大家都争相在广告底部进行点赞和评论,仿佛品牌一下子就成为了我们身边的朋友一样,在朋友圈直接与我们分享故事和内容。而在社区O2O这个案例中,我们也将周边这种带有业务、广告性质的功能,放在了后面的版本进行迭代开发,并没有立即尝试进行产品的商业化,这也是一种平衡的体现。
微信广告
3. 重要的功能设置快捷入口
产品架构应该是结构清晰、合乎逻辑的,让有明确目标的用户能够快速找到所需信息;有不确定目标的用户,通过浏览和寻找,一点点地明确自己需要的信息;没有目标的用户,则可以在探索中激发需求。所以,对于后两者用户来说,如果重要功能和常用功能隐藏地太深,则很有可能会让他们对产品丧失兴趣。
为重要功能和常用功能设置快捷入口,就好比在原有的产品架构上搭了一个“快捷通道”,典型如微信将“购物”放在了“发现”这个菜单里,手Q的“购物”入口改成了“京东购物”,京东和腾讯的“联姻”,由微信和手机QQ社交应用入口、朋友圈、朋友群、公众号、广点通,以及线下推广共同组成了多场景的京东社交购物生态,汇聚了庞大的社群流量,为京东带来了不少的新用户和成交增长。
当然,快捷入口的设置也是一个需要权衡的过程。必要的快捷入口可以提高用户的使用效率,也能满足产品一定的商业目标,但是如果快捷入口过多(尤其是参杂太多商业目标的快捷入口),产品也会变得混乱和复杂,这个时候就会让用户的使用效率下降,有点得不偿失了。所以你会看到,微信这款产品,并没有把所有的业务都通过快捷入口的方式展现出来,而是通过在“我--钱包”里面,展示其他的第三方服务。这么一来,这些功能隐藏地如此之深,产品的用户就不会觉得微信是一款复杂而混乱的产品了。
京东微信手机QQ购物两周年庆典
当然,在业余时间我们自己把玩产品的时候,也可以试着去解构一下其他公司的APP产品,看下他们的产品架构是如何搭建的,又有什么地方是值得学习和借鉴的,这也是一个非常重要的学习手段。
说一下我常用的方法,分三步来走:
拆解产品骨架,将所有模块和功能点画成思维导图
分析重点功能的使用场景与流程
分析次要功能的使用场景与流程
当然,分析产品的时候需要考虑很多因素,不仅是从产品设计出发,还要从行业背景、公司战略、运营、实际资源等情况出发,才能得出更接近真相的答案。
To B 类产品如何搭建产品架构
To B类产品(通常都是后台产品)的设计非常具有挑战性,因为To C类的前台产品,大家都已经培养起了使用习惯,对功能有一定程度的理解,见过的模式足够多,能够建立起一定的产品模型,也容易找到参照物去模仿。但是To B类的后台产品,你几乎没有什么竞品可以参照和模仿,所以在搭建产品架构的时候则要求产品经理非常懂业务,非常考验PM的核心竞争力——业务知识储备、结构化思维和系统性抽象能力。不同行业的产品可能做整体架构的思路也不一样。
稍微简单类比一下,产品架构复杂程度的感觉由弱到强是这样的——
设计或者操控以下交通工具:
自行车
汽车
飞机
火箭
宇宙飞船
……
是不是感觉到难度越来越大了,不过我们也算是了解了复杂产品的架构是怎么样的了,其实依然还是有对应的方法去进行设计的。在对后台产品搭建产品架构的时候,往往有两种思路可供参考:
1.按功能模块来进行划分
什么叫按功能模块来进行划分?如下图:
按功能模块来划分
如果一个后台产品的目标用户比较单一,且用户需求也比较统一,并没有出现说某个用户只需要使用其中某一个功能模块的时候,且功能和功能之间并没有太多的逻辑关系,往往可以尝试使用按功能模块来进行划分的方式。比如网络移动统计,它的目标用户就是互联网公司内部的运营人员、产品人员,且运营和产品关注的数据绝大部分是可以通用的,也就是说用户需求还是比较统一的。
2.按业务逻辑来进行划分
另一个划分逻辑,是按业务逻辑来进行划分。很多公司内部的信息管理系统,都是采用这种产品架构来进行设计的,因为这个产品的目标用户往往涉及到多方角色,既有公司的业务人员,如市场、销售、客服、前台等,又有公司的职能部门人员,如人事、财务、行政等。这个时候再采用功能模块来进行后台的产品架构梳理,则显得不是那么适用了。
按业务逻辑来进行划分,则要求产品经理在规划系统时要思考这个系统的作用到底是解决了什么问题,再具体一点就是——解决了哪些用户的哪些问题。在这个大的环境下确定了之后,在需求的收集和分析的阶段,就应该按照业务角色来进行相关的工作,而后到了梳理产品架构这一步才能更得心应手一些。如下图所示,一个研发管理的子系统,就对应了这么多不同角色人员的不同需求。
按业务逻辑来划分
那么,产品经理在做to b产品的时候,进行业务规划和产品架构之前需要储备哪些方面的能力呢?
需要有一定的技术理解能力,帮助自己理解清楚信息在不同的系统之间是怎样交换、存储、耦合和解耦的。
要有基本的商业逻辑思维,比如节省成本、提高营收、提升效率等。
业务的整合需要对所在行业及业务本身有深刻的理解,同时对公司整体的运行逻辑也要有一定的认识,如销售、市场、财务、运营、产品、技术等。
需要有更强的抽象能力。不仅是把一个工作流程抽象成一个功能,而是要把一个业务抽象成一个系统,并且知道这个系统在产品中所处的位置;不是理清任务与任务之间的关系,而是要清楚业务与业务之间的关系,这样的关系最后是如何交织和演化在一起,共同促进产品繁荣的。
最后,这里提供几个优秀的后台产品供大家参考和研习:
淘宝的商家后台
有赞微商城的后台
微信公众平台后台
总结来说,产品架构这件事情涉及的面非常广,上至产品的宏观计划,下至产品的功能模块,囊括产品的目标及愿景、用户需求、商业需求、数据业务流程和设计框架,还涉及到产品的生态结构,所以要搭建好一套产品框架并不是件易事。产品经理在这条道路的学习上,也要做好一个漫长的认知迭代准备。
好的产品架构具有怎样的特性
好的产品架构对于一个产品来说是非常重要的一件事情,就如同人的骨架之于人,房屋的框架之于房屋,是起到支撑、引导、承重的作用。说回到互联网产品,好的产品架构要具备的几个特征,总结起来大致是这么几个点:易用性、稳定性、可扩展性。
什么是易用性呢?人的天性是懒惰的,试想如果用户在一次简单的使用产品后能记住每一个操作,而且能重复使用,不用刻意学习具体的操作,使用起来一定是很“爽”的。对于产品经理来说,我们必须竭力让用户能够方便地使用产品,这就需要产品架构上能够提供一个清晰的路径导航,让用户不会产生迷路等不爽的用户行为了。
什么是稳定性呢?这部分又通常和后台的技术架构有所关联,当产品不断演进和迭代的时候,系统的架构是否能够承受那么多用户的同时访问,在性能和响应速度方面有没有什么影响。所谓的稳定性原则,就是说你提供的服务一定是稳定可靠的,是能及时响应需求的,尽量避免类似APP上突然有提示失败、服务器异常、空等情况。
易用性和稳定性,就不再多用文字解释了,我们来看看产品架构的可扩展性。
可扩展性其实是在传达一个信息,就是要求产品经理在设计产品架构的时候,就要去多思考未来这个产品是否会新增加功能或者内容,也就要求产品经理要有产品规划的意识。如果一个新做的产品刚上线没多久,因为要新增功能,导致页面的信息架构重新调整,相关人员怨声载道,产品的使用用户也会增加对产品的认知成本。可见,产品架构的可扩展性是有多重要,产品经理需要根据实际情况及未来可预见的规划进行构思,争取将产品的维护成本降到最低。
❹ 如何梳理复杂系统的用户需求
1.概念 需求的定义包括从用户角度(系统的外部行为),以及从开发者角度(一些内部特性)来阐述需求. 关键的问题是一定要编写需求文档.我曾经目睹过一个项目中途更换了所有的开发者,客户被迫与新的需求分析者坐到一起.系统的分析人员说:"我们想与你谈谈你的需求."客户的第一反应便是:"我已经将我的要求都告诉你们前任了,现在我要的就是给我编一个系统". 百事通 而实际上,UGGs,需求并未编写成文档,因此新的分析人员不得不从头做起.所以如果只有一堆邮件、会谈记录或一些零碎的未整理的对话,你就确信你已明白用户的需求,那完全是自欺欺人. 需求的另外一种定义认为需求是"用户所需要的并能触发一个程序或系统开发工作的说明".有些需求分析专家拓展了这个概念:"从系统外部能发现系统所具有的满足于用户的特点、功能及属性等".这些定义强调的是产品是什么样的,而并非产品是怎样设计、构造的.而下面的定义则从用户需要进一步转移到了系统特性: 需求是指明必须实现什么的规格说明.它描述了系统的行为、特性或属性,是在开发过程中对系统的约束. 从上面这些不同形式的定义不难发现:并没有一个清晰、毫无二义性的"需求"术语存在,真正的"需求"实际上在人们的脑海中,这个人们主要是指客户,但一般情况下,用户并不能描述自己的需要,只就需要系统分析人员根据用户的自己语言的描述整理出相关的需要再进一步和客户核对.系统分析员和客户需要确保所有项目风险承担者在描述需求的那些名词的理解上务必达成共识. 任何文档形式的需求(例如如下将要描述的需求规格说明书)仅是一个模型,一种描述. 2.需求分析的任务 开发软件系统最为困难的部分就是准确说明开发什么.最为困难的概念性工作便是编写出详细技术需求,这包括所有面向用户、面向机器和其它软件系统的接口.同时这也是一旦做错,将最终会给系统带来极大损害的部分,并且以后再对它进行修改也极为困难. 目前,国内产品的庞杂,一家企业可能有几个系统并立运行,它们之间接口是系统开发人员最头痛的问题. 对于商业最终用户应用程序,企业信息系统和软件作为一个大系统的一部分的产品是显而易见的.但是对于我们开发人员来说,并没有编写出客户认可的需求文档,我们如何知道项目于何时结束?而如果我们不知道什么对客户来说是重要的,那我们又如何能使客户感到满意呢? 然而,即便并非出于商业目的的软件需求也是必须的.例如库、组件和工具这些供开发小组内部使用的软件.当然你可能偶尔勿需文档说明就能与其他人意见较为一致,但更常见的是出现重复返工这种不可避免的后果,而重新编制代码的代价远远超过重写一份需求文档的代价,这些血的教训正在国内的软件开发者身上发生. 近来,我遇到一个开发小组开发包括代码编辑器在内的一套内部使用的计算机辅助软件.不幸的是,当他们开发完这个工具后,发现这个工具不能打印出源代码文件,使用者当然希望有这个功能.结果这个小组只好手工抄写源代码文档以供代码检查.这说明那怕需求明确无误并构思准确,如果我们没有编写文档,软件达不到期望目标也只能是咎由自取了. 相反的情况,我曾见一个要集成到"错误跟踪系统"中的简单界面写了一页需求说明.而操作系统系统管理员在为处理脚本时发现简单的一张需求清单竟是如此有用.他们依据需求对系统进行测试时,此系统不仅非常清晰地实现了所有必需功能,而且未发现任何错误. 事实上,需求文档在开发过程中一直起指导作用. 3.需求分析过程 可把整个软件需求工程研究领域划分为需求开发和需求管理两部分更合适,如图4-1所示: 图4-1 需求工程域的层次分解示意图 需求开发可进一步分为:问题获取、分析、编写规格说明和验证四个阶段.这些子项包括软件类产品中需求收集、评价、编写文档等所有活动.需求开发活动包括以下几个方面: 确定产品所期望的用户类别. 获取每个用户类的需求. 了解实际用户任务和目标以及这些任务所支持的业务需求. 分析源于用户的信息以区别用户任务需求、功能需求、业务规则、质量属性、建议解决方法和附加信息. 将系统级的需求分为几个子系统,并将需求中的一部份分配给软件组件. 了解相关质量属性的重要性. 商讨实施优先级的划分. 将所收集的用户需求编写成文档和模型. 评审需求规格说明,确保对用户需求达到共同的理解与认识,并在整个开发小组接受说明之前将问题都弄清楚. 需求管理需要"建立并维护在软件工程中同客户达成的合同" .这种合同都包含在编写的需求文档与模型中.客户的接受仅是需求成功的一半,开发人员也必须能够接受他们,并真正把需求应用到产品中.通常的需求管理活动包括: 定义需求基线(迅速制定需求文档的主体). 评审提出的需求变更、评估每项变更的可能影响从而决定是否实施它. 以一种可控制的方式将需求变更融入到项目中. 使当前的项目计划与需求一致. 估计变更需求所产生影响并在此基础上协商新的承诺,这种承诺具体体现在项目解决方案上. 让每项需求都能与其对应的设计、源代码和测试用例联系起来以实现跟踪. 在整个项目过程中跟踪需求状态及其变更情况. 以上几点说明是我总结了成功实施项目后系统分析人员的经验,同时也根据国内外的其他系统实施的相关成功经验,进行了总结. 4.需求的类型 下面这些定义是需求工程领域中常见术语的定义. 软件需求包括三个不同的层次:业务需求、用户需求和功能需求(也包括非功能需求). 1.业务需求(business requirement)反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明. 2.用户需求(user requirement) 文档描述了用户使用产品必须要完成的任务,这在使用实例(use case)文档或方案脚本说明中予以说明. 3.功能需求(functional requirement)定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求. 在软件需求规格说明书 (SRS)中说明的功能需求充分描述了软件系统所应具有的外部行为.软件需求规格说明在开发、测试、质量保证、项目管理以及相关项目功能中都起了重要的作用.对一个大型系统来说,软件功能需求也许只是系统需求的一个子集,因为另外一些可能属于子系统(或软件部件). 作为功能需求的补充,软件需求规格说明还应包括非功能需求,它描述了系统展现给用户的行为和执行的操作等.它包括产品必须遵从的标准、规范和合约;外部界面的具体细节;性能要求;设计或实现的约束条件及质量属性.所谓约束是指对开发人员在软件产品设计和构造上的限制.质量属性是通过多种角度对产品的特点进行描述,从而反映产品功能.多角度描述产品对用户和开发人员都极为重要. 下面以一个字处理程序为例来说明需求的不同种类.业务需求可能是:"用户能有效地纠正文档中的拼写错误",该产品的包装盒封面上可能会标明这是个满足业务需求的拼写检查器.而对应的用户需求可能是"找出文档中的拼写错误并通过一个提供的替换项列表来供选择替换拼错的词".同时,该拼写检查器还有许多功能需求,如找到并高亮度提示错词的操作;显示提供替换词的对话框以及实现整个文档范围的替换. 从以上定义可以发现,需求并未包括设计细节、实现细节、项目计划信息或测试信息.需求与这些没有关系,它关注的是充分说明你究竟想开发什么.项目也有其它方面的需求,如开发环境需求或发布产品及移植到支撑环境的需求.尽管这些需求对项目成功也至关重要,但它们并非本书所要讨论的. 5.需求分析的原则 不重视需求过程的项目队伍将自食其果.需求工程中的缺陷将给项目成功带来极大风险,这里的"成功"是指推出的产品能以合理的价格、及时地在功能、质量上完全满足用户的期望.下面将讨论一些需求风险. 不适当的需求过程所引起的一些风险: 1. 无足够用户参与 客户经常不明白为什么收集需求和确保需求质量需花费那么多功夫,开发人员可能也不重视用户的参与.究其原因:一是因为开发人员感觉与用户合作不如编写代码有意思;二是因为开发人员觉得已经明白用户的需求了.在某些情况下,与实际使用产品的用户直接接触很困难,而客户也不太明白自己的真正需求.但还是应让具有代表性的用户在项目早期直接参与到开发队伍中,并一同经历整个开发过程. 系统人员在实践过程中,也有些感觉,在实施一家公司的项目时,若无足够的用户参与,系统人员获得的需求是片面的,不完整的,这样系统在需求之初就埋下风险. 2. 用户需求的不断增加 在开发中若不断地补充需求,项目就越变越庞大以致超过其计划及预算范围.计划并不总是与项目需求规模与复杂性、风险、开发生产率及需求变更实际情况相一致,这使得问题更难解决.实际上,问题根源在于用户需求的改变和开发者对新需求所作的修改. 要想把需求变更范围控制到最小,必须一开始就对项目视图、范围、目标、约束限制和成功标准给予明确说明,并将此说明作为评价需求变更和新特性的参照框架.说明中包括了对每种变更进行变更影响因素分析的变更控制过程,有助于所有风险承担者明白业务决策的合理性,即为何进行某些变更,相应消耗的时间、资源或特性上的折中. 产品开发中不断延续的变更会使其整体结构日渐紊乱,补丁代码也使得整个程序难以理解和维护.插入补丁代码使模块违背强内聚、松耦合的设计原则,特别是如果项目配置管理工作不完善的话,收回变更和删除特性会带来问题.如果你尽早地区别这些可能带来变更的特性,你就能开发一个更为健壮的结构,并能更好地适应它.这样设计阶段需求变更不会直接导致补丁代码,同时也有利于减少因变更导致质量的下降. 3. 模棱两可的需求 模棱两可是需求规格说明中最为可怕的问题.它的一层含义是指诸多读者对需求说明产生了不同的理解;另一层含义是指单个读者能用不止一个方式来解释某个需求说明. 模棱两可的需求会使不同的风险承担者产生不同的期望,它会使开发人员为错误问题而浪费时间,并且使测试者与开发者所期望的不一致.一位系统测试人员曾告诉我,她所在的测试组经常对需求理解有误,以致不得不重写许多测试用例并重做许多测试. 处理模棱两可需求的一种方法是组织好负责从不同角度审查需求的队伍.仅仅简单浏览一下需求文档是不能解决模棱两可问题的.如果不同的评审者从不同的角度对需求说明给予解释,但每个评审人员都真正了解需求文档,这样二义性就不会直到项目后期才被发现,那时再发现的话会使得更正代价很大. 4. 不必要的特性 "画蛇添足"是指开发人员力图增加一些"用户欣赏"但需求规格说明中并未涉及的新功能.经常发生的情况是用户并不认为这些功能性很有用,以致在其上耗费的努力"白搭"了.开发人员应当为客户构思方案并为他们提供一些具有创新意识的思路,具体提供哪些功能要在客户所需与开发人员在允许时限内的技术可行性之间求得平衡,开发人员应努力使功能简单易用,而不要未经客户同意,擅自脱离客户要求,自作主张. 同样,客户有时也可能要求一些看上去很"酷",但缺乏实用价值的功能,而实现这些功能只能徒耗时间和成本.为了将"画蛇添足"的危害尽量减小,应确信:你明白为什么要包括这些功能,以及这些功能的"来龙去脉",这样使得需求分析过程始终是注重那些能使用户完成他们业务任务的核心功能. 5. 过于精简的规格说明 有时,客户并不明白需求分析有如此重要,于是只作一份简略之至的规格说明,仅涉及了产品概念上的内容,然后让开发人员在项目进展中去完善,结果很可能出现的是开发人员先建立产品的结构之后再完成需求说明.这种方法可能适合于尖端研究性的产品或需求本身就十分灵活的情况.但在大多数情况下,这会给开发人员带来挫折(使他们在不正确的假设前提和极其有限的指导下工作),也会给客户带来烦恼(他们无法得到他们所设想的产品). 6. 忽略了用户分类 大多数产品是由不同的人使用其不同的特性,使用频繁程度也有所差异,使用者受教育程度和经验水平也不尽相同.如果你不能在项目早期就针对所有这些主要用户进行分类的话,必然导致有的用户对产品感到失望.例如,菜单驱动操作对高级用户太低效了,但含义不清的命令和快捷键又会使不熟练的用户感到困难. 7. 不准确的计划 据统计,导致需求过程中软件成本估计极不准确的原因主要有以下五点:频繁的需求变更、遗漏的需求、与用户交流不够、质量低下的需求规格说明和不完善的需求分析. 对不准确的要求所提问题的正确响应是"等我真正明白你的需求时,我就会来告诉你".基于不充分信息和未经深思的对需求不成熟的估计很容易为一些因素左右.要作出估计时,最好还是给出一个范围.未经准备的估计通常是作为一种猜测给出的,听者却认为是一种承诺.因此我们要尽力给出可达到的目标并坚持完成它. 6.需求分析人员和用户的合作关系 优秀的软件产品是建立在优秀的需求基础之上的.而高质量的需求来源于客户与开发人员之间有效的交流与合作.通常,开发人员与客户或客户代理人,如市场人员间的关系反而会成为一种对立关系.双方的管理者都只想自己的利益而搁置用户提供的需求从而产生摩擦,在这种情况下,不会给双方带来一点益处. 只有当双方参与者都明白要成功自己需要什么,同时也应知道要成功合作方需要什么时,才能建立起一种合作关系.由于项目压力与日渐增,所有风险承担者有着一个共同的目标这一点容易被遗忘.其实大家都想开发出一个既能实现商业价值,又能满足用户需要,还能使开发者感到满足的优秀软件产品. 软件客户需求权利书列出了十条关于客户在项目需求工程实施中与分析人员、开发人员交流时的合法要求.每一项权利都对应着软件开发人员、分析人员的义务.而软件客户需求义务书也列出了十条关于客户在需求过程中应承担的义务.如果愿意,可以将其作为开发人员的权利书. 客户有如下权利: 1:要求分析人员使用符合客户语言习惯的表达 需求讨论应集中于业务需要和任务,故要使用业务术语,你应将其教给分析人员,而你 不一定要懂得计算机的行业术语. 2:要求分析人员了解客户的业务及目标 通过与用户交流来获取用户需求、分析人员才能更好地了解你的业务任务和怎样才能使产品更好地满足你的需要.这将有助于开发人员设计出真正满足你的需要并达到你期望的优秀软件.为帮助开发人员和分析人员,可以考虑邀请他们观察你或你的同事是怎样工作的.如果新开发系统是用来替代已有的系统,那么开发人员应使用一下目前的系统,这将有利于他们明白目前系统是怎样工作的,其工作流程的情况,以及可供改进之处. 3:要求分析人员编写软件需求规格说明 分析人员要把从你和其他客户那里获得的所有信息进行整理,以区分开业务需求及规范、功能需求、质量目标、解决方法和其它信息.通过这些分析就能得到一份软件需求规格说明.而这份软件需求规格说明便在开发人员和客户之间针对要开发的产品内容达成了协议.软件需求规格说明书可以用一种你认为易于翻阅和理解的方式组织编写.要评审编写出的规格说明以确保它们准确而完整地表达了你的需求.一份高质量的软件需求规格说明能有助于开发人员开发出真正需要的产品. 4:要求得到需求工作结果的解释说明 分析人员可能采用了多种图表作为文字性软件需求规格说明的补充.因为如工作流程图那样的图表能很清楚地描述出系统行为的某些方面.所以需求说明中的各种图表有着极高的价值.虽然它们不太难于理解,但是你很可能对此并不熟悉.因此可以要求分析人员解释说明每张图表的作用或其它的需求开发工作结果和符号的意义,及怎样检查图表有无错误及不一致等. 5:要求开发人员尊重你的意见 如果用户与开发人员之间不能相互理解,那关于需求的讨论将会有障碍,共同合作能使大家"兼听则明".参与需求开发过程的客户有权要求开发人员尊重他们并珍惜他们为项目成功所付出的时间.同样,客户也应对开发人员为项目成功这一共同目标所作出的努力表示尊重与感激. 6:要求开发人员对需求及产品实施提供建议,拿出主意 通常,客户所说的"需求"已是一种实际可能的实施解决方案,分析人员将尽力从这些解决方法中了解真正的业务及其需求,同时还应找出已有系统不适合当前业务之处,以确保产品不会无效或低效.在彻底弄清业务领域内的事情后,分析人员有时就能提出相当好的改进方法.有经验且富有创造力的分析人员还能提出增加一些用户并未发现的很有价值的系统特性. 7:描述产品易使用的特性 你可以要求分析人员在实现功能需求的同时还要注重软件的易用性.因为这些易用特性或质量属性能使你更准确、高效地完成任务.例如,客户有时要求产品要"用户友好"或"健壮"或"高效率",但这对于开发人员来说,太主观了并无实用价值.正确的应是:分析人员通过询问和调查了解客户所要的友好、健壮、高效所包含的具体特性. 8:调整需求,允许重用已有的软件组件 需求通常要有一定的灵活性.分析人员可能发现已有的某个软件组件与你描述的需求很相符.在这种情况下,分析人员应提供一些修改需求的选择以便开发人员能够在新系统开发中重用一些已有的软件.如果有可重用的机会出现,同时你又能调整你的需求说明,那就能降低成本和节省时间,而不必严格按原有的需求说明开发.所以说,如果想在产品中使用一些已有的商业常用组件,而它们并不完全适合你所需的特性,这时一定程度上的需求灵活性就显得极为重要了. 9:获得满足客户功能和质量要求的系统 每个人都希望项目获得成功.但这不仅要求你要清晰地告知开发人员关于系统"做什么"所需的所有信息,而且还要求开发人员能通过交流了解清楚取舍与限制.一定要明确说明你的假设和潜在的期望.否则,开发人员开发出的产品很可能无法让你满意. 客户有下列义务: 1:给分析人员讲解你的业务 分析人员要依靠你给他们讲解的业务概念及术语.但你不能指望分析人员会成为该领域的专家,而只能让他们真正明白你的问题和目标.不要期望分析人员能把握你们业务的细微与潜在之处,他们很可能并不知道那些对于你和你的同事来说理所当然的"常识". 2:抽出时间清楚地说明并完善需求 客户很忙,经常在最忙的时候还得参与需求开发.但无论如何,你有义务抽出时间参与"头脑风暴"会议的讨论,接受采访或其它获取需求的活动.有时分析人员可能先以为明白了你的观点,而过后发现还需要你的讲解.这时,请耐心一些对待需求和需求的精化工作过程中的反复,因为它是人们交流中的很自然的现象,何况这对软件产品的成功极为重要. 3:准确而详细地说明需求 编写一份清晰、准确的需求文档是很困难的.由于处理细节问题不但烦人而且又耗时,故很容易留下模糊不清的需求.但是,在开发过程中,必须得解决这种模糊性和不准确性.而你恰是为解决这些问题作出决定的最佳人选.不然的话,你就只好靠开发人员去正确猜测了.在需求规格说明中暂时加上待定(to be determined, TBD也可采用汉语拼音略写"DQD:待确定")的标志是个不错的办法.用该标志可指明了哪些需要进一步探讨、分析或增加信息的地方.不过,有时也可能因为某个特殊需求难以解决或没有人愿意处理它而注上TBD标志.尽量将每项需求的内容都阐述清楚,以便分析人员能准确的将其写进软件需求规格说明中.如果你一时不能准确表述,那就得允许获取必要的准确信息这样一个过程.通常使用所谓的原型技术.通过开发的原型,你可以同开发人员一起反复修改,不断完善需求定义. 4:及时地作出决定 正如一位建筑师为你修建房屋,分析人员将要求你做出一些选择和决定.这些决定包括来自多个用户提出的处理方法或在质量特性冲突和信息准确度中选择折衷方案等.有权做出决定的客户必须积极地对待这一切,尽快做处理、做决定.因为开发人员通常只有等你做出了决定才能行动,而这种等待会延误项目的进展. 5:尊重开发人员的需求可行性及成本评估 所有的软件功能都有其成本价格,开发人员最适合预算这些成本(尽管许多开发人员并不擅长评估预测).你所希望的某些产品特性可能在技术上行不通,或者实现它要付出极为高昂的代价.而某些需求试图在操作环境中要求不可能达到的性能或试图得到一些根本得不到的数据,开发人员会对此作出负面的评价意见,你应该尊重他们的意见.有时,你可以重新给出一个在技术上可行、实现上便宜的需求,例如,要求某个行为在"瞬间"发生是不可行的,但换种更具体的时间需求说法("在50ms以内",但若没有准确的技术分析不能轻易下结论),这就可以实现了. 6: 划分需求优先级别 大多数项目没有足够的时间或资源来实现功能性的每个细节.决定哪些特性是必要的,哪些是重要的,哪些是好的,是需求开发的主要部分.只能由你来负责设定需求优先级,因为开发者并不可能按你的观点决定需求优先级.开发者将为你确定优先级提供有关每个需求的花费和风险的信息.当你设定优先级时,你帮助开发者确保在适当的时间内用最小的开支取得最好的效果.在时间和资源限制下,关于所需特性能否完成或完成多少应该尊重开发人员的意见.尽管没有人愿意看到自己所希望的需求在项目中未被实现,但毕竟是要面对这种现实的.业务决策有时不得不依据优先级来缩小项目范围或延长工期,或增加资源,或在质量上寻找折衷. 7:评审需求文档和原型 正如我们将在第1 4章讨论的,无论是正式的还是非正式的方式,对需求文档进行评审都会对软件质量提高有所帮助.让客户参与评审才能真正鉴别需求文档是否的确完整、正确说明了期望的必要特性.评审也给客户代表提供一个机会,给需求分析人员带来反馈信息以改进他们的工作.如果你认为编写的需求文档不够准确,就有义务尽早告诉分析人员并为改进提供建议.通过阅读需求规格说明,很难想象实际的软件是什么样子的.更好的方法是先为产品开发一个原型.这样你就能提供更有价值的反馈信息给开发人员,帮助他们更好地理解你的需求.必须认识到:原型并非是一个实际产品,但开发人员能将其转变、扩充成功能齐全的系统. 8:需求出现变更要马上联系 不断的需求变更会给在预定计划内完成高质量产品带来严重的负面影响.变更是不可避免的,但在开发周期中变更越在晚期出现,其影响越大.变更不仅会导致代价极高的返工,而且工期也会被迫延误,特别是在大体结构已完成后又需要增加新特性时.所以一旦你发现需要变更需求时,请一定立即通知分析人员. 9:应遵照开发组织处理需求变更的过程 为了将变更带来的负面影响减少到最低限度,所有的参与者必须遵照项目的变更控制过程.这要求不放弃所有提出的变更,对每项要求的变更进行分析、综合考虑,最后作出合适的决策以确定将某些变更引入项目中. 10:尊重开发人员采用的需求工程过程 软件开发中最具挑战性的莫过于收集需求并确定其正确性.分析人员采用的方法有其合理性.也许你认为需求过程不太划算,但请相信花在需求开发上的时间是"很有价值"的.如果你理解并支持分析人员为收集、编写需求文档和确保其质量所采用的技术,那么整个过程将会更为顺利.尽管去询问分析人员为什么他们要收集某些信息,或参与与需求有关的活动. 系统分析人员在开发过程中可能会遇到以下问题,一些很忙的客户可能不愿意积极参与需求过程,而缺少客户参与将很可能导致不理想的产品.故一定要确保需求开发中的主要参与者都了解并接受他们的义务.如果遇到分歧,通过协商以达成对各自义务的相互理解,这样能减少今后的摩擦. 7.需求文档 需求开发的最终成果是:客户和开发小组对将要开发的产品达成一致协议.协议综合了业务需求、用户需求和软件功能需求.就像我们早先所看到的,项目视图和范围文档包含了业务需求,而使用实例文档则包含了用户需求.你必须编写从使用实例派生出的功能需求文档,还要编写产品的非功能需求文档,包括质量属性和外部接口需求.只有以结构化和可读性方式编写这些文档,并由项目的风险承担者评审通过后,各方面人员才能确信他们所赞同的需求是可靠的. 你可以使用以下三种方法编写软件需求规格说明: 用好的结构化和自然语言编写文本型文档. 建立图形化模型,这些模型可以描绘转换过程、系统状态和它们之间的变化、数据关系、逻辑流或对象类和它们的关系. 编写形式化规格说明,这可以通过使用数学上精确的形式化逻辑语言来定义需求. 由于形式化规格说明具有很强的严密性和精确度,因此,所使用的形式化语言只有极少数软件开发人员才熟悉,更不用说客户了.虽然结构化的自然语言具有许多缺点,但在大多数软件工程中,它仍是编写需求文档最现实的方法.包含了功能和非功能需求的基于文本的软件需求规格说明已经为大多数项目所接受.图形化分析模型通过提供另一种需求视图,增强了软件需求规格说明. 如果解决了您的问题请采纳! 如果未解决请继续追问