MANAGING THE DEVELOPMENT OF LARGE SOFTWARE SYSTEMSを英検4級がうとうとしながら訳す。

※いろいろな意味で途中です。



MANAGING THE DEVELOPMENT OF LARGE SOFTWARE SYSTEMS

大規模ソフトウェアシステム開発の管理。
Dr. Winston W. Rovce

導入
 これから、大規模ソフトウェア開発の管理について、個人的な見解を述べたいと思う。過去9年間、私は色々なアサインを経験した。
大部分は、宇宙船のミッションプランニング、コマンディング、ポストフライト分析だ。
これらのアサインメントでは、私は程度の異なる成功を体験した、実行可能な状態に、時間通りに、予算内で到達した。
私は経験により偏見を持つようになった。そして、この偏見を述べたいと思う。

コンピュータープログラムの開発機能
 規模や複雑度にかかわらず、全てのコンピュータープログラムの開発に共通する2つの本質的なステップがある。
まず初めに分析のステップがあり、続いてコーディングのステップが続く(図.1参照)。このある種簡単なコンセプトは、
実際のところ、努力が十分に小さく、最終的な製品がそれを作った人自身が使う場合には、十分だろう(内部で使うコンピュータープログラムでは普通だろう)。それはまた開発の努力の一種だ、ほとんどの顧客が喜んで支払うような、なぜならいずれのステップも
、最終製品の使い勝手に直接的に貢献する創造的な仕事である。しかしながら、大規模ソフトウェア開発に取り組むにあたり、これらのステップだけに注力するならば、失敗することになるだろう。多くの開発のステップが必要になるだろうが、それらは分析とコーディングほど最終製品には直接影響しないうえに、開発コストを要するだろう。顧客側はそういったものには支払いたくないだろうし、開発側はそれらを実施したくないだろう。管理の第一の機能は、これらのコンセプトを両方のグループに売り込み、開発側に服従を強いることだ。

 図1.内部で使用する小さなコンピュータプログラムを実現するステップ。


ソフトウェア開発におけるもっと雄大なアプローチを図2に示す。分析とコーディングステップは未だ図の中にあるが、それらは2つのレベルの要求分析に続き、プログラム設計ステップで分けられ、その後、テストのステップが続く。これらの追加物は、分析とコーディングとは区別される。ならぜならそれらが遂行される方法がまったく異なっているからだ。それらは計画されなければならない、プログラムリソースを最適化するために。
 図3は、この枠組みにおける継続的な開発フェーズにおけるイテレーティブな関係を示している。ステップの順番は、次のようなコンセプトにしたがっている。それぞれのステップが進行するに従い、設計はより詳細になり、先行する、または、後続するステップによるイテレーションがあるが、この流れにおけるリモートのステップというのは滅多にない。これによる美徳は、設計が変更プロセスの前に行われることは、管理可能な限界にスコープダウンされるということだ。要求分析の後の設計プロセスにおけるどの天においても、予見できない設計上の困難という出来事を引き起こすっようなベースラインが存在するということだ。我々が持っているものは、効果的なフォールバックポジションだ。それは、サルベージ可能で保存可能な初期の仕事を最大限拡張できる傾向にある。
 
 図.2 顧客に提供する大規模コンピュータプログラムの開発を実現するステップ。

 私はこのコンセプトを信じるが、前述した実現方法はリスキーであり、失敗を招くだろう。問題は図4に示した。開発サイクルの最後に発生するテスティングフェーズは、タイミング、ストレージ、I/Oトランスファーなど、分析では区別されないものを経験する初めてのイベントである。これらの現象は、正確には分析しづらいものである。それらは、例えば、数学的物理の***への解決ではない。それらの現象が色々な外部の制約を充足しない場合、大きな再設計が必要とされる。簡単なパッチや独立したコードのリドゥは、コードは、これらの問題を解決しないだろう。

続く。