高品質のソフトウェアは、それより高価な必要が開発したのですか?

ThoughtWorksのチーフサイエンティストMartin Fowler氏は、すなわち、ソフトウェア開発プロジェクトの共通引数があることを指摘し、「ソフトウェアの品質を向上させる、またはそれ以上の価値のある機能を公開に集中する時間がかかる?」彼は多くをもたらし、しばしば議論を支配圧力の機能を提供する」と述べました開発者は、アーキテクチャとコードの品質を勉強する時間がないことを訴えます。 " だから、マーティンは最近、彼のブログで題する論文公表そんなにそれがコストに見合う「高品質のソフトウェアを?記事には、このことを議論します。

典型的に、このような修辞的な質問には答えはノー、明らかです。「実際には、高品質なソフトウェアを作る - しかし、マーティンは、さらに次の質問そのものを覆す説明し、問題は、品質とコストの間の共通のトレードオフを前提とし、彼の見解では、このトレードオフは、ソフトウェアには適用されません。低コスト。」

この文は、あなたの認知を破壊するのですか?人々は不合理ではない「あなたは何を支払う」、トレードオフするために、品質とコストとの間で使用されています。もちろん、マーティンは、ほとんどの場合、この仮定が正しいことを認め、より高品質でより多くの費用がかかります。しかし、彼は、これは絶対的なルールではないことを強調しました。

ソフトウェア品質は多くのことを意味し

マーティンまず「ソフトウェアの品質は、」定義を作りました。明確なユーザーインターフェース:あなたが含まカバーすることができます多くの方法がありますか?ソフトウェアの十分な信頼性はありますか?合理的な構造は、それをクリアしますか?

ユーザーは、ユーザーインターフェイス良いかどうかを判断することができます。幹部は、ソフトウェアの仕事かどうかをより効率的に決定することができ、消費者は、ソフトウェアに障害が発生した場合は特に、システムの欠陥に気づくでしょう。しかし、ユーザーは、ソフトウェアアーキテクチャを理解しないかもしれません - これは、ソフトウェア開発者のための品質基準の一つです。

したがって、この記事では、ソフトウェアの品質に分割属性意志外部(例えば、UIや欠陥など)と内部(アーキテクチャ)。違いは、ユーザーや消費者が高品質で外部のソフトウェア製品のための理由を見ることができるということですが、内部品質のレベルを区別することは困難です。

ユーザーへの一見無関係な内部品質

ユーザーは、彼らがより良いユーザーインタフェースのためのより多くを支払うことをしたいかどうかを判断することができますが、内部モジュール構造のために難しい判断します。前者はもっと混乱しながら想像し、存在する場合は2つの、ほぼ同一のアプリケーションが$ 600売る、$ 10のための別の、唯一の違いは、後者のソースが整然とです。これは、顧客がなぜ、後者を買うために$ 400過ごす、プログラムの正常な動作には影響を与えませんか?なぜソフトウェア開発者は、作業の内部品質を向上させるために時間と労力を費やしていますか?

これは、「技術的負債」(中・マーティンにつながる技術的負債総の概念)。コードは、技術的負債の蓄積によって引き起こされる混乱の元凶であるため、クリーンアップするのが難しい残留項目(嫌なもの)、新機能の賃金を上げるために追加の努力は借金の利息です。

十分な明確なモジュール構造は、新しい機能を追加すると仮定すると、しかしので混乱しロジックまたはように規制の問題などを理解することは困難コードデータの4日間を必要とする場合は、この作品は6日まで延長することができます。

これらだけでなく、面倒な部分はより多くの時間がかかり、エネルギーの開発者になりますが、また、エラーの可能性を増加させ、そして未来が修復するために多くの費用が必要になります。

内部ユーザーの品質に重要な、実際には、この光の中で見られます。優れた内部品質は、新機能の追加より速く簡単に、かつ低コストになりますので。

の内部品質に影響を与えます

マーティンは言った、「内部品質の基本的な役割は、将来の変更のコストを削減することである。しかし、良いソフトウェアを書くために短期的にはいくつかのコストを持っている、余分な労力を必要とします。」この目的のために、彼は内部品質の効果を提示する方法を視覚化するために2つのチャートを提供します。

図は、ケース内部のソフトウェアの品質が悪いです。仕事が非常に迅速に進んで、時間の初期に見られますが、時間をかけて、新しい機能を追加することがますます困難になることができます。これは、ソフトウェアの仕事のほとんどの窮状です。

開発者は簡単に新しい機能が前作を利用構築することができ、生産性の低下を引き起こす可能性のある高品質なインテリアに焦点を当てます。この目標は達成するために熟練した、よく訓練されたチームが必要です。

後曲線の高い内部品質と相まって、微妙なのいくつかが出現:高い内部品質のソフトウェアよりも早く、低内部品質はより生産、その間に、いくつかのトレードオフ品質とコストとがあります。質問は、それがどのくらいの期間続くことができますか?

Martin 综合参考了一些熟练开发者的意见,发现质量差的代码会在几周内显著降低生产速度,拥有高内部质量的软件随后远远反超。因此,从长远看来,不必太费心思在质量与成本之间权衡。

即便最好的团队也会产生垃圾

即使是最优秀的团队也会在工作时不可避免地产生一些无用且琐碎的东西(cruft)。

许多人将构建软件比作建造摩天大楼,想想为什么高级程序员被称为“架构师”?但软件构建于物理世界未知的不确定世界中,软件开发的构建模块——语言、库和平台——每隔几年就会发生重大变化。鉴于这种程度的变化,软件项目总是创造出新颖的东西。Martin 说他常常听到团队只有在花了一年左右的时间构建它之后,才能真正理解软件的架构。即使是最好的团队也会在他们的软件中肆意妄为。

不同的是,好的团队即使创造了垃圾,也能及时清理掉它们,他们可以继续快速添加功能。此外,他们还会花时间创建自动化测试,也经常进行重构,以便快速解决问题、清理残余。

Martin 用清理厨房来比喻这项工作:做饭时如果不快速清理台面污渍,之后更难去除,所有肮脏的东西会妨碍烹饪下一道菜。

高质量的软件生产成本更低

总结一下:

  • 忽视内部质量会导致 cruft 快速产生
  • 这将进一步延缓功能开发
  • 即使是一个伟大的团队也会产生这样的问题,但通过保持内部质量,可以控制它
  • 高内部质量使团队能够以更少的工作量、时间和成本开发新功能

一些开发团队向 Martin 诉苦:“管理层阻碍我们写出质量好的代码,因为它需要花费太长时间”。对此 Martin 再次呼吁,高内部质量实际上降低了未来成本,了解内部质量与成本之间的关系对于以最高效率开发软件来说至关重要。

おすすめ

転載: www.oschina.net/news/107103/is-high-quality-software-worth-the-cost