初級システムアドミニストレータ/システムの開発と運用

出典: フリー教科書『ウィキブックス(Wikibooks)』
お知らせ

初級システムアドミニストレータ試験(初級シスアド)は2009年(平成21年)度春期の試験を最後に廃止されました。ただし、初級シスアドの後継であるITパスポート試験基本情報技術者試験にも、開発や運用に関する問題が出題されています。(現在は主にマネジメント系の問題として出題されています。)

ITパスポート試験や基本情報技術者試験の合格を目指される方はしっかり学習してください。

システムの開発[編集]

情報システムの構築に、ソフトウェアは欠かせません。本日からの3日間は、市販のソフトウェア(パッケージソフト)を使うのとは異なり、オーダーメイドでソフトウェアを作ってもらう際に必要な知識を得て頂きます。具体的には、ソフトウェア開発を受託する会社のSE(システムエンジニア)と折衝する際に、知っておくべき知識を学んで頂きます。

言語処理系[編集]

人間(プログラマ)が書く「プログラム」は、普通は何らかのプログラミング言語で書かれたもの(ソースコード)です。ですが、それはあくまで人間には理解できても、じつはコンピュータ内のCPUが直接理解できるプログラムではありません。そのため、CPUが理解できるディジタルな言葉(実行可能モジュール)へと変換するためのソフトウェアを用います。そのソフトウェアが変換する方式として、以下の3つを押さえておきましょう。

コンパイラ
ソースコードから実行可能モジュールへと、一括して変換するソフトウェアを指します。いちど実行可能モジュールを作ってしまえば、もうコンパイラ無しでもプログラムを実行できます。VisualC++,Borland C++,gcc など、C言語で書かれたソースコードのほとんどは、コンパイラを用いて実行されます。
インタプリタ
ソースコードの意味を、1命令(ほぼ1行)ずつ解釈し、逐次実行していく性質のソフトウェアです。初期のPCのBASIC言語は、この形で実行させるものが主流で、プログラム実行中の好きな時に実行を止めて、ソースコードの修正ができるというメリットがありました。また、Webサーバで動的コンテンツを表示させる際に用いるプログラミング言語の一つであるPerlも、多くはインタプリタ形式で実行されます。
アセンブラ
コンパイラやインタプリタが高級言語(人間の言葉に近く、JISなどで規格化された言語であり、他のコンピュータへの移植性が高い)のに対し、CPUに理解できる言葉で直接プログラミングするイメージでとらえて下さい。ソフトウェアのうち、ハードウェアに密接な部分(ファームウェア、デバイスドライバ)や、極端に処理速度にこだわる部分(グラフィック表示用ソフトウェアなど)を記述する際に用いられます。

プログラミング言語[編集]

PostScript
これはプログラミング言語ではありませんが、PostScriptはアドビシステムズ社が開発したページ記述言語です。ページ記述言語とは、プリンタ(特に、ページ単位でレイアウトを展開したのちに紙に打ち出すページプリンタ)を制御するための言語のことです。
Perl
プログラミング言語の一種です。WebサーバでHTMLを動的に生成する(作り置きされたHTMLファイルを返信するのではなく、要求に応じてHTMLの内容を書き換えて返信すること)際に用いるCGI(Common Gateway Interface)用のプログラムとして普及しています。Perlは通常、Webサーバ内でインタプリタ形式で実行されます。2ちゃんねるなど多くの掲示板システムのプログラムが、このPerlで書かれています。
Java
サン・マイクロシステムズ社が開発したプログラミング言語です。初級シスアド試験では、Javaについての知識は「Java仮想マシン」「Javaアプレット」「サーブレット」の3つを覚えておいて下さい。なおJavaScriptは、Java言語の文法を参考にして別途開発されたスクリプト言語ですので、JavaとJavaScriptは、別の言語であることにご注意下さい。
試験によく出る、Javaについて

Javaが登場した初期によく使われた言葉に“Write once, run anywhere”というものがあります。一度Java言語でプログラムを作ると、WindowsでもLinuxでもiアプリ携帯電話でも、どこでも動作するという意味です。
Java言語で書かれたソースコードをコンパイルすると、「Javaバイトコード」と呼ばれるファイル(拡張子は“.class”)が出来上がります。このJavaバイトコードのファイルを読み込んで実行するためのソフトウェア(その実体は、インタプリタ)を、「Java仮想マシン」と呼びます。
このJava仮想マシンは、Windows用・Linux用・携帯電話用など、今日のほとんどのOS・コンピュータ向けのものが作られています。ですので、Java仮想マシンさえインストールしてあれば、原則としてどのコンピュータ上でもJavaが(正確には、Javaバイトコードが)実行できるのです。

Javaアプレット(Java Applet)
Javaアプレットのサポートは2019年3月に終了しました。[1]
かつて、一般的なWebブラウザ(もちろんInternet Explorerにも)には、ちょっとしたJava仮想マシンが組み込まれていました。そしてWebページ作者が作ったJavaバイトコードのファイルを、HTMLからさん処させることで、クライアント側のブラウザ画面上でJavaプログラムを実行させることができました。この仕組みを「Javaアプレット」と呼びます。Javaアプレットには、ソフトウェアの規模やセキュリティ面での制限(アプレットからローカルコンピュータのハードディスクにアクセスできない、等)がありますが、Webブラウザさえ動けばどのコンピュータ上でも同じソフトウェアを実行できる、というメリットがありました。
Javaサーブレット(Java Servlet)
アプレットがクライアント側で実行させるJavaだとしたら、サーブレットはWebサーバ側でJavaを実行させる仕組みです。おこなう事は、Perlなどを用いるCGIと似てはいますが、CGIよりも高機能・処理がはやい・ユーザ数の増加に強いなどのメリットがあります。今日、Javaプログラミングの主流は、このサーブレット開発であると言っても過言ではありません。なお、Webサーバ側でJavaを実行させる事から「サーバサイドJava」とも呼ばれています。
Javaアプレットと似た概念“JavaScript”について
これもWebサーバからHTMLと一緒にダウンロードしてきて、クライアント側のWebブラウザ上でプログラムを実行させる仕組みを持ちます。JavaScriptの場合は、ソースコード(スクリプト)の形のままクライアントにダウンロードさせた上で、Webブラウザに内蔵されたJavaScriptインタプリタによって実行させます。


ソフトウェアパッケージ[編集]

  • ERP(Enterprise Resource Planning)
  • CRM(Customer Relationship Management)
  • SFA(Sales Force Automation)
  • SCM(Supply Chain Management)
  • CTI(Computer Telephony Integration)
  • グループウェア(コミュニケーション、データ共有、スケジュール管理)

詳しくは「情報化と経営」の単元を参照して下さい。

CAD(Computer Aided Design)
工業製品の設計に使うコンピュータシステムのことです。建築や機構部品、電子設計などで応用されています。特に建築の場合、設計した図面から3次元映像で建物の形を表示することができるなどの機能もあります。
CAM(Computer Aided Manufacturing)
製造工場で、生産ラインをコントロールするために使うコンピュータシステムのことです。
CAE(Computer Aided Engineering)
CADは設計デザインを行うものでしたが、その試作品を作る前に、強度などをあらかじめコンピュータ上で計算で求められると、モノとしての試作品を何度も作っては壊さなくても済み、設計のコストと期間を減らせます。詳しく言うと、たとえばCADで作った自動車のデザインデータを基に、コンピュータ内で仮想的な試作品を作った上で、有限要素解析法と呼ばれる手法で壁面衝突シミュレーションなどをコンピュータ上で行うことができます。
マルチメディアオーサリングツール
マルチメディアのコンテンツを作成するためのツールを指します。Macromedia Flashの画面(Webブラウザ上で、GIFアニメとは違うカラフルな動画が表示されることがありますが、そのほとんどがこのFlashで構成された画面です)を作成するためのツール(Macromedia Flash MX)を、Adobe社が販売していますが、これもマルチメディアオーサリングツールに分類されます。


開発環境[編集]

表計算ソフトの利用(関数、マクロ、絶対参照と相対参照)

詳しくは「表計算ソフト」の単元を参照して下さい。

データベースの正規化、データの操作、SQLの利用

詳しくは「データベース」の単元を参照して下さい。

EUC(End User Computing)とEUD(End User Development)

1990年代の初頭までは、コンピュータを使うといえば、専門の技術者に任せる形が主流でした。ですが、今は違います。その頃、技術者にやってもらっていた事の多くは、机上のPCで、我々(エンドユーザ)の手でできるようになりました。特に表計算ソフトによって集計作業は楽になり、SQLの扱いを知ることでデータベースの検索を技術者に任せずとも行えるようになりました。

初級シスアド試験、特に午後試験では、この表計算とデータベースが高い配点を持ちます。それだけ力を入れて勉強するべき価値を持つテーマですし、それによってこのEUC・EUDの時代を渡り歩くための力をつけていきましょう。

開発手法[編集]

ソフトウェア開発モデル

初級システムアドミニストレータとして活躍予定の皆様は、自部門の情報化を進めるために、自部門専用のソフトウェアを開発(発注)することもありえます。そこで初級シスアド試験では、ソフトウェアを開発する業者と打ち合わせする際の基礎知識として、ソフトウェアがどのように作られていくのかも知っておく必要があります。そのために、ソフトウェアの作り方、特にウォータフォールモデルを基本として、ソフトウェアがどのように作られるかの流れを把握しておきましょう。

なお初級シスアド試験では、基本情報技術者試験と違い、難易度の高いアルゴリズムや実際のプログラミング技法までは(SQLを除いて)出題されません。

ウォータフォールモデル

ウォータフォールモデルのメリットは、ソフトウェアを分業して開発しやすいため、大規模システムの開発に向く点です。ウォータフォールモデルの名の通り、工程の上の方を「上流工程」、下の方を「下流工程」とも呼びます。これは別の見方をすると、上に行くほどエンドユーザ寄り、下に行くほどプログラミング・ハードウェア寄りの仕事である、とも言えます。
たとえば「基本計画」担当者は、その右の「運用テスト」担当者でもあります。これは「客先ニーズ」を把握する担当者は、「客先ニーズ通りのシステムが完成したか」をチェックする担当者も兼ねる、という意味です。ほかにも「プログラム設計」担当者は、そのプログラム(のモジュール)を正しく動作させることに責任を持つ「単体テスト」担当者でもあるのです。
また、ウォータフォールモデルの特徴として、各層の担当者は(原則として)それ以外の層には関与しない点が挙げられます。これによって各層の分担範囲が明らかになりますが、そのかわり上の層での設計ミスが、下の層すべてに響いてしまいます。そのため、できるだけミスを防ぐために「レビュー」と呼ばれるバグの洗い出し作業が行われます。レビューを経て、成果物(作業によって作成される文書類)が下の層へと渡されていきます。レビューについて詳しくは「テスト・レビューの手法」をご覧下さい。

ソフトウェア開発分野の用語[編集]

外部設計と内部設計

「外部設計」と「内部設計」の違いを区別しておきましょう。一般には、外部設計の後に、内部設計を行います。

外部設計
コンピュータに振舞って欲しい部分(いわば、外ヅラ)を設計すること
内部設計
その振舞いを実現させるために、どのようにソフトウェアを作れば良いか(いわば、コンピュータのアタマの中)を設計すること

外部設計(コンピュータの外ヅラを設計すること)とは、たとえば、処理結果としてコンピュータに出力してもらいたい値の策定や、入力データの書式(フォーマット)や、画面レイアウトの設計、プリントアウトする紙のレイアウト策定といった、人間の目から見てコンピュータに振舞って欲しいことを考えていく作業、と言ってよいでしょう。

内部設計(コンピュータのアタマの中を設計すること)とは、外部設計で挙げられたことをソフトウェア的に実現させるためには、どのようなプログラムが何個ぐらい必要か、を考える作業、と言ってよいでしょう。

プログラム設計

「プログラム設計」では、内部設計で洗い出されたプログラムを、さらに詳細に、モジュール(プログラムを構成する部品だととらえて下さい)という単位まで分割しての設計を行います。

“モジュール”とは?
これは初級シスアドの試験範囲を超えますが、モジュールとは具体的には、C言語でいう関数や、Javaでいうクラスが該当します。内部設計段階で「1システムあたり、5,000行規模のプログラムが10本必要で、1本のプログラムあたりに必要なモジュール数は60個だ」のように見積もられたとすれば、プログラム設計段階では各モジュールを詳細なアルゴリズムにまで噛み砕きます。ここまで細かく分析されていれば、プログラマがプログラミングする際に、非常にラクになります。また、これも試験範囲を超えますが、今日のシステム開発ではプログラミング言語だけで全システムを組み上げるということは、ほとんどありません。たとえばOracleなどDBMSと組み合わせてシステムを構築する場合は「どこから先の処理をDBMSに任せるか?」は、内部設計段階で切り分けます。そしてDBMSを制御するためのモジュールを、プログラム設計段階で設計していきます。


ウォータフォールモデル以外の、ソフトウェア開発モデル[編集]

プロトタイプモデル

プロトタイプ(prototype)には、試作品という意味があります。ソフトウェアの試作品を早期に作り、早い段階でユーザに見せてからソフトウェアを作成していきます。そのメリットは、下記の2点です。

  1. ユーザと開発側との認識のズレを、早い段階で見つけ出すことができる
  2. ユーザ側での、ソフトウェア開発への参加意識が高まる

ウォータフォールモデルの場合、開発初期の設計ミス、特に基本計画でのミスが、テスト最終段階にならないと明らかにならないというデメリットがあります。言い換えれば、エンドユーザの欲しかったものと食い違ったソフトを作ってしまっても、それに気づくのが完成間近になる、ということがありえます。

そのため、基本計画の時点でエンドユーザの要望をシッカリと把握し、早い段階でお互いに納得いくものを作っておくことが、後で泣かないために重要なのですが、会話だけではなかなか要望を把握できるものでもありません。

そこで採用されるのがプロトタイプモデルです。外部設計の成果物(画面サンプルや入出力帳票サンプル)の試作品を早期に作っておき、それをユーザに見せながら意見を取り入れ、再び基本計画へと反映させていきます。具体例としては、町の社長さんに「ホームページ作りませんか?」と持ちかける際に、適当なHTMLを少し手直ししてその会社用のホームページ画面の試作品を作っておくと、話が弾みます。そして、客先でその場で手直しをしながらデザイン案を練っていき、「(“見てくれ”は)これで行こう」と決まってから、アルゴリズムという“魂を吹き込む”ために後の工程(CGIプログラミングなど)を開始する、などが挙げられます。

RAD(Rapid Application Development)
素早くソフトウェアを作る、という意味で、RADと呼ばれる考え方があります。これもプロトタイプモデルを前提とした考え方で、たとえばVisualBasicでのプログラミングでは、マウスを使ってGUI部品を画面に貼り付けていく作業によって、比較的簡単にプロトタイプが作れます。反面、ユーザに「簡単じゃないか。プログラミングも簡単なんだろ?」と思わせてしまう傾向があり、ひいては価格交渉が難航する元になったりします。
スパイラルモデル

スパイラル(spiral)には「らせん」という意味があります。スパイラルモデルは、新QC七つ道具のひとつであるPDCAサイクルによく似ています。小さいソフトウェアから作り始め、実際に使ってみて、それを踏まえて肉付けしていく作業をグルグル繰り返す(反復する)ことで、より良いソフトウェアを作っていこうという発想です。

スパイラルモデルとオブジェクト指向
これは初級シスアドの試験範囲を超えますが、1988年にベームによって提唱されたスパイラルモデルでは「目標、代替案、制約の決定」「代替案とリスクの評価」「開発とテスト」「計画」の4つのフェーズを繰り返すとされています。そして今日では、ソフトウェアをどんどん進化させるという意味から、オブジェクト指向設計と相性が良いとされています。具体的にはラショナル社の提唱するRUP(Rational Unified Process)と呼ばれるオブジェクト指向開発プロセスでは、「方向づけ」「推敲」「作成」「移行」の各工程をグルグルと繰り返します。

ソフトウェアのライフサイクル[編集]

ソフトウェア(およびシステム)は「開発して納入されれば、それで終わり」ではありません。そのあとの運用・保守も含めた、開発側とユーザ側の長いお付き合いになります。ですがいつの日か、そのソフトウェアもお払い箱になる日が来ます。このようなソフトウェアの一生を「ソフトウェアのライフサイクル」と呼びます。なお、ソフトウェアのライフサイクルの細かな用語を規定したガイドラインに「SLCP-JCF98 共通フレーム」があります。詳しくは「標準化」の単元を参照して下さい。

ソフトウェアの再利用[編集]

リバースエンジニアリング

しばしば工業製品メーカは、ライバル会社の製品を買ってきて分解し、その部品構成や技術を学んだりします。これはソフトウェア業界でも同様で、ソフトウェア開発におけるリバースエンジニアリングとは「下流工程(ウォータフォールモデルでいえば、下の方)の資料をもとに、上流工程の資料を作成していくこと」を指します。たとえば、よその会社が作ったアルゴリズム(プログラムの、いわば骨格にあたるもの)を基にして上流工程の資料を作成していき、得られた知識を自社の別のシステム開発に活かすこと、などが挙げられます。

図法[編集]

ユーザであるあなたが、情報システムの開発を外部に依頼する際、もしあなたもその図面が読めると、発注の際のメリット(特に、コストと納期)が非常に大きくなります。そのため、図面を読み解かせる出題は初級シスアド試験では必須のものになっています。

DFD(Data Flow Diagram)

業務分析から詳細設計まで、幅広く用いられる図法です。データフロー(データの流れ)と、プロセス(処理。プログラムのこと)、データストア(データの保管場所。ファイルやデータベースのこと)と間の関係を表した図です。

なお実際の出題パターンは、概ねこのようになっています。

午前試験
DFDの記号の意味を問わせる問題
午後試験
データストアやデータフロー部分に空欄があり、そこを穴埋めさせる問題
E-R図(Entity-Relationship Diagram)

初級シスアドの試験にも出題される、関係データベース(Relational Database)を構築するのに先立って、データベースのモデリング(設計)を行いたい場合によく用いられる図法です。実体(Entity)と、実体間の関連(Relationship)を書き出していく図であることから、実体関連図とも呼ばれています。詳しくは「データベース」のページの説明を参照して下さい。

UML(Unified Modeling Language)

ソフトウェア開発分野、特にオブジェクト指向設計を行う際に便利な記法です。Languageという名ですが、クラス図・シーケンス図など、主に絵文字によって作成されます。

流れ図(フローチャート)

主に、アルゴリズム(プログラムの骨格にあたるもの)を記述する図法ですが、業務プロセス(仕事の手順)の分析にも使える、知っていて損の無い図法です。

状態遷移図(じょうたいせんいず:ステートダイヤグラム)

 初級シスアド試験の場合、外部設計の話と絡めて「画面遷移図」として出題されることが多いです。DFDの丸印が「プロセス(プログラム)」を表すのに対し、状態遷移図の丸印は「状態(受付画面の表示がどんな状態か、など)」を表す、という違いがあります。

決定表(デシジョンテーブル)

決定表とは、条件によって処理を実行するかどうかを判断するパターンを、表としてまとめたものです。左端の列に書かれた条件に合致するならY、そうでなければNを、右上に書いていきます。そしてその条件の組み合わせを下にたどって、X印が記された行の左端の列が、とるべき処理の内容です。

コード設計[編集]

初級システムアドミニストレータは、実際にソフトウェアを作る役割というよりも、ユーザの視点に立ってソフトウェア作りを監修する立場です。基本的には、予算の許す範囲で、使いやすさとわかりやすさにこだわってあげて下さい。

ところで「○○番号」「△△コード」といった、番号化されたデータをよく見かけますが、この番号体系は、誰がどのように決めるものでしょうか?

基本的には、ユーザ側が主体になって決めるべき事項です。ここでは、その「○○番号」にこだわってみましょう。

【例題】
日付コードを生成する式

1日に、多くても10件程度までのデータが入力されるとします。このデータに番号を割り振りたいのですが、8けたの年月日(2007年12月1日なら、20071201)に続けて、その日に入力された順に付与され2けたの番号が来るコードを考えます。

この考えに則ると、2007年12月5日に、7番目に入力されたデータには「2007120507」というコードが与えられます。

【設問1】
表計算ソフトの各行に、西暦・月・日・その日の何番目のデータか、を表す数値が入っているとします。セルB5に入力する、この場合に与えるコード(今回の場合、20億712万507という数値)を求めるための計算式を考えて下さい。
AB
1西暦2007 
212 
35 
4番目7 
5コードを算出→2007120507 


【設問2】
「2007052911(20億705万2911)」という数値から、元のそれぞれの値を求めるための数式を考えて下さい。なお、各種の関数(特に“整数部”“剰余”)は是非とも使って下さい
AB
1コード2007052911 
2西暦を算出→2007 
3月を算出→5 
4日を算出→29 
5番目を算出→11 

この目的を達成させるための計算式は何通りか考えられますが、正しい値が求まるのなら、どれも正解です。

  • 【設問1の解答例(初級シスアド試験“表計算ソフト”の場合)】
    • コードの算出 B1*1000000+B2*10000+B3*100+B4
  • 【設問2の解答例(初級シスアド試験“表計算ソフト”の場合)】
    • 西暦の算出:整数部(B1/1000000)
    • 月の算出:剰余(整数部(B1/10000),100)
    • 日の算出:剰余(整数部(B1/100),100)
    • 番目の算出:剰余(B1,100)
  • 【設問1の解答例(MS-Excelの場合)】
    • コードの算出:=B1*1000000+B2*10000+B3*100+B4
  • 【設問2の解答例(MS-Excelの場合)】
    • 西暦の算出:=INT(B1/1000000)
    • 月の算出:=MOD(INT(B1/10000),100)
    • 日の算出:=MOD(INT(B1/100),100)
    • 番目の算出:=MOD(B1,100)

テスト・レビュー技法[編集]

ここでは、いかにソフトウェアを作るかというよりは、いかに正しく動作するかをチェックするかという話題を中心にご説明します。

テストの手法

ここでいうテストとは、プログラミングが一段落した後にそのプログラムが正しく動くかどうかをチェックする作業(「バグ出し」とも呼びます)の事です。テストの技法として、ホワイトボックステストとブラックボックステストを覚えておきましょう。両方とも、プログラムが正しく動くかどうかテストするためのデータを選び出し、試す手法です。

ホワイトボックステスト

ホワイトボックステストとは、テストしたいプログラムの内部構造(アルゴリズム。いわばプログラムの骨組み)に着目して、テスト用のデータを作成します。いわば内部構造を“白昼のもとにさらす”イメージです。

ブラックボックステスト

ブラックボックステストは、テストしたいプログラムの内部構造がどうなっているかは全く触れず、その「振る舞い」(テストデータに対して、予想通りの実行結果を返してくれるかどうか)のみをチェックします。いわば“中の見えない黒い箱の中”を、外見だけでチェックするイメージです。

「限界値分析」と「同値分割」

ブラックボックステストでは、用語として、限界値分析と同値分割を覚えて下さい。

限界値分析(げんかいちぶんせき)
入力データとしてOKの値の範囲と、NGの値の範囲との境目(ギリギリの値)を選び出します。
同値分割(どうちぶんかつ)
OKの範囲の値なら何を選んでも同じ、NGの値も何を選んでも同じ、という発想です。

例として「1からnまでを足した値を、表示するプログラム」を考えます。なお、nの値は1から100までの整数のみを受け付ける(つまり、最大でも1から100までの足し算)ものとします。
この場合、入力値としてOKである値の範囲(有効同値クラス)は、1から100までの範囲です。また、入力値として受け入れてはならない値の範囲(無効同値クラス)は、-∞~0と、101~+∞です。* 限界値分析の場合の、テストデータ:OKの範囲とNGの範囲の境目(ギリギリの値)に着目するため、「0,1,100,101」という4つの値を、テストデータにします。

  • 同値分割の場合の、テストデータ:OKの値であれば何でも構わないため、たとえば38を。またNGであれば何でも構わないため、小さい方は-593と、大きい方は3710という2つの値を、テストデータにします。そのため「-593,38,3710」という3つの値を、テストデータにしてみました。
ブラックボックステストは、同値分割だけだと不十分でしょうか?
限界値分析も併用するべきです。ソフトウェアのバグは、限界値付近に潜みやすいという経験則があります。例えば、かつて騒がれた「2000年問題(Y2K)」のように、1999年と2000年の境目などです。他にも、ループの終了条件をミスっていないか検査する時も、限界値分析が役立ちます。また、ブラックボックステストは、処理構造は度外視してのテストのため「処理効率の良いアルゴリズムであるか」まではチェックできません。たとえば今回のように1からnまでの総和を求める例では、nがある程度以上の数だと、ループ構文を用いた計算よりも、公式()を用いる方がはるかに高速です。ですがどちらの内部構造であっても、答さえ合っていればテストにパスしてしまうという点にご注意下さい。


レビューの手法[編集]

レビューとは

レビュー(review)の意味は「再調査」です。宝塚歌劇団などのレビュー(revue)と混同しないで下さい。

先に、ウォータフォールモデルという、上の層から下の層に向かって設計を進める手法を学んで頂きました。 (図 ウォータフォールモデル) この各層ごとに責任もって設計が行われていないと、あとの人(特に、下流工程の担当者)に迷惑がかかります。そこで、次の層に成果物(作成された書類など)を渡す前に、バグ洗い出しのためのミーティングを行います(これを「レビュー」と呼びます)。なおレビューは、なにもウォータフォールモデルだけでなく、情報システム開発のさまざまな場面で行われています。

これは、やや初級シスアドの試験レベルを超えますが、レビューには大きく分けて「ウォークスルー」と「インスペクション」の2種類があります。なお、基本情報技術者試験から上の区分を受験される場合は、この用語は知っていることを前提に出題されます。

テスト設計・管理手法[編集]

単体テスト、結合テスト、システムテスト(総合テスト)、運用テストの各テストは、ウォータフォールモデルでいえばそれぞれ「プログラム設計」「内部設計」「外部設計」「基本計画」を担当した人が行うのが原則です。

初級シスアド試験では、エンドユーザ寄りである「システムテスト」と「運用テスト」を中心に覚えいきましょう。

【例題】
初級シスアド平成13年春期午前問37

利用部門での運用テストに入る前の段階で,開発部門がシステムのテスト(単体テスト,結合テスト,システムテスト)を実施した。この段階までのテストで,見つけることが困難な項目はどれか。

  • ア 障害発生が業務に与える影響
  • イ スループットの不足
  • ウ データ破壊や改ざんに対する安全性
  • エ 論理エラー

本文からは、単体テスト→結合テスト→システムテスト(総合テスト)まで進んでいることが読み取れます。残るは運用テストです。

運用テストは、基本計画(エンドユーザが、どのようなシステムを欲しがっているか)を担当した人が行うのが原則ですので、エンドユーザが実際にトラブった時の事を想定したテストである、選択肢アが答えになります。

選択肢イのスループット(ある単位時間あたりの処理件数)は客先でなくても確認できます。

選択肢ウはシステムテストで、選択肢エは単体テストで確認される項目です。

 もし選択肢が思い浮かばない時のヒントですが、初級シスアド試験としては、最もエンドユーザ寄りの選択肢を選ばせるパターンが多いです。

信頼性成長曲線(バグ曲線)

ソフトウェアの信頼性とは、突き詰めて言えばバグの少なさです。そこでソフトウェアのテスト段階で、いかにバグをつぶしたかの統計をとってみて、新たなバグがほとんど出なくなった段階で「信頼性の高い」ソフトウェアとみなす手法があります。その際に描かれるグラフが、信頼性成長曲線です。

数学モデルで見る信頼性成長曲線

信頼性成長曲線は、数学的には、ゴンペルツ曲線やロジスティック曲線(この2つは似た曲線で、ともに今回のグラフのようなS字形を描きます)と呼ばれるグラフで近似されます。


レグレッションテスト(退行テスト)

「Windowsのサービスパックを適用したら、それまで動作していたソフトが動かなくなった」という嘆きをたまに聞きます。せっかくソフトウェアを改良したつもりが、かえってエラーで動かなくなってしまうことを「退行(レグレッション)」と呼びます。
たとえば、整数値を計算して表示するプログラムがあったとします。そこに、小数まで計算できる機能を付け足すつもりでプログラムを改良したところ、計算させるモジュールだけを改良して表示処理のモジュールが未改良だと、どうなるでしょうか?
旧来の表示処理モジュールでは小数値の表示に対応できないため、おそらく表示段階でデータフォーマットの違いによるエラーが起こり、ややもすれば答えが一切出なくなってしまうトラブルに遭うでしょう。これが退行の例です。そこでソフトウェアを改良する際には、退行を起こしていないかを試す「レグレッションテスト」も欠かせません。

【例題】
初級シスアド平成13年秋期午前問37

 レグレッション(退行)テストの説明として,適切なものはどれか。

  • ア 修正した内容が今まで正常に動作していたほかの機能に影響を与えていないことをテストすること
  • イ 操作性の良さや表示されるメッセージの分かりやすさをテストすること
  • ウ データ量を増やしたり,何人もの人で同時に処理要求を行ったりしても,業務に支障がないことをテストすること
  • エ 間違ったデータを入力したときにエラーとして認識されることをテストすること
【正解】

開発管理[編集]

工程管理

PERT図(アローダイアグラム)とクリティカルパスのお話は、「情報化と経営」をご参照下さい。

ソフトウェア見積手法

ソフトウェア開発の世界では、そのソフトウェアを開発してもらう際の用語で「人月(にんげつ)」という単位がよく出てきます。これは、技術者の人数と、各技術者が働く期間の積で求まる値で、そのソフトウェアを作るのに必要な労働力(≒規模)がどの位かを表す値です。

たとえば1人の技術者が9ヶ月働くのと、3人の技術者が3ヶ月働くのと、9人の技術者が1ヶ月働くのは、(計算上は)いずれも「9人月」と計算されます。実際は、人月の平方根をとった値を目安に(この例では、)、人数や期間を決めます。つまり9人月と見積もられた場合には、9人を1ヶ月働かせるよりは、3人が3ヶ月働く形を考えるのが無難です。

ソフトウェア見積手法

「1人月」の相場は、ざっと100万円と見積もられています。もちろん、開発の難易度や規模、依頼するエンジニアのスキル、発注先の格、発注先の国によって、変動はあります。

これは初級シスアド試験の難易度を超えますが、ソフトウェア見積手法としては、ソフトウェアの規模をもとに見積もるCOCOMO(COnstructive COst MOdel)や、機能ごとで金額を積み上げていくファンクションポイント法、COCOMOの改良形であるCOCOMO IIなどがあります(余談ですが、世間一般にCOCOMOといえば、ココナッツリキュールのCocomoを指します)。


アプリケーションシステムの構築[編集]

ソフトウェアパッケージの利用

ソフトウェアパッケージ(パッケージソフトウェアとも呼びます)とは、平たくいえばパソコンショップで売っているような、説明書と一緒に紙箱に詰めて売られているソフトウェアのことです。

企業組織に情報システムを導入する時、その組織の業務向けソフトウェアも一緒に作ってもらう(いわばオーダーメイドで服を作る感覚)のは、お金が高くつきます。そのため、使いものになりそうなソフトウェアパッケージがあるならば、それをパソコンショップで買ってきて安く済ませる、というのも初級システムアドミニストレータの腕の見せ所です。  企業組織向けソフトウェアパッケージの、個々の製品名(「弥生会計」など、多くは登録商標)を問わせる出題はなされませんが、ソフトウェアパッケージにはどのような種類があるのかを把握しておくのも、限られた予算内での業務改善に役立ちます。

システムの可監査性[編集]

システム監査の意義

会計監査人が、不正な会計をしていないかを見張るように、システム監査人という人たちが情報システムの信頼性・安全性・効率性が保たれているかを見張ると考えて下さい。システム監査は、正確には「監査対象から独立かつ客観的立場のシステム監査人が、情報システムを総合的に点検および評価し、組織体の長に助言および勧告するとともにフォローアップする一連の活動」のことです。

システムの可監査性(かかんさせい)とは、システム監査人が調べたい時に、すぐに正しく調べられる機能が(アクセスログはすぐ見られるか、など)、ソフトウェア的に盛り込まれているかどうかの度合いのことです。

外部環境の活用[編集]

アウトソーシング(outsourcing)

アウトソーシングとは、企業組織の仕事を、思い切って外部の業者に任せてしまうことを指す言葉です。情報システムの運用においても、関連会社などへの業務委託はよく行われます。また、企業の総務・経理・人事など間接部門の仕事のうち、委託できそうなものを外部業者に委託する形をBPO(Business Process Outsourcing)と呼びます。

  • メリット
    • 企業の経費削減
    • 企業のリソースを本業へと集中できる
  • デメリット
    • これまで秘密だったデータも外部業者に渡るため、情報漏えいのリスクがある
    • その企業が得意とする分野(コアコンピタンス:core competence)が流出しかねない
システムインテグレーション(SI:System Integration)

システムインテグレーションとは、情報システム構築の全般的なノウハウと、機器の仕入先を複数持つ(マルチベンダ)業者が、それらを組み合わせての理想的なシステムとして提案・提供することです。

この業者を「システムインテグレータ(SIer:エスアイヤーと発音)」と呼びます。経済産業省ではSIerの登録・認定を行っているため、ここに登録されているかどうかも業者選びの参考になります。

システムの運用[編集]

一口にシステムの運用保守といっても、その分野は幅広いものです。実際にPCを操作するだけでなく、LANケーブルの配線や交換、消耗品(プリンタのインクや用紙など)の入手性を考えるに至るまで、システムアドミニストレータの活躍する範囲は非常に幅広いものです。

学習方法

実はこの分野は、最も広い試験範囲だと思います。この分野は、本やマニュアルを読むよりも、いかに日頃からPCに触れているかがモノを言う分野です。実務にも直結する分野ですので、ぜひ普段からPCに触れておいて下さい。

ここでは、その中でも頻出の考え方である「ソフトウェアのバージョンアップ」「運用マニュアル」について、お話します。

「あたらしモノ好き」はダメ、「実績重視」が出題の基本

ソフトウェアのバージョンアップ、特にOSのバージョンアップには、石橋を叩いても渡らない位の慎重さが必要です。もし個人で使うPCなら、新しいOSのインストールはワクワクする作業ですが、企業組織で使うPCへの場合は「OSをバージョンアップしたら、それまで動いていたソフトウェアが動かなくなった!」というトラブル(レグレッション)が茶飯事です。

そのため、あなたが組織内のPCのソフトウェアをバージョンアップする役を任せられた際は、いきなり全PCのOSをバージョンアップするのではなく、まずはトラブっても害の無いPCを用意した上で、これまで使って来たソフトウェアが問題無く動作することを確認しましょう。その後、一部の部署で試験導入してから各部署へと展開していく、という形が理想です。

信頼性成長曲線からもわかるように、改善が進んだソフトウェアは、新たなバグに悩まされることが非常に少なくて助かるものです。

運用マニュアルの扱い
  • 運用マニュアルには、作成日付と更新履歴を盛り込む
  • 新しい運用マニュアルが来たら、古い運用マニュアルは、すぐに捨てる
  • 運用マニュアルが更新されたら、関係者には、もれなく連絡する
  • 紙の冊子だけでなく、オンラインマニュアル(オンラインヘルプ)の採用も考える
その他のキーワード
システムの運用
  • システムの運用サービス基準
    • SLA(Service Level Agreement)
    • ITIL(IT Infrastructure Library)
  • 運用管理(コンピュータシステム、データベース、ネットワーク)
  • システムのコスト管理(課金、TCO:Total Cost of Ownership)
  • システムのオペレーション(ジョブスケジューリング、データの入出力管理、運用マニュアル)
  • ユーザ管理(ID発行・管理)
  • 分散システムの管理
  • ハードウェア資源管理(ライブラリ管理、バージョン管理)
  • ソフトウェア資源管理(ライブラリ管理、バージョン管理)
  • データ資源管理
  • ネットワーク資源管理
  • 設備・施設の管理(電源、空調設備、設備管理、施設管理)
  • システムの障害管理(処理手順、監視、回復処理、対策)
  • セキュリティ管理
  • 性能管理
  • システム運用ツール(自動化ツール、監視ツール、診断ツール)
  • システムの移行(運用段階への移行、運用テスト、バージョン管理)
システムの保守
  • ソフトウェア保守
  • ハードウェア保守
  • 保守契約
情報処理技術者試験センターの資料
情報処理技術者スキル標準
初級システムアドミニストレータ[1]
テクニカルエンジニア(システム管理)[2]
上級システムアドミニストレータ[3]
経済産業省の資料
システム管理基準(平成16年10月8日策定)[4]


関連項目[編集]

  1. ^ Java Client Roadmap Update An update of timelines for Java Deployment and Java UI technologies. May 11, 2020. https://www.oracle.com/technetwork/java/javase/javaclientroadmapupdatev2020may-6548840.pdf.