応用情報をとりたくて
きたる10月、応用情報技術者試験があります。ので、それまでの二か月間でひたすらに勉強し、その内容をまとめていきたいと思います。(受験票、届きましたね)
今回はシステム開発技術・ソフトウェア開発管理技術の過去問を解いたので、その分で出てきた単語をまとめます。
出てきた単語集(前回分)
以下に、今まで取り扱った単語を全て格納しています。
取り扱った単語集
正規分布、確率、モンテカルロ法、再帰的、再使用可能、再入可能、再配置可能、相関係数、ユークリッド互助法、 ハフマン符号化、幅優先と深さ優先探索、ディープラーニング、ベイズの定理、排他的論理和、リストの実現(配列orポインタ)、浮動小数の情報落ち、ハッシュ関数の衝突、完全二分木、ニュートン法、オイラー法、ガウスの消去法、シンプソン法、グラフと隣接行列、スタックとヒープ、BNF(バッカス・ナウア記法)、UTF-8、過学習、パリティチェック、有限オートマトン、ハミング符合、M/M/1待ち行列モデル、クイックソート、選択ソート、挿入ソート、バブルソート、BCD(Binary-coded decimal)、逆ポーランド記法、カルノー図、桁落ち、丸め誤差、情報落ち、打ち切り誤差、値呼び出しと参照呼出し、双方向リスト、シェルソート、ヒープソート、マージソート、オーバーライド、オーバーロード、カプセルか、汎化、TOF(Time of Flight)センサー、RAID0、RAID1、RAID5、RAID2、RAID3、RAID4、SIMD、VLIW、グリッドコンピューティング、レジスタ、命令レジスタ、プログラムカウンタ、ベースレジスタ、インデックスレジスタ、アキュムレータ、汎用レジスタ、パイプライン処理、メモリインターリープ、フォールトトレランス(Fault Tolerance)、フォールトアボイダンス(Fault Avoidance)、フォールトマスキング(Fault Masking)、フールプルーフ(Fool Proof)、フェールセーフ(Fail Safe)、フェールソフト(Fail Soft)、フェールオーバー(Fail Over)、フェールバック(Fail Back)、フォールバック(Fall Back)、MIMD、ウェアレベリング、マルチレベルセル、ブロックアクセス方式、スケールイン/アウト、スケールアップ/ダウン、web3層アーキテクチャ構造、密結合マルチプロセッサシステム、アウトオブオーダー実行、遅延分岐、投機実行、レジスタリネーミング、サーバコンソリデーション、キャパシティプランニング、絶対アドレス方式、相対アドレス方式、間接アドレス方式、SDXC、シンクライアント、アムダールの法則、MMU(Memory Management Unit)、スーパースカラ、スーパパイプライン、構造ハザード、制御(分岐)ハザード、データハザード、シンプロビジョニング、キャパシティプランニング、ZigBee、SAN(Storage Area Network)、磁気ディスクにおけるデータ読み取り時間、ライブマイグレーション、ホットスタンバイシステム、ハートビートバケット、ライトスルー/ライトバック、アクセス透過性、ダイレクトマップ、フルアソシエイティブ、セットアソシエイティブ、スタックポインタ、クラスタリング方式、オブジェクトストレージ、CDN(Contents Delivery network)、量子コンピュータ、ストアドプロシージャ、ラウンドロビン方式、処理時間順方式、ターンアラウンドタイム、パワーゲーティング、ページフォールト、ページイン、ページアウト、クロスコンパイラ、プロファイラ、RFID、ページング、フリップフロップ回路、OSSにおけるディストリビュータ、ガベージコレクション、FIFO/LIFO/LFU/LRU、プリエンプション方式/ノンプリエンプション方式、CS信号(チップセレクト信号)、コンバータ/インバータ、アクチュエーター、LiDAR(Light Detection And Ranging)、EJB(Enterprise JavaBeans)、セマフォ、デッドロック、アサーションチェッカ、テストカバレージ分析ツール、GPLライセンス、ウォッチドックタイマ、DSP(Digital Signal Processor)、Hadoop、デマンドページング/プリページング、フラグメンテーション、FPGA(Field Programmable Gate Array)、PWM/PAM、ビッグエンディアン/リトルエンディアン、MOSトランジスタ、スラッシング、アクセシビリティ、SMIL、レンダリング、インデックスカラー、オーバーレイ、カーニング、ディザリング、JIS X 8341-1、アンチエイリアシング、メタボール、ラジオシティ、レイトレーシング、ニモニックコード、パンくずリスト、サーフェスモデル、H.264、階層型/網型/関係データベース、ANSI/SPARC3層スキーマ(外部/概念/内部)、キー(スーパキー/候補キー/主キー)と外部キー、関数従属(部分/完全/推移的)、正規化(第一/第二/第三正規形)、差集合演算、共有ロック/専有ロック、べき等、ロールフォワード/ロールバック、分散データベースシステムにおける透過性、グラフ指向DB、CURSOR、B+木インデックス、権限付与/はく奪SQL,NoSQL、検査制約、更新可能なビュー、E-R図、データレイク、undo/redo方式、2相コミットプロトコル、データディクショナリ、ACID、CAP定理、スタースキーマ、デッドロック、CASCADE、SDN、ホストアドレス/ネットワークアドレス/ブロードキャストアドレス/サブネットマスク、フォワード/リバースプロキシ、CSMA/CD、レイヤー2スイッチ、ブリッジ、SNMP、ARP/RARP、ルート集約、ルーター、WebSocket、NAPT(IPマスカレード)、ルーティングテーブル、TCP/UDPヘッダー、PPPoE、DHCPクライアント/サーバー、DNS、IPv4におけるクラスA/B/C/D/E、IPパケット、イーサネットフレーム(MACフレーム)、SOAP(Simple Object Access protocol)、REST(Representational state transfer)、IPv6拡張ヘッダー、SSID(Service Set Identifier)、IEEE802.11gにおける2.4GHz帯の干渉、モバイル通信サービスにおけるハンドオフ、IPsec、LPWA(low power wide area)、VRRP(virtual router redundancy protocol)、ICMP(Internet Control Message Protocol)、PLC(Power Line Communication)、BLE(Bluetooth Low Energy)、NFV(Network functions virtualisation)、MIME(Multipurpose Internet mail extension)、マルチホーミング、RIP-2プロトコル、RSS、NTP(Network Time Protocol)、クリプトジャッキング、ディレクトリトラバーサル、クロスサイトスクリプティング、SIEM、IaaS/PaaS/SaaS、ブロックチェーン、認証VLAN、共通鍵暗号方式、公開鍵暗号方式、DNSSEC、ファジング、C&Cサーバー、レインボーテーブル、SQLインジェクション、DMZ、ISMAP、WAF、ポリモーフィック型マルウェア、S/MIME、セキュアOS、ゼロデイ攻撃、クリックジャッキング、WORM、エクスプロイトコード、CAPTCHA、フットプリンティング、NCO、サイバーレスキュー隊(J-CRAT)、サーバー証明書、CRL(Certificate Revocation List)、SSH、CSIRT、SOC、PSIRT、リスクレベル、IMAPS、OP25B、サイバーセキュリティ経営ガイドライン、水飲み場型攻撃(Watering Hole Attack)、デジタルフォレンジックス、楕円曲線暗号、ブルートフォース攻撃、サブミッションポート、リスクベース認証、残留リスク、SPF(Sender Policy Framework)、SAML、AES、サイバーキルチェーン、耐タンパ性、ハイブリッド暗号方式、チャレンジレスポンス方式、キャッシュポイズニング、JVN、ハッシュ関数の性質、SMTP-AUTH、hostsファイル、オープンリダイレクト、JPCERTコーディネーションセンター、サードパーティーcookie、パケットフィルタリング、ドライブバイダウンロード、WPA2-PSK、IoTセキュリティガイドライン、プライバシーセパレーター、rootkit、OCSP、DKIM、3Dセキュア、情報セキュリティ早期警戒パートナーシップガイドライン、Main-in-the-Browser、CVE/CWE、TPM、セキュアブート、APT攻撃、CVSS、サイドチャネル攻撃、
システム開発技術・ソフトウェア開発管理技術部分のまとめ教材
今回は、一旦参考書と参考資料を読んでから過去問を解き始めています。gptくんにまとめさせました。
-
主な開発手法
-
ウォーターフォール開発の実際とネック(参考)
- 実像:要件定義→設計→実装→テスト→リリースの厳密な段階分割とレビュー/承認からなり、Vモデルでは、各工程に対応するテストが明示されている
- ネック
- 手戻り発生時の高コスト
- 変化への弱さ
- フィードバックの遅さ
-
アジャイルの主な手法
-
- 登場人物
- プロダクトオーナー
- ソフトウェア価値最大化に責任を持つ
- プロダクトバックログを優先順位順にする
- 開発チームに対して次に開発する機能を示す
- ソフトウェア価値最大化に責任を持つ
- スクラムマスター
- スプリントを監視、支援
- スクラムイベントが行われていることを確認(必要に応じてファシリテート)
- チームに発生した障害を取り除く
- 外部の人にスクラムを理解してもらうこと
- 開発チーム
- スプリントごとにソフトウェア提供責任を持つ
- プロダクトオーナー
- 進め方
- スプリントプランニング
- プロダクトバックログ(実装予定機能一覧)空スプリントで実装する機能一覧(スプリントバックログ)を作成
- デイリースクラム
- 決まった時間に短時間ミーティングを行い、一日の仕事の進め方を決定
- ステークホルダーによるスプリントレビュー
- ステークホルダーに開発機能をデモンストレーションし、フィードバックを受ける
- OKならリリース、NGなら次回以降に持ち越し
- スプリントレトロスペクティブ
- スプリントの振り返りを実施し、改善計画を実施
- スプリントプランニング
- 登場人物
-
DevOpsの周辺
- MLOps(参考)
- 開発、デプロイ、モニタリングに至るMLのライフサイクル管理プロセスを指す。DevOpsと比較してMLモデルに特化
- LLMOps(参考)
- LLMの管理に特化した、MLOpsのサブセット
- AgentOps(参考)
- AIエージェント開発に特化した、MLOpsのサブセット。エージェントの開発、運用、監視、評価、改善を一元管理するために設計されている。主要要素として以下の三点が存在
- 観測性
- エージェントの内部状態や意思決定プロセスについて、リアルタイムトレースと可視化
- トレース可能性
- エージェントが受け取った入力から出力に至るプロセスの詳細な記録。エラー原因などの迅速な特定に寄与
- 開発と運用の効率化
- 開発者向けの高度なツールチェーン、プロンプト管理機能、評価とテストの自動化、監視機能などを統合的に提供
- 観測性
- AIエージェント開発に特化した、MLOpsのサブセット。エージェントの開発、運用、監視、評価、改善を一元管理するために設計されている。主要要素として以下の三点が存在
- MLOps(参考)
-
- 7つの原則
- 全体最適化
- 無駄をなくす
- チームに権限委譲する
- 学習を強化する
- 早く提供する
- 品質を作りこむ
- 決定を遅らせる
- 22個の思考ツール
- 「無駄を認識する」「バリューストリームマッピング」「フィードバック」「イテレーション」「同期」「集合ベース開発」「オプション思考」「最終責任時点」「意思決定」「プルシステム」「待ち行列理論」「遅延コスト」「自発的決定」「モチベーション」「リーダーシップ」「専門知識」「認知統一性」「コンセプト統一性」「リファクタリング」「テスティング」「計測」「契約」
- 7つの原則
出てきた単語集(今回分)
オブジェクト指向、スーパークラス/サブクラス、オーバーライド、継承の分割、ソフトウェアライフサイクルプロセス(JIS X 0160)、ホワイトボックステストにおける網羅性、プラットフォーム開発、テスト駆動開発、リバースエンジニアリング、ベロシティ、共通フレームにおけるテーラリング(修整)、モジュール結合度、ウォークスルー、MVC、マッシュアップ、ローコード開発、インスペクション、JIS X 25010:2013、ペアプログラミング、KPT手法、CRUDマトリクス(クラッド図)、ペトリネット(Petri Net)、DOA、請負契約における著作権、CMMI、バリューストリームマップ、限界値分析、JIS X 0161、JIS X 33002、二段階エディット法、アクティビティ図、クロス開発、DFD、モジュール強度、状態遷移図、スタブ/ドライバ、SysML、FTA、回帰テスト、バーンダウンチャート、ゴンベルツ曲線
今回分について、それぞれの用語解説
オブジェクト指向:思想 継承、カプセル化、ポリモーフィズム(参考)
スーパークラス/サブクラス:オブジェクト指向プログラミングにおいて、あるクラスの仕様を継承して新しいクラスを作成する際に、元となるクラス/新しいクラスのこと(参考)
オーバーライド:サブクラスにおいて、スーパークラスで定義されているメソッドを上書きすること(参考)
継承の分割:
委譲による継承の置き換え(Replace Inheritance with Delegation)
サブクラスがスーパークラスの一部の機能しか利用しないのに継承を利用していたり、そもそもクラス同士の関係として継承が不適切な場合がある。この時継承を取りやめて委譲を用いたコードに書き換える。(参考)
ソフトウェアライフサイクルプロセス(JIS X 0160):ソフトウェアライフサイクルプロセスの国際規格。日本では、ソフトウェアライフサイクルを通して必要な作業項目、役割などを包括的に規定した共通の枠組みを提供する「共通フレーム」として、日本独自プロセスを追加した問が提供されている。その中で、ソフトウェア実装プロセスは、以下の下位レベルのプロセスを持つ(参考1、参考2)
- ソフトウェア要求事項分析プロセス
- ソフトウェア方式設計プロセス
- ソフトウェア詳細設計プロセス
- ソフトウェア構築プロセス
- ソフトウェア結合プロセス
- ソフトウェア適格性確認テストプロセス
ホワイトボックステストにおける網羅性:システムの内部構造に重点を置いたテスト技法のこと。網羅基準として、以下の四つが存在(参考)
- 命令網羅
- 全ての処理(命令)を最低一回は通すようにするテスト
- 判定条件網羅
- 全ての分岐を最低一回は通すようにするテスト
- 条件網羅
- 個々の条件を最低一回は満たすようにするテスト
- 全ての条件についてTrue/Falseを確認する(参考)
- つまり全ての条件分岐について、テストケースを全て合わせた際に、全ての変数についてTFが走っていることを指す。(判定条件網羅よりも多くなりがち)
- 個々の条件を最低一回は満たすようにするテスト
- 複数条件網羅
- 想定される条件の組み合わせをすべて網羅するテスト
プラットフォーム開発:共通プラットフォーム上で動作するように実施する開発(例えば、同じOSであれば端末が異なっても動くアプリ開発などが該当する)特に、組み込み開発においては、汎用OSをベースに開発を行うことで、開発コスト削減につなげようとしている。(参考1,参考2)
テスト駆動開発:テストファーストな開発手法の一つ。テスト(レッド)、実装(グリーン)、リファクタリングを何度も繰り返す(参考)
リバースエンジニアリング:ソフトウェア、ハードウェアからソースコード、構成部品などの技術情報を明らかにすること(参考)
ベロシティ:スクラムチームがスプリント内に完了できる作業量を見積もるために使用されるアジャイル指標(参考)
共通フレームにおけるテーラリング(修整):ソフトウェアライフサイクルに関する共通フレームを適用する際に、組織やプロジェクト特性に合わせて調整を行うこと。共通フレームで規定されていることが全て必須ではないし、それ以外を認めないということでもない(参考)
モジュール結合度:ソフトウェアを構成するプログラムのモジュールの性質を示す用語であり、複数のモジュール間の結びつきの強さのこと。以下結合度降順(参考)
- 内容結合
- 他モジュールの内部動作に直接影響を受けたり、他モジュールの内部状態を直接参照しているような場合を指す
- 共通結合
- プログラム全体にわたって有効なグローバル変数などの資源を共有している状態
- 外部結合
- プログラム外部で定義されたデータ形式や通信プロトコルを共通している状態
- 制御結合
- 他モジュールにその処理内容を指示するためのデータ(フラグなど)を渡して内部の処理を制御する関係にある状態
- スタンプ結合
- モジュール間で複数のデータを連結した複合的なデータ構造を受け渡すが、全てを使用するわけではない状態
- データ結合
- 引数や返り値など単純な型のデータを受け渡す状態
主に、モジュールの直接参照、大域宣言データ構造/単一データ、モジュール動作制御、データ構造/単一データ、の順?
- 引数や返り値など単純な型のデータを受け渡す状態
ウォークスルー:ソフトウェアやシステム開発において、成果物の品質を向上させるためのレビュー方法の一つ。机上でシミュレーションを行って問題点を発見する。チームメンバーと実施するピアレビューの中でもインフォーマルな手法(参考)
MVC(model-view-control):対話型アプリケーションを、モデル、ビュー、コントローラーという3つのコンポーネントに分割して設計・実装するアーキテクチャパターン(参考)
マッシュアップ:2つ以上のWebサービスを組み合わせて新しいサービスを生み出すこと。音楽用語由来(参考)
ローコード開発:ソースコードをほぼ必要とせず、プラットフォーム側から提供された画面を利用して必要な機能を組み立てていくアプリケーション開発手法。ソースコードをまったく必要としない場合はノーコード開発(参考)
インスペクション:役割やプロセスが明確に決められているレビュー技法のひとつ。以下の役割が存在(参考)
- モデレーター(ファシリテーター):レビューの進行役
- レビューア:開発成果物をチェックし、懸念事項などを指摘
- 作成者(レビューイ):開発成果物作者。指摘事項への対応を行う
- 書記:インスペクションを記録
JIS X 25010:2013:ソフトウェア品質について定めたJIS規格で、主に以下の8観点からなる(参考)
- 機能適合性:ニーズを満足させる機能を提供する度合い
- 機能完全性/正確性/適切性
- 性能効率性:資源の量に関係する性能の度合い
- 時間/資源/容量効率性
- 互換性:他の製品やシステムなどと情報交換できる度合い
- 共存性
- 相互運用性
- 使用性:明示された利用状況で、目標を達成するために利用できる度合い
- 適切度認識性
- 習得性
- 運用操作性
- ユーザーエラー防止性
- ユーザーインターフェース快美性
- アクセシビリティ
- 信頼性:機能が正常動作し続ける度合い
- 成熟性
- 可用性
- 障害許容性
- 回復性
- セキュリティ:システムやデータを保護する度合い
- 機密性
- インテグリティ
- 否認防止性
- 責任追跡性
- 真正性
- 保守性:保守作業に必要な努力の度合い
- モジュール性
- 再利用性
- 解析性
- 修正性
- 試験性
- 移植性:別環境へ移してもそのまま動作する度合い
- 適応性
- 設置性
- 置換性
ペアプログラミング:プログラミングを二人一組で行う手法。一人は打ち込むドライバー、もう一人は検討や指摘を行うナビゲーター/オブザーバー(参考)
KPT手法:振り返りのフレームワーク。Keep(よかったこと、継続すべきこと)、Problem(悪かったこと、課題)、Try(改善策)の頭文字(参考)
CRUDマトリクス:様々な種類のデータを扱うシステムやソフトウェアを設計する際に、どの機能やプログラムが、どのデータを作成(create)・読み出し(read)・更新(update)・削除(delete)するかを表の形で整理したもの(参考)
ペトリネット:システムの局所的な状態を表す「プレース」と、イベントを表す「トランジション」を交互に「アーク」で結んだ有効2部グラフのこと。あるトランジションを指し示すすべてのプレースにトークンが置かれると、トランジションが発火し、トランジションが指し示すプレースにトークンが移動(参考)
DOA(Data Oriented Approach):システム設計のやり方の一つであり、データ構造や流れをベースにプログラムを設計する(参考)
請負契約における著作権:基本的に、作成側に著作権が発生する(参考)
CMMI(Capability Maturity Model Integration):能力成熟度モデル統合を意味し、組織がプロセス改善を行う能力を評価する手法および指標を指す。段階として、初期状態、管理された、定義された、定量的に管理された、最適化している、の5段階(参考)
バリューストリームマップ:リーンソフトウェア開発で用いられるフローチャート(参考)
限界値分析(境界値分析):ソフトウェアテストで適切なテストケースを作成する手法の一つで、境界付近の値を重点的に調べるもの(参考)
JIS X 0161:ソフトウェア保守プロセスのための要求事項を明確にしたJISの一つで、修正依頼を訂正と改良に分類し、さらにそこから保守のタイプとして4つカテゴリ分けを行っている(参考)
- 訂正
- 是正保守:引き渡し後に発覚した問題を訂正するための修正。緊急保守も含有
- 予防保守:潜在的な誤りが検知された場合の修正
- 改良
- 適応保守:変化環境に適応させるための修正
- 完全化保守:製品の性能または保守性を向上させる修正
JIS X 33002:プロセスアセスメント実行に対する要求事項を指す。診断対象プロセスのアセスメント結果が客観的、一貫していて、再現可能、代表的であることを確実にするアセスメント実施のための最小限の要求事項定義(参考)
二段階エディット法:二つの異なるテスト結果から、全体のバグ個数を算出する公式(参考)
$$N = \dfrac{N_A \times N_B}{N_{AB}}$$
アクティビティ図:並行処理も記述可能な、処理の流れを表現するのに使う図(参考)
クロス開発:ある機種やシステムで動作させるソフトウェアの開発を、異なる機種やシステム上で行うこと(参考)
DFD(data flow diagram):情報システム設計などで作成される図の一つで、要素間のデータの流れを示した図(参考)
モジュール強度:モジュール内部の関連性の強さを表現するもの。 モジュール結合度とは別基準。 以下の7段階からなる(降順)(参考)
- 機能的強度:単一機能モジュール
- 情報的強度:同一データを扱うモジュール集約
- 連絡的強度:モジュール内の機能間でデータ授受
- 手順的強度:順番実行される機能を一つのモジュールに集約
- 時間的強度:複数の機能のモジュール集約
- 論理的強度:時間的強度ベースに、引数で使用機能判断
- 暗号的強度:特に関連性を考慮せずにモジュール集約
状態遷移図:条件・イベントによってソフトウェアやシステムの状態が変化する様子を図形や矢印などで視覚的に表現したもの(参考)
スタブ/ドライバ:トップダウン/ボトムアップテストにおいて、検査対象モジュールの下流/上流に位置するモジュールのダミー(参考1,参考2,参考3,参考4)
SysML(Systems Modeling Language):UMLを拡張して、システム全体の設計と使用を記述するために使用されるモデリング言語。以下の9つのダイアグラムを含有(参考)
要求図、ブロック定義図、内部ブロック図、パラメトリック図、アクティビティ図、シーケンス図、ステートマシーン図、ユースケース図、パッケージ図
FTA(Fault Tree Analysis):製品の故障およびそれにより発生した事故の原因を分析する手法。望ましくない事象を初めに仮定し、考えられる道筋を発生確率とともに故障の木図で表現し分析する(参考)
回帰テスト:新規変更が既存機能に影響を及ぼしていないかを確認するテスト手法(参考)
バーンダウンチャート:アジャイル開発における進捗管理で用いられるチャート。縦軸に残タスク、横軸に経過時間をセットする。これにより、スケジュールとのずれが大きくなった段階でタスク自体を調整することが可能となる(参考)
ユースケース図:UML図法の一つ(SysMLとも共通)で、システムがどのように機能すべきか(ユースケース)、およびその外部環境(アクター)を表現する(参考)
ゴンベルツ曲線:ソフトウェア開発において、時間経過とバグの発見数の関係を表す信頼度成長曲線の近似に用いられる。S字(参考)
$$ y=Ka^{e^{bx}} $$
まとめ
今回は、システム開発技術・ソフトウェア開発管理技術の過去問を一通り解きました。
JIS規格が多すぎて頭に何も入ってきません。あとシンプルに勉強し終わる気がしません。