ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

情報セキュリティ対策のための統一基準

2007-05-10 17:41:15 | Weblog

そうそう、
「政府機関の情報セキュリティ対策のための統一基準(第2版)」(案)
http://search.e-gov.go.jp/servlet/Public?CLASSNAME=Pcm1010&BID=060813959&OBJCD=&GROUP=

なんていうのがでているんだった。。

(関連ファイルの「意見公募要領」の「「政府機関の情報セキュリティ対策のための統一基準(第2版)」(案)」とかいてあるところから、PDFが読めて、その下の「関係資料、その他」に解説があるみたい)

一応、みとかないと。。かな?

さらに、
「セキュア・ジャパン2007」(案)に関する意見の募集
http://www.nisc.go.jp/active/kihon/sj2007.html

「セキュア・ジャパン2007」(案)(PDFです)があって、

さらに
「重要インフラにおける情報セキュリティ確保に係る『安全基準等』策定にあたっての指針」の改定案に関する意見の募集
http://www.nisc.go.jp/active/infra/shishin07.html

「重要インフラにおける情報セキュリティ確保に係る『安全基準等』策定にあたっての指針」【改定案】(PDFです)ってのがあるみたいだ。

いろいろあるなあ。。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

プログラムやテストデータを自動生成する方法 その4 仕様書の概要

2007-05-10 16:14:48 | 開発ネタ

雛形ソースを作成し、Excelの仕様書を用意すると、プログラムのソースやテストデータを生成する方法について説明するシリーズ、「プログラムやテストデータを自動生成する方法」です。

 第二回目で、インストールしました。
 このシステムでは、
  ・雛形
  ・仕様書
  ・ソースファイルを作るExcelマクロ
 が必要です。

 前回は、そのうち、「雛形ソース」について説明したので、今回は、仕様書についてです。




■仕様書のありか

 仕様書は、「ソースファイルを作るExcelマクロ」のファイル(Excelの場合、ワークブック、ないしブックといいますが)の中に、シートとして作ります。

 といっても、困るでしょうから、実際には、

・Excelで仕様書を作ってもらい
・その仕様書の中のシートを「ソースファイルを作るExcelマクロ」にコピー

というようにします。

これを手作業でやってもいいし、(インストールのときに削除した)前処理で
おこなってもいいです。




■仕様書の形式
 仕様書の形式は、だいたい、こういう形式のものを想定しています。

 項目1、項目2、項目3のように全体的な項目があり、
 その下に、詳細の部分があって、1レコードづつ、定義していくような感じです。

 たとえば、画面定義書の場合
 項目1、項目2のような全体項目に、画面名など、画面全体に関すること、
 詳細のところのレコードは、画面部品(リストとかテキストボックスとか)に関する事です(詳細項目1は画面部品名、詳細項目2は画面部品の型(種別)などなど)。

 テーブル定義書の場合
 項目1、項目2のような全体項目に、テーブル名など、テーブル全体に関すること、
 詳細のところのレコードは、テーブルの項目に関する事です
 (詳細項目1は項目名、詳細項目2は項目の型(種別)などなど)。

 SQLのデータの場合
 項目1、項目2のような全体項目に、データを入れるテーブル名など、テーブル全体に関すること、
 詳細のところのレコードは、入れようとするデータのレコードです
 (詳細項目1はそのレコードの1項目の値、詳細項目2は2項目の値などなど)。


 ただし、全体項目だけでおわるものや、
 全体はなく、詳細だけで終わってしまうものもあります。




■仕様書と雛形の関係

 全体項目は、雛形のタグ、$#$CELL 項目$#$を使って書き出します。

 詳細のところは、ループさせます。
 上図の場合、12行目から、レコード部分が始まっているので
$#$REP 12$#$#
$#$REPEND A$#$
とします。A桁(詳細項目1)が終わったら、ループ終わりとします
(もし、詳細項目1が空白のレコードができるのであれば、空白のない行をつくるか、
 あらたに行番号をつくって、そこを見るようにする)


 そして、それぞれのレコードの桁に関しては、上記繰り返しの中に
$#$KETA B$#$
 のように書いて、全部の行の内容を書き出させます。
 なお、この繰り返しの中で、$#$CELL 項目$#$をもちろん書いても良く、
 その場合、繰り返しのときには、同じ内容が書き出されます。

 以下のようなときに使います。
 セルB2にクラス名、12行目からループで、セルA桁が項目名、セルB桁が設定する名前のとき。
$#$REP 12$#$#
        $#$CELL B2$#$.$#$KETA A$#$ = $#$KETA B$#$
$#$REPEND A$#$




■そのような仕様書ではないとき

●その1 シートに書かれていない文字
 シートには書かれていないが、ある演算をして、求められる場合、
 演算をして、もとめた結果をシートのどこかに書き出します。

 たとえば、仕様書は全部小文字で、1文字目だけ大文字にしたい場合、
 その小文字がB2にあったとして、M2が空欄だったとしたら、

 そのセルM2に =PROPER(B2)

 とかき、仕様書のほうは

$#$CELL M2$#$

 のように、変換したい文字を書きます(ちなみにPROPERという関数は、1文字目だけを大文字にするExcelの関数です)。

 ただ、仕様書に直接、これをかくと怒られそうなので、
 コピーしたものや作業ファイルに書き出します。

 演算結果や、決まった文字($#$と出す)などの出力もこのようにします。
 くわしくは、もっとあとでやります。




●その2 詳細が2つ以上ある

 下図のように、仕様部分が2つ以上あるとき、
 2番目以降の開始行が決まっていれば問題ありませんが、
 普通決まっていません

(ちなみにこれは、DB定義の項目名とインデックスの一覧などで
 おきます)

 こういうときは、前処理で、以下のような作業用シートをつくります。

 つまり、横に移動して、開始行をあわせます(というか、固定化します)
そうすると、

$#$REP 12$#$#
        $#$KETA A$#$ = $#$KETA B$#$
$#$REPEND A$#$

$#$REP 12$#$#
        $#$KETA D$#$ = $#$KETA E$#$
$#$REPEND D$#$

のように、かけます。
 くわしくは、もっとあとでやります。




てなところで、仕様書に関する一通りの概要はおしまいです。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

開発の初めから順番に書いていってみる その40:プログラミング(2)決定表 1

2007-05-10 11:42:00 | 開発ネタ

 シリーズ「開発の初めから順番に書いていってみる」の続きです。
 設計手順には、要求分析、外部設計、内部詳細設計・プログラミング、単体テスト、結合テスト、総合テスト、運用テスト及び運用とあります。
 現在プログラミングで、決定表と自動生成の話題を書こうと思っています。
 今日は決定表の1回目、概要です。




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

決定表というものがあります。

情報処理試験で出るのですけど、
それ以外の場でも、仕様を明確にするために、昔は良く書きました。

こんなかんじ

30歳未満  Y Y N N
男性     Y N Y N
既婚者    N Y Y N
──────────────
帳票1を出力 - X - -
帳票2を出力 - - - X
帳票3を出力 X - - -
帳票4を出力 - - X -


ここ http://homepage2.nifty.com/mitsugumorita/98as/98asm03.htm
より引用(情報処理試験の問題らしい)

これは、4つの部分に分かれていて、線より上の左側の部分に条件がかかれ、
右側に、それが成立するときY,しないときNが書かれる。

で、左側の線より下にやることが書いてあって、上のY/Nでしめされたときに
やることが、どれかわかるように右側に書いてある
(ここでは、やるものをX)としている。

●ここで、場合をつくすとは。。。

 ここで、場合を尽くして書くには、
・一番初めの条件はYYYYYと半分までY、のこり半分をN
・二番初めの条件は
   1番目のYのところのうち半分がYYY・・、のこり半分をN・・
   1番目のYのところのうち半分がYYY・・、のこり半分をN・・
・3番初めの条件は
   2番目のYのところのうち半分がYYY・・、のこり半分をN・・
   2番目のYのところのうち半分がYYY・・、のこり半分をN・・
・一番下は、YNYNYNYNと、交互になる

つまり、上記の例の場合、3段だと
YYYYNNNN
YYNNYYNN
YNYNYNYN

5段だと

YYYYYYYYYYYYYYYYNNNNNNNNNNNNNNNN
YYYYYYYYNNNNNNNNYYYYYYYYNNNNNNNN
YYYYNNNNYYYYNNNNYYYYNNNNYYYYNNNN
YYNNYYNNYYNNYYNNYYNNYYNNYYNNYYNN
YNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYN

になるはずです。

(チェックするとき、下からみていくとかんたん、
 一番下はYNYNYNYNと、交互、
 下から二段目はYYNNYYNNYYNNと2つごと(2の1乗ごと)、
 下から三段目はYYYYNNNNYYNNYYNNと4つごと(2の2乗ごと)、
 最上段は、Y半分、N半分になっていけばOK

●つまり、例の場合
 場合をつくしていないです。
 たとえば、全部Yつまり、
  30歳未満の男性の既婚者
 というのは、世の中に存在しますが、ここでは書いていません。

 これは、わざとだと思います。
 (出題を難しくするために場合を尽くしていないんだと思います。
  場合を尽くしてしまうと、考えやすい)




■決定表における、一般的なプログラミング

 場合がつくされているときには、以下のように
 IF(1番上の条件== TRUE)
   IF(2番上の条件== TRUE)
     IF(3番目の条件== TRUE)
        YYYをやる
     ELSE
        YYNをやる
          ENDIF
      ELSE
     IF(3番目の条件== TRUE)
        YNYをやる
     ELSE
        YNNをやる
          ENDIF
   ENDIF
     :
     :


のように、IF文の入れ子にすることで、表現可能ではあります。
ただし、条件が多いと、プログラムがすごく長くなってしまいます。

そして、一番問題なのは、上記のように場合が尽くされていないとき
(そのような仕様書は来る。場合を尽くす必要がないときなどで、
 それには、条件が従属している、たとえば、雨が降っていて、
 土砂降りのときというような場合、晴れの土砂降りはありえないから
 というようなケースや、絶対ありえないケース
 男性でかつ子供を産んだ経験のある人とかは、かかれていない場合がある)

下手にIF文の入れ子を作ると、想定外の条件が成立してしまったりします。




●IF文の入れ子を防ぐ、一般的方法
そこで、こういう方法を良く使います。

上記の例だと
if ( ( age <30 ) &&= 30 ) &&
     ( seibetsu == SEIBETSU.OTOKO ) &&
     ( kikon == true ) )
{
   //NYYの処理
      System.out.println("帳票4");
      return;
}

if ( ( age >= 30 ) &&
     ( seibetsu != SEIBETSU.OTOKO ) &&
     ( kikon == false) )
{
   //NNNの処理
      System.out.println("帳票2");
      return;
}



というふうに、条件部分を1つ1つ並べてしまう方法です。
こちらのほうが、仕様書と一致するため、間違いが少ないです。
このように、ドキュメントと、プログラムをできるだけ一致させるほうが
間違いが少ないし、特に仕様書が矛盾していたり、条件が足りないときに、
書き手と、プログラムの誤差が小さくなります。




で、さらに、「自動生成するための、もっと差が少ない方法」というのがあります。
決定表のYNと、やる内容をそのまま書くことにより、
仕様書をそのまま写せばできるようにするものなのですが、
それについては、このシリーズの次回に書きます。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

コカコーラ社にとってGoogleは眼中にない

2007-05-10 03:13:50 | Weblog

ここのスラッシュドットニュース
検索誘導テレビCMのキーワードに「(^^)」が登場
http://slashdot.jp/articles/07/05/09/0755233.shtml

によると(以下斜体は上記サイトより引用)


続きはウェブで」とばかりにキーワード検索を促すテレビCMが昨年あたりから流行していますが、コカコーラ社のCMで「(^^)」を検索キーワードに使ったものが登場しました。


で、検索結果ですが


試しにYahoo! Japanで「(^^)」を検索すると、「次の条件に一致する情報は見つかりませんでした」と何もヒットしませんが、広告枠にはしっかりと「コカ・コーラ×モバゲーTOWN」が現れるようになっています。これはナルホドという感じです。
しかし、Googleで検索してみると……何も出ません(^^)。コカコーラ社にとってGoogleは眼中にないのでしょうか(^^)。



ちなみに、\(^o^)/をGoogleで検索するとIOデータがでてくるの!




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする