サイトアイコン ymb

システム開発



システム開発
  1. システム開発のフェーズ
  2. システム設計の手法
  3. システムのテスト
 システム開発体系
     |
     |–システム分析
     |
     |–基本設計
     |
     |–詳細設計
     |
     |–プログラミング
     |    |
     |    |–フローチャート
     |
     |–テスト
     |    |
     |    |–単体テスト
     |    |
     |    |–結合テスト
     |    |
     |    |–総合テスト
     |
     |–実行化
     |
     |–運用・保守


1.システム開発のフェーズ

システム分析

基本設計

詳細設計

プログラミング
テスト
実行化
運用・保守
  • システム分析

     第一段階として、企業内の各部門で行われている業務の中から、情報処理システム
    を開発する対象となる適用業務が検討される。適用業務の検討にあたっては、現状の
    問題点を明らかにするとともに、その対策が検討される。また、経営管理のレベルの
    向上、業務の合理化、企業の競争力強化などに関するシステム開発の目標の設定も
    行う。
  • システムの基本設計

     システム分析のフェーズが完了すると次の段階として、システム設計のフェーズに
    移行する。このフェーズは、基本設計と詳細設計とに大別される。
     基本設計は、システム分析のフェーズで作成された新システムのモデルの
    実行可能性を検討し、その機能を具体化して基本設計仕様書を作成する。

    (1) 処理方式の決定

        情報処理システムの処理方式には、センターバッチ処理、リモートバッチ処理、
       オンラインリアルタイム処理などがあるので、利用部門のニーズや、システムの
       処理要件に合った処理方式を選択する。

    (2) 出力設計

        出力設計は、出力帳票、画面など、利用部門に対して、情報処理システムが
       どのように情報を提供するかということを決定するものである。ラインプリンタ、
       シリアルプリンタ、ディスプレイ画面などの出力媒体の検討や、出力項目、桁数、
       出力順序、集計単位などの出力レイアウトの設計を行う。

    (3) 入力設計

        入力データの精度やタイミングなどは、システムの信頼性に大きな影響を与える。
       また、システムへのデータの入力などがしやすいかどうかの
       マン・マシン・インタフェースは、システムの評価に影響する。
        入力方法や、入力項目、入力タイミング、入力レイアウトなどを決定する。

    (4) コード設計

        コードは、データの内容を識別するために設定されるもので、識別機能、
       分類機能、配列機能などをもつ。識別機能は他のものと区別する機能であり、
       分類機能は同種のデータをグループ化する機能、配列機能はデータの並び順
       を表す機能である。
        コード設計にあたっては、コード化対象の選定、コードの付番方法の決定、
       コードの追加・廃止の基準設定などを行う。

    (5) ファイル設計

        出力設計や入力設計によって作成された仕様に基づいて、ファイルに記憶
       すべきデータ項目、ファイルの編成方法、ファイルへのアクセス法などを決定
       する。
        ファイル設計にあたっては、ファイルの種類、ファイルの名称、ファイル編成、
       キー項目、データ項目、その桁数、文字種類(英字、数字、日本語)などを決定
       する。

  • システムの詳細設計

     システムの詳細設計のフェーズでは、基本設計の段階で作成された概括的な
    基本設計仕様書に基づいて、より詳細で具体的なシステム設計を行う。システムで
    使用するハードウェアの機能や処理能力なども考慮してシステム設計を行う。

    (1) プログラム構造設計

        詳細設計のフェーズでは、サブシステムを構成する個々のプログラムの
       モジュール化を行う。モジュール分割にあたっては、プログラムの機能を分析し、
       機能的に独立した単位に分割する。

    (2) 出力詳細設計

        出力詳細設計では、基本設計のフェーズで作成した出力イメージをもとに
       帳票設計、画面設計などを行う。帳票設計は、見出し、出力項目、出力順、
       合計のとり方(小計、中計、大計)などを具体的に設計する。画面設計は、
       入力項目、出力項目、メッセージ表示、入力データチェック方法などを設計する。

    (3) 入力詳細設計

        システムへの入力に使用する入力原票は、業務に使用するとともにデータ入力
       にも使用する。そのため、データの記入量を減らすことや、入力しやすさなどに
       十分注意する必要がある。
        システムの信頼性を向上されるために、入力データのチェックを行うことが大切
       である。そこで、重複チェック、ニューメリックチェック、リミットチェックなどの
       チェック方法の決定も行う。

    (4) ファイル詳細設計

        ファイル詳細設計では、ファイルのレコードのレイアウトの作成などを行う。
       この設計では、レコードを構成する各項目の桁数、レコード長、ブロック長
       (レコード長×ブロック化係数)、記憶媒体などを決定する。

  • プログラミング

     プログラミングのフェーズでは、詳細設計のフェーズで作成された詳細設計書に
    基づいて、一般に次のような作業が行われる。

    (1) アルゴリズム作成

        この段階では、プログラマが、詳細設計仕様書に基づいて、アルゴリズム
       (問題解決の手順)を考える。プログラムの条件を整理するために、
       デシジョンテーブル(決定表)んども用いられる。

    (2) フローチャート作成

        アルゴリズムを整理する方法としては、フローチャート(流れ図)の作成がある。
       プログラムレベルの詳細な流れ図をこの段階で作成する。

    (3) コーディング

        フローチャートやデシジョンテーブルなどに基づいてコーディングを行う。
       コーディングとは、プログラム言語を使って、フローチャートで表された手順に従って
       プログラムを記述することである。

  • テスト

     プログラマは、コーディングしたプログラムをエディタなどを使用してコンピュータに
    入力する。このとき、プログラムの翻訳を行い、文法上のエラーの検出を行う。そして、
    文法上のエラーがなくなった時点で、プログラムの実行を行い、実行上のエラー
    (論理上のエラー)を検出する。プログラムを実行させると、プログラムの異常停止
    (アベンド)が発生するケースもある。
     コードレビュー(他の人がソースをチェックする)は必ず行うことを心がける。

  • 実用化~運用・保守


     システムのテストが終了すると、新システムの実行化の段階へ移行する。
    この段階では、現行システムから新システムへの移行の準備と本番への移行を行う。

    (1) 文書化(ドキュメンテーション)

        テスト段階で修正された設計仕様書などを最新の状態に修正する。
       また、情報システム部門等の作業手順マニュアルと、利用部門の運用マニュアル
       などを作成する。

    (2) 本番移行スケジュール作成

        現行システムから新システムへ移行するための作業項目を洗い出し、
       スケジュールを作成する。新システムの実行化は、新旧システムを数回だけ
       同時並行して処理し、チェックを行う並行ランの形態で行われることが多い。

    (3) 教育訓練

        システムの利用部門の実務担当者に対し、システムの内容説明とともに、
       操作方法、データの入力方法などについての訓練を行う。

    (4) データの準備

        新システムで使用する各種マスタファイルのデータを最新の状態にする。
       それとともに、システムで使用する初期データの整備も行う。

    (5) システムの運用

        並行ランの結果、問題がなければシステムが実行化される。この段階から
       システムの運用の段階へ入る。システムの運用の段階では、利用部門が
       システムの不具合のチェックを行いながら、情報システム部に対して不具合の
       改善依頼も行う。

    (6) システムの保守

        システムの運用開始後しばらくすると、システムを取り巻く環境の変化や、
       利用部門の業務内容の変化によって、システムの機能が現状と合わなくなる
       ような事態が発生する。このような場合は、システムのレベルアップを行う。
       システムのレベルアップなどのことを保守(メンテナンス)と呼んでいる。

  • ソフトウェアのライフサイクル


        情報処理システムの開発が検討され、システム分析、基本設計、詳細設計、
       プログラミング、テストを経て実行化され、システムのレベルアップなどの保守が
       行われ、最後に廃棄されるまでの全過程をソフトウェアのライフサイクルと呼ぶ。
        システムの開発が決定した時点で、開発の投資規模の設定や、技術革新への
       対応などを考慮して、ライフサイクルを設定する必要がある。
        ソフトウェアのライフサイクルを設定するにあたっては、ハードウェア・ソフトウェア
       の陳腐化の度合、外部環境の変化の度合、処理能力の限界、初期投資、
       運用コスト、保守コストなどを考慮する必要がある。

2.システム設計の手法
  • モジュール化

      プログラム
         |
         |–モジュール1(機能1)
         |
         |–モジュール2(機能2)
         |
         |–モジュール3(機能3)

     プログラムを作成する際には、最適な大きさに設計することが必要である。
    システムを機能単位にいくつかのサブシステムに分割する場合、あるいは、プログラム
    を機能単位にいくつかの部分に分けて考える場合、その部分をモジュールと呼ぶ。
    そしてモジュールに分けて設計を行うことを、モジュール化またはモジュール分割という。

  • HIPO

     HIPO(ハイポ)は、階層的入力処理出力記述手法のことである。
    HIPOは、各モジュールについて、その機能を入力・処理・出力に分けて記述する。
    HIPOは、通常次の3つのダイヤグラムから構成される。

       ①階層ダイヤグラム—プログラムの構造を階層構造で示したもの。

       ②総括ダイヤグラム—モジュールの機能の概略を記述したもの。

       ③詳細ダイヤグラム—各モジュールの機能を詳細に記述したもの。


3.システムのテスト
  • 単体テスト

     単体テストは、個々のモジュール単位に行うテストであり、ユニットテストともいう。
    モジュール単体だけでテストを行うことは困難であるので、テストを行うために
    テストドライバやスタブを使用することがある。

    (1) トップダウンテストとスタブ

        トップダウンテストは、階層構造化されているモジュールの中で、一番上のレベル
       のモジュールからテストを行い、順次下位のモジュールを上位のモジュールと結合
       してテストを行う方法である。
       下位の未完成のモジュールのスタブを作成して代替とする。

    (2) ボトムアップテストとドライバ

        ボトムアップテストは、トップダウンテストと反対に、階層構造化されたモジュール
       の一番下のレベルのモジュールからテストを行い、順次上位のモジュールと結合
       してテストを行う方法である。

       上位の未完成のモジュールのドライバを作成して代替とする。

  • 結合テスト

     結合テストは、複数のモジュールを結合して順番に実行させ、各モジュールの間の
    パラメータ変数の引渡しなどのインタフェースのチェックを行うテストである。
    インテグレーションテストということもある。

  • 総合テスト

     総合テストは、システムを構成するプログラムを全部連動して行うテストである。
    システムの全体の機能をテストし、システムの処理能力や応答時間などの確認を行う。

  • システムの性能評価

     システムの性能を評価するための基準としては、主記憶装置の記憶容量、
    主記憶装置と中央処理装置の間のデータ転送速度(サイクルタイム)、データの入出力
    速度、命令の実行速度などがある。
     また、システムの性能評価を行う場合の評価手法としては、テストプログラムによる
    方法、カーネルプログラム法、ベンチマークテスト、モニタリングなどがある。