うちに帰りたくない…

朝から嫌なモノを見つけてしまいました。

鏡に映ったカーテンにへばりついていたのは,

なんと…ムカデ!!

ティッシュペーパーを使って,ちょっとだけ戦ってはみたのですが,
気持ち悪いのなんのって,もうハンパないです(涙)
しかも,出勤前の貴重な時間を割いたにも関わらず,最終的には敵を見失うという大失態!

こうしている今も,部屋のどこにいるか分からないので,
今日はちょっとうちに帰りたくありません…。

————— キリトリセン 8X —————

気を取り直して,間違った問題,第 2 弾!

[問題1]
ソフトウェアの要求定義や分析・設計で用いられる技法に関する記述として,適切なものはどれか。

 (ア) 決定表は,条件と処理を対比させた表形式で論理を表現し,複雑な条件判定を
    ともなう要求仕様の記述手段として有効である。プログラム制御の条件漏れなどの
    チェックにも効果がある
 (イ) 構造化チャートは,システムの "状態" の種別とその状態が遷移するための
    "要因" との関係をわかりやすく表現できる
 (ウ) 状態遷移図は,DFD に "コントロール変換とコントロールフロー" を付加して,
    制御系システムに特有な処理系形態を表現することができる
 (エ) 制御フロー図は,データの "源泉,吸収,流れ,処理,記憶" を基本要素とし,
    システム内のデータの流れのネットワークを表現することができる

[問題2]
データ中心アプローチに関する記述として,適切なものはどれか。

 (ア) 設計の初期の段階から,論理設計と物理設計を一体のものとして扱う
 (イ) データ中心アプローチによって開発されたシステムでは,複数の業務が
    それぞれ個別に構築したデータベースを利用する
 (ウ) データの構造は変わりやすいが,プロセスの仕様は対象業務が変わらない限り
    比較的安定している,という前提に立つ
 (エ) データを共有資源とみなし,その一貫性や完全性維持を重視して資源側から
    ソフトウェアを規程する,という考え方に基づく

[問題3]
トップダウンテストと比較したときのボトムアップテストに関する記述のうち,適切なものはどれか。

 (ア) 既存のシステムを修正してシステム開発する場合よりも,新規に開発する
    システムに適用すると効果がある
 (イ) テストの最終段階で,モジュール間のインタフェース上の問題が発見されたときの
    影響が大きい
 (ウ) 未開発の上位のモジュールを代行するスタブが必要になる
 (エ) モジュール数の多い下位の部分から開発していくことになるので,開発の初期の
    段階ではプログラミングとテストの並行作業が困難である

ここまでの解答と解説!

[問題1] (ア)
決定表(デシジョンテーブル)は,複雑な条件とそれによって決まる処理を
分かりやすく表形式にまとめたもので,複雑な論理の説明を行うのに有効な手法です。
(イ) は状態遷移図,(ウ) は DFD を拡張して制御とタイミングを
表現できるようにした制御フロー図(変換図),(エ) は DFD の説明です。

[問題2] (エ)
データ中心アプローチ(DOA:Date Oriented Approach)とは,最も安定した情報資源である
データに着目し,データ構造からシステムあるいはソフトウェアを開発することです。
 (ア) 概念設計,論理設計,物理摂家の順に行われます
 (イ) システムの安定性や拡張性を保証するうえでも,個別データベースではなく,
    全社的なデータベースを利用する
 (エ) データを共有資源とみなし,その一貫性や完全性維持を重視して資源側から
    ソフトウェアを規定する,という考え方に基づく

[問題3] (イ)
以下,自分メモ参照。

★ ボトムアップテスト

 ・モジュール数の多い下位の部分から開発していくことになるので,最初から
  プログラミングとテストの並行作業が可能です。
 ・テストの最終段階で,モジュール間のインタフェース上の問題が発見されたときの
  影響が大きくなります。
 ・既存のシステムを修正してシステム開発する場合に適しています。

★ トップダウンテスト

 ・モジュール数の少ない上位モジュールから開発していくことになるので,
  初期段階では,プログラミングとテストの並行作業が困難です。
 ・重要度の高い上位モジュールが何回もテストでき,上位モジュールの
  インタフェースの信頼性が高くなります。
 ・新規に開発するシステムに適用します。

comments

ボロボロ…

第 6 章の問題集にチャレンジしてみました。

範囲が広いのと,カタカナの暗記モノが多いのとで,
惨憺たる結果(16 問不正解)になりました…。
なので,当分は第 6 章の間違った問題でこのブログが賑わいそうです(汗)

…以下,間違った問題たち,第 1 弾!

[問題1]
プログラム言語に関する記述のうち,正しいものはどれか。

 (ア) オブジェクト指向言語である Smalltalk-80 では,すべてのデータは
    オブジェクトであり,また,すべての計算はオブジェクトにメッセージを
    送ることによって行われる
 (イ) 関数型言語である Lisp では,逆向き推論や,バックトラックという
    すべての処理の組み合わせを漏れなく実行するために機能が用意されている
 (ウ) 手続き型言語である Pascal では,リストや 2 分木などの再帰的データ構造を
    直接的に定義するしくみが用意されていて,自分自身のプログラムもリストで
    表現される
 (エ) 論理型言語である Prolog では,基本的命令を単純に逐次的に実行するだけでなく,
    現在の変数の値に従って命令の実行の仕方を変化させることができる

[問題2]
Java の特徴に関する記述のうち,適切なものはどれか。

 (ア) Java コンパイラがソースコードをバイトコードに変換し,Java 仮想マシンが
    バイトコードを実行する
 (イ) Java で開発したプログラムを実行するためには,ブラウザが必要である
 (ウ) Java で開発したプログラムを別のプラットフォームで実行するためには,
    再コンパイルが必要である
 (エ) アプレットは,セキュリティ上の理由から,ブラウザが動いているマシン以外とは
    通信できない

[問題3]
ウォータフォールモデルによる開発工程で作成されるドキュメントに関する記述のうち,適切なものはどれか。

 (ア) 外部設計レビュー報告書を,内部設計フェーズに入って最初のステップで作成する
 (イ) 結合テスト計画書を,プログラム設計フェーズで作成する
 (ウ) システム化計画書および要求仕様書を,外部設計フェーズで作成する
 (エ) 単体テスト計画書を,プログラムのコーディングと同時に作成する

ここまでの解答と解説!

[問題1] (ア)
オブジェクト指向言語は,オブジェクト指向を実現する言語であり,すべてのデータを
オブジェクトとして扱い,また,すべての計算はオブジェクトにメッセージを
送ることで実現されます。
 (イ) 論理型言語である Prolog では…,とすれば正しい
 (ウ) 関数型言語である Lisp では…,とすれば正しい
 (エ) 手続き型言語である Pascal では…,とすれば正しい

[問題2] (ア)
Java の最大の特徴は,開発・実行においてプラットフォームを選ばない点にあります。
Java は,ソースコードのコンパイルによって生成されたバイトコードのレベルで互換性がとれているため,一度生成されたバイトコードはそれぞれのプラットフォームに用意されている仮想マシンによって実行が可能となります。
 (イ) Java で開発されたプログラムの実行に必要なのは仮想マシンです。
    実際にはアプレットに呼ばれ,仮想マシンを実装したブラウザ上で動く
    プログラムもありますがが,厳密にはブラウザがプログラムを
    実行するわけではありません
 (ウ) バイトコードのレベルで互換がとれているため,再コンパイルの必要はありません
 (エ) アプレットのように Web サーバなどからバイトコードをダウンロードし,
    ブラウザ上で実行させるようなプログラムは,セキュリティ上の理由から
    サーバホストとの通信しか許されません

[問題3] (イ)
ウォータフォールモデルにおける各フェーズの手順と主な成果物については,
この記事の下の自分メモを参照。

全部で 78 問あったので,62 問正解(正答率:約 79 %)できたことになるのですが,
午前の問題全体でそれくらいの正答率じゃないといけない…と考えると,
やっぱり,まだまだ勉強不足ですね(汗)

精進します!

————— キリトリセン 8X —————

以下,問題 3 の解説と連動?した自分メモ!

★ ウォータフォールモデルにおける各フェーズの手順と主な成果物

   [基本計画]  システム化計画書,要求仕様書,開発化計画書
     ↓
   [外部設計]  外部設計書,外部設計レビュー報告書
     ↓
   [内部設計]  内部設計書,内部設計レビュー報告書
     ↓
 [プログラム設計] プログラム設計書,プログラム設計レビュー報告書,総合テスト計画書
     ↓
 [プログラミング] モジュール設計書,単体テスト計画書(*),ソースプログラム
     ↓
    [テスト]  各テストの報告書

(*) … 単体テスト計画書は,プログラムのコーディングの前に作成する

comments

ケアレスミスが最大の敵!

問題文がうまく読めずに,
おバカなケアレスミスをしまくりなひじきです。

昨日に引き続き,テキスト第 6 章の章末問題ということで,
間違えた 3 つ目の問題(計算問題)についてやっていきます!

[問題1]
あるプロジェクトの工数配分は表のとおりである。基本設計からプログラム設計まで計画どおり終了した。プログラミング段階に入り 3,000 本のプログラムのうち 1,200 本が完了したところである。現在のプロジェクト全体の進捗度は何%か。

工数配分の表です

 (ア) 40   (イ) 44   (ウ) 54   (エ) 75

考え方は,それぞれの段階における進捗度の和を求めて,
答えを導いていきます。

まず,問題文の赤字の部分に,
「基本設計からプログラム設計まで計画どおり終了した」とあるので,
プログラム設計までの進捗度は,

 0.08 + 0.16 + 0.20 = 0.44(= 44 %)

次に,プログラミング段階で,3,000本 のプログラムのうち,
1,200 本が完了したとあるので,プログラミング工程での進捗度は,

 1,200 / 3,000 = 0.4(= 全体の 40 %ができている)
 0.4 * 0.25 = 0.1(= 10 %)

したがって,現在の進捗度は,

 0.44 + 0.1 = 0.54(= 54 %)

となるので,(ウ) が答えになります。

毎度毎度こりないのも,自分でもどうかと思いますが,
また,赤色の部分を読み飛ばしていて,
「答えがないー!!」ってなってました…。

今のうちからこんなくせが付いてしまって,
本番はどうなってしまうのか,かなり心配です(汗)

comments

思い立ったが吉日

なんとなく,突然の思いつきで,
風呂桶とイスを新しいモノに買い換えてみました!

風呂おけです

どこにでもある品ですが,なかなか快適です。

————— キリトリセン 8X —————

なんとか第 6 章を読み終え,章末問題にチャレンジ!

範囲が広いうえに,覚えることも多いので,
10 問中 3 問も間違えちゃいました…(涙)

以下,間違った問題たち。

[問題1]
ソフトウェアの要求分析に関する記述のうち,事象応答分析の説明として適切なものはどれか。

 (ア) 外界の事象に応じて,時間の流れとともにシステムが応答するという
    一連の動作を分析するための方法である
 (イ) システムの改善案を検討する場合などに,ある事象について思いつく
    様々な着想を視覚的なイメージ図にまとめ,参加者がこの図をもとに
    別の視点に立った新しい発想を生み出すことを支援するための方法である
 (ウ) システムの機能を入力データおよび出力データの両面から洗い出すための
    分析方法であり,4 つの要素(データ,情報,機能,条件)の相互関係を定義する
 (エ) システムの対象をモデル化する際に,実体と関連によって,その構造を
    分析するための方法である

[問題2]
データ中心アプローチを特徴づける言葉として,最も適切なものはどれか。

 (ア) カプセル化 (イ) シナリオ化 (ウ) 集約化 (エ) モジュール化

問題の解答は,以下のとおり。

[問題1] (ア)
事象応答分析とは,外部からの事象とその事象に対する応答の時間的な関係を
すべて抽出し,制御の流れを分析することです。
一般に,制御フロー図,ペトリネット図,状態遷移図が利用されます。
なお,(イ) は KJ 法,(ウ) は機能分析,(エ) はE – R ダイアグラム(E – R図)などによる
構造分析の説明です。

[問題2] (ア)
データとデータのライフサイクルを扱うプロセスは密接な関連を
もつものとして考え,データ構造を単に静的(固定的)なものとしてのみ
捉えるのではなく,プロセスをデータの固有の手続き(属性)として,
データ側に隠ぺいしようとするのがデータ中心アプローチです。これは,
オブジェクト指向におけるカプセル化と同じ概念です。

…章末問題で間違った問題の残り 1 つは,
計算問題なので,明日載せようと思います!

comments

サマーコース開講!

夏休み短期集中講座ということで,今日からいよいよ,
サマーコースの第 1 クール(23 日 ~ 29 日)がスタートしました!

今年は初の試みで,学生の皆さんからいただいたアンケートを参考に
開講科目を決定しているので,
昔はなかった科目なんかもあって,例年よりもおもしろそうです。

第 2 クール以降はまだ申し込みがいけるみたいなので,
良かったら今からでも申し込んでみてくださいね!
(ちなみに,学外の方向けのサマーコースもあります!)

そんな私も,第 2 クールに開講予定なので,
今日からまったり準備開始。

久しぶりの授業(前期以来)になるので,ちょっと緊張です(汗)

————— キリトリセン 8X —————

そんなこんなでなかなか進まない第 6 章。

焦らずマイペースをモットー(むしろ,自分にそう言い聞かせてます)に,
続・自分メモということで!

★ モジュール分割技法

 ・STS 分割
  → プログラムを入力処理機能(源泉:Source),変換処理機能(変換:Transform),
    出力処理機能(吸収:Sink)の 3 つのモジュールに分割します。
    また,「入力とはいえない点まで抽象化された地点」である最大抽象入力点と
    「はじめての出力データといえる形を表す点」である最大抽象出力点で
    分割を行います。

 ・TR 分割(トランザクション分割)
  → 入力トランザクションの種類により実行する処理が異なる場合に有効な分割技法です。
    トランザクションを入力するモジュール,トランザクションを属性ごとに
    各モジュールに振り分けるモジュール,トランザクションごとの処理モジュールの
    3 つに分割します。

 ・共通機能分割
  → STS 分割,TR 分割などで分割されたモジュールの中に,共通する機能をもった
    モジュールがある場合,それを共通モジュールとして独立させる方法です。

 ・ジャクソン法
  → 出力データ構造に基づいて分割を進める構造化設計技法です。
    データ構造は JSP 木を用い,「基本」,「連続」,「繰返し」,「選択」の
    4 つの要素を組み合わせた階層的木構造で表現します。

 ・ワーニエ法
  → 集合論に基づく構造化設計技法です。
    入力データ構造を元に「いつ,どこで,何回」という考え方でプログラム全体を
    ブレイクダウンし,展開していきます。
    なお,プログラムの基本論理構造は,「スタート部」,「処理部」,「エンド部」の
    部分集合から構成されます。

ちなみに,赤字がデータの流れに着目した分割技法で,
青字がデータの構造に着目した分割技法です!

うーん。

正直,覚えられない!(汗)

comments

HAPPY BIRTHDAY !

今日は,普段からとても仲良くしてもらっている,
ある先生のお誕生日ということで,学生さんと一緒にお祝いをしました!

誕生日ケーキです

久しぶりに見た,ろうそくの立っているホールケーキ(= バースディケーキ)に,
ちょっとテンション高めです!

…とにもかくにも,お誕生日おめでとう!!

————— キリトリセン 8X —————

さらにさらに,しつこいくらいに第 6 章の自分メモ!

★ ソフトウェア開発モデル

 ・ウォータフォールモデル
  → 要求分析,設計(外部設計・内部設計・プログラム設計),プログラミング,
    テスト,運用・保守という工程順に,ちょうど滝(ウォータフォール)が
    上流から下流へと向かって流れるように開発を進める手法です。
    比較的大規模なシステム開発に向いています。

 ・プロトタイプモデル
  → 開発工程の早い段階で試作品を作成して,それらをユーザに試用してもらい,
    ユーザの意見を反映させながら仕様を確定していく開発手法です。
    開発の早期段階で,要求仕様のあいまいさが取り除かれるという利点があります。

 ・スパイラルモデル
  → ウォータフォールモデルとプロトタイプモデルの長所を取り入れた
    成長型モデルです。独立性の高い部分(機能)ごとに,開発プロセスを
    渦巻き状態に繰り返しながら,開発範囲を徐々に拡大していき,
    システムの完成度を高めていきます。

 ・成長モデル
  → システムの「核」となる部分を早期に開発し,ユーザからの要求や変更が
    あるたびに開発を繰り返すという方法で,同じ工程をサイクリックに
    何度も繰り返しながら,完成へと近づけていきます。

 ・RAD(Rapid Application Development)
  → 短期間(通常 2,3 ヶ月)での開発を重視した手法です。
    ライフサイクルの無制限な繰返しを防ぐため,「タイムボックス」と呼ばれる
    一定の開発期間を設定し,これによって短時間での開発を実現します。

 ・ラウンドトリップ
  → オブジェクト指向開発において,分析と設計,プログラミングを
    何度か行き来しながら,トライアンドエラーでシステムを完成させていく
    開発手法です。

 ・クリーンルームモデル
  → ウォータフォールモデルを基本的な枠組みとして,形式的記述法を採用し,
    正当性の検証を重視することにより,エラーの混入を防止しようとする
    開発手法です。

今さらですが,よくごっちゃになっていたスパイラルモデルとラウンドトリップ。

オブジェクト指向開発のスパイラルモデル = ラウンドトリップ

って感じで,ベースとなる言語?(環境?)が違うだけで,
似たようなものだったんですねー!

comments

カフェで勉強してます

今日は気分を変えて,いつもとは違うカフェで勉強をしてみました。
(画像は,注文したアイスミルクティーと自家製フロマージュです)

アイスミルクティーとフロマージュです

ちなみに,フロマージュって何なんだろうと思って調べてみたら,
フランス語で「チーズ」のことらしいです。

————— キリトリセン 8X —————

さてさて。

テキストの第 6 章ということで,引き続き,自分メモです!

★ 静的解析ツール

 ・構文チェッカ
  → ソースプログラムが,言語で定めれらた構文に従って記述されているかを
    チェックします。

 ・コードオーディタ
  → ソフトウェア開発において独自に定めたプログラミング規約(コーディング規約)に
    対する違反を検出します。

 ・モジュールインタフェースチェックツール
  → モジュール間のインタフェース(例:実引数と仮引数の個数)の不一致など
    を検出します。

★ 動的解析ツール

 ・トレーサ(追跡プログラム)
  → 命令単位,あるいは,指定した範囲でプログラムを実行し,実行直後の
    レジスタの内容やメモリの内容など,必要な情報が逐次得られます。
    (プログラム中の誤り箇所を特定できないときに効果アリ)

 ・インスペクタ
  → 構造体のようなデータ構造の内容を容易に確認できるように,見やすい形で
    表示します。

 ・スナップショット(動的ダンプ)
  → プログラムの特定の命令文が実行されるごとに,指定されたメモリやレジスタの内容を
    出力します。なお,プログラムの異常終了時にメモリやレジスタの内容を出力するものを
    メモリダンプ(静的ダンプ)といいます。

 ・ガバレージモニタ
  → プログラム全体の経路のうち,テストでどの程度(%)カバーしたかという網羅率を
    測定します。

 ・アサーションチェッカ
  → プログラムの正当性を検証するために挿入されたアサーション(変数間の論理的に
    成立すべき条件)が実行時に成立しているかどうかを検査します。

★ テスト環境設定ツール

 ・テストベッドツール
  → スタブやドライバの生成など,プログラムテストの動作環境を整備します。

 ・テスト自動生成ツール
  → テストデータのデータ構造を与えることにより,自動的にテストデータを生成します。

comments

プロフィール(β版)始めました

書こう書こうと思って,ずっと放置していたプロフィールをようやく載っけました。
たいした内容ではありませんが,良かったら読んでやってください。
(左の「ひじきと□の馴れ初め」をクリックすると,続きが読めます)

さてさて,ソフトウェア開発技術者試験の進捗状況。

範囲の広い第 6 章,なかなか読みきれそうにないですが,
とりあえず,自分用のメモをアップしておきます。

 ・手続き型プログラム言語
  → 問題解決のための処理手順(アルゴリズム)を,1 文(命令)ずつ
    順を追って記述します。
    (例)C 言語,COBOL,Fortran,Pascal,PL/1 など

 ・関数型プログラム言語
  → 関数の定義とその呼び出しによってプログラムを記述します。
    再帰処理に向いていて,関数定義の中ですでに定義した関数や
    自分自身を使用した定義ができる,という特徴があります。
    (例)Lisp,APL など

 ・論理型プログラム言語
  → 述語論理を基礎とした論理式により記述されるプログラム言語です。
    「~であれば,…である」という推論のような記号処理を必要とする問題に
    適しています。
    (例)Prolog(人工知能の研究開発で使用されています) など

 ・オブジェクト指向型プログラム言語
  → データ(属性)とそのデータに対する手続き(メソッド)を 1 つにまとめた,
    「オブジェクト」と呼ばれるものが基本となるプログラム言語です。
    (例)C++,Java,Smalltalk など
   

手続き型プログラム言語とオブジェクト指向型言語には触れたことがあるのですが,
それ以外の言語はまったく知らないので,google で調べてみました。
(1 番下に,リンクが貼ってあります)

ついでに,Smalltalk の入門ページも載っけてみましたが,
この言語って,インタプリタ型(命令を 1 文ずつ解釈するタイプ)なんですねー!

うーん。

プログラミングって,ホント奥が深い!

————— キリトリセン 8X —————

★ Lisp 入門
http://wisdom.sakura.ne.jp/programming/lisp/index.html

★ Prolog 入門(注・PDF ファイルです)
http://bach.istc.kobe-u.ac.jp/lect/ps/prolog.pdf

★ Smalltalk 入門
http://www.oklab.org/program/gnu_smalltalk.html

comments

合格情報処理

本当は正式?に,レビューとして書きたかったのですが,
肝心の書籍が検索に引っかからなかったので,苦肉の策ということで。

合格情報処理の画像です

これは,ソフトウェア開発技術者用の書籍ではなく,
基本情報技術者や初級シスアド向けの対策本です。

書籍というより,雑誌なのですが,
イラストやカラーページも多いので,読み物としても楽しめます。

個人的に一番オススメなのは,この本についているおまけ!

重点をまとめた試験直前の対策用の小冊子とか,
私が基本情報技術者試験に挑戦したときにも,かなり重宝しました。

しかも,世の中的にも人気だったのか,
試験直前に発売される,11 月号とか 5 月号は,
どこの書店に行っても売り切れていて在庫すらない,ってときもあったくらいです…(汗)

KCG の 2F インフォステーションにもおいてある雑誌なので,
興味があれば読んでみて下さい!

————— キリトリセン 8X —————

★ 合格情報処理
http://www.gakkenpc.net/goukaku/top.html

comments

体験入学,好評実施中!

今日は,KCG のオープンキャンパス(体験入学)ということで,
久々に私もスタッフとして参加しました!

主に裏方メインでしたが,最後の個別相談辺りで,
コンピュータ関係への進学を考えている女の子とお話をしたのですが,
まだ,高校 1 年生なのに,自分の将来にしっかりとしたビジョンを持っていて,
私ももっともっと頑張らないとなぁ…と良い刺激を受けることができました!

いちおう,理系分野に身を投じた女子の 1 人である自分としては,
こういう女の子がこれからもっと増えていけばいいのになぁ,と切に思います。

そのためにも,そういう女の子たちのお手本になれるよう,
女子だからと差別されることなく,
持っている技術とか,努力した分だけ認められるんだっていうことを
身をもって証明していかないといけないですね!

もちろん,一朝一夕では無理な話ではあるのですが,
小さな小さな日々の積み重ねが大きな理想につながると思っているので,
資格取得も含めて,改めて頑張って行きたいと思います!

今日からテキストも,第 6 章の「システムの開発と運用」に突入です!

————— キリトリセン 8X —————

熱いことを言ったあとは,
ぬるいことを言ってクールダウン…ということで。

唐突な話ではあるのですが,
先ほど,思わぬところから,今年初のナシをいただきました。

大のナシ好きとしては,もうウハウハ(死語)です!

ナシの図です

…実は,この梨を切るために,数ヶ月ぶりに包丁を持っただなんて,内緒の話。

しかも,皮むき全般が苦手だから,
ピーラーを使ったなんて事実は,口が裂けても言えません(笑)

comments