見出し画像

14-1 システムを開発する流れ - 基本情報技術者

「企画」→「要件定義」→「開発」→「運用」→「保守」という5段階のプロセスで、システムの一生は表されます。

システムの一生というのは上のイラストのようになっていて、導入後の運用ベースになって以降も、業務の見直しや変化に応じてちょこちょこ修正が入ります。そうして運用と保守とを繰り返しながら、やがて役割を終えて破棄される瞬間まで働き続けることになりる。これを、ソフトウェアライフサイクルと呼びます。

システム化計画として企画段階で検討すべき項目はスケジュール、体制、リスク分析、費用対効果、適用範囲の5項目。もうちょっと噛み砕くと、「導入までどんな段取りで」「どういった人員体制で取り組むべきで」「どんなトラブルが想定できて」「かけたお金に見合う効果があるか考えて」「どの業務をシステム化するか」・・・を決めるという内容になります。

企画が済んだら、次は「どのような機能を盛り込んだシステムが必要なのか」を要件定義として固めます。

それを、実際に開発をお願いすることになるシステムベンダさんに伝えます。

システム開発の調達を行なう

「調達」というのは、開発担当のシステムベンダに対して発注をかけることです。契約締結に至るまでの流れと、そこで取り交わす文書は次のようになります。

●情報提供依頼
情報提供依頼書(RFI : Request for Information)を渡して、最新の導入事例などの提供をお願いします。

●提案依頼書の作成と提出
システムの内容や予算などの諸条件を提案依頼書(RFP : Request for Proposal)にまとめて、システムベンダに提出します。

●提案書の受け取り
システムベンダは具体的な内容を提案書としてまとめ、発注側に渡します。

●見積書の受け取り
提案内容でOKが出たら、開発や運用・保守にかかる費用を見積書にまとめて発注側に渡します。

●システムベンダの選定
提案内容や見積内容を確認して、発注するシステムベンダを決定します。

開発の大まかな流れと対になる組み合わせ

無事に契約が締結されたなら、今度はシステムベンダさんのところで実際の開発作業が始まります。

システムの開発は、以下の工程に従って行われるのが一般的です。

●基本計画(要件定義)
利用者にヒアリングするなどして求められる機能や性能を洗い出す。

●システム設計
要件定義の結果に基づいて、システムの詳細な仕様を固める。
複数の段階に分けて、大枠から詳細へと、細分化しながら詰めていくのが一般的。(外部設計→内部設計→プログラム設計)

●プログラミング
プログラミング言語を用いて、設計どおりに動くプログラムを作成する。

●テスト
作成したプログラムにミスがないか、仕様どおり作られているか検証する。
検証は設計の逆で、詳細から大枠へと、さかのぼる形で行なうのが一般的。(運用テスト←システムテスト←結合テスト←単体テスト)

●導入・運用
問題がなければ、発注元にシステムを納入して、運用を開始する。

基本計画(要件定義)

この工程では、作成するシステムにどんな機能が求められているかを明らかにします。

どの業務をシステム化するのか・・・。業務を分析して、必要な機能を洗い出し、求められる性能や処理などを明確なものにして、発注側と開発側との意識共有を図るのです。

要求点を明確にするためには、利用者へのヒアリングが欠かせません。そのため、システム開発の流れの中で、もっとも利用部門との関わりが必要とされる工程といえます。

要件を取りまとめた結果については、要件定義書という形で文書にして残します。

システム設計

この工程では、要件定義の内容を具体的なシステムの仕様に落とし込みます。

「こんなことしたい」という漠然とした要求を、「具体的にこんな画面で」とか「ボタン押したらこんな処理が走って」とか、ガッチリ固めちゃうのです。

システム設計は、次のような複数の段階に分かれています。

●外部設計
外部設計では、システムを「利用者側から見た」設計を行ないます。つまり、ユーザインターフェースなど、利用者が実際に手を触れる部分の設計を行ないます。

どんな画面があって、その上で具体的に何の処理が走るかのほかに、どのようなデータ項目を管理するかなどもココ。

●内部設計
内部設計では、システムを「開発者側から見た」設計を行ないます。つまり、外部設計を実現するための実装方法や物理データ設計などを行ないます。

システムを機能ごとに分割して、それぞれに必要な処理と、処理同士のつながりや入出力を明確にしたりする。

●プログラム設計
プログラム設計では、プログラムを「どう作るか」という視点の設計を行ないます。プログラムの構造化設計や、モジュール同士のインターフェース仕様などがこれにあたります。

処理の中身をモジュール単位に分けて、モジュールごとに作成したり、テストを進めたりできるようにしたりする。

プログラミング

この工程では、システム設計で固めた内容にしたがって、プログラムをモジュール単位で作成します。

プログラムの作成は、プログラミング言語を使って命令を一つ一つ記述していくことで行ないます。この、「プログラムを作成する」ということを、プログラミングと呼びます。

私たちが使う言葉にも日本語や英語など様々な種類の言語があるように、プログラミング言語にも様々な種類が存在します。こうして書かれたソースコードは機械的に翻訳することで、プログラムとして実行できるようになります。

最初に全部機械語に翻訳してから実行するコンパイラ方式と、逐次翻訳しながら実行するインタプリタ方式があります。この辺詳しくは次章にて。

テスト

この工程では、作成したプログラムにミスがないかを検証します。

テストは、次のような複数の段階に分かれています。

●単体テスト
単体テストでは、モジュールレベルの動作確認を行ないます。

モジュール単位で中の処理を精査したり、入出力をチェックしたり、プログラム設計どおりできてるかの確認。

●結合テスト
結合テストでは、モジュールを結合させた状態での動作確認や入出力検査などを行ないます。

モジュールを結合して、機能単位や処理単位での入出力チェック。内部設計どおりできてるかの確認。

●システムテスト
システムテストでは、システム全体を稼働させての動作確認や負荷試験などを行ないます。

システム全体が機能を果たすかの動作確認で、負荷試験や耐久試験とかも含めて総合チェック。外部設計どおりできてるかの確認。

●運用テスト
運用テストでは、実際の運用と同じ条件下で動作確認を行ないます。

要件定義の要求仕様が満たされているか確認。

この記事が気に入ったらサポートをしてみませんか?