软件工程经济学

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件工程经济学
产品分层体系
软件工程经济学
活动分层体系
软件工程经济学
软件工作分解结构实例
软件工程经济学
第4章 基本COCOMO模型
• 根据软件产品中交付的源指令千行数(KDSI), 来估算最普通软件产品开发所需人月(MM)的 公式: MM=2.4(KDSI)1.05
• 以月为单位来估算开发进度(TDEV)的公式 TDEV=2.5(MM)0.38
软件工程经济学
软件工程定义
• 软件:是与系统,特别是计算机系统相关的一整 套程序、过程、数据和相关文档。
• 工程:是科学与数学的应用,通过这种应用使自 然界中物质属性和能源在结构、机械、产品、系 统和过程方面变得对人类有用。
• 软件工程:软件工程是科学与数学的应用,通过 这种应用,借助计算机程序、过程和相关文档, 发挥计算机设备的能力,对人类有用。
• 答案是双重的: • 不考虑人与经济因素,结果是我们负担不起的。前面 的两个例子已经揭示了因为在软件工程中忽视了人与 经济因素而带来的典型的令人不满的结果。
• 通过在软件工程控制循环中嵌入分而治之的编程活动, 并在控制循环中包括根据一个更为全面的目标结构对 编程产品进行定期的评审与迭代,能在很大程度上保 留两种方法的优势。
软件工程经济学
GOALS方法
• 软件工程的GOALS方法(生命周期软件面向目标 方法)是一个过程,通过它,软件工程目标结 构能用于指导我们如何详细说明、开发和维护 软件
• GOALS是一种目标管理方法,其中的目标软件工 作目标结构中的多元目标构成
• 这样一来,GOALS方法的好处就与其他目标管理 方法的好处相类似
• 4.COCOMO估算包括了上述假设3中说明的在项目 里所有直接计费劳动力的活动。因此,它们应包 括项目管理员和程序库管理员,但不包括计算机 中心操作员、人事部门职员、秘书、高层管理人 员、房屋管理员等等。
软件工程经济附学加的定义和假设
• 5.一个COCOMO人月由152小时的工作时间组成。 我们可以发现这与除去节日、假期和病假外余 下的实际月平均工作时间是一致的。为了将以 人月为单位的COCOMO估算转换成其他单位,使 用如下方法:
• 5.编码 完整的并经过验证的程序组件集 • 6.集成 由各软件组件组成的能完成适当功能
的软件产品
• 7.实施 全功能的可运行的软硬件系统,包括 如程序、数据转换、安装和培训之类的目标
• 8.维护 软硬件系统全部功能的不断更新。每 次更新都重复这个子目标
• 9.淘汰 产品执行的功能清晰地过渡给继任者 (如果有的话)
软件工程经济学
COCOMO模型的版本
• 一般将COCOMO模型分为三个层次的模型: • 基本COCOMO模型:用于系统开发的初期,估算 整个系统的工作量(包括软件维护)和软件开发 所需要的时间; • 中间COCOMO模型:用于估算各个子系统的工作 量和开发时间; • 详细COCOMO模型:用于估算独立的软部件,如 子系统内部的各个模块。
• 我们分别如下定义验证与确认: • 验证:确定软件产品与其说明书之间对应的真 实性。
• 确认:确定软件产品对于其操作任务是否适合 或者是否有价值。
软件工程经济学
瀑布模型经济学的两个前提
• 实现子目标瀑布模型的经济学基本原理是基于 如下两个前提的: • 为了得到成功的软件产品,我们无论如何必 须实现每个阶段所有的子目标。 • 任何与模型不同的子目标实现顺序,都会使 所构造的软件产品没那么成功。
软件工程经济附学加的定义和假设
• 2.COCOMO成本估算所涵盖的开发期,开始于产品 设计阶段之初(对软件需求评审的成功完成;见 表3-1),并且结束于集成与测试阶段之末(软件 验收评审的成功完成)。其他阶段的成本和进度 单独进行估算。
• 3.COCOMO模型成本估算包含并且仅仅包含图3-6b 所示的那些软件工作分解结构(WBS)所显示的活 动。因此,开发估算包括管理和文档编制的工作 量,但不包括在开发期间发生的一些工作量,如 用户培训、安装计划和移植计划。
• 根据材料经济学方法做出的决策,将会带来诸如 对有限自然资源的损耗等危险的长期后果,或者 迫使人们从事的毫无意义的重复工作,如流水线 之类的工作。
• 软件工程经济学强调人类经济学方法,这是很重 要的,将纯定量的面向货币的材料经济学方法进 行扩展,从而使人们在做经济决策时,将对人际 关系的定性考虑包括进去。
• 材料经济学基于这样一个假设 • 如果人与机构都遵循材料经济学的指导原则行事,那 么最大多数的人将受益
• 主要优点 • 使决策问题分析与解决起来相对简单,能相对方便地 执行定量计划和控制活动
软件工程经对济材学 料经济学的质疑
• 近年来,很多人开始质疑这个假设的有效性
• 有证据显示:根据材料经济学方法做出的决策, 将会带来诸如对有限自然资源的损耗等危险的 长期后果,或者迫使人们从事的毫无意义的重 复工作,如流水线之类的工作。
• 另一个破坏传统的材料经济学假设有效性的趋势 是:
• 从面向生产为主的经济,正在向以面向服务为 主的经济转变的全球趋势。服务的基本目标是 满足人们的需求,很显然,材料经济学方法需 要进行扩展,应该考虑到评价服务有效性时所 涉及的更为定性的人际关系方面。
软件工程经济学
软件工程的核心作用
• 软件工程在向面向服务经济的过渡中起着核心 作用
软件工程经济学
软件工程经济学
蔡坚勇
软件工程经济学
第1章 为什么需要软件工程经济学
• 两个案例的主要结论是: • 好的软件工程不仅关注编程, • 而且还要协调人与经济的因素。
软件工程经济学
第一个案例得到的经验
• 当我们开始面临实际的软件工程情况时,就会发 现它们不仅包括编程问题,也包括非编程问题
• 如操作问题、预算问题、进度问题,还有在决 定用户需求的相对优先级时遇到的问题。
软件工程经济学材料经济学
• 材料经济学是纯粹的定量经济学决策方法 • 最初是在18、19世纪由Adam Smith等人提出,在20世 纪由John Keynes等人精炼为高度形式化的学科
• 材料经济学的主要指导原则 • 所有的决策标准都可由货币等价物来表示 • 机构应该根据利润最大化的原则做出决策
软件工定wenku.baidu.com义经济中学包含的两个关键概念
• 一是我们对软件的定义中,除了计算机程序之外, 还包括很多东西
• 因而,要成为一个好的软件工程师意味着除了 学会如何编写计算机程序之外,还要学会很多 其他技能。如学习为计算机系统编制好的文档、 数据库、运行过程等所需的技巧。
• 二是“对人类有用” • 从实践的观点来看,这个短语说明作为软件工 程师,应承担起责任以确保软件产品真正对人 类有用。
软件工程经济学 两个子目标
• 要在软件工程中获得完全成功,必须注意两个 主要的子目标: • 实现一套成功的软件产品。 • 执行一个成功的软件开发与维护过程。
• 每个子目标都有三个相似的组成部分: • 人际关系 • 资源工程 • 程序工程
• 成功的软件工程是在这些子目标间实现适当平 衡的结果,即软件产品和软件过程之间的平衡。
软件工程经济学 软件趋势
• 软件是一个巨大的而且越来 越昂贵的产品。
• 软件对人类福利产生巨大的 而且日益增长的影响。
• 软件需求的增长很大程度上 是源于这样一个事实:
• 计算机硬件变得越来越便 宜、可靠和种类繁多,人 们发现对于机械性工作自 动化能够带来越来越多的 优点。
软件工程经济软学件工程目标结构
• 软件工程经济学强调人类经济学方法,这是很 重要的,将纯定量的面向货币的材料经济学方 法进行扩展,从而使人们在做经济决策时,将 对人际关系的定性考虑包括进去
软件工程第经2济章学 软件工程目标
• 编程专家总是将较大的系统进行简化或者分而治之,这 样做能够使大多数编程问题易于处理。
• 如果这样做是正确的(实际上也的确如此),那么我们 如何证明:再在力求系统简单的同时考虑会使软件工程 工作变得更复杂的人与经济因素是正确的?
软件工程经济学
WBS
• 为达到项目预算的计划和控制目的,把项目活 动元素组成成一定的层次结构是非常有用的, 这种层次结构被称之为工作分解结构(WBS)
软件工程经济学
分层体系
• 软件WBS包括两个分层体系,项目能以最适当 的方式将两个分层体系关联起来。
• 这两个分层体系是: • 产品分层体系,它表示各种软件组成部分 (例程、模块、子系统等)如何协调地构成 整个软件系统。 • 活动分层体系,它表示处理软件组件的各项 活动。
• 3.产品设计 产品的整体软硬件体系结构、控制结 构、数据结构及其他必要成分(如用户手册草稿和 测试计划等)的完整并经确认的说明书。
• 4.详细设计 每一个程序组件(≤100行源指令的例 行程序)的控制结构、数据结构、界面关系、规模、 关键算法、假设等的完整并经过确认的说明书。
软件工程经济学
子目标的定义(2/3)
Software
• 定义: • 软件工程的GOALS方法是一个过程,通过它, 软件工程目标结构能用于指导我们如何详细 说明、开发和维护软件
软件工程经济学
第3章 软件生命周期中的阶段及其活动
• 软件生命周期 的瀑布模型
软件工程经济学
瀑布模型主要特点
• 瀑布模型主要有如下的全局性特点: • 每一阶段都以验证与确认(V&V)活动作为 结束,其目的是尽可能多地消除本阶段产品 中存在的问题。 • 在随后阶段里,尽可能对前面阶段的产品进 行迭代。
软件工程经子济学目标的定义(3/3)
• 实现上述这些有序子目标的过程,一定会涉及到 两个额外的程序工程子目标——验证与确认(V&V) 和配置管理(CM)——在软件生命周期的每个阶 段中都要使用到它们。对其作用描述如下:
• 验证与确认(Verification and Validation) 实现每一个程序工程生命周期子目标的一个重 要组成部分,就是对它的中间软件产品能否确 实满足目标的验证与确认。
软件工程经济学
COCOMO模型的应用基础
• 软件生命周期阶段和活动的定义 • 附加的定义和假设
软件工程经济附学加的定义和假设
• 1.基本的成本驱动因子是项目开发中交付的源指 令(DSI)数。其定义如下: • 交付 这个术语通常意味着必须排除不可交付 的支持软件,如测试驱动程序。然而,如果这 些软件的开发需要付出与交付软件相同的努力, 有其自身的评审、测试计划、文档等等,那么 它们也应该计算在内。 • 源指令 该术语包括由项目组成员编写的、并 能又预处理程序、编译程序和汇编程序联合转 换为机器人代码的所有程序指令。它不包括注 释卡片和未经修改的公用软件。它包括作业控 制语言、格式语句和数据申明。指令被定义为 多行代码或卡片穿孔码。因此,一行中包含两 条或更多条的源语句,应该算作一条指令
• 绕过非编程问题,只关注编程,通常会导致随 后的诸多麻烦
• 经济学编程方案的主要价值在于,它使系统分析 员能够从多个方面看问题
• 从经济学角度分析软件工程的各种情况,能够得 到更加令人满意的编程方案
软件工程第经二济学个案例得到的经验
• 运用经济学原理时,不仅要从材料经济学角度考 虑问题,还要从人类经济学(即社会经济学)角度 考虑问题。
软件工程经济学
GOALS的主要好处
• 为产品和过程目标建立明确的个人承诺 • 为检查目标的完备性提供一个框架 • 为达成目标建立起经过良好描述的子目标顺序 • 如果某些子目标没有达成,能提供较早的警告 • 为调和定量与定性目标提供检查点
软件工程经济学
GOALS
• 生命周期软件的面向目标方法 • Goal-Oriented Approach to Life-cycle
• 人时:乘以152
• 人日:乘以19
• 人年:除以12
• 6.COCOMO估算假设项目能够得到开发人员和 客户两方面的良好管理。例如,非生产性的闲 散时间由管理员和用户控制得很小。
软件工程经子济学目标的定义(1/3)
• 瀑布模型生命周期中一个阶段的成功完成,与软件过程 的程序工程目标序列中对应目标的实现相一致。
• 这些子目标定义为以下活动的实现:
• 1.可行性 定义软件产品的首选概念,并确定其生 命周期可行性以及与其它可选概念相比较的优势。
• 2.需求 对软件产品所需功能、接口和性能要求的 完整并经确认的说明书。
相关文档
最新文档