软件工程复习 第三章
第三章 可行性研究与软件开发计划
项目立项
任何一个完整的软件工程项目都是从项目立项开始的。
项目立项包括项目发起、项目论证、项目审核和项目立项4个过程
- 在发起一个项目时,项目发起人或单位为寻求他人的支持,要以书面材料的形式递交给项目的支持者和领导,使其明白项目的必要性和可行性。
项目论证过程,也就是可行性研究过程。可行性研究就是指在项目进行开发之前,根据项目发起文件和实际情况,对该项目是否能在特定的资源、时间等制约条件下完成做出评估,并且确定它是否值得去开发。
项目经过可行性研究并且认为可行后,还需要报告主管领导或单位,以获得项目的进一步审核,并得到他们的支持。
项目通过可行性研究和主管部门的批准后,将其列入项目计划的过程,叫做项目立项。
- 在发起一个项目时,项目发起人或单位为寻求他人的支持,要以书面材料的形式递交给项目的支持者和领导,使其明白项目的必要性和可行性。
可行性研究的任务
可行性研究需要从多个方面进行评估,主要包括:战略可行性、操作可行性、计划可行性、技术可行性、社会可行性、市场可行性、经济可行性和风险可行性等。
(1)战略可行性研究主要从整体的角度考虑项目是否可行,如提出的系统对组织目标具有怎样的贡献、新系统对目前的部门和组织结构有何影响、系统将以何种方式影响人力水平和现存雇员的技术、它对组织整个人员开发策略有何影响,等等。
(2)操作可行性研究主要考虑系统是否能够真正解决问题;系统一旦安装后,是否有足够的人力资源来运行系统;用户对新系统具有抵触情绪是否可能使操作不可行;人员的可行性等问题。
(3)计划可行性研究主要估计项目完成所需的时间并评估项目的时间是否足够。
(4)技术可行性研究主要考虑项目使用技术的成熟程度;与竞争者的技术相比,所采用技术的优势及缺陷;技术转换成本;技术发展趋势及所采用技术的发展前景;技术选择的制约条件等。
(5)社会可行性研究主要考虑项目是否满足所有项目涉及者的利益;是否满足法律或合同的要求等。
(6)市场可行性研究主要包括研究市场发展历史与发展趋势,说明本产品处于市场的什么发展阶段;本产品和同类产品的价格分析;统计当前市场的总额、竞争对手所占的份额,分析本产品能占多少份额;分析产品消费群体的特征、消费方式以及影响市场的因素;分析竞争对手的市场状况;分析竞争对手在研发、销售、资金、品牌等方面的实力;分析自己的实力等。
(7)经济可行性研究主要是研究系统开发和运行需要的成本与得到的效益,分析成本效益。
(8)风险可行性研究主要是考虑项目在实施过程中可能遇到的各种风险因素,以及每种风险因素可能出现的概率和出现后的影响程度。
技术可行性
技术可行性主要研究待开发系统的功能、性能和限制条件,确定现有技术能否实现有关的解决方案,在现有的资源条件下实现新系统的技术风险有多大。这里的资源条件是指已有的或可以得到的软硬件资源、现有开发项目人员的技术水平和已有的工作基础。
在评估技术可行性时,需要考虑以下情况:了解当前最先进的技术,分析相关技术的发展是否支持新系统;确定资源的有效性,如新系统的软硬件资源是否具备,开发项目的人员在技术和时间上是否可行等;分析项目开发的技术风险,即能在给定的资源和时间等条件下,设计并实现系统的功能和性能等。
技术可行性研究往往是系统开发过程中难度最大的工作,是可行性研究的关键。
操作可行性
操作可行性是对开发系统在一个给定的工作环境中能否运行或运行好坏程度的衡量。操作可行性研究决定在当前的政治意识形态、法律法规、社会道德、民族意识以及系统运行的组织机构或人员等环境下,系统的操作是否可行。
操作可行性往往最容易被忽视或被低估,或者认为它一定是可行的。
经济可行性
成本-效益分析是可行性研究的重要内容,它用于评估基于项目的经济合理性,给出项目开发的成本论证,并将估算的成本与预期的利润进行对比。
一般说来,基于项目的成本由4个部分组成:购置并安装软硬件及有关设备的费用,项目开发费用,软硬件系统安装、运行和维护费用,人员的培训费用。在项目的分析和设计阶段只能得到上述费用的预算,即估算成本。在项目开发完毕并将系统交付用户运行后,上述费用的统计结果就是实际成本。
项目开发效益包括经济效益和社会效益两部分。
经济效益是指所使用系统为用户增加的收入,可以通过直接的或统计的方法估算。
社会效益只能用定性的方法估算。
成本估算
代码行技术
- 代码行技术是比较简单的定量估算方法,它将开发每个软件功能的成本和实现这个功能需要使用的源代码行数联系起来。通常根据经验和历史数据估算实现一个功能所需的源代码行数。一旦估算出源代码行数后,用每行代码的平均成本乘以行数即可确定软件的成本。每行代码的平均成本主要取决于软件的复杂程度和薪资水平。
任务分解技术
首先将开发项目分解为若干相对独立的任务,再分别估算每个任务单独开发的成本,最后累加起来就可得出开发项目的总成本。
如果项目比较复杂,如由若干子系统组成,则可以将若干子系统再按开发阶段进一步划分成更小的任务。
成本——效益分析
分析
开发成本:用代码行技术或任务分解技术进行估算。
运行费用:取决于系统操作的费用(操作员人数、工作时间和消耗物资等),以及维护费用。
系统的经济效益:为使用新系统而增加的收入加上使用新系统可以节省的运行费用。
四个考虑方面
货币的时间价值
投资回收期:累计的经济效益等于最初投资所需要的时间,也就是达到估计开发总成本加_上运行维护费用所需要的时间。
纯收入=累计经济效益(折合成现在值)一投资额
投资回收率=年经营净现金流量或年均经营净现金流量/原始投资额
货币的时间价值
- 通常使用利率的形式表示货币的时间价值。假设年利率为i,如果现在存入P元,则n年后可以得到的价值为:
$$
F=P(1+i)^n
$$
F就是P元在n年后的价值。反之,如果n年后能收入F元,那么这些钱的现在价值就是:
$$
P=\frac{F}{(1+i)^n}
$$
投资回报期
- 投资回收期是衡量项目价值的常用方法。投资回收期就是使累计的经济效益等于最初投资需要的时间。很明显,投资回收期越短,获得利润的速度就越快,该项目就越值得开发。
纯收入
- 纯收入是衡量项目价值的另一项经济指标。纯收入就是在软件生命周期中软件系统的累计经济效益(折合成现在值)与投资之差。
可行性研究步骤
步骤
明确系统的目标在这一步,可行性分析人员要访问相关人员,阅读分析可以掌握的材料,确认用户需要解决问题的实质,进而明确系统的目标以及为了达到这些目标系统所需的各种资源。
分析研究现行系统现行系统是新系统重要的信息来源。新系统应该完成现行系统的基本功能,并在此基础上对现行系统中存在的问题进行改善或修复。可以从3个方面分析现有系统:系统组织结构定义、系统处理流程分析和系统数据流分析。
设计新系统的高层逻辑模型这一步从较高层次设想新系统的逻辑模型,概括地描述开发人员对新系统的理解和设想。
获得并比较可行的方案开发人员可根据新系统的高层逻辑模型提出实现此模型的不同方案。在设计方案的过程中要从技术、经济等角度考虑各方案的可行性,然后从多个方案中选择出最合适的方案。
撰写可行性研究报告可行性研究的最后一步就是撰写可行性研究报告。此报告包括项目简介、可行性分析过程和结论等内容。
结论
(1)可以按计划进行软件项目的开发。
(2)需要解决某些存在的问题(如资金短缺、设备陈旧和开发人员短缺等)或者需要对现有的解决方案进行一些调整或改善后才能进行软件项目开发。
(3)一旦待开发的软件项目不具有可行性,就立即停止该软件项目。
制定开发计划
项目概述。说明项目的各项主要工作;说明软件的功能和性能;为完成项目应具备的条件;甲方和乙方应承担的工作、完成期限和其他限制条件;应交付软件的名称,所使用的开发语言及存储形式;应交付的文档等。
实施计划。说明任务的划分,各项任务的责任人;说明项目开发进度,按阶段应完成的任务,用图表说明每项任务的开始时间和完成时间;说明项目的预算,各阶段的费用支出预算等。
人员组织及分工。说明开发该项目所需人员的类型、组成结构和数量等。
交付期限。说明项目应交付的日期等。