基礎理論

離散数学

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 )

アルゴリズムとプログラミング

プログラム言語

言語 説明
AWK テキスト処理に長けたプログラミング言語
C言語 OSやデバイスドライバなどのシステム記述に長けたプログラミング言語である。
プログラムを実行するには、機械語へ変換する作業(コンパイルとリンク)が必要となる。
C++ C言語にオブジェクト指向プログラミングの機能を拡張したものである。
プログラムを実行するには、機械語へ変換する作業(コンパイルとリンク)が必要となる。
C# C++を拡張したプログラミング言語
Java マルチプラットフォームで動作するプログラミング言語
JavaScript Webブラウザ上で動作するプログラミング言語
Lua インタプリタ型のプログラミング言語
Perl インタプリタ型のプログラミング言語
PHP インタプリタ型のプログラミング言語
Python インタプリタ型のプログラミング言語
VBA Microsoft Office上で動作するVisual Basic
Visual Basic Microsoft Windows用のBASIC
Visual C++ Microsoft Windows用のC++
アセンブリ言語 人間には理解しにくい機械語をテキストで表したもの。基本的に命令は機械語と1対1で対応している。
命令セットがCPUごとに異なるため、CPUによって言語仕様が異なる。
プログラムを実行するには、機械語へ変換する作業(アセンブル)が必要となる。
機械語(マシン語) コンピュータのCPUが直接解釈・実行できる唯一の言語である。プログラムはバイナリデータで表されるため、人間には理解しにくい。
命令セットがCPUごとに異なるため、CPUによって言語仕様が異なる。

その他の言語

言語 説明
DTD (Document Type Definition) HTMLなどの文書構造を定義するスキーマ言語
XML Schema XMLの文書構造を定義するスキーマ言語
HTML (HyperText Markup Language) ウェブ上の文書を記述するためのマークアップ言語
XML (Extensible Markup Language) 拡張可能なマークアップ言語
Markdown 軽量マークアップ言語
Textile RedmineのWikiなどで使われている軽量マークアップ言語
WSDL (Web Services Description Language) Webサービスのインタフェースを記述するためのインタフェース記述言語

コンピュータ構成要素

入出力装置

USB

Universal Serial Bus の略。コンピュータと周辺機器を繋ぐ汎用シリアルインタフェース。最大で127台を繋ぐことができる。USB 1.1の最大伝送速度は12Mbps、USB 2.0の最大伝送速度は480Mbps、USB 3.0の最大伝送速度は5Gbps。

システム構成要素

システムの構成

仮想化

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 Description
Android スマートフォンやタブレットなどの携帯情報端末用のOSで、Googleが開発・提供している。
Chrome OS Googleが開発・提供しているオープンソースのOS。
iOS iPhoneやiPadなどの携帯情報端末用のOSで、Appleが開発・提供している。
Microsoft Windows Microsoftが開発・販売するオペレーティングシステム
MS-DOS Miscrosoftが開発・販売していた16ビットのOS。
OS X Macintoshコンピュータ用のOSで、Appleが開発・販売している。
Unix AT&Tが開発したオペレーティングシステム及びその派生OS

ミドルウェア

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

ミドルウェア
ミドルウェア 説明
Apache ActiveMQ メッセージ指向ミドルウェア
Apache HTTP Server Apacheソフトウェア財団が開発しているWebサーバ
Apache Tomcat Apacheソフトウェア財団が開発しているアプリケーションサーバ
GlassFish Java EEに準拠したアプリケーションサーバ
IIS Microsoft Windowsに付属しているWebサーバ
Interstage List Creator 富士通が開発・販売する帳票設計・生成ソフトウェア
JP1 日立製作所が開発・販売する統合システム運用管理ソフトウェア
SVF ウイングアーク1stが開発・販売する帳票設計・作成ソフトウェア
Systemwalker 富士通が開発・販売する統合運用管理ソフトウェア
Oracle WebLogic Server Oracleが開発しているJava EEアプリケーションサーバ
Resin Caucho Technology社が開発しているJavaアプリケーションサーバ

Apache ActiveMQ

Apache ActiveMQはJMSを実装したメッセージ指向ミドルウェア(MOM: Message-oriented middleware)で、Apacheソフトウェア財団が開発しているオープンソースソフトウェアである。JavaのほかC言語、C++、.NET、Perl及びPHPなどから利用できる。

intra-mart

intra-martとは、NTTデータイントラマートが開発及び販売しているWebアプリケーションフレームワークである。intra-martはWebPlatformとAppFrameworkから構成される。

intra-mart WebPlatformは、Java EE又はJavaScriptでWebアプリケーションを構築及び運用するための基盤であり、アプリケーションサーバ(Resin又はJBoss)とフレームワークで構成される製品である。

intra-mart AppFrameworkはintra-mart WebPlatformのフレームワークであり、他社アプリケーションサーバ上で使用できる。

ESB

ESB (Enterprise Service Bus)とは企業内のシステムを連携させるアーキテクチャである。メッセージが仮想的な通信路を流れるバス型の構造になっており、ハブ&スポーク型のように1箇所に処理が集中することが無いのが特徴である。プロトコルやデータ形式の変換、メッセージルーティングなどの機能を持つ。ESBは概念に近いものであり、実装は個々のベンダに委ねられている。

開発ツール

開発ツール
開発ツール 説明
Atom GitHubが開発しているオープンソースのテキストエディタ
Eclipse Eclipse Foundationが開発しているオープンソースの統合開発環境
Emacs 拡張性が高いテキストエディタ
Git オープンソースの分散型バージョン管理システム
Google Chromeデベロッパーツール Googleが開発しているWebブラウザ
IntelliJ IDEA JetBrainsが開発している統合開発環境
Jenkins オープンソースの継続的インテグレーションツール
JUnit Javaプログラムの単体テストを自動化するためのフレームワーク
Microsoft Visual Studio Microsoftが開発しているソフトウェア開発製品群及び統合開発環境
NetBeans Oracleが開発しているオープンソースの統合開発環境
Redmine オープンソースのプロジェクト管理ソフトウェア
Selenium Webアプリケーションのテスト自動化ツール
Sublime Text テキストエディタ
Subversion (SVN) Apache Software Foundationが開発している集中型バージョン管理システム
vi Unixで古くから使われているテキストエディタ
Vim viから派生した高機能テキストエディタ
Visual Studio Code Microsoftが開発しているオープンソースのテキストエディタ
サクラエディタ オープンソースのテキストエディタ

オープンソースソフトウェア

OpenOffice and LibreOffice

システム要件定義

システム方式設計

ソフトウェア要件定義

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

図表 説明
CRUD図 データの作成、参照、更新及び削除を表した表
データフロー図(DFD) システム内のデータの流れを表した図
ER図 データベースのERモデルを図で表した図
HIPO 機能の階層と入力、処理及び出力を表した図
UML オブジェクト指向分析や設計に用いられる統一モデリング言語
決定表(デシジョンテーブル) 条件と処理の関係を表した表

HIPO

Hierarchy plus Input Process Output の略。システム設計における図式化手法のひとつ。機能の階層(Hierarchy)を図式目次に記述し、図式目次の各機能ごとに入力(Input)、処理(Process)、出力(Output)の関係をIPOダイアグラムに記述する。

図式目次 (VTOC) の例を示す。

HIPO VTOC

IPOダイアグラムの例を示す。

HIPO IPO diagram

決定表

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

決定表の例を示す。

決定表

Yは条件を満たしていることを表します。Nは条件を満たしていないことを表します。Xは処理を行うことを表します。−は処理を行わないことを表します。

決定表2

制御フロー図

DFDに「コントロール変換とコントロール・フロー」を付加して、制御系システムに特有な処理形態を表現します。

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)

スポンサーリンク