首页 > 其他分享 >构建之法读书笔记七

构建之法读书笔记七

时间:2023-05-27 20:22:05浏览次数:63  
标签:需求 WBS 读书笔记 用户 构建 软件 团队 节点

第八章 需求分析

8.1 软件需求

①获取和引导需求:软件团队需要找到软件的利益相关者,了解和挖掘他们对软件的需求,引导他们表达出对软件的需求;需求还可以来自各种管理机构;需求不仅来自外界,还可以来自软件企业本身;需求还可以来自技术团队本身;有些需求的目的是要更好地了解用户的行为和需求。

②分析和定义需求

③验证需求

④在软件产品的生命周期中管理需求

8.2 软件产品的利益相关者

8.3 获取用户需求——用户调查

几种常用的用户调研方法:焦点小组、深入面谈、卡片分类、用户调查问卷、用户日志研究、人类学调查、眼动追踪研究、快速原型调研、A/B测试

8.4 竞争性需求分析的框架——NABCD模型

1. N(Need,需求)

你的创意解决了用户的什么需求?这个需求可以是明确的、公开的(例如:希望能上网玩三国杀)也可能是说不清道不明的,例如——以前没人说:嗯,如果我能找到这样一个网站,我可以去偷菜,就好了……我们要充分了解用户的痛苦,他们对已有软件、服务不满意的地方。

2. A(Approach,做法)

好,你找到了需求,下一步怎么办,得看看你有什么招数,特别是独特的招数,来解决用户的痛苦。你不能说我会C++,所以我一定可以写好这个软件。你得有独特的办法,例如,有人脸识别技术,会做超大规模的数据处理。那你(你的团队)会什么呢?只会冒泡排序?这些招数不光是技术上的,也可以是商业模式上的(例如,我们第一个做众包的服务)、地域的(例如,我们对本市的公交线路很熟)、人脉的(例如,我们认识很多大学生)、行业的(例如,我们有地图测绘行业的资质),或者是成本上的(例如,我们能找到更便宜的资源来维护网站)。

3. B(Benefit,好处)

这时候你已经有了独特的做法,那你这个产品/服务会给客户/用户带来什么好处呢?如果用户已经有一个解决方案(例如用户已经在用QQ聊天),那你的新的聊天软件具体有哪些好处,能让用户离开现有产品,使用你的产品呢?这还有一个用户迁移成本的问题——用户要花费多少精力、时间、金钱才能得到你的产品的好处?如果你要求用户必须有8GB内存、最好的显卡、10Mbps以上的宽带连接,才能使用你的“更好的”视频聊天工具,那么会有多少用户愿意支付这个成本呢?

4. C(Competitors,竞争)

竞争对手也没有闲着,这个市场有多大,目前有多少竞争者在瓜分,你了解么?你的产品如果不是最先进入某个市场的,你还能赢么?先进入市场的产品,有所谓的先发优势(FirstMover Advantage,FMA),当然也有劣势。后面进入市场的产品,有种种不利的因素,但是也有后发优势(Second Mover Advantage,SMA)。

5. D(Delivery,推广)

在实际项目中经历多次的NABC之后,许多人意识到这个框架还应该加一个元素D:Delivery。怎样把你的创新产品交到用户的手中?例一,你想到了一个好主意,建一个比hao123更好的导航页面!我们姑且认为NABC都没问题,那如何把这么好、这么简单的产品交到(Deliver)用户手中呢?例二,你想到了一个手机的应用,NABC都不错,那如何把产品交到千万个用户手中呢?

8.5 功能的定位和优先级

杀手功能、外围功能、必要需求、辅助需求

我们以一个英汉词典软件为例子来说明。

杀手功能:OCR文字识别技术,可以在屏幕上取词解释,拥有独家权威词典,等等

外围功能:良好的界面设计,在各个平台上都能运行

必要需求:单词短语释义的准确性(如果达不到这一点,用户就不会来使用)

辅助需求:可以做各种皮肤(这也许能让一些用户更喜欢这个软件,但不是决定因素)

这四个象限能让软件团队清楚地看到自己感兴趣的功能处于什么地位,有了这些分析,我们就可以决定怎么处理不同类型的功能。 重要的是,不要把资源平摊到所有象限中,而是倾斜到可以产生差异化和独特用户价值的地方。

8.7 分而治之(Work Breakdown Structure)

一个团队项目要在一段时间内完成诸多任务,满足用户的需求,实现团队的目标,同时还希望项目能维持良好的技术架构,以便持续开发,千头万绪,从哪里入手?WBS就是一个例子

WBS通常从最终的产品开始,一层一层往下,把大型交付件(Deliverable)分割为小型、具体的交付件。这样的分割可以持续下去,直到WBS的使用者(开发团队、接收方)达到共识。从数据结构方面来看,WBS分割的结果是一棵树。所有子节点都最终有一个根节点。每个节点描述的是要交付的产品或文档,而不是开发团队的努力或花费(各个叶节点的成本可以作为次节点的属性展现出来)。做好WBS的几个要点:

  • 保证所有子节点覆盖了全部父节点包含的内容
  • 保证各个子节点不要相互覆盖

叶子节点要保证足够小,能在一个里程碑中完成。在通常的软件项目中,叶节点的成本最好不要超过两周。如果团队成员从常理出发,认为叶节点不宜再分下去,那就可以停止

从结果(Outcome)出发构建WBS,而不是从团队的活动(Action)出发

标签:需求,WBS,读书笔记,用户,构建,软件,团队,节点
From: https://www.cnblogs.com/ruipengli/p/17437285.html

相关文章

  • 基于Expression Lambda表达式树的通用复杂动态查询构建器——《原型篇一》[已开源]
    续接上编,本篇来讲讲俄罗斯套娃的设计与实现。首先简单地完善一下前面提到的例子,代码如下:测试实体类//测试实体类publicclassTable{publicintA;publicintB;}独立条件类//独立条件:publicclassField{publicLogicalLogical{get;set;} ......
  • 构建之法阅读笔记07
    《现代软件工程构建之法》第七章介绍了微软解决方案框架(MSF)在软件开发中的应用。在我过去的软件开发经验中,我通常会采用瀑布模型,但这种开发方法导致项目的变化很难适应,缺乏灵活性并难以满足多样化的需求。通过本章的学习,我了解到MSF是一种面向实际应用的开发框架,注重解决业务和......
  • 构建之法阅读笔记08
    《现代软件工程构建之法》第八章讲述了需求分析在软件开发中的重要性及方法。在我过去的软件开发中,我可能会只关注部分需求,而忽略其他因素,或者基于主观判断进行需求评估和分析。这种方法很容易导致软件的实际功能不符合用户的需求,因而影响软件的使用效果和用户体验。通过本章的学......
  • 构建之法阅读笔记09
    《现代软件工程构建之法》第九章讲述了项目经理在软件开发中的角色和职责,以及项目管理的一些基本原则和方法。在我的过去的软件开发经验中,我可能会集中在技术开发上,忽略项目管理和沟通方面的问题。这种方法往往会导致进度和质量等问题,缺乏项目的整体视野和沟通能力。通过本章的学......
  • IDEA 中 Maven 自动构建错误
    「构建」页签是正常的,但是「自动构建」页签报错:英文:Error:MavenResourcesCompiler:Mavenprojectconfigurationrequiredformodule'module-name'isn'tavailable.CompilationofMavenprojectsissupportedonlyifexternalbuildisstartedfromanIDE.中文:......
  • 构建之法阅读笔记04
    《现代软件工程构建之法》第四章讲述了在软件开发中两个人合作的重要性和合作方式。在过去,我通常独自完成任务,认为这样可以更快地完成,而且我可以完全掌控整个过程。但是,通过阅读本章,我明白了独自完成任务的弊端。首先,由于没有其他人协助,每当遇到问题时,我需要自己解决,并且经常会陷......
  • 构建之法阅读笔记05
    《现代软件工程构建之法》第五章主要讲述了团队和流程在软件开发中的重要性。在我过去的软件开发工作中,我通常会专注于完成指定任务,很少会考虑整个流程和团队的协作。在这种情况下,往往会出现缺乏沟通和协调,导致项目延误、返工和代码质量低下的问题。通过本章的学习,我意识到建立高......
  • CMake vs Makefile: 如何选择适合你的项目构建工具
    在软件开发中,构建(build)是一个非常重要的过程。我们需要将源代码转换为可执行文件或库文件。为了完成此过程,我们通常使用构建工具来自动化构建过程。CMake和Makefile都是用于构建和管理软件项目的工具。CMake是一个跨平台的构建工具,它可以自动生成Makefile,而Makefile是一个GNU工具,......
  • CMake vs Makefile: 如何选择适合你的项目构建工具
    在软件开发中,构建(build)是一个非常重要的过程。我们需要将源代码转换为可执行文件或库文件。为了完成此过程,我们通常使用构建工具来自动化构建过程。CMake和Makefile都是用于构建和管理软件项目的工具。CMake是一个跨平台的构建工具,它可以自动生成Makefile,而Makefile是一个GNU工具......
  • 构建之法阅读笔记02
    《现代软件工程构建之法》第二章个人技术和流程,主要介绍如何通过良好的个人技术和流程,提高软件开发的效率和质量。在阅读本章后,我对自己过去在这方面的做法有了更深刻的反思和认识,同时也为自己今后的软件开发提出了更加理性和有效的解决方案。个人感受:我过去是怎样做的在个人技术......