软件工程经济学.ppt
《软件工程经济学.ppt》由会员分享,可在线阅读,更多相关《软件工程经济学.ppt(68页珍藏版)》请在课桌文档上搜索。
1、软件工程经济学,软件工程经济学:在软件开发、运行和维护全过程中,为满足用户的成本、质量、时间(工期)、效益需求而采用的工程经济方法的全体称为软件工程经济学。,1.1软件、软件产业与软件企业,1.1.1 软件目前学术界对软件的普遍性解释为:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合。程序是指按事先设计的功能和性能要求执行的指令序列数据是指使程序能正常操纵信息的数据结构文档是与程序开发、维护和使用有关的图文资料,2023/3/10,1.1软件、软件产业与软件企业,软件作为一个产品或服务,与其他产品相比具有很大的区别,具体表现出如下特点:(1)软件是信息产品
2、,具有无形性、抽象性、可复制性和共享性。与硬件相比,软件是一种逻辑实体而非物理实体,它可以记录在纸面上,保存在计算机的软、硬、光盘里,但必须通过使用、测试、分析等途径才能了解它的功能、性能和其它特性。,2023/3/10,1.1软件、软件产业与软件企业,(2)软件的生产过程独特,经历规划与计划、需求分析、设计、编程、测试、运行和维护等环节来形成产品使用的,而不像硬件的生产过程是以原材料器件采购、运输、库存开始,然后经规划、设计、研制、生产、销售、运行与维护来形成产品使用的。(3)软件产品是知识的结晶,创新已成为软件产品发展的动力和企业竞争的焦点。产品周期短,技术更新快,集成化程度高,已成为软件
3、产品的重要特征。,2023/3/10,1.1软件、软件产业与软件企业,(4)软件生产基于开发人员的思维与认识的片面性,经验与技术的不足,长时间的开发劳动造成的心理和体力的疲乏以及与用户的相互沟通的不足等原因,软件在提交使用时,各种潜在的固有差错是无法避免的,且这种潜在的固有差错数将随着软件规模的增大而增大。(5)软件的成本构成与硬件产品相比,无需库存成本。由于软件可以通过因特网进行销售,故其销售成本较低,且伴随着软件向服务方向的转移,开发成本的比例越来越低,而使用维护成本的比例越来越高。,2023/3/10,1.1软件、软件产业与软件企业,(6)软件产品与硬件相比而言,市场的进入壁垒一般较低,
4、软件企业竞争十分激烈,这就迫使软件企业不能固守传统产品,而要不断地推陈出新,更新换代。,2023/3/10,1.1软件、软件产业与软件企业,1.1.2 软件产业软件产业是指软件产品和软件服务相关的一切经济活动和关系的总称。软件产业包括软件产品和软件服务两大部分软件产品:系统软件、支撑软件和应用软件软件服务:信息系统集成,信息系统运行和维护服务,数据中心与资源外包服务,数据加工与处理服务,软件测试服务,信息系统咨询和评估服务,信息系统监理,软件与信息系统管理与人才工程化培训等,2023/3/10,1.1软件、软件产业与软件企业,软件产业具有如下特征:(1)高技术、高附加价值与高效益。软件产业是典
5、型的技术密集、知识密集的高技术产业。(2)与其他产业的高度关联性。软件产业由于其“服务性”的宗旨,其服务领域涉及到国民经济的任何一个部门。(3)国际化特征明显。一批跨国公司正在兴起,并领导着国际软件市场和软件技术标准的发展,同时也为国际间的软件加工和业务外包提供了空间。,2023/3/10,1.1软件、软件产业与软件企业,(4)专业化分工越来越细。(5)规模经济效益日益明显。软件产业的服务化趋势越来越明确,产业集中度越来越高,规模经济效益正在日益明显。以美国为代表的少数国家掌握着软件的核心技术和知识产权,处于产业发展的中心地位,处于价值链的高端。,2023/3/10,1.1软件、软件产业与软件
6、企业,国际软件产业在经过不断的产业创新与发展后,分别形成了以下四种具有特色的软件产业类型:(1)美国的技术与服务领导型;(2)印度的国际加工服务型;(3)爱尔兰的生产本地化型;(4)西欧和日本的嵌入式系统开发型。,2023/3/10,1.1软件、软件产业与软件企业,1.1.3 软件企业及其管理从市场角度出发,软件企业可分为软件产品企业和软件服务企业两类软件更像一个特殊的项目(Project)。而软件企业管理就可用项目管理(Project Management)的理论和方法来进行指导。,2023/3/10,1.2 软件工程1.2.1 软件工程概念,软件工程的诞生源于“软件危机”软件危机是指在计算
7、机软件开发中的一系列问题。软件技术问题:如怎样开发软件?怎样维护现有的、容量又在不断增加的软件?我们怎样做才能满足人类对软件需求的不断增长等等经济问题:如软件开发过程中成本和进度估计往往不精确,软件质量与可靠性的概念十分可疑,如何来处理一些相互对立的软件目标,如成本、工期、可靠性等,软件测试究竟需要多长时间才能投放市场等等。,2023/3/10,1.2 软件工程,软件工程是一门适用于软件开发全过程的系统工程方法论的学科,其目的是为满足人们对软件生产的成本、质量、时间(工期)和效率、效益和管理等的需求。根据系统工程的理论,任何一个工程学科,其方法论均可划分为三大部分:工程技术学方法、工程经济学方
8、法和工程管理学方法。,1.2.1 软件工程概念,2023/3/10,1.2 软件工程1.2.1 软件工程概念,软件项目与硬件产品生产一样,为了获得高效率的生产和质优、价低的产品,必须运用科学的理论与方法,如系统工程、工程经济学、项目管理的理论与方法来指导软件开发的全过程,并进行必要的定量分析与评价。软件工程经济学中所涉及的软件基本度量包括:软件规模、软件复杂性、软件可靠性、软件安全性与软件质量等的度量。,2023/3/10,软件作为一个特殊产品与其他产品一样有其自生到灭的生存过程。通常我们将软件以概念形成开始,经过开发、使用和维护,直到最后退役的全过程称为软件的生存周期(Software li
9、fe Cycle)。,1.2 软件工程 1.2.2 软件生存周期、开发模型与任务分解,2023/3/10,基于产品质量控制的需求,人们需要对上述各阶段的工作成果进行评价,因而除可行性研究评审外,人们还需要作单元测试与评价,组装测试与评价,集成测试(确认测试)与评审,运行测试与评价等活动。有关上述各阶段活动的相互关联见下图。,1.2 软件工程 1.2.2 软件生存周期、开发模型与任务分解,2023/3/10,1.2 软件工程 1.2.2 软件生存周期、开发模型与任务分解,2023/3/10,软件生存周期中各阶段活动的关联图示称为软件的开发模型。,1.2 软件工程 1.2.2 软件生存周期、开发模
10、型与任务分解,2023/3/10,1.2 软件工程 1.2.2 软件生存周期、开发模型与任务分解,螺旋模型,2023/3/10,工作任务分解所形成的层次结构被称为工作(任务)分解结构(Work Breakdown Structure,WBS),1.2 软件工程 1.2.2 软件生存周期、开发模型与任务分解,2023/3/10,1.2 软件工程 1.2.2 软件生存周期、开发模型与任务分解,2023/3/10,1.2 软件工程 1.2.2 软件生存周期、开发模型与任务分解,2023/3/10,1.2.3软件规模度量,目前在软件工程界中影响较大的软件规模度量单位有程序源代码行(Lines Of C
11、ode.,LOC)和功能点(Functional Point,FP)两种。,2023/3/10,1.2.3软件规模度量,功能点计算方法的基本思想为首先计算软件的五个基本信息量:外部输入数(External Input.,EI)、外部输出数(External Output.,EO)、外部查询数(External Query.,EQ)、内部逻辑文件数(Internal Logical File.,ILF)、外部接口文件数(External Interface File.,EIF)的加权和CT,然后对其通过14个环境复杂性因子作如下修正。,2023/3/10,1.2.3软件规模度量,2023/3/1
12、0,1.2.3软件规模度量,wj为第j个基本信息量dj的加权系数或复杂程度系数;d1即为外部输入数(EI),它包括了每个用户为软件提供的输入参数个数(不包括查询数),体现了软件面向用户服务的数量特征;d2即外部输出数(EO),它指软件为用户提供的输出参数个数,如报告数、屏幕帧数、错误信息个数等;d3即外部查询数(EQ),它规定一个联机输入确定一次查询,软件以联机输出的形式实时地产生一个响应,统计各种查询个数;d4即内部逻辑文件数(ILF),它要求统计内部逻辑主文件数;,2023/3/10,1.2.3软件规模度量,d5即外部接口文件数,通常指所有机器可读的界面(如磁盘或磁带上的数据文件),利用此
13、接口界面可以将信息从一个系统传送到另一个系统;CT称为软件的功能数,PCA称为系统功能的复杂性调整因子。,2023/3/10,1.2.3软件规模度量,2023/3/10,1.2.3软件规模度量,2023/3/10,1.2.3软件规模度量,例1.1 某软件根据需求分析,对照表1.11的各项要求,得到环境复杂性因子,五个信息量的数值dj及其对应权系数wj之取值见表1.12,于是由(1.1)式可得软件系统其需求功能点为:,2023/3/10,1.2.3软件规模度量,若功能点与源代码行的转换率为=15 kLOC/FP则该软件系统有规模LS=FP15=8210LOC=8.21 kLOC,2023/3/1
14、0,1.2.4 软件复杂性度量,复杂性是软件的重要属性之一,任何一个有经验的程序员都知道。对于同种规模而复杂性不同的软件,其花费的成本和工期会有很大的差异。如下的六个方面可作为软件复杂性描述的依据:(1)理解程序的难度;(2)纠错、维护程序的难度;(3)向他人解释程序的难度;(4)按指定方法修改程序的难度;(5)根据设计文件编写程序工作量的大小程度;(6)执行程序时需要资源的多少程度。,2023/3/10,1.2.4 软件复杂性度量,20世纪70年代M.Halstead从统计学和心理学的角度来研究软件复杂性问题,提出用程序中可执行代码的词汇量(操作符与操作数)来计算和分析软件复杂性的方法,并在
15、此基础上还可将其转换成软件规模的测算。,2023/3/10,1.2.4 软件复杂性度量,通过数学推导,可以证明程序语言的符号长度(又称词汇总数)N可近似地由下式确定:N=n1 lbn1+n2 lbn2(1.2)式中,n1为程序中不同操作符的个数;n2为不同操作数的个数;lbn即log2n。此外,利用转换公式,2023/3/10,1.2.4 软件复杂性度量,还可将程序语言的符号长度N转换成源程序行数L(不含注释性语句),其中C为转换系数,它与所使用的程序设计语言有关,同时也与软件类型以及程序员的编程风格等因素有关,可以通过对历史数据的统计分析来估计。在一般情况下,FORTRAN语言编程时有C=7
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 经济学

链接地址:https://www.desk33.com/p-235743.html