カテゴリ: 8.システム開発

1.ヒューマンインターフェースとは

インターフェース (interface) は、「接点」という意味です。
たとえば、パソコンと外部のUSBデバイスと接点として、USBのインターフェースがあります。映像機器と接続するインターフェースにはHDMIがあります。

一般に、インターフェースというと、機械と機械の接点です。
ヒューマンインターフェースとは、機械と人間の接点を意味します。
その代表例がGUI(Graphical User Interface)で、画面上のウィンドウ,アイコン,ラジオボタンなどを駆使して、利用者に使いやすい接点を提供しています。

ヒューマンインターフェースに関するシラバスから、ヒューマンインターフェースおよびGUIの部分を抜粋します。ここにありますように、ヒューマンインターフェースを決定する際には、「アクセシビリティ」という考えがキーワードの一つです。
(2)ヒューマンインタフェース
ヒューマンインタフェースを決定する要件,インタフェースを実現する技術の種類,特徴を理解する。
用語例 ユーザビリティ,アクセシビリティ,インタラクティブシステム,音声認識,画像認識,動画認識,特徴抽出,学習機能,選択的知覚,ユーザ操作の分析,身体的適合性,ノンバーバルインタフェース,マルチモーダルインタフェース,空間型インタフェース,自然言語インタフェース

(3)GUI
グラフィックスを用いた視覚的な表示,ポインティングデバイスなどによる直感的な操作などGUI の特徴,GUI で使われる構成部品の特徴と役割,GUI 画面設計やシナリオなどを使用した設計の手順と留意事項を理解する。
用語例 ウィンドウ,アイコン,ラジオボタン(ラジオボックス),チェックボックス,リストボックス,プルダウンメニュー,ポップアップメニュー,テキストボックス
2.GUIとCLI

GUI(Graphical User Interface)と対比されるのがCLI (Command Line Interface)です。たとえば、Fortigateというセキュリティ製品にアクセスするには、GUIとCLIのどちらも利用できます。以下がGUIで、文字を入力するだけでなく、マウスでメニューを選択できたり、クリックで画面遷移をすることができるので便利です。

f:id:mamori_yuto:20181104083109j:plain

一方、CLIはコマンドだけです。今回の場合は、TeraTermというソフトウェアを使って接続しています。コマンドを一気に流せるなどのCLIならではの利点もありますが、一般的には、GUIが重宝されていることでしょう。
392d40f0

余談ですが、Ciscoに代表されるスイッチやルータの場合は、CLIを使うエンジニアがほとんどです。GUIに比べて処理速度が速いとか、複数の処理を一気に流し込めるなどのメリットがあることでしょうが、単に慣れているから、という単純な理由かもしれません。

2.アクセシビリティ

過去問(H27秋AP問71)では、「アクセシビリティ」に関して、「ソフトウェアや情報サービス,Webサイトなどを,高齢者や障害者を含む誰もが利用可能であること」と述べています。
また、Webに特化して、Webアクセシビティという場合もあります。一般的に言われているのが、画面の拡大機能や自動読み上げなどがあります。

■ユーザビリティとアクセシビリティの違い
定義はあいまいのように感じます。
言葉の定義でいうと、ユーザビリティは「使いやすさ」、アクセシビリティは「アクセス可能性」です。
違いの一つは、アクセスができて初めて、使いやすさなどが関係します。なので、アクセシビリティが達成されて、ユーザビリティがあるように感じます。

以下、参考URL
https://dmj.underworks.co.jp/2017/11/01/web-accessibility-usability-difference/

3.ヒューマンインターフェース関連の過去問

(1)H29秋AP問24

問24 アクセシビリティ設計に関する規格であるJIS X 8341-1:2010 (高齢者・障害者等配慮設計指針一情報通信における機器,ソフトウェア及びサービスー第1部:共通指針)を適用する目的のうち,適切なものはどれか。
ア 全ての個人に対して,等しい水準のアクセシビリティを達成できるようにする。
イ 多様な人々に対して,利用の状況を理解しながら,多くの個人のアクセシビリティ水準を改善できるようにする。
ウ 人間工学に関する規格が要求する水準よりも高いアクセシビリティを,多くの人々に提供できるようにする。
エ 平均的能力をもった人々に対して,標準的なアクセシビリティが達成できるようにする。






【正解】イ

(2)H27秋AP問71

問71 アクセシビリティを説明したものはどれか。
ア 住民基本台帳の情報をコンピュータネットワークで管理することによって,住民サービスの向上と行政事務処理の合理化を図ること
イ 仕様が異なるコンピュータ間で,ネットワークなどを通じてそれぞれが管理するソフトウェアやデータを利用する際の相互運用性のこと
ウ 製品や食料品など,生産段階から最終消費段階又は廃棄段階までの全工程について,履歴の追跡が可能であること
エ ソフトウェアや情報サービス,Webサイトなどを,高齢者や障害者を含む誰もが利用可能であること






【正解】エ

(3)H27春AP問24

問24 Webページの設計の例のうち,アクセシビリティを高める観点から最も適切なものはどれか。
ア 音声を利用者に確実に聞かせるために,Webページの表示時に音声を自動的に再生する。
イ 体裁の良いレイアウトにするために,表組みを用いる。
ウ 入力が必須な項目は,色で強調するだけでなく,項目名の隣に“(必須)”などと明記する。
エ ハイパリンク先の内容が推測できるように,ハイパリンク画像のalt属性にリンク先のURLを付記する。






【正解】ウ

(4)H29春AP問24

(H27秋AP問24と同じ)
問24 コードの値からデータの対象物が連想できるものはどれか。
ア シーケンスコード     イ デシマルコード
ウ ニモニックコード     エ ブロックコード






【正解】ウ

(5)H28春AP問25

問25 使用性(ユーザビリティ)の規格(JIS Z 8521:1999)では,使用性を,“ある製品が,指定された利用者によって,指定された利用の状況下で,指定された目的を達成するために用いられる際の,有効さ,効率及び利用者の満足度の度合い”と定義している。この定義中の“利用者の満足度”を評価するのに適した方法はどれか。
ア インタビュー法          イ ヒュ―リステイツク評価
ウ ユーザビリティテスト      エ ログデータ分析法






【正解】ア

(6)H26秋AP問23

問23 顧客に,英大文字A~Zの26種類を用いた顧客コードを割り当てたい。現在の顧客総数は8,000人であって,新規顧客が毎年2割ずつ増えていくものとする。3年後まで顧客全員にコードを割り当てられるようにするための,顧客コードの最も少ない桁数は幾つか。
ア 3     イ 4     ウ 5     エ 6






【正解】ア

1.ホワイトボックステストとブラックボックステスト(概要)

単体テストには、ホワイトボックステストとブラックボックステストがあります。

①ブラックボックステスト

 ユーザの立場でのテストで、内部構造が真っ黒(ブラック)で見えない状態でのテストです。
 シンプルな例で説明します。たとえば、「新規パスワード入力画面」があります。パスワードの仕様は、「英字8文字以上」と決められており、それ以外であれば、エラーになります。このとき、ブラックボックステストでは、7文字の英字、8文字の英字、8文字の数字などを入力してテストすることで、仕様が適切かを確認します。

②ホワイトボックステスト


 ブラックボックステストの逆で、開発者の立場でのテストです。分岐条件などの内部構造を理解した上でのテストです。先ほどの例ですと、内部構造として、「全角文字」が入力された場合は「半角で入力してください」というエラー処理が行われるとします。システム開発者は、テストデータとして「全角文字」をわざと入力し、適切なエラー処理およびメッセージが表示されるかを確認します。

11

2.ホワイトボックステストとブラックボックステスト

基本情報技術者試験に比べて、応用情報技術者試験は、やや上流工程を意識しているため、それほど出題はされません。概要だけ理解しておけばいいでしょう。

(1)ホワイトボックステスト

・プログラム構造に基づいてテストする。⇔ブラックボックステスト
・ホワイトボックステストに関して過去問では、「プログラムの品質を検証するために,プログラム内部のプログラム構造を分析し,テストケースを設定するテスト手法(H24秋IP問46)」、「内部構造に基づいてテストデータを作成する(H23春FE午前問49)」と述べられています。
・過去問を参考にすると、ホワイトボックステストのテストデータの作成方法として、「プログラムの流れ図から、分岐条件に基づいたテストデータを作成する(H21NW午前Ⅱ問24不正解選択肢)」となります。

テスト技法としては、①命令網羅、②判定条件網羅(分岐網羅)、③条件網羅、④複数条件網羅、があります。この順番も覚えておきましょう。
では、
過去問(H27春FE午前問50 )を見てみましょう。
問50 図の構造をもつプログラムに対して,ホワイトボックステストのテストケースを設計するとき,少なくとも実施しなければならないテストケース数が最大になるテスト技法はどれか。
ad
ア 条件網羅     イ 判定条件網羅
ウ 複数条件網羅  エ 命令網羅
ここで、「条件」というのは、左上の「A>0かつB=1」です。「命令」というのは、「X←X+1」です。
①命令網羅
命令を網羅します。命令を1回でも実行すればいいので、「A>0かつB=1」を満たす、たとえば「A=1、B=1」のテストを行います。 【テストケース数:1回】
②判定条件網羅(分岐網羅)
左上の条件「真」「偽」をそれぞれを通るようにします。たとえば、「A=1、B=1(結果:真)」、「A=0、B=1(結果:偽)」です。【テストケース数:2回】
③条件網羅
今度は、分岐ではなく、条件を網羅します。今回は、「A>0」「B=1」という2つの条件があります。なので、2つの条件で、それぞれ真の場合と偽の場合をテストします。④の複数条件網羅のように、AとBの全てのパターンを実施する必要はありません。
つまり、以下の4パターンではなく、たとえば、1と4を実施すれば、AとBのそれぞれの真偽をテストしたことになります。【テストケース数:2回】
 AB
真(A=1)真(B=1)
真(A=1)偽(B=0)
偽(A=0)真(B=1)
偽(A=0)偽(B=0)

④複数条件網羅
上記の条件の、全てのパターンを網羅する方法です。当然ながら、テストケース数が最大になります。【テストケース数:4回】

(2)ブラックボックステスト

・プログラム構造はブラックボックス化されている前提でのテスト。ユーザの立場でのテストと同様になる。つまり、値の入力でテストする。
・H21応用情報/秋問47のように「プログラム仕様書を基に~」とあれば、ブラックボックステストである。
・ブラックボックステストのテストデータの作成方法として、「機能仕様から同値クラスや限界値を識別し、テストデータを作成する(H21SA午前-問7)」と述べられている。また、H21SA午前-問7の不正解の選択肢として「業務で発生するデータの発生頻度を分析し、テストデータを作成する」「稼働中のシステムから実データを無作為に抽出し、テストデータを作成する」がある。
e1f51e18
この問題のポイントは、ブラックボックステストは「ブラックボックス」だから中身が見えない。だからといって無作為にテストデータをするわけではない。同値分割や限界値分割を利用し、意図的なデータでテストすることですね。
同値分割:同じ値になるデータをクラス分けする。
 同値分割のテストケース設計法の説明として、「読み込んだデータが正しくないときにエラーメッセージを出力するかどうかをテストしたい。プログラム仕様書を基に、正しくないデータのクラスを識別し、その中から任意のデータを代表として選びテストケースとする。(H21応用情報/秋問47)
限界値分析:H23春ES午前Ⅱ問24では、限界値分析の例が記載されています。
「プログラムの誤りの一つに,繰返し処理の判定条件としてA≧aとすべきところをA>aとコーディングすることがある。このような誤りを見つけ出すために有効なテストケース設計技法はどれか。ここで, Aは変数、aは定数とする。」
このように、値の限界のところでテストをします。
原因一結果グラフ:「入力と出力の関係からテストデータを作成する。(H23春FE午前問49)」と述べられています。

◆テストの実施
テストの実施にあたっては、デバッガ、ドライバ、スタブなどを活用する。

3.ホワイトボックステストとブラックボックステストの過去問を解いてみよう

(1)H22秋AP午前問46

問46 ホワイトボックステストのテストケースを設計する際に使用するものはどれか。
ア 原因一結果グラフ  イ 限界値分析
ウ 条件網羅      エ 同値分割 





【正解】ウ
ホワイトボックステストでは、ウの条件網羅を使用します。
ブラックボックステストでは、内部構造が分からないのですが、原因一結果グラフ、限界値分析、同値分割を利用します。

(2)H26秋AP午後

設問1 単体テストの方法について,ホワイトボックステスト,ブラックボックステストのテスト項目の作成方法に該当するものを,解答群の中からそれぞれ全て選び,記号で答えよ。

解答群
ア ユニット内の条件判定の組合せ全てを少なくとも1回は実行する。
イ ユニットの全ての分岐を少なくとも1回は実行する。
ウ ユニットの全ての命令を少なくとも1回は実行する。
エ ユニットへの入力データの値の範囲を分割し,各代表値で実行する。
オ ユニットへの入力と出力の因果関係を網羅するよう実行する。





正解ですが、以下です。全ての命令を実行するなど、内部構造を理解したテストがホワイトボックステストで、それ以外がブラックボックステストと考えればいいでしょう。
【正解】
ホワイトボックステスト:ア、イ、ウ
ブラックボックステスト:エ、オ

 

1.レビューの対象

レビューとは、プロジェクトの活動や作成した成果物をチェックすることです。設計工程における設計書のレビューがデザインレビュー(デザインとは「設計」という意味です)で、プログラミング工程でのソースプログラムのレビューがコードレビューです。
a

参考ですが、応用情報のシラバスには、「プロジェクト活動の状況や成果物を適宜評価するためのレビューの目的を理解する。」とあります。

デザインレビューの目的ですが、プログラム工程よりも前の設計工程でレビューをすることで、成果物の問題点の早期発見を行うことができます。

2.レビューの種類(インスペクションとウォークスルー)

①インスペクション

インスペクション(inspection)とは「調査」という意味です。組織における公式なレビューです。

「作業成果物の作成者以外の参加者がモデレータとして主導すること,及び公式な記録,分析を行うことが特徴のレビュー技法(H24春AP午前問47)」
「あらかじめ参加者の役割を決めておくとともに,進行役の議長を固定し,レビューの焦点を絞って迅速にレビュー対象を評価する。(H19SW午前問44)」

②ウォークスルー

ウォークスルーは、システムやソフトウェアのレビューの方法です。ウォーク(歩いて)スルー(通り過ぎる)という言葉からイメージされるように、気軽に行う非公式のレビューです。※正確な語源は違うので、イメージとして捉えてください。

「レビュー対象物の作成者が説明者になり,入力データの値を仮定して,手続をステップごとに机上でシミュレーションしながらレビューを行う。(H19SW午前問44)」
「設計上の誤りを早期に発見することを目的として,作成者と複数の関係者が設計書をレビューする方法はどれか(H25秋AP午前問46)」

3.レビューの過去問を解いてみよう

(1)H24春AP午前

問47 作業成果物の作成者以外の参加者がモデレータとして主導すること,及び公式な記録,分析を行うことが特徴のレビュー技法はどれか。
ア インスペクション
イ ウォークスルー
ウ パスアラウンド
エ ペアプログラミング






【正解】ア

(2)H19SW午前

問44 a~cの説明とレビューとの対応について,適切な組合せはどれか。
a 参加者全員が持ち回りでレビュー責任者を務めながらレビューを行うので,参加者全員の参画意欲が高まる。
b レビュー対象物の作成者が説明者になり,入力データの値を仮定して,手続をステップごとに机上でシミュレーションしながらレビューを行う。
c あらかじめ参加者の役割を決めておくとともに,進行役の議長を固定し,レビューの焦点を絞って迅速にレビュー対象を評価する。

 abc
インスペクションウォークスルーラウンドロビン
ウォークスルーインスペクションラウンドロビン
ラウンドロビンインスペクションウォークスルー
ラウンドロビンウォークスルーインスペクション






【正解】エ

(3)H25秋AP午前

問46 設計上の誤りを早期に発見することを目的として,作成者と複数の関係者が設計書をレビューする方法はどれか。
ア ウォークスルー
イ 机上デバッグ
ウ トップダウンテスト
エ 並行シミュレーション






【正解】ア

(4)H21春AP午前

問45 デザインレビューの目的はどれか。
ア 成果物の問題点の早期発見を行う。
イ 設計プロセスとマネジメントプロセスに関する問題点の早期発見と是正を行う。
ウ 第三者機関による成果物のサンプリング検査で品質上の問題点の早期発見と是正を行う。
エ 第三者機関による全成果物の合否判定を行う。






【正解】ア

(5)H23秋AP午前

問44 内部設計書のデザインレビューを実施する目的として,最も適切なものはどれか。
ア 外部設計書との一貫性の検証と要件定義の内容を満たしていることの確認
イ 設計記述規約の遵守性の評価と設計記述に関する標準化の見直し
ウ 要件定義の内容に関する妥当性の評価と外部設計指針の見直し
エ 論理データ設計で洗い出されたデータ項目の確認と物理データ構造の決定






【正解】ア

(6)H25秋AP午前

問48 表は,現行プロジェクトにおけるソフトウェア誤りの発生・除去の実績,及び次期プロジェクトにおける誤り除去の目標を記述したものである。誤りは,設計とコーデインクの作業で埋め込まれ,デザインレビュー,コードレビュー及びテストで全て除去されるものとする。次期プロジェクトにおいても,ソフトウェアの規模と誤りの発生状況は変わらないと仮定したときに,テストで除去すべきソフトウェア誤りの比率は全体の何%となるか。

a

ア 17.5  イ 25  ウ 30  エ 32.5






【正解】エ

■H25春FE午後問6〔各工程での品質管理の説明〕より
(2)プログラミングエ程では,ソースプログラムのコードレビューを行う。コードレビューには,セルフレビュー及びペアレビューがある。プログラミング担当者が単独で行うのがセルフレビューであり,プログラミング担当者ともう1名でペアを組んで行うのがペアレビューである。セルフレビューの終了後にペアレビューを行う。

単体テストが終わったら、次は複数のモジュールを組み合わせて、モジュール間の連携部分を含めた確認をする結合テストを行います。結合テストには、トップダウンテストと、ボトムアップテストとの2つがあります。

トップダウンテスト
 モジュールの上位からテストを実施するのがトップダウンテストです。最近では開発の方式が多様化しているので一概には言えませんが、階層構造の上位モジュールから開発する場合が分かりやすい例です。上位モジュールから開発していますから、単体テストおよび結合テストも、それに応じて上位から行われます。下位モジュールはまだ完成していないと、十分なテストが行えない場合があります。そこで、スタブと呼ばれる下位モジュールの代替となるテスト用モジュールを準備して補います。
b
ボトムアップテスト
 モジュールの下位からテストを実施します。上位のモジュールの代替えとなるのがドライバです。
a
 
では、スタブやドライバは具体的にはどんな役割をするのでしょうか。具体例で説明します。以下は、検索画面で、たとえば「network」という文字を入力して「検索」ボタンを押すと、該当するデータを表示する機能とします。

a

モジュール構造ですが、上位モジュールとして、「文字入力」(入力値のチェックなどを行います)と、下位モジュールとして「検索処理」(入力された文字をもとに、DBから検索します)があります。

このとき、上位モジュールから下位モジュールに、入力された値である「network」という文字を、引数として渡します。ですから、ドライバは,引数を渡してテスト対象モジュールを呼び出す機能だけを実装したテスト用モジュールです。

UML(Unified Modeling Language)とは
UMLは、Unified Modeling Languageという言葉のとおり「統一モデリング言語」である
・Unified(統一された)という言葉のとおり、メーカや製品に依存しません。
・Modeling(モデリング)は模型(モデル)を作ることを意味します。データベースの世界ではモデリングとしてE-R図を描く。
・Language(言語)というと、JAVAなどのプログラム言語を思い浮かべるかもしれないが、そうではない。言語よりは図のほうが近いだろう。
・OMGという分散オブジェクト指向技術の標準化団体が定める。OMGはObject Management Groupの略であるがOh My Godと覚えると覚えやすいかもしれない。
UMLは「統一言語」なのに、オブジェクト指向との関連が強い。OMGというオブジェクト指向の団体が作成したことも理由であるが、オブジェクト指向のプログラム開発に利用される。
・以下が分かりやすい
http://www.objectclub.jp/technicaldoc/uml/umlintro2#usecase

UMLの必要性
・ネットワークの世界でいうと、ルータのConfigを読むのは難しいが、ネットワーク構成図があると全体像がわかりやすい。
プログラムの世界でも同じことが言えて、イメージ図があるとわかりやすい。その書き方が人によってまちまちであったら、大変。そこで、UMLで世界標準のモデリング方法が作成された。
・ただ、種類が多いことから逆に使いにくいとの評判もある。すべてのケースでUMLを使うのではなく、必要に応じて使う企業が多いと思う。

UMLの13のダイヤグラム(図)
(1)ユースケース
http://sm.seeeko.com/archives/65920682.html

(2)アクティビティ図
http://sm.seeeko.com/archives/65793281.html

(3)クラス図
http://sm.seeeko.com/archives/65793283.html

(4)シーケンス図
http://sm.seeeko.com/archives/65793282.html

(5)オブジェクト図
http://sm.seeeko.com/archives/65910838.html

(6)ステートマシン図
シーケンス図やコミュニケーションズでは、オブジェクト間の関係を表記していた。一方、ステートマシン図はあるオブジェクト内の状態を表す。

例えば、お店が「営業中」⇔「準備中」

(7)コンポーネント
ソフトウェアの構成を表す。
右上にLANのモジュールのような記号がついているのがトレードマーク

(8)配置図
システム構成図的なものである。
サーバ、クライアントなどのハードウェア環境とともに、ファイルの状態も表す。
ファイルの右上にはファイルのアイコンがついている。

(9)コミュニケーションズ
オブジェクト間の関係を表記


■資格は2種類
・OMG認定UML技術者(OCUP)
UMLモデリング技能検定・・日本独自 15750円  ・・・こっちが人気ありそう。

UMLを記述するツール
PPTで書くのも良いだろうが、便利なツールがたくさんある。
MicrosoftVisioUMLを書くのに便利なツールのひとつだ。
また、プログラムからUMLを自動で書くツールなどもある様子。(私は使ったことが無いので不明だが)

・ユースケース(Use Case)とは、利用者(アクターと言います)がどんな場面(case)で使う(use)のかという「利用シーン」と考えてください。※アクターは、人だけではなく、外部のシステムもアクターになり得ます。こちらにもかるく解説しています。
・要件定義にて利用され、システムを理解するのに便利な図です。

過去問(H18春AD午前)を見てみましょう。
問31 次のユースケース図の説明はどれか。
usecase1
ア 在庫管理システムは人ではないので,アクターは注文担当者だけである。
イ システム化の対象には,注文管理システムと在庫管理システムが含まれる。
ウ 注文管理システムはシステム境界の中にあり,注文担当者と在庫管理システムはシステム境界の外にある。
エ ユースケースは四つあり,各ユースケース名は,注文管理システム,注文処理,注文変更処理,注文取消処理である。
ア:アクターは、注文担当者と在庫管理システムです。
イ:システム化の対象は,注文管理システムです。
ウ:正解選択肢です。
エ:ユースケースは3つあり,注文処理,注文変更処理,注文取消処理です。

正解はウ

過去問(H23秋AP午後問8)で、ユースケースの事例があります。

usecase
作成途中だが、以下がそのユースケース図
usecase2
usecase3
応用情報技術者試験を勉強する成子

運転手というアクターが、「運賃を確定させる」というユースケースに関連づけられているのはなぜですか?
この点は、問題文に、「整理券箱にICバスカードをかざさず、かつ、IC整理券を取り忘れた場合は、始発バス亭からの運賃が適用され、運転手が運賃箱にその金額を運賃として設定する」とあります。
つまり、整理券を取り忘れた場合などに、運転手が運賃箱に金額を設定する場合があるからです。

ユースケース図に関する出題は、H20秋SW午後2でも出題されています。

◆過去問(H27秋AP午前)
問64 要件定義において,利用者や外部システムと,業務の機能を分離して表現することで,利用者を含めた業務全体の範囲を明らかにするために使用される図はどれか。

ア アクティビティ図  イ オブジェクト図
ウ クラス図   エ ユースケース図

正解はエのユースケース図

■H29秋AP
問51 ソフトウェア開発プロジェクトで行う構成管理の対象項目はどれか。
ア 開発作業の進捗状況
ウ プログラムのバージョン
イ 成果物に対するレビューの実施結果
エ プロジェクト組織の編成
【正解】ウ

シラバスにおける、「4. 構成管理・変更管理」には以下があります。
------------
リリース管理及び出荷
構成品目の完全性が保証された後は,ソフトウェアや関連文書の新しい版の出荷などの
手続を行うこと,ソフトウェアのコードや文書はソフトウェアの寿命のある間保守するこ
とを理解する。

用語例 バージョン管理,保管期間
------------

■H28春AP午前
問50 エクストリームプログラミング(XP:eχtreme Programming)における“テスト駆動開発”の説明はどれか。
ア 最初のテストでバグを抽出すること
イ テストケースを順次改善すること
ウ テストでのカバレージを優先すること
エ プログラムを書く前にテストケースを作成すること
【正解】エ

■H27秋AP午前
問49 エクストリームプログラミング(XP) におけるリファクタリングの説明はどれか 。
ア 外部から見た動作を変えずにプログラムをより良く作り直すこと
イ コーチがチームメ ンバの意識を高めること
ウ プログラミングとテストを繰り返し行うこと
エ プログラムを作成するよりも先にテストケースを考えること
【正解】ア
 リファクタリングは、外部から見える動作を変えずに内部構造(プログラム)を書き直すことです。
参考ですが、選択肢エは「テスト駆動開発」の説明です。

■H27春AP午前
問50 エクストリームプログラミング(XP) のプラクティスとして,適切なものはどれ か。
ア 1週間の労働時間は,チームで相談 して自由に決める。
イ ソースコードの再利用は,作成者だけ が行う。
ウ 単体テストを終えたプログラムは,す ぐに結合して,結合テストを行う。
エ プログラミングは1人で行う。
【正解】ウ

■H26春AP午前
問49 エクストリームプログラミング(XP)におけるリファクタリングの説明はどれか 。
ア 外部から見た動作を変えずにプログラムをより良く作り直すこと
イ コーチがチームメンバの意識を高め ること
ウ プログラミングとテストを繰り返し行う こと
エ プログラムを作成するよりも先にテス トケースを考えること
【正解】ア

■H25春AP午前
問49 ソフトウェアのリファクタリングの説明はどれか。
ア 外部から見た振る舞いを変更せずに保守性の高いプログラムに書き直す。
イ ソースコードから設計書を作成する。
ウ ソフトウェア部品を組み合わせてシステムを開発する。
エ プログラムの修正が他の部分に影響 していないかどうかをテストする。
【正解】ア

■H24春AP午前
問48 プログラムに“事実"と"規則"を記述 し,プログラム言語の処理系がもつ導出原理によって結論を得るプログラミングパラダイムであって,エキスパートシステムの開発に適しているものはどれか。
オブジェクト指向プログラミング
イ 関数 型プログラミング
ウ 手続型プログラミング
エ 論理型プログラミング
【正解】エ

■H28秋AP午前
問46 UMLユースケース図の説明はど れか。
ア 外部からのトリガに応じて,オブジェク トの状態がどのように遷移するかを表現 する。
イ クラスと関連から構成され,システム の静的な構造を表現する。
ウ システムとアクタの相互作用を表現す る。
エ データの流れに注目してシステムの 機能を表現する。
【正解】ウ

問47 オブジェクト指向言語のクラスに関する記述のうち,適切なものはどれか。
ア インスタンス変数には共有データが保 存されているので,クラス全体で使用でき る。
イ オブジェクトに共通する性質を定義し たものがクラスであり,クラスを集めたも のがクラスライブラリである。
ウ オブジェクトはクラスによって定義され ,クラスにはメソッドと呼ばれる共有デー タが保存されている。
エ スーパクラスはサブクラスから独立し て定義し,サブクラスの性質を継承する。
【正解】イ

問48 Jis X 0160 におけるソフトウェア実 装プロセスの下位レベルのプロセスのう ち,次のタスクを実施するものはどれか。
〔タスク〕
・ソフトウェア品目の外部インタフェース, 及びソフトウェアコンポーネント間のインタ フェースについて最上位レベルの設計を 行う。
・データベースについて最上位レベルの 設計を行う。
・ソフトウェア結合のために暫定的なテス ト要求事項及びスケジュールを定義する 。
ア ソフトウェア結合プロセス     イ ソフトウェア構築プロセス
ウ ソフトウェア詳細設計プロセス     エ ソフトウェア方式設計プロセス
【正解】エ

■H28春AP午前
問46 ソフトウェアの品質特性のうちの保守性に影響するものはどれか。
ア ソフトウェアが,特定の作業に特定の利用条件でどのように利用できるかを利用者が理解しやすいかどうか。
イ ソフトウェアにある欠陥の診断又は故障原因の追究,及びソフトウェアの修正箇所を識別しやすいかどうか。
ウ ソフトウェアに潜在する障害の結果として生じる故障が発生しやすいかどうか。
エ ソフトウェアの機能を実行する際に,資源の量及び資源の種類を適切に使用するかどうか。
【正解】イ

問47 モジュールの結合度が最も低い,データの受渡し方法はどれか。
ア 単一のデータ項目を大域的データで受け渡す。
イ 単一のデータ項目を引数で受け渡す。
ウ データ構造を大域的データで受け渡す。
エ データ構造を引数で受け渡す。
【正解】イ

問48 プロセス制御などの事象駆動(イベントドリブン)による処理の仕様を表現する方法として,適切なものはどれか。
ア DFD     イ E-R図
ウ クラス図     エ 状態遷移図
【正解】エ

問49 作業成果物の作成者以外の参加者がモデレータとして主導すること,並びに公式な記録及び分析を行うことが特徴のレビュー技法はどれか。
ア インスペクション     イ ウォークスルー
ウ パスアラウンド     エ ペアプログラミング
【正解】ア

■H27秋AP午前
問46 DFDにおけるデータストアの性質と して,適切なものはどれか。
ア 最終的には,開発されたシステムの 物理ファイルとなる。
イ データストア自体が,データを作成し たり変更したりすることがある。
ウ データストアに入ったデータが出て行 くときは,データフロー以外のものを通る ことがある。
エ 他のデータストアと直接にデータフD  ーで結ばれることはなく,処理が介在する 。
【正解】エ

問47 ソフトウェア開発に利用されるピア レビューの説明として,適切なものはどれ か。
ア 同じ職場内の様々なスキルや知識を もつレビューアによって,成果物を検証す る。
イ 成果物の内容を審査して,次の開発 工程に進むための関門(審査・承認)とし て実施する。
ウ 早期に成果物から欠陥を取り除くこと が目的なので,管理職のメンバの参加が 必要である。
エ プロトタイピングで試作したソフトウェ アの動作を,発注元の会社と検証する。
【正解】ア

問50 共通フレームをプロジェクトに適用 する場合の考え方のうち,適切なものは どれか。
ア Jis規格に基づいているので,個々の プロジェクトの都合でアクティビティやタス クを変えずに,そのまま適用する。
イ 共通フレームで規定しているプロセス の実施順序に合わせて,作業手順を決 めて適用する。
ウ 共通フレームで推奨している開発モ デル,技法やツールを取捨選択して適用 する。
エ プロジェクトの特性や開発モデルに合 わせて,アクティビティやタスクを取捨選 択して適用する。
【正解】エ

■H27春AP午前
問47 次の図の作成に用いられている表 記法はどれか。

8-1_H27h_47
ア DFD     イ 状態遷移図
ウ 流れ図     エ ペトリネット
【正解】ア

問48 JlS X 25010:2013 で規定されたシ ステム及びソフトウェア製品の品質副特 性の説明のうち,信頼性に分類されるものはどれ か。
ア 製品又はシステムが,それらを運用 操作しやすく,制御しやすくする属性をもっている度合い
イ 製品若しくはシステムの一つ以上の 部分への意図した変更が製品若しくはシ ステムに与える影響を総合評価すること, 欠陥若しくは故障の原因を診断すること, 又は修正しなければならない部分を識別 することが可能であることについての有 効性及び効率性の度合い
ウ 中断時又は故障時に,製品又はシス テムが直接的に影響を受けたデータを回 復し,システムを希望する状態に復元するこ とができる度合い
エ ニつ以上のシステム,製品又は構成 要素が情報を交換し,既に交換された情 報を使用することができる度合い
【正解】ウ

■H26秋AP午前
問46 UMLのユースケース図の説明は どれか。
ア 外部からのトリガに応じて,オブジェク トの状態がどのように遷移するかを表現している。
イ クラスと関連から構成され,システム の静的な構造を表現している。
ウ システムとアクタの相互作用を表現し ている。
エ データの流れに注目してシステムの 機能を表現している。
【正解】ウ

■H26春AP午前
問46 モジュール分割の良否を,モジュー ル結合度の視点から評価する場合,最も 適切な記述はどれか。
ア 共通データ領域は,全てのモジュール からアクセスできるようになっていることが望ましい。
イ ソフトウェア全体のモジュール分割の 良否は,モジュール間の結合度のうちで 最も強いものがどのように分布しているか で判断するのが望ましい。
ウ 直接の呼出し関係になっていないモ ジュール間で情報を交換するには,共通データ領域を用いるのが最も望ましい。
エ 呼び出す側と呼び出される側のモジ ュール間のデータの受渡しは,引数として データ項目を列挙するのが最も望ましい。
【正解】エ

問47 ソフトウェアの使用性を向上させる 施策として,適切なものはどれか。
ア オンラインヘルプを充実させ,利用方 法を理解しやすくする。
イ 外部インタフェースを見直し,連携で きる他システムを増やす。
ウ 機能を追加し,業務においてシステム が利用できる範囲を拡大する。
エ ファイルを分散して配置し,障害によ るシステム停止のリスクを減らす。

ア:正解選択肢です。利用しやすくします。
イ:効率性などが該当します。
ウ:機能を追加するので機能性が向上します。
エ:障害に強くなるので、信頼性が向上します。
【正解】ア

■H25秋AP午前
問45 E-R図の解釈として,適切なものは どれか。ここで,* *は多対多の関連 を表し,
  自己参照は除くものとする。
8-1_H25a_48
ア ある組織の親組織の数が,子組織の数 より多い可能性がある。
イ 全ての組織は必ず子組織をもつ。
ウ 組織は2段階の階層構造である。
エ 組織はネットワーク構造になっていない。
【正解】ア

問46 設計上の誤りを早期に発見するこ とを目的として,作成者と複数の関係者 が設計書
  をレビューする方法はどれか。
ア ウォークスルー     イ 机上デバッグ
ウ トップダウンテスト     エ 並行シミュレーション
【正解】ア

問47 オブジェクト指向言語のクラスに関 する記述のうち,適切なものはどれか。
ア インスタンス変数には共有データが保 存されているので,クラス全体で使用でき
 る。
イ オブジェクトに共通する性質を定義し たものがクラスであり,クラスを集めたも
 のがクラスライブラリである。
ウ オブジェクトはクラスによって定義され ,クラスにはメソッドと呼ばれる共有デ
 ータが保存されている。
エ スーパクラスはサブクラスから独立し て定義し,サブクラスの性質を継承する。
【正解】イ

問48 表は,現行プロジェクトにおけるソ フトウェア誤りの発生・除去の実績,及び 次期
  プロジェクトにおける誤り除去の目標 を記述したものである。誤りは,設計とコ ーデ
  インクの作業で埋め込まれ,デザイン レビュー,コードレビュー及びテストで全て 除
  去されるものとする。次期プロジェクト においても,ソフトウェアの規模と誤りの 発
  生状況は変わらないと仮定したときに ,テストで除去すべきソフトウェア誤りの 比率
  は全体の何%となるか。
8-1_H25a_48
ア 17.5     イ 25     ウ 30     エ 32.5
【正解】エ


■H25春AP午前
問45 図ぱ顧客が商品を注文する”を表 現したUMLのクラス図である。“顧客が 複数の商品をまとめて注文する”を表現した クラス図はどれか。ここで,“注文明細”は 一つの注文に含まれる1種類の商品に対 応し,“注文”は複数の“注文明細”を束 ねた一つの注文に対応する。
8-1_H25h_45
【正解】ア

問46 ソフトウェアの使用性を評価する指 標の目標設定の例として,適切なものは どれか。
ア ソフトウェアに障害が発生してから1 時間以内に,利用者が使用できること
イ 利用者が使用したい機能の改善を, 1週間以内に実装できること
ウ 利用者が使用したい機能を, 100%提 供できていること
エ 利用者が,使用したいソフトウェアの 使用方法を1時間以内に習得できること
【正解】エ

■H24秋AP午前
問44 UMLで用いる図のうち,オブジェク ト間で送受信するメッセージによる相互作 用が表せるものはどれか。
ア コンポーネント図     イ シーケンス図
ウ ステートチャート図     エ ユースケース
【正解】イ

問45 ソフトウェアの要件定義や分析・設 計で用いられる技法に関する記述のうち ,適切なものはどれか。
ア 決定表は,条件と処理を対比させた 表形式で論理を表現したものであり,複 雑な条件判定を伴う要件定義の記述手 段として有効である。
イ 構造化チャートは,システムの“状態” の種別とその状態が遷移するための“要 因”との関係を分かりやすく表現する手段 として有効である。
ウ 状態遷移図は,  DFDに“コントロール 変換とコントロールフロー”を付加したも のであり,制御系システムに特有な処理 を表現する手段として有効である。
エ 制御フロー図は,データの“源泉,吸 収,流れ,処理,格納”を基本要素として おり,システム内のデータの流れを表現 する手段として有効である。
【正解】ア

問46 ソフトウェアの再利用の説明のうち ,適切なものはどれか。
ア 再利用可能な部品の開発は,同一規 模の通常のソフトウェアを開発する場合 よりも工数がかかる。
イ 同一機能のソフトウェアを開発すると き,一つの大きい部品を再利用するより も,複数の小さい部品を再利用する方が ,開発工数の削減効果は大きい。
ウ 部品の再利用を促進するための表彰 制度などによるインセンティブの効果は, 初期においては低いが,時間の経過とと もに高くなる。
エ 部品を再利用したときに削減できる 工数の比率は,部品の大きさに反比例す る。
【正解】ア

問48 SOA (Service Oriented  Architecture)の説明はどれか。
ア Webサービスを利用するためのインタ フェースやプロトコルを規定したものであ る。
イ XMLを利用して,インターネット上に存 在するWebサービスを検索できる仕組み である。
ウ 業務機能を提供するサービスを組み 合わせることによって,システムを構築す る考え方である。
エ サービス提供者と委託者との間でサ ービスの内容,範囲及び品質に対する要 求水準を明確にして,あらかじめ合意を 得ておくことである。
【正解】ウ

■H24春AP午前
問45 オブジェクト指向における抽象クラ スで,できないことはどれか。
ア インスタンスを生成すること
イ サブクラスを もつこと
ウ スーパクラスをもつこと
エ 属性をもつこと
【正解】ア

問46 安全性や信輸既について,次の方針 でプログラム設計を行う場合,その方針を 表す用語はどれか。
“不特定多数の人が使用するプログラム には,自分だけが使用するプログラムに比 べて,より多くのデータチェックの機能を組 み込む。プログラムが処理できるデータ の前提条件を文書に書いておくだけでな く,その前提を満たしていないデータが実 際に入力されたときは,エラーメッセージを 表示して再入力を促すようにプログラム を作る。"
ア フールプルーフ     イ フェールセーフ
ウ フェールソフト     エ フォールトトレラント
【正解】ア

問47 作業成果物の作成者以外の参加 者がモデレータとして主導すること,及び公 式な記録,分析を行うことが特徴のレビュ ー技法はどれか。
ア インスペクション     イ ウォークスルー
ウ パスアラウンド     エ ペアプログラミング
【正解】ア

日本工業規格(JlS)では、ソフトウェアの品質特徴を、機能適合性,性能効率性,互換性,使用性,信頼性,セキュリティ,保守性、移植性の8つに分類しています。さらに、各特性は関連する副特性があります。たとえば、「信頼性」の副特性として、故障発生時に回復できる度合いを示す「回復性」や、システムをどれだけ利用できるかという「可用性」などがあります。
これらを全て覚える必要はありません。代表的なものとして、以下の3つを覚えておきましょう。

品質特性

概要

評価指標の例

①信頼性

故障が発生しないことやバグが少ないなど、システムがどれだけ信頼できるか

運用期間中の停止時間

②保守性

ソフトウェアの修正のしやすさ、効率性

修正1件あたりにかかる時間

③使用性

利用者にとっての使いやすさの度合い

機能の使い方を学ぶのに必要となる時間


シラバスでは以下の記載があります。
(9)ソフトウェア品質
JIS X 25010(ISO/IEC 25010)で規定されているシステム及びソフトウェア製品の品質特性を理解し,要件定義や設計の際には品質特性を考慮することを理解する。
用語例 JIS X 25010(ISO/IEC 25010),ISO 9000

① 利用時の品質モデル
システムとの対話による成果に関係する五つの特性である,利用時の品質モデルを理解する。
用語例 有効性,効率性,満足性,リスク回避性,利用状況網羅性

② 製品品質モデル
システム及び/又はソフトウェア製品の品質特徴(品質に関係する測定可能な特徴とそれに伴う品質測定量)を八つに分類した製品品質モデルを理解する。また,各特性は関連する副特性の集合から構成されていることを理解する。

用語例 機能適合性,性能効率性,互換性,使用性(習得性,運用操作性,アクセシビリティほか),信頼性(可用性,回復性ほか),セキュリティ,保守性(解析性,試験性ほか),移植性

過去問を見てみましょう。
◆H25春AP
問46 ソフトウェアの使用性を評価する指標の目標設定の例として,適切なものはどれか。
ア ソフトウェアに障害が発生してから1時間以内に,利用者が使用できること
イ 利用者が使用したい機能の改善を,1週間以内に実装できること
ウ 利用者が使用したい機能を, 100%提供できていること
エ 利用者が,使用したいソフトウェアの使用方法を1時間以内に習得できること





ア:信頼性
イ:保守性
ウ:機能性
エ:使用性
正解は、エ

◆H23秋AP 
問46 表は,あるソフトウェアにおける品質特性の測定方法と受入れ可能な基準値を示している。a~cに入る品質特性の組合せはどれか。
a
    a     b     c
ア 効率性 使用性 保守性
イ 効率院 保守性 使用性
ウ 使用性 効率性 保守性
エ 使用性 保守性 効率性






正解:エ

■H29秋AP(高度)午前
問54 品質の定量的評価の指標のうち,ソフトウェアの保守性の評価指標になるものはどれか。
ア(最終成果物に含まれる誤りの件数)÷(最終成果物の量)
イ(修正時間の合計)÷(修正件数)
ウ(変更が必要となるソースコードの行数)÷(移植するソースコードの行数)エ(利用者からの改良要求件数)÷(出荷後の経過月数)





ア:品質なので、信頼性
イ:修正のしやすさなので、保守性
ウ:移植のしやすさなので、移植性
エ:機能面なので、機能性
正解はイ

システム開発の分野はH29春~H28春で、毎年5問の出題があります。
その中で、知的財産管理適用が1問出題されます。

ざっくり解説すると、要件定義⇒設計⇒プログラミング⇒テストの流れでシステム開発が行われます。
過去問(H22秋IP問48)を見てみましょう。
問48 システム開発プロセスを要件定義,外部設計,内部設計,プログラミングに分け,テストの種類を運用テスト,結合テスト,システムテスト,単体テストに分けたとき,図のa~cに入れる字句の適切な組合せはどれか。
要件定義

正解はイの結合テストシステムテスト、運用テストです。

最初の工程が要件定義です。
過去問(H22春FE午前問66)では、「要件定義の段階で行う作業」として、「新たに構築する業務とシステムの仕様を明確化し,システム化範囲を明示する。」とあります。
要件定義の重要な役割はどんなシステムを作るかという仕様を決めることもありますが、同時に、システム化の範囲を明確にします。範囲を明確にしないと、費用や工期が際限なく増えてしまうからです。

性能や操作性、保守性、セキュリティ要件など、機能として具体的に設計書に表れにくいものが非機能要件です。
過去問(平成23年秋AP午前)では、非機能要件項目として「システム基盤に関わる可用性,性能,拡張性,運用性,保守性,移行性,セキュリテイ,システム環境などの項目」と述べられています。
具体例ですが、過去問(H21SA午前-問14)には、受注管理システムにおける非機能要件として「受注管理システムの稼働率を決められた水準に維持するために、障害発生時は半日以内に回復できること」とある

過去問(H22年FE秋午前)を解いてみましょう。
問64 非機能要件の定義に該当するものはどれか。
ア 業務を構成する機能間の情報(データ)の流れを明確にする。
システム開発で利用する言語に合わせた開発基準,標準を作成する。
ウ システム機能として実現する範囲を定義する。
工 他システムとの情報授受などのインタフェースを明確にする。
【正解】
イです。機能ではないものを探します。イの開発基準などは、利用者の機能ではありません。ただ、運用保守をするうえでは大事な内容なので、非機能要件として開発時に確認をしておくと便利です。

非機能要件も明確に定義した方がいいのですが、実際の現場では、以下ようにあいまいであることが多いものです。
・性能要件(システムの応答時間は明確な基準は考えていないが、あまり遅いのは困る)
・保守要件(障害時の復旧時間は決めていないが、できるだけ早く解決してほしい)
・移行要件(移行はSIerに任せるが、できるだけ利用者の負担を軽減し、なおかつ迅速にやってほしい)

要件定義に関しては、①要求分析をした後、②要件定義に入ります。
①要求分析
ユーザニーズの調査をするなどして、要求を分析します。

②要件定義
システム化する要件を定義します。
このとき、機能要件だけではなく、非機能要件も確認し、可能な限り定義しておくといいでしょう。
非機能要件に関しては、以下です。
http://sm.seeeko.com/archives/65793207.html

業務分析や要件定義に用いられる手法
試験センターが発表する応用情報技術者シラバスの中に、「業務分析や要件定義に用いられる手法」という項があり、うまく整理されているので引用する。
1)ヒアリング
ソフトウェアに何が要求されているかを明らかにし,理解するためには,利用者からのヒアリングが有効であること,ヒアリング実施の手順,考え方を理解する。

2)ユースケース
ユースケースは,一つの目標を達成するための利用者とシステムのやり取りを定義するために用いること,その特徴,目的,ユースケースを描く方法を理解する。

3)プロトタイプ
ソフトウェア要求分析において,外部仕様の有効性,仕様の漏れ,実現可能性などの評価を行い,手戻りを防ぐためにプロトタイプを作成することがあること,プロトタイピングの特徴を理解する。

4)DFD
業務プロセスをデータの流れに着目して表現する場合に,DFD を使用することを理解する。

5)E-R 図
業務で扱う情報を抽象化し,実体(エンティティ)と実体間の関連(リレーションシップ)を表現する場合に,E-R 図を使用することを理解する。

6)UML
オブジェクト指向設計の標準化された表記法としてUML があること,UML で用いる図式の種類,特徴,UML を用いてシステムの仕組みを表現する方法を理解する。


テストの種類には、運用テスト,結合テスト,システムテスト,単体テストがあります。
その体系は、以下を参照ください。
http://sm.seeeko.com/archives/65913915.html

ソフトウェアのテストに関して、応用情報技術者試験シラバスには以下の記載があります。
(8)ソフトウェアユニットのテスト
① テストの目的
ソフトウェアユニットのテストは,ソフトウェア詳細設計で定義したテスト仕様に従って行い,要求事項を満たしているかどうかを確認することを理解する。

用語例 障害,欠陥,障害分析

② テストの手順
テストの目的,方針,スケジュール,体制,使用するテストツールなどを決定してテスト計画を立て,次にテスト項目,テストデータの作成,テスト環境の用意などのテスト準備を行い,テストを実施し,テスト結果を評価するという一連の手順を理解する。

用語例 テスト方法論,テスト範囲,テスト準備(テスト環境,テストデータなど),テスト実施者,ユニットテスト,チェックシートの作成

③ テストの実施と評価
テストの目的,実施方法,留意事項,テストで使用されるテストツールの役割を理解する。また,テストの実行後には,テスト結果の記録,結果分析,プログラムの修正や改良作業を行うことを理解する。

用語例 デバッガ,ドライバ,スタブ,テストデータジェネレータ,テスト設計と管理手法(バグ曲線,エラー除去,バグ管理図),テスト自動化

④ テストの手法
テストで用いられるブラックボックス法,ホワイトボックス法のテストデータの作成方法を理解する。

用語例 メトリクス計測,テストケース,命令網羅,条件網羅,判定条件網羅,複数条件網羅,経路組合せ網羅,網羅率,カバレージ,限界値分析法,同値分析法,原因結果グラフ法,エラー埋込法,実験計画法

 

1.オブジェクト指向とは

旧来はC言語などの手続き型と言われる言語が使われていましたが、最近では、C++やJavaに代表されるオブジェクト指向型の言語が主流です。(ただし、Javaなどが非手続き型言語かというと、そうでもない)
オブジェク ト指向型の利点は、ソフトウェア開発の効率化です。特に大規模化が進むと、カプセル化の概念で保守性が高まり、汎化や継承(インヘリタンス)などの概念で再利用がしやすくなります。
f:id:mamori_yuto:20181027120253j:plain他の言語でもプログラムを部品化しますよね。

そうです。CだろうがVBだろうが、オブジェクト指向以外のプログラムでも、プログラムを部品化して効率的な開発、保守性を高めることをします。

このことは、オブジェクト指向でもできます。プログラムを関数として部品化します。ただ、オブジェクト指向では、関数による部品化をさらに進めて、クラスとインスタンス(後述)を作ります。クラスならではの特徴は、いくつかありますが、たとえば、関数(メソッド)だけでなく、データを持つことができます。特に、複雑なデータを持つ場合に有効になるでしょう。

応用情報のシラバスでは、オブジェクト指向設計に関して、次の記載があります。
④ オブジェクト指向設計
オブジェクト指向設計の考え方,手順,手法を理解する。

用語例 クラス,抽象クラス,スーパクラス,インスタンス,属性,メソッド,カプセル化,サブクラス,継承(インヘリタンス),部品化,再利用,クラス図,多相性,パッケージ,関連,派生関連,派生属性,コレクション,汎化,特化,分解,集約

オブジェクト指向モデルの特徴に関して過去問(H18秋FE午前問37 )では、「データは外部から隠ぺいされ,メソッドと呼ばれる手続によって間接的に操作される。プログラムは,データとメソッドをひとまとまりにしたものの集まりである。」とあります。
オブジェクト指向の本質を理解するのは結構難しいもので、書籍によっても違いが見えます。オブジェクト指向はあくまでも概念です。肩の力を抜いて、「そんなもんなんだ」くらいに理解するといいと思います。

まずは過去問(H16春SW午後Ⅰ問2)をみてみましょう。
問2  オブジェクト指向分析に関する次の記述を読んで,設問1~3に答えよ。
 A君は缶飲料自動販売機のシステムを開発することになった。最初に,簡単なシナリオを記述し,そのシナリオを基にしてUML (Unified Modeling Language)のクラス図とシーケンス図を使って,システムのモデリングを行うことにした。
シナリオ:
缶飲料を購入する顧客は,自動販売機に対して入金口から入金する。入金されたお金は,自動販売機内のレジスタに入れられる。レジスタには,今までの売上も含めたお金が蓄えられている。自動販売機は,入金されるたびに,入金総額をインジケータに表示する。入金総額が缶飲料の価格に達すると,自動販売機は価格に達した缶飲料に対応する購入可能ランプを点灯する。顧客は自分が購入したい缶飲料のランプが点灯するまで,自動販売機に入金する。購入したい缶飲料のランプが点灯し,顧客がその缶飲料を購入するためのボタンを押すと,自動販売機は選択された缶飲料を商品口に置き,購入可能ランプを消灯し,インジケータの表示をOにする。つり銭がある場合には,レジスタから必要な金額のつり銭を出し,返却金口に戻す。
A君はこのシナリオを基に,初期モデルのクラス図(図1)とシーケンス図(図2)を作成した。

a
 
b


さて、ここでレジスタに注目しましょう。レジスタはスーパーのレジと考えてください。
レジスタ(「クラス」といいます)には、1000円や1500円といった「保持金額」というデータ(「属性」と言います)がありますね。加えて、利用者からお金が「入金」されたり、お釣りを返すために「出金」という処理(「メソッド(手続き)」と言います)があります。
このように、データと手続きをまとめたオブジェクト(この場合は「クラス」)単位で開発をすることがオブジェクト指向です。

a




 
【参考】
これまでは、プロセス中心アプローチやデータ中心アプローチが取られていました。
過去問(H22春IP問45)をもとに、言葉を整理します。
ソフトウェア開発で利用する手法解説
プロセス中心アプローチ業務の処理手順に着目して,システム分析を実施する
データ中心アプローチ対象とする業務をデータの関連に基づいてモデル化し,分析する
オブジェクト指向データとデータに関する処理を一つのまとまりとして管理し,そのまとまりを組み合わせて開発する

2.オブジェクト指向の過去問を解いてみよう

(1)H19春SW午後1

問2 オブジェクト指向分析設計に関する次の記述を読んで,設問1~3に答えよ。
E社では,株価の現在値と,変動の表示を定期的に行う,図1に示すようなシステム(以下,株価通知システムという)を開発することになった。株価通知システムには複数の株銘柄が登録されており,証券取引所から定期的に送信される最新の株価に基づき,株価通知システムの株価が株銘柄ごとに更新される。株価通知システムは,株銘柄ごとに表示時点の最新株価(現在値)を数値で,株価の変動の様子(値動き)をグラフで定期的に表示する。
なお,当初は現在値表示と値動き表示の二つの表示機能だけを提供するが,将来的には株価分析用チャート表示など,新たな形式での表示機能の追加が予定されている。

オブジェクト指向
株価通知システムの開発を担当するF君は,次の設計方針に従い,  UML (UnifiedModeling Language)のクラス図とシーケンス図を用いたシステムのモデリングを行うことにした。

〔設計方針〕
・株価を保持する部分と,現在値や値動きなどの表示を行う表示部は,それぞれを個別のクラスとし,表示部には株価の値を保持しない。
・すべての株銘柄は一つ以上の表示部と関連をもち, 1回の株価更新で各表示を更新できるようにする。将来の表示機能追加に備え,表示部との関連は任意個可能とする。
・現在値表示や値動き表示などの表示機能に関しては,新たな形式の追加が予定されているので,適切な汎化を行い,部品化を図っておく。
F君は,一つの株銘柄に対する複数の表示機能を,株価の管理を行う株銘柄クラス(モデル),株価の表示を行う株価ビュークラス及びそのサブクラス(ビュー),株価の更新を制御する株価更新部クラス(コントローラ)の三つに分けて実装することにした。作成したクラス図を図2に示す。
株銘柄は,自身に依存するすべての株価ビューを,依存ビューの一覧としてもつ。株銘柄は,株価の変化に応じて,依存ビューの一覧に含まれるすべての株価ビューに対して表示を促すメッセージを送る。
株価ビューは,依存先の株銘柄を属性としてもつ。表示を促すメッセージを受けた株価ビューは,表示に必要な情報を依存先の株銘柄から取得し,表示を行う。
株銘柄と株価ビューの関連付けは,システム初期化部が関連付けのメッセージを送ることで行う。関連付けに関する処理のシーケンス図を図3に示す。また,定期的な株価更新と表示処理のシーケンス図を図4に示す。
株価通知システムをこのように設計することで,将来新たな形式の表示機能を追加
する場合,そのクラスを株価ビュークラスの[  a  ]として実装し,そのインスタンスを対応する[  b  ]クラスのインスタンスに依存ビューとして登録するだけでよい。[  b  ]クラスでは,機能追加前と同じく,依存ビューの一覧に含まれるすべての株価ビューに対して表示の更新を促す処理を行うことによって,新たに追加された形式の表示についても適切に表示の更新が行われる。
この方針は,一般にMVC (Model-View-Controller)と呼ばれ,一つのモデルを複数のビューによって表示し,モデルの変化を,それを表示するすべてのビューに反映する必要がある場合に用いられる。これは,モデルとビューの[  c  ],及びビュ-の汎化によって実現される。
 
設問1 次の(1),(2)について答えよ。
(1)本文中の[ a ],[ b ]に入れる適切な字句を答えよ。
(2)本文中の[ c ]に入れる適切な字句を解答群の中から選び,記号で答えよ。
解答群
ア 依存関係  イ 親子関係  ウ 包含関係





【正解】

a サブクラス
b 株銘柄
c ア

 
汎化(is-a)という概念と、集約(is-part-of)という2つの概念があります。
試験では、前者の汎化が中心に問われます。

1.汎化と特化(is-a)

・過去問(H28秋FE午前問47)では、汎化に関して、「クラス間に共通する性質を抽出し,基底クラスを作ること」と述べています。
・H22年NW午前Ⅱ問24を参考にすると
  is-aの例が「人間と動物」「辞書と書物」 
  part-ofの例が「タイヤと自動車」

過去問(H19秋SD午前問12)では、オブジェクト指向において階層クラスを定義した図が記載されています。
a

そして、正解選択肢として「”バス”,“トラック”などのクラスの共通部分を抽出して,“自動車"のクラスとして定義することを,汎化という。」とあります。
この逆が特化です。 ※あとで図で記載(↑が汎化、↓が特化)
また、汎化と特化の関係にある上位のクラスをスーパークラス、下位のクラスをサブクラスと言います。
スーパークラス、サブクラスの関係をは、矢印の先端が△(三角)になります。参考ですが、次の集約と分解のときは、◇(ひし形)を使います。

2.集約と分解(part-of)

過去問(平成29年春AP午前問47)をみてみましょう。
問47 汎化の適切な例はどれか。
問47





【正解】ア
 これが汎化です。下向きは特化です。

では、集約と分解(part of)の関係はどれでしょうか。選択肢イです。この上向きが集約で、下向きが分解です。 自動車は、アクセルやブレーキ、ハンドルなどに分解されるからです。
集約と分解の関係を図にするときは、◇(ひし形)を使うことがあります。

プログラムは独立性の高いモジュールに分割して構築すると効率的です。
応用情報技術者試験を勉強する成子 

何がどう効率的なんですか?




たとえば電化製品を思い浮かべてみよう。
スマホでもいいのですが、いくつもの部品に分かれているので、故障時にはたとえば電池パックやSIMだけ交換するなどが可能。全部が一体型であれば、それは不可能です。
分かれているので、開発も楽だし、他への応用も可能(たとえば、電池は同じものを他の機種でも同じものにする)です。

過去問(H17秋FE午前問41)では、「ソフトウェアのモジュール設計において,信頼性,保守性を向上させるためのアプローチとして,望ましいものはどれか」という問で、「イ モジュール強度を強く,結合度を弱くする」が正解選択肢になっています。ここにあるように、信頼性や保守性の観点でも、適切なモジュール分割は重要です。

モジュール分割手法
ではモジュールをどのように分割するか。それがモジュール分割技法である。一般的には以下で整理されています。※分割技法の整理の考え方であって、このようにきれいに分けられるものではないと考えています。
(1)データの流れに着目した分割技法
・STS分割
・TR(トランザクション)分割
(2)データ構造に着目した分割技法
・ジャクソン法
・ワーニエ法

過去問(H28秋AP午後問8より)を見てみましょう。
モジュール分割手法には,データを処理するトランザクションに着目して一連の処理をトランザクション単位にまとめてモジュールに分割する[ TR分割 ],データの流れに着目してデータの入力・変換・出力の観点からモジュールに分割する[ STS分割 ],データ構造に着目して入力データ構造と出力データ構造の対応関係からモジュールに分割する[ ジャクソン法 ]などがあることが分かった。

STS分割
STSは入力(Source)、変換(Transform)、出力(Sink)を意味します。
過去問では、「STS 分割は,プログラムをデータの流れに着目して分割する技法であり,入力データの処理,入力から出力への変換及び出力データの処理の三つの部分で構成することで,モジュールの独立性が高まる。(H20共通午前問14)」STS分割は,データの流れに着目してプログラムを分割する技法であり,入力データの処理,入力から出力への変換処理及び出力データの処理の三つの部分で構成することによって,モジュールの独立性が高まる。(H28秋SA午前Ⅱ問7)」とあります。

TR分割(Transaction division)
「データを処理するトランザクションに着目して一連の処理をトランザクション単位にまとめてモジュールに分割する(H28秋AP午後問8より)」です。

ジャクソン法
「データ構造に着目して入力データ構造と出力データ構造の対応関係からモジュールに分割する(H28秋AP午後問8より)」です。この過去問(以下に掲載)では、ジャクソン法によるモジュール分割の例が記載されています。

◆モジュール分割の基準
モジュールの独立性(モジュールの強度や結合度)が一つに基準になる。たとえば、結合度が強いモジュールは分割したほうがよい。

■モジュール分割の過去問(H28秋AP午後問8より)
問8 モジュール分割に関する次の記述を読んで,設問1~4に答えよ。

 E社は,英会話教室や料理教室などのカルチャースクール向けにSaaSを提供する会社である。E社のサービスは,画面デザインやシステム機能を顧客向けにカスタマイズできる点が人気を集めており,約100社の顧客が利用している。E社のサービスを提供するシステムには,顧客向けのカスタマイズを容易にするために,システム機能の部品化による高い再利用性が求められている。
 E社では,ビジネス拡大を目的としてスポーツクラブ向けの施設利用状況管理サービスを提供することになった。施設利用状況管理サービスを提供するシステム(以下,新システムという)の開発は,E社開発部のF君が担当することになった。


〔新システムの概要〕
 新システムは,会員管理機能,利用管理機能,利用状況集計機能の三つの機能を提供する。会員管理機能は,会員の氏名や連絡先などの情報を登録・更新・削除する機能である。利用管理機能は,スポーツクラブの店に設置する受付機を用いて,会員の利用施設や利用開始・終了日時などの施設利用実績を記録する機能である。利用状況集計機能は,各施設の利用状況を集計してレポート出力する機能である。

〔新システムのプログラムの開発方針〕
 F君は,E社のサービス提供方法を考慮したプログラムの開発方針を策定し,上司の承認を得た。F君が策定したプログラム開発方針を図1に示す。
・顧客向けのカスタマイズが容易となるように,また,特定モジュールへのカスタマイズが他のモジュールに与える影響が最小となるように,モジュール分割を行う。
・特定顧客向けに開発したモジュールが他顧客にも利用できるように,共通機能をモジュール化し,モジュール強度を高め,モジュール結合度を下げる。
図1 プログラム開発方針


〔モジュール分割手法の選定〕
 F君は,新システムのモジュール設計を行うに当たり,モジュール分割手法の調査を行った。モジュール分割手法には,データを処理するトランザクションに着目して一連の処理をトランザクション単位にまとめてモジュールに分割する[  a  ]。
データの流れに着目してデータの入力・変換・出力の観点からモジュールに分割する[  b  ],データ構造に着目して入力データ構造と出力データ構造の対応関係からモジュールに分割する[  c  ]などがあることが分かった。
 F君は,新システムは,会員の施設利用実績データを蓄積し,それを集計した結果をレポート出力するので,[  c  ]が最適な手法であることを調査報告書にまとめ,上司の承認を得た。

〔利用状況集計機能の入出力データ分析〕
 利用状況集計機能のプログラムは,施設利用実績データを集計し,店ごとに施設の利用状況をレポート出力する。
 プログラムへの入力は,受付機で記録した施設利用実績データである。プログラムからの出力は,店ごとの施設の月間利用者数,最多利用者情報などを記載した施設利用レポートである。施設利用実績データの例を表1に,施設利用レポートの例を図2に示す。
H28春AP午後問8_表1

H28春AP午後問8_図2

 F君は,プログラムへの入出力データの分析を行い,入力データ構造図及び出力データ構造図を作成した。F君が作成した入力データ構造図を図3に示す。
H28春AP午後問8_図3

〔利用状況集計機能のプログラム構造の設計〕
 F君は,〔利用状況集計機能の入出力データ分析〕の結果を基に,プログラム構造の設計を行った。F君が設計したプログラム構造図を図4に示す。
H28春AP午後問8_図4


〔利用状況集計機能のモジュール分割〕
 F君は設計したプログラム構造図を基に,プログラム開発方針に従ってモジュール分割の検討を行った。F君が検討したプール利用状況出力処理のモジュール分割案を図5に示す。図5中の①~④の破線は,モジュール分割案を示している。
H28春AP午後問8_図5
 F君は,利用状況集計機能以外の機能についてもモジュール分割を行い,モジュール設計を完了させた。

設問1 本文中の[  a  ]~[  c  ]に入れる適切な字句を解答群の中から選び,記号で答えよ。

解答群
ア STS分割   イ TR分割   ウ オブジェクト指向
エ 共通機能分割  オ ジャクソン法  カ ワーニエ法
正解は、
a イ
b ア
c オ
です。

設問2 図3中の[  d  ],[  e  ]に入れる適切な字句を表1中の字句を使って答えよ。
正解は、
d 施設名
e 会員氏名
です。

設問3 図4中の[  f  〕,[  g  ]に入れる適切な字句を20字以内で答えよ。
正解は、
f 店ごとの施設利用レポート出力処理
g 利用者なし表示出力処理
です。

設問4 〔利用状況集計機能のモジュール分割〕について,(1),(2)に答えよ。
 (1)図5中の②の破線の下の処理を複数の施設の利用状況出力処理で共通して利用するモジュールとする場合,モジュールの結合度は何結合となるか,解答群の中から選び記号で答えよ。

解答群
ア データ結合   イ スタンプ結合   ウ 制御結合
エ 外部結合    オ 共通結合   カ 内容結合

 (2)図5中の処理をプログラム開発方針に従って,モジュール強度を高め,モジュール結合度を下げるようにモジュール分割するとき,最適な分割を図5中の①~④の番号を用いて答えよ。また,その理由を40字以内で述べよ。
正解は、
(1) ウ
(2)
分割 ④
理由 データ結合のモジュールに分割でき,再利用やカスタマイズが容易となるから
です。

 

1.オブジェクト指向に関する用語

①クラス

・過去問(H21秋AP午前問44)では、「同一のデータ構造と同一の手続をもつオブジェクトをまとめて表現する」という選択肢がありますが、こうやってできたものがクラスと言えます。
・過去問(H28秋AP午前問47)ではオブジェクト指向言語のクラスに関して、「オブジェクトに共通する性質を定義したものがクラスであり,クラスを集めたものがクラスライブラリである。」とあります。

②インスタンス

インスタンス(instance)は実例という意味です。
過去問(H22秋FE午前問47)では、「オブジェクト指向におけるクラスとインスタンスとの関係」に関して、「クラスの定義に基づいてインスタンスが生成される」とあります。また、「一つのクラスに対して,複数のインスタンスが対応(選択肢ウを改編)」します。
小さなプログラムの場合は、クラスとインスタンスが同じこともあります。しかし、一般的には分けて考えましょう。たとえば、自動車というクラスの中に、その具体的な例(インスタンス)である、日産マーチやトヨタのクラウンがあります。

◆クラスとインスタンスに関してもう少し
・クラスはひな形と思ってもいいでしょう。
・クラスとインスタンスの例ですが、(一例でしかありませんが)
たとえば、整数型(INT)、文字型(String)もクラスと考えられる。
概念なので、いろいろな例を見ながら深めるといいでしょう。

クラス    インスタンス
--------------------------------
INT     1、2、10
String    abc、こんちくは

Pythonで以下を実行してみる。これを見ると、INTという型に、9というインスタンス、Stringという型に、abcが入っていることがわかる。

>>> type(9)
<class 'int'>  #INTのクラス
>>> type('abc')
<class 'str'>  #Stringのクラス

簡単に実行するなら、以下のWebサイトで。
https://paiza.io/ja

print(type(9))
print(type('abc'))
print(type(1.25))
x=[1,2,3]
print(type(x))
y={'English': 70, 'Math': 40, 'Science': 80}
print(type(y))

結果は以下のように表示されます。
<class 'int'>
<class 'str'>
<class 'float'>
<class 'list'>
<class 'dict'>

◆インスタンスとオブジェクト
厳密にいうとややこしいが、オブジェクトには、データと手続き(メソッド)が入っている。
クラスは概念なので、実体はない。
インスタンスには、実際のデータや手続きがある。乱暴ではあるが、最初のうちは、オブジェクト=インスタンスと考えておくと、気持ちが楽になるかと思う。(理解する方法としては、そう間違っていない)

③メソッド

過去問(H25秋FE午前問48)では、メソッドに関して、「オブジェクト指向開発において,オブジェクトのもつ振る舞いを記述したもの」とあります。

■具体例をみてみよう。
(例)Pythonで実行
LIST型のクラス(あらかじめ定義されている)から、インスタンスとして、dataとして数字を入れてみる。
具体的には、[1,2,3,4,5]。これが、オブジェクトとしてのデータ
でもある。
メソッドは、LIST型クラスには、あらかじめいくつか用意されている。たとえば、popというメソッドはLISTの最後の数字を取り出す。

以下、実行例
data = [1,2,3,4,5] # インスタンスとして実体を作る
print(type(data))  # 型は何かを聞くコマンド
print(data.pop())
→結果
<class 'list'> #LISTの型(クラス)であることがわかる
5 #popの手続きによって、5が取り出される。

 ④カプセル化

・過去問(H28秋FE午前問47)では、「オブジェクト指向におけるカプセル化」に関して、「データとそれを操作する手続を一つのオブジェクトにして,データと手続の詳細をオブジェクトの外部から隠蔽すること」と述べています。
・過去問(H22秋FE午前問46)ではカプセル化に関して「オブジェクト指向において,属性と振る舞いを一つにまとめた構造にすること」と述べています。
応用情報技術者試験を勉強する成子
なぜカプセル化するのですか?
なにかメリットでもありますか?
過去問をベースに利点および効果を紹介します。
・過去問(H21秋FE午前問46)では、「オブジェクト指向でシステムを開発する場合のカプセル化の効果」として、「オブジェクトの内部データ構造やメソッドの実装を変更しても、ほかのオブジェクトがその影響を受けにくい。」とあります。
・過去問(H26春FE午前問47)では、カプセル化に関して、「オブジェクト指向に基づく開発では,オブジェクトの内部構造が変更されても利用者がその影響を受けないようにすることができ,それによってオブジェクトの利用者がオブジェクトの内部構造を知らなくてもよいようにすることができる。これを実現するための概念を表す用語」とあります。

つまり、保守性が高まることが効果の一つです。

⑤インヘリタンス(継承)

過去問(H28秋FE午前問47)では、インヘリタンス(継承)に関して、「基底クラスの性質を派生クラスに受け継がせること」と述べています。
「オブジェクト指向の概念で,上位のクラスのデータやメソッドを下位のクラスで利用できる性質(H22秋SA午前2問6)」
「基底クラスで定義したデータ構造と手続をサブクラスで引き継いで使用する(H21秋AP午前問44)。」とあります。

その利点として、過去問(H19秋FE午前問44)では、「継承という概念によって,モデルの拡張や変更の際に変更部分を局所化できる」とあります。

⑥ポリモーフィズム(多様性、多相性)

ポリモーフィズム、ポリモルフィズムと読むこともあるが、情報処理技術者試験の言葉に合わせます。
ポリモーフィズムの例(H18共通 午前18)
問18 図において,“営業状況を報告してください"という同じ指示(メッセージ)に対して,営業課長と営業担当者は異なる報告(サービス)を行っている。オブジェクト指向で,このような特性を表す用語はどれか。
polimofizumu
・営業部長が,営業課長と営業担当者ぺ営業状況を報告してください"という指示を送る。
・営業課長が,課全体の売上目標,売上実績の報告を応答する。
・営業担当者が,本人の売上目標,売上実績,担当顧客状況の報告を応答する。

ア カプセル化     ウ 抽象化
イ 継承         エ ポリモーフィズム
■オーバーライド
オブジェクト指向では、スーパークラスのメソッドはサブクラスでも継承されます。継承せずにメソッドを再定義することをオーバーライドと言います。
過去問では、「多相性を実現するためのオーバーライドの説明」として、「スーパークラスで定義されたメソッドをサブクラスで再定義すること(H29秋FE午前問7)」とあります。参考ですが、他相性はポリモルフィズムのことです。
また、似たような言葉にオーバーロードがあります。こちらは、「同一クラス内に,メソッド名が同一で,引数の型,個数,並び順が異なる複数のメソッドを定義すること(H29秋FE午前問7不正解選択肢)」です。
11

過去問(H29秋FE午前)
問7 オブジェクト指向プログラミングにおける,多相性を実現するためのオーバーライドの説明はどれか。
ア オブジェクト内の詳細な仕様や構造を外部から隠蔽すること
イ スーパークラスで定義されたメソッドをサブクラスで再定義すること
ウ 同一クラス内に,メソッド名が同一で,引数の型,個数,並び順が異なる複数のメソッドを定義すること
エ 複数のクラスの共通する性質をまとめて,抽象化したクラスを作ること



正解は、イです。

⑦汎化(is-a)、集約(is-part-of)

こちらを参照してください。
http://sm.seeeko.com/archives/15876917.html

2.オブジェクト指向に関する用語の過去問を解いてみよう

(1)H27秋SA午前Ⅱ

問4 オブジェクト指向設計における設計原則のうち,開放・閉鎖原則はどれか。
ア クラスにもたせる役割は一つだけにするべきであり,複数の役割が存在する場合にはクラスを分割する。
イ クラスを利用するクライアントごとに異なるメソッドが必要な場合は,インタフェースを分ける。
ウ 上位のモジュールは,下位のモジュールに依存してはならない。
エ モジュールの機能には,追加や変更が可能であり,その影響が他のモジュールに及ばないようにする。





【正解】エ

(2)H28秋AP午前問47

問47 オブジェクト指向言語のクラスに関する記述のうち,適切なものはどれか。

ア インスタンス変数には共有データが保存されているので,クラス全体で使用できる。
イ オブジェクトに共通する性質を定義したものがクラスであり,クラスを集めたものがクラスライブラリである。
ウ オブジェクトはクラスによって定義され,クラスにはメソッドと呼ばれる共有データが保存されている。
エ スーパクラスはサブクラスから独立して定義し,サブクラスの性質を継承する。





【正解】イ

(1)モジュールの強度と結合度
 ソフトウェアの開発において、機能のまとまりをモジュールと言います。たとえば、販売管理システムでは、ログイン機能、検索機能、登録機能、メール送信機能など、いくつかのモジュールに分割できます。さらに、ログイン機能は、IDとパスワード入力、パスワード照合、エラー処理、などに分割できます。
a
 ソフトウェアを適切なモジュールに分割することは、信頼性や保守性を向上させることができます。分かりやすい例として、スマートフォンを思い浮かべてください。スマートフォンは、電池パックやインターネットに接続するSIMカードが分離されています。ですから、仮にそれらが故障したとしても、電池パックやSIMだけを交換すればいいのです。保守性が高くなりますよね。仮に一体型であれば、修理を待つ時間が必要です。スマートフォンを利用できない時間が長くなり、信頼性も落ちてしまうのです。

(2)望ましいモジュールの分割のありかた
モジュール強度(結束度)を強くし、結合度を弱くすることです。具体的に説明します。

モジュールの強度
 モジュールの強度は、1つのモジュール内での観点での内容です。具体的には、1つのモジュールが単一の機能だけのもの(「機能的強度」と言います)が最も強度が高く、望ましいあり方です。逆に、複数の機能で構成されるモジュールは、強度が弱くなります。

モジュールの結合度
 結合度は、複数のモジュールとの関連性の観点での内容です。関連性が弱い、つまり、他のモジュールの依存しないものが望ましいあり方です。一つ例を挙げます。あるモジュールAが、別のモジュールBの内容を直接参照していたとします(「内部結合」と言います)。すると、モジュールBの仕様が変わると、それに合わせてモジュールAも変更しなければいけません。
ですので、モジュール間では、必要なデータ項目だけを引数で渡す(「データ結合」と言います)のが望ましい姿です。
aa


H29秋AP午前
問46 モジュール設計に関する記述のうち,モジュール強度(結束性)が最も強いものはどれか。
ア ある木構造データを扱う機能をこのデータとともに一つにまとめ,木構造データをモジュールの外から見えないようにした。
イ 複数の機能のそれぞれに必要な初期設定の操作が,ある時点で一括して実行できるので,一つのモジュールにまとめた。
ウ 二つの機能A,  Bのコードは重複する部分が多いので,A,  Bを一つのモジュールにまとめ,  A,   Bの機能を使い分けるための引数を設けた。
エ 二つの機能A,  Bは必ずA,  Bの順番に実行され,しかもAで計算した結果をBで使うことがあるので,一つのモジュールにまとめた。

解説
単一の機能だけのものが、最も強度が強いモジュールです。
イ、ウ、エは、複数の機能を一つのモジュールにまとめているため、アに比べて強度は弱くなります。

モジュールの強度は以下です。
機能的強度>情報的強度>連絡的強度>手順的強度>時間的強度>論理的強度>暗合的強度 

以下に、過去問での表現を引用しながら整理します。
強度 分類 概要
機能的強度 ・単一の機能だけに絞ったモジュール。
・過去問では、「単一の機能を実行するモジュール(H22春AP午前問45より)」
情報的強度 ・同一のデータを扱う機能をまとめたモジュール。
・過去問では、「同一の情報を扱う複数の機能を,一つのモジュールにまとめている。モジュール内に各処理の入口点を設けているので,制御の結びつきがなく,これ以上のモジュール分割は不要である(H23秋FE午前問45より)」
・「ある木構造データを扱う機能をデータとともに一つにまとめ,木構造データをモジュールの外から見えないようにした(H25秋SA午前2問6より)」
連絡的強度 ・手順的強度と同様に一連の手順の機能をまとめ、しかもモジュール内でのデータ受け渡し(連絡)があるモジュール。
・過去問では、「モジュール内でデータの受渡し又は参照を行いながら,複数の機能を逐次的に実行している。再度見直しを図り,必要に応じて更にモジュール分割を行った方がよい(H23秋FE午前問45より)

・「二つの機能A,Bは必ずA,Bの順番に実行され,しかもAで計算した結果をBで使うことがあるので,一つのモジュールにまとめた(H25秋SA午前2問6より)」
手順的強度 ・一連の手順の機能をまとめたモジュール。
・過去問では、「あるデータを対象として逐次的に複数の機能を実行するモジュール(H22春AP午前問45より)」。
時間的強度 ・ある時点で必要な機能をまとめたモジュール。
・過去問では、「特定の時点で必要とされる作業のすべてを含んでいるモジュール(H22春AP午前問45より)」
・「複数の機能のそれぞれに必要な初期設定の操作が,ある時点で一括して実行できるので,一つのモジュールにまとめた(H25秋SA午前2問6より)」
論理的強度 ・論理的に関連した機能をまとめたモジュール。
・過去問では、「関連した幾つかの機能を含み,パラメタによっていずれかの機能を選択して実行している。現状では大きな問題となっていないとしても,仕様変更に伴うパラメタの変更による影響を最小限に抑えるために,機能ごとにモジュールを分割するか,機能ごとの入口点を設ける方がよい(H23秋FE午前問45より)」
・「ニつの機能A,Bのコードは重複する部分が多いので, A, Bを一つのモジュールとし, A, Bの機能を使い分けるための引数を設けた(H25秋SA午前2問6より)」
暗合的強度 ・暗号ではなく、暗合。脈絡のないまとめ方をしたモジュールと考えればいい。
・過去問では、「モジュール内の機能間に特別な関係はなく,むしろ他のモジュールとの強い関係性をもつ可能性が高いので,モジュール分割をやり直した方がよい(H23秋FE午前問45より)」

以下、補足です。

1)機能的強度
過去問(H26秋SA午前Ⅱ問5)を見てみましょう。
問5 図は,商品の受注処理を行うプログラムのモジュール構成図である。a~dのうち,機能的強度のモジュールはどれか。
a
ア a  イ b   ウ c  工 d
正解は、cです。顧客レコードを更新するという単一の機能だけを実現しています。
それ以外は、複数の機能を持っています。

2)情報的強度
過去問では「同一の情報を扱う複数の機能を,一つのモジュールにまとめている。モジュール内に各処理の入口点を設けているので,制御の結びつきがなく,これ以上のモジュール分割は不要である(H23秋FE午前問45より)」とあります。オブジェクト指向のカプセル化の考え方です(※要確認)

6)論理的強度
過去問(H23秋FE午前問45)を見てみましょう。
モジュール設計書を基にモジュール強度を評価した。適切な評価はどれか。
〔モジュール設計書(抜粋)〕
上位モジュールから渡される処理コードに対応した処理をする。処理コードが”I"のときは挿入処理、処理コードが"U"のときは更新処理、処理コードが"D”のときは削除処理である。

この正解選択肢が以下です。
「これは論理的強度"のモジュールである。関連した幾つかの機能を含み、パラメタによっていずれかの機能を選択して実行している。現状では大きな問題となっていないにとしても、仕様変更に伴うパラメタの変更による影響を最小限に抑えるために、機能ごとにモジュールを分割するか入口点を設ける方がよい。」
応用情報技術者試験を勉強する成子 

たくさんあって、覚えられません。
応用情報のシラバスのキーワードでは、「機能的強度」と「情報的強度」しかありません。なので、その2つ(特に機能的強度)だけを覚えておけば、合格ラインである6割を突破するのには十分だと思います。

過去問
■H22春AP午前
問45 モジュールの結束性(強度)が最も高いものはどれか。
ア あるデータを対象として逐次的に複数の機能を実行するモジュールイ 異なる入力媒体からのデータを処理するモジュール
ウ 単一の機能を実行するモジュール
エ 特定の時点で必要とされる作業のすべてを含んでいるモジュール





正解はウ

↑このページのトップヘ