• 1. 第二章 可行性研究与规划13份WPF经典开发教程 http://download.csdn.net/album/detail/1115 C#资料合辑二[C#桌面编程入门篇] http://download.csdn.net/album/detail/957 C#资料合辑一[C#入门篇] http://download.csdn.net/album/detail/669 [Csharp高级编程(第6版)](共8压缩卷) http://download.csdn.net/album/detail/667 10个[精品资源]Java学习资料合辑[一] http://download.csdn.net/album/detail/663 10个C#Socket编程代码示例 http://download.csdn.net/album/detail/631 6份GDI+程序设计资源整合[全零分] http://download.csdn.net/album/detail/625 更多免费资源 http://download.csdn.net/user/cleopard
  • 2. 本章主要内容2.1 系统分析 2.2 可行性研究 2.3 系统流程图 2.4 软件规划 2.5 成本效益分析软件计划是软件工程的第一阶段,也是软件开发过程的准备阶段,该阶段的主要任务是对问题求解进行定义,对问题可行性进行分析,对待开发项目进行论证,最终决定该项目的开发价值,制定软件项目计划。 项目计划中包含的内容应有对项目开发所需的资源、费用等开发成本进行估算,设计项目的开发方案,安排时间进度,综合以上各因素,对该项目的可行性进行分析,给出可行性分析报告。
  • 3. 2.1 系统分析基于计算机的系统的系统元素的分析,包括硬件、软件、人、数据库、文档和过程。 系统分析的目标 识别用户要求 评价系统的可行性,进行经济和技术分析 把功能分配给硬件、软件、人、数据库和其它系统元素 建立成本和进度限制 生成系统规格说明
  • 4. 2.1 系统分析分析员必须考虑以下问题: 识别希望的功能和性能范围。 确定系统的功能、性能、约束和接口。 功能和性能 可靠性和质量 总的系统目标 成本与进度限制 制造需求 市场与竞争情况 有效的技术 将来可能的扩充
  • 5. 2.2 可行性研究从经济可行性、技术可行性、用户操作可行性、社会可行性等方面评价系统是否值得做,是否能做。 可行性研究的目的 用最小的代价,在尽可能短的时间内(一般占总工作量的5%到10% )确定能否解决问题,以及是否值得解决的问题 。 可行性研究的目的是“做还是不做”,而非“如何去做”。可行性研究必须从系统总体出发,对技术、经济、财务、商业以至环境保护、法律等多个方面进行分析和论证,以确定建设项目是否可行,为正确进行投资决策提供科学依据。 项目的可行性研究是对多因素、多目标系统进行的不断的分析研究、评价和决策的过程。它需要有各方面知识的专业人才通力合作才能完成。
  • 6. 2.2 可行性研究2.2.1 可行性研究的任务 可行性分析实质上是一次简化的系统分析和设计过程, 在较高层次上,以抽象的方式,进行系统分析和设计。 了解客户的要求及现实环境,通常从技术、经济、操作和社会因素等几个方面研究并论证软件项目的可行性,编写可行性研究报告,制定初步项目开发计划。
  • 7. 2.2 可行性研究技术可行性 度量一个特定技术信息系统解决方案的实用性及技术资源的可用性考虑的问题。 对要开发项目的功能、 性能和限制条件进行分析, 确定在现有的资源条件下,技术风险有多大,项目是否能实现,这些即为技术可行性研究的内容。 资源包括已有的或可以搞到的硬件、软件资源,现有技术人员的技术水平和已有的工作基础。 开发人员在评估技术可行性时, 一旦估计错误, 将会出现灾难性后果。
  • 8. 2.2 可行性研究技术可行性常常是最难解决的问题,因为项目的目标、功能和性能比较模糊。一般要考虑的情况包括: 开发的风险 在给出的限制范围内, 能否设计出系统并实现必须的功能和性能? 资源的有效性 参加项目的开发人员是否存在问题? 可用于建立系统的软件、硬件资源是否具备?软件工具实用性? 技术方案 相关技术的发展是否支持这个系统?使用技术解决方案的实用化程度?合理化程度?技术可行性分析可以简单地表述为: 做得了吗?做得好吗?做得快吗?
  • 9. 2.2 可行性研究经济可行性 度量系统解决方案的性能价格比 进行开发成本的估算以及了解取得效益的评估, 确定要开发的项目是否值得投资开发。 价值和成本的关系 质量与价值、成本的关系 价值/成本的均衡 成本/效益分析 有形成本、效益 无形成本、效益 短期/长期利益
  • 10. 2.2 可行性研究操作可行性 操作可行性一般是只目标系统的操作在这个组织内部是否行的通。 主要是研究用户组织的结构、工作流程、管理模式及规范是否适合目标系统的运行,是否互不相容。现有的人员素质能否胜任对目标系统的操作。如果进行培训,时间是多少?成本如何? 操作可行性一般涉及以下几方面内容: 用户类型:外行型/熟练型/专家型 操作习惯 使用单位的计算机使用情况 使用单位的规章制度
  • 11. 2.2 可行性研究社会环境可行性 社会可行性涉及的范围广,但至少包括三种因素: 市场:市场又分为未成熟的市场、成熟的市场和将要消亡的市场。 政策:政策对软件公司的生存与发展影响非常大。 法律:开发项目是否会在社会上或政治上引起侵权、破坏或其它责任问题,它包括合同、责任、 侵权和其他一些技术人员常常不了解的陷阱等。 专利法 著作权法 计算机软件保护条例
  • 12. 2.2 可行性研究2.2.2 可行性研究的步骤 具体探讨所定义的问题是否有可行的解。 一般步骤: ① 确定项目规模和目标; ② 研究当前正在运行的系统; ③ 建立新系统的高层逻辑模型; ④ 导出和评价各种方案 ; ⑤ 推荐可行的方案; ⑥ 编写可行性研究报告。
  • 13. 2.2 可行性研究典型的可行性研究步骤 (1) 确定项目规模和目标 分析员对有关人员进行调查访问,仔细阅读和分析有关的材料,对项目的规模和目标进行定义和确认,清晰地描述项目的一切限制和约束,确保正在解决的问题是要解决的问题。 (2)研究正在运行的系统 正在运行的系统可能是一个人工操作的,也可能是旧的计算机系统,需要开发一个新的计算机系统来代替。 现有系统是信息的重要来源。研究其基本功能,存在问题,运行费用,以及对新系统功能、运行费用要求等。 收集、研究和分析现有系统的文档资料,实地考察现有系统,访问有关人员,然后描绘现在系统的高层系统流程图,与有关人员一起审查该系统流程图是否正确。系统流程图反映了现有系统的基本功能和处理流程。
  • 14. 2.2 可行性研究(3)建立新系统的高层逻辑模型 根据对现有系统的分析研究,逐渐明确新系统的功能、处理流程以及所受的约束,然后使用建立逻辑模型的工具——数据流图和数据字典来描述数据在系统中的流动和处理情况。 注意,现在还不是软件需求分析阶段,不是完整、详细的描述,只是概括地描述高层的数据处理和流动。 (4)导出和评价各种方案 建立了新系统的高层逻辑模型之后,要从技术角度出发,提出实现高层逻辑模型的不同方案,即导现若干较高层次的物理解法。 根据技术可行性、经济可行性和社会可行性对各种方案进行评估,去掉行不的解法,就得到了可行的解法。
  • 15. 2.2 可行性研究(5)推荐可行的方案 根据可行性研究的结果, 决定项目是否值得开发。 若值得开发,说明可行的解决方案及原因和理由;项目从经济上看是否合算。 要求分析员对推荐的可行方案进行成本—效益分析。 (6)草拟开发计划 项目开发的工程进度表。 所需的开发人员、资源。 估算成本。 (7)编写可行性研究报告,提交审查 依据可行性研究过程的结果形成可行性研究报告。 提请用户和使用部门仔细审查,从而决定该项目是否进行开发,是否接受可行的实现方案。 可行性研究报告最后必须提出一个明确的结论,可能是:项目开发可立即开始;项目开始的前提是具备某些条件或对某些目标进行修改;或在技术、经济操作或社会某些方面不可行,立即终止项目所有工作。
  • 16. 2.2 可行性研究2.2.3 可行性研究文档 (1)引言 说明编写本文档的目的, 项目的名称、 背景, 本文档用到的专门术语和参考资料。 (2)可行性研究前提 说明开发项目的功能、 性能和基本要求,达到的目标,各种限制条件,可行性研究方法和决定可行性的主要因素。 (3)对现有系统的分析 说明现有系统的处理流程和数据流程、工作负荷,各项费用支出,所需各类专业技术人员和数量, 所需各种设备, 现有系统存在的问题。
  • 17. 2.2 可行性研究(4)所建设系统的技术可行性分析 对所建设系统的简要说明,处理流程和数据流程,与现有系统比较的优越性, 采用所建议系统对用户的影响,对各种设备、现有软件、开发环境和运行环境的影响,对经费支出的影响,对技术可行性的评价。 (5)所建议系统的经济可行性分析 说明所建设系统的各种支出,各种效益,收益/投资比,投资回收周期。
  • 18. 2.2 可行性研究(6)社会因素可行性分析 说明法律因素对合同责任、 侵犯专利权和侵犯版权等问题的分析,说明用户使用可行性是否满足用户行政管理、工作制度和人员素制裁的要求。 (7)其他可选方案 逐一说明其他可选方案, 并说明未被推荐的理由。 (8)结论意见 说明项目是否能开发, 还需什么条件才能开发,对项目目标有何变动等。
  • 19. 2.3 系统流程图2.3.1 系统流程图 系统流程图是描述物理系统的工具。 物理系统,就是一个具体实现的系统,也就是描述一个单位、组织的信息处理的具体实现的系统。 在可行性研究中,可以通过画出系统流程图来了解要开发的项目的大概处理流程、 范围和功能等。 系统流程图可用图形符号来表示系统中的各个元素, 例如,人工处理、数据处理、数据库、文件和设备等。它表达了系统中各个元素之间的信息流动的情况。
  • 20. 2.3 系统流程图系统流程图不仅能用于可行性研究,还能用于需求分析阶段。 画系统流程图时,首先要搞清业务处理过程以及处理中的各个元素,同时要理解系统的流程图的各个符号的含义, 选择相应的符号来代表系统中的各个元素。所画的系统流程图要反映出系统的处理流程。 在进行可行性研究过程中,要以概括的形式描述现有系统的高层逻辑模型,并通过概要的设计变成所建议系统的物理模型, 可以用系统流程图来描述所建议系统的物理模型。
  • 21. 2.3 系统流程图2.3.2 系统流程图的符号基本符号符号名称说明处理能改变数值或数据位置的加工部件。例如,程序、处理机、人工加工等输入/输出表示输入或输出(或既输入又输出),是一个广义的不指明具体设备的符号连接指转到另一部分或从其他部分转来,通常在同一页上换页连接转到另一页图上或从另一页转来数据流用来连接其他符号,指明数据流动方向
  • 22. 2.3 系统流程图系统符号符号名称说明卡片卡片输入或输出,或卡片文件文档通常表示打印输出,也可以是打印终端输入数据联机存储表示任何种类的联机存储,包括磁盘、软盘、光盘等磁盘磁盘输入输出,或表示可存储在磁盘上的文件和数据手动输入人工输入数据的脱机处理,如填写表格手动操作人工完成的处理,如会计在工资支票上签名显示显示终端或者类似部件,也可用于输入或输出,或既输入又输出
  • 23. (本页无文本内容)
  • 24. 2.3 系统流程图系统流程图实例1 某装配厂有一座存放零件的仓库,其库存零件管理的业务流程是: 零件数量及库存量临界值等数据记录在库存清单主文件中。当零件数有变化时,及时修改库存清单主文件;少于临界值时,报告给采购部门订货;规定每天向采购部门送一次订货报告。库存清单程序订货 信息报告生产程序订货报告库存清单 主文件输入变化微机处理 库存量每次变化,通过键盘输入到计算机; 库存清单程序更新磁盘上的库存清单主文件,必要的订货信息写到磁带上; 每天报告生成程序读一次磁带,打印出订货报告。
  • 25. 2.3 系统流程图系统流程图实例2 某高校考试业务流程: 命题人员依大纲在试题库中抽取考题,形成试卷; 教务部门印制试卷,安排日程及监考人员; 根据日程安排学生考试,完成答卷; 教师批改试卷,成绩交成绩管理子系统处理命题教学大纲试题库考试试题印制试卷试卷学生考试监考答卷教师批改学生成绩成绩管理安排日程 组织监考考试安排
  • 26. 系统流程图例3 淘宝网上购物
  • 27. 2.3 系统流程图分层 软件工程的一个基本原则是采用分层次抽象,自顶向下、逐层细化的办法控制软件开发过程的复杂性。 面对复杂系统时,较好的办法是分层次描绘。 先绘制高层次系统流程图,描述系统概貌,在对每个关键功能详细描述。 从抽象到具体逐步深入的了解复杂系统。总之,绘制系统流程图的过程是全面了解系统业务处理概况的过程,是作进一步分析的依据。 利用系统流程图,可直接模拟出计算机处理部分,还可用于分析业务流程的合理性。 系统流程图还是系统分析员、管理人员和业务操作人员相互交流的工具。
  • 28. 2.4 制定软件计划2.4.1 确定软件计划 以可行性报告为基础,由软件人员和用户共同确立软件的功能和限制,提出软件计划任务书。 要确立工作范围:要用到的资源;要花的工作量和应当遵循的制度等。 对软件开发总体思想的一份简洁的文档说明,通常使用自然语言描述,必要时辅以图表。一般不涉及特别专业的知识,通俗易懂。 计划的目标是为项目负责人提供一个框架,使之能合理地估算软件项目开发所需的资源 、经费和开发进度,并控制软件项目开发过程按此计划进行。 一份典型的软件计划任务书内容包括软件工作范围、资源环境、进度安排、软件成本等基本内容。
  • 29. 2.4 制定软件计划(1)软件工作范围 对该软件项目的综合描述,对软件的功能、性能、可靠性和接口等方面的需求进行描述,形成一个总体的任务说明,作为指导软件开发各阶段工作的依据。具体包括: (1)项目目标:项目完成时将取得的成果。 (2)主要功能:重点功能描述,尽量避免细节。 (3)性能限制:时间约束、存储约束、使用环境。 (4)系统接口:考虑软件与其他系统的交互。 (5)特殊要求:可靠性、安全性等。 (6)开发概述:总体,概括。
  • 30. 2.4 制定软件计划(2)环境资源 分析软件开发所需的资源情况,包括人力资源、硬件和软件的分配及使用情况。可从资源的基本状况描述、对资源要求的日程安排及对资源应用的持续时间三个方面来说明。 ①人员资源:项目负责人、管理人,系统分析员。程序员。在软件工程的不同阶段,对人员有不同的要求,在项目需求分析和总体设计阶段,主要是高级技术人员参加;进入系统详细设计和编码阶段,主要由程序员承担设计和编码工作 ;而测试阶段,各阶层技术和管理人员都要求参加。高低计划需求 分析总体 设计详细 设计编码模块 测试整体 设计确认管理人员高级技术人员初级技术人员
  • 31. 2.4 制定软件计划②硬件资源:主要包括开发系统、目标机器和新系统的其他部件。从成本效益出发,目标机器应该是满足用户需求前提下的最低限度配置。 ③软件资源:系统开发、运行要求的支持软件系统,这些软件支持软件开发,有些甚至可以成为新系统的一部分。选择支持软件的原则如下: 该支持软件是软件开发中必不可少的资源; 借助该软件可显著提高软件质量,减少开发工作量;但获得软件的费用应该小于等于不使用该软件的费用。 若软件资源需要部分修改才能使用,则需要考虑修改可能带来的费用。如果修改费用带来的收益大于开发同等软件的所需费用,则使用;否则考虑自行开发。 所有软件资源的获取手段应该合法、有效。
  • 32. 2.4 制定软件计划(3)进度安排 进度安排是软件计划中一项困难的任务,进度安排的好坏往往会影响整个项目的按期完成。较好的情况是软件开发项目的进度安排从最佳利用各种开发资源的角度出发,估计各开发阶段所需的时间,最后得到总的工作时间,这是合理的进度安排。 实际中,往往限定了软件最终交付日期,必须在规定的时间内完成任务,计划者必须综合考虑各种因素,合理组织、分配各种可用资源,尽可能并行安排工作。 对于较大软件项目的进度计划,为了表现各项任务之间的进度的相互依赖关系,可以采用下面介绍的几种工具来描述计划进度,即一般的表格工具、甘特图、网络计划法等。
  • 33. 2.4 制定软件计划①一般的表格工具 采用一般常用的表格描述进度表非常简单明了。下图就直观给出一个需要一年时间开发的软件项目各项子任务的进度安排。 月份 任务 1 2 3 4 5 6 7 8 9 10 11 12需求分析总体设计详细设计编码软件测试
  • 34. 2.4 制定软件计划②甘特图(Gantt Chart) 甘特图是先把任务分解成子任务,再用水平线段描述各个任务的工作阶段;线段的起点和终点分别表示任务的开始和完成时间,线段的长度表示完成任务所需的时间。下图给出了具有五个任务的甘特图。
  • 35. 2.4 制定软件计划④网络计划法 网络计划法是利用网络图表安排与控制各项活动的方法。可通过的网络图分析,方便的确定完成整个工程需要多长时间,以及那些子工程是影响工程进展的关键。一般适用于与工作步骤密切相关、错综复杂的工程项目的管理。 步骤:①计算每个事件的最早时间最迟时间;②确定关键路径。2113661004385121261414A1D3B5C6F2E4G5
  • 36. 2.4 制定软件计划2.4.2 复审软件计划 实施软件计划之前,需要对计划的主要内容,包括人员安排、进度安排、成本估算和开发资源保证进行复审。涉及软件工作范围和软硬件资源问题时,应邀请用户参加,听取他们的意见,协商并确定最后的内容。复审内容分为管理与技术两方面。 管理方面,主要考虑如下内容: 工作范围是否符合用户要求? 对资源描述是否有效、合理? 系统开发存在哪些风险? 系统开发成本与进度要求是否合理? 计划中人员安排是否合理?
  • 37. 2.4 制定软件计划技术评审要求考虑如下问题: 系统任务划分是否合理? 系统功能复杂性是否与风险、成本、进度一致? 系统规格说明是否为后续开发工作提供了足够的依据? 系统规格说明中关于性能的描述是否恰当?
  • 38. 2.5 成本/效益分析2.5.1 成本估算技术 软件开发成本主要是指软件开发过程中所花费的工作量及相应的代价,其中主要是人的劳动的消耗,因此,软件产品开发成本的计算方法不同于其它物理产品的成本的计算。 软件产品不存在重复制造过程,它的开发成本是以一次性开发过程所花费的代价来计算的。因此软件成本估算,应以软件计划、需求分析、设计、编码到测试的软件开发全过程所花费的代价为依据。成本/效益分析是从经济角度,判断可行性的主要方法,分析开发一个系统是否划算,帮助用户的负责人正确作出是否投资这一项目的决定。
  • 39. 2.5 成本/效益分析一般采用以下方法得到可靠的成本及工作量估算: 将软件价格计算延迟到工程设计最后,可得到精确价格; 基于已完成的类似项目进行估算; 使用较简单的分解技术,估算项目成本和工作量的; 使用一个或多个经验模型,估算软件成本和工作量的。第一种方法,可靠但不实用,软件价格估算须预先提出,它是软件计划工作的主要部分之一。 第二种方法,没有相似项目时很难实施估算。 一般采取后两种方法。理想情况下,两种技术同时使用,交叉检验。
  • 40. 2.5 成本/效益分析(1)基于代码行(LOC)的成本估算方法 软件成本估计的特殊性是指软件生产过程的非实物性。软件的开发过程也是软件的生产过程。软件是高度知识密集的产品,生产过程中没有原材料或能源消耗,设备折旧所占比例很小。所以软件生产成本主要是劳动力的成本。常用的成本估计计量单位主要有: 源代码行:交付的可运行软件中有效地源程序代码行数,通常不包括注释。 工作量:完成任务所需的程序员平均工作时间,单位可以是人月(PM)、人年(PY)或人日(PD)。 软件生产率:开发全过程中单位劳动量能够完成的平均软件数量。 成本=总代码行数×每行的平均成本。根据经验和历史数据,确定上面两个变量。此外,工资水平也是应考虑的一个重要因素。
  • 41. 2.5 成本/效益分析(2)任务分解成本估算 典型办法是根据生命周期瀑布模型,对开发工作将进行任务分解,分别估算每个任务的成本,累加得到总成本。每个任务的成本估计通常只估算工作量(一般为人月,PM)。 成本=所需的总人月数×每人月的成本。如果软件规模很大,可通过将整个开发任务分解成若干个子任务,分别计算后累加,计算一个项目所需的人月数。 典型系统开发工作量比大约是: 需求分析(15%) 设计(25%) 编码与单元测试(20%) 综合测试(40%)
  • 42. 2.5 成本/效益分析(3)经验统计估计模型 Walston-Felix(IBM)模型 1977 年由 Walston 和 Felix 总结了 IBM 联合系统分部(FSD)负责的 60 个项目的数据。其中各项目的源代码行数从 400 行到 467000 行,开发工作量从 12PM 到 11758PM,共使用 29 种不同语言和 66种计算机。 利用最小二乘法拟合,得到如下估算公式: 工作量: E=5.2×L0.91 (PM) 项目持续时间: D=4.11×L0.35 (月) 人员需要量: S=0.54×E0.6 (人) 文档数: DOC=49×L1.01 (页)
  • 43. 2.5 成本/效益分析其中:L为源代码行,以千行计。 一条机器指令为一行源代码。源代码行数不包括程序注释、作业命令、调试程序在内。 如汇编语言或高级语言程序,应通过转换系数=机器指令条数/非机器语言执行步数,将其转换为机器指令源代码行数来考虑。语言转换系数简单汇编1宏汇编1.2~1.5FORTRAN4 ~ 6C4 ~ 10
  • 44. 2.5 成本/效益分析Putnam 估算模型(动态多变量参数模型) 1978 年由 Putnam 提出的模型,该模型是一种动态多变量模型,它是假设在软件开发的整个生存期中工作量的分布,将代价看做是时间的函数。例如根据30人以上的大型软件项目导出的估算公式如下: 其中:L为源代码行,K表示所需人力(PY) , Td 为开发时间,Ck 为技术水平常数值,与开发环境有关。 对于差的开发环境: Ck的值为2000-2500 对于正常的开发环境: Ck的值8000-10000 对于好的开发环境: Ck的值11000-12500 由上述公式可以得到所需开发工作量的公式(人年):
  • 45. 2.5 成本/效益分析COCOMO 模型 结构型成本模型(COCOMO,Constructive Cost Model)是最精确、最易于使用的成本估算方法之一。 按照其详细程度分为三级: 基本的 COCOMO 模型:一个静态单变量模型,对整个软件系统进行估算; 中间的 COCOMO 模型:一个静态多变量模型,将整个软件系统分为系统和部件两个层次,系统是由部件构成的,它把软件开发所需的成本看程序大小和一系列“成本驱动属性”的函数,用于部件级的估算,更为精确; 详细的COCOMO 模型:将软件系统分为系统、子系统和模块三个层次,它除包括中级模型中所考虑的因素外, 还考虑了在需求分析、 软件设计等每一步的成本驱动属性的影响。
  • 46. 2.5 成本/效益分析COCOMO 模型模型主要对工作量MM(PM)和进度TDEP(月)进行估算,模型中考虑到估算量与开发环境有关,将开发项目分为三类: 1.组织型(Organic) 相对较小、较简单的软件项目。程序规模不是很大(<5 万行),开发人员对产品目标理解充分,经验丰富,熟悉开发环境。大多数应用软件及老的操作系统、编译系统属此种类型。
  • 47. 2.5 成本/效益分析2.嵌入型(Embadded) 此种软件要求在紧密联系的硬件、软件和操作的限制条件下运行,通常与某些硬件设备紧密结合在一起。因此,对接口、数据结构,算法要求较高。如大型复杂的事务处理系统,大型、超大型的操作系统,军事指挥系统,航天控制系统等。 3.半独立型(Semidetached) 对项目要求介于上述两者之间,规模复杂度属中等以上,最大可达 30 万行。如大多数事务处理系统,新操作系统,大型数据库系统,生产控制系统等软件属此种类型。
  • 48. ①基本的 COCOMO 模型基本的 COCOMO 模型估算的工作量和开发进度 其中,MM :工作量(PM);KLOC:估计的源代码行(千行);C 是模型系数;a是模型指数。C 、a取决于项目的模式组织型、半独立型或嵌入型。 MM 是工作量(PM),KLOC是估计的源代码行(千行) ,TDEV是开发时间,以月为单位。总体类型工作量进度组织型MM=2.4(KLOC)1.05TDEV=2.5(MM)0.38半独立型MM=3.0(KLOC)1.12TDEV=2.5(MM)0.35嵌入型MM=3.6(KLOC)1.20TDEV=2.5(MM)0.32
  • 49. ②中间的COCOMO模型中间COCOMO模型进一步考虑 15 种影响软件工作量的因素,通过定下乘法因子,修正 COCOMO 工作量公式和进度公式,可以更合理地估算软件(各阶段)的工作量和进度。 15种影响软件工作量的因素 fi包括 产品因素:软件可靠性、数据库规模、产品复杂性。 硬件因素:执行时间限制、存储限制、虚拟机易变性、环境周转时间。 人的因素:分析员能力、应用领域实际经验、程序员能力、虚拟机使用经验、程序语言使用经验。 项目因素:现代程序设计技术、软件工具的使用、开发进度限制。
  • 50. 工作量因素 fi很低低正常高很高超高产品因素软件可靠性0.750.881.001.151.40 数据库规模 0.941.001.081.16 产品复杂性0.700.851.001.151.301.65计算机因素执行时间限制  1.001.111.301.66存储限制  1.001.061.211.56虚拟机易变性 0.871.001.151.30 环境周转时间 0.871.001.071.15 人员因素分析员能力 1.461.000.860.71 应用领域经验1.291.131.000.910.82 程序员能力1.421.171.000.860.70 虚拟机使用经验1.211.101.000.90  程序语言经验1.411.071.000.95  项目因素先进编程技术1.241.101.000.910.82 使用软件工具1.241.101.000.910.83 开发进度限制1.231.081.001.041.10 
  • 51. 例1 一个 32KLOC的声音输入系统是一个输入原型,或是一个可行性表演模型。所需可靠性非常低。把此模型看做半独立型软件。又查表知 f1=0.75,其它 fi=1.00。分别用基本和中间COCOMO模型估算工作量。 解: 基本COCOMO估算:MM = 3.0× (32)1.12≈ 146 中间COCOMO估算:MM = 146×0.75 ≈ 110 例2 一个规模为10KLOC的商用微机远程通信的嵌入型软件,影响工作量因素的打分情况如下,估算开发工作量和开发时间。总体类型工作量进度组织型MM=3.2(KLOC)1.05TDEV=2.5(MM)0.38半独立型MM=3.0(KLOC)1.12TDEV=2.5(MM)0.35嵌入型MM=2.8(KLOC)1.20TDEV=2.5(MM)0.32中间COCOMO模型的名义工作量与进度公式
  • 52. 影响工作量因素 fi情况取值 1 软件可靠性 只用于局部地区,恢 复问题不严重 1.00(正常) 2 数据库规模 20000字节 0.94(低) 3 产品复杂性 用于远程通信处理 1.30(很高) 4 时间限制 使用70%的CPU时间 1.10(高) 5 存储限制 64K中使用45K 1.06(高) 6 机器 使用商用微处理机 1.00(额定值) 7 周转时间 平均2小时 1.00(额定值) 8 分析员能力 优秀人才 0.86(高) 9 工作经验 远程通信工作3年 1.10(低)10 程序员能力 优秀人才 0.86(高)11 工作经验 微型机工作6个月 1.00(正常)12 语言使用经验 12个月 1.00(正常)13 使用现代程序设计技术 1年以上 0.91(高)14 使用软件工具 基本的微型机软件 1.10(低)15 工期 9个月 1.00(正常)
  • 53. 解: 程序名义工作量: MM=2.8 (10)1.20=44.38(MM) 程序实际工作量(中间COCOMO): MM=44.38× =44.38×1.17=51.5 (MM) 开发所用时间:TDEV = 2.5 (51.5)0.32 = 8.9 (月)
  • 54. ③详细的COCOMO 模型详细 COCOMO模型的名义工作量公式和进度公式与中间 COCOMO 模型相同。只是在考虑成本因素 fi时,按照开发阶段分别给出各层次更加详细的值。 针对每个影响因素,按模块层、子系统层、系统层,有三张工作量因素分级表,供不同层次的估算使用。每一张表中工作量因素又按开发各个不同阶段给出。 例如:软件可靠性工作量因素分级表(子系统层) 阶段 级别需求和 产品设计详细设计编程和 单元测试集成 及测试综合非常低0.800.800.800.600.75低0.900.900.900.800.88正常1.001.001.001.001.00高1.101.101.101.301.15非常高1.301.301.301.701.40
  • 55. 2.5 成本/效益分析2.5.2 成本/效益分析方法 成本/效益分析的目的是从经济角度评价开发一个新的软件项目是否可行。 成本/效益分析第一步是估算待开发系统的开发成本和运行费用(系统的操作费用和维护费用) ,与系统可能取得的效益(有形的和无形的)进行比较。 系统的经济效益则等于因使用新系统而增加的收入,加上使用新系统可以节省的运行费用。 以下介绍几种度量效益的方法:
  • 56. 2.5 成本/效益分析1.货币的时间价值 成本估算是要对项目投资。因投资先于取得效益,因此要考虑货币的时间价值。通常以利率形式表示。假设,年利率为 i,P 元钱在n年后的价值 F 为: 2.投资回收期 投资回收期是衡量工程价值的经济指标。投资回收期就是工程累计经济效益等于最初投资所需要的时间。投资回收期越短,就能越快获得利润,由此这项工程就越值得投资。 3.纯收入 工程的纯收入是衡量工程价值的另一项经济指标。它是在整个生存周期内新系统的累计经济效益与投资之差称为纯收入。
  • 57. 2.5 成本/效益分析4.投资回收率 投资回收率主要用于衡量投资效益的大小,并且可以用它和年利率比较,衡量工程是否有投资价值。 这相当于把数额等于投资额的资金存入银行,每年年底从银行取回的钱等于系统每年预期可以获得的效益。在时间等于系统寿命时,正好把在银行中的钱全部取光。此时的年利率是多少呢? 就等于投资回收率。 设现在的投资额为F: 其中:Fi 是第 i 年年底的效益(i=1,2,3,…,n),n 是系统的使用寿命,j 是投资回收率。
  • 58. 2.5 成本/效益分析例题: 某公司欲修改一已有的库存清单系统,使其能够每天送给采购员一份订货报告。假设修改已有的库存清单程序并且编写报表程序,估计共需5000元;系统修改后能及时订货,消除零件短缺问题,每年可节省2500元。假设年利率为12%,系统使用寿命为五年,试计算: 五年内每年节省的现值及累计现值; 计算投资回收期; 计算纯收入; 计算投资回收率。
  • 59. 解: 未来节省值折合为现值: 投资回收期:两年后可节省4225.12元,比投资少5000-4225.12=774.88元,第三年以后可再节省1779.45元,则回收期=2+774.8/1779.45=2.44(年) 纯收入:9011.94-5000=4011.94(元) 投资回收率:求解高阶方程,投资回收率41%-42%之间。年将来值(1+i)n现值累计现值1 2 3 4 52500 2500 2500 2500 25001.12 1.25 1.40 1.57 1.762232.14 1992.98 1779.45 1588.80 1418.572232.14 4225.12 6004.57 7593.37 9011.94
  • 60. 13份WPF经典开发教程 http://download.csdn.net/album/detail/1115 C#资料合辑二[C#桌面编程入门篇] http://download.csdn.net/album/detail/957 C#资料合辑一[C#入门篇] http://download.csdn.net/album/detail/669 [Csharp高级编程(第6版)](共8压缩卷) http://download.csdn.net/album/detail/667 10个[精品资源]Java学习资料合辑[一] http://download.csdn.net/album/detail/663 10个C#Socket编程代码示例 http://download.csdn.net/album/detail/631 6份GDI+程序设计资源整合[全零分] http://download.csdn.net/album/detail/625 更多免费资源 http://download.csdn.net/user/cleopard