第八章:需求分析

软件需求

人们(用户)的需求五花八门,作为一个软件团队要准确而全面地获取这些需求主要有以下四个步骤:

  1. 获取和引导需求。这一步骤也被叫做“需求捕捉”。软件团队需要为用户着想,设身处地,为用户引导出需求。
  2. 分析和定义需求。从各个方面获取的需求进行规整,定义需求的内涵从各个角度将需求量化。
  3. 验证需求。软件团队要跟利益相关者沟通,通过分析报告、技术原型、用户调查或演示等形式向他们验证软件团队对于这些需求的认知。
  4. 在软件产品的生命周期中管理需求。

对软件的需求,也可以从不同角度做以下的划分:

  1. 对产品功能性的需求
  2. 对产品开发过程的需求
  3. 非功能性需求
  4. 综合需求

软件产品的利益相关者

很多人或机构都是某个软件的利益相关者,软件团队在分析软件需求时要考虑如下这些利益相关者:

  1. 用户(或称最终用户)
  2. 顾客(或称客户)
  3. 市场分析师
  4. 监管机构
  5. 软件工程师

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

以下是几种常用的用户调研方法:

1.焦点小组

2.深入面谈

3.卡片分类

4.用户调查问卷

5.用户日志研究

6.人类学调查

7.眼动跟踪研究

8.快速原型调研

9.A/B测试

竞争性需求分析的框架:1.N(需求) 2.A(做法) 3.B(好处) 4.C(竞争) 5.D(推广)

第九章:项目经理

PM指的是项目经理

Product Manager:产品经理——正确地做产品。

Project Manager:项目经理——正确地做流程。

Program Manager:微软职位名称。

微软PM的来历

大部分公司的项目经理叫Project Manager,微软的经理叫做Program Manager。微软曾经是一个创业公司,两个创始人都是开发人员,招聘的新成员也大多是像他们一样的开发人员。查尔斯.西蒙尼超级程序员于1981年加入微软公司,并实施MP和SP改革,目的在于减少交流成本,实际上由于没有人想做SP,所以这次改革不了了之。后来,贾伯.布鲁门萨尔的程序员提出了Program Manager(PM)这一头衔,并成为了微软第一个PM。PM的出现让负责一个功能的开发/测试人员和相关的PM紧密合作,再有PM代表这一小组去和别的小组或客户打交道,大大降低了交流的成本,有专人负责开发/测试以外的许多事务和项目进行管理,让开发人员专注于技术方面的工作,实践也证明了这种改革利大于弊。

PM做开发和测试之外的所有事情

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

牛人主导的项目,往往会大起大落;PM主导的产品中,"不犯大错“成了一个特点。

PM的能力要求和任务

  1. 观察、理解和快速学习能力
  2. 分析管理能力
  3. 一定的专业能力
  4. 自省的能力

第十章:典型用户和场景

典型用户可包括以下内容:

  1. 名字(越自然越好)
  2. 年龄(不同年龄和收入的用户有不同的需求)
  3. 收入
  4. 代表的用户在市场上的比例和重要性(比例大不等同于重要性高,如付费的用户比例较少,但是影响大,所以更重要)
  5. 使用这个软件的典型场景
  6. 使用本软件/服务的环境
  7. 生活/工作情况
  8. 知识层次和能力
  9. 用户的动机、目的和困难
  10. 用户的偏好

注意:团队做出来的软件不是为所有人服务的,要非常明确地定义谁是我们的用户

定义了最初的典型用户后,我们还要和这些典型的用户代表交流,理解用户,理解他们的工作方式和需要,然后再修改,细化典型用户。

用例:(很常用的需求分析工具)

使用用例的原则:

  1. 通过讲简单故事来传递信息
  2. 保持对全系统的理解
  3. 关注用户的价值
  4. 逐步构建整个系统,一次完成一个用例
  5. 增量开发,逐步构建整个系统
  6. 适应团队不断变化的需求

总结:读完这几章内容,发现软件需求分析很关键,它指引着团队要开发怎样的软件,如果分析错误将会花费工程人员大量的时间纠正项目,并重新工作,加大开发的难度。因此要把握好、准确而全面地获取用户的需求信息。PM做开发和测试之外的所有事情,带领团队达成最重要的目标,并保持团队的平衡,让开发人员专注于技术方面的工作。所以,我觉得PM的改革措施具有历史性意义,值得去借鉴。

Sprint1总结

在这次sprint阶段一中,自己自主地学习了android数据库的操作,我们用的工具是AS2.0,说实话,虚拟机运行真的很慢,并且耗费了大量运行内存,电脑也是卡卡的。用数据库存储数据时,它不会检验里面的语句是否有错,而是当你运行后直接报异常,这就花费了大量时间做修复异常的工作。同时,自己也学到了更多的课外知识,还蛮不错的。我们团队基本按照sprint计划比较顺利的完成任务,小组成员通过发表各自意见,提出反馈问题,我们逐一想办法去解决。由于最近各种大作业需要我们去完成,比较忙,可是我们也要在软件工程这门课花费时间去做,毕竟每一门课都是平等的,至少我这样认为。所以我们还是要把精力放在我们正在做的项目中去,逐步完善我们的APP。虽然每个人的能力不一样,但是我们团队可以互帮互助,各自发挥每个人擅长的那一方面,那么我相信接下来我们的合作会越来越顺利,越干越有劲!所以,我们遇到困难,不要放弃,我们要相信我们可以解决这些问题,我们需要在完成项目的过程中一边做一边学。至少我们不要放弃,不要把”放弃“这个词语放在我们的字典里。

《构建之法》第8、9、10章读书笔记、读后感以及Sprint1总结的更多相关文章

  1. 《构建之法》第四&十七章读书笔记

     <构建之法>第四&十七章读书笔记 一.         前言 再次阅读<构建之法>,愈发被其中生动有趣的举例吸引.作为一本给予软件工程学生的书籍,其不以枯燥的理论知识 ...

  2. 《构建之法》IT行业的创新 读书笔记 WEEK 5

    本周选读邹欣老师的<构建之法>第16章——IT行业的创新. 邹欣老师将本章话题分成五个部分来阐述:创新的迷思.创新的时机.创新的招数.魔方的创新.创新和作坊,博主认为时机和招数这两个部分在 ...

  3. 《构建之法》第8、9、10章 读书笔记和Sprint总结

    第八章:需求分析 这章主要解析了需求的多面方面,不同的项目需要不同的手段,真正的需求稍纵即逝,需要靠火眼金睛和敏捷的身手来发现并抓住它们.另外,很多时候用户并不知道自己确切的需求,或者不愿意表达完整的 ...

  4. Linux内核分析第四章 读书笔记

    Linux内核分析第四章 读书笔记 第一部分--进程调度 进程调度:操作系统规定下的进程选取模式 面临问题:多任务选择问题 多任务操作系统就是能同时并发地交互执行多个进程的操作系统,在单处理器机器上这 ...

  5. 《Linux内核设计与分析》第四章读书笔记

    <内核设计与实现>第四章读书笔记 第四章:进程调度 进程(操作系统)程序的运行态表现形式. 进程调度程序,它是确保进程能有效工作的一个内核子系统. 调度程序负责决定将哪个进程投入运行,何时 ...

  6. <深入理解计算机系统>第七章读书笔记

    第七章读书笔记 链接 链接:将各种代码和数据部分收集起来并组合成为一个单一文件的过程.(这个文件可被加载或拷贝到存储器并执行) 链接可以执行于编译,加载或运行时. 静态链接: 两个主要任务: 1 符号 ...

  7. linux内核分析第3章&第18章读书笔记

    linux内核分析第3章&第18章读书笔记 第三章 进程管理 进程:处于执行期的程序(目标码存放在某种存储介质上) 包含资源:可执行程序代码,打开的文件,挂起的信号,内核内部数据,处理器状态, ...

  8. Android驱动开发5-8章读书笔记

    Android驱动开发读书笔记                                                              第五章 S5PV210是一款32位处理器,具有 ...

  9. 【Tools】Pro Git 一二章读书笔记

    记得知乎以前有个问题说:如果用一天的时间学习一门技能,选什么好?里面有个说学会Git是个很不错选择,今天就抽时间感受下Git的魅力吧.   Pro Git (Scott Chacon) 读书笔记:   ...

随机推荐

  1. Angular学习笔记--last_update 20151106

    参考来源:http://www.angularjs.cn/tag/AngularJS?p=1&s=50 基本要求:一周搞定33篇学习文章 目标:develop/refactor lms系统an ...

  2. 在Android界面特效中如何做出和墨迹天气及UC中左右拖动的效果

    (国内知名Android开发论坛eoe开发者社区推荐:http://www.eoeandroid.com/) 在Android界面特效中如何做出和墨迹天气及UC中左右拖动的效果 相信这么多手机APP中 ...

  3. 【ASP.NET MVC 5】第27章 Web API与单页应用程序

    注:<精通ASP.NET MVC 3框架>受到了出版社和广大读者的充分肯定,这让本人深感欣慰.目前该书的第4版不日即将出版,现在又已开始第5版的翻译,这里先贴出该书的最后一章译稿,仅供大家 ...

  4. CountDownLatch线程阻塞用法实例

    在编写多线程的工作中,有个常见的问题:主线程(main) 启动好几个子线程(task)来完成并发任务,主线程要等待所有的子线程完成之后才继续执行main的其它任务. 默认主线程退出时其它子线程不会停, ...

  5. C# Activex开发、打包、签名、发布 C# Activex开发、打包、签名、发布 [转]

    C# Activex开发.打包.签名.发布 2013-06-22 12:01:20 浏览:3823 一.前言 最近有这样一个需求,需要在网页上面启动客户端的软件,软件之间的通信.调用,单单依靠HTML ...

  6. Go 若干技巧

    此文来自 http://denvergophers.com/2013-09/tips-and-tricks.slide ###本文主要涉及到: 1. formatting 技巧 2. 异常处理技巧 3 ...

  7. java Clone之深浅拷贝

    要点: 1.浅度拷贝可以不实现Cloneable接口(自动使用Object.clone)或者不重写Cloneable的clone方法. 2.要被深度拷贝的类必须实现Cloneable接口并重写clon ...

  8. Arduino 封装库

    这里是一个在Arduino平台下将常用的代码以库的形式封装的示例. 第一步:在Arduino的安装目录下的对应目录建立文件夹 C:\Program Files (x86)\Arduino\librar ...

  9. spark MySQL jar 包

    /** * Created by songcl on 2016/6/24. */ import java.sql.DriverManager //val sqlContext = new org.ap ...

  10. CentOS安装epel

    Centos5安装    rpm -ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm   rpm  ...