《构建之法》第八章 需求分析

本文摘自《构建之法》,探讨了软件需求分析的两个方法,强调了获取和引导需求、分析和定义需求、验证需求以及管理需求的重要性。同时,介绍了软件产品的利益相关者,包括用户、顾客、市场分析师和监管机构等,并讲解了用户调查的多种方法,如焦点小组、深入面谈和用户调查问卷等。此外,文章提到了功能的定位和优先级,以及计划和估计在软件项目中的作用,最后讨论了WBS(Work Breakdown Structure)在项目管理中的应用。
摘要由CSDN通过智能技术生成

摘至 邹欣《构建之法》一书,以作学习之用

软件需求

人们为了解决现实社会和生活中的各种问题,要求助于软件。人们的需求五花八门,那么软件团队如何才能准确而全面地找到这些需求呢?

需求分析方法一

1.获取和引导需求

  • 软件团队需要找到 软件的利益相关者,了解和挖掘他们对软件的需求,引导他们表达出对软件的需求。
    不同的项目需要不同的手段,这一步骤也被叫做“需求捕捉”,形容真正的需求稍纵即逝,需要靠火眼金睛和敏捷的身手来发现并抓住它们。另外,很多时候用户并不知道自己确切的需求,或者不愿意表达完整的需求,软件团队需要设身处地,替用户着想,引导出需求。有些需求在实现之前,并没有用户明确表达具体的需求(例如:没有用户说“我希望有一个偷菜的软件,我可以偷别人家的菜”),但是,成功的团队还是可以从“用户需要和朋友之间玩游戏,用户有证明自己能力的需求”这些角度出发,挖掘出需求。另外,软件团队可以分析技术的发展趋势以及产业的变化、社会发展的大趋势,推测用户会产生哪些新的需求。例如,看到全球定位系统(GPS)技术的成熟、地理信息系统的发展、私家车的普及和智能手机性能的不断提高,我们可以推测出利用手机给汽车导航将是一个普遍的需求

  • 需求还可以来自各种 管理机构
    例如一些互联网服务对不同年龄用户的内容管理\“敏感词屏蔽”、快速删除网上内容,等等

  • 需求不仅来自外界,还可以来自 软件企业本身
    软件企业=软件+商业模式。企业所采用的商业模式会对软件提出需求。一个免费的互联网服务到达一定规模后,企业就会考虑如何让这个服务带来收入,例如一个免费的互联网电子邮件服务会考虑对用户收费,支持几种不同等级的用户,在邮件中附带广告,或者在页面显示广告,等等。这些“需求”并不是来自用户,事实上绝大部分用户都反感这样的“需求”,但是企业需要一个能维持它生存和发展的商业模式,尽管这个模式的种种需求未必都是对用户有利的

  • 需求还可以来自技术团队本身
    团队在考虑软件的代码、架构、所依赖平台的长期演化的时候,会提出技术性的需求,包括代码的迁移、架构的演化、平台的变化,或者引入新的技术。例如,为了提高将来的开发效率,一个手机软件的开发者决定逐步引入跨平台的语言和框架;一个依赖客户端/服务器(Client/Server)架构的软件需要支持新的HTTPS协议;原来后台的数据服务使用了专用的数据库和专门的小型机,现在改为基于开源技术的软件和硬件;软件前端代码需要支持某种自动测试工具,以便更有效地进行自动测试,等等

  • 有些需求的目的是要 更好地了解用户的行为和需求”
    例如,我们要在软件的各个功能点加上收集信息的代码,并在后台实现数据收集、整理、报告和数据挖掘(Data Mining)工作。此类技术在一些公司叫Telemetry—遥测技术

2. 分析和定义需求(Analysis & Specification)

这是指对从各个方面获取的需求进行规整,定义需求的内涵,从各个角度将需求量化(需求实现的最后期限,实现需求大致所需的时间和资源成本,各个不同需求的优先级,需求带来的收益,等等)

3. 验证需求(Validation)

软件团队要跟利益相关者沟通,通过分析报告、技术原型、用户调查或演示等形式向他们验证软件团队对于这些需求的认知

4. 在软件产品的生命周期中管理需求(Management)

在软件的生命周期中,需求在发生变化,技术在发展,团队成员的能力也在提高。原来认为重要的事情可能不再重要,有些功能原来技术上很难实现,现在出现了捷径,一些相关的法规会发生变化,外部的合作伙伴突然发生变化,这些都要求我们不断对需求进行重新审核并做出相应的调整


需求分析方法二

1. 对产品功能性的需求
要求产品必须实现某些功能。例如,学校的选课软件只允许有学生身份的用户浏览并选择课程,同时要求学生选择某一门课时必须要满足“先修课”的要求,等等

2. 对产品开发过程的需求
要求软件的开发流程必须满足某些约束条件,例如,开发过程必须产生某种类型的文档,必须在某个时间点达到某个状态,必须对源代码施以某种约束(安全性核查、代码版权核查、代码规范和支持文档的核查)

3. 非功能性需求:这也叫“服务质量需求”(Quality of Service Requirement)
例如,股票交易系统必须在一定时间内返回用户查询结果(它对时间的要求要比“科技文献检索”网站要高),火车票购票系统、大学选课软件必须能支持一定数量的用户同时访问,等等

4. 综合需求
有些需求并不是单单一个软件模块就能满足,例如,“购物网站必须在24小时内把货物发送到用户手中”,这个需求牵涉到软件系统、货物派送系统、送货部门、监控系统等不同部门的功能和执行能力。软件团队和客户代表要在需求阶段把这些问题定义清楚


软件产品的利益相关者

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

  • 用户:或称最终用户(user,end-user)
    是直接使用软件系统的人。取决于软件的特点,一个软件也许有多种不同的用户。(例如,一个打车软件的用户有三种:出租车司机、顾客和监管方。)

  • 顾客:或称客户(customer,client)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值