上海睿泰信息科技有限公司彭国明手机:13812197348@msn.comE-mail:penggm@retechcorp.com目录21.软件规模估算简介2.功能点分析法3.功能点计数基本过程4.功能点计数举例5.快速功能点法6.功能点分析法小结7.结束1.软件规模估算简介-影响因素功能:取决于用户(业务)的需求,是用户(业务)需求的逻辑规模(logicalsize)反映代码量:是用户(业务)需求逻辑规模(logicalsize)的物理规模(physicalsize)反映均源自用户(业务)需求软件的自身规模表现为代码量和功能点数31.1软件需求-规模的转换模型功能性需求技术需求质量需求用户需求软件功能软件代码非功能需求软件的逻辑规模软件的物理规模•软件规模派生于量化的用户功能需求与非功能需求•软件的物理规模-代码量不仅取决于软件功能(用户的功能性需求),还取决于用户的技术需求和质量需求(隐含)。41.2软件规模定义5软件规模度量(sizemeasurement)是估算软件项目工作量、编制成本预算、策划合理项目进度的基础从制造成本角度出发:代码行类的数量函数数量模块数量从客户价值功能角度出发:功能点页面数/窗体数/功能项数Usecase数量Usestory/Storypoint数量1.3常见规模估算方法比较61.4功能点VS代码行法7源代码行:SLOC(站在乙方立场,侧重“如何做”)•历史数据或专家意见法(PERT)•单位:KSLOC•用于度量程序开发中的智能工作量•规模与开发语言联系密切,技术的视角反映软件规模•已逐渐失去吸引力,多用于乙方内部核算用功能点:FP(站在甲方立场,侧重“做什么”)•基于软件的功能数和一组独立的项目因子•基于需求,在项目早期即可得到的信息•优势在于独立于软件开发语言,用业务的视角反映软件规模•国际主流测算方法,适合甲乙双方谈判沟通•提供一种工具度量软件产品,以便支持量化和生产率分析。•为估计软件开发和维护成本、资源提供了一种方法。•与SLOC存在一定的对应关系采用.NET编程,按30SLOC/FP2.功能点分析法(FPA)8功能点分析法的估算依据:SIZE系统=SIZE需求=SIZE功能需求+SIZE非功能需求=(SIZE逻辑需求+SIZE数据需求)+SIZE非功能需求=[(SIZE输入+SIZE输出+SIZE查询)+(SIZE内部数据+SIZE外部数据)]+SIZE非功能需求(FP是以数据处理能力为核心的度量方法;间接度量)是从用户角度度量软件开发的一种标准方法功能点度量的主要贡献在于,它赋予了软件行业解决严肃的经济学问题的能力。2.1功能点分析目的和用途功能点定义功能点(FunctionPoints)是度量软件规模的一个标准度量单元一个软件的大小可以通过交付给用户的功能点数来度量,就如一间房子的大小通过提供给用户的建筑面积或使用面积来度量一样。功能点分析(FunctionPointAnalysis)是从用户角度度量软件开发的一种标准方法。功能点分析基于用户的逻辑功能需求,而不考虑应用的物理实现不同项目和组织对比用户视角表示使用用户的语言对用户业务需求进行的一种正规描述。是一个业务功能的描述;是被用户认可的可以用来计算功能点可以在物理形式上变化的(例如:事务处理目录、建议书、需求文档、外部规格说明、详细规格说明、用户手册)分析目的用户视角定义9功能点就是软件开发行业中的平方米。CarolA.Dekkers度量用户要求和能够接收到的功能提供一种度量的手段系统固有属性,与技术无关用户视角来确定的2.2功能点分析的有效性基础•需求的理解•个人分析和评价能力•组织业务数据•组织生产力数据不能完全脱离技术方案基本思想•不重复、不遗漏、分轻重、划等级•“小处着眼,大处着手”•理解不同,结合实践,自己家自己建11最早由IBM工程师A·J·Albrecht于1979年提出,IBM在其客户中推广,至1984年出现了一个称为“国际功能点用户组织”(InternationalFunctionPointUsersGroup,简称IFPUG)非赢利性组织。目前被ISO组织接受为国际标准的功能点分析方法有4种:国际功能点用户协会提出的IFPUG功能点分析方法。荷兰软件度量协会(NEtherlandsSoftwareMetricsAssociation,NESMA)提出的荷兰软件功能点分析方法。英国软件度量协会(UKSoftwareMetricsAssociation,UKSMA)提出的MkII功能分析方法(MarkIIFPA)。通用软件度量国际协会(COmmonSoftwareMeasurementInternationalConsortium,COSMIC)提出的全功能点分析方法(COSMIC-FFP)。2.3功能点分析法-发展历史2.3功能点分析法-发展历史122.3功能点分析法(FPA)三类有代表性的方法比较IFPUG-FPA(国际功能点估算法应用最广泛)COSMIC-FFP(称为第二代功能点法)UK-MKII(在英国、香港等地使用)13IFPUG-FPACOSMIC-FFPUK-MKII功能元素定义3类处理型文件(EI、EO、EQ)2类数据型文件(ILF、EIF)4类数据移动(输入、输出、读、写)输入、输出、处理适用对象最适于管理信息系统MIS、非复杂计算系统MIS或嵌入式系统主要缺点•功能分解无方法指导•技术需求和质量需求没有反映•不考虑数据计算,无法应用于分析型系统•技术需求和质量需求没有反映•使用不广泛(英国、香港等地)•技术需求和质量需求没有反映3.功能点计数基本过程141、确定功能点计数类型2、识别计数范围及应用系统边界3、数据功能计数4、事务处理功能计数5、确定未调整的功能点数6、确定调整系数值7、计算调整后功能点数3.1确定功能点计数类型15开发项目这种类型的分析为用户提供应用第一次安装的时候所提供的功能多少的度量(本身+数据转化等)随着开发的的深入要逐步演进增量的度量(估算)而非推倒重来升级项目这种类型的分析为用户提供升级项目对目前系统所提供的功能修改、增加和删除的功能数量的度量当升级的应用被安装的时候,应用的功能点度量应该得到相应的更新应用程序型项目对应用的功能点分析是对一个已经安装的应用系统进行度量的手段。它也被称为基线功能点或者安装功能点这个度量揭示了当前应用为用户所提供的功能数量它在应用第一次被安装的时候确立,在系统升级的时候得到更新3.2识别计数范围及应用系统边界16识别分析范围和应用边界中的定义对分析目的的定义:功能点分析的目的是提供对业务问题的答案。该目的:A.决定功能点分析的类型并且通过在划定的范围内进行功能点分析来获得对所需要解决的业务问题的答案。B.影响了应用软件及其周边的界限的界定。例如,如果人力资源管理模块是作为一个软件包的一部分来提供的,那么分析者可能决定将人力资源管理作为一个单独的应用来看待。分析的目的的例子有:A.通过进行功能点分析,为项目估算开发第一个版本所需要的人力投入的估算提供输入B.为已经安装的软件提供一个规模的基线C.对不同供应商所提供的软件包进行功能上的比较3.2识别计数范围及应用系统边界17定义计数范围计数范围定义了在一次功能点分析中所需要涵盖的功能范围计数范围A.定义了被计数的软件的一个集合或者子集B.是由这一次分析的目的所决定的C.识别出为了满足分析目的所需要提供的答案中应该包括的功能D.可能包含了不止一个应用为了不同的计数目的,该范围的定义如下:A.在升级项目中,该范围包括所有被增加,改变和删除的功能。B.开发项目的范围包括所有牵涉到的功能,包括被创建的或者被客户化的功能对应用的功能点分析的范围可能包括被用户使用到的功能或者该应用所提供的所有的功能。3.2识别计数范围及应用系统边界18定义应用边界应用边界表示所度量的软件和用户之间的边界。应用边界:A.定义了对于应用来说什么是外界B.是对应用的“内部”和“外部用户世界”之间接口的概念性定义C.是交易所处理的数据(EI,EO和EQ)进入和送出该应用的一层“细胞膜”D.封装了由该应用所维护的数据集合(ILF)E.帮助识别出该应用所使用,但并非是由该应用所维护的数据(EIF)F.是由用户对该应用的商业视角所决定而非技术/实施考虑决定的3.2识别计数范围及应用系统边界19分析范围以及应用边界的规则和流程边界识别的规则A.边界的定义必须基于有户的视角,边界必须是用户能够理解和描述的B.如果项目牵扯到多个系统,那么必须将这多个系统的边界全部描述清楚。C.相关应用之间的边界是由用户看到的不同功能区域来划分,而不是由技术考虑来划分的D.应用之间初始的边界不会因为功能点分析而改变边界识别的一些技巧A.通过UML的“UseCase”用例图是以用户角度进行识别项目范围和边界的最好方法,在画用例图时就必须明确系统的边界。B.使用系统的客户需求或者获得一个系统计算的流程图,在系统的周围画一个圈,以此区别系统内部和外部的元素C.察看数据的维护方式D.察看其他数据,例如成本,人力,缺陷等。功能点分析中的应用范围应该和其他的度量数据的应用范围是一致的3.2识别计数范围及应用系统边界203.3功能点计数方法把用户的业务功能需求分为数据功能需求和处理数据的事务功能需求数据分为应用内部逻辑数据和应用外部的接口数据,事务分为对数据的外部输入、输出和查询分别分析这些组成部分的功能点数据功能(DataFunction)指提供给用户的以满足应用内部和外部数据需求的功能性分为内部逻辑文件(ILF)和外部接口文件(EIF)复杂性由数据元素类型(DET,dataelementtype)和记录元素类型(RET,recordelementtype)决定事务功能(TransactionFunction)指提供给用户的以满足应用数据处理需求的功能性分为外部输入(EI)、外部输出(EO)、外部查询(EQ)复杂性由数据元素类型(DET)和文件引用类型(FTR,filetypereferenced)决定21filefilefileApplicationAApplicationBfile外部输入EI外部输出EO外部查询EQ事务功能内部逻辑文件ILF外部接口文件EIF数据功能3.3.1功能点五类要素1/322EI/EO/EQ反映的是运动中的数据(datainmotion)ILF/EIF反映的是存储中的静态数据(dataatrest)3.3.1功能点的五类要素2/3内部逻辑文件ILF(InternalLogicalFile),在信息系统内部,为了完成相关功能使用的逻辑文件,包括顺序文件、数据库表等外部接口文件EIF(ExternalInterfaceFile),该系统和外部其他信息系统为了交换数据而使用的接口文件外部输入处理EI(ExternalInput),是获得数据的过程,对终端用户的输入进行相关的处理外部输出处理EO(ExternalOutput),是反馈数据的过程,完成对票据、报表等的输出外部查询处理EQ(ExternalInquiry),针对终端用户的查询请求,输出相应的检索结果下列五要素中,前两种属于文件;后三种属于事务处理,它们涵盖了终端用户和信息系统对象之间存在的所有可能的交互内容。2324以外贸订单系统项目为例:录入订单、修改订单、删除订单是EI查询订单是EQ统计订单是EO汇率查询转换系统为EIF订单和客户是ILF3.3.1功能点的五类要素举例3/33.3.2内部逻辑文件和外部接口文件识别原则25ILF识别原则数据或控制信息组是合乎逻辑的和用户可确认的;其主要目的是保存通过被度量软件的一个或多个基本过程维护的数据。数据组的维护是在应用边界内的基本过程中完成的。ILF举例使客户可以使用他们负责维护的数据。例如驾驶员在起飞行前通过显示