2019/8/291第2章可行性研究与软件开发计划内容提要2.1可行性研究的任务(youarehere!你在这儿)2.2可行性研究的过程2.3成本/效益分析2.4可行性研究报告2.5软件开发计划2.6软件开发计划说明书2.7小结引言不是所有的问题都有明确的解决方案,有许多问题不能在规定的时间和资源条件下得到解决。如果问题没有可行的解决办法,那么就没有必要在这项工程上花费任何的时间、人力、软硬件资源和经费。因此,在进行软件项目开发之前,必须对软件项目的可行性进行研究。2019/8/2932.1可行性研究的任务可行性研究就是回答“所要开发的软件系统有无可行的解决办法或者系统值得开发吗”这个问题的过程。可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。进行可行性研究不是要求解决问题本身,而是确定问题是否有解和是否值得去解。可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计过程。2.1可行性研究的任务在可行性研究过程中,首先需要分析和确认问题的定义。在确认了问题定义之后,分析员应该构造系统的逻辑模型。然后从系统的逻辑模型出发,探索若干种可供选择的主要方法(即系统实现方案)。并针对每种解决方法讨论其可行性。对每种解法的可行性研究主要集中在以下几个方面。2.1可行性研究的任务(1)技术可行性技术可行性是根据用户提出的系统功能、性能以及各种约束条件,从技术的角度研究实现系统的可行性。通常情况下,技术可行性研究与系统的分析与定义过程同时进行,因此系统目标、功能和性能的不确定性会给技术可行性带来一定的困难。2.1可行性研究的任务(2)经济可行性经济可行性主要考虑这个系统的经济效益能否超过它的开发与维护所花费的成本。通过成本效益分析,将估算出的成本与预算的利润进行对比,分析系统开发对其它产品或利润的影响。成本效益分析是可行性研究的重要表现内容。2.1可行性研究的任务(3)操作可行性操作可行性主要考虑这个系统的操作方式在用户组织内的可行性。必要时还可以从法律、社会效益等更广泛的方面研究每种解法的可行性。2.1可行性研究的任务可行性研究最根本的任务就是对以后的行动提出建议。可行性研究的时间长短取决于系统的规模。一般地,可行性研究的成本只是预期项目总成本的5%-10%。2019/8/299第2章可行性研究与软件开发计划内容提要2.1可行性研究的任务2.2可行性研究的过程(youarehere!你在这儿)2.3成本/效益分析2.4可行性研究报告2.5软件开发计划2.6软件开发计划说明书2.7小结2.2可行性研究的过程可行性研究的过程包括如下步骤。(1)复查系统规模和目标(2)研究目前正在使用的系统(3)导出新系统的高层逻辑模型(4)重新定义问题(5)导出和评价供选择的方案(6)推荐行动方针(7)草拟开发计划(8)书写文档提交审查2.2可行性研究的过程实际上,可行性研究的前4个步骤构成了一个循环。分析员定义问题,分析该问题,提出新系统的逻辑模型;在此基础上再次定义问题,分析问题,修改这个模型;继续这个循环过程,直到提出的逻辑模型完全符合系统目标。2019/8/2912第2章可行性研究与软件开发计划内容提要2.1可行性研究的任务2.2可行性研究的过程2.3成本/效益分析(youarehere!你在这儿)2.4可行性研究报告2.5软件开发计划2.6软件开发计划说明书2.7小结2.3成本/效益分析进行一个软件系统的开发需要进行人力、资源和资金方面的投入,也是一项投资,同样期望将来获得更大的经济效益。经济效益通常表现为减少运行费用或增加收入。成本/效益分析从经济的角度分析开发一个特定的新系统是否划算,从而帮助用户正确作出是否投资这项开发工程的决定。2.3.1成本估计方法成本效益分析首先要估算出待开发系统的成本(包括直接成本和间接成本),然后与可能取得的收益(有形的收益和无形的收益)进行比较。软件是资金、技术、智力高度密集的产品,软件的开发成本主要是智力和技术的费用支出。对软件成本估计若有较大偏差,将造成整个系统费用估计的错误,严重的会导致软件开发的失败。2.3.1成本估计方法1.项目成本的组成项目成本分为两大部分,直接成本和间接成本。(1)直接成本直接成本是指可以追溯到个别产品、服务或部门的成本。例如,某个项目需要5台服务器,10台PC机。那么这些硬件属于直接耗费的硬件资源,这些耗费是直接成本。直接成本包括人工、硬件设备和软件费用。(2)间接成本间接成本是指由几项服务或几个部门共同引起的成本。例如,部门的管理费用,它不是专为某个项目或部门而发生的,因此属于间接成本。间接成本又分为项目管理成本和一般管理成本。2.3.1成本估计方法2.成本估计方法这里的软件开发成本主要表现为人力消耗(乘以平均工资则得到开发费用)。成本估计不是精确的科学,需使用几种不同的估计技术相互校验。下面介绍3种估算技术。(1)代码行技术代码行技术是比较简单的定量估计方法,它把开发每个软件功能的成本和实现这个功能需要用的源代码行数联系起来。一旦估计出源代码行数以后,用每行代码的平均成本乘以行数就可以确定软件的成本。每行代码的平均成本主要取决于软件的复杂程度和工资水平。2.3.1成本估计方法(2)任务分解技术这种方法首先把软件开发工程分解为若干个相对独立的任务,再分别估计每个单独开发任务的成本,最后加起来得出软件开发工程的总成本。(3)自动估计成本技术采用自动估计成本的软件工具可以减轻人的劳动,并且使得估计的结果更客观。但是,采用这种技术必须有长期搜集的大量历史数据为基础,并且需要有良好的数据库系统支持。2.3.2成本/效益分析方法成本效益分析首先要估算出待开发系统的成本及运行费用,然后与可能取得的经济效益进行比较。投资是在现阶段进行的,系统的效益是未来在软件生存周期中获得的,因此不能简单地进行比较,应该考虑货币的时间价值2.3.2成本/效益分析方法1.货币的时间价值通常用利率表示货币的时间价值。设年利率为i,如果现在存款P元,则n年后可以得到的钱数为:F=P×(1+i)nF为P元钱在n年后的价值。反之,若n年后收入F元,那么这些钱现在的价值是P=F/(1+i)n2.3.2成本/效益分析方法例如,某单位使用了办公自动化管理软件,减少了人工方式造成的时间及费用的支出,每年大约节省25000元,假设软件的生存周期为5年,而开发办公自动化管理软件共投资50000元。此时,不能简单地将系统投资的50000元直接与5年节省的125000元进行比较。因为前者是现在投资的钱,而后者是在未来5年内节省的钱。需要把未来5年内每年预计节省的25000元折合成现在的价值进行比较。假设年利率10%,利用上面公式,可以算出使用了办公自动化管理软件后,每年节省的钱的价值,如表2.1所示。2.3.2成本/效益分析方法表2.1货币的时间价值时间/年将来值/万元(1+i)n现在值/万元累计现在值/万元12.51.12.27272.272722.51.212.06614.338832.51.331.87976.218542.51.461.71237.930852.51.611.55289.48362.3.2成本/效益分析方法2.投资回收期投资回收期就是积累的经济效益等于最初投资所需要的时间。投资回收期越短,就能越快获得利润。因此,这项工程就越值得投资。例如,从表2.1可以看出,使用了办公自动化管理软件两年以后,可以节省4.3388万元,比最初的投资5万元还少0.6612万元,而第三年后可以再节省1.8797万元。0.6612/1.8797=0.35。因此,投资回收期是2.35年。2.3.2成本/效益分析方法3.纯收入工程的纯收入是衡量工程价值的另一项经济指标。纯收入就是指软件生存周期内,系统累计的经济效益(折合成现在值)与投资之差。例如,使用了办公自动化管理软件之后,5年内工程的纯收入是9.4836-5=4.4836万元。2019/8/2924第2章可行性研究与软件开发计划内容提要2.1可行性研究的任务2.2可行性研究的过程2.3成本/效益分析2.4可行性研究报告(youarehere!你在这儿)2.5软件开发计划2.6软件开发计划说明书2.7小结2.4可行性研究报告可行性研究工作结束时需要提交“可行性研究报告”。可行性研究报告是系统论证的结果,也是软件项目是否能够立项的依据。可行性研究报告的基本内容如下所示。1引言1.1编写目的1.2背景1.3定义1.4参考资料2.可行性研究的前提3.对现有系统的分析4.所建议的系统5.可选择的其他系统方案6.技术可行性分析7.投资及效益分析8.社会因素方面的可行性9.结论2019/8/2926第2章可行性研究与软件开发计划内容提要2.1可行性研究的任务2.2可行性研究的过程2.3成本/效益分析2.4可行性研究报告2.5软件开发计划(youarehere!你在这儿)2.6软件开发计划说明书2.7小结2.5软件开发计划可行性研究过程中,分析员应该为所推荐的方案书写一份开发计划,其主要内容包括:工程进度、资源需求情况和软件生存周期各阶段的成本。制订软件开发计划过程中,需要确定软件的工作范围;估算开发所需要资源;估算软件成本费用和进度安排。2.5.1软件作用范围软件的作用范围主要涉及软件的功能、性能、可靠性和接口4个方面。(1)软件系统的功能系统的功能与项目成本和进度估算有直接关系。在确定每个具体实现的功能时,还需附带考虑功能实现的性能,这是因为在不同性能的约束范围内,同一个功能的实现,其工作量之间的差距很大。(2)软件系统的性能确定一个系统的性能,主要包括定义处理时间的要求,软件存储空间的限制以及与机器执行有关的某些特性的内容。2.5.1软件作用范围(3)接口软件系统需要在某个环境下运行,必然要与其它系统元素发生交互作用,因此,必然产生接口问题。分析员需要考虑接口的性质极其复杂性,以便确定它对资源、成本与进度的影响,合理估算系统的成本。(4)可靠性分析员需要根据项目的性质提出可靠性要求,从而得到可靠性方面的估算。2.5.2资源需求资源需求包括开发软件项目所需要的人力、环境资源(软硬件资源)等。(1)人力资源制订软件计划时,需要根据软件项目的目标、范围、功能、规模、开发方式等因素,确定参与软件生命周期活动的人数,参与的时间区段及所承担的工作任务。(2)环境资源环境资源主要指软件研发所需要的开发和运行平台。环境资源包括计算机硬件及相关设备、网络环境、系统软件和支撑软件。软件计划中应指出资源购置和安装的大致时间表。2.5.3进度安排在软件开发工作的进度安排上,时间的划分和资源配置的准确性至关重要。如果进度安排不合理,可能会造成项目拖延,有可能丧失市场机会或失去软件开发价值。通常利用二维表式的甘特图来描述软件开发的进度及资源配置情况。2019/8/2932第2章可行性研究与软件开发计划内容提要2.1可行性研究的任务2.2可行性研究的过程2.3成本/效益分析2.4可行性研究报告2.5软件开发计划2.6软件开发计划说明书(youarehere!你在这儿)2.7小结2.6软件开发计划说明书软件开发计划是一个软件项目开发过程中成本管理、资源管理、人员调配及进度安排的主要依据。软件开发计划说明书的基本内容如下所示。1引言1.1编写目的1.2项目背景1.3定义1.4参考文献2项目概述2.1工作内容2.2主要参加人员2.3产品2.4验收标准2.5本计划的批准者和批准日期2.6软件开发计划说明书3实施计划3.1工作任务的分解与人员分工3.2联系人3.3进度3.4预算3.5关键问题4支持条件4.1计算机系统支持4.2需由用户承担的工作4.3由外单位提供的条件5专