需求分析建模技术.docx
《需求分析建模技术.docx》由会员分享,可在线阅读,更多相关《需求分析建模技术.docx(14页珍藏版)》请在冰豆网上搜索。
需求分析建模技术
项目需求分析
1.需求分析概述
1.1需求分析定义
需求分析是指理解用户需求,就软件功能和性能与客户达成一致,估计软件风险和评估项目代价,最终形成开发计划的一个复杂过程。
在这个过程中,用户处在主导地位,需求分析工程师和项目经理要负责整理用户需求,为之后的软件设计打下基础。
需求分析阶段结束后,要求得到《用户需求说明书》和《需求规格说明书》两份文档。
广义上,需求分析包括需求的获取、分析、规格说明、变更、验证、管理的一系列需求工程。
狭义上的需求分析是指需求的获取、分析及定义的过程。
需求分析的任务就是软件系统解决“做什么”的问题,就是要全面地理解用户的各项要求,并准确地表达所接受的用户需求的过程。
1.2需求分析的根本任务
从实践角度考虑,需求分析不是分析如何实现用户的需求。
实际上,需求分析是以业务分析为导向,将用户零散的需求串联起来,形成一个体系完成、组织合理、容清晰的框架,为今后的设计开发工作打下良好的基础。
1、建立分析模型
⏹将复杂的系统分解成为简单的部分以及它们之间的联系,确定本质特征。
⏹和用户达成对信息容的共同理解。
⏹分析的活动主要包括识别、定义和结构化,它的目的是获取某个可以转换为知识的事物的信息。
2、创建解决方案
⏹将一个问题分解成独立的、更简单和易于管理的子问题来帮助寻找解决方案。
⏹创建解决方案的过程是创造性的。
⏹帮助开发者建立问题的定义,并确定被定义的事物之间的逻辑关系。
⏹这些逻辑关系可以形成信息的推理,进而可以被用来验证解决方案的正确性。
1.3需求的层次
1、业务需求
反映组织机构或客户对系统、产品高层次的目标要求。
通常问题定义就是业务需求
2、用户需求
描述用户使用产品必须要完成什么任务,怎么完成,通常是在问题定义的基础上进用户访谈、调查,对用户使用的场景进行整理,从而建立从用户角度的需求
3、系统需求
从系统的角度来说明软件的需求,它就包括了用特性说明的功能需求,质量属性以及其它非功能需求,还有设计约束
1.4需求分析的重要性
如果投入大量的人力、物力、财力和时间,而开发出的软件却没人要,那么所有的投入都是徒劳。
如果费了很大的精力开发一个软件,最后却不能满足用户的要求,而要重新开发,那么这种返工是让人痛心疾首的。
所以,需求分析在软件开发过程中具有举足轻重的地位,具有决策性、方向性、策略性的作用,我们应对需求分析具有足够的重视。
在一个大型软件系统的开发中,需求分析的作用要远远大于程序设计。
根据StandishGroup对23000个项目进行的研究结果表明,28%的项目彻底失败,46%的项目超出经费预算或者超出工期,只有约26%的项目获得成功。
而在于这些高达74%的不成功项目中,有约60%的失败是源于需求问题。
也就是说,有近45%的项目最终因为需求的问题最终导致失败。
失败的主要原因:
1、不完整的需求;
2、没有用户的介入;
3、不实际的客户期望;
4、需求和规的变理;
5、提供了不再需要的
1.5需求分析的一般步骤
需求分析的基本过程:
1.需求获取
通过会议纪要、讨论纪要的形式。
2.需求捕获技术比较
捕获技术
优点
缺点
用户访谈
直接有效、灵活、深入,主要技术
占用时间长,信息面窄、较片面
用户调查
面广、可以获得更多反馈
不够深入,容易形式主义、失真
现场观摩
容易建立直接的认识
消耗时间长,易失真
文档考古
能够详细、直观对数据流细节进行分析
易陷入书海,甚至产生误导
联合开发
直接的头脑风暴,可以击破需求盲点
成本高,需要较高的控制技巧
3.需求分析
对收集到的需求进行提炼、分析和审查,为最终用户所看到的系统建立概念化的分析模型。
关键是解决What(收集什么信息)、Where(从哪收集)、How(如何收集)。
4.需求文档的编写
完成需求规格说明书的编写,并审核通过的规格说明书,其容包含如下:
●分析需求可行性
●细化需求
●建立需求分析模型
●功能活动
●分析问题类和类之间关系
●系统和类行为
●数据流
需求分析的本质就是抽象、映射、转换。
:
2.需求分析建模
需求分析是软件需求中最核心的工作,需求分析建模是需求分析的主要手段。
建立系统模型的过程。
又称模型化。
建模是研究系统的重要手段和前提。
凡是用模型描述系统的因果关系或相互关系的过程都属于建模。
建模是寻求分析的主要手段,它通过简化(化简)、强调来帮助需求分析人员理清思路,达成共识。
因此需求建模的过程非常重要。
1.6模型(Model)
模型是对事物的抽象,帮助人们在创建一个事物之前可以有更好的理解。
集中关注问题的计算特性(数据、功能、规则等等)
它是对系统进行思考和推理的一种方式。
建模的目标是建立系统的一个表示,这个表示以精确一致的方式描述系统,使得系统的使用更加容易
1.7建模的目的
通过建模可以更好地理解正在开发的系统。
原先,由于计算机应用还不算普及,因此软件系统的规模和复杂度都相对较小。
使用“数据结构+算法=程序”的模式就可以解决大部分问题。
现在,随着计算机应用的不断普及,业务模式、数据量都在发生迅速的变化。
软件涉及的问题越来越广,早已超出了人们可以处理的复杂程度。
如果还采用传统的方式,就无法进行有效的规划和设计,最终必然导致失败。
通过软件建模,帮助我们按照实际情况或按照我们的需要的模式对系统进行可视化,提供一种详细说明系统的结构或者行为的方法,给出一个指导系统构造的模板。
对所有做出的决定实施文档化。
1.8模型分类:
业务模型、分析模型、计算模型、编码模型。
以图书馆借书为例的一个模型:
1.9建模的过程
1.10建模的原则
●抽象(Abstraction)
一方面要求人们只关注重要的信息,忽略次要的容,通过强调本质的特征,就减少了问题的复杂性。
另一方面也要求人们将认知保留在适当的层次,屏蔽更深层次的细节。
在问题的各元素之间推断出更广泛和更普遍的关系,帮助人们寻找解决方案。
●分解(Decomposition/Partitioning)
“分而治之”,将单个复杂和难以理解的问题分解成多个相对更容易的子问题,并掌握各子问题之间的联系分解的方案往往还能提供问题的解决思路。
●投影(Projection)
多视点方法
1.11建模方法
描述系统需求时可以从系统的功能、行为和信息三个方面进行,侧重点可以不一样。
1.面向信息流向:
结构化分析方法(SA)
结构化分析(SA):
structuredanalysis。
使用数据流程图、数据字典、结构化语言、判定表和判定树等工具,来建立一种新的、称为结构化说明书的目标文档-需求规格说明书。
结构化体现在将软件系统抽象为一系列的逻辑加工单元,各单元之间以数据流发生关联。
结构化分析是70年代末,由Demarco等人提出的,旨在减少分析活动中的错误,建立满足用户需求的系统逻辑模型。
该方法的要点是:
面对数据流的分解和抽象;把复杂问题自顶向下逐层分解,经过一系列分解和抽象,到最底层的就都是很容易描述并实现的问题了。
SA方法的分析结果由数据流图、数据词典和加工逻辑说明。
结构化分析过程中,一般认为首先应该考虑的问题应该是进行环境分析。
2.面向信息结构:
Jackson分析方法
JACKSON方法是一套完整的分析和设计方法。
Jackson认为有三种形式的数据结构:
顺序、选择和重复。
三种数据结构可以进行任意嵌套,组合。
形成复杂的结构体系。
JACKSON方法的从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,就可得到完整的描述程序结构的JACKSON图。
3.面向信息容:
面向对象分析方法
面向对象分析方法(Object-OrientedAnalysis,OOA),是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。
OOA(面向对象的分析)模型由5个层次(主题层、对象类层、结构层、属性层和服务层)和5个活动(标识对象类、标识结构、定义主题、定义属性和定义服务)组成。
在这种方法中定义了两种对象类之间的结构,一种称为分类结构,一种称为组装结构。
分类结构就是所谓的一般与特殊的关系。
组装结构则反映了对象之间的整体与部分的关系。
OOA中的5个层次和5个活动继续贯穿在OOD(画向对象的设计)过程中。
OOD模型由4个部分组成。
它们分别是设计问题域部分、设计人机交互部分、设计任务管理部分和设计数据管理部分。
1.12需求分析工具
目前市面上最为流行的需求管理工具有以下三款,三款均需购买才能使用。
1.1RationalRequisitePro
IBMRationalRequisitePro解决方案是一种需求和用例管理工具,能够帮助项目团队改进项目目标的沟通,增强协作开发,降低项目风险,以及在部署前提高应用程序的质量。
通过与Microsoft?
Word的高级集成方式,为需求的定义和组织提供熟悉的环境。
提供数据库与Word文档的实时同步能力,为需求的组织、集成和分析提供方便。
支持需求详细属性的定制和过滤,以最大化各个需求的信息价值。
提供了详细的可跟踪性视图,通过这些视图可以显示需求间的父子关系,以及需求之间的相互影响关系。
通过导出的XML格式的项目基线,可以比较项目间的差异。
可以与IBMSoftwareDevelopmentPlatform中的许多工具进行集成,以改善需求的可访问性和沟通。
2.TelelogicDOORS
TelelogicDOORSreg;EnterpriseRequirementsSuite(DOORS/ERS)是基于整个公司的需求管理系统,用来捕捉、、跟踪、分析及管理信息,以确保项目与特定的需求及标准保持一致。
DOORS/ERS使用清晰的沟通来降低失败的风险,这使通过通用的需求库来实现更高生产率的建设性的协作成为可能,并且为根据特定的需求定义的可交付物提供可视化的验证方法,从而达到质量标准。
TelelogicDOORS企业需求管理套件(DOORS/ERS)是仅有的面向管理者、开发者与最终用户及整个生命周期的综合需求管理套件。
不同于那些只能通过一种方式工作的解决方案,DOORS/ERS赋予你多种工具与方法对需求进行管理,可以灵活地融合到公司的管理过程中。
以世界著名的需求管理工具DOORS为基础,DOORS/ERS使得整个企业能够有效地沟通从而减少失败的风险。
DOORS/ERS通过统一的需求知识库,提供对结果是否满足需求的可视化验证,从而达到质量目标,并能够进行结构化的协同作业使生产率得到提高
3.BorlandCaliberRM
BorlandCaliberRM是一个基于Web和用于协作的需求定义和管理工具,可以帮助分布式的开发团队平滑协作,从而加速交付应用系统。
CaliberRM辅助团队成员沟通,减少错误和提升项目质量。
CaliberRM有助于更好地理解和控制项目,是Borland生命周期管理技术暨BorlandSuite中用于定义和设计工作的关键容,能够帮助团队领先于竞争对手。
CaliberRM提供集中的存储库,能够帮助团队在早期及时澄清项目的需求,当全体成员都能够保持同步,工作的容很容易具有明确的重点。
此外,CaliberRM和领先的对象建模工具、软件配置管理工具、项目规划工具、分析设计工具以及测试管理工具良好地集成。
这种有效的集成有助于更好地理解需求变更对项目规模、预算和进度的影响。
3.数据挖掘
3.1.数据分析模型
1.绝对模型(CategoricalModel):
依据预定义路径寻找原因,如查询
2.解释模型(ExegeticalModel):
依据多层次路径寻找原因,如多维分析
3.思考模型(ContemplativeModel):
参数化路径,如场景分析
4.公式模型(FormulaicModel):
模型化路径,如数据挖掘
3.2.数据挖掘概念
数据挖掘(DataMining)就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。
数据挖掘是一种新的商业信息处理技术,其主要特点是对商业数据库中的大量业务数据进行抽取、转换、分析和其他模型化处理,从中提取辅助商业决策的关键性数据。
因此,数据挖掘可以描述为:
按企业既定业务目标,对大量的企业数据进行探索和分析,揭示隐藏的、未知的或验证已知的规律性,并进一步将其模型化的先进有效的方法。
图4.1数据挖掘从数据仓库中得出
3.3.数据挖掘方法论
1.以SPSS,NCR等公司为代表的CRISP-DM方法论
CRISP-DM是跨行业数据挖掘标准流程(Cross-IndustryStandardProcessforDataMining)的缩写。
强调以业务理解、数据理解、数据准备、建模、评价、发布为核心环节,将数据挖掘目标和商务目标有机地联系在一起。
2.以SAS公司为代表的SEMMA方法论,
以抽样(Sample)、探索(Explore)、修改(Modify)、建模(Model)、评估(Assess)为核心环节,强调数据挖掘过程是这5个环节的有机循环。
3.4.数据挖掘模型
数据挖掘通过预测未来趋势及行为,做出前摄的、基于知识的决策。
数据挖掘的目标是从数据库中发现隐含的、有意义的知识,主要有以下五类功能。
1.自动预测趋势和行为
2.关联分析
3.聚类
4.概念描述
5.偏差检测
3.5.数据挖掘算法介绍
1.决策树(decisiontree)
2.关联规则(associationrules)
3.聚类(clustering)
4.神经网络(ArtificialNeuralNetworks,简记作ANN)
5.粗糙集(roughset)
6.概念格(conceptlattice)
7.遗传算法(geneticalgorithms)
8.序列模式(sequencepattern)
9.贝叶斯(Bayes)
10.支持向量机(supportvectormachine,简记作SVM)
11.模糊集(fuzzyset)
12.基于案例的推理(case-basedreasoning,简记作CBR)
4.数据挖掘模型管理
4.1.数据挖掘的模型开发过程
为成功地利用预测模型,您需要从开发阶段直至生产环境对模型进行全面管理。
模型生命周期管理是由以下阶段组成的高效交替过程
1.确定业务目标
2.访问和管理数据
3.开发模型
4.验证模型
5.部署模型
6.监控模型
4.2.数据挖掘的工具集
常见的对数据挖掘建模的工具有:
1.IBMIntelligentMiner
2.SPSS的Clementine
3.SAS的EnterpriseMiner
4.SGI的MineSet
5.OracleDarwin