初めまして。
趣味でc++プログラミングをしています。
文法などは一通り勉強し、
おもむろに真っ白からコーディングを始め、
メソッドの追加などを含む試行錯誤をしながら
簡単なものを作ることはできます。
今回質問させて頂きたいのは、
設計に関してです。
調べてみたところ、
やりたいことが決まったら
必要なクラスを洗い出し、
更にメソッドや定数など細かいことを
決めていくとのこと。
そこで疑問です。
メソッドや定数まで洗い出したあと、
そのメソッドやらは
誰がどのタイミングで使うかどうかは
設計書には組み込まないと
いうことでしょうか?
それともfor文やswitch文などの
処理まで更に細部まで
設計書に落とすのでしょうか?
設計書とは誰がプログラミングをしても
期待した処理が実装されるように
書くものだと思っていますが、
洗い出したクラスやメソッドを
使うタイミングを決めないと
それは満たされない
という認識でいて、
前に進めずに困っています。
更に、設計書ですら誰が作っても
同じ、又は限りなく同様の物に近いものが
できると思うのですが、
設計前に、簡単なフローなども
描いてみたりしたのですが、
それをインプットにして
設計書を作ったときに、
上記を満たすイメージが全く湧かず、
途方にくれています。
以上、長くなりましたが
⑴ 設計書のレベルとは
⑵ 設計書を作るときのインプットとは
⑶ 設計書を作るときの効率的な方法
過去ログなども探して見たのですが、
求めている回答は
見当たらなかったので
質問させていただきます。
存在しているようでしたら、
お手数ですが教えてください。
また、グーグル先生にも聞いて見たのですが
わからなかったので
参考になるサイト等もありましたら、
是非教えてください。
最後に、この質問自体が
見当違いでしたら、申し訳ありません。
以上、長文失礼致しました。
よろしくお願いします。
※開発環境等は、省略させて頂きます
c++における設計について
Re: c++における設計について
設計書の定義が曖昧ではあるが、オブジェクト指向という趣旨での質問であるならば、その設計書が指すものは"UML"だろうか?
参考サイト http://www.itsenka.com/contents/development/uml/
C++に限った事ではないものですが。
これを嫌うエンジニアも多いです。
ただ、計算機科学的な話をすると、実はUMLでも厳密には表現できない世界は存在するとは言えます。(この件に関しては、一旦頭の片隅に入れておく程度にして、UMLの理解を深める事を優先するべきかとは思いますが。)
参考サイト http://www.itsenka.com/contents/development/uml/
C++に限った事ではないものですが。
これを嫌うエンジニアも多いです。
ただ、計算機科学的な話をすると、実はUMLでも厳密には表現できない世界は存在するとは言えます。(この件に関しては、一旦頭の片隅に入れておく程度にして、UMLの理解を深める事を優先するべきかとは思いますが。)
Re: c++における設計について
> 設計書
ってのは,どうすればいいの? という事柄に対する一般解(?)が存在するのか否か知りませんが……
あなたが 【誰向けに どの程度のレベルの物を 出さねばならないのか?】
という背景条件が存在するかと思いますので,
何があれば良いのかを判断できる相手(その設計書を必要とする相手? その設計書を用意しろとあなたに指示した人?)に対して,
どのようなものがあれば必要十分かを問うべきではないでしょうか.
(ネット検索結果や,こういった掲示板等で,誰かが「設計書ってのは,こうするのですな」とか書いていたとしても
それがそのままあなたの置かれている状況に合致するとは限らないのではないかな,と.)
ってのは,どうすればいいの? という事柄に対する一般解(?)が存在するのか否か知りませんが……
あなたが 【誰向けに どの程度のレベルの物を 出さねばならないのか?】
という背景条件が存在するかと思いますので,
何があれば良いのかを判断できる相手(その設計書を必要とする相手? その設計書を用意しろとあなたに指示した人?)に対して,
どのようなものがあれば必要十分かを問うべきではないでしょうか.
(ネット検索結果や,こういった掲示板等で,誰かが「設計書ってのは,こうするのですな」とか書いていたとしても
それがそのままあなたの置かれている状況に合致するとは限らないのではないかな,と.)
オフトピック
> for文やswitch文などの処理まで更に細部まで設計書に落とす
「ここの部分の具体実装にはswitchを用いること!」とかいう指示文書をせっせと作ることを考えておられるのでしょうか?
個人的には誰が得するのかわからん話です.
(「ものすごい細かいLVの話のフローチャート」ですら,分岐やループに用いる具体的な言語文法を限定しないと思う.)
完全な実装詳細まで全てを決めるけど絶対に自分自身ではコードを書かない人 と 言われたとおりにひたすらタイピングしてコードを生成する人
という分業体制を想定?
「ここの部分の具体実装にはswitchを用いること!」とかいう指示文書をせっせと作ることを考えておられるのでしょうか?
個人的には誰が得するのかわからん話です.
(「ものすごい細かいLVの話のフローチャート」ですら,分岐やループに用いる具体的な言語文法を限定しないと思う.)
完全な実装詳細まで全てを決めるけど絶対に自分自身ではコードを書かない人 と 言われたとおりにひたすらタイピングしてコードを生成する人
という分業体制を想定?
Re: c++における設計について
設計は突き詰めていけば、
「使うひとがその設計書を見ながら実際のモノが完成できればOK」
です。
で、実際はどこまで作り込めばいいのか…とお悩みになっていらっしゃいますね。
まず考えることとして「誰がその設計書を見るのか」を決める必要があります。
その人に見せてモノを完成させられるレベルまで設計することができたらゴールです。
しかし、人や会社によっては詳細まで詰める必要があったりします。
それでもまずは概略レベルで設計書は作らないと始まらないです。
オブジェクト指向であればUMLを使うべきなので、例えば以下のような流れで作ります。
①ユースケース図
「もし○○なら■■で△△する」など仕様を日本語ベースでかく
②クラス図
ここは人のセンスでいくらでも変わります。
必要そうなクラスをいくつか洗い出し、ユースケース図の仕様で必要と判断できたデータ(属性)やメソッド(操作)を
クラス毎に追加していきます。
③シーケンス図
シーケンス図は、各メソッド毎に作ります。
そのメソッドが、どの様な処理で、またどのオブジェクトに影響を及ぼすかを考えて設計します。
この際には分岐や繰り返しなども含めてなるべく細かく処理を決めていきます。
しかし、あくまで何がしたいか判ればいいので、コードを処理内容に書くなどはせず、まずは日本語で書いてみてください。
設計書が必要な大元は「伝わるかどうか」です。
「使うひとがその設計書を見ながら実際のモノが完成できればOK」
です。
で、実際はどこまで作り込めばいいのか…とお悩みになっていらっしゃいますね。
まず考えることとして「誰がその設計書を見るのか」を決める必要があります。
その人に見せてモノを完成させられるレベルまで設計することができたらゴールです。
しかし、人や会社によっては詳細まで詰める必要があったりします。
それでもまずは概略レベルで設計書は作らないと始まらないです。
オブジェクト指向であればUMLを使うべきなので、例えば以下のような流れで作ります。
①ユースケース図
「もし○○なら■■で△△する」など仕様を日本語ベースでかく
②クラス図
ここは人のセンスでいくらでも変わります。
必要そうなクラスをいくつか洗い出し、ユースケース図の仕様で必要と判断できたデータ(属性)やメソッド(操作)を
クラス毎に追加していきます。
③シーケンス図
シーケンス図は、各メソッド毎に作ります。
そのメソッドが、どの様な処理で、またどのオブジェクトに影響を及ぼすかを考えて設計します。
この際には分岐や繰り返しなども含めてなるべく細かく処理を決めていきます。
しかし、あくまで何がしたいか判ればいいので、コードを処理内容に書くなどはせず、まずは日本語で書いてみてください。
設計書が必要な大元は「伝わるかどうか」です。
Re: c++における設計について
こんばんは。
ご回答頂き、ありがとうございます。
お礼が遅くなり、申し訳ありません。
>ANASTASIA様
>設計書の定義が曖昧ではあるが、オブジェクト
>指向という趣旨での質問であるならば、その設>計書が指すものは"UML"だろうか?
>参考サイト http:/www.itsenka.comcontents/development/uml/
ありがとうございます。ぱらっとしか見ていないのですが、割と一般的な設計書の定義、もしくはそのツールみたいなものと認識してよろしいでしょうか?
参考にさせて頂きます。
>usao様
>設計書ってのは,どうすればいいの? という
>事柄に対する一般解(?)が存在するのか否か知
>りませんが……
多分ないのですよね。。。だから趣味程度ではどのレベルが必要なのかわからず困っています。
>あなたが 【誰向けに どの程度のレベルの物>を 出さねばならないのか?】
>という背景条件が存在するかと思いますので,
>何があれば良いのかを判断できる相手(その設>計書を必要とする相手? その設計書を用意し>ろとあなたに指示した人?)に対して,
>どのようなものがあれば必要十分かを問うべき>ではないでしょうか.
とりあえずは人に見せる予定はありません。
なので相手は"自分"でしょうか。。。
でも自分でみたときに同じものをプログラミングできるか、と聞かれれば考えるまでもなく答えはnoで、どこがどうなればそれが満たされるのかが今回の質問の主旨です。試行錯誤を繰り返すしかないのでしょうか。ですが下記()の内容についてもごもっともだと思いました。ありがとうございました。
>(ネット検索結果や,こういった掲示板等で,>誰かが「設計書ってのは,こうするのですな」>とか書いていたとしても
> それがそのままあなたの置かれている状況に>合致するとは限らないのではないかな,と.)
>BluOxy 様
>設計は突き詰めていけば
>「使うひとがその設計書を見ながら実際のモノ>が完成できればOK」
>です。
>で、実際はどこまで作り込めばいいのか…とお>悩みになっていらっしゃいますね。
はい。そのとおりです。使う人が見てわかりやすく、誰が見ても同じ処理ができる、というのは頭ではわかっているつもりなのですが。。。実際形にするとなかなかうまくいきません。
「伝わるかどうか」を頭に置きながらあれこれ作ってみたいと思います。
頭に中のもやもやは取れませんでしたが、
正解はないということがわかりました。
とりあえず「UML」とはなんぞや?から始めてまた精進します。
ご回答頂き、ありがとうございます。
お礼が遅くなり、申し訳ありません。
>ANASTASIA様
>設計書の定義が曖昧ではあるが、オブジェクト
>指向という趣旨での質問であるならば、その設>計書が指すものは"UML"だろうか?
>参考サイト http:/www.itsenka.comcontents/development/uml/
ありがとうございます。ぱらっとしか見ていないのですが、割と一般的な設計書の定義、もしくはそのツールみたいなものと認識してよろしいでしょうか?
参考にさせて頂きます。
>usao様
>設計書ってのは,どうすればいいの? という
>事柄に対する一般解(?)が存在するのか否か知
>りませんが……
多分ないのですよね。。。だから趣味程度ではどのレベルが必要なのかわからず困っています。
>あなたが 【誰向けに どの程度のレベルの物>を 出さねばならないのか?】
>という背景条件が存在するかと思いますので,
>何があれば良いのかを判断できる相手(その設>計書を必要とする相手? その設計書を用意し>ろとあなたに指示した人?)に対して,
>どのようなものがあれば必要十分かを問うべき>ではないでしょうか.
とりあえずは人に見せる予定はありません。
なので相手は"自分"でしょうか。。。
でも自分でみたときに同じものをプログラミングできるか、と聞かれれば考えるまでもなく答えはnoで、どこがどうなればそれが満たされるのかが今回の質問の主旨です。試行錯誤を繰り返すしかないのでしょうか。ですが下記()の内容についてもごもっともだと思いました。ありがとうございました。
>(ネット検索結果や,こういった掲示板等で,>誰かが「設計書ってのは,こうするのですな」>とか書いていたとしても
> それがそのままあなたの置かれている状況に>合致するとは限らないのではないかな,と.)
>BluOxy 様
>設計は突き詰めていけば
>「使うひとがその設計書を見ながら実際のモノ>が完成できればOK」
>です。
>で、実際はどこまで作り込めばいいのか…とお>悩みになっていらっしゃいますね。
はい。そのとおりです。使う人が見てわかりやすく、誰が見ても同じ処理ができる、というのは頭ではわかっているつもりなのですが。。。実際形にするとなかなかうまくいきません。
「伝わるかどうか」を頭に置きながらあれこれ作ってみたいと思います。
頭に中のもやもやは取れませんでしたが、
正解はないということがわかりました。
とりあえず「UML」とはなんぞや?から始めてまた精進します。