Как вы измеряете / оцениваете размер усилий по программированию XML? - PullRequest
7 голосов
/ 29 января 2009

Чтобы установить сцену - я работаю в одной из тех отраслей, которая любит оценивать и отслеживать практически все. Одним из наших ключевых показателей является SLOC (исходные строки кода - декларативные и исполняемые операторы). Мы используем его для оценки размера и стоимости проекта, планирования проекта и многого другого. Мы пытаемся использовать его для сравнения яблок с яблоками (т. Е. Мы не сравниваем SLOC на одном языке / домене с SLOC на другом языке / домене). ПРИМЕЧАНИЕ : Мы не оцениваем отдельных разработчиков по этой метрике, а также не называем что-то неправильным или плохим только потому, что SLOC отличается от ожидаемого. Мы делаем , однако, считаем, что в проекте больше SLOC, вероятно, также будет больше ошибок.

Совсем недавно я начал работать над проектами, которые используют библиотеки вместо компонентов, которые иначе были бы закодированы вручную - например, JSF вместо JSP, Hibernate вместо JDBC и т. Д. Итак ... вместо написания Строки кода, наша команда разрабатывает файлы XML. Отображения XML по-прежнему требуют усилий, и все еще существует неопределенная корреляция сложности - что наличие в 100 раз больше этих файлов конфигурации XML в конкретном проекте может указывать на то, что для его создания потребовалось больше усилий, а для отладки - сложнее, чем для проекта с только 1/100 файлов XML.

Итак ... у кого-нибудь есть предложения по измерению размера этих файлов конфигурации XML? количество элементов? # элементы + # атрибуты? что-то еще?

Ответы [ 3 ]

3 голосов
/ 30 января 2009

Интересный вопрос. Единственная известная мне метрика (кроме подсчета узлов и атрибутов, как вы предлагаете) - это метрика сложности структурированного документа.

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

Лучшая ссылка, которую я могу найти на данный момент (это было давно). Я также нашел этот маленький инструмент, который, очевидно, рассчитает его для вас (могут быть и другие):

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

Кроме того, я боюсь, что мой единственный совет - просто выбрать пару метрик для отслеживания, которые кажутся разумными, и переоценить их, чтобы определить, действительно ли они имеют тенденцию с усилием, приложенным к каждому документу. .

0 голосов
/ 29 января 2009

Что ж, если вы просто отображаете схему на структуру с точки зрения базовых операций, сообщений и типов 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-схемы на самом деле не допускает больших изменений в LOC, чем написание программ на Java или C #. Программист может написать класс C # миллионами разных способов, в то время как определение схемы гораздо более структурировано и допускает только изменение длины операции, сообщения и имени переменной. Поэтому, если вы сейчас пишете XML вместо Java или C #, вы можете подумать, что ваша метрика SLOC будет содержать намного меньше воды, чем раньше, с точки зрения определения размера проекта и ошибок.

0 голосов
/ 29 января 2009

Позвольте мне начать с того, что оценка проекта на основе таких критериев столь же глупа, как и оценка программиста на основе того же самого. Я знаю, что есть исследования, которые показывают, что существует четкая корреляция между количеством строк кода и количеством дефектов кода. На мой взгляд, это просто вопрос увеличения масштаба.

Сказав, что, если ваши повелители ... ошибаются ... я имею в виду, что руководство требует от вас, чтобы что-то придумало, вот некоторые относительно простые измерения:

  • Общее количество узлов
  • Количество типов узлов
  • Среднее количество атрибутов на узел
  • Величайший уровень вложенности
...