需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么?”这个问题。需求分析所要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其它有效性需求。----这都是从软件的业务功能角度来讲。
系统分析-系统设计
《面向对象设计UML实践》:
“分析模型不同于设计模型,它不涉及要开发系统的任何特性,而是力求捕捉“现实世界”中的业务的某些方面和特性。
通常,分析模型描述应用中处理的数据和处理数据的各种过程。在传统的分析方法中,这些模型用图表示,如逻辑数据模型和数据流图。值得注意的是,使用分析模型描述业务过程,早于并且独立于这种过程的计算机话,例如,组织结构图和说明特定生产过程的示意图在商业和工业中已经使用了相当长的时间。”
===分析模型是捕捉“现实世界”中的业务的某些方面和特性。
《面向对象的系统分析》:
“一种观点是坚持人们多年来在软件工程淋浴中形成的共识-分析着眼于系统“做什么”,不管它“怎么做”,不涉及细节;设计解决有关“怎么做”的问题,描述有关的细节。按照这种观点,关于对象属性与服务的细节都不在OOA中考虑,而且放到OOD阶段进行西湖,例如Berard方法和Rumbaugh方法都是采用这种分工的。另一种观点是分析只针对问题和系统责任,不考虑与实现有关的因素,建立一个独立于实现的OOA模型。这个OOA模型是问题域和系统责任的完整表达,包括对属性和服务的表达。设计则考虑与实现有关的问题(如选用的编程语言、数据库、图形用户节目等),认识与此有关的对象,建立一个针对具体实现的OOD模型,例如Coad/Yourdon方法就是采用这种分工的。”
====
一、Berard方法和Rumbaugh方法分工:
1、分析(OOA阶段):着眼于系统“做什么”,不管它“怎么做”,不涉及细节。
2、设计(OOD阶段):设计解决有关“怎么做”的问题,描述有关的细节。对象属性与服务的细节在此阶段考虑。
二、Coad/Yourdon方法分工:
1、分析(OOA阶段):是问题域和系统责任的完整表达,包括对属性和服务的表达。不考虑与实现有关的因素,建立一个独立于实现的OOA模型。
2、设计(OOD阶段):考虑与实现有关的问题(如选用的编程语言、数据库、图形用户节目等),认识与此有关的对象,建立一个针对具体实现的OOD模型,。
《用UML构建WEB应用》:
“在分析阶段,问题空间中重要的进程和对象被识别、命名和分类。分析着重与系统的功能型需求,而忽略系统构架上的约束。重点是确保所有由用例和其他稳定表述的功能需求在系统的某处实现。”
可以看出“需求分析”与“系统分析”的出发点有所不同:
需求分析是专注于业务本身,从业务角度来准确的描述“系统必须做什么”。是产品规划的细化。(产品规划是创意的细化)
系统分析则是专注于,软件系统实现业务需求,必须提供什么样的功能。即也是“做什么”,但是从软件本身来讲的。他需求专业的技术知识及业务知识。
相关:
IRP(信息资源规划)的需求分析包括对功能的需求分析和对数据的需求分析。
一般的计算机应用开发都要进行需求分析,在"软件工程"或"系统分析与设计"中都有涉及。那IRP的需求分析与其有何不同呢?主要有以下几个方面:
1)分析的业务范围不同。IRP的需求分析是强调对全企业、企业的大部分或企业的主要部分进行分析,是全局性的分析,需要全局观点;而软件工程中的需求分析是一种局部性的分析,只需根据应用开发项目的范围进行调查分析,即使较大、涉及多个职能域,也是分散地进行以满足编程为需要的需求分析,不强调全局观点。
2)分析人员组成不同。IRP的需求分析要求企业业务人员参加,特别强调高层管理人员的直接参与。一般业务人员与系统分析人员组成"联合需求分析小组(Joint Requirement Planning,简称JRP)",且要求业务人员在分析阶段的主导作用,系统分析人员起协助辅导作用,整个需求分析过程就是业务人员间、业务人员与计算机人员间的研讨过程;而软件工程的需求分析主要是由系统分析人员完成,只向业务人员做一些调查,并没有组织业务人员广泛深入的参与。
3)数据标准化要求不同。IRP的数据需求分析要建立全局的数据标准,是进行数据集成的基础准备工作。即全局性的数据标准化工作要提前开始并集中统一地进行,不是等到应用项目开发时再分散地进行,此时将无法控制;而软件工程中的数据需求分析不做数据标准化的准备工作,由分析人员因人而异进行数据调查,一般收集完用户的单证报表就基本完成。
因此,应当说IRP的需求分析或者说信息工程IEM的需求分析,与软件工程的需求分析不是对立的,而是互补的,是统一的,或者说是高层方法论和低层方法论的关系。