《(1.3)--第3章 软件需求分析软件工程过程.ppt》由会员分享,可在线阅读,更多相关《(1.3)--第3章 软件需求分析软件工程过程.ppt(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章:软件需求分析需求分析为什么重要?1.大型系统的失败,最后均归结为不正确的需求分析 Apple Lisa,全球第一台采用图形用户界面(GUI)和鼠标的个人电脑。因为定价远远超过市场用户的承受能力,造成Apple Lisa 的销量远低于苹果的预期。注意,产品质量和客户需求是直接挂钩的需求分析为什么重要?2.软件需求规格书是一个里程碑/基线软件需求规格书,既是软件生命周期中的第一个里程碑,又是客户、软件开发人员和软件测试人员共同工作的基线。需求分析为什么重要?3.需求分析占软件开发时间和开发工作量较大4.需求获取中的错误,会发散式的传播需求分析为什么困难?需求分析至今仍是公认为的软件开发中最
2、为困难、亟待解决的一个问题。1.用户需求具有动态性2.用户需求具有模糊性3.对需求达成一致的艰难性用户之间的需求很难达成一致开发者和用户之间需求达成一致也是困难的4.分析人员与用户的沟通问题 5.管理体制、机构设置处在变革中 需求分析做什么?什么是需求?需求的定义是分层次的1.用户需求用户需求是顶层需求,由用户提出来的,直接反应用户的需要2.产品需求经过分析、提炼获取用户的真实需求,并且表达为产品的解决方案3.软件需求软件需求是对产品需求的细化,考虑技术因素,用什么样的技术等来满足产品需求需求分析怎么做?1.收集用户需求,挖掘真实需求2.提出解决方案形成产品需求3.细化产品需求,确定软件系统要
3、求4.建立目标系统的逻辑模型5.撰写需求规格说明书6.制定初步的系统测试计划7.编写初步的用户手册8.完善开发计划9.验证需求-需求的评审需求分析怎么做?(续)1.收集用户需求,挖掘真实需求需求分析怎么做?(续)1.收集用户需求,挖掘真实需求要分析用户的真实需求。可以从三个角度入手:目标用户:目标用户不同,诉求也不一样;使用场景:使用场景不同,解决方案也会有所不同;想要解决的问题:挖掘用户背后想要解决的问题是什么?需求分析怎么做?(续)1.收集用户需求,挖掘真实需求该环节具体实施时,包含以下两个步骤:收集需求:对用户需求进行收集整理;收集用户需求有很多方法:问卷调查/市场调查:发电子邮件、问卷
4、调查即把需要调查的内容制成表格交给用户填写。该方法对需要调查大量人员的意见时,十分有效。访谈/个别访问:正式的和非正式的访谈关键用户。头脑风暴:座谈、会议方式收集需求,打破常规、畅所欲言。竞品分析:通过分析其他同类产品的功能获得需求。构造原型:通过原型来收集反馈,收集确认需求。需求分析怎么做?(续)1.收集用户需求,挖掘真实需求分析需求:对需求进行分析,挖掘用户真实需求。收集了需求,就要分析用户的真实需求,这是最难的部分。通常用户需求背后的真实需求有三个层次:表层需求:用户对解决问题的期望 深层需求:用户的深层次动机、诉求及产生的原因 底层需求:人性本能的需求需求分析怎么做?(续)2.提出解决
5、方案形成产品需求该环节具体实施时,包含以下两个步骤:需求评估需求收集分析完了后,还需要进一步评估,以决定做还是不做,优先级如何?需求评估考虑的因素有:可行性:技术能否实现 成本:人力成本、时间成本。优选成本较低的解决方案 商业风险和收益:有没有商业上的风险,收益是否合理 紧急性与重要性:是不是用户迫切的需求。如果确定可行,还需要评估其优先级。紧急重要-重要不紧急-紧急不重要-不紧急不重要需求分析怎么做?(续)2.提出解决方案形成产品需求需求设计在分析和评估完需求后,还需要提出解决方案,也就是对需求进行设计,做出来有效的产品需求。需求设计常用的设计工具:草图、原型设计工具、界面设计工具。需求分析
6、怎么做?(续)3.细化产品需求,确定软件系统需求具体从以下方面给出软件系统的具体要求:功能要求性能要求如期望的响应时间,存储容量的限制等。需求分析怎么做?(续)3.细化产品需求,确定软件系统需求具体从以下方面给出软件系统的具体要求:运行环境软件运行时所需要的硬件的机型、外设;软件的操作系统、开发与维护工具和数据库管理系统等要求。接口要求应用软件可能还与机构内部的其他应用软件集成,因此,需要明确与外部应用软件数据交换的内容、格式与接口,以实现数据及功能的有机结合。另外还有系统的可靠性、安全性、可移植性和可维护性等方面的需求。需求分析怎么做?4.建立目标系统的逻辑模型所谓模型就是为了理解事物而对事
7、物做出的一种抽象,是对事物的一种无歧义的书面描述。通常模型有一组图形符号和组织这些符号的规则组成。软件系统的逻辑模型与需求分析阶段采用的方法有关。比如结构化需求分析方法,产生的逻辑模型分为:数据模型、功能模型和行为模型。需求分析怎么做?5.撰写需求规格说明书软件需求规格说明书描述系统的数据、功能、行为、性能需求、设计约束、验收标准,以及其他与系统需求相关的信息。需求规格说明书是需求分析阶段最重要的标志性成果物。需求分析怎么做?6.制定初步的系统测试计划需求确认的一种方法,从测试人员处确认需求。该环节包括以下步骤:通过需求规格说明书了解需求的实现背景,分析需求合理性;是对需求文档测试的过程,从测
8、试人员的视角重新审视需求分析规格书。可以通过业务知识来分析需求的合理性,而不是单单通过系统是怎样实现的来判断需求是否合理。测试需求分析-确定测试的范围和优先级首先要确定好需求所涉及的全部测试点,然后通过分析,分析出测试范围的优先级。需求分析怎么做?6.制定初步的系统测试计划测试设计-细化测试点并确定测试方法;确定了测试范围和优先级后,就可以列出如图所示的测试点,写出对应的测试方法,或测试策略。需求分析怎么做?7.编写初步的用户手册确认需求的一种方法,从用户处确认需求。用户手册包括用户界面描述以及有关目标系统使用方法的初步构想。从用户视角重新审视需求分析规格说明书,考量其易用性、完备性等。需求分
9、析怎么做?8.完善开发计划在需求分析阶段对开发的系统有了更进一步的了解,因此需求对问题定义阶段的开发计划要进行适当修正并加以完善。需求分析怎么做?9.验证需求-需求的评审由专家、需求分析人员、开发人员、用户组成评审组,对需求分析所得的结果进行评审。完整性 完整性验证用于检查发现用户确实需要的,但没有写入需求文档中一些功能、约束等,以使最终确定下来的需求文档能够更加完整的体现用户的需求意愿;正确性 需求分析规格说明书、系统测试计划及初步的用户手册是否存在错误;需求分析怎么做?9.验证需求-需求的评审一致性 一致性验证用于检查发现在需求文档中可能存在的需求冲突。必要性 验证提出的功能性或者非功能性
10、需求是否是实现用户需求所必须的。可验证性 通过编写初步的系统测试计划,确定系统功能性、非功能性需求是否可以验证。优先级的划分重新评估功能的优先级。紧急重要-重要不紧急-紧急不重要-不紧急不重要需求的跟踪 正向跟踪:确保系统中的每一个需求元素都可以跟踪到生存周期后续阶段的输出成果物中;反向跟踪:在生存周期每个阶段的输出成果物都反向追溯到提出的需求。跟踪矩阵减少需求遗留,方便复审、测试及向客户演示产品需求的跟踪(续)需求需求编号编号描述描述概要概要设计设计文档文档编号编号对应设计(功对应设计(功能、结构、数能、结构、数据库)据库)对应的实现(程对应的实现(程序、类、继承类)序、类、继承类)单元单元
11、测试测试用例用例集成集成/系系统测统测试用试用例例验收验收测试测试用例用例1.1.2实时数据收集与综合显示5.3.2数据收集与显示接口PB405数据收集#12#46#11需求分析过程-企业级真实案例原型设计前面我们学习了如何实现需求分析的方法,在需求分析阶段同样也离不开工具的支持,原型设计工具的使用是产品经理必备的技能之一。原型是表现产品经理想法的重要工具,当调研清楚需求和流程后,需要使用原型,用具象化的方式与需求提出方、开发人员、测试人员沟通,交流、确认需求。原型设计的基本方法分析设计实施验证分析产品定位,定义形式及交互模式从信息架构、使用流程两个维度,进行整体设计从整体且高层次的框架开始构
12、建每个页面通过场景验证检查设计原型设计1.分析在原型设计时,通常属于需求的最初阶段,需求还是很模糊、不具体的所以这个阶段首先要做的,就是要对用户的需求有个初步的了解,分析清楚原型设计的目标是什么。分析产品定位,定义形式及交互模式:什么样的用户想要什么?我们要做什么样的产品?我们要做什么样的?原型设计(续)2.设计在对需求进行初步分析后,需要开始对原型进行整体设计。在设计阶段,主要从两个维度来考虑:从信息架构的维度,考虑清楚整个产品的信息架构,划分出模块 从使用流程的维度,考虑清楚界面之间的流程。以微信产品为例,微信产品信息架构原型设计(续)微信产品使用流图以发表文字内容的朋友圈功能为例:进入“
13、发现”点击“朋友圈”长按右上角“摄像头”图标提示:内部体验功能发表文字,选择位置及谁可以看原型设计(续)3.实施在设计好整体的信息架构和使用流程图后,就可以开始绘制每个界面。从整体且高层次的框架开始构建,不要被细节分散了注意力,细节留到最后去仔细推敲。在具体到界面时,要优先考虑满足产品需求,然后是让界面好看好用。4.验证原型设计完成后,还需要个很重要的环节就是验证。通过场景验证检查设计,如果发现有流程上走不通或者使用不方便的地方先自己调整。调整好了交给其他人去体验,让他们提出反馈意见。一般在正式的项目中,针对原型设计,需要有相应的评审会议,让大家提出反馈,根据反馈再作出调整。原型设计(续)常用
14、的原型设计工具 Axure RP:历史悠久功能强大,可以制作网站、桌面软件、移动App的原型。缺点是专业度较高,价格高。墨刀:是款优秀的国产原型设计工具,可以制作网站、桌面软件、移动App的原型。上手相对容易,价钱也较Axure便宜很多。墨刀使用入门 Step1:快速创建应用首先到达的是项目管理页空白项目/模板项目原型设计(续)墨刀使用入门 Step2:创建页面结构页面列表当前页面的元素列表外观事件原型设计(续)Step3:创建页面内容高频组件内置组件我的组件图标母版 Step4:添加页面交互页面间交互页面内交互(页面状态做交互动效)页面状态可以用来实现页面内整体的交互动画。举个例子:使用页面
15、状态切换,我们可以让页面中一个图片(组件)的位置、大小、颜色发生改变。为什么会产生需求的变更?究其原因,可以归结为如下三条:1.需求的不确定性当客户向需求分析人员提出需求的时候,往往是通过自己的想法用自然语言来表达的,远远不能保证这样的描述是完全正确的。软件需求经常是抽象、模糊、不精确的。模糊不清的需求导致经常是在在软件开发有了雏形之后,用户才想清楚真正的需求是什么,这必然带来需求的变更。为什么会产生需求的变更?2.低估需求变更的成本对变更的影响没有评估是需求变更泛滥的根本原因之一。变更都是有代价的,应该要评估变更的代价和对项目的影响,要让客户了解需求变更的后果。3.系统研发周期过长 系统研发
16、周期过长,期间可能经历用户业务需求的改变,需要随时对需求作出调整和反应。解决需求频繁变更的途径解决需求频繁变更的途径,就是从源头出发,从需求产生变更的原因出发,具体方法可以归结为如下四点:1.提升需求确定性,减少需求变更深入需求调研的基础上,挖掘用户真实需求;采用原型工具,确认并启发用户需求;在需求分析阶段编写初步的用户手册,确认系统的可用性;在需求分析阶段编写初步的系统测试计划,确认需求的可测试性;这种方法,优势在于对需求理解透彻,后期返工少,缺点是对项目成员需求分析能力要求较高。解决需求频繁变更的途径2.提高需求变更的成本,规范需求变更流程,减少需求变更。需要将需求变更后产生的成本进行评估
17、与量化,形成分析报告。要让客户认识到变更都是有代价的 当发生变更时,要规范需求变更流程。方法的优势在于简单,缺点就是过于繁琐的流程不利于项目协作解决需求频繁变更的途径3.快速迭代,缩短版本研发周期 将系统的研发,划分成若干个阶段,快速迭代。每个版本周期仅实现一部分功能需求,周期较短,迭代开发过程中,需求不允许变更。新版本发布之后,用户才可以提出新的需求。4.降低响应需求变更的成本,积极应对需求变更主要体现在开放式的架构设计。架构师需要对用户需求进行梳理:找出稳定性的用户需求;变化的用户需求。预见变化并做对应的开放式设计。方法的优势在于可以快速响应需求变更,缺点在于对在于对软件架构要求比较高。数
18、据驱动的需求验证-A/B测试 产品设计中,我们经常会面临多个设计方案的选择。传统的解决方法通常是集体讨论表决,或者由某位专家或领导来拍板。A/B测试是一种用数据进行产品决策的方法,就是为同一个目标制定两个方案,让一部分用户使用 A 方案,另一部分用户使用 B 方案,并通过统计分析确定哪个版本对于设定的转化目标有更好的表现。A/B 测试主要的思想,包括:同时开发多个方案;每个方案只有一个变量不同;一般来说,每个设计方案应该大体上是相同的,只是某一个地方有所不同,比如某处排版、文案、图片、颜色等。然后对不同的用户展示不同的方案。根据数据分析的结果,以某种规则优胜劣汰。数据驱动的需求验证-A/B测试
19、(续)要实现 A/B 测试,我们需要做以下几个工作:确认目标;分析目前系统的目标数据;提出新的想法;开发、部署不同的版本;收集不同版本系统的目标数据;分析数据,得出结论。目标提出新的想法实现、部署不同版本分析数据、得出结论收集不同版本系统的目标数据分析目前系统的目标数据数据驱动的需求验证-A/B测试(续)应用案例:(来自ZAGG的案例)ZAGG是最大的移动电子产品电商网站之一,他们网站上的产品页面现在有三种类型的产品展示方式:静态图片、视频以及360度产品图片。ZAGG的分析师实现的第一个A/B测试:目标:提高用户“加入购物车”按钮的点击率。方案选择:产品页面默认使用视频或者图片。结论:默认显
20、示视频会让客单价(revenue per visitor)增加27%。数据驱动的需求验证-A/B测试(续)应用案例:(来自ZAGG的案例)ZAGG的分析师实现的第二个A/B测试:目标:提高用户“加入购物车”按钮的点击率。方案选择:产品页面默认使用视频或者360度图片。结论:从默认使用视频到默认使用360度图片的测试,则让ZAGG的客单价又提高了12%。只是简单地将产品页面的默认显示改为使用360度图片,就让收入增加了接近40%。ZAGG的实验证明了那类无需投入新资源的A/B测试的价值。数据驱动的需求验证-A/B测试(续)应用案例:(来自ZAGG的案例)默认使用视频介绍的版本默认使用360度图片介绍的版本