蒋彪:手把手教你估算软件项目成本
手把手教你估算软件项目成本
2010-3-4 蒋彪 于南京
[背景]
软件项目一般来说可以分成两种:
A. 客户定制系统
B. 研发产品化系统
目前,国内绝大多数的都是在做A类型的客户定制系统,从接客户的单,到做客户的需求,拿到客户的合同,做开发,做实施,做后期维护之类的工作。
另外一种B类的,做产品研发的工作,国内涉及的人不多,而且它的项目估算里面涉及的问题很多,这里就不展开谈了。
做一个正常的软件项目,作为经营者和管理者,都想清楚地知道,这个软件项目有多大,要花掉多少成本,我能拿到的利润有多少,所以能不能准确地估算出软件项目的规模就显得很重要的。
下面我们来剖析一个小小的软件项目的规模估算。
[项目的需求文档]
假设现在,我们接到了一个项目,项目的名称是×××会员综合管理平台,决定采取传统的B/S架构来设计,我们首先要干的事情就是具体的分析这个项目的需求文档,只有在熟悉需求的情况下才能知道整体的规模。
具体的需求文档参见: |
[项目规模的概算]
我们大家都知道,正常的软件开发模式,比如瀑布开发模式的话,会分成
A. 需求分析
B. 基本设计
C. 详细设计
D. Codeing
E. UT
F. CT
G. RT
H. 后期维护
这么多阶段和步骤。但是根据,我所了解到的,国内除了少部分对日的大型公司会严格按照这种流程来做事情之外,绝大多数的国内公司还是随着自己的性子来。其中不乏,东软,联创之类的著名企业。所以我在制定项目概算的时候,还是按照国内的开发步骤来做:
大项目 | 中项目 | 小项目 | 人日 | ||
系统设计 | 数据库设计(大概10张表左右) | —— | 6 | ||
系统结构设计 | —— | 6 | |||
画面demo | —— | 10 | |||
系统开发框架搭建 | —— | 3 | |||
开发作业 | 会员管理子模块 | 会员开卡画面 | 1.5 | ||
会员开卡确认画面 | 0.5 | ||||
会员信息检索画面 | 1 | ||||
会员信息修改画面 | 1 | ||||
会员休息修改确认画面 | 0.5 | ||||
批量生成卡号 | 1 | ||||
会员积分输入和修改 | 2 | ||||
会员卡延期画面 | 2 | ||||
会员卡挂失画面 | 2 | ||||
商品管理子模块 | 商品录入画面 | 1 | |||
商品录入确认画面 | 0.5 | ||||
商品检索画面 | 1 | ||||
商品信息维护画面 | 1 | ||||
库存管理 | 库存检索画面 | 1 | |||
库存新建画面 | 1 | ||||
库存修改画面 | 1 | ||||
库存信息确认画面 | 0.5 | ||||
~省略~ | |||||
测试作业 | 测试数据和计划的准备 | —— | 3 | ||
分模块测试 | 分画面测试 | ~省略~ | |||
后期维护 | 系统上线安装 | 硬件安装,布线 | 1 | ||
环境安装,项目部署 | 1 | ||||
简单的客户培训 | 3 | ||||
维护 | 日常数据的维护 | 4 | |||
BUG的修正 | 5 | ||||
总计 | 大约7人月以上 | ||||
[结论]
软件公司在算钱的时候有几种方法:
A. 国内的比如联创之类,用项目分段方法收钱,做到哪一个阶段,或者完成了一个模板的上线就算前
B. 外包公司一般采用一个人月多少钱来收钱,比如对日外包一般是1万~2万一个人月。
对于老板而言,他要计算出项目的成本,也要这样算,比如以下:
(总人月:7人月) | 项目成本 | 对客户收费 |
总价 | 7万(市价:1万/人月) | >=8万 |
# 为什么项目成本里面,一个人月会有1万呢
因为如果我们假设项目的成员构成如下:
职位 | 月工资 |
PM | 60,00 |
SE | 45,00 |
PG(5人) | 25,00×6 |
公司日常运营费用(包括文职人员,会计,场地租金,旅游福利,公司上层的工资,电脑设备,和客户打交道的关系费—–) | 500,00 |
于是我们就能得到:
月开销合计 | 75,500 |
平均一个人月 | 10,786 |
# 为什么项目最后的售价一定会大于8万呢
在今天的IT市场上,一般来说作客户定制系统的公司,利润率只有10%~20%,厉害一点的比如联创,日恒一般也就15%。
特别是现在每年5%的通货膨胀率,如果一个企业不拿到10%以上的利润,那这个公司一定会完蛋。
所以,7万×(最起码的利润率)10%>=8万。
证明完毕
—–以上——
以下软件管理相关文章,欢迎大家访问
========================================================
《对日外包项目 管理十日谈》
http://blog.csdn.net/nanjingjiangbiao/archive/2010/01/31/5274307.aspx
http://blog.csdn.net/nanjingjiangbiao/archive/2010/03/10/5364523.aspx
========================================================
【附件—系统的需求文档】
系统需求:
模块名 | 处理机能 | 机能详细 |
会员管理子模块 | 会员卡类型管理:分为储值型返现型、计次型、普通型。 | 储值型返现型属于预付费型会员卡,例如充100实到帐120。
计次型属于预付费型会员卡,例如500块/20次。 普通型分为两种:一种属于预付费型会员卡,在开卡之际需要充入一定的现金;还有一种仅是用于代表用户拥有某个商户的会员身份,仅用于积分或打折使用。 每种卡类型都有相对应的积分与消费折扣率。 |
会员卡管理:包括会员开卡、会员信息维护、批量生成卡号等功能。 | 会员开卡:会员首次办理会员卡时需录入会员的信息并生成相应的卡信息与会员信息对应。
会员信息维护:会员信息的查询,会员卡、会员身份信息的修改。 批量生成卡号:可以事先生成一批卡号,当用户需办理卡时,直接录入即可。无论是单独生成还是批量生成卡号,都需屏蔽不吉利的号码。 |
|
充值管理:有储值的会员卡在金额消费完毕后,需进行续费,若未续费,则会员卡暂不可用。 | 储值型返现型、计次型为开卡前一次性充值。使用完毕即结束,再次充值时,所充金额按卡类型的限止进行充值。
普通消费型:可充入金额不等,具体金额由商家自行确定。 |
|
会员积分 | 会员积分是一个可以灵活配置的功能。例如开卡送多少积分,不同类型的会员卡在消费时增加多少积分,在兑换礼品时减少多少积分等等。 | |
会员卡延期 | 无论是哪种类型的会员卡,在建卡之初都会设置相应的结束时间,在结束时间到来时,若尚有余额未使用,用户可以申请延期,延期具体时间由商家自行决定。 | |
会员卡挂失:用户在无意中丢失卡片后可以向办理卡片时的商户申请挂失。 | 挂失:用户凭办理时输入的密码与证件进行挂失。
取挂:用户若找到了丢失的卡片,可以取消挂失。 补卡:用户在挂失一段时间后,可以申请补卡。补卡时用户的会员卡号有可能会变,但会员卡编号是唯一的,不可变的。 |
|
商品管理子模块 | 商品类别管理:商家为自己的商品创建相应的类别。商品的类别分为真实商品与虚拟商品两种。 | 真实商品是现实中存在的商品,例如:香烟、酒、饮料等。
虚拟商品为空间或时间上的概念。 |
真实商品管理: | 商品信息录入:各商家自行录入商品信息。
商品信息维护:包括商品信息的查询、修改、删除等功能。 |
|
虚拟商品管理: | 商品管理:例如某个球场。3小时/100元。某种服务,100元/1次。 | |
库存管理 | 库房管理 | 创建、维护、查询、删除本商家的库房信息。 |
供应商管理 | 创建、维护供应商信息。供应商名称,电话,具体联系人,销售产品等。 | |
入库管理 | 新进商品的入库操作。商品的名称,数量,对应的供应商,存储的库房,保持期,最低库存告警点等。 | |
出库管理 | 商品销售过程中,系统会对商品的数量进行自动的减少。 | |
库存告警 | 当某种商品库存量低于设定的水平时,给予明确的告警。 | |
消费管理子模块 | 预订管理 | 用户以电话的形式联系商家,并预订下到达的时间和所消费的服务。商家通过系统创建预订单,预订单中包含用户的联系信息或会员卡号、计划消费的服务、使用的场地等信息。 |
消费单生成 | 用户来到商家消费后,若是事先有预定则此时转化为相应的消费单,若是当场消费,则现场生成消费单。消费单中保存了用户在商户的一切消费行为,当最终进行费用结算时,若用户是会员则可将消费单与会员卡对接。 | |
添加真实商品 | 为已正式生成的消费单添加商品,包括商品的数量,单价,消费时间等。 | |
增加虚拟商品 | 为已正式生成的消费单添加虚拟的商品,虚拟的商品不同于真实商品,未必以数量为单位,可能是以时间或次数为单位。系统会详细记录会员消费的起始时间或次数,到会员结帐时自动根据记录计算出结果。 | |
费用结算管理 | 系统会根据各商户所生成的消费单上的内容进行结算。这包括真实商品的数量与单价的乘积,虚拟商品所用时间或次数的计算结果,或者是二者之和。在计算出结果后,若用户持有会员卡,系统会根据会员卡的类型、商品的类型等进行打折、积分。 | |
联合结帐 | 在上面结帐管理的基础上,可以将不同的消费单关联,并设置其中一张消费单为主结算单进行费用结算。 | |
商家自助管理子模块 | 商家信息管理 | 对商家自身信息的管理、维护。商家充值功能。 |
员工管理 | 新建、维护员工。包括员工登陆系统的帐号,初始密码,有效期等。 | |
员工销售情况统计 | 查看每个店内员工的商品或服务销售情况,可以借此衡量员工的业绩。 | |
员工操作日志 | 查看每个店内员工的操作行为记录。 | |
交班管理 | 员工与员工之间交班时的一种操作,主要是对上一班员工的各类数据的一个总结,新一班员工数据的重新开始录入。 | |
提醒管理 | 分为两种提醒,一种是程序控制的提醒,在某些点上加入,到达限定条件即提醒(待议);一种是可配置的提醒,如,某年某月某日要做些什么。 | |
短信群发申请 | 商家编辑短信的内容提交至管理员处统一发送。 | |
邮件群发管理 | 可以从数据库中随机掏出指定人数用户向其发送邮件。 | |
公告管理 | 针对店内员工的公告信息 | |
计量单位管理 | 每个商家可以添加属于自己的计量单位,例如:个,次。这种仅限于页面展示,与价格换算无关联。 | |
密码修改 | 对登陆系统密码的修改 | |
统计报表 | 待定 | |
系统管理 | 角色权限管理 | 平台中有众多商家,他们所包含的员工都有相应的角色,不同的角色所看见的功能不一样,角色由管理员统一创建。 |
商家管理 | 所有商家皆由此添加,在有效期到来之前,商家均可正常登陆系统进行操作。 | |
地市信息管理 | 系统初始数据,一般不做变更,主要包含江苏省13个地市的信息。 | |
提醒管理 | 分为两种提醒,一种是程序控制的提醒,在某些点上加入,到达限定条件即提醒(待议);一种是可配置的提醒,如,某年某月某日要做些什么。 | |
短信群发管理 | 可以从数据库中随机取出指定人数用户向其发送短信。审批后,因按短信的条数扣除从商家的帐户上扣除一定的金额,若金额不够则不能审批。 | |
邮件群发管理 | 可以从数据库中随机掏出指定人数用户向其发送邮件 | |
公告管理 | 向所有的商家发布公告信息 | |
密码修改 | 对登陆系统密码的修改 | |
统计报表 | 待定 |