ソフトウェアピーターの原則は、ソフトウェア エンジニアリングにおいて、開発者自身でも理解できないほど複雑になった、死にゆくプロジェクトを説明するために 使用されます。
これは業界ではプロジェクトのサイレントキラーとしてよく知られていますが[引用が必要]、症状が現れたときには対処するには遅すぎることがよくあります。[引用が必要] 優れたマネージャーは、不必要に複雑なコードや設計を避ける明確なコーディング手法を確立することで、この惨事を避けることができます。
この名前は、 C++ FAQs (下記参照)という本で使用されており、 階層型組織における無能さに関する理論である ピーターの原則に由来しています。
原因
概念的整合性の喪失
ソフトウェアの概念的整合性は、The Mythical Man Monthによると、単一のシンプルな設計原則にどれだけ準拠しているかを測る尺度です。[1]適切に行われると、最もシンプルなイディオムを使用して 最大限の機能を提供します。ソフトウェアの作成と学習が簡単になり、使いやすくなります[要出典]。
概念的整合性は、ソフトウェアの設計が少数の同意した個人によって進められるときに達成されます[引用が必要]。ソフトウェアが概念的整合性を維持するには、コード (すべてのサブルーチンと変数がどのように相互作用するかの性質を含む) を深く理解している単一の少人数のグループによって設計が制御される必要があります[引用が必要]。
強力なソフトウェア アーキテクチャチームを持たないプロジェクトでは、設計タスクは実装タスクと[曖昧な表現]結合されることが多く、個々のソフトウェア開発者に暗黙的に委任されます [引用が必要]。このような状況では、開発者が製品の利益を優先して個人的な利益を犠牲にする可能性は低くなります[引用が必要]。開発者が新しいデザインを追加したり、流行や個人の好みの変化を反映するために以前のデザインを変更したりすることで、製品の複雑さが増します[引用が必要]。
プログラマーの無能さ
Code Completeによると、優れたソフトウェア開発者は、コンピュータとのコミュニケーションよりも人とのコミュニケーションの重要性を理解しています。[2]調査によると、プログラマーは人とのコミュニケーションに時間の50%以上を費やしており、実際のプログラミングは、上級レベルに応じて15%から10%程度しか占めていないことがわかりました。[3] [4] [5] [6]
保守プログラマーは、保守しなければならないコードを理解するために時間の 50 ~ 60 パーセントを費やしており、ソフトウェア プログラムには、その存続期間中に平均 10 世代の保守プログラマーが存在します[要出典]。
プログラマーの経験不足
プログラマーは、うまく機能する実装の選択をすることがありますが、意図しない悪影響を及ぼします。これらの最も一般的な間違いは、書籍「リファクタリング」でカタログ化され、 「臭い」と呼ばれています。[7]時間が経つにつれて、このような実装の選択の多くはソフトウェアの設計を劣化させ、理解するのがますます困難になります。
参照
- アンチパターン – 繰り返し発生する問題に対する一般的な対応で、通常は効果がない、または逆効果になる
- デスマーチ(プロジェクト管理) – プロジェクト管理用語
- グリーンスパンの第10のルール – コンピューティングの格言
- プロジェクト管理 – 指定された時間内に目標と基準を達成するためにチームの作業をリードする実践
- ソフトウェア開発プロセス – ソフトウェアが開発されるプロセス
- 難読化(ソフトウェア) - 理解しにくいコードを意図的に作成する
参考文献
- ^ ブルックス 2013.
- ^ マコーネル 2004年。
- ^ サリバン 1988年、2-5頁。
- ^ 職場のスタックエクスチェンジ 2022。
- ^ ロデナス 2022.
- ^ グラム2019。
- ^ ファウラー&ベック 2013.
文学
- Brooks, Frederick P. (2013)。『神話の人月: ソフトウェア エンジニアリングに関するエッセイ』 (新章 4 章を追加した記念版、39 刷)。マサチューセッツ州ボストン: Addison-Wesley。ISBN 9780201835953。
- Cline, Marshall P.; Lomow, Greg A.; Girou, Mike (2010). C++ FAQs (第 2 版). Reading, Mass.: Addison-Wesley. ISBN 978-0-201-30983-6。
- ファウラー、マーティン、ベック、ケント(2013)。リファクタリング:既存コードの設計を改善する(第28版)。ボストン:アディソンウェスレー。ISBN 978-0201485677。
- Grams, Chris (2019-10-15)。「開発者は実際にコードを記述するのにどのくらいの時間を費やすのか?」The New Stack。2023-12-05に閲覧。
- マコーネル、スティーブ(2004)。コード コンプリート(第 2 版)。ワシントン州レドモンド: Microsoft Press。ISBN 0735619670。
- Rodenas, David ( 2022-10-21 ). 「開発者がコーディングに費やす時間は 10% 未満」。Medium。2023-12-05に閲覧。
- サリバン、 SL (1988)。「ソフトウェア専門家 はコミュニケーションにどのくらいの時間を費やしているか?」ACM SIGCPR Computer Personnel。11 ( 4): 2–5。doi : 10.1145/54127.54128。ISSN 0160-2497。
- 「ソフトウェア開発者の皆さん、仕事中の他のタスクと比べて、実際にコードを書くことにどれくらいの時間を費やしていますか?」The Workplace Stack Exchange . 2022-03-21 . 2023-12-05に取得。
