[三流君]/ [VBAで楽しく]/ [基本設計書/仕様書のお話]/ [テスト仕様書のお話]/ [関数仕様書のお話]

仕様書 書く側 と 受取り側(要求仕様書、基本設計書、詳細設計書)

仕様書と言うか、設計書というか。まず名称・呼び名からしてもめたり
先に作る、イヤ納品物として後から作る。診断書〜、たんなる厚さ稼ぎ、、、
動いている最新ソースプログラムが仕様書だぁ とか 更新されずに腐っていたり、
仕様書は頭の中にあります、、と、真顔で言い放つ若者プログラマーが居たり、
仕様書・設計書のお話は、話題が多いので、参考程度に読んでください。

プログラマー愚痴系記事の[仕様書・設計書関係の話]もヨロシク。

仕様書・設計書のサンプル

よく、質問で、例題・サンプルがほしいと言われるので、フォーマットを整えてませんが、サンプルの仕様書関係は:[IE_GET_TABLE_0316.zip]←今回作ったサンプルの IE_GET_TABLE_0316.xls です。
サンプル作成履歴は→[IE Webの表取り込み]です。
1画面の処理なので、あまり参考となりませんが↑もあわせて見てください



ここから過去に書いたメルマガの記事

こんにちは、Ken3です。

/* * 1.今回のキッカケ */

あんまり気にすること無いんだけど、ログ取ってると気になります。 http://www.ken3.org/cgi-bin/cnt/log100.asp で、リンク元の検索キーワードを拾ってると、 仕様書でヒットした来場者がタマに来てます。 サンプルプログラムを一生懸命書いてるけど、 実際は仕様書が在って、そこからプログラムだしなぁ・・ と初心に帰って、VBA系のメルマガで仕様書から作りハジメマシタ。 [No.66 Access ユーザーマスターのチェックとメニュー切り替え] http://www.ken3.org/backno/backno_vba14.html#66 いつものパターンで、一人n役で書きます。 ※流し読みして下さいね。 関連項目?仕様書関係 [関数仕様書のお話] [No.204 不具合の連絡を受け バグ票の作成とテスト仕様書について] [動画 かなりいい加減な設計書] もヨロシクです。

/* * 2.初期段階、大まかな要求を聞く */

案件在ったら、即技術者連れて打ち合わせの会社もあれば、 見積もり提案活動までは営業さんがやったりと会社によって様様だと思います。 ※まったくウチの技術者は/営業は・・・といろいろと不満も在ると思います。 とある入力センターに打ち合わせに向かいました。 ※作り話だよ 客先担当者のお話 >私の希望は、アクセスの画面を開いたときに、フォームが出てオペレーターは入力の >み、パスワードを持つ担当者が、検索、修正ができるようにしたいと思っています > >その場合、オペレーターに自分が入力したデータだけを打ち出させて、目検してもら >いたいのですがその日、自分が入力したデータだけを打ち出すことができるでしょう >か --- そんなシステムを作りたいかぁ。 出されたお茶を上司より先に手をつけながら、フト考える。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~オイオイ(笑) あんまり話したくないけど、沈黙が続くのもイヤだしなぁ。 三流プログラマーKen3 まずは、管理者とオペレーターで使える機能に制限を持たせたいんですね。 管理者の機能は ・ユーザーマスターのメンテナンス ・検索と修正機能 ・納品用の印刷や納品用CSV作成などの出力機能 オペレーターの機能は ・データの入力機能 ・入力データの目検用の印刷機能 共通機能は、 ・ログイン画面 こんな感じでいいですか? 口頭で速射砲のように想像した機能を話す。 >あの〜、何を言っているのか?サッパリなんですが?イメージが沸かなくて。 こっちもサッパリわかんないよ、、もっと詳しく聞かないと、、、 と掲示板ならケンカ?売るんだけど(怖いよね掲示板やMLって)、 仕事を貰う立場なので横の営業は無視して話を続ける。 そうですよね(苦笑しながら)※笑顔でかわすって必要ですよたぶん(笑)、 では、次回の打ち合わせの時、案を作って持ってきます、 あっ、その時までに入力するデータの項目とサイズを教えてもらえませんか? あと、差し障りが無ければ実際に入力する伝票を次回お借りしたいです。 それと、 >えっ、まだあるの? できたら集計印刷のイメージを教えてもらえると助かります。 次回の打ち合わせに私が用意するもの ・システム化の案 ・概算見積もり お客様に用意してもらうもの ・入力データの項目とサイズ、実際に使用している伝票 ・集計印刷のイメージとレイアウトはラフな手書き 次回の打ち合わせは3日後の午後はご都合のほうは? それとも事前にFAX送りましょうか? >いいですよ、見積もりと提案3日後に聞きましょう 作成中に質問あったら名刺のE−Mailに問合せしても平気ですか? >はい、大丈夫ですよ やりやすいお客さん ~~~~~~~~~~~~~~~~~~ システムの全体像をラフながらまとめている(打ち合わせの時資料が初回からある) 予算取り、社内の根回しが済んでいる(システム化に前向き) やりにくいお客さん ~~~~~~~~~~~~~~~~~~ 何をしたいかがわからない(笑) 夢のシステムを語ってくれるがコンピュータ化は難しいとクギをさすとむくれてしまう やりにくいシステム屋との打ち合わせ風景 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ とにかく黙っている、話さない(会話が無い) 専門的な話を始める 打ち合わせの議事録、好きですか?嫌いですか? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 議事録作ってメールでまわせ、、そんな指示を受けた時、あなたの反応は? 必要性は感じつつ、チッオレ様が作るのかよ/面倒だなぁ 不用紙のムダだから適当に作るか・・・なんて思ったアナタ、 打ち合わせを思い出しながらまとめるとやることや聞き漏らしたことがわかるので、 議事録作成は嫌いだけど作ったほうがいいですよ。 今回の決定事項 ^^^^^^^^^^^^^^ ・特に無し(無駄な時間を過ごした←とは自分の日記に書いてね) まずは、決定した議題は必要かなぁ。 えっ、そんなの書いてても次回に神様(お客様)の一声でくつがえるって? でも決定事項は確認のメモだと思って書いておいてね。 次回持ち越し、検討項目 ^^^^^^^^^^^^^^^^^^^^^^ 今回決まらなかったことを書きます。持ち帰って双方検討する事柄など。 例では >次回の打ち合わせに私が用意するもの >・システム化の案 >・概算見積もり >お客様に用意してもらうもの >・入力データの項目とサイズ、実際に使用している伝票 >・集計印刷のイメージとレイアウトはラフな手書き の部分を議事録に載せる、まぁ自分の作業予定だと思って書いてよ。 次回打ち合わせ予定 ^^^^^^^^^^^^^^^^^^ ヒマな担当者だと楽なんだけど、 大きな予算を動かせたり、重要システムの担当者 中小企業だと社長さん直接なので、 次回の打ち合わせの日時決めれたら決めたほうがいいです。 合わせて、見積もり提出の期限も聞きましょう。 打ち合わせたのが木曜日で相手の会社が月曜日午前中全体ミーティングの会社だと、 余裕を見て週明け提出すると、さらに一週間決済まで待たされたり・・・ 作業のタイミングを合わせる意味でも聞いておいたほうがいいですよ。 日時・場所・参加者(敬称略)なんてのは、 ムダにキーボード打つだけだからイラナイ(うそです)

/* * 3.要求仕様をまとめる */

基本仕様/要求仕様をまとめる 機能概要 ~~~~~~~~ 管理者は、 ・ユーザーマスターのメンテナンス  オペレータと管理者のマスターを登録・修正・削除する機能 ・検索と修正機能  データテーブルからデータの検索、修正を行う機能 ・納品用の印刷や納品用CSV作成などの出力機能  リスト(紙)の出力と納品データ(CSV)の作成機能 を操作 オペレーターは ・データの入力機能  データを入力する(登録機能) ・入力データの目検用の印刷機能  登録されたデータの確認リストを印刷する  ※各担当者、自分が入力した分のみリストを出力する を操作 共通機能 ・ログイン  管理者とオペレータの切り替えが起動時のログイン画面で出来ること。 と日本語で書いててOKかなぁ。チョイラフ過ぎだけどカンベンしてね。 ページ数稼ぎのオマケは動作環境 OS:Windows 使用アプリ:MS Access2000 開発言語:VBA とか、書いておけばOKかなぁ。 要求仕様書/基本設計書に入れるか、詳細設計に入れるか微妙だけど、 大体1機能1画面かサブ入れて2・3画面なので、 画面の流れと一緒に機能を説明すると、 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ お客さんもなんとなくイメージつかんでくれるよ 画面の遷移図を作成する ~~~~~~~~~~~~~~~~~~~~~~ まぁ、1機能1画面だから機能一覧と似ちゃうけど Windoes起動   ↓ xxxx.mdb をダブルクリックして起動する ログイン画面の表示 |   +----- 終了ボタン Accessの終了 | +----- ログインボタン データチェック後、       管理者メニュー ・・・ (A)       オペレータメニュー ・・(B)       どちらかのメニューを表示する 管理者メニュー | +----- マスターメンテナンス マスターメンテ画面を起動 | +----- 管理帳票印刷 管理帳票印刷画面へ | +----- CSV納品ファイルの作成 納品ファイル作成画面へ | +----- 作業終了  管理者メニューを閉じてログイン画面へ オペレータメニュー   | +----- データ入力 データ入力画面の表示 | +----- 目検 入力データを印刷する | +----- 作業終了  オペレータメニューを閉じてログイン画面へ 画面をさらっと書いたら、 使わないシステムはまず無いと言われる、ファイル関係かなぁ。 ファイル仕様 ~~~~~~~~~~~~ ページ稼ぎの一覧を作成して MST_USER ユーザーマスターテーブル T_DATA 入力データ管理テーブル ユーザーマスターテーブル 概要 管理者・オペレータをログイン処理で判断するために、 ユーザーID、パスワード、管理区分をが保存されている 作成:システム管理者がユーザーマスターメンテで作成 使用:ログイン機能で使用 入力データ管理テーブル 概要 入力原票のデータが保存される 付帯項目として入力オペレータの情報/入力日付を持つ 作成:オペレータの入力処理 使用:入力、印刷、CSV作成・・・・ 出力(印刷)帳票 ~~~~~~~~~~~~^~ 目検用確認リスト ・・・・ オペレータが入力データを確認するためのリスト 納品用リスト ・・・・・・ 規定フォーマットに印刷する納品用の成果物 [ 目検用確認リスト ] 概要 オペレータが入力した自分の分だけをリスト印刷したもの。 入力完了後にオペレータ自身が出力、入力票(原票)と目で確認する >こんな感じで書いてると、では?確認してミスを見つけたら?どうするの? >なんて疑問が浮かんでくる、浮かんできたら質問・確認項目に入れておく >実際に自分が業務を進めていたらどうなるか?想像しながら書く [ 納品用リスト ] 概要 データと一緒に納品する印刷物(規定フォーマットに印刷する納品用の成果物) 印刷範囲は作成したCSVデータと一緒 >なんて一行で書いてるけど、ここでも疑問が発生してくるよね >お馬鹿が納品前にコーヒーこぼした? >や >客先で紛失、再出力してほしいと2・3日後に再出力の依頼が来た時? >再出力の処理は必要か? ※概要をまとめている時、再出力処理の必要性に気が付いたりする。  まぁ、再出力は最低限の機能といえばそれまでなのだが(笑)  作成前の設計書の重要性、なんとなく理解できましたか?

/* * 4.詳細の設計 */

詳細設計 ~~~~~~~~ プログラムの作成開始のレベルまで落すのが理想です。 テーブル(ファイル)フォーマット ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ データベースの形式、物理格納場所、レコード長なんて昔ながらの項目があるけど、 シンプルに、必要な項目があればOKかなぁ。 ※会社にもよると思います。  こんなのワープロ化するなら、Accessでテーブル作って、  そのまま印刷、それを設計書にするのもアリですが、、、。 MST_USER ユーザーマスターテーブル F_USER_ID Text(10) 10文字まで、GusetやA001などのコード 重複不可 F_NAME Text(20) ユーザーの名前 小林君や遠藤君 F_PASS Text(20) パスワード F_KUBUN True/False True管理者、False一般オペレータ T_DATA 入力データ管理テーブル F_NO オートナンバー   ・   ・  客先から後で聞く   ・ F_INPUT text(文字型)  入力したユーザーのID 画面レイアウトと動作仕様 ~~~~~~~~~~~~~~~~~~~~~~~~ [ログイン画面 F_LOGIN] 画面イメージ USER [ ________ ] ▼ コンボボックスで選択 PassWord [ ********** ] ┌────┐ │ログイン│ └────┘ ┌──────┐ │システム終了│ └──────┘ ユーザーを選択、パスワード入力後、ログインボタンを押してください。 動作仕様 コントロール名   処理内容 ログインボタン   USERとパスワードが合っているかチェックする           エラー時:メッセージを表示して再入力 正常時:管理者フラグを判断して次のメニューを表示               a.管理者メニュー b.オペレータメニュー システム終了ボタン 終了確認メッセージを出力し、はいの時、Accessを終了 >※動作仕様は、イベントに対応して書いてあげると、作るほうは楽かなぁ。 よくあるコード入力後のチェック処理などは、 商品コード入力 入力後(データ更新後)、商品マスター検索、データチェック とか書いておくと、作りやすい [管理者メニュー画面 F_MENU_KANRI] ┌────────┐ │ マスターメンテ │ └────────┘ ┌────────┐ │ 管理帳票印刷 │ └────────┘ ┌────────┐ │納品ファイル作成│ └────────┘ ┌────────┐ │ 終 了 │ └────────┘ [オペレータメニュー画面 F_MENU_OP] ┌─────┐ │ 入 力 │ └─────┘ ┌─────┐ │目検用印刷│ └─────┘ ┌─────┐ │ 終 了 │ └─────┘ 印刷(帳票)レイアウト ~~~~~~~~~~~~~~~~~~~~~~ イメージを貰っていないのでまだ。 まぁ、ラフに書いて、打ち合わせ後に修正するか。 レイアウト、、、これも作ってから現物を設計書に添付するほうが楽だったり、、 でも、現物を作る人(作った人)は、何見て作ったのか疑問があるが・・・

/* * 4.終わりの挨拶(次回はアルのか?(爆)) */

よくわからなかったけど、何か言いたかったの? ・打ち合わせの進め方を少し ・設計書は始めに書くんだよ、納品後の処理じゃないよ って話でした。 読み直すとあれ?何の話だったのだろう? でも、せっかく書いたから発行しちゃえ(爆) 何か読者の心に残れば、うれしいです。 *私の独り言をうまく消化してくださいね。 もう四月も終盤かぁ、そろそろ派遣かなぁのKen3でした。 ~~~~~~~(↑オイオイ)


質問・感想を送る

作者に感想・質問/要望を送る(気軽に質問・感想書いてください)
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい

サンプル 2009-02-17 三流解説 VBA IE デバック用 Webページのソースを表示する プログラム

Excel UserForm に WebBrowserを貼り、
デバック用のツールの作成を開始しました。
最新情報と作成履歴は→[更新履歴と最新を表示]

ユーザーの要望を聞き、設計を開始する
システム名	デバック用 Webページのソースを表示する プログラム

客先、ユーザーからの要望・希望を聞く

え〜と(おぃおぃ)、とある事情から、
htmlソースの表示処理にチャレンジしてみたいと思います。
※システム化の背景を知らないと変な設計になるよ
 (よく聞くことば、[ボタンのかけ違い] ← 双方のプライドを傷つけない便利な言葉?)

持ち帰った、要求・要望をシステム化するイメージを作る。



いいかげんな 基本設計

基本設計・要求設計を兼ねて、 ^^^^^^^^^^^^^^^^^^ システム名:デバック用 Webページのソースを表示する プログラム 概要: WebBrowserをExcel User Form に 貼り、 Webページの表示が完了したら、そのページのソースをテキストボックスに表示する。 必要な環境 : Excel2003 と Windows XP SP2 + IE7 作業日数・費用: 開発スケジュール: ↑こんな概要・要求設計だと、見積もり誤差が、、、あとあと、要求が増えないように(笑) さてと、発注されたら、詳細設計に入りますか。

さらにいいかげんな 詳細設計

詳細設計 ^^^^^^^^ ファイル一覧 : なし ファイルの設計は無し ファイルI/Oイメージ: 無し ファイル詳細 : 無し 画面一覧: F001 htmlソースの表示画面 ※ 画面遷移図: 1画面なので無し 画面詳細(入出力) F001詳細 画面名:htmlソースの表示画面 処理概要: URL後、Webページを表示、表示したページのソースをテキストボックスで表示する。 Excel UserFormに下記のイメージでFormを作成する URL:[ txtURL : XXXXXXXXXXXXXXXXXXXXXx ] ------------------------------ | WebBrowser1 | | WebBrowserコントロール | | | | | | | | | ------------------------------ HTMLソース [ テキストボックス複数行 ] [ txtHTML_SRC ] [ ] [ ] [ ] ------------------------------------ オブジェクトの説明(入力・処理・出力) フォーム全体: 初期処理: 初期状態として、 txtURLに www.google.co.jp をセット WebBrowser1 表示を www.google.co.jp にする 終了処理: 特になし txtURL: オブジェクトの種類: テキストボックス 機能:処理中のURLを表示する    ユーザーが直接入力して、処理するURLを指定可能とする。 WebBrowser1: オブジェクトの種類: WebBrowser 機能:表示が完了したら(表示完了のイベントで)    ア.表示したURLを txtURLへセット イ.現在表示中のHtmlドキュメントのソースをtxtHTML_SRCにセットする txtHTML_SRC: オブジェクトの種類: テキストボックス ※マルチライン 機能:ソース表示用、結果表示用    ユーザーがコピーするなり、お好きなように。    ※ここのソースを変更しても、特に何もしない(WebBrowserには反映させない)

サンプル2 IE Webの表取り込み

サンプル作成履歴は→[IE Webの表取り込み]です。
1画面の処理なので、あまり参考となりませんが↑もあわせて見てください

ユーザーの要望を聞き、設計を開始する

Webクエリーを使え と お叱りを受けそうですが、
今回、Webページの表 を Excel シートに取り込みたいと思います。
目的は : Webページ から 目的の表をシートに取り込む。
(日本語で書くと、なんて幅が広いんだろう・・・)

いいかげんな 基本設計

基本設計・要求設計を兼ねて、 ^^^^^^^^^^^^^^^^^^ システム名:Webページの表を取り込む サンプルプログラム 概要: Excel と IE を使用して、Webページを表示させ、表(TABLE)をシートに取り込む。 要求仕様・機能:    1. URLを入力したら、そのページが表示される    2. 指定した 表をシートに取り込むことができること。 必要な環境 : Excel と IE (← ここに わざと バージョンとOSを今回は書きません 後のお楽しみ) 作業日数・費用: 開発スケジュール: ↑こんな概要・要求設計だと、見積もり誤差が、、、あとあと、要求が増えないように(笑) さてと、発注されたら、詳細設計に入りますか。 03/16 VBA IE 表の取り込み 基本設計書 要求設計書 http://www.youtube.com/watch?v=a3aTClOAlUQ

さらにいいかげんな 詳細設計

詳細設計 ^^^^^^^^ ファイル一覧 : なし ファイルの設計は無し ファイルI/Oイメージ: 無し ファイル詳細 : 無し 画面一覧: シート名:MENU (※画面は使わずにシートにボタンを配置、セルの値をパラメーターにします) 画面遷移図: 1画面なので無し (まぁ、IEが起動して、表を取るんだけど。。。) 画面詳細(入出力) オブジェクトの説明(入力・処理・出力) C8 : 目的のURL C10 : 表の1行目 タイトルの識別文字列 (TH見出しや TD表のデータ で キーにできる文字列) 機能の説明 機能001-01 URL表示機能 : Web表示 の ボタンが押されたら、 C8のアドレスを使い ページを表示する。              ※ユーザーがページ項目を確認するため。確認してC10にセットしたり。 機能001-02 表の取り込み機能 : 表の取り込みボタンが押されたら、 C8のアドレスが指すページを表示し、C10に設定された文字列を条件にして、 表の1行目 TH,TDのタグから目的の表を割り出し(判断して)、表をシートに取り込む。 03/16 VBA IE 表の取り込み 詳細設計書 テスト仕様書 http://www.youtube.com/watch?v=vNP1XZmdhBQ

分類別に記事を紹介

分類別といっても、あまり分類別にまとまっていないのですが、、、↓

よく使う操作方法

F1でヘルプを見たり、デバック時にDebug.Print使ったり、イミディエイト ウインドウで簡単な確認したり。
なれると当たり前に操作している方法が↓かなぁ。
[プロパティ、メソッドを探る方法]・・・基本のF1を押してヘルプを見る方法など
[実行時エラー、あわてないでデバックを押す]・・・デバッグの流れを簡単に(ハマった時はツライけど)
[イミディエイト ウインドウ と Debug.Print]・・・プログラム作成時に便利なイミディエイト ウインドウ
[参照設定のお話]・・・設定すると便利な(設定しないと使えない)、参照設定のお話
[サンプル 実行方法]・・・Alt+F11 や ツール--マクロ から VBAの編集画面を開き F5で実行?

仕様書のお話(XXX設計書)

イロイロな仕様書・設計書を各工程で使っていくのですが、その一部を書きました。
[基本設計書/仕様書のお話]・・・仕様書・設計書を書いてますか?簡単な流れを書きました。
[テスト仕様書のお話]・・・テストデータ XXXXを入力したら、YYYYになる ほか
[バグの連絡票とテストケース]・・・バグ・不具合の連絡を受けたら 原因を書き 処置する。
[関数仕様書のお話]・・・仕様書は頭の中にありますでいいの?かよ?
[作業の流れ 入力・処理・出力ほか]・・・フォルダー選択を例に仕様書と流れを解説

プログラムのお話

[作成時 Ctrl+C Ctrl+Vの前によく考えよう]・・・コピープログラムの落とし穴?
[関数に汎用性を持たせる、共通に使える関数作り]・・・共通に使える関数(財産)を作りましょう

Access関係:アクセス側からのアプローチ

[AccessのUserForm/サブフォームを操作]・・・アクセスでフォームを使ったサンプルです
[Accessのレポートを操作]・・・レポートを操作してみました
[Access クエリー関係やその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です

Excel関係:エクセル側からのアプローチ

[Excel UserForm(ユーザーフォーム)を操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
[ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
[Excel関係 関数、その他]・・・その他Excel関係です

その他:VBAの共通関数やテキストファイルの操作など

[VBAでテキストファイル(*.txt,*.html,*.csv)の操作]・・・テキストファイルを使ったサンプルです
[VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます

blog:あまり更新していない作業日記 → [三流君の作業日記] と [通販商品の足跡] も よろしくお願いします。






[三流君]/ [VBAで楽しく]