お役立ち情報

ソフトウェア開発は小さな実績の積み重ね

ソフトウェア開発は小さな実績の積み重ね

ソフトウェアの種類

ソフトウェアと呼ばれるプログラムは、組込みシステム、アプリケーション、Webシステムの3つに分類できます。一般的には後者になるほどシステムが大きくなり、専門知識やテクニックが必要になります。開発のためには優秀なエンジニアが必要で、その下で働くプログラマの人数も多くなっていきます。新規でソフトウェア開発の会社を立ち上げた時には、多くの人材を集めるのは大変ですし、開発のための資金繰りにも苦労することになります。大口の顧客を探すことも、その関係を継続していくことも困難だと言えます。企業を立ち上げる時には大成功することを望んでいるでしょうが、最初から大きな会社を運営するのは難しいことです。小さな仕事でも誠実にこなし、顧客の信頼を得ながら徐々にステップアップしていくのが現実的な選択です。

ソフトウェア開発手法

実際に現場で使われているソフトフェア開発手法が4つあり、それぞれウォーターフォール型、アジャイル型、プロトタイプ型、スパイラル型と呼ばれています。どの手法が優れているのかは作成するソフトウェア、チーム内の環境によりますので一概には言えず、それぞれメリットもデメリットもあります。ウォーターフォール型は全体を小さな工程に分けて、その工程を完璧にしてから次へ移る手法です。進捗管理がしやすく、ミスが発生しにくいことがメリットです。デメリットとしては各工程を完成品としてから進んでいきますので、顧客から変更の要望が入った時には対応しにくいことがあります。

アジャイル型はウォーターフォール型よりも更に小さな単位を1工程として進めていく手法です。単位を小さくすることで顧客からの要望にも対応しやすく、ミスの発見も容易になります。工程を細分化することから全体の設計を厳密に行うことがなく、プロジェクト管理をしにくいことがデメリットです。プロトタイプ型は早い段階から試作品を作ることで、製品の完成品をイメージしやすくする手法です。顧客も完成品の動作をイメージできますし、機能の追加や変更をしやすいことがメリットです。途中で顧客の要望を取り入れることが多くなりやすく、最初の設計段階で工程の全体的な作業見積もりをしにくいことがデメリットです。スパイラル型はアジャイル型とプロトタイプ型を組み合わせた手法です。仕様変更に柔軟に対応できますが、作業工程が長くなりがちなことがデメリットです。

要件と設計とテスト

ソフトウェアが完成するまでにはいくつかの工程がありますが、各工程ごとに開発のコツも存在します。開発を始める時には顧客が求める要件を確実に把握して、チーム内で共有しなければなりません。これは次の段階の設計にもつながることですが、実際に動くプロトタイプを顧客が操作することで、要件が変更または追加されることも考えられます。そのたびごとに設計を変更することになりますが、できるだけ設計書の完成度を高めることが重要です。プログラムはただ動けばいいわけではなく、設計書に従って作成されたソフトウェアが顧客の要望を満たしているのかどうかテストする必要があります。操作の一部分だけをテストしたのでは例外的な操作に対して正しく反応するのかどうか判断できませんので、納品の前には時間を掛けて繰り返しテストすることになります。

実際の設計工程のことではありませんが、もう一つの開発のコツとしてチームの結束があります。チームリーダーとなるエンジニアは豊富な知識を備えた優秀な人材であることは当然ですし、チーム内の末端のプログラマとも意思を共有するコミュニケーション能力も重要です。これまで大規模なプロジェクトを担当したことがないエンジニアがリーダーとなる時には、小さな案件から初めて徐々に実績を積み上げていくのが現実的な方法です。

ソフトウェア