ホームページ  >  記事  >  バックエンド開発  >  パースペクティブ ソフトウェア開発プロセスの難しさ_PHP チュートリアル

パースペクティブ ソフトウェア開発プロセスの難しさ_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:30:14897ブラウズ

著者: Tian Zhanhai 1 はじめに プログラマーであれば、時間内にタスクを完了できないことに悩むことがよくあるかもしれません。あなたがプロジェクト マネージャーである場合、予算とスケジュールの要件を満たすソフトウェアを開発するのが難しいと感じるかもしれません。実際、ソフトウェア プロジェクトは大幅に期限を過ぎたり、予算を超過したりすることが多く、これは依然としてほとんどのソフトウェア組織を悩ませている問題です。米国の評価報告書によると、国防総省の主要なソフトウェア契約17件のうち、平均28カ月のスケジュールが20カ月遅れた。 4 年以内に完了するはずのタスクが 7 年経っても提出されておらず、期限内に完了したプロジェクトは 1 件もありません。 B1爆撃機の配備はソフトウェアの問題で遅れ、580億ドルのA12航空機計画も同じ理由で部分的に中止された。 20~30年続いてきたソフトウェア危機はなぜ激化しているのでしょうか?ソフトウェア開発はなぜそれほど難しいのでしょうか?この記事では、著者の経験に基づいてソフトウェア開発の難しさを分析し、いくつかの提案を提示します。 2 問題点 2.1 非常に複雑 大規模なソフトウェア製品のほとんどは、数十行または数百万行のソース コードで構成されています。たとえば、Windows95 オペレーティング システムは、約 1,100 万行のコードで構成されています。コードの各行はプログラムの他の部分に影響を与える可能性があり、各部分は相互に影響を与える可能性があります。このように複雑かつ巨大なシステムでは、ほんの小さなミスがシステム全体の崩壊を引き起こす可能性があります。 Windows などの大規模なソフトウェアは、人類がこれまでに構築したものの中で最も複雑なものの 1 つである可能性があり、古代から現代までの最も複雑な建物と比較することはできません。 2.2 不確実性の高さ ソフトウェアプロジェクトには当初から不確実な要素が多く存在します。 1: ユーザーのニーズを判断するのは難しい。なぜなら、ソフトウェア開発者にとってユーザーのニーズを詳細に把握することは難しく、ユーザー自身も製品を見る前には何が必要なのか正確には分からないため、プロジェクト開発の最初から最後まで新たなニーズが発生する可能性があります。システム構造は常に変更され、最終的には認識を超えて変更されます。その 2: デザインは完全に予測できるわけではありません。場合によっては、設計中に実現可能と考えられたソリューションが実装時には機能しない場合や、初期設計ソリューションに時間内に発見されなかった重大な欠陥があった場合、または設計中に予期していなかった技術的な問題が突然発生してプロジェクトの進行が妨げられる場合があります。実際、設計から実装までには予測不可能なことがたくさんあります。 3 番目: ユーザーのニーズは常に変化します。最初のユーザーのニーズが明確に理解されていない場合、プロジェクト全体がすぐに変化するニーズに巻き込まれ、そこから抜け出すことができなくなる可能性があります。第 4 に、客観的条件の不確実性。プロジェクトの進行中には、人員の移動やリソースの調整が発生したり、プロジェクトの正常な進行を妨げる何らかの客観的条件による制限が発生したりする場合があります。このような高いレベルの不確実性の中で、初期段階でプロジェクトを正確に見積もることは困難であるだけでなく、不可能ですらあります。 3 プロジェクト遅延の理由 3.1 開発者の過度の楽観主義 多くの開発者は、この種の盲目的な自信はプロジェクト開発にとって間違っています。最も楽観的な見積もりによれば、ソフトウェア開発には不確実性が多すぎるため、ほとんどのタスクは時間通りに完了できない可能性があります。タスクの複雑さと難しさ、自由に使える時間、起こり得る緊急事態の影響を明確に理解して見積もっていなければ、たとえ自分のスケジュールを保証したとしても、納品が時間通りに行われないこともよくあります。 3.2 外部からの圧力 プロジェクト マネージャーや顧客は皆、プロジェクトができるだけ早く終了することを望んでおり、プロジェクトにタイム ノードを設定します。 これらの時間ノードは実装が不可能または非常に難しいように設定されている可能性がありますが、開発者は時間通りに作業を完了し、必要な機能をできるだけ早く完了するために残業する必要があり、システム構造の検討は脇に置かれます。これを二次的な位置に置くと、将来のプログラムのメンテナンスに潜在的な危険が生じます。さらに恐ろしいのは、圧力が高まるにつれて次々とバグが発生し、最終的には手戻りが増えることだ。プログラムはプログラマーの子供のようなものです。誰もが自分の子供が丈夫に成長することを望んでいますが、子供が増えて出産が早ければ、それは不可能です。 3.3 プロジェクト外からの干渉 プロジェクトの開発者がプロ​​ジェクト外のものに頻繁に邪魔され、プロジェクトの開発に専念できなくなると、進捗に影響が出ることがよくあります。この現象は、小規模なソフトウェア会社でより一般的です。開発者は複数の役割を担っており、同時に複数のプロジェクトの開発に参加することもあります。他のプロジェクトの完了を急ぐと、そのプロジェクトも遅れざるを得なくなります。 3.4 プロジェクト管理の混乱 ソフトウェア会社内のプロジェクト管理の混乱は、世界中で共通の問題のようです。カーネギーメロン大学のソフトウェア工学研究所 (SEI) は、混乱から持続可能な発展に至るまでのソフトウェア企業の状態を測定するための一連の基準を確立しました。これが CMM の 5 段階の基準です。最初のレベルが最も混乱しており、レベルが上がるごとに状況は良くなっていきます。5 番目のレベルが最高です。 2001 年 1 月末までに、さまざまなレベルの認定に合格したのは、世界で 1,654 社のソフトウェア企業および団体だけでした。下の図から分かるように、これはピラミッド型の分布状況となっており、この図では2級以上の企業のみを示しており、ピラミッドの最下位にある1級企業の数は1,654社となっています。したがって、世界的に見ると、ソフトウェア管理の全体的なレベルは依然として非常に低いです。 3.5 開発者の不足 世界中で人材をめぐる競争が最も激しいのは IT 業界かもしれません。人材の絶対的な不足により、多くの企業が緊急に必要な人材を採用できなくなっている一方で、人材の流出により企業は容易に従業員を失うことにもなりました。プロジェクトの人員が不足していたり​​、人材が頻繁に異動したりすると、プロジェクトの正常な進行は保証されません。 4 建設遅延を回避する方法 4.1 不確実性に対して十分な準備をする 中国人は皆、「三国志演武」で諸葛孔明が赤壁で何人もの待ち伏せをして曹操を追いかけ、迎撃したことをよく知っています。たった一度の行動で、プロセス全体が注意深く準備され、展開されたため、彼は素晴らしい勝利を収めました。ソフトウェア開発でも同様で、プロジェクトの初期段階では、行き場がなくなってしまうことがないよう、途中で起こり得るさまざまな状況に備えておく必要があります。 4.2 製品の柔軟性に基づく 設計の柔軟性はソフトウェア製品の核心です。優れた設計は常にメンテナンスとアップグレードが容易ですが、悪い設計は将来のメンテナンスに多大な問題を引き起こし、製品全体が廃棄されて再構築される可能性もあります。したがって、ソフトウェア開発の初期段階では、急いでコードを書いたり、スキルを磨いたりするのではなく、全体の設計に多大な労力を費やす必要があり、初期の投資により高い利益が得られます。 4.1 ソフトウェア管理レベルの向上 ISO9000品質マネジメントシステム規格シリーズは、生産体制や管理体制に問題がなければ、提供される製品やサービスに問題がないことを前提としており、その管理方法を示しています。レベルは製品の品​​質に重大な影響を与えます。 ソフトウェア会社が管理レベルを向上させるための最善の方法は、CMM レベル認証の取得や ISO9000 品質システム認証の取得などの目標を設定し、その目標に向かって取り組む過程で徐々に管理レベルを向上させることだと思います。 。 1 結論 この記事では、ソフトウェア開発プロセスの困難さと、プロジェクトの遅延を引き起こすことが多い要因について表面的な分析を行いましたが、あまり体系的かつ包括的なものではありません。建設の遅延を回避する方法についてもいくつかの提案がなされました。読者の皆様は、それらを批判し修正していただくようお願いいたします。 2 参考文献 1.カーネギー メロン大学ソフトウェア エンジニアリング研究所、ソフトウェア機能成熟度モデル (CMM): ソフトウェア プロセス改善ガイド、2001 年 7 月。 2. [ドイツ] Hoch、Ledin、Puckett、Lindner、Miller、ソフトウェア業界の成功の秘密、2000 年 3. Gong Jianya、現代 GIS の理論と技術、武漢測量地図出版局、1999 年 3 月 4. Liao Bin、CMM の紹介 1. 2001.09

www.bkjia.com本当http://www.bkjia.com/PHPjc/509182.html技術記事著者: Tian Zhanhai 1 はじめに プログラマーであれば、時間内にタスクを完了できないことに悩むことがよくあるかもしれません。あなたがプロジェクト マネージャーであれば、開発は予算とスケジュールどおりに進んでいると感じているかもしれません...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。