基礎理論

離散数学

2進数

2のべき乗ごとに1桁繰り上げることにより数を表現する方法を 2進数 といいます。

LSB (Least Significiant Bit) とは、数値を2進数で表現したときの最下位ビットを表わします。

MSB (Most Significiant Bit) とは、数値を2進数で表現したときの最上位ビットを表わします。

2進数 8進数 10進数 16進数
1 1 1 1
10 2 2 2
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10

エクセス64

IBMのメインフレームで使われている浮動少数点数の表現形式。単精度実数では符号部1ビット、指数部7ビット、仮数部24ビット、基数16で表現されている。

応用数学

待ち行列理論

待ち行列モデルを表すのにケンドール記法を用いる。ケンドール記法では、待ち行列モデルを次のように表す。

到着間隔の分布/サービス時間の分布/窓口の数(待ち行列の長さ)

たとえば、M/M/1(∞) は、到着間隔、サービス時間ともに指数分布(ランダムな状態)で、サービス窓口がひとつのときの、待ち行列の長さに制限が無い待ち行列モデルを表している。分布のMは指数分布を意味する。

情報に関する理論

BNF記法

BNF(バッカス・ナウアー・フォーム)記法は、主に構文を表すために使われる記法の一種です。反復や選択、省略可能などを表すことができます。次にBNF記法の例を示します。

<bnf-sample> ::= "DROP" <target>
<target> ::= <column> | <columnlist>
<column> ::= "COLUMN" <列名> | <列名>
<columnlist> ::= "(" <namelist> ")"
<namelist> ::= <列名> | <列名> "," <namelist>

これは、あるSQLステートメント構文の一部を表したものです。構文ダイアグラムで表すと、次のようになります。

BNFの例

上記のBNF記法から、このSQLステートメントは次のように記述できることが分かります。

DROP COLUMN column1
DROP column1
DROP ( column1 )
DROP ( column1 , columm2 )
DROP ( column1 , columm2 , column3 )

コンピュータ構成要素

入出力装置

インタフェース

インタフェース
インタフェース説明
IDE (Integrated Drive Electronics) コンピュータにハードディスクを接続するためのインタフェース
SATA (Serial ATA) コンピュータにハードディスクや光学ドライブ、SSDを接続するためのインタフェース
PCI (Peripheral Component Interconnect) コンピュータに拡張カードを接続するためのインタフェース
PCIe (PCI Express) PCIをより高速にデータ転送できるように拡張したもの
AHCI(Advanced Host Controller Interface) SATAホストバスアダプタのインタフェース
NVMe (Non-Volatile Memory Express) 不揮発性ストレージメディアを接続するためのソフトウェア・インタフェース

M.2

M.2はコンピュータに拡張カードを接続するためのインタフェースである。プロトコルとして、AHCIまたはNVMeを使用する。

プロトコル(命令セット) AHCI NVMe
バス PCIe
物理的な接続端子 M.2

USB

USBはUniversal Serial Busの略で、コンピュータと周辺機器を繋ぐ汎用シリアルインタフェースである。ハードディスクや外付けメモリ、マウスなどさまざまなデバイスを接続するのに使われている。最大で127台を繋ぐことができる。

USBのバージョンと最大伝送速度
Version最大伝送速度
USB 1.112Mbps
USB 2.0480Mbps
USB 3.05Gbps

システム構成要素

システムの構成

仮想化

Software Description
Oracle VM VirtualBox Oracle社が開発する仮想化ソフトウェア
VMware VMWare社が開発・販売する仮想化ソフトウェア

NAS (Network Attached Storage)

Network Attached Storage (NAS) は、ネットワークに直性接続して使用するファイルサーバ専用機である。通常のファイルサーバと比べて単機能に特化しているため、管理などが容易である。このような専用機をアプライアンスと呼ぶ。NASはファイルサービスのアプライアンスである。

UUID

UUID (Universal Unique Identifier)

HA

Pacemaker/Heartbeat

ソフトウェア

ミドルウェア

ミドルウェアとは、コンピュータの基本的な制御を行うオペレーティングシステム(OS)と、個々の業務処理を行うアプリケーションアソフトウェアとの中間に入るソフトウェアである。

ミドルウェア
ミドルウェア 説明
Apache HTTP Server Apacheソフトウェア財団が開発しているWebサーバ
Apache Tomcat Apacheソフトウェア財団が開発しているアプリケーションサーバ
IIS Microsoft Windowsに付属しているWebサーバ
Resin Caucho Technology社が開発しているJavaアプリケーションサーバ

開発ツール

開発ツール
開発ツール 説明
Atom GitHubが開発しているオープンソースのテキストエディタ
Eclipse Eclipse Foundationが開発しているオープンソースの統合開発環境
Git オープンソースの分散型バージョン管理システム
Google Chromeデベロッパーツール Googleが開発しているWebブラウザ
Jenkins オープンソースの継続的インテグレーションツール
JMeter 性能測定や不可テストを行うJavaアプリケーション
JUnit Javaプログラムの単体テストを自動化するためのフレームワーク
Selenium Webアプリケーションのテスト自動化ツール
Subversion (SVN) Apache Software Foundationが開発している集中型バージョン管理システム
vi Unixで古くから使われているテキストエディタ

システム要件定義

システム方式設計

ソフトウェア要件定義

ソフトウェア要件定義の際に使われる図表の一覧を示す。

決定表

決定表(decision table)とは、条件と処理を退避させた表形式で論理を表現したものであり、複雑な条件判定を伴う要求仕様の記述手段として有効です。

決定表は「JIS X 0125」として規格化されている。

決定表の例を示す。

決定表

条件の欄に「Y」が記載されている場合、条件を満たしていることを表す。条件の欄に「N」が記載されている場合、条件を満たしていないことを表す。

処理の欄に「X」が記載されている場合、処理を行うことを表す。処理の欄に「−」が記載されている場合、処理を行わないことを表す。

決定表2

TR分割

TR分割(トランザクション分割)では、システムにおけるデータ処理をデータの流れに着目し、トランザクション単位に分けて、トランザクション処理がひとつのモジュールとなるように設計する。

共通機能分割

各プログラムに共通の機能があれば、共通のモジュールとして分割する。

ジャクソン法

ジャクソン法(JSP: Jackson structured programming)とは、Michael A. Jacksonが提唱した構造化プログラミングの手法であり、入力データの構造と出力データの構造からプログラムの構造を決定する。

ジャクソン法ではプログラム構造を決めるために、入力データと出力データを元にジャクソン構造図(Jackson structured diagram)を作成する。

Jackson structured diagram

ワーニエ法

データの構造に着目して分割する。

ソフトウェア方式設計・ソフトウェア詳細設計

JIS X 0129-1 「ソフトウェア製品の品質 - 第1部:品質モデル」

JIS X 0129-1 「ソフトウェア製品の品質 - 第1部:品質モデル」とは、ソフトウェア製品の品質特性を規定したものである。

ソフトウェア製品の品質 第1部 品質モデル
特性 副特性 説明
機能性 合目的性
正確性
相互運用性
セキュリティ
機能性標準適合性
指定された条件の下で利用されるときに、必要性に合致する機能を提供するソフトウェア製品の能力
信頼性 成熟性
障害許容性
回復性
信頼性標準適合性
指定された条件下で利用するとき、指定された達成水準を維持するソフトウェア製品の能力
使用性 理解性
習得性
運用性
魅力性
使用性標準適合性
指定された条件の下で利用するとき、理解、習得、利用でき、利用者にとって魅力的であるソフトウェア製品の能力
効率性 時間効率性
資源効率性
効率性標準適合性
明示的な条件の下で、使用する資源の量に対比して適切な性能を提供するソフトウェア製品の能力
保守性 解析性
変更性
安定性
試験性
保守標準適合性
修正のしやすさに関するソフトウェア製品の能力
移植性 環境適応性
設置性
共存性
置換性
移植性標準適合性
ある環境から他の環境に移すためのソフトウェア製品の能力

ウォークスルー

ドキュメントの最初から順を追って内容のチェックをしていく方法をウォークスルーと言う。ドキュメントの順を追って確認し、仕様の理解と欠陥の発見を行う。制御やデータの流れのチェックに向いている。

インスペクション

全部を満遍なく見るのではなく、ある一部を取り上げて徹底的に見ていく方法をインスペクションと言う。訓練を受けたモデレータが進行役を務めるのが特徴である。欠陥の発見を目的とした会議形式のレビューである。検討対象を限定して、短期間に集中して行う。

ラウンドロビン

参加者が持ち回りで責任者を務めながら進めていく方法をラウンドロビンと言う。レビュー対象のドキュメントを参加者に均等に割り振り、順番に説明していく方法である。メンバーの参画意識を高め、教育的な効果もある。

開発プロセス・手法

RAD

RAD (Rapid Application Development) とは、プロトタイプを何度も制作、評価して、次第に完成品に近づけていく手法である。ライフサイクルの無制限な繰り返しを防ぐため、タイムボックスと呼ばれる一定の開発期間を設定する。

要求分析に対するエンドユーザの参画をJRP (Joint Requirements Plannning) と言い、外部設計に対するエンドユーザの参画をJAD (Joint Application Design) と言う。

ソフトウェアライフサイクルプロセス(SLCP)

ソフトウェアライフサイクルプロセス(SLCP)