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

初級システムアドミニストレータ試験(初級シスアド)は2009年(平成21年)度春期の試験を最後に廃止されました。ただし、初級シスアドの後継であるITパスポート試験や基本情報技術者試験にも、開発や運用に関する問題が出題されています。(現在は主にマネジメント系の問題として出題されています。)
ITパスポート試験や基本情報技術者試験の合格を目指される方はしっかり学習してください。
情報システムの構築に、ソフトウェアは欠かせません。本日からの3日間は、市販のソフトウェア(パッケージソフト)を使うのとは異なり、オーダーメイドでソフトウェアを作ってもらう際に必要な知識を得て頂きます。具体的には、ソフトウェア開発を受託する会社のSE(システムエンジニア)と折衝する際に、知っておくべき知識を学んで頂きます。
人間(プログラマ)が書く「プログラム」は、普通は何らかのプログラミング言語で書かれたもの(ソースコード)です。ですが、それはあくまで人間には理解できても、じつはコンピュータ内のCPUが直接理解できるプログラムではありません。そのため、CPUが理解できるディジタルな言葉(実行可能モジュール)へと変換するためのソフトウェアを用います。そのソフトウェアが変換する方式として、以下の3つを押さえておきましょう。
Javaが登場した初期によく使われた言葉に“Write once, run anywhere”というものがあります。一度Java言語でプログラムを作ると、WindowsでもLinuxでもiアプリ携帯電話でも、どこでも動作するという意味です。 Java言語で書かれたソースコードをコンパイルすると、「Javaバイトコード」と呼ばれるファイル(拡張子は“.class”)が出来上がります。このJavaバイトコードのファイルを読み込んで実行するためのソフトウェア(その実体は、インタプリタ)を、「Java仮想マシン」と呼びます。 このJava仮想マシンは、Windows用・Linux用・携帯電話用など、今日のほとんどのOS・コンピュータ向けのものが作られています。ですので、Java仮想マシンさえインストールしてあれば、原則としてどのコンピュータ上でもJavaが(正確には、Javaバイトコードが)実行できるのです。
詳しくは「情報化と経営」の単元を参照して下さい。

詳しくは「表計算ソフト」の単元を参照して下さい。
詳しくは「データベース」の単元を参照して下さい。
1990年代の初頭までは、コンピュータを使うといえば、専門の技術者に任せる形が主流でした。ですが、今は違います。その頃、技術者にやってもらっていた事の多くは、机上のPCで、我々(エンドユーザ)の手でできるようになりました。特に表計算ソフトによって集計作業は楽になり、SQLの扱いを知ることでデータベースの検索を技術者に任せずとも行えるようになりました。
初級シスアド試験、特に午後試験では、この表計算とデータベースが高い配点を持ちます。それだけ力を入れて勉強するべき価値を持つテーマですし、それによってこのEUC・EUDの時代を渡り歩くための力をつけていきましょう。
初級システムアドミニストレータとして活躍予定の皆様は、自部門の情報化を進めるために、自部門専用のソフトウェアを開発(発注)することもありえます。そこで初級シスアド試験では、ソフトウェアを開発する業者と打ち合わせする際の基礎知識として、ソフトウェアがどのように作られていくのかも知っておく必要があります。そのために、ソフトウェアの作り方、特にウォータフォールモデルを基本として、ソフトウェアがどのように作られるかの流れを把握しておきましょう。
なお初級シスアド試験では、基本情報技術者試験と違い、難易度の高いアルゴリズムや実際のプログラミング技法までは(SQLを除いて)出題されません。
ウォータフォールモデルのメリットは、ソフトウェアを分業して開発しやすいため、大規模システムの開発に向く点です。ウォータフォールモデルの名の通り、工程の上の方を「上流工程」、下の方を「下流工程」とも呼びます。これは別の見方をすると、上に行くほどエンドユーザ寄り、下に行くほどプログラミング・ハードウェア寄りの仕事である、とも言えます。 たとえば「基本計画」担当者は、その右の「運用テスト」担当者でもあります。これは「客先ニーズ」を把握する担当者は、「客先ニーズ通りのシステムが完成したか」をチェックする担当者も兼ねる、という意味です。ほかにも「プログラム設計」担当者は、そのプログラム(のモジュール)を正しく動作させることに責任を持つ「単体テスト」担当者でもあるのです。 また、ウォータフォールモデルの特徴として、各層の担当者は(原則として)それ以外の層には関与しない点が挙げられます。これによって各層の分担範囲が明らかになりますが、そのかわり上の層での設計ミスが、下の層すべてに響いてしまいます。そのため、できるだけミスを防ぐために「レビュー」と呼ばれるバグの洗い出し作業が行われます。レビューを経て、成果物(作業によって作成される文書類)が下の層へと渡されていきます。レビューについて詳しくは「テスト・レビューの手法」をご覧下さい。
「外部設計」と「内部設計」の違いを区別しておきましょう。一般には、外部設計の後に、内部設計を行います。
外部設計(コンピュータの外ヅラを設計すること)とは、たとえば、処理結果としてコンピュータに出力してもらいたい値の策定や、入力データの書式(フォーマット)や、画面レイアウトの設計、プリントアウトする紙のレイアウト策定といった、人間の目から見てコンピュータに振舞って欲しいことを考えていく作業、と言ってよいでしょう。
内部設計(コンピュータのアタマの中を設計すること)とは、外部設計で挙げられたことをソフトウェア的に実現させるためには、どのようなプログラムが何個ぐらい必要か、を考える作業、と言ってよいでしょう。
「プログラム設計」では、内部設計で洗い出されたプログラムを、さらに詳細に、モジュール(プログラムを構成する部品だととらえて下さい)という単位まで分割しての設計を行います。
プロトタイプ(prototype)には、試作品という意味があります。ソフトウェアの試作品を早期に作り、早い段階でユーザに見せてからソフトウェアを作成していきます。そのメリットは、下記の2点です。
ウォータフォールモデルの場合、開発初期の設計ミス、特に基本計画でのミスが、テスト最終段階にならないと明らかにならないというデメリットがあります。言い換えれば、エンドユーザの欲しかったものと食い違ったソフトを作ってしまっても、それに気づくのが完成間近になる、ということがありえます。
そのため、基本計画の時点でエンドユーザの要望をシッカリと把握し、早い段階でお互いに納得いくものを作っておくことが、後で泣かないために重要なのですが、会話だけではなかなか要望を把握できるものでもありません。
そこで採用されるのがプロトタイプモデルです。外部設計の成果物(画面サンプルや入出力帳票サンプル)の試作品を早期に作っておき、それをユーザに見せながら意見を取り入れ、再び基本計画へと反映させていきます。具体例としては、町の社長さんに「ホームページ作りませんか?」と持ちかける際に、適当なHTMLを少し手直ししてその会社用のホームページ画面の試作品を作っておくと、話が弾みます。そして、客先でその場で手直しをしながらデザイン案を練っていき、「(“見てくれ”は)これで行こう」と決まってから、アルゴリズムという“魂を吹き込む”ために後の工程(CGIプログラミングなど)を開始する、などが挙げられます。
スパイラル(spiral)には「らせん」という意味があります。スパイラルモデルは、新QC七つ道具のひとつであるPDCAサイクルによく似ています。小さいソフトウェアから作り始め、実際に使ってみて、それを踏まえて肉付けしていく作業をグルグル繰り返す(反復する)ことで、より良いソフトウェアを作っていこうという発想です。
ソフトウェア(およびシステム)は「開発して納入されれば、それで終わり」ではありません。そのあとの運用・保守も含めた、開発側とユーザ側の長いお付き合いになります。ですがいつの日か、そのソフトウェアもお払い箱になる日が来ます。このようなソフトウェアの一生を「ソフトウェアのライフサイクル」と呼びます。なお、ソフトウェアのライフサイクルの細かな用語を規定したガイドラインに「SLCP-JCF98 共通フレーム」があります。詳しくは「標準化」の単元を参照して下さい。
しばしば工業製品メーカは、ライバル会社の製品を買ってきて分解し、その部品構成や技術を学んだりします。これはソフトウェア業界でも同様で、ソフトウェア開発におけるリバースエンジニアリングとは「下流工程(ウォータフォールモデルでいえば、下の方)の資料をもとに、上流工程の資料を作成していくこと」を指します。たとえば、よその会社が作ったアルゴリズム(プログラムの、いわば骨格にあたるもの)を基にして上流工程の資料を作成していき、得られた知識を自社の別のシステム開発に活かすこと、などが挙げられます。
ユーザであるあなたが、情報システムの開発を外部に依頼する際、もしあなたもその図面が読めると、発注の際のメリット(特に、コストと納期)が非常に大きくなります。そのため、図面を読み解かせる出題は初級シスアド試験では必須のものになっています。
業務分析から詳細設計まで、幅広く用いられる図法です。データフロー(データの流れ)と、プロセス(処理。プログラムのこと)、データストア(データの保管場所。ファイルやデータベースのこと)と間の関係を表した図です。
なお実際の出題パターンは、概ねこのようになっています。
初級シスアドの試験にも出題される、関係データベース(Relational Database)を構築するのに先立って、データベースのモデリング(設計)を行いたい場合によく用いられる図法です。実体(Entity)と、実体間の関連(Relationship)を書き出していく図であることから、実体関連図とも呼ばれています。詳しくは「データベース」のページの説明を参照して下さい。
ソフトウェア開発分野、特にオブジェクト指向設計を行う際に便利な記法です。Languageという名ですが、クラス図・シーケンス図など、主に絵文字によって作成されます。
主に、アルゴリズム(プログラムの骨格にあたるもの)を記述する図法ですが、業務プロセス(仕事の手順)の分析にも使える、知っていて損の無い図法です。
初級シスアド試験の場合、外部設計の話と絡めて「画面遷移図」として出題されることが多いです。DFDの丸印が「プロセス(プログラム)」を表すのに対し、状態遷移図の丸印は「状態(受付画面の表示がどんな状態か、など)」を表す、という違いがあります。
決定表とは、条件によって処理を実行するかどうかを判断するパターンを、表としてまとめたものです。左端の列に書かれた条件に合致するならY、そうでなければNを、右上に書いていきます。そしてその条件の組み合わせを下にたどって、X印が記された行の左端の列が、とるべき処理の内容です。
初級システムアドミニストレータは、実際にソフトウェアを作る役割というよりも、ユーザの視点に立ってソフトウェア作りを監修する立場です。基本的には、予算の許す範囲で、使いやすさとわかりやすさにこだわってあげて下さい。
ところで「○○番号」「△△コード」といった、番号化されたデータをよく見かけますが、この番号体系は、誰がどのように決めるものでしょうか?
基本的には、ユーザ側が主体になって決めるべき事項です。ここでは、その「○○番号」にこだわってみましょう。
1日に、多くても10件程度までのデータが入力されるとします。このデータに番号を割り振りたいのですが、8けたの年月日(2007年12月1日なら、20071201)に続けて、その日に入力された順に付与され2けたの番号が来るコードを考えます。
この考えに則ると、2007年12月5日に、7番目に入力されたデータには「2007120507」というコードが与えられます。

この目的を達成させるための計算式は何通りか考えられますが、正しい値が求まるのなら、どれも正解です。
ここでは、いかにソフトウェアを作るかというよりは、いかに正しく動作するかをチェックするかという話題を中心にご説明します。
ここでいうテストとは、プログラミングが一段落した後にそのプログラムが正しく動くかどうかをチェックする作業(「バグ出し」とも呼びます)の事です。テストの技法として、ホワイトボックステストとブラックボックステストを覚えておきましょう。両方とも、プログラムが正しく動くかどうかテストするためのデータを選び出し、試す手法です。
ホワイトボックステストとは、テストしたいプログラムの内部構造(アルゴリズム。いわばプログラムの骨組み)に着目して、テスト用のデータを作成します。いわば内部構造を“白昼のもとにさらす”イメージです。
ブラックボックステストは、テストしたいプログラムの内部構造がどうなっているかは全く触れず、その「振る舞い」(テストデータに対して、予想通りの実行結果を返してくれるかどうか)のみをチェックします。いわば“中の見えない黒い箱の中”を、外見だけでチェックするイメージです。
ブラックボックステストでは、用語として、限界値分析と同値分割を覚えて下さい。
例として「1からnまでを足した値を、表示するプログラム」を考えます。なお、nの値は1から100までの整数のみを受け付ける(つまり、最大でも1から100までの足し算)ものとします。 この場合、入力値としてOKである値の範囲(有効同値クラス)は、1から100までの範囲です。また、入力値として受け入れてはならない値の範囲(無効同値クラス)は、-∞~0と、101~+∞です。* 限界値分析の場合の、テストデータ:OKの範囲とNGの範囲の境目(ギリギリの値)に着目するため、「0,1,100,101」という4つの値を、テストデータにします。
レビュー(review)の意味は「再調査」です。宝塚歌劇団などのレビュー(revue)と混同しないで下さい。
先に、ウォータフォールモデルという、上の層から下の層に向かって設計を進める手法を学んで頂きました。 (図 ウォータフォールモデル) この各層ごとに責任もって設計が行われていないと、あとの人(特に、下流工程の担当者)に迷惑がかかります。そこで、次の層に成果物(作成された書類など)を渡す前に、バグ洗い出しのためのミーティングを行います(これを「レビュー」と呼びます)。なおレビューは、なにもウォータフォールモデルだけでなく、情報システム開発のさまざまな場面で行われています。
これは、やや初級シスアドの試験レベルを超えますが、レビューには大きく分けて「ウォークスルー」と「インスペクション」の2種類があります。なお、基本情報技術者試験から上の区分を受験される場合は、この用語は知っていることを前提に出題されます。
単体テスト、結合テスト、システムテスト(総合テスト)、運用テストの各テストは、ウォータフォールモデルでいえばそれぞれ「プログラム設計」「内部設計」「外部設計」「基本計画」を担当した人が行うのが原則です。
初級シスアド試験では、エンドユーザ寄りである「システムテスト」と「運用テスト」を中心に覚えいきましょう。
利用部門での運用テストに入る前の段階で,開発部門がシステムのテスト(単体テスト,結合テスト,システムテスト)を実施した。この段階までのテストで,見つけることが困難な項目はどれか。
本文からは、単体テスト→結合テスト→システムテスト(総合テスト)まで進んでいることが読み取れます。残るは運用テストです。
運用テストは、基本計画(エンドユーザが、どのようなシステムを欲しがっているか)を担当した人が行うのが原則ですので、エンドユーザが実際にトラブった時の事を想定したテストである、選択肢アが答えになります。
選択肢イのスループット(ある単位時間あたりの処理件数)は客先でなくても確認できます。
選択肢ウはシステムテストで、選択肢エは単体テストで確認される項目です。
もし選択肢が思い浮かばない時のヒントですが、初級シスアド試験としては、最もエンドユーザ寄りの選択肢を選ばせるパターンが多いです。
ソフトウェアの信頼性とは、突き詰めて言えばバグの少なさです。そこでソフトウェアのテスト段階で、いかにバグをつぶしたかの統計をとってみて、新たなバグがほとんど出なくなった段階で「信頼性の高い」ソフトウェアとみなす手法があります。その際に描かれるグラフが、信頼性成長曲線です。
「Windowsのサービスパックを適用したら、それまで動作していたソフトが動かなくなった」という嘆きをたまに聞きます。せっかくソフトウェアを改良したつもりが、かえってエラーで動かなくなってしまうことを「退行(レグレッション)」と呼びます。 たとえば、整数値を計算して表示するプログラムがあったとします。そこに、小数まで計算できる機能を付け足すつもりでプログラムを改良したところ、計算させるモジュールだけを改良して表示処理のモジュールが未改良だと、どうなるでしょうか? 旧来の表示処理モジュールでは小数値の表示に対応できないため、おそらく表示段階でデータフォーマットの違いによるエラーが起こり、ややもすれば答えが一切出なくなってしまうトラブルに遭うでしょう。これが退行の例です。そこでソフトウェアを改良する際には、退行を起こしていないかを試す「レグレッションテスト」も欠かせません。
レグレッション(退行)テストの説明として,適切なものはどれか。
PERT図(アローダイアグラム)とクリティカルパスのお話は、「情報化と経営」をご参照下さい。
ソフトウェア開発の世界では、そのソフトウェアを開発してもらう際の用語で「人月(にんげつ)」という単位がよく出てきます。これは、技術者の人数と、各技術者が働く期間の積で求まる値で、そのソフトウェアを作るのに必要な労働力(≒規模)がどの位かを表す値です。
たとえば1人の技術者が9ヶ月働くのと、3人の技術者が3ヶ月働くのと、9人の技術者が1ヶ月働くのは、(計算上は)いずれも「9人月」と計算されます。実際は、人月の平方根をとった値を目安に(この例では、 9 = 3 {\displaystyle {\sqrt {9}}=3} )、人数や期間を決めます。つまり9人月と見積もられた場合には、9人を1ヶ月働かせるよりは、3人が3ヶ月働く形を考えるのが無難です。
ソフトウェアパッケージ(パッケージソフトウェアとも呼びます)とは、平たくいえばパソコンショップで売っているような、説明書と一緒に紙箱に詰めて売られているソフトウェアのことです。
企業組織に情報システムを導入する時、その組織の業務向けソフトウェアも一緒に作ってもらう(いわばオーダーメイドで服を作る感覚)のは、お金が高くつきます。そのため、使いものになりそうなソフトウェアパッケージがあるならば、それをパソコンショップで買ってきて安く済ませる、というのも初級システムアドミニストレータの腕の見せ所です。 企業組織向けソフトウェアパッケージの、個々の製品名(「弥生会計」など、多くは登録商標)を問わせる出題はなされませんが、ソフトウェアパッケージにはどのような種類があるのかを把握しておくのも、限られた予算内での業務改善に役立ちます。
会計監査人が、不正な会計をしていないかを見張るように、システム監査人という人たちが情報システムの信頼性・安全性・効率性が保たれているかを見張ると考えて下さい。システム監査は、正確には「監査対象から独立かつ客観的立場のシステム監査人が、情報システムを総合的に点検および評価し、組織体の長に助言および勧告するとともにフォローアップする一連の活動」のことです。
システムの可監査性(かかんさせい)とは、システム監査人が調べたい時に、すぐに正しく調べられる機能が(アクセスログはすぐ見られるか、など)、ソフトウェア的に盛り込まれているかどうかの度合いのことです。
アウトソーシングとは、企業組織の仕事を、思い切って外部の業者に任せてしまうことを指す言葉です。情報システムの運用においても、関連会社などへの業務委託はよく行われます。また、企業の総務・経理・人事など間接部門の仕事のうち、委託できそうなものを外部業者に委託する形をBPO(Business Process Outsourcing)と呼びます。
システムインテグレーションとは、情報システム構築の全般的なノウハウと、機器の仕入先を複数持つ(マルチベンダ)業者が、それらを組み合わせての理想的なシステムとして提案・提供することです。
この業者を「システムインテグレータ(SIer:エスアイヤーと発音)」と呼びます。経済産業省ではSIerの登録・認定を行っているため、ここに登録されているかどうかも業者選びの参考になります。
一口にシステムの運用保守といっても、その分野は幅広いものです。実際にPCを操作するだけでなく、LANケーブルの配線や交換、消耗品(プリンタのインクや用紙など)の入手性を考えるに至るまで、システムアドミニストレータの活躍する範囲は非常に幅広いものです。
実はこの分野は、最も広い試験範囲だと思います。この分野は、本やマニュアルを読むよりも、いかに日頃からPCに触れているかがモノを言う分野です。実務にも直結する分野ですので、ぜひ普段からPCに触れておいて下さい。
ここでは、その中でも頻出の考え方である「ソフトウェアのバージョンアップ」「運用マニュアル」について、お話します。
ソフトウェアのバージョンアップ、特にOSのバージョンアップには、石橋を叩いても渡らない位の慎重さが必要です。もし個人で使うPCなら、新しいOSのインストールはワクワクする作業ですが、企業組織で使うPCへの場合は「OSをバージョンアップしたら、それまで動いていたソフトウェアが動かなくなった!」というトラブル(レグレッション)が茶飯事です。
そのため、あなたが組織内のPCのソフトウェアをバージョンアップする役を任せられた際は、いきなり全PCのOSをバージョンアップするのではなく、まずはトラブっても害の無いPCを用意した上で、これまで使って来たソフトウェアが問題無く動作することを確認しましょう。その後、一部の部署で試験導入してから各部署へと展開していく、という形が理想です。
信頼性成長曲線からもわかるように、改善が進んだソフトウェアは、新たなバグに悩まされることが非常に少なくて助かるものです。