XML プログラミングの労力の規模をどのように測定/推定しますか?
-
20-08-2019 - |
質問
状況を設定するために - 私は、ほぼあらゆるものを見積もり、追跡することが大好きな業界の 1 つで働いています。私たちの重要な指標の 1 つは SLOC (コードのソース行 - 宣言文と実行文) です。プロジェクトの規模とコストの見積もり、プロジェクトの計画、その他多くの目的でこれを使用します。私たちはこれを同一の結果を比較するために使用しようとします (つまり、ある言語/ドメインの SLOC を別の言語/ドメインの SLOC と比較しません)。 注記:私たちはこの指標に基づいて個々の開発者を評価しません。また、SLOC が予想と異なるからといって、何かが間違っているとか悪いとは言いません。私たちは する, ただし、SLOC が多いプロジェクトにはバグも多く含まれる可能性が高いと考えてください。
ごく最近、私は手作業でコーディングされるはずだったコンポーネントの代わりにライブラリを使用するプロジェクトに取り組み始めました。たとえば、JSP の代わりに JSF、JDBC の代わりに Hibernate を使用するなどです。それで...私たちのチームはコード行を記述する代わりに XML ファイルを開発しています。XML マッピングには依然として手間がかかり、複雑さのあいまいな相関関係が依然として存在します。特定のプロジェクトにこれらの XML 構成ファイルが 100 倍あるということは、XML 構成ファイルだけを含むプロジェクトよりも作成に多くの労力がかかり、デバッグがより複雑になる可能性があることを示唆している可能性があります。 XML ファイルの 1/100。
それで...これらの XML 構成ファイルのサイズを測定するための提案がある人はいますか?要素の数?# 要素 + # 属性?他に何か?
解決
興味深い質問。私が知っ(単に数えるノード以外の、あなたが提案するなどの属性)のみメトリックは何かは、構造化文書の複雑さメトリックと呼ばれています。
http://www.oreillynet.com/xml/blog /2006/05/metrics_for_xml_projects_5_str_1.htmlする
は、私は(そのしばらくして)、現在その上で見つけることができる最高のリンクです。
:私はまた、明らかに(他の人があるかもしれません)あなたのためにそれを計算します。この小さなツールを見つけましたhttp://schematron.com/resources/documentcomplexitymetric.htmlする
それ以上に、私は私の唯一のアドバイスはちょうど彼らが実際には各文書に適用されている努力で傾向かどうかを判断することは合理的に見えるように追跡するメトリックのカップルを選ぶと、再評価そのことであろう怖いです..ます。
他のヒント
まず最初に言っておきますが、このような基準に基づいてプロジェクトを評価することは、同じ基準に基づいてプログラマーを評価するのと同じくらい愚かなことです。コードの行数とコードの欠陥の数の間に明確な相関関係があることを示す研究があることは知っています。私の意見では、それは単に規模が拡大しただけの問題です。
そうは言っても、もしあなたの支配者が...えーっと...つまり、経営陣があなたに何かを考え出すように要求しているのであれば、比較的簡単に測定できるものがいくつかあります。
- ノードの総数
- ノードタイプの数
- ノードごとの平均属性
- 最大レベルのネスト
さて、あなたはおそらくそれのそれぞれの方法、メッセージ、およびクラスにこれらの側面のそれぞれを同一視することができます。
たとえば...など、顧客スキーマます:
<?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>
...のようなCustomerクラスに等しくなります...
public class Customer
{
public string FirstName{}
public string LastName{get;set;}
etc...
}
あなただけの相対的な規模でSLOCのためのあなたの現在のベンチマークを使用し続けることができます。この道ます。
この問題でXMLスキーマを書くことが本当にJavaやC#のプログラムを書くことはありませんLOCには大きな変動を許容しないということです。プログラマは、スキーマ定義がはるかに構造化されているとだけは本当に操作、メッセージや変数名の長さの変化を可能と百万個の異なる方法でC#クラスを書くことができます。あなたは今XMLを書く代わりに、JavaやC#している場合、あなたはあなたのSLOCメトリックがはるかに少ない水を保持しようとしていることを検討する必要がありそのため、それはプロジェクトの規模やバグを決定する用語で使用されます。