《软件需求分析与建模基础.ppt》由会员分享,可在线阅读,更多相关《软件需求分析与建模基础.ppt(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件需求分析与建模基础软件需求分析与建模基础空间与交易产品部高飞2011年1月26日目录目录一一什么是需求分析什么是需求分析二二系统建模系统建模三三需求分析建模实例需求分析建模实例四四经验总结经验总结目录目录一一什么是需求分析什么是需求分析1.软件生命周期软件生命周期2.需求分析的定义需求分析的定义3.需求分析阶段的重要性需求分析阶段的重要性4.需求分类需求分类5.需求捕获需求捕获6.需求过程定义需求过程定义1、软软件生命周期(件生命周期(SDLC-Software Day Light Cycle)一、什么是需求分析?一、什么是需求分析?同任何事物一样同任何事物一样,一个软件产品或软件系统也要
2、经历孕育、诞生、成一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为长、成熟、衰亡等阶段,一般称为软件生命周期软件生命周期。软件工程国家标准软件工程国家标准计算机软件开发规范计算机软件开发规范(GB856688)中将软中将软件生命周期划分为件生命周期划分为8个阶段个阶段:可行性研可行性研究与究与计划划需求分析需求分析概要概要设计详细设计实现(包(包括括单元元测试)组织测试(集成(集成测试)确确认测试使用和使用和维护2、需求分析的定、需求分析的定义义一、什么是需求分析?一、什么是需求分析?是是软件工程中的一个软件工程中的一个关键过程关键过程;是是系统分析员进行软件功能和性
3、能分析的系统分析员进行软件功能和性能分析的依据依据;是指明软件和其他系统元素的是指明软件和其他系统元素的接口接口、是建立软、是建立软件必须满足的件必须满足的约束约束;是是软件设计师进行软件设计师进行软件软件分解的分解的基础基础;是是软件处理的数据模型、功能模型和行为软件处理的数据模型、功能模型和行为模型模型;是是软件设计师翻译成数据、体系结构、界面和软件设计师翻译成数据、体系结构、界面和过程设计的过程设计的模型模型;是是进行质量评估的进行质量评估的依据依据。3、需求分析、需求分析阶阶段的重要性段的重要性一、什么是需求分析?一、什么是需求分析?根据根据Standish Group对对23000个
4、项目进行的研究结果表明,个项目进行的研究结果表明,28%的项目彻底失败,的项目彻底失败,46%的项目超出经费预算或者超出工期,只有约的项目超出经费预算或者超出工期,只有约26%的项目获得的项目获得成功成功。而在于这些高达而在于这些高达74%的不成功项目中,有约的不成功项目中,有约60%的失败是源于需求的失败是源于需求问题。问题。也就是说,有近也就是说,有近45%的项目最终因为的项目最终因为需求需求的问题最终导致的问题最终导致失败失败。4、需求分、需求分类类一、什么是需求分析?一、什么是需求分析?业务需求:业务需求:反映组织机反映组织机构或客户对系统、产品构或客户对系统、产品高层次的目标要求。高
5、层次的目标要求。用户需求:用户需求:描述用户使描述用户使用产品必须要完成什么用产品必须要完成什么任务。任务。系统需求:系统需求:从系统的角从系统的角度来说明软件的需求,度来说明软件的需求,它包括用特性说明的功它包括用特性说明的功能需求,质量属性以及能需求,质量属性以及其它非功能需求,还有其它非功能需求,还有设计约束。设计约束。5、需求捕、需求捕获获一、什么是需求分析?一、什么是需求分析?明确业务需求:明确业务需求:业务需求是整个系统最为宏观层面的东西,也就是业务需求是整个系统最为宏观层面的东西,也就是“项目的目标项目的目标”。理解业务流程:理解业务流程:-若项目较大或者业务较陌生:应进行业务建
6、模;若项目较大或者业务较陌生:应进行业务建模;-如果业务较陌生:聘请领域专家,领域培训;如果业务较陌生:聘请领域专家,领域培训;-如果术语较多,易于混淆:业务术语表;如果术语较多,易于混淆:业务术语表;-无论如何,都应该建立跨部门职能流程图无论如何,都应该建立跨部门职能流程图。5、需求捕、需求捕获获一、什么是需求分析?一、什么是需求分析?明确用户需求:明确用户需求:-What(收集什么信息)(收集什么信息)-Where(从哪收集)(从哪收集)-How(如何收集)(如何收集)捕获技术捕获技术优点优点缺点缺点用户访谈直接有效、灵活、深入占用时间长,信息面窄、较片面用户调查面广、可以获得更多反馈不够
7、深入,容易形式主义、失真现场观摩容易建立直接的认识消耗时间长文档考古能够详细、直观对数据流细节进行分析易陷入文山书海,甚至产生误导联合开发直接的头脑风暴,可以击破需求盲点成本高,需要较高的控制技巧6、需求、需求过过程定程定义义一、什么是需求分析?一、什么是需求分析?目录目录1.为什么要建模为什么要建模2.什么是什么是UML3.UML的发展历程的发展历程4.模型种类模型种类5.谁应该建模谁应该建模6.如何使用如何使用UML对需求建模对需求建模二二系统建模系统建模1、为为什么要建模什么要建模 从建筑方面的建模谈起从建筑方面的建模谈起二、系统建模二、系统建模建造建造一个狗窝一个狗窝:只需只需备一些木
8、料、钉子和基本工具备一些木料、钉子和基本工具。建造一所房子建造一所房子:除备一些木料、钉子和基本工具外,还要事先制订除备一些木料、钉子和基本工具外,还要事先制订计划,画出简图计划,画出简图。给出设计方案(建模)给出设计方案(建模)对模型加以分析对模型加以分析组织各种资源组织各种资源进行积极的管理进行积极的管理建造一座大厦:建造一座大厦:资金是别人的,他们会对资金是别人的,他们会对建筑物的规模、形状和风格作出要求。而建筑物的规模、形状和风格作出要求。而且经常会改变想法。失败的代价太高。需且经常会改变想法。失败的代价太高。需要许多人员合作完成,需提供设计图和模要许多人员合作完成,需提供设计图和模型
9、供各方相互沟通。需得到合适的人员和型供各方相互沟通。需得到合适的人员和工具,对把建筑的概念转换为实际建筑物工具,对把建筑的概念转换为实际建筑物的过程进行积极的管理。的过程进行积极的管理。奇奇怪怪的的是是,很很多多软软件件开开发发组组织织开开始始想想建建造造一一座座大大厦厦式式的的软软件件,而而在在动动手手处处理时却好像他们正在仓促地造一个狗窝!理时却好像他们正在仓促地造一个狗窝!1、为为什么要建模什么要建模 二、系统建模二、系统建模现代软件为什么要建模:现代软件为什么要建模:现代软件的现代软件的趋势是朝着更庞大,更复杂的趋势是朝着更庞大,更复杂的系统发展。应用环境是迅速变化的,要求软件系统适应
10、迅速变化的系统发展。应用环境是迅速变化的,要求软件系统适应迅速变化的环境。建模允许我们通过一种分而治之的办法来处理复杂的问题,环境。建模允许我们通过一种分而治之的办法来处理复杂的问题,使我们能更好地理解待开发的系统。使我们能更好地理解待开发的系统。2、什么是、什么是UML二、系统建模二、系统建模UML是一种是一种Language(语言)(语言)UML是一种是一种Modeling(建模)(建模)LanguageUML是是Unified(统一)(统一)Modeling Language是一种绘制软件蓝图的标准是一种绘制软件蓝图的标准语言语言已进入全面应用阶段的事实标准已进入全面应用阶段的事实标准应
11、用领域正在逐渐扩展,包括嵌入式系统建模、业务建模、流程建应用领域正在逐渐扩展,包括嵌入式系统建模、业务建模、流程建模等多个领域模等多个领域3、UML发发展展历历程程二、系统建模二、系统建模4、模型种、模型种类类二、系统建模二、系统建模模型的种类模型的种类模型的用途模型的用途业务模型对业务过程、工作流、组织的建模需求模型对捕获的需求进行整理和分析的工具,辅助开发人员与用户进行沟通设计模型包含高层设计(架构模型)和详细设计模型,用于统一开发人员、沟通设计信息数据库模型设计数据库的结构、表结构以及与应用系统的交互实现模型用来理清软件的组成、部署方案,为安装与维护人员的工作提供指导5、谁应该谁应该建模
12、建模二、系统建模二、系统建模业务模型:业务模型:以领域专家为主,需求分析人员是主力,系统分析员、以领域专家为主,需求分析人员是主力,系统分析员、架构师可架构师可参与。参与。需求模型:需求模型:以需求分析人员为主,系统分析员是主力,领域专家提以需求分析人员为主,系统分析员是主力,领域专家提供指导,架构师和资深开发人员供指导,架构师和资深开发人员参与。参与。设计模型:设计模型:高层设计模型以架构师为主,系统分析员从需求方面提高层设计模型以架构师为主,系统分析员从需求方面提供支持,资深开发人员从技术实现方面提供支持。详细设计模型则供支持,资深开发人员从技术实现方面提供支持。详细设计模型则以资深开发人
13、员为主,架构师提供指导。以资深开发人员为主,架构师提供指导。数据库模型数据库模型:以数据库开发人员为主,架构师提供指导,资深开发以数据库开发人员为主,架构师提供指导,资深开发人员(设计人员)予以配合人员(设计人员)予以配合。实现模型:实现模型:以资深开发人员(设计人员)为主,架构师提供总体指以资深开发人员(设计人员)为主,架构师提供总体指导。导。6、如何使用、如何使用UML对对需求建模需求建模 用例模型用例模型组织需求组织需求二、系统建模二、系统建模用例用例建模工作流建模工作流-识别识别参与者、参与者、寻找用例寻找用例-描述参与者和用例的描述参与者和用例的交互方式交互方式 -用包来组织用例和参
14、与者(可选用包来组织用例和参与者(可选)-通过通过用例图用例图表示用例表示用例模型模型 -细化用例细化用例模型、模型、评估用例评估用例模型模型6、如何使用、如何使用UML对对需求建模需求建模 类模型类模型概念模型概念模型二、系统建模二、系统建模概念模型也称为领域模型,通常把概念模型也称为领域模型,通常把业务建模生成的称为领域模型,而业务建模生成的称为领域模型,而无专门的业务建模生成的称为概念无专门的业务建模生成的称为概念模型模型。建立概念模型的目的是帮助开发团建立概念模型的目的是帮助开发团队理解问题领域的各种概念、各种队理解问题领域的各种概念、各种名词、以及它们之间的各种关系,名词、以及它们之
15、间的各种关系,它的主要表现方式就是它的主要表现方式就是类类图图。在构建这个模型时,最主要的工作是找出相关的类,然后明确类之间在构建这个模型时,最主要的工作是找出相关的类,然后明确类之间的关联关系,必要时加入一些多重性描述和业务规则约束的关联关系,必要时加入一些多重性描述和业务规则约束。6、如何使用、如何使用UML对对需求建模需求建模 交互模型交互模型描述事件流描述事件流二、系统建模二、系统建模在需求阶段的交互模型是一个起点,随着分析和设计工作的开展,在需求阶段的交互模型是一个起点,随着分析和设计工作的开展,该模型将不断的精化和该模型将不断的精化和修正。修正。交互交互模型中一般只包含概念模型中的
16、实体对象和分析模型中的边模型中一般只包含概念模型中的实体对象和分析模型中的边界对象,其目标只是帮助分析人员理清整个事件流,而控制对象、界对象,其目标只是帮助分析人员理清整个事件流,而控制对象、设计类的引入都将在后续阶段设计类的引入都将在后续阶段进行。进行。并非一定要为用例模型中的所有用例构建交互模型,关键在于并非一定要为用例模型中的所有用例构建交互模型,关键在于“是否需要是否需要”。可借助可借助状态图状态图表示一些对象状态的变迁及用户界面设计,还可以表示一些对象状态的变迁及用户界面设计,还可以借助借助活动图活动图来理解活动与活动之间的控制流。来理解活动与活动之间的控制流。目录目录1.确定业务需
17、求确定业务需求2.需求捕获需求捕获3.获得需求特性表获得需求特性表4.建立用例模型建立用例模型5.建立概念模型建立概念模型6.建立交互建立交互/状态模型状态模型三三需求分析建模实例需求分析建模实例7.用户界面设计用户界面设计1、确定、确定业务业务需求需求三、需求分析建模实例三、需求分析建模实例1、确定、确定业务业务需求需求三、需求分析建模实例三、需求分析建模实例1、确定、确定业务业务需求需求三、需求分析建模实例三、需求分析建模实例2、需求捕、需求捕获获三、需求分析建模实例三、需求分析建模实例2、需求捕、需求捕获获三、需求分析建模实例三、需求分析建模实例3、获获得需求特性表得需求特性表三、需求分
18、析建模实例三、需求分析建模实例编号特性FEAT01研发经理能够创建项目、指定或修改项目经理、删除尚未分配工作任务的项目FEAT02项目经理可以对项目设置工作包,工作包允许多级嵌套,它只用来组织工作任务FEAT03项目经理可以为开发人员指派工作任务,工作任务属于特定的工作包FEAT04项目经理在分配工作任务时,能够查阅开发人员的日程安排表,可以按开发人员查询、也可按日程查询FEAT05开发人员接到任务时,通过系统填写计划时间(计划开始时间和计划结束时间),项目经理确认后,更新日程安排表FEAT06开发人员可以查询相近工作任务的历史数据(估算数据、实际数据)FEAT07开发人员任务执行将超计划时,
19、应报告项目经理,项目经理通过系统更新其日程表FEAT08当任务完成之后,项目经理负责Close任务,并填入实际的完成情况(KLOC、实际结束时间)FEAT09开发人员可以随时记录自己的时间,提供“开始计时”、“暂停计时”、“停止计时”,在停止时,填入任务编号(在线则选择)、工作关键字(以逗号分隔的多个),自动生成开始时间、暂停时间、停止时间、总时长、有效时长(总时长-中断时长)FEAT10开发人员可以根据任务编号、关键字、起止时间进行分类组合查询与统计FEAT11时间记录程序会自动连接服务器,完成时间日志上传的工作,未能连接服务器,则在本机暂存时间日志FEAT12项目经理可以按项目、任务、关键
20、字统计实际工作时长、产能FEAT13研发经理及管理层可以按个人、任务、项目、关键字查看工作时长、统计产能4、建立用例模型、建立用例模型 识别参与者识别参与者三、需求分析建模实例三、需求分析建模实例4、建立用例模型、建立用例模型 合并特性获得用例合并特性获得用例三、需求分析建模实例三、需求分析建模实例参与者特性用例开发人员FEAT05.开发人员接到任务时,应通过系统填写计划时间(计划开始时间和计划结束时间),项目经理确认后,更新日程安排表 UC01.填写任务计划FEAT06.开发人员可以查询相近工作任务的历史数据(估算数据、实际数据)FEAT10.开发人员可以根据任务编号、关键字、起止时间进行分
21、类组合查询与统计UC02.查询历史任务数据(UC01的扩展)FEAT09.开发人员可以随时记录自己的时间,提供“开始计时”、“暂停计时”、“停止计时”,在停止时,填入任务编号(在线则选择)、工作关键字(以逗号分隔的多个),自动生成开始时间、暂停时间、停止时间、总时长、有效时长(总时长-中断时长)FEAT11.时间记录程序会自动连接服务器,完成时间日志上传的工作,未能连接服务器,则在本机暂存时间日志UC03.记录时间日志项目经理FEAT02.项目经理可以对项目设置工作包,工作包允许多级嵌套,它只用来组织工作任务UC04.设置工作包FEAT03.项目经理可以为开发人员指派工作任务,工作任务属于特定
22、的工作包FEAT04.项目经理在分配工作任务时,能够查阅开发人员的日程安排表,可以按开发人员查询、也可按日程查询UC05.分配工作任务UC5A.查看日程安排(扩展用例)FEAT07.开发人员任务执行将超计划时,应报告项目经理,项目经理通过系统更新其日程表UC06.更新日程表FEAT08.当任务完成之后,项目经理负责Close任务,并填入实际的完成情况(KLOC、实际结束时间)UC07.关闭工作任务FEAT12.项目经理可以按项目、任务、关键字统计实际工作时长、产能UC08.统计项目产能研发经理FEAT01.研发经理能够创建项目、指定或修改项目经理、删除尚未分配工作任务的项目UC09.管理项目信
23、息管理层FEAT13.研发经理及管理层可以按个人、任务、项目、关键字查看工作时长、统计产能UC10.统计团队产能4、建立用例模型、建立用例模型 绘制用例图绘制用例图三、需求分析建模实例三、需求分析建模实例4、建立用例模型、建立用例模型 简要描述用例简要描述用例三、需求分析建模实例三、需求分析建模实例用例编号用例编号UC01用例名称用例名称填写任务计划用例概述用例概述开发人员对项目经理安排给自己的工作任务进行计划,填入计划开始时间和计划完成时间。主参与者主参与者开发人员补充说明补充说明在填入计划开始时间和计划完成时间时,开发人员可以查询与该任务的关键字相关的历史任务的数据。4、建立用例模型、建立
24、用例模型 划分用例优先级划分用例优先级三、需求分析建模实例三、需求分析建模实例优先级优先级用例用例说明说明1UC11.登录系统 系统使用的基础,并且可复用原有资源UC09.管理项目信息 UC04.设置工作包 UC05.分配工作任务 UC01.填写任务计划 任务管理的完整流程,是记录时间日志的基础UC03.记录时间日志系统核心功能2UC07.关闭工作任务只是对任务信息进行更新,重要性次之UC06.更新日程表 UC5A.查看日程安排对日程安排进行优化,使任务安排合理化3UC02.查询历史任务数据UC08.统计项目产能 UC10.统计团队产能对系统记录的时间记录进行有效的利用,必须有前面的信息才能够
25、开发UC12.管理用户前期可以通过直接往数据库中写值的方式进行使用,最后提供界面操作即可4、建立用例模型、建立用例模型 详细描述用例详细描述用例三、需求分析建模实例三、需求分析建模实例用例编号用例编号UC03用例名称用例名称记录时间日志用例概述用例概述开发人员可以随时记录自己的时间,提供“开始计时”、“暂停计时”、“停止计时”等功能,在停止时,填入任务编号(在线则选择)、工作关键字(以逗号分隔的多个),自动生成开始时间、暂停时间、停止时间、总时长、有效时长(总时长-中断时长)。主参与者主参与者开发人员前置条件前置条件用户进入“记录时间日志”程序后置条件后置条件将本次时间日志存入数据库基本事件流
26、基本事件流步骤活动1系统显示“开始”、“暂停”和“停止”按钮,但仅“开始”可用2用户点击“开始”,系统记录开始时间,并将“开始”置为不可用,使“暂停”和“停止”按钮可用3用户点击“停止”按钮,系统记录停止时间,并统计暂时时间、暂停次数、总时长、有效时长,并要求用户选择任务编号、输入工作关键字和相关信息。填写完成后,点击确定,用例完成。扩展事件流扩展事件流3a在此期间,若用户点击“暂停”按钮,系统则记录暂停开始时间,并使暂停次数增加1次,并使“暂停”按钮变为“恢复”,使“停用”按钮不可用3a1当用户点击“恢复”按钮,用当前时间减去暂停开始时间得到本次暂停时间,并累加到“暂停时间”时间中,并使“恢
27、复”按钮变为“暂停”,使“停用”按钮恢复可用规则与约束规则与约束时间记录程序应以离线式工作,该程序会自动连接服务器,完成时间日志上传的工作,如果未能连接服务器,则在本机暂存时间日志5、建立概念模型、建立概念模型 发现类发现类三、需求分析建模实例三、需求分析建模实例研发经理研发经理 项目项目 项目经理项目经理 工作任务工作任务 工作包工作包开发人员开发人员 日程安排表日程安排表 计划时间计划时间 历史数据历史数据 估算数据估算数据实际数据实际数据 任务编号任务编号 工作关键字工作关键字 开始时间开始时间 暂停时间暂停时间停止时间停止时间 总时长总时长 有效时长有效时长 服务器服务器 产能产能管理
28、层管理层 时间日志时间日志项目项目 工作任务工作任务 工作包工作包 开发人员开发人员日程安排表日程安排表 时间日志时间日志5、建立概念模型、建立概念模型 关联分析关联分析三、需求分析建模实例三、需求分析建模实例5、建立概念模型、建立概念模型 属性分析属性分析三、需求分析建模实例三、需求分析建模实例6、建立交互、建立交互/状状态态模型模型三、需求分析建模实例三、需求分析建模实例7、用、用户户界面界面设计设计三、需求分析建模实例三、需求分析建模实例目录目录1.我们在哪重重摔了一跤我们在哪重重摔了一跤2.软件需求曾经让我们如此狼狈软件需求曾经让我们如此狼狈3.总结总结4.思维游戏思维游戏四四经验总结
29、经验总结1、我、我们们在哪重重摔了一跤在哪重重摔了一跤四、经验总结四、经验总结在在Standish Group的报告中总结了导致项目失败的最重要的的报告中总结了导致项目失败的最重要的8大原大原因中,有因中,有5个与需求相关:个与需求相关:不完整的需求;不完整的需求;没有用户的介入;没有用户的介入;不实际的客户期望;不实际的客户期望;需求和规范的需求和规范的变更;变更;提供了不再需要提供了不再需要的。的。2、软软件需求曾件需求曾经让经让我我们们如此狼如此狼狈狈四、经验总结四、经验总结3、总结总结四、经验总结四、经验总结建立需求建立需求管理基线管理基线,有效的控制需求变更。,有效的控制需求变更。换位思考,成为用户,体验用户真实业务环境;换位思考,成为用户,体验用户真实业务环境;学会沟通,需求分析时表达能力和理解能力都很重要;学会沟通,需求分析时表达能力和理解能力都很重要;需求图型化;需求图型化;及时评审,避免错误量放大;及时评审,避免错误量放大;决策支持,及时签字确认。决策支持,及时签字确认。3、总结总结四、经验总结四、经验总结3、思、思维维游游戏戏四、经验总结四、经验总结ABCD