makotanの勉強日記

勉強したこととか設定系のメモとかそういうのを集めたもの

ソフトウェアを作ると言う事

ソフトウェアで実現したい事があって、そのソフトウェアを作る
その場合に気をつける事などをふと気になったのでメモ

実現したい事 と それに必要な事の組み合わせ

ソフトウェアで実現したい事だけを作ってもそれは実際には使えないソフトウェアになりやすい
音楽を聴きたいと思ったときには、音楽を再生する機械を調達して、音源を調達して、電源を調達する必要がある
これと同じ事でソフトウェアで実現したい事もそのためにやるべきいろんな事がある
結果的に通常は実現したい事よりも必要な事にお金がかかる

実現の難易度が異なる

ソフトウェアで実現する事・したい事の実現方法によっては難易度が全く異なる
全ての機能が全く同じ難易度で実現できない
たとえば、ただ入力された内容をWebに表示するだけの画面と、入力された内容をPDFに出力するのでは実現方法を含めて全く異なる
そのためにソフトウェアの機能は常にどの程度の難易度で実現できるのかが重要なポイントになる
通常のアプリケーションに良くある難易度変化のポイントは以下の通り
* データと状態の複雑さ
* 出力対象(PDF/メール/Excelなど)
* データ量
* リアルタイム性

要件からのコストダウンの方法

最初に考える事は、実現したい事そのものの削減
削減した代わりにある程度の手作業が入るなどの不自由があったとしても削減出来るなら削減した方がコストダウンに繋がる
削減するポイントは必要な情報種類の削減を中心にすればそれだけコストダウンしやすくなる
次に、手作業を何処まで許容するか
人間が実行すればコンピュータより安く/早くすむ事も多いのでエンジニアと相談して手作業を許容するポイントを探す