ソフトウェア開発:ソフトウェア開発について≪はじめに≫ 

2006年08月19日(土) 16時51分
ソフトウェア開発について、いろいろな角度やさまざまな視点からみたソフトウェア開発というものを考えたいと思います。
まず「ソフトウェア開発」と言っても、どのようなソフトウェアであるのか、どのような技術を用いるのか、どういった環境で使用するのか、ソフトウェアの規模・定義など、かなり広範囲の意味を持つ語であるかと思います。ここでは、特定のソフトウェアに関するものではなく、ソフトウェア開発全般に関わる事柄や、ソフトウェア関連記事、展示会の案内、また、ソフトウェア開発における問題点や社会問題等を取り上げてご紹介するとともにそれについてのコメントを入れて行きたいと考えています。

ソフトウェア開発:ソフトウェア開発のプロセスモデル 

2006年08月18日(金) 16時55分
ソフトウェア開発の日本における現状について、現在、ソフトウェア開発プロジェクトのほとんどは、ウォーターフォール・モデルに代表される以下のプロセスで行われていると言われています。ITガバナンスが提唱される昨今においては、ソフトウェア開発の開発プロセスが重要視されています。
ウォーターフォール・モデルとは、ソフトウェア開発の工程を以下の5つのプロセスに分割し、順序通りに実行していくという手法です。

1) 要求分析・要件定義:着想したソフトウェアがどのような機能を持つべきかを検討し、必要に応じて文書化する。
2) 設計:機能がソフトウェアとしてどのように実装されるべきかを検討し、必要に応じて仕様化する。
3) コーディング(プログラムの作成):仕様に従ってプログラムを書く。
4) テスト:作成されたプログラムが機能的な要求を満たしていることを実証する。
5) 保守:ソフトウェアを使用したり、新たな要求に応じて機能を追加・変更する。

つまり、ソフトウェア開発にあたり、まずはじめに要件定義をおこなって企画書や設計書を作成し、それに基づいて実行していくというやり方です。きちんと計画を立てて、順序良く正しくソフトウェア開発をしたほうが、後から修正・修復するよりも効率的であるという考え方に基づきます。

ソフトウェア開発:ソフトウェア開発のプロセスモデル(続き) 

2006年08月17日(木) 17時03分
ソフトウェア開発のプロセスモデルにおいては、開発フェーズをどのように定義・配置するかが各モデルを規定する上での重要な要素となります。たとえば、このウォーターフォール・モデルの場合は、要件分析から、テスト・運用までを順序通りに一回ずつおこない、次のプロセスに進むともう前のプロセスには戻ることはできません。
また、スパイラル・モデルというプロセスモデルにおいては、ソフトウェア開発期間を短く分け、短期間ごとにフェーズを切り、それぞれ対象機能の開発を行い、その短期間開発を繰り返す方法をとります。スパイラル・モデルは、まったく新しい手法なのではなく、ウォータフォールモデルの拡張版と位置づけることができます。ウォーターフォール・モデルに対するスパイラル・モデルの利点は、「開発工程を何度も繰り返すこと」にありますが、ウォーターフォール・モデルに対するスパイラル・モデルの欠点もまた同じく「開発工程を何度も繰り返すこと」なのです。スパイラル・モデルの方が、開発の時間がより多くかかってしまうのです。

ソフトウェア開発:ソフトウェア開発におけるウォーターフォール・モデルの欠点 

2006年08月16日(水) 22時07分
ソフトウェア開発のプロセスモデルとしてのウォーターフォール・モデルが現在の日本のソフトウェア開発において一般的に普及していると説明しましたが、実際のソフトウェア開発においては、最初から要求仕様を作成した上でソフトウェア設計ができないものも存在しており、結果として、最初の要件定義が適切でなかったために、プロジェクトが失敗し、ソフトウェア品質保証が損なわれた製品が仕上がってしまうケースが多く見られます。
ソフトウェア開発に携わるソフトウェア開発者を対象にしたアンケート調査の結果でも、ソフトウェア開発のスケジュール遅延や予算超過の原因が要件定義、要求仕様が適切でなかったと回答した人が4割もあったという統計もあるようです。
ウォーターフォール・モデルに代表される従来型のソフトウェア開発モデルでは、まず最初に要求定義を行います。顧客から提示されたニーズを元に仕様書を作成しているわけなので、本来は要求仕様に問題はないはずですが、現実は理論どおりには進まないようです。
チェックの段階で顧客からNGを出されてしまうと、プロジェクトは最初の工程からやり直しになってしまいます。南カリフォルニア大学のバリー・ベーム(Barry Boehm)氏(COCOMOとスパイラルライフサイクルで有名)の研究によれば、要件定義の段階のミスを修復するのにかかるコストは、発見される工程が遅くなるほど大きくなると言います。要求仕様の欠陥を要件定義段階で修復するコストを1とした場合、受入テスト段階で発見された場合には30〜70、稼動してから発見された場合には40〜1000にもなるというのです。

ソフトウェア開発:アジャイル・ソフトウェア開発の概念の誕生 

2006年08月14日(月) 17時09分
ソフトウェア開発において、現状、ウォーターフォール・モデルが支持されていますが、このウォーターフォール・モデルの場合は、最初の要件定義の段階で少しでも誤ると、ソフトウェア開発のスケジュール遅延や費用オーバー、ソフトウェア品質保証の欠落などのトラブルを巻き起こす危険性があるとされています。何人かの専門家も、このモデルには欠陥があると明言しています。しかし、ウォーターフォール・モデルの問題が指摘されているものの、日本ではやはりソフトウェア開発の際にはウォーターフォール・モデルが使用されているのが現状です。
では、このモデルに代わる手法は何なのでしょうか。ここで登場するのが、「アジャイル」という新しいパラダイムです。
90年代におけるソフトウェア開発モデルの見直しや論争を背景に、ITガバナンスの概念が認知されるようになってきた2001年2月、専門家17名が集結し、アメリカ ユタ州にて彼らがそれぞれ別個に提唱していた開発手法の重要な部分を統合することについて議論し、その結果、「アジャイル・ソフトウェア宣言 (Manifesto for Agile Software Development) 」を発表しました。アジャイルソフトウェア開発宣言は、アジャイルソフトウェア開発とその諸原則を公式に定義した文書であると、広く認められています。

ソフトウェア開発:アジャイル・ソフトウェア宣言 

2006年08月13日(日) 23時41分
ソフトウェア開発における「アジャイルソフトウェア宣言」は、17名の米国の専門家により発表された新しいソフトウェア開発のコンセプトです。
「アジャイル=agile」とは「敏捷な、素早い、機動的、活気のある」などを意味する言葉で、ここでは、「変化する要件に対し、機敏に対応することによって、定められた期間内に顧客が満足するソフトウェアを提供する」という意味で発表されました。
この「アジャイルソフトウェア宣言」は、17名の名前とともに、以下の文章が記されています。
 『我々は、自らソフトウェアを開発し、あるいはソフトウェア開発の支援を通じて、より優れたソフトウェア開発方法を見つけ出そうとしています。この研究を通じて、我々は次のようなものを重視するようになりました。
・ プロセスとツールより、個人とその交流(対話)
・ 広範囲にわたるドキュメントより、正常に動くソフトウェア
・ 契約交渉より、顧客との協調
・ 計画どおりに進めることより、変化に対応すること 』

ソフトウェア開発:アジャイル・ソフトウェア開発について 

2006年08月13日(日) 17時12分
ソフトウェア開発手法の1つであるアジャイル・ソフトウェア開発の概念が生まれた背景としては、前述のとおり、ウォーターフォールやRUPなどの従来の伝統的なソフトウェア開発の手法は、さまざまなプロジェクトにおいて実施されてきたものの、近年のITガバナンスの提唱やソフトウェア品質保証の重要性の認識、社会状況やマーケットの劇的な変動に伴い業務が複雑化することを受けて、これまでの手法では、日々変化・進化するシステム要件に機敏に対応することができないことが指摘されるようになってきました。
そこで解決方法として、「変化への機敏な対応」をうたう開発方法論であるプロジェクト管理手法が登場するようになりました。そして、プロジェクト管理手法の提唱者たちは、2001年2月、米国ユタ州のスキーリゾートであるスノーバードに集結し、共通するコンセプトを説明する言葉として、『アジャイル・ソフトウェア開発宣言』を発表するに至りました。

ソフトウェア開発:アジャイル・ソフトウェア開発について(2) 

2006年08月12日(土) 17時15分
ソフトウェア開発手法の1つであるアジャイル・ソフトウェア開発は、ソフトウェア工学において、迅速かつ適応的にソフトウェアを開発する軽量な開発手法群の総称として使用されています。パフォーマンス管理の観点からも有効的な手法であると言えるこのアジャイルソフトウェア開発手法とは、一群のソフトウェア開発手法の総体を意味する言葉であって、単一の開発手法を指す言葉ではありません。
アジャイルソフトウェア開発手法には、XP(エクストリーム・プログラミング)、ユーザ機能駆動型開発(FDD)、適応型ソフトウェア開発(ASD)、リーン・ソフトウェア開発(LD)、クリスタル、スクラムなど、近年さまざまな開発手法が考案されています。この手法の中で、「リーン開発」と「スクラム」は、そのルーツが日本にあると言われています。ソフトウェア開発において実際に採用される事例も少しずつ増えているとのことです。また、アジャイル・ソフトウェア開発は、非営利組織である「Agile Alliance」が推進しています。

アジャイルソフトウェア開発とされるものには、以下のものがあります。
◆エクストリーム・プログラミング(XP)
◆スクラム
◆適応型ソフトウェア開発(ASD)
◆クリスタル・ファミリー
◆DSDM
◆フィーチャ駆動型開発(FDD)
◆リーン・ソフトウェア開発(LSD)
◆エクストリーム・モデリング(XM)

ソフトウェア開発:『アジャイル・ソフトウェア開発』について 

2006年08月11日(金) 22時16分
ソフトウェア開発の手法として、前述のウォーターフォールやRUPが、事前に仕様を定義して、それに基づいたアーキテクチャを中心に計画的な設計を行い、その設計に従ってプログラミングを行っていくという工程であるのに対して、アジャイルソフトウェア開発は、前提として、ソフトウェアの仕様や設計の変更が当然あるものという考えのもと、最初から厳密な仕様を抽出せず、大まかな仕様をもとにして、細かいイテレーション(反復)開発に実装・テストを行うことで、仕様や設計の妥当性を検証するという手法です。
アジャイルソフトウェア開発手法の多くは、短い期間単位を採用することで、リスクを最小化しようというソフトウェア開発方法で、この短い期間単位を反復 (イテレーション)と言います。1つのイテーションの期間は、プロジェクトごとに異なりますが、1週間〜4週間くらいであることが多いようです。
開発対象を多くの小さな機能に分割して、1つのイテレーションで1機能を開発し、この反復サイクルを継続して行い、1つずつ完成に近づけていきます。
1つずつの反復は、小規模なソフトウェア開発プロジェクトのように管理されます。ほとんどのアジャイル開発チームでは、ソフトウェア開発に必要なスタッフ全員が1か所の作業場で仕事をしています。参加者の中には、顧客も含まれます。顧客は開発ソフトウェアの要件を定義した人たちのこと指します。要件定義した顧客とともに、途中経過をチェックしパフォーマンス管理をしながら、ときには修正や調整を加えて、開発物の完成を目指します。
アジャイル開発の手法では、ソフトウェアそのものがソフトウェア開発プロジェクトの進捗状況を図る尺度となるとしています。また、スタッフや顧客が直接顔を突き合わせて意思疎通を図ることを最重視しているため、その結果として、アジャイル開発で作成される文書量は、他の開発手法と比較すると、非常に少なくなります。 この点については、アジャイルソフトウェア開発の欠点として挙げられています。

ソフトウェア開発:『ソフトウェア工学』とは… 

2006年08月10日(木) 6時06分
ソフトウェア開発を語るのに、ソフトウェは工学(ソフトウェア・エンジニアリング=Software Engineering)を欠かすことはできないでしょう。
ソフトウェア工学とは、コンピュータのソフトウェアの開発方法を研究対象とする情報工学の一分野を言います。ソフトウェア工学では、高度で安全なコンピュータのソフトウェアを短期間で設計することを目的として、さまざまな研究をおこなっています。また、大規模ソフトウェアの開発など難易度の高い開発に取り組むことが多いようです。ソフトウェア品質保証が強く問われるようになった昨今においては、この研究は非常に重要な役割を果たすのではないでしょうか。
ソフトウェア工学の分野では、ソフトウェアをただ開発することだけが研究対象なのではなく、ソフトウェア開発を考案した時点から開発、完成して使用されるまでの全工程をいくつかのフェーズに分けて考察するので、それぞれのフェーズごとに問題点や課題が出てきて、その都度、解決のための研究をおこなう等、パフォーマンス管理をおこないますので、研究範囲の対象はかなり広範囲に及びます。
さらに、他分野と関連する研究や、あるいは、たとえばデータベース設計など、もともとは同じ分野であったものが、独立し一人歩きして他分野のものを構成する場合もあります。また、たとえば、オブジェクト指向技術など、他分野の技術や概念がソフトウェア工学の対象となることもあります。