《构建之法》(四)

本周看了《构建之法》的第八、九章的内容。初步了解了开始做一个软件的初始步骤。

需求分析

1.寻找需求

获取和引导需求。需求不仅是来自外界,甚至也可以来自技术成员团队内部;

分析和定义需求。主要是对需求进行量化;

验证需求。主要跟利益相关者沟通并通过各种方式像其验证对需求的认知。

在软件产品的生命周期中管理需求。需求不一定只在初期才有;在中后期的时候可能因为外界环境变化甚至是成员自身水平变化而出现新的需求

也可从不同角度划分:

对产品功能性需求、对产品开发过程需求、非功能性需求、综合需求

2.软件产品的利益相关者

最终用户(直接使用软件系统的人)

顾客(购买软件或接收软件的人)

市场分析师(代表“典型用户”的需求)

监管机构(对软件是否符合行业和政策规定的监管)

软件工程师

3.获取用户需求的方法

焦点小组(focus group):找到一群用户的代表,加上利益相关者来讨论用户想要什么

深入面谈(in-depth interview):采取一对一的采访方式,着重探究用户在使用的时候有哪些困难

卡片分类(card sorting):将杂乱无章的需求分条目地写到卡片上,然后对这些卡片进行讨论、归类甚至排序

用户调查问卷(User Survey):向用户提供事先规定好的问题,让用户回答。(注意调查问卷的方式及应该规避的错误)

人类学调查(ethnographic study):和目标用户“同吃同住同劳动”——以便真正理解用户有什么需求、为什么用户有这些需求

眼动跟踪研究(Eye Tracking):如何在网页上向用户更好,更完整的展示信

快速原型调研

A/B测试

4.竞争性需求分析(以说服别人)

以NABCD模型为例

1. N——NEED需求

2. A——APPROACH做法 - 有什么(独特的)做法去解决用户的困难

3. B——BENEFIT好处 - 特别注意用户迁移成本的问题。指的是用户要得到我们所做的软件带来的好处,需要花费多少时间、金钱甚至精力(去转移使用)

4. C——COMPETITORS竞争

5. D——DELIVERY推广

5.功能定位和优先级

要把用户从竞争对手那里吸引过来,团队自己的产品要有一个差异化的焦点,在这个焦点上,我们的团队能做得比别人好10倍,高一个数量级。 于是我们有了两种不同类型的功能:杀手功能(core)/外围功能(context) 还有另外一种划分:必要需求/辅助需求

6.计划和估计

首先分清几个概念:目标、估计和决心

7.分而治之

WBS通常从最终的产品开始,一层一层往下,把大型交付件(deliverable)分割为小型、具体的交付件(从结果出发,而不是团队的活动)

项目经理

PM中的M是“manager”(中文翻译为经理)其实是个很广泛的概念。而P在也这有多种意思。

1、PM是啥

product manager:产品经理。正确地做产品(即产品经理是以产品为中心展开工作,包括产品的定位、运营、优化等等)

project manager:项目经理。正确地做流程;保证一个项目顺利按照计划结项。

program manager:微软独有的PM,与项目经理类似但又有不同

PM最大、最独特的贡献是带领团队达成最重要的目标,并保持团队的平衡

2、风险管理

层次一:啊呀,大问题

层次二:缓和并防止问题。先把问题缓和下来再进一步调动队员解决问题

层次三:预计。从定性的猜测进不到定量的预计,从而有效地做准备

层次四:把问题变为机会(比如从问题的改进中使得产品获得更大的优势)

3、PM的能力要求和任务

观察、快速理解和学习能力。这是因为PM有时候很像一个渠道去沟通不同的部门或者角色,所以需要很强的适应能力,而这种适应能力就是从观察中理解和学习的能力

分析管理能力。不论是自我的管理还是千头万绪的需求中快速分解“有用项”的能力,都可以算在其中

一定的专业能力

总得来说,PM的能力主要有:学习能力、观察理解能力、分析管理能力、销售能力、交流能力、处理冲突的能力、一定的专业能力、自省的能力

PM的任务

带领团队形成团队的目标/远景,把抽象的目标转化为可执行的、具体的、优美的设计

管理软件的具体功能的生命周期

创建并维护软件的规格说明书,让它成为开发/测试人员及时准确的指导,而不是障碍。

代表客户和用户的利益,主动收集用户反馈,预期用户新的需求。协调并决定各种需求的优先级

分析并带领其他成员形成对缺陷/变更需求的一致意见,并确保实施。

带领其他成员确保项目保持功能/时间/资源的合理平衡,跟踪项目进展,确保团队发布让客户满意的软件

收集团队项目管理和软件工程的各种数据,客观分析项目实施过程中的优缺点,推动项目成员持续改进,从而提振士气。

时间: 2024-07-30 13:29:33

《构建之法》(四)的相关文章

[基础] Java目录(摘自Java核心技术·卷1 基础知识)

Java核心技术·卷1 基础知识(原书第9版) 第1章 Java程序设计概述 1.1 Java程序设计平台 1.2 Java"白皮书"的关键术语 1.2.1 简单性 1.2.2 面向对象 1.2.3 网络技能 1.2.4 健壮性 1.2.5 安全性 1.2.6 体系结构中立 1.2.7 可移植性 1.2.8 解释型 1.2.9 高性能 1.2.10 多线程 1.2.11 动态性 1.3 Java applet与Internet 1.4 Java发展简史 1.5 关于Java的常见误解

《java核心技术 卷1 基础知识》二

<Java核心技术 卷1 基础知识>第4-5章 在Java中没有类就无法做任何事情 new操作符的返回值是一个引用 在Java中,如果使用一个未初始化的指针,运行系统会产生一个运行时错误. Date 用来表示时间点 LocalDate 日历表示法 同时不推荐使用Date类来处理日历 推荐使用LocalDate来处理日历 每一个拥有名字的类都会被编译生成对应的class文件 所有的Java对象都是在堆中构造的,构造器总是随着new操作符一起使用 在Java中,所有的方法都必须在类的内部定义,但并

《Java核心技术 卷1 基础知识》三

<Java核心技术 卷1 基础知识> 第六章 接口和内部类 接口不是类,而是对类的的一组需求描述. 接口不能包含实例域--接口没有实例 可以将接口看作没有实例域的抽象类 要将类声明为实现某个接口,需要使用关键字implements. 类实现一个接口的具体步骤为: 1)使用implements关键字进行声明要实现的接口 2)对接口中的所有方法进行定义 接口中的所有方法默认为public 但在实现接口时需要声明为public 这里介绍了Comparable接口,该接口只有一个方法,compareT

《Java核心技术 卷1 基础知识》七

<Java核心技术 卷1 基础知识> 第10章 图形程序设计 在Java1.0刚出现时,就包含了一个基本GUI程序设计的类库,即抽象窗口工具箱(Abstract Window Toolkit,AWT) 基本AWT库采用将处理用户界面元素的任务委派给每个目标平台(如windows.Macintosh等)的本地GUI工具箱的方式, 由本地工具箱负责用户界面元素的创建和动作 但由于在不同的平台上,操作行为有一些微妙的差别 因此,AWT也由"一次编写,随处使用"变为"一次

《Java核心技术 卷1 基础知识》一

<java核心技术卷1 第1-3章> JDK Java Development Kit ,即Java开发工具包 但这个工具包的1.2-1.4版本被称为Java SDK,随后才改名为JDK JRE Java运行时环境,它包含虚拟机但不包括编译器 Java SE,Java Standard Edition,Java标准版本 Java EE,Java Enterprise Edition,Java企业版本 Java ME,Java Micro Edition,Java微观版本 Java2 这种提法始

《Java核心技术 卷1 基础知识 原书第9版》pdf

下载地址:网盘下载 内容简介 编辑 CayS.Horstmann等编著,公飞编译的<Java核心技术>(CoreJava)自第1版出版以来,一直备受广大Java程序设计人员的青睐,畅销不衰,是Java经典书籍.第8版针对JavaSE6平台进行了全面更新,囊括了Java平台标准版(JavaSE/J2SE)的全部基础知识,提供了大量完整且具有实际意义的应用实例,详细介绍了Java语言基础知识.面向对象程序设计.接口与内部类.事件监听器模型.swing图形用户界面程序设计.打包应用程序.异常处理.登

《Java核心技术 卷1 基础知识》四

第7章 异常.断言和日志 异常 在Java中,所有异常对象都是派生于Throwable类的一个实例. 如果Java内置的异常类不能够满足需求,用户可以创建自己的异常类 Error类层次结构描述了Java运行时系统的内部错误和自愿耗尽错误,应用程序不应该抛出这种类型的对象. Exception层次结构又分解为两个分支,一个分支派生于RuntimeException:另一个分支包含其他异常. 划分这两个分支的规则为: 由程序错误导致的异常属于RuntimeException: 程序本身没有问题,但由

Java核心技术 卷1 基础知识-第一天

基本数据类型 java是一种强数据类的的语言 共有8种基本数据类型 其中: 整型4种 int(4字节) short(2字节) long(8字节) byte(1字节) java中整型的范围与机器无关 长度是一定的,不会因为跨平台造成整数溢出 浮点型 两种 double float double的长度是float长度的两倍,双精度数值 但部分都是使用double ,在表示的时候 如果写作3.24 编译器会人会认为是double型 3.24F是float型 浮点数有三个特殊值 正无穷大 (正整数除以0

Java details from Java核心技术 卷1 基础知识(1)

Java是一种包括语言.虚拟机.即时编译.类库.执行环境的平台: 执行环境提供安全性.跨操作系统的可移植性.自动垃圾收集等服务: 设计初衷:简单性.面向对象.网络技能.健壮性.安全性.体系结构中立.可移植性.解释型.高性能.多线程.动态性 简单性:Java剔除了C++中的:头文件.指针运算(甚至指针语法).结构.联合.操作符重载.虚基类等: 面向对象:一种程序设计技术.C++多继承:Java单继承+接口.Java中元类模型(metaclass): 网络技能:Java应用程序能够通过URL打开和访

Java 核心技术 卷1 基础知识 List 13.1

List 13.1  LinkList/LinkedListTest.java java容器之LinkList package linkList; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; public class LinkListTest{ public static void main(String args[]){ List<String> a=new Linked