软件开发与应用胡俊敏Email:wingoner@126.com2009.2集美大学工商管理学院信息管理与信息系统系第一章回顾软件危机软件工程软件工程方法学软件生命周期软件生命周期的主要模型优缺点本章导读第二章可行性研究可行性研究的任务可行性研究的过程系统模型的建立成本/效益分析小结第二章可行性研究目的:是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得开发。实质:是要进行一次简化、压缩了的需求分析和设计过程,要在较高层次上以较抽象的方式进行需求分析和设计过程。计划时期的工作流程图开始问题定义可行性研究可行否实施项目计划YN终止项目的建议结束现状调查和问题的定义目的:弄清楚用户要求计算机解决什么问题任务:编写系统目标与规范说明书例如:系统目标与规范说明书项目:教材销售系统问题:人工销售教材手续繁琐,容易出错项目目标:建立一个高效率、无差错的计算机教材销售系统项目范围:利用现有的计算机,软件开发费用不得超过2000元初步想法:建议在系统中增加对缺书的统计与采购功能可性行研究:建议进行大约10天的可性行研究,且研究费用不超过500元2.1可行性研究的任务可行性研究的任务是:首先需要对系统进行概要的分析研究,初步确定软件项目的规模和目标,确定项目的约束和限制;然后分析员对系统做简要的需求分析,抽象出该系统的逻辑结构,建立逻辑模型;再从逻辑模型出发,经过压缩的设计,探索出若干种可供选择的主要解决方案,并对每一种解决方案研究它的可行性。如何选择呢?·经济可行性:进行成本∕效益分析。从经济角度判断系统开发是否“合算”。·技术可行性:进行技术风险评价。从开发者的技术实力、以往工作基础、问题的复杂性等出发,判断系统开发在时间、费用等限制条件下成功的可能性。·社会可行性:确定系统开发可能导致的任何侵权、妨碍和责任以及用户操作的可行性。·方案的选择:评价系统或产品开发的几个可能的候选方案。最后给出结论意见。2.2可行性研究过程典型的可行性研究有以下步骤:•复查系统规模和目标•研究目前正在使用的系统•导出新系统的高层逻辑模型•重新定义问题•导出和评价供选择的解法•推荐行动方针•草拟开发计划•书写文档提交审查在进行可行性研究时需要了解和分析现有的系统,并以概括的形式表达对现有系统的认识;进入设计阶段以后应该把设想的新系统的逻辑模型转变成物理模型。物理模型要如何表示呢?2.3系统流程图系统流程图是用来描述系统物理模型的一种传统工具。它的基本思想:用图形符号以黑盒子形式描绘组成系统的每个部件(程序、文档、数据库、人工过程等)。系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程。人工销售教材流程图学生购书单购书发票到书库领书结束申请购书购书证明检索教材帐本是否有该教材开购书发票和购书单计算机售书系统流程图学生购书单终端审查并开发票12购书发票购书单到书库领书结束教材库存数据库学生各学期用书数据库2.4成本∕效益分析成本的估算有两种基本的估算方法:自顶向下和自底向上。•自顶向下的方法是对整个项目的总开发时间和总工作量做出估算,然后把它们按阶段、步骤和工作单元进行分配。•自底向上的方法则正好相反,分别估算各工作单元所需的工作量和开发时间,然后相加,就得出总的工作量和总的开发时间。但是两种方法都要求采用某种方法做出具体的估算。成本的估算一般来说,基于计算机系统的成本由四个部分组成:购置并安装软硬件及有关设备的费用系统开发费用系统安装、运行和维护费用人员培训费用对于我们来讲,最关心的是第二项:开发费用。代码行技术代码行技术是比较简单的定量估算方法,也是一种自底向上的估算方法。它把开发每个软件功能的成本和实现这个功能需要用的源代码行数联系起来。通常根据经验和历史数据估计实现一个功能需要的源程序行数。一旦估计出源代码行数以后,用每行代码的平均成本乘以行数即可确定软件的成本。每行代码的平均成本主要取决于软件的复杂程度和开发小组的工资水平。代码行技术的估算步骤对要求设计的系统进行功能分解,直到可以对为实现该功能所要求的源代码行数做出可靠的估算为止。根据经验和历史数据,对每个功能块估计一个最有利的LOC值(a)、最可能的LOC值(m)和最不利的LOC值(b),则代码行的期望(平均)值lc:Lc=(a+4m+b)/6再根据历史数据和经验,选择每个软件功能块的LOC价格。计算每个功能块的价格及工作量,并确定该软件项目总的估算价格和工作量。代码行技术的估算举例例:CAD软件,项目范围确定了其主要功能:用户接口控制(UIC)二维几何图形分析(2DGA)三维几何图形分析(3DGA)数据结构管理(DSM)图形显示(CGD)外围设备控制(PC)设计分析(DA)代码行技术的估算举例功能最有利最可能最不利期望值方差数$/行行/人月人月价格UIC1800240026502340140143157.4327602DGA41005200740053805502022024.41076003DGA46006900860068006702022030.9136000DSM29503400360033501101824013.960300CGD40504900620049503602220024.7108900PC2000210024502140752814015.259920DA66008500980084005401830028151200估算值333601100144.5656680(人月=期望值/(行/人月),价格=$/行*期望值)任务分解技术首先把软件开发工程分解为若干个相对独立的任务,再分别估计每个单独的开发任务的成本,最后累加起来就得出软件开发工程的总成本。估计每个任务的成本时,通常先估计完成该项任务需要用的人力(以人月为单位),再乘以每人每月的平均工资而得出每个任务的成本。最常用的方法是按开发阶段划分任务。如果软件系统很复杂,由若干个子系统组成,则可以把每个子系统再按开发阶段进一步划分为更小的任务。任务分解技术的估算举例功能需求分析设计编码测试总计UIC1.02.00.53.57.02DGA2.010.04.59.526.03DGA2.512.06.011.031.5DSM2.06.03.04.015.0CGD1.511.04.010.027.0PC1.56.03.55.016.0DA4.014.05.07.030.0总计14.561.026.550.5152.5劳务费($/人月)5200480042504500成本75400292800112625227250708075效益分析系统效益包括经济效益和社会效益两部分。经济效益是指,应用系统为用户增加的收入,它可以通过直接的或统计的方法估算。社会效益只能用定性的方法估算。经济效益分析举例例如:开发计算机辅助设计(CAD)系统取代当前的手工设计过程。系统分析员为当前的手工设计系统和CAD目标系统定义对应的可测试特征:T:绘一幅图的平均时间,单位是小时/幅。d:每小时绘图的成本,单位是元/小时。n:每年绘图的数目,单位是幅。r:用CAD系统绘图减少的绘图时间比例。p:用CAD系统绘图的百分比。于是,可用下式计算利用CAD系统绘图每年可以节省的经费B=n×T×d×p×r这样,当r=1/4,T=4小时/幅,n=8000幅,d=20元/小时,p=60%时,代入上式计算得B=96000元,即用CAD系统绘图比用手工系统绘图平均每年约节省经费96000元。成本效益分析举例成本效益(万元)60盈亏平衡点40CAD系统成本20CAD系统节省经费012345年投资回收期货币的时间价值投资是现在进行的,效益是将来获得的,不能简单地比较成本和效益,应当考虑货币的时间价值。通常用利率的形式来表示货币的时间价值。假设年利率为i,如果现在存入P元,则n年后可以得到:F=P(1+i)n这个F就是现在的P元钱在n年后的价值。反之,如果n年后能收入F元,那么这些钱现在的价值就是:P=F/(1+i)n货币的时间价值计算举例例如:修改一个已有的库存清单系统,使它能在每天送给采购员一份定货报表。修改已有的库存清单并且编写产生报表的程序,估计共需5000元;系统修改后,能及时定货将消除零件短缺影响生产的问题,估计因此每年可以节省2500元。五年共可以节省12500元。但不能简单地把现在的5000元与五年后的12500元相比。假设年利率为12%,可以算出修改库存清单系统后每年预计节省的钱的现在价值。货币的时间价值计算举例年将来值(元)(1+i)n现在值(元)累计的现在值(元)125001.122232.142232.14225001.25441992.984225.12325001.404931779.456004.57425001.573521588.807593.37525001.762341418.579011.94投资回收期通常将投资回收期作为效益的一项指标衡量开发工程的价值。所谓投资回收期就是使累计的经济效益等于最初投资所需要的时间。例如:上例中2+(5000-4225.12)/1779.45=2.44或者3-(6004.57-5000)/1779.45=2.44即投资回收期为2.44年投资回收期仅仅是一项经济指标,为了衡量一项开发工程的价值,还应考虑其它的经济指标。纯收入指标衡量工程价值的另一项经济指标是工程的纯收入,也就是在整个生命周期之内系统的累计经济效益(折合成现在值)与投资之差。例:上述修改库存清单系统,工程的纯收入预计是:9011.94-5000=4011.94元投资回收率指标设想把数量等于投资额的资金存入银行,每年年底从银行取回的钱等于系统每年预期可以获得的效益,在时间等于系统寿命时,正好把在银行中的存款全部取光,那么,这个年利率等于多少呢?这个假想的年利率就等于投资回收率。在衡量工程的经济效益时,它是最重要的参考数据。课堂练习:假设某软件生命周期为5年。现在投资20万元,平均年利率3%。从第一年起,每年年底收入4.2万元,问该项目是否值得投资?P=20万4.2万4.2万4.2万4.2万4.2万012345到第5年底结算时:投资额=200000(1+3%)5231855(元)收入=42000[(1+3%)4+(1+3%)3+(1+3%)2+(1+3%)+1]222984(元)投资额收入不合算!的值年底为第为年利率为初始投资其中PnFiPPFn,,)1(i⑴纯收入=折合现价的总收入-当前投资额=)(765220000003.1103.1103.1103.1103.11420002345元⑵投资回收期例:第6年底可收回)(3517403.11420006元年回收期年5.22)(22.0351747652⑶投资回收率:设为j3%%65.1)1(1)1(1)1(1)1(111420002000005432年利率jjjjjj谢谢!