●トピック
・ソフトウェア開発ライフサイクル
・ウォーターフォールモデル
・SASHIMIモデル
・クリーンルーム開発
●深く知る
素晴らしい成果物は素晴らしいプロセスから生まれます。とりわけ、人が集団で作るときにはその人間観の認識齟齬をなくなさなければなりません。ソフトウェア開発を行うときには、ソフトウェア開発ライフサイクルに則ることが重要です。ソフトウェア開発ライフサイクルは単なる工程を示すものですが、複数人でソフトウェアを開発する際には、各工程で何をしなければならないのかを明確にしてくれます。もしも、ある人がコーディング中にもっといいものが作りたいと設計からやり直したいと言い出したとすると、周りの人の反感を買うでしょう。ソフトウェア開発ライフサイクルは、各工程のすべきこととどこまで認識合わせが進んでいるかの論点を明確にします。そのため、多くの開発手法がソフトウェア開発ライフサイクルを前提に定義されています。
多くのソフトウェア開発セキュリティは、アメリカ国立標準技術研究所(NIST)のSDLCプロセスを指します。システムライフサイクルのすべてのフェーズでセキュリティが考慮されます。システムの必要性が表明されシステムの目的を文書化し、セキュリティ要件を仕様に組み込みます。実装の後にテストが行われ、結果とその品質とともにシステム運用およびリスクの正式な承認が下りた後にリリースされます。運用では、セキュリティ要件に従って運用されているかどうかを継続的に確認が行われます。運用の中で利用されなくなったシステムやデータに対して適切にサニタイジングを行う必要があります。プロジェクトの開始から廃棄までがSDLCになります。SDLCのもう一つの役割は、プロセスを論理的に説明可能とする側面にあります。提案が作成されてから、概念の範囲または境界を定義します。そして、フェーズ間の境界文書、費用対効果分析、リスク管理計画、および実現可能性調査計画を作ることができます。
1940年後半にプログラマーは機械語またはアセンブリを使用しました。この頃のコンピュータープログラマーは、ヤバイぐらいのガッツで単独でプログラム全体を作成していましたので、プロジェクト管理の方法論は不要でした。ソフトウェアが複雑になるにつれて、ソフトウェアプログラミングはますますチームの力が必要になります。チームで行うプロジェクトでは、プロジェクトフレームワークを基に成果物とマイルストーンを整理し、タスクを分割します。
ウォーターフォールモデルやスパイラルモデルなどのアプリケーション開発方法は、実際にはソフトウェアを開発するために作られたものではありません。あらゆる開発において適用することができます。ただ、この用語を知る機会はソフトウェアの開発プロジェクト管理方法を調べたり、教授を受けたりする機会にしか得られないため、自然とソフトウェア開発手法の一つとして認識されています。純粋なウォーターフォールでは、反復は許可されません。そうなると逆に手戻りを無くすために、初期の要件定義や設計のステップに大きな計画上の負担がかかります。また、後続の開発やテストのステップは前のステップが終了するまで開始できないため、前のステップでの遅延は後のステップにシワ寄せが行きます。一度ウォーターフォールを体験すると分かるかと思いますが、システム設計は様々な状況に対応できるようにされることが求められる一方で必要でもない機能に費用をかけないという合理的な判断の間で取り決めていかなければならず、十分にできていないと、途中から「要件定義が増えた」というつぶやきをメンバーから言われることになります。