7

设置场景 - 我在那些喜欢估计和跟踪几乎所有事情的行业之一工作。我们的关键指标之一是 SLOC(源代码行 - 声明性和可执行语句)。我们将其用于项目规模和成本估算、项目规划和许多其他事情。我们尝试用它来比较苹果和苹果(即,我们不会将一种语言/领域的 SLOC 与另一种语言/领域的 SLOC 进行比较)。 注意:我们不会根据这个指标评估单个开发人员,也不会仅仅因为 SLOC 与预期的不同而将其称为错误或坏事。然而,我们确实认为一个项目有更多的 SLOC,也可能有更多的错误。

就在最近,我开始在项目中使用库来代替原本需要手动编码的组件——例如 JSF 代替 JSP,Hibernate 代替 JDBC 等等。所以......而不是编写代码行,我们的团队正在开发 XML 文件。XML 映射仍然需要付出努力,并且复杂性之间仍然存在模糊的相关性 - 在给定项目中拥有多 100 倍的这些 XML 配置文件可能表明它需要更多的努力来创建并且可能比仅具有的项目更复杂的调试XML 文件的 1/100。

那么......有人对测量这些 XML 配置文件的大小有什么建议吗?# 元素?# 元素 + # 属性?别的东西?

4

3 回答 3

3

有趣的问题。我知道的唯一指标(除了您建议的计算节点和属性之外)是称为结构化文档复杂性指标的东西。

http://www.oreillynet.com/xml/blog/2006/05/metrics_for_xml_projects_5_str_1.html

是我目前能找到的最好的链接(已经有一段时间了)。我还发现了这个小工具,它显然会为你计算它(可能还有其他工具):

http://schematron.com/resources/documentcomplexitymetric.html

除此之外,恐怕我唯一的建议是只选择几个指标来跟踪似乎合理的指标,然后重新评估它们以确定它们是否真的在对每个文档施加的努力中产生趋势......

于 2009-01-30T18:54:16.377 回答
0

首先让我说,根据这样的标准评估项目就像根据同样的事情评估程序员一样愚蠢。我知道有研究表明代码行数和代码缺陷数量之间存在明显的相关性。在我看来,这只是一个扩大规模的问题。

话虽如此,如果您的领主...错误...我的意思是管理要求您提出一些建议,这里有一些相对容易的测量方法:

  • 节点总数
  • 节点类型数
  • 每个节点的平均属性
  • 最高级别的嵌套
于 2009-01-28T22:12:04.940 回答
0

好吧,如果您只是根据基本的 SOAP/WSDL 操作、消息和类型将模式映射到结构,那么您可能只需将这些方面中的每一个都等同于它各自的方法、消息和类。

例如......这样的客户模式:

  <?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://tempuri.org" 
           targetNamespace="http://tempuri.org"
           xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Customer">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="FirstName" type="xs:string" />
        <xs:element name="LastName" type="tns:LastNameType" />
      </xs:sequence>
      <xs:attribute name="CustID" type="xs:positiveInteger"
                    use="required" />
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="LastNameType">
    <xs:restriction base="xs:string">
      <xs:maxLength value="20"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

...将等同于这样的客户类...

public class Customer
{
    public string FirstName{}
    public string LastName{get;set;}
    etc...
}

通过这种方式,您可以继续在相对范围内使用当前的 SLOC 基准。

这样做的问题是,编写 XML 模式实际上并不能像编写 Java 或 C# 程序那样允许 LOC 的巨大变化。程序员可以用一百万种不同的方式编写 C# 类,其中架构定义更加结构化,并且只允许操作、消息和变量名称的长度变化。因此,如果您现在只是编写 XML 而不是 Java 或 C#,那么您可能需要考虑您的 SLOC 指标在确定项目大小和错误方面将比过去少很多。

于 2009-01-28T22:26:22.493 回答