【システム開発・設計】代表的な開発手法~画面設計とチェック方式!

【システム開発・設計】代表的な開発手法~画面設計とチェック方式!
ハテオ君

システム開発はどのように行われているんだろう?代表的な手法や設計に関して知りたいな。

今回はこの悩みを解決します!

今回の記事テーマ

システム開発で使われる代表的な開発手法~画面設計とチェック方式まで徹底解説!

システムを開発するときにはさまざまな手法や工程をおこないシステムを完成していきます。

今回は、そんなシステム開発で使われる手法、工程、設計について解説いきます。

また、システム開発については、IT資格にもよく出題されるですので今回の内容を参考にしてください。

本日の記事内容

記事の最後には、今回の内容に関しての確認問題も用意していますので、インプットとアウトプットとしても是非活用してみてください。

元中卒の自分が、誰でも理解できるように解説していきます。

それでは早速見ていきましょう。

黄島 成

システム開発の基礎知識

システム開発の基礎知識

システムの開発を行う際にはまず、そのシステムに要求されるものは何かというのを明確にしないといけません。

例えば、そのシステムは何をサービスの管理なのか、それとも従業員の管理なのかというようなところです。

完成後に「思っていたのと違う!?」ということになったら大変ですからね。

このように、まず最初にはシステム要求を明らかにすることが重要な工程となります。

システム開発の工程の流れ

  • 要求事項を明確にする
  • その要求を満たすシステムの設計に取り掛かる
  • システムがあらかた完成すると動作テストを行う
  • うまくいけばお客さんのもとに届く

簡単な流れとしては上記の通りです。

システム開発手法

システム開発手法

システム開発の代表的な手法としては、以下4つが挙げられます。

開発手法

  • ウォーターフォールモデル
  • プロトタイプモデル
  • スパイラルモデル
  • アジャイル

それでは順番に見ていきましょう。

①:ウォータフォールモデル

ウォータフォールモデルは、事項のように上流工程から下流工程へ順に進めていく手法です。

ウォーターフォールとは「」のことです。

滝は、上から下へしか流れているように、このウォーターフォールモデルでも一方通行でシステム開発を行う手法です。

一方通行でシステム開発を行うことで、

・全体を見通すことができ、スケジュールの決定や資源配分が簡単

・前工程から引き渡された成果物を基に、次の工程の開発作業をおこなうので、一貫性が保証される

というようなメリットがあります。

しかしその反面、利用者がシステムの完成イメージを見ることができるのは、最終工程になってからです。

基本的に後戻りが出来ない手法なので、要求仕様の変更に対応すると、システムの開発効率がすごく低下します。

例えば、家が完成してしまった後に「間取りをもっと広くしたい!」と言ってもかなり厳しいですよね。これと似た感覚です。

ウォータフォールモデルの各工程

ウォータフォールモデルは、上流から下流へ各工程を順に進めていきます。

ウォータフォールモデルの各工程図

②:プロトタイプモデル

プロトタイプモデルは、ウォールフォールモデルの欠点を補った開発手法です。

具体的には、短期間で一時的に動作する試作品(プロトタイプ)を作り、利用者に試用・評価してもらい、修正を繰り返しながら仕様を確定していく手法です。

このプロタイプを作ることで、ユーザインタフェースの確定や、応答性などの性能確認を行い、後続段階での仕様変更による手戻りのリスクを防ぐことが可能となります。

例えば、化粧品を購入する時はサンプル等があると思いますが、サンプルは購入したときに自分に合わないという失敗しないために存在します。

このような化粧品のサンプルに近いイメージで覚えておきましょう。

③:スパイラルモデル

スパイラルモデルは、開発するシステムを複数のサブシステムへ分解し、サブシステムごとに開発をしていく手法です。

具体的には、大規模なシステムを開発するとき、独立性の高い部分(サブシステム)ごとに設計、プログラミング、テストの開発工程を繰り返しながら完成度を高めていく手法です。

各繰り返しで、開発コストや品質などからリスクを評価し、リスクが最小となるプロセスをとります。

ウォータフォールモデルとプロトタイプモデルを合わせた開発手法とも言えますね。

④:アジャイル

従来のウォータフォールモデルでは、開発機関が長く、仕様変更に柔軟に対応できないという欠点があります。

アジャイルは、システムを迅速に開発するための軽量なソフトウェア開発手法の総称です。

「短期間で動作するプログラムを開発する!」という作業を反復させ、利用者の要求を取り入れながら段階的にシステム全体を完成させていきます。

アジャイルの開発手法の 1 つで、XP(Extreme Programming)はというものがあり、いくつかの指針(プラクティス)が提唱されています。

例えば、

  • テストファースト
    コーディングの前にテスト用のプログラムを作る
  • ペアプログラミング
    二人一組で1人がコーディングし、もう1人がサポートする
  • リファクタリング
    リリース済みのプログラムであっても改善を繰り返す
  • インテグレーション
    コードの結合とテストを繰り返す継続的

などの実践が特徴です。

また、リバースエンジニアリングという開発手法もあり、これは既存のプログラムやファイルを解析して仕様書や設計書を作成する開発手法です。

「リバース」には戻るという意味があり、通常は仕様書を基にプログラムを作成しますが、それを逆に戻り、プログラム解析して仕様書を作成します。

ちなみに現在では、ウォーターフォールやプロトタイプモデルあまり使われていなく、スパイラルモデルやアジャイルが主流となっています。

画面設計と入力チェック

画面設計と入力チェック

システムの開発手法をある程度理解できたところで、画面設計と入力チェックについて詳しく解説していきたいと思います。

システム開発を行う上で画面設計と入力チェックは絶対に欠かせない作業となります。

IT業界での業務やIT資格でもこの基礎知識は必要となるため、以下4点をこれから解説していきたいと思います。

  • 外部設計と内部設計
  • 画面設計
  • ユニバーサルデザイン
  • 入力チェック方式

それでは順番に詳しく見ていましょう。

外部設計と内部設計

ソフトウェアの開発工程では、以下のような手順で考える場合もあります。

  • 基本計画
  • 外部設計
  • 内部設計
  • プログラム設計
  • プログラミング
  • テスト

基本計画の段階では、システム開発計画を立てるとともに、対象システムへの要求を明確にして要求仕様書にまとめます。

要求仕様書を基に、利用者の立場から見た論理的な設計をするのが外部設計で、外部設計書に基づき開発者の立場から物理的な設計をするのが内部設計です。

具体的には、以下のような作業を行います。

各作業一覧

外部or内部項目概要
外部設計サブシステムへの分割システムをサブシステム単位に分割する
外部設計ヒューマンインタフェースの設計画面設計・帳票設計などを行う
外部設計コード設計システム内で仕様するコードの設計を行う
外部設計論理データ設計システムに必要なデータ項目を選定し、入力データ項目と出力データ
項目の関連性(データ構造)、ファイル仕様などを決める
内部設計機能分割・構造化サブシステムをプログラム単位に分割する
内部設計物理データ設計ファイル編成法、記憶媒体、レコードレイアウトを決め、アクセス時間や容量などを見積もる
内部設計入出力詳細設計外部設計を基に、さらに具体的に画面設計・帳票設計を行う。

共通フレームでは、外部設計はおおむねシステム方式設計とソフトウェア要件定義に、内部設計はおおむねソフトウェア方式設計に該当します。

画面設計

画面設計とは、画面レイアウトのことでシステム構築においてどんな画面が表示されるのかを設計したものです。

外部設計・内部設計ともに画面の設計をしますが、設計内容は異なっています。

外部設計では、利用者が業務に必要な画面を選定し、

  • 「この画面が欲しい!」
  • 「画面にはこの情報がほしい!」
  • 「画面レイアウトはこうしてほしい!」

など、利用者の立場から見た設計を行います。

内部設計では、開発者がハードウェアの制約などを考慮して、

  • 「項目の属性や色はどうするのか?」
  • 「どのような入力チェックをするのか?」
  • 「どのようなメッセージを表示するのか?」

など、開発者の立場から見た設計を行います。

画面設計の留意点

  • 画面のタイトル、文字の大きさ、文字の色、エラーメッセージなどの表示方法や表示位置をあらかじめ決めて統一しておきます。(標準化)
  • 関連する入力項目は隣接するように配置します(氏名とふりがな、郵便番号と住所など)。
  • カーソルは画面の「左から右へ」「上から下へ」移動するように配置し、入力項目以外の項目には移動させないようにします。
  • エラーメッセージは利用者が何をすべきかを簡明かつ正確に表示し、再度入力が可能な状態にします。
  • Webサイトの場合は、各 Web ページの相対位置を把握するために、トップページからそのページへの経路情報であるパンくずリストを表示します。

GUI 設計

GUIは、画面上のアイコンやボタン、メニューなどをマウスでクリックすることで、視覚的に操作するインタフェースの1つです。

GUI画面においては、キーボード操作に慣れていないユーザにも操作効率のよいユーザインタフェースとするために、よく行う操作に対して、マウスとキーボードの両方のインタフェースを用意しておくことが必要になります。

代表的なGUI部品

名称概要
ラジオボタン複数の項目から1つを選択させるときに利用する。関連する項目を常に表示し、1つ選択するとそれ以前に選んだ項目の選択は解除される。
チェックボックス各項目を選択させるときに利用する。クリックするたびに選択と非選択が切り替わる。
スピンボタン特定の連続する値を増減させるときに利用する。増加または現象に対応するボタンをクリックするたびに値が増減する。
プルダウンメニュー上から垂れ下がるように表示されるメニュー。複数の項目から 1つを選択させるときに利用する。操作するときだけ表示されるので、画面上の領域を占有しない。
ポップアップメニュー画面から浮き出るように表示されるメニュー。複数の項目から 1 つを選択させるときに利用する。
GUI設計:代表的な部品図

ユニバーサルデザイン

ユニバーサルデザインは、障害の有無や国籍、年齢などに関わらず、誰もが便利に使えるように設計することです。

例えば、

  • 視覚に障害を持っている方の場合
    テキスト読み上げソフトの使用で内容が理解できるように代替のテキストを用意しておく
  • 色覚に障害をもっている方の場合
    必須の入力欄を赤で強調するだけではなく、「必須」などの文字情報と合わせて表示する

上記のようなデザインをすることがユニバーサルデザインでは重要です。

ソフトウェアや情報サービス、Webサイトなどを、高齢者や障害者を含む誰もが利用可能かどうかのことを「アクセシビリティ」と言います。

「使えない状態」→「使える状態」にすること。

似た言葉には「ユーザビリティ」がありますがこれは、どれだけ利用者がストレスを感じずに、目標とする要求が達成できるかを言います。

「使いにくい状態」→「使いやすい状態」にすること。

入力チェック方式

入力チェックでは、入力されたデータが正しいかどうかを検査します。

誤ったデータが入力されると、誤動作やシステムダウンの原因となってしまいますからね。

入力チェック方式の設計は、開発者の立場からソフトウェア方式設計で行います。

主な入力データのチェック方法

名称概要
ニューメリックチェック数値として扱う必要のあるデータに、文字などの数値として扱えないものが含まれていないかどうかを検査する。
シーケンスチェックデータが昇順や降順など決められた順番に並んでいるかどうかを検査する。
重複チェック重複したデータが存在しなかどうかを検査する。
フォーマットチェックデータが決められた形式にあっているかどうかを検査する。
論理チェックデータが論理的に矛盾しないかどうかを検査する。
リミットチェックデータの値が一定の範囲内にあるかどうかを検査する。
照合チェックデータがマスタファイルに存在するかどうかを検査する。

チェックディジットチェック

入力されたデータから、一定の規則に従って数値を算出します。

この数値を基に検査文字(チェックディジット)を定め、データの最終行に付加します。

入力データに誤りがないかどうかを検査する方法を「チェックディジットチェック」と言います。

例えば、次のような規則があるとします。

【規則】

① 与えられたデータの各桁に、先頭から係数4,3,2,1と割り当てます。

② 各桁の数値と割り当てた係数との積の和を求めます。

③ ②で求めた値を11で割って余りを求めます。

④ ③で求めた余りの数字を検査文字とします。余りが10のときは、Xを検査文字とします。

このとき、4桁の数値データ「2131」の場合を考えてみましょう。

(2×4+1×3+3×2+1×1)÷11は、余りが7なので、検査文字7をデータの最終行に付加します。

チェックディジット図

ここで、もし入力するときに「21317」を「21137」と入力したとすると、コンピュータ側で算出したチェックディジットが、

(2×4+1×3+1×2+3×1)÷11の余り5

となり、入力された7と一致しないため、入力誤りがあったと判断されます。

今回のまとめ&確認問題

システム開発・設計のまとめ&確認問題

システム開発・設計については上記内容で以上となります。

それではまず今回の内容をまとめていきましょう。

まとめ

  • システム開発ではまず、用件事項を明確にし、その用件を満たす設計に取り掛かる
  • 手法①ウォーターフォールモデルは、上流工程から下流に工程順に進めていく。
  • 手法②プロトタイプモデルは、試作品(プロトタイプ)を作り、利用者に試用・評価してもらい、修正を繰り返しながら進めていく
  • 手法③スパイラルモデルは、サブシステム)ごとに開発工程を繰り返しながら完成度を高めていく
  • 手法④アジャイルは、システムを迅速に開発するための軽量なソフトウェア開発手法の総称
  • 画面設計では、外部設計と内部設計で設計内容が異なる
  • 入力チェックは、データが正しいかどうかを検査し、数値を算出し検査する方法をチェックディジットチェックと言う

今回の確認問題「アウトプット用」

確認問題

システム確認問題⑦

「次へ」で問題スタート!

①解説

【問題①】

開発プロセスにおいて、ソフトウェア方式設計で行うべき作業はどれか

:顧客に意見を求めて仕様を決定する。
不正解×:要件定義プロセスで行う作業
:既に決定しているソフトウェア要件を,どのように実現させるかを決める。
正解○
:プログラムを、コード化した1行ごとの処理まで明確になるように詳細化す る。
不正解×:ソフトウェアコード作成で行う作業
:要求内容を図表などの形式でまとめ、段階的に詳細化して分析する。
不正解×:ソフトウェア詳細設計で行う作業

【解説】

システム開発の工程

ウォータフォールモデルの各工程図

このうちソフトウェア方式設計で行われる作業項目は次の7点です。

  • ソフトウェア構造とコンポーネントの方式設計
  • 外部,コンポーネント間の各インターフェースの方式設計
  • データベースの最上位レベルでの設計
  • 利用者文書(暫定版)の作成
  • ソフトウェア結合のためのテスト要求事項の定義
  • ソフトウェア方式設計の評価
  • ソフトウェア方式設計の共同レビューの実施

ソフトウェア方式設計は、ソフトウェアで実現する要件をソフトウェア方式に変換し、要件を達成するために必要なソフトウェア部品を定義するアクティビティです。

つまり答えは「」となる。

②解説

【問題②】

XP(Extreme Programming)において、実践することが提唱されているものはどれか。

:構造化設計  不正解×
:テストツールの活用 不正解×
:ペアプログラミング  正解○
:ユースケースの活用  不正解×

【解説】

アジャイルな開発手法の 1 つで、XP(Extreme Programming)はというものがあり、いくつかの指針(プラクティス)が提唱されています。

例えば、

  • テストファースト
    コーディングの前にテスト用のプログラムを作る
  • ペアプログラミング
    二人一組で1人がコーディングし、もう1人がサポートする
  • リファクタリング
    リリース済みのプログラムであっても改善を繰り返す
  • インテグレーション
    コードの結合とテストを繰り返す継続的

などの実践が特徴です。

上記のペアプログラミングが 提唱されているため答えは「」となる。

③解説

【問題①】

次のような注文データが入力されたとき、注文日が入力日以前の営業日かどうかを検査するために行うチェックはどれか。

:シーケンスチェック 不正解×
:重複チェック  不正解×
:フォーマットチェック  不正解×
:論理チェック  不正解○

【解説】

注文データは注文が決まった後に入力されます。

注文日がデータ入力日よりも後の日付になることはありません。

同様に、貸出日が返却日より後の日付だったり、仕入数よりも販売数が多くなったりすることは起こり得ません。

もし違っていれば入力されたデータが誤っているということです。

論理チェックは、このように複数の項目の関連から入力されたデータが論理的に矛盾していないかどうかを検証するものです。

つまり答えは「」となる。

問題②解説

問題③解説

最後まで読んでいただきありがとうございました!

今回の内容が、役に立ったな!と思ったらシェア&ブクマ登録よろしくお願いします。

また、質問や問い合わせに関しては、コメント欄かお問い合わせフォームを活用ください。

それではまたお会いしましょう。

黄島 成

-システム