生産性を測定するためのSLOCの有効な使用方法は知られていますか?


54

動的言語と静的言語について、非常に上級のアーキテクトと異常な短い会話をしました。彼は、企業データは、静的言語を使用した場合の生産性向上の証拠があることを示していると述べました。注意してください、それは長い歴史を持つ大企業です。驚いたことに、彼が使用した測定基準は追加されたコード行でした。

彼は、SLOCメトリックが生産性を比較するのに役立つように、同じ企業内で、似た文化、業種、十分なデータを持つ違い(個人の固有の状況と能力に関する)が十分に混ざり合っていると言うメトリックに関する異議をすぐに却下しましたツールと言語。

この主張が厳密な統計分析に裏付けられているとは思わないが、この考え方を裏付ける証拠は業界にあるか?


25
生産性は間違った用語です。この用語は、一定の期間に達成される作業量として定義され、生成されるコードとは無関係です。
フランクヒルマン

25
賢明な人は、コードの行を「構築」ではなく「使用済み」と見なすべきだと言いました。物理工学では、部品点数とBOMの長さを考慮すると、小さい方が優れています。
pjc50

23
異なる言語を比較すると(静的であろうと動的であろうと)「同じ会社内で、似たような文化、業種を持っている」という前提が無効になります。言語の違いにより、SLOCの比較が無意味になります。
ロブ・

4
このメソッドには悲劇的な欠陥があります。同じ開発環境を使用している同じ会社の2人の異なる開発者でさえ、同じ機能セットを実装するために大幅に異なるSLOCを作成することがよくあります。
17年

8
SLOCを使用して生産性を測定することは、排出される汚染を使用して、燃費が重要な場合に移動距離を測定することと同じくらい理にかなっています。これが正しい方法はまだ間違っています。これを使用ます。
candied_orange

回答:


65

上級アーキテクトの議論は、2つのことを意味します。

  1. 会社の平均的な開発者は、動的言語を使用する場合よりも静的言語を使用する場合の方が多くのコード行を生成することを意味する場合があります。たとえば、15人の開発者が6か月間Javaを使用する場合、100 KLOCを作成し、同じ15人の開発者が6か月間Pythonを使用する場合、50 KLOCのみを作成します。

    ここでは、LOCと生産性の間に相関関係はありません。Pythonで同じ機能を生成するためにJavaで4倍のコード行が必要な場合はどうなりますか?その場合、Pythonを使用すると、上記のKLOCメトリックに基づいて生産性が2倍になります。

  2. また、会社の平均的な開発者は、動的言語を使用する場合よりも静的言語を使用する場合のコード行数が少ないことを意味する場合があります。

    通常、コードの行数は少ない方が(書き込み、読み取り、保守のコードが少なくなります)、Java開発者がPythonの機能と比較してどの程度の機能を生成したかはまだ不明です。Python開発者に比べて半行のコードを書いただけでなく、機能の数が半分になったのかもしれません。

どちらの場合も、同じ機能が異なる言語の同じコード行数に変換されないため、LOCは価値のある指標ではありません。一部の言語はより冗長になる傾向があります。その他-よりコンパクト。場合によっては、コンパクトさが重要ですが、そのための一般的なルールはありません。極端な例は、非常にコンパクトですが、読みやすさでは一般的ではないBrainfuck言語です。同様の言語を比較するのは難しい場合があります。たとえば、中括弧に関しては、JavaはK&Rスタイルに従いますが、C#では、ほとんどの場合、公式スタイルに従う場合、オープニング中括弧は独自の行にあります。 C#のLOCの増加。そして、手続き型言語とオブジェクト指向言語、または関数型言語を比較するとどうなりますか?

エラーが発生しやすいメトリックを使用する代わりに、上級アーキテクトは、一緒に使用すると生産性を測定するメトリックのグループに依存できます。1か月あたりに開発される機能の数、コードベースに導入されるバグの数、およびそれらのバグの解決に費やす時間、技術的な負債の進化など。新しい言語にチームが不慣れであることを考慮する必要があるため、この比較は最初は難しいかもしれません。チームが十分な知識を身に付けたら、安定した指標に基づいて選択する必要があります。また、ほとんどの場合、チームのメンバー自身の好みに基づいて選択する必要があります。

LOC 、いくつかの狭い状況で値を持ちます。たとえば、プロジェクトのサイズとプロジェクトの一部についてのヒントを提供したり(平均して機能ポイントと相関しますが、測定しやすいことが多い)、さらに注意が必要なメソッドやクラスを示すことができますその大きなサイズの。ただし、LOCは、関係のないものの間の何らかの相関関係を想像する人によって頻繁に誤用されるため、注意して使用する必要があります。過去に最も悲惨なLOCの使用法は、過去に月ごとに書かれたLOCに基づいて個々の開発者の生産性を測定する試みでした。


8
うん。私が信頼する唯一の測定基準は、単位時間あたりに完了したチケット(機能、バグ、調査など)の数です。これは、チームによって異なります(別のチームが異なる粒度でチケットを打破する)が、チームの同じチームやグループ内の文化は(限り、あなたはその文化の外からそれらを比較しないよう)チケットのサイズはかなり正確にするために出てきます
スリーブマン

10
私はより多くのが好きなこと:「のみ1つのメトリックに頼ることはありません」
Chococroc

30
@slebetman私はあなたのチケットを作成する人の精度/一貫性にjeしていますが、「2単語の修正」から「機能Xの追加」までの問題を解決する必要があります。チケットのメトリックは、LOCよりも役に立たない。クラスのコードを20 LOC減らすことで、少なくとも作業が完了したことがわかります。5つのチケット解決するのに1時間かかることもありますが、1週間かかることもあります。
R.シュミッツ

3
@ R.Schmitzこれは私の会社でも同じですが、各チケットにもサイズが関連付けられているため、チケットサイズを合計しても問題ありません。
ニコバーンズ

1
これらのメトリックを使用しようとしても問題があります。追加された機能が複雑で実装が難しい場合はどうなりますか?または、特定の機能を言語に実装するのが特に簡単または困難であるが、一般的にその言語を使用する方が簡単/難しい場合もあります。生産性の欠如は、現在の従業員が最初は言語に精通していないためかもしれません。使用する言語を決定するために、主にメトリックに依存するべきではありません。
ジョンスミス

26

生産性とSLOCについて

SLOCの問題

SLOCメトリックの問題は、以下を考慮せずに、記述されたコードの量の概算を測定することです。

  • コードの品質(つまり、バグのために100 SLOCごとに90 SLOCを追加しなければならないが、コードが配信された時点ではわからない場合)
  • コードで達成された目標(つまり、10K SLOCは予想されるすべてのユースケースまたはユーザーストーリーを処理しますか?それともごく小さなサブセットのみを処理しますか?)
  • コードの保守性(つまり、予想される進化する要件に合わせてコードを調整するには、1%または50%のコードを追加する必要がありますか?)

別の言い方をすれば、コピーペーストされた部分を多く含む、エラーが発生しやすいメンテナンス不可能なスパゲッティコードの生成は、慎重に設計された再利用可能なコードよりも生産的であると見なされます。

そのため、SLOCは生産性を測定する最良の方法ではありません。

どのような生産性を考慮していますか?

プロセスの生産性が測定されます。したがって、SLOCは、コーディングプロセスだけで完全に有効な指標になる可能性があります。

たとえば、貧しい要件を誤解し、ソフトウェアを生産するために5か月を費やし、それをユーザーに見せ、それが明らかに間違っていることを発見し、さらに5か月を費やして最初から完全に書き直す場合、SLOCでも同じ生産性が得られます/ month、たとえば、頻繁にフィードバックすることで誤解を減らすアジャイルプロセスを使用したために、チームがコードを最初に作成すること。この明らかな平等な生産性は、大きな問題を隠しています。

そのため、ソフトウェア開発の生産性の測定では、要件の分析、コーディング対象の設計、コーディング、テスト、デバッグ、ユーザーの期待を満たしていることの検証など、プロセス全体を考慮する必要があります。これらのアクティビティはすべて非常に異なるため、最も重要なことは、問題となる唯一の思考を測定することです。つまり、動作しているソフトウェア、つまり、ソフトウェアが生成したものがユーザーにとって意味するものです。

ソフトウェア成果物の測定方法

いくつかのアプローチがあります。

  • 従来のソフトウェアエンジニアリングの典型的なアプローチは、ファンクションポイント(FP)です。機能ポイントは、満たすべき要件基づいて測定されます(たとえば、フォームの数、各フォームのフィールドの数など)。生産性は、単位時間あたりおよび1人あたりFPで測定されます。一部の企業は、特定のドメインの特定の言語で、開発者が単位時間あたりに生成できる機能ポイントの数を示すデータさえ持っています。FPの問題は、事前に非常に詳細な要件が必要であり、時間がかかることです。
  • より現代的で実用的なアプローチは、ストーリーポイント(SP)です。これらは、生成されるコードの複雑さを評価するために使用され、開発チームの速度を評価するために日常的に使用されます。ただし、SPは、すべての詳細が判明する前に実行された作業の推定尺度です。実際に起こったことの最終的な測定値ではありません。そのため、生産性の指標として使用する場合は、推定プロセスで裏目に出る可能性があるため、注意が必要です。

静的タイピングと動的タイピングの生産性について

私は自分が静的に型付けされた言語のファンであることを告白しなければなりません。なぜなら、私の内なる自己のほうがより信頼性が高いことを知っているからです(コーディングの年月がそれを証明してくれました)。

したがって、私が確実にとるべきことは、静的に型付けされた言語は、静的に型付けされていない言語よりもコンパイル時のエラー/バグ(タイプミス、予想される型の不一致など)を防ぐことができるということです。しかし、すべての客観性において、私はこれをより高い生産性として虐待的に一般化することを敢えてしません。

あなたの建築家は正しいですか?

多分そうでないかもしれません。

しかし、彼の議論は有効ではないようです。静的に型付けされた言語の生産性の向上は、コンパイラーによって事前にキャッチされたかなりの数のエラーに由来します。

したがって、動的に型付けされた言語に必要な手直しを見なくても、SLOCだけを見て、この「より高い」生産性の向上を見つけることはできません。したがって、彼の比較は公平ではありません。

同様の状況の議論も当てはまりません。一部の動的型付け言語では、従来の静的型付け言語のいずれかで同じことを行うよりも少ないコードで済む、より高いレベルの構成体を使用できます。したがって、必要な時間は短くなり、コードの記述は少なくなりますが、同じ分析、テスト、検証のオーバーヘッドが追加されます。したがって、SLOCで生産性を測定すると、潜在的な生産性の向上が希薄になり、動的に型付けされた言語に対するバイアスが生じます。

その主張を裏付ける研究はありますか?

このトピックに関するいくつかの最近の学術研究が存在します。それらの一部には静的型付けの利点がありますが、一般的には特定の目的(文書化、不十分に文書化されたコードまたはAPIの再利用など)に限定されます。慎重な表現も使用されます。これは、最新のIDEが動的型付けに関連するリスクを大幅に削減したためです。


3
あなたの批判のポイントはすでに質問で取り上げられています:「同じ企業内で、似たような文化、業種、十分なデータを持っているので、SLOCメトリックが役立つように違い(個人のユニークな状況と能力に関して)が十分に混ざり合っています」つまり、このスケールでは、すべてのコードベースが同等の品質になるという議論がありました。個人的には、私はそれが本当だとは非常に疑っています。
アモン

具体的な測定にはgitprime(gitprime.com)を使用しますが、その目的の1つは、開発者が同じコード行を何回書き直したかを追跡することです。したがって、コードを作成し、バグレポートを取得してコードを書き直すと、実際に効率が測定され、純生産性がレポートされます。要するに、あなたのコメントは、SLoCを生産性の尺度として使用する上で固有の問題だとは思いません。むしろ、あなたの苦情はSLoCを「適切に」測定しないシステムに関するものだと思います。
コナーマンコーネ

8
@ConorMancone誰もコードを書くための支払いを受けません。彼らはソリューションを作成するために報酬を受け取ります。例えば、大工を使用する釘と板の数で測定します。ボードを短く切り、家に帰る釘をより多く曲げる道化師は、この指標で大工よりも生産性が高くなります。
ジミージェームズ

1
@Christophe私は、主な生産性指標として、生産物への成果物の測定を試みてきました。唯一のトリッキーな部分は、他のものよりも作業が多いものもあるが、時間の経過とともに、チームの規模と構成に基づいてかなり(統計的に)一貫したスループットに向かう傾向があるということです。もちろん、それには多くのことが関係しているので、帰属は課題になる可能性がありますが、それは他の開発生産性測定のアンカーです。
ジミージェームズ

2
数年前、少なくとも1つのプログラミングショップで、一部の人々は論理図を作成し、他の人々はそれらの論理図をコンパイル可能なコードに変換しました。本質的に、ショップのコンパイラには人間のプリプロセッサがありました。SLoC /月を使用して、これらの人間のプリプロセッサの生産性を測定するのは公平でしょう。これは、エンジニアが行くべきだと言った穴に、組立ラインの作業員がいくつのネジを取り付けることができるかに似ています。仕事で15本が必要なときに100本のネジを指定するエンジニアは、会社の生産性を低下させています。(5本のネジを指定する場合も同様です!)
デビッドK

7

上級アーキテクトの反例は次のとおりです。3つのクラスの階層を作成し、そのうち2つは3つ目のクラスから派生し、基本クラスが定義するいくつかの仮想関数を実装するとします。

これら3つのクラスをC ++で記述すれば、それは非常に簡単です。クラスを宣言し、正しい場所で仮想を使用して、完了です。

これらの3つのクラスをCで記述する場合、かなりのコードを追加する必要がありますstruct。v-tableにs を定義する必要があり、v-tableポインターを基本クラスに追加する必要があるため、追加する必要がありますコンストラクタのコードは実際に私が実際に基底クラスのコンストラクタを呼び出すコードにコンストラクタを追加する必要があり、V-テーブルポインタを設定するために、私は明示的にC ++コンストラクタ(呼び出す前に、メモリ割り当てを実行するためのコードを追加する必要がありnew、単一のステップで行いますが)、同様に、私は破壊を後続のfree()呼び出しから分離する必要があります。

重要なのは、これらの追加事項はすべて非常に無意味だということです。私はそれらを非常に迅速に行うことができます。ですから、C ++バージョンを書くのに必要な時間よりも、Cバージョンを書くのに長い時間はかかりません。それにもかかわらず、私はC ++コードよりも多くのCコード行を生成しました。そのため、SLOCに関してはCの方が生産的だったように見えます。

一定量のボイラープレートコードを必要とする言語は、同量のボイラープレートコードを必要としない言語よりも、SLOCの観点から生産性が高くなります。

ご存知のように、SLOC引数には根本的な欠陥があるため、実際には逆のことを見ることになります。「プログラマーは静的言語でより多くのSLOCを生成する傾向があります」という文を取ります。定型コード、したがって生産性の低下」


1
あなたの最後の文が好きです。
ピーター-モニカの復活

1
「静的言語はより定型的なコードを必要とするため、生産性が低下するようです」:これもまた、SLOCメトリックの欠陥を示しています。最終行数では、(1)最終ソリューションを取得する前にコードを書き換える必要がある回数(2)ユニットテスト形式のコードの追加行数が必要である(動的に型付けされた言語では平均してさらに必要になる)ユニットコードを使用して、量産コードの正確性に匹敵する信頼性を持たせる)。SLOCメトリックには間違いがあります。
ジョルジオ

6

私は反逆者になります。

私たちは仕事でSLoCを追跡します(人員配置の決定にSLoCを直接使用しません)が、ほとんどの人が答えで言っていることを人々に議論させました。実際、「Xテクノロジーはより少ないコードでより多くのことを行えるため、LoCは重要ではありません」または「より良い開発者がより良い、より短いコードを書くため、他の誰よりも多く書くことはありません」。私の経験では(これらのことを裏付けるハードナンバーはありませんが)、これらの異議は単に正しくありません。私自身の時間では、エンジニアとしての全体的な「能力」のその他すべての意味のある測定値と比較すると、開発者にとってコード生成の速度と品質の両方に明確な相関関係が見られました。上記の種類の引数にいくつかの反例を与えるには:

  1. はい、一部の言語では、より少ないコードでより多くのことができます。実際、特定のビジネス上の問題(バックエンドのみ)の開発の大部分を「自動化」する、構築したフレームワーク全体があります。このすべての結果は、人々が書くコードが少なくなるということではなく、単にコードを書く時間が増えたということです。その結果、当社では、コード記述の全体的な割合はテクノロジー全体でほぼ一定であり、主にエンジニアの能力レベルに依存しています。
  2. 優れた開発者がよりスマートに記述しているため、より少ないコードを生成するという考えは間違いなく真実ではありません。はい、より適切に設計されたプログラムは、より少ないコード行を使用する可能性があります。しかし、個人的には、より効率的なコードを作成する「より良い」開発者は、より若い開発者が長い時間をかけて作成するよりも、計画を立てるのに時間がかからないことを発見しました。その結果、上級の開発者はコーディングタスクをより迅速に完了し、同じ高率で異なるコードを記述することに進みます。

その最後の部分は、私の全体的な要約です、ところで。私が見つけたのは、技術スタックやプロジェクトの種類に関係なく、ほとんどの開発者が独自のペースを持っているということです。言語に開発者のコ​​ードをより効果的にする多くの機能がある場合、それはビジネスにとって大きな恩恵ですが、それは結果としてより少ないコードを書くことを意味しません。代わりに、機能をより迅速に実行し、すぐに新しいコードに移行します。繰り返しになりますが、最終的な結果は、コーディングのレートが主にスキルに依存し、技術スタックに依存しないことです。実際、このため、一般的に技術スタックは、人々がコーディングするレートよりも、チケットと機能が開発されるレートに大きな違いをもたらすと期待しています。

そうは言っても、コード書き込み率もチケット終了率も生産性の完全な尺度ではないため、SLoCに基づいてスタッフの決定を直接行わないのはこのためです。代わりに、プロセスの一部であり、従業員の評価はできるだけ多くのデータポイントを使用して行われます。私はあなたのアーキテクトが確かに狂っていないと言うでしょう。

1つの例外

私が同意する1つの例外は、定型コードの可能性です。あるクラス(または他のクラス)から別のクラスへのコピーアンドペーストが多く行われて実行される場合、それは明らかにメトリックをゆがめます。これは、大量のコードを自動生成できるツールがある場合にも当てはまります。しかし、これらは規則ではなく例外であることが多いと思います。開発者が時間をかけてボイラープレートコードをコピーして開始する場合、間違った技術セットを使用しています。彼らが実際にコードを書いている場合、それがかなり反復的であっても、私はこれが測定値を少しだけ歪めると期待しています:コードを書くとき、ほとんどの場合、私たちはむしろ問題を考えることができる速さによって制限されます入力できる速さよりも 比較的反復的なコードを記述する場合でも、

明らかに、上記のすべては私自身の個人的な経験に基づいています。あなたの走行距離は異なる場合があり、明らかに私は少数派です。反対意見をお気軽に。要約すると:

コーディングの速度は、問題をどのくらい早く考えることができるかによって異なります。その結果、わずかな例外を除いて、コーディング率は技術セット全体でさえ生産性の適切な尺度であることがわかりました。


4
他にも例外が1つあります。バグハンティングです。特に厄介なバグのバグ検索には時間がかかることがありますが、通常は1行のコード変更になります。
ネイサンメリル

@NathanMerrillそれは良い点ですが、OPにはあまり関係ありませんが、デバッグはすべての言語でデバッグしています(私の頭の中で)、ある技術スタックから別の技術スタックにそれが実質的に簡単または難しい理由はわかりません。そうは言っても、それが全体として、他のメトリックでできる以上に、記述されたコードだけで生産性を判断できない理由です。
コナーマンコーネ

私たちは会社でgitprime(gitprime.com)を使用しており、マネージャーとしてもエンジニアとしても、世界で最高のものだと思います。繰り返しになりますが、これは私たちにとっては絵の一部にすぎませんが、実際の問題が発生するずっと前から、エンジニアの潜在的な問題を特定するのに非常に役立ちました。透明性は素晴らしく、最終的にはすべてがSLoCに集約されます。それが付加する価値と洞察の量を考えると、私は常に何人かのエンジニアがSLoCを手に負えない傾向に非常に疑っています。誰でも彼らの意見を歓迎しますが、それは間違いなく機能します
コナーマンコーネ

質問は、LoCを使用してツールと言語を比較できるかどうかを尋ねることです。上級開発者は、「静的」言語の生産性が高いと述べています。あなたは別の質問に答えているようです-LoCは開発者を比較するために使用できますが、特定の開発者はツール/言語に関係なく同じ数のLoCを書くため、言語を比較するために使用することはできませんか?あなたはここで他の答えに反していると言いますが、あなたは同意しているようです?
TessellatingHeckler

開発者として私は何度も考えることができますが、多くの非DRYコードを取り、それを再利用可能な機能の小さなセットに置き換えました。その後、かなりの量の新しい機能を追加しました。私の本では、実際の価値の倍数を追加しながらコードの量を減らすことは良いことです。私の経験では、最高のエンジニアは最も少ないコード行を記述し、最悪のコードは最も多く記述します。
ジミージェームズ

6

私は時流に乗っていますが。プログラマーの行動への影響を強調する必要があると思います。

生産性の尺度としてSLOCを使用すると、プログラマの士気に有害な影響があります。チーム/会社のエンジニアがSLOCで測定されていることに気付いた瞬間、いくつかのことが起こります。

  1. 彼らは同じ機能を実行するためにはるかに長いコードを書き始めます
  2. 彼らはコードの品質についてあまり気にしません
  3. 彼らはあなたのチームを助ける他のことをやめます(募集、デバッグ、後輩を助ける)
  4. 彼らは自分の仕事を嫌い、おそらく去るでしょう

2つの異なる企業で2回発生するのを見て、士気を設計することはどれほど腐食性があるかを十分に強調することはできません。あなたがそれに対して持っている一見有効なユースケースが何であれ、その使用が発見される可能性はほんのわずかであるとしても、それがあなたのチーム/会社に影響を与える価値はありそうにないと主張します。場合によっては、書き込まれた行数と有用な機能の量との間に相関関係がありますが、プログラマーのすべての間違った動作を助長し、品質が重要ではないメッセージを送信します。


確かに...冗長なコードを削除するから誰かをディスインセンティブ任意のメトリック(「!あなたは今週、負のSLOCメトリックを持っていたが、」間違っている、平野間違っている!
アンドリュー・

1

一般に、生産性を測定する有効な方法とは見なされません。通常、小さなコードは大きなコードよりも優れているため、生産性の高い開発者は通常、少ないコードを生成します。デバッグでは生産性が最大の打撃を受けます。効率的な開発者はデバッグにほとんど時間をかけません。

静的に型付けされた言語は(言語間の他のすべての違いを制御する場合)より生産的です。賢明に使用すると、デバッグ時間を短縮し、コンパイル段階でエラーをキャッチし、修正が速くなるためです。


1
個々の開発者の生産性を比較する場合、これは有効なポイントになる可能性があります。ただし、問題は言語間の比較に関するものであるため、コンテキストは非常に異なります。また、これは、例えば、小さなコードが大きなコードより良くも悪くもないことを意味します。Brainfuckで記述されたコードのLOCを、たとえばRubyで記述されたコードと比較します。
アルセニムルゼンコ

1
@ArseniMourzenko Brainfuckのようなジョークは別として、適切に設計された言語は、タスクを解決するために必要なコードの量に基づいて実際に比較されます。通常、このような比較は表現力と呼ばれます。それは本当ですが、私は言語を越えてではなく、単一の言語内でLOCについて話していました。生産性は通常、タスクの実行にかかる時間として定義されます。それはプログラミングに固有のものではありません。
フランクヒルマン

0

言語間で開発者の生産性を比較するために使用できる唯一のメトリックは、言語間でコードを比較しないメトリックです。いくつかの言語は冗長である(悪名高いCOBOL)こともあれば、1行のコードで実行できることを実行するためにいくつかの手順を必要とするものもあります(アセンブリとそれ以外のほぼすべて)。アクティブなコード行のみを比較した場合(つまり、宣言をカウントせず、何らかのアクションが関係するコードのみをカウントした場合)、結果を歪めることができます。

変化率について議論することができるかもしれません。つまり、同じ期間の生産性の傾斜を比較するコード行が追加されました。ただし、コード行のマイナスの変更は考慮されていません。たとえば、どこにでもコードをコピーして貼り付けるプロジェクトを継承します。繰り返しのコードブロックの数を減らすために、いくつかの迅速かつ簡単なリファクタリングを実行します。定義により、負の勾配があります。

すべての深刻さにおいて、チーム/言語の生産性を比較することは無意味です。なぜなら、チームの生産性に影響する多くの追加要因があり、そこから有意義な結論を引き出すことができないからです。

インフラストラクチャが非常に脆弱で、ツールが時代遅れであるプロジェクトに取り組みました。このプロジェクトはJava上に構築され、シングルページアプリがスラップされていますが、明らかな利点がないため、ポートレットコンテナでホストされています。簡単な変更でさえ、とてつもなく長い時間でした。その特定のプロジェクトにすべての結論を下す場合、Javaが悪い、または単一ページアプリが悪いと結論付けるかもしれません。どちらも真実ではありません。いプロジェクトが置き換えることになっているシステムは、C#とWebFormsで構築されました。顧客のニーズに対応するために既存のアプリケーションを拡張するビジネスケースを作成したとき、生産性が急上昇しました。それは、密結合されたWebFormsアプリの方が優れているということですか?あなたはこの特定のケースについてのみその結論を出すことができますそして、それは世界全体には及ばない。そして、それはだけ延長するのに十分な成熟度を持つ既存のアプリケーションがあったので意味があります。

問題追跡システムで解決するアイテムのレートを比較することでさえ、完全なプロジェクトインフラストラクチャを互いに比較しているという意味で欠陥があります。使用されるライブラリとフレームワークは、進行を加速または減速させることができます。立ち上がる段階で、克服する慣性がほとんどない場合があります。この場合、「より良い」プロジェクトは、新しいチケットの数が比較的少ないメンテナンス段階にあります。似たようなものを比較することは決してありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.