C# 估算Web应用时间的经验法则

C# 估算Web应用时间的经验法则,c#,estimation,C#,Estimation,我们都知道,软件评估很难精确,但我并不寻求精确的。我希望能够得出一个项目的大概人时数,以了解在一个初创企业中需要雇用多少人 所以,假设你有: 在.NET平台(C#、ASP MVC等)上构建的web应用程序 定义数量的用例,包括简单用例和复杂用例(在本项目中,有70个用例;但假设一个项目有足够多的用例,可以给出复杂和不复杂的良好钟形曲线) 定义的数据库模式(同样,在本例中,大约有50个表,但假设一个web应用程序的功能比典型的书籍示例中的七个表还要多:) 一个合作伙伴想要一个快速的、肮脏的、最佳

我们都知道,软件评估很难精确,但我并不寻求精确的。我希望能够得出一个项目的大概人时数,以了解在一个初创企业中需要雇用多少人

所以,假设你有:

  • 在.NET平台(C#、ASP MVC等)上构建的web应用程序
  • 定义数量的用例,包括简单用例和复杂用例(在本项目中,有70个用例;但假设一个项目有足够多的用例,可以给出复杂和不复杂的良好钟形曲线)
  • 定义的数据库模式(同样,在本例中,大约有50个表,但假设一个web应用程序的功能比典型的书籍示例中的七个表还要多:)
  • 一个合作伙伴想要一个快速的、肮脏的、最佳的当前猜测估计,并且明白这不是一个可以持有的合同,他对软件开发有经验,并且软件(以及对软件的理解)将进行版本和演变
  • 一批可靠、熟练的开发人员
人们有什么经验法则可以用来快速猜测所涉及的小时数吗


更新:我要求提供基于可测量但粗略要求的大致估算规则。“4到6周”的答案很有趣,油嘴滑舌,但我想听听那些实际上已经建立了一些简单的工作晴雨表的人的回答。

按照你的直觉去做,然后再加上3个月的时间。

粗略的评估很容易出错。我建议将提议的应用程序分解为尽可能多的细节和任务,估计每个任务并将其相加。然后为你忘记的所有任务增加一些额外的时间。

雇佣一个聪明的人来开始工作,然后在一段时间后,询问他们在给定日期前还需要多少人来完成。如果你不确定是否要雇佣/雇佣多少人,那就错在“一个也没有”的一边。

我总是写一份详细的清单,列出我需要完成的任务。从那里,我可以更好地判断这些单独任务的时间量,并将这些数字相加。在那之后,我加上25-50%的额外费用作为缓冲,以防出现并发症,而并发症似乎总是会出现

当我说任务列表时,我的意思是这样的:(这是一个例子,尽可能详细,尤其是在站点地图上)

  • 数据库
    • 桌子
    • 观点
    • 存储过程
  • 网站地图
    • 主页
    • 关于页面
    • 联系方式
  • 从发展向生产的迁移
    • 自我测试
    • 客户测试
    • 错误修复

我总是用小时来估计时间。(不是15-30分钟的街区)

没有规则可以传递。正如Sam所说,根据您试图估算的项目的规模和复杂性,很容易使这些大致估计值出错。大多数好的估计都来自于某种迭代过程,在这个过程中,你做出一个估计,看看为什么这个估计是错误的,然后在下次进行估计时进行补偿

在指定项目和任务时,也要尽量详细。如果你有“做点什么,30小时”之类的任务,你应该谨慎。我通常会尝试将超过一个工作日(5-7小时)的估计值分开


你还提到,你甚至不知道你所评估的人的专业水平,这并没有让事情变得更容易。当然,你可能会非常保守,但你只是冒着过度招聘的风险,而不是迟到。所以我认为你应该问问自己;我宁愿有哪个问题,迟到还是项目中有太多人。作为一家初创公司,我认为编写应用程序大约需要500+/-100小时,编写测试代码需要300小时,在野外运行测试和应用程序需要500小时。因此,对于3名熟练且有组织的开发人员来说,这大约需要3个月:)但这只是估计。

考虑到您的

一个想要一个又快又脏的, 当前最佳猜测估计,以及 明白这不是一份合同 持有,有软件方面的经验 开发,以及该软件 (及其理解)将 版本和演化

那么你能以敏捷的方式将项目分解成更小的项目吗?提前决定交付时间表(每3周?),对用例进行优先级排序,确定第一次交付的时间以便您能够完成,并对后续迭代进行松散的评估/计划,并在每次迭代中重新讨论优先级。很有可能,你的客户会改变他的想法,所以你也可以在这个过程中建立定期的反馈/讨论。在较小的工件上更容易正确计时。

如果你做不到这一点,那么就选择Sam的方法——花点时间做出好的估计。

你所追求的听起来有点类似于一种叫做。每项要求都被确定为一种类型(如输入屏幕),并被描述为一种类型。然后,这些被分配一个高、中或低的复杂度等级。为类型和复杂度指定了一个数值,并将整个批次相加,以获得系统的功能点总数

然后将修改器应用于功能点总计,以将其转换为小时工作量。修改器将考虑正在使用的工具,以及(可能)开发人员的技能

这个系统在理论上很好。诀窍是用正确的修饰语。在实践中,只有在完成了3到4个项目后,您才能得到合理的估计,然后才能根据过去的经验计算出一个修饰符

关于您当前的项目,我建议使用类似的系统,尽管有点简化。对每个表进行简单、中等或复杂的评分,并对每个web屏幕进行相同的评分。简单得1分,中等得2分,co得3分