ねぎとろ放浪記

ねぎとろ放浪記

個人的備忘録です。勉強したことをまとめていきます。

システム開発ライフサイクル

システム開発は多くの工程を経て行われる。
この一連の流れをシステム開発ライフサイクルという。
開発の工程は大きく分けて以下の6つからなる。

1. 要件定義
2. システム設計・ソフトウェア設計
3. プログラミング
4. テスト
5. システム・ソフトウェア受け入れ
6. システム運用・保守



1.要件定義

システムやソフトウェアに要求される機能、性能、内容を明確にするプロセス。
システム化計画に基づき、要件を定義する。
利用者の要求のうち、ソフトウェアの機能にあたるものはソフトウェア要件定義書
システム全般にあたる(セキュリティ、稼働率)ものはシステム要件定義書にまとめられる。
要件には機能要件と非機能要件の2種類がある。

  • 機能要件:処理手順やデータ項目など業務機能に関連するもの
  • 非機能要件:性能、信頼性、セキュリティなどの機能要件以外のもの

2.システム設計・ソフトウェア設計

要件定義をもとに情報システムの機能を決定し、作成するプログラムの仕様を決定する。

  • システム方式設計
    要件定義に基づき情報システムの機能を決定する。
    ある機能を実現するための作業を手作業で行うのか、コンピューターで行うのかを決める。
    情報システムの内部に関することではなく、目に見える部分を指すことから外部設計とも呼ばれる。

  • ソフトウェア方式設計
    システム方式設計をもとに、ソフトウェアを作成するうえで必要となる処理(プログラム)とその流れを決定する。
    情報システムの内部に関することなので内部設計とも呼ばれる。

  • ソフトウェア詳細設計
    ソフトウェア方式設計をもとに1つのプログラムとして定義された内容をモジュールに分割する。
    各モジュールでどのような処理を行うか、モジュール間でデータをどのように受け渡すかを決める。
    (モジュールは実際の開発単位であり、プログラムの部品)
    1つ1つのプログラムについて検討するのでプログラム設計ともいう。


3.プログラミング

  • プログラミング
    ソフトウェア詳細設計で分割したモジュール毎にアルゴリズムを設計する「モジュール設計」、アルゴリズムを記述する「コーディング」、それを機械語に変換する「コンパイル」を行う。
  • 単体テスト
    モジュールが正し動いていることを確認するための「単体テスト設計」、「単体テスト」を実施する。正しく動作していなければデバックを行う。
    デバックまで終わって初めてプログラムが完成したといえる。


4.テスト

プログラムを組み合わせ、ソフトウェアが要求通りに動くかを検証する。
結合テストシステムテスト、運用テストの3種類のテストがある。
また、テストには計画、実施、評価の3つのライフサイクルがある。
テスト設計書を作成し、それに基づきテストを行い、要件を満たしているか評価する。

  • 結合テスト
    別々に開発されたモジュールを結合して行うテスト。
    モジュール間でのデータの受け渡しや、モジュールのつなぎ合わせがうまくいっているかを確認する。
    結合テストによって単体のプログラムとしての動作確認が完了する。

  • システムテスト
    プログラムを組み合わせたシステム全体として正常に動作するか確認する。
    機能や操作性も評価する。

    • 機能テスト
      システムの機能が正常に処理されているか確認する。ソフトウェア要件定義書のすべての機能についてテストを行う。
    • 性能テスト
      性能を評価する。
      スループット、ターンアラウンドタイム、レスポンスタイムなどを計算し、要件定義書の基準を満たしていることを確認する。
    • 負荷テスト
      大量のデータや、長時間の稼働にシステムが耐えられるかをテストする。
      想定されたピーク時以上の負荷をかけてテストを行う。

  • 運用テスト
    運用に問題がないかを確認するテスト。
    本番環境のシステム構成で、実際のデータを使い、システム利用者や運用部門がテストを行う。


5.システム・ソフトウェアの受け入れ

システム開発を依頼した側が行う運用テスト。正常に動作することが確認できれば受け入れを承認する。
受け入れが承認されれば納入され、利用者への導入教育が行われる。


6.システム運用・保守

  • システム運用
    システムを利用するための日常的な維持管理。
    機器の管理、運用要員の育成・管理など。

  • システム保守
    システムの安定稼働などのためにソフトウェアやハードウェアの修正や変更を行うこと。
    バグ修正を行う「修正保守」、法改正などに対応する「変更保守」、操作性向上の要求などに対応する「改良保守」がある。
    変更後は、修正をおこなった部分以外も正しく動作するか確認する「リグレッションテスト(回帰テスト)」を行う。


単体テストはプログラミングの工程なので注意。