anjiu目的是:以最小的代价在尽可能短的时间内确定问题是否能够解决;
从下面几个方面论证:
1, 技术;现有的技术能做该系统吗?
2, 经济;效益能超过开发成本??
3, 操作;系统的操作方式在用户组织中行得通吗?如果你为民工开发一个VC.net开发系统,那这是不可行的;
典型的可行性研究的步骤:
1, 复查系统目标和规模
2, 研究目前正在使用的系统; 可能是人工的也可能是软件系统;
3, 导出新系统的高层逻辑模型
4, 重新定义问题
5, 导出和评价供选择的方案
6, 推荐一个方案并说明理由
7, 草拟开发计划
8, 书写文档提交审查
系统流程图:它是用来描绘物理系统的工具;我们可以认为这就是我们在软件工程的第一步所要使用的一个工具---为了进行可行性研究,我们需要察看和表达现实的系统,系统流程图就是用来做这个的:表达的是信息在系统各部件之间流动的情况,而不是对信息进行加工处理的控制过程;
数据流图: Data Flow Diagram , DFD;
同样也是工具;描绘系统的逻辑模型;不同于系统流程图的是,数据流图中没有任何具体的物理元素,只是描述数据在系统中的流动和处理的情况。
成本/效益分析:
从经济的角度分析开发一个特定的新系统是否划算;
我们一般从三个方面来决定是否要开发某个系统:开发费用,运行费用,系统带来的效益;
1, 成本估算技术:
a) 代码行技术:loc技术;把成本与代码行数联系起来;使用这个方法的前提是有开发类似系统的历史数据可供参考;步骤如下:
1,将项目功能反复分解到足够细,直到可以对为实现该功能所需要的源代码行数做出可靠的估算为止;
2,算出各个功能代码行数的平均值
=(最小规模+最到规模+4*最可能的规模)/6
3,确定各个子功能的代码行成本(元/行)和生产率(行/人月);
4,计算各个子功能的成本(代码行平均值乘代码行成本)和人力(代码行
平均值除以其生产率);
5,计算该项目的总代码行数,总成本和总工作量;
个人觉得:成本反映的是花钱的多少,人力本质反映的是花时间的多少;所
以我觉得钱是钱,时间是时间,不要试图用这两个中的一个来为另一个分担,
那样似乎是行不通的;
例如: 图形软件包的代码行技术的成本估算如下:
b) 任务估算技术:把软件开发工程分解为若干个相对独立的任务,然后单独估计每个单独任务开发的成本,最后累加起来得出软件开发工程的总成本;
估计每个任务的成本时:先估计完成该项任务需要用的人力,再乘以每人每月的平均工资而得出每个任务的成本;
例如:图形软件包的任务估算技术的成本估算:
c) Putnam估算模型:
可以对这个基本估算公式进行切换,在知道L的情况下计算出Td来;
d) COCOMO模型:了解一下就OK!
2,成本效益分析:
1,系统运行费用:操作和维护费用
2,系统的经济效益:使用新系统增加的收入和节省的运行费用;
3,总的效益,假设生存周期为5年;
成本效益分析的方法:
1, 货币的时间价值:f=p(1+i)n;也就是说,过第5年可以为我们节省或者赚的钱是2500元,但对于现在的你来说,应该让f=2500,然后算出p,才是对于目前的我们来说第5年要节省的或者赚的前的现在值;
2, 投资回收期:工程累计经济效益等于最初投资所需要的时间;注意经济效益一般指的都是赚的钱,但是在软件中,一般都是节省的钱,附加一些赚的钱;所以,在软件工程中节省了钱就是经济效益;
3, 纯收入:整个生存周期内新系统的累计经济效益与投资之差;
项目的纯收入小于0那就不值得投资;
4, 投资回收率:衡量投资效益的大小;
P=F1/(1+j)+F2/(1+j)2+…+Fn/(1+j)n
P是现在的投资额;Fi是第i年年底的效益;n是系统的生存周期;
J是投资回收率;