• ベストアンサー

要求書を書く

このカテゴリであるべきか解りませんが。 様々な書籍を読んでいるうちに、上流工程に興味を持ち、「要求定義」というものがあることを知りました。結構むずかしいんだなぁと思いつつも、ある程度自分でも書けるようになっておきたいと思いました。 そこで見よう見まねで、1-2年くらい前に自分(個人で。実務経験は今でもなし)で掲示板プログラムを組んでみた時を思い出しながら纏めてみました。 「要求書」を作ってみたつもりなのです。「そもそも要求書になってない。要求書というのは...であるべき」とか「ここがダメなのでこうしたらいい」という意見をいただけますでしょうか? (ASP.NET。練習として作ってみたもので、しっかりしたWebSiteが作れないと思っていたこともありOS再インストールした時にいらねーやと思って削除してしまった) ================================= 掲示板システム 要求: ●投稿が出来る。 ●基本機能のみ搭載されており、プラグインを追加することで容易に機能拡張が出来る。 ●投稿文で各種タグが使える。タグについては管理者がモジュール単位で追加・削除できる。標準ではXHTML,SVG,MathMLを有効であるとする。 ●ユーザが管理側がフォーマットを限定することなく、好きな形で投稿情報を得ることが出来る。 ●複数のスレッドを作成できる。 ●メールアドレスとIDによるユーザー管理ができる。ユーザー登録の際、メールアドレスにメールを送信して認証する。 ●指定サイズ以下のファイルの投稿ができる ●掲示板プログラムのあるディレクトリより上の階層のファイル・ディレクトリにプログラムがアクセスすることがない ●投稿文を送信してから記事が反映されたスレッドを見られるようになるまで、『8秒ルール』に基づき、8秒以内とする

質問者が選んだベストアンサー

  • ベストアンサー
  • lawson
  • ベストアンサー率44% (29/65)
回答No.3

あと、もう一度、補足します。 ######################################################## 例えば...『XHTMLのDTDでは、複数の要素がそれぞれの役割ごとに纏められていますが small,big,b,i,tt,sub,sup,hrの各要素はPresentationモジュールに属していますが これらは見た目のための要素であるから、論理構造に基づくマークアップであるとは思いづらい。 よって投稿文中で使えないようにしたい』という感じです。 >・「ユーザーが・・・得ることが出来る」具体性が無く意味不明 ここも説明を省きました。私が以前作ってたものでいうと.... 『1スレッドの内容がXMLファイルで保存されているとして、そのXMLの構造がユーザーに公開されているとします ユーザーはXSLTファイルを自作し、専用のアップロードページでファイルをアップロードすると、 保存されているXMLファイルにXSLTファイルを適用し、変換して出力する。』というイメージです。 (でもこれは要求じゃなくて仕様かな、と思って敢えて省いたんですが) ################################################################# ベンダー側でシステムを受注して開発する側の 立場の人間がこの文章を見るとぶっちゃけ こういう感想を持ちます。 >・・・よって投稿文中で使えないようにしたい』 のくだりですが・・。 ぶっちゃけ、プログラムを組む人間にとって、 「small,big,b,i,tt,sub,sup,hrの各要素はPresentationモジュールに属していますが」 こんなことは何の関心もありません。 彼らの関心は、具体的にどの要素を制限すべき なのか? 制限する要素のリストを質問者さんにもとめてきます。 質問者さんが、忙しくて、いつまでも具体的な 回答をしないと、彼らは勝手にマスターテーブル をこしらえて、small,big,b,i,tt,sub,sup,hr だけデータ投入をしてそれを参照するロジックを 作るでしょう。 そして、「small,big,b,i,tt,sub,sup,hr」以外に なにがあるのか? 本当に「small,big,b,i,tt,sub,sup,hr」でよいのか は一切考慮しません。 ブーメランのように質問者さんにこの問題が帰ってきて、質問者さん自身がマスタテーブルのメンテナンスをすることになります。 よく、発注者側が作成するドキュメントに、 ○○、××などができる。 ▲■等がある。 などの記載があると、納期に追われる開発者が 作成した成果物には、○○、××、▲▲、■■以上の ものは、入っていません。 ○○、××以外になにが考えられるのか? ▲■以外になにが考えられるのか? 本当に○○、××、▲▲、■■で良いのか? 掲示板システムの目的は何か? それを達成するために必要なものは何か? そして、それらを構成するシステムに登場する データの構造に矛盾はないか(つまり、プログラムできる代物か?)? などの検討が甘いような人は本来、発注者よりも 開発者からはじめるべきだと、私は思います。

その他の回答 (2)

  • lawson
  • ベストアンサー率44% (29/65)
回答No.2

>>「基本機能」が何を指すのか不明(例えば投稿削除は?) >「基本機能」は、 >『ハンドル、メールアドレス、投稿文、パスワードを>入力すると、1スレッド用のファイルに出力される。 >ユーザーが削除をする際は削除チェックボックスをオ>ンにした上で、パスワードを入力するとファイルから>削除される。 >複数の投稿文からなるスレッドを複数保持(ファイルがある)ものとし、ユーザーが選択したスレッドの内容>を提供する。』ことである。 「ファイルに出力」とあるが、ファイルに限定する必要もないかも。というより、投稿文についての 仕様が曖昧なのでここでファイルと限定する 方がおかしいですね。 できれば、この段階で、投稿文と、スレッドと、ユーザについて、 クラス図をスケッチしてみてはどうでしょうか? [ユーザ]------------------------------------ ハンドル string パスワード string メールアドレス string ------------------------------------------ [スレッド]------------------------------------ 作成者ユーザ(1人) [ユーザ] 投稿文(N個) コレクション型 ------------------------------------------ [投稿文]------------------------------------ 投稿者ユーザ [ユーザ] 投稿内容 [XXXXXX] ------------------------------------------ のイメージなのかな。 ただ、投稿内容のデータ型として、XXXXXXと、お茶を濁しました。 通常なら、stringでしょうが。 質問者さんはどうやら、この投稿内容のフォーマットや、 それに関するプラグイン機能などにかなりのこだわりがある と思われるのでこの段階では、まだ、お茶を濁さざるを得ないでしょう。 ●複数のスレッドを作成できる と、 ●メールアドレスとIDによるユーザー管理ができる。ユーザー登録の際、メールアドレスにメールを送信して認証する。 について、 の青写真が描けた気がします。 <<投稿する>>というユーザがシステムに対して行うアクション。 <<ユーザー登録する>>というユーザがシステムに対して行うアクション。 が考えられますね。 No2さんがおっしゃる。 >>画面イメージのラフスケッチがあるといいでしょう。 これについて <<投稿する>>と、<<ユーザー登録する>>について、 スケッチできそうな匂いがします。 画面のイメージが出来上がれば、 能力があるプログラマなら、これ以上詳細までおとさなくても とりあえず、お茶を濁した、投稿文のフォーマットと、プラグインを除く 部分については、かなり、期待通りのロジックが組むでしょう。 とりあえず、投稿文のデータ型としては、string型をラッピングしたものに しておいて、彼が開発している間に、 投稿文と、プラグインについての分析を質問者さんが行って あとで、投稿文のデータ型のクラス定義の実装を差し替えるという段取り がよろしいでしょう。 とりあえず、ここまで、 開発が終了した時点を<<第1フェーズ>>と呼んでみましょうか。。 文章だけでなく、システム内での主要なデータの構造と、 ユーザがシステムに対して行うアクションから想定される。 画面イメージのラフスケッチ等があると、 とてもわかりやすい気がします。 それとも、要求書が文章のみでなければならないと、 誰か偉い人が限定しているのでしょうか? 話かわって、 「1時間で10件」・・とありますが・・ この程度であれば、パフォーマンスに関してあまり神経を使う必要が ないと思われますので、殆ど考慮しません。 問題はさっきお茶を濁した。投稿文のデータ型の詳細と、 プラグインについてだと思いますね。 ######################################################## 例えば...『XHTMLのDTDでは、複数の要素がそれぞれの役割ごとに纏められていますが small,big,b,i,tt,sub,sup,hrの各要素はPresentationモジュールに属していますが これらは見た目のための要素であるから、論理構造に基づくマークアップであるとは思いづらい。 よって投稿文中で使えないようにしたい』という感じです。 >・「ユーザーが・・・得ることが出来る」具体性が無く意味不明 ここも説明を省きました。私が以前作ってたものでいうと.... 『1スレッドの内容がXMLファイルで保存されているとして、そのXMLの構造がユーザーに公開されているとします ユーザーはXSLTファイルを自作し、専用のアップロードページでファイルをアップロードすると、 保存されているXMLファイルにXSLTファイルを適用し、変換して出力する。』というイメージです。 (でもこれは要求じゃなくて仕様かな、と思って敢えて省いたんですが) ################################################################# 質問者さんは、マークアップ言語の分野に明るい人だと、想像できます。 ところで、この掲示板システムは、どんなユーザが、どんな目的で どんな内容を投稿するシステムなのでしょうか? 目的以前に、手段話が先行しているようですが? 汎用性を要求している割にはあまり具体性がみえません。 「汎用性を要求している割にはあまり具体性が見えない」という状況では 一向に話がすすまないように感じられます。 XSLTに関して、具体性が見えますが、それはこの掲示板システムのユーザが 自分が立てたスレッドの見栄えをカスタマイズすることで、 うれしいことがあるようにも感じられます。 投稿内容の論理的なセマンティクスと、見た目のカスタマイズを 分離した使い方をする掲示板システムはなんの目的で作るのでしょうか? 一見、どうでもよさそうな話ですが、これは、投稿内容のデータ構造の XXXXに強い影響を与える大事な部分です。 ここをおろそかにする限り、上記の <<第1フェーズ>>以降、プログラマはどう実装していいのかわからず、 開発が進みません。 ●ユーザが管理側がフォーマットを限定することなく、好きな形で投稿情報を得ることが出来る。 とありますが、ぶっちゃけ、ファイルサーバを別途もうけて、そこに 投稿文中でリンクをはれば、済む気がします。 その案でいくなら、クラス型[XXXX]はリンクを抽象化したオブジェクトを メンバとして持つのが良いかと思われます。 ●指定サイズ以下のファイルの投稿ができる リンクを抽象化するオブジェクトの振る舞いにサイズチェックの機能があるかな? そこはまだ、わかりませんが・・・。 いずれにせよ。投稿文のイメージが曖昧すぎます。 それ以外は、工夫次第で、第1フェーズまでの開発が可能だと思います。 以上。

  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.1

他人が読んだ時に、書いた人の意思が誤解やあいまいさなく伝わることが必要です。「これでよろしく」と開発を頼んで、自分の期待通りのものが出来上がってくるのか?がポイント。 書いてある範囲で気になるのは、 ・「基本機能」が何を指すのか不明(例えば投稿削除は?) ・プラグインによる拡張可能の範囲(どこまで出来るようにするのか)が不明 ・「モジュール単位」の意味が不明 ・「ユーザーが・・・得ることが出来る」具体性が無く意味不明 ・レスポンス時間を規定しているということはプログラム開発だけでなくサーバー機種選定も要求するということですか?いずれにせよ、トラフィックが秒間何件もしくは分間何件か決めないとレスポンス時間は決まりません。空いていれば2秒でも混んでいれば10秒かかるかも。データ量が増えてくれば時間も増えますね。 書いてないことでは詳細がまだまだ足りず、これだけでは開発できません。画面イメージのラフスケッチがあるといいでしょう。

noname#20378
質問者

補足

回答、ありがとうございます。 質問文の文字数の関係で多少省いちゃいまして(汗)、場所によっては「あー、やっぱり伝わらなかったかw」と思っています。 追記してみました。 >「基本機能」が何を指すのか不明(例えば投稿削除は?) 「基本機能」は、 『ハンドル、メールアドレス、投稿文、パスワードを入力すると、1スレッド用のファイルに出力される。 ユーザーが削除をする際は削除チェックボックスをオンにした上で、パスワードを入力するとファイルから削除される。 複数の投稿文からなるスレッドを複数保持(ファイルがある)ものとし、ユーザーが選択したスレッドの内容を提供する。』ことである。 >プラグインによる拡張可能の範囲(どこまで出来るようにするのか)が不明 はっきり言えば、『今【何を拡張すべきかは今は思いつかない】けれど、 機能が欲しくなったときに組みなおしを再要求したくない』というのが理由 今のところ考えているのは、投稿文内で使えるタグを追加するために...例えばXFormsプラグインを置くとか。 >・「モジュール単位」の意味が不明 例えば...『XHTMLのDTDでは、複数の要素がそれぞれの役割ごとに纏められていますが small,big,b,i,tt,sub,sup,hrの各要素はPresentationモジュールに属していますが これらは見た目のための要素であるから、論理構造に基づくマークアップであるとは思いづらい。 よって投稿文中で使えないようにしたい』という感じです。 >・「ユーザーが・・・得ることが出来る」具体性が無く意味不明 ここも説明を省きました。私が以前作ってたものでいうと.... 『1スレッドの内容がXMLファイルで保存されているとして、そのXMLの構造がユーザーに公開されているとします ユーザーはXSLTファイルを自作し、専用のアップロードページでファイルをアップロードすると、 保存されているXMLファイルにXSLTファイルを適用し、変換して出力する。』というイメージです。 (でもこれは要求じゃなくて仕様かな、と思って敢えて省いたんですが) >・レスポンス時間を規定しているということはプログラム開発だけでなくサーバー機種選定も要求するということですか? いずれにせよ、トラフィックが秒間何件もしくは分間何件か決めないとレスポンス時間は決まりません。 空いていれば2秒でも混んでいれば10秒かかるかも。データ量が増えてくれば時間も増えますね。 なるほど。実はこの質問文を書いた地点では 『初級シスアド勉強してた時に機密性とか完全性とかやったんで試しに並べてみよう。 見落としが減るかも、と思って並べ、余ったから述べておいた』というのが本音だったりします(汗。 尤も、投稿してから反映されるまであまり時間が経過しすぎてもストレスが溜まるので困るんですが。 当方環境はWindows XP Pro SP2,CPUがPentium4 3.0GHz,メモリが1GB、ネットワーク回線が12Mbit/s(ADSL、実際には4Mbit/sくらい出ている)ですが、 普通実際の業務でシステムをこういうシステムを発注するならもっとスペックが高いよなぁと思っています とりあえず、1時間で10件と想定しておくことにします。

関連するQ&A