ソフトウェア開発工程

ソフトウェア製品の開発の構造

: Software Development Process


サブプロセスモデル

編集

ISO 12207CMMI
ソフトウェア要求分析
ソフトウェア製品を作るにあたっての最初のタスクは要求を引き出す・集めることである。顧客はソフトウェアに何をさせたいのかを知っているものである。しかし、その要求は不完全だったり、曖昧だったり、互いに矛盾していたりする。経験をつんだソフトウェア技術者はそれを聞き出して一貫性のある要求仕様に纏め上げる。
仕様記述
仕様記述は可能な限り厳密な方法で開発すべきソフトウェアを正確に記述するタスクである。安全性が重要なソフトウェアシステムでは、開発に先駆けて仕様記述を注意深く行うが、実際に最も成功している仕様記述とは、既存のアプリケーションを理解して改善するために書かれるものであろう。安定していなければならない外部インターフェイスにとって仕様記述は最も重要である。
ソフトウェアアーキテクチャ
ソフトウェアシステムのアーキテクチャとは、システムを抽象的に表現したものである。アーキテクチャはソフトウェアシステムが製品として要求に適合しているかを検証するのに使用される他、将来の追加要求に応えるためにも使用される。アーキテクチャ作成段階ではソフトウェアシステム間や他のソフトウェア製品間のインターフェイスも規定し、ハードウェアやオペレーティングシステムも規定する。
実装
設計からコードを作成する段階はソフトウェア開発において最も明白な工程であるが、必ずしも最大の工程とは限らない。
評価
特に複数の技術者が開発したコードを結合して行う評価はソフトウェア技術者が行う。
文書化
ソフトウェアの内部設計を文書化するタスクは重要だが、しばしば見過ごされている。これは将来の保守と改良に使用される。文書化は外部インターフェイスにとっては最も重要である。
トレーニングとサポート
ソフトウェアプロジェクトの失敗の最大の要因は、そのソフトウェアを最終的に使用する人の育成を全く考えていないことにある。人々は不慣れな環境や領域に進むことには抵抗を示すものである。従ってソフトウェアを配備する段階では、実際にそのソフトウェアを使用する人を対象にトレーニングを行うことが重要である。また、実際に使ってみることでユーザーから問題点や疑問点が多数上げられてくる。それらが次のソフトウェアの開発への入力となる。
保守
ソフトウェアの保守と改良は初期の開発よりも長期に渡り、手間もかかる。本来の設計に馴染まないコードを追加しなければならなくなるだけでなく、既存のソフトウェアがどう動作しているのかを理解するだけでも多大な労力を必要とする。ソフトウェア開発の3分の2は保守作業であると言われているが、この統計は誤解を生みやすい。バグの修正は保守作業のほんの一部である。保守作業の大部分は既存のソフトウェアに新たな機能を組み込むことであり、それは別の新たな開発とみなされることが多い。同様に土木・建築でも保守作業が全体の3分の2を占めると言われている。

管理プロセス

編集

ソフトウェアを完成へ向け加工していくプロセスに加え、そのプロセスを管理(マネジメント)するプロセスを管理プロセスと呼ぶ。開発プロセスにおいても管理プロセスが含まれる。

製造工程

編集

 (manufacturing) [1]

[2][3]1

/[4]

開発工程モデル

編集


ウォーターフォール・モデル

編集





使



 Critical Design ReviewWISCYWhy Isn't Someone coding yet?

反復型

編集







XPXP112[1]

ERD







1 10%  15% 調(Software Development at Microsoft Observed)調

TDD便TDDTDD

形式手法

編集

//BRAISEVDMZ

FSM

DO178BA

[2]

評価

編集

ISO 15504CMMI

歴史

編集

アメリカでは軍需での契約を獲得する条件としてプロセスモデルに基づいた評価が行われるため、それが方法論の発達を促したとも言える。

関連項目

編集

脚注

編集

注釈

編集
  1. ^ あるいはその一部で、開発チームもユーザーの一部である。
  2. ^ 例えばOCLJMLモデル駆動型アーキテクチャなどがある。

出典

編集
  1. ^ "The overwhelming problem with software development is that everything is part of the design process. Coding is design, testing and debugging are part of design, and what we typically call software design is still part of design." Jack W. Reeves. (1992). what is software design?. C++ Journal, Vol. 2, No. 2. (author's copy) (村上/日本語訳. ソフトウェア設計とは何か?)
  2. ^ "If the design documents truly represent a complete design, the manufacturing team can proceed to build the product. In fact, they can proceed to build lots of the product" Jack W. Reeves. (1992). what is software design?. C++ Journal, Vol. 2, No. 2. (author's copy) (村上/日本語訳. ソフトウェア設計とは何か?)
  3. ^ "the manufacturing team ... build the product ... programming is not about building software; programming is about designing software." Jack W. Reeves. (1992). what is software design?. C++ Journal, Vol. 2, No. 2. (author's copy) (村上/日本語訳. ソフトウェア設計とは何か?)
  4. ^ "no other modern industry would tolerate a rework rate of over 100% in its manufacturing process. A construction worker ... is soon out of a job. In software, ... code is ... revised or completely rewritten during testing and debugging. We accept this sort of refinement during a creative process like design, not as part of a manufacturing process." Jack W. Reeves. (1992). what is software design?. C++ Journal, Vol. 2, No. 2. (author's copy) (村上/日本語訳. ソフトウェア設計とは何か?)

外部リンク

編集