それなりのソフトを作るときには、基本設計書(SE的仕事)とフローチャート(PG的仕事)を作ることになると思うのです(詳しくは知りません)が、素人がそれなりのソフトを作ろうと勉強する場合、どちらから勉強すべきなのでしょうか?
回答して欲しいこと。
1.基本設計書とフローチャートのどちらを先に勉強すべきか。(主観でいいです。)
2.基本設計書の設計方法やフローチャートの書き方を勉強するのに有用なサイトを教えてください。
3.基本設計書やフローチャートの作成に使用しているソフト名を教えてください。
※注意※
1.の質問の回答は必須とさせて下さい。1.の回答が無い場合はポイントは0とします。
@nifty
1についての回答なのですが、おそらく職場にいった場合はプログラミングの方を先にやることになると思います。
要は先輩の作成した、詳細設計に基づいてPGを作成する。
詳細設計はあってもフローは必要だと思いますので、基本設計よりもPGの為のフローだと思います。
でもって、現場の環境が分かるにつれて基本設計書、外部、内部の設計書も作るようになると思います。
1のみの回答ですので、参考に鳴らないようでしたら、ポイント不要です。
molips.com
1.
一人でプログラムを設計すると仮定します。
利用する言語が確定しているならば、
フローチャート(それ以前にアルゴリズム
の勉強をしたほうがより良いのですが)を
先にやると、基本設計時に必要な項目を
考えやすくなります。
逆に利用言語を用途で選ぶ場合が主であれば
設計思想を言語にとらわれずに書けるよう
SE的な部分を先にやってから、どの言語で
どうフローを組めばよいか、という順で
学習していったほうが馴染めます。
3.
DynamicDraw というフリーソフトや
Microsoft Visioという製品が有名です。
ありがとうございます。
開発言語が絞れるならば、アルゴリズム、フローチャートやプログラムの勉強を先にして、それなりのソフトを作れるだけの知識を得てから基本設計の勉強をした方がいいのですね。参考になりました。
$B$[$2(B.JP
1番のみ回答します。
「フローチャート」なんざ勉強せんでよろしい。
全然役に立ちません。無駄です。無意味です。
まともな所なら、もうすでにフローチャートは
使われなくなっています。
以前に、フローチャートを山ほど書いた僕が
断言するのですから、確かです。
最近では UML が流行のようです。
基本設計書は必要ですが……つーか、ソレが
ないと仕事は始まらないんで。
でも、「素人がそれなりのソフト」となると
仕事としてやってるわけではないのですね?
なら、設計は気にしないでバリバリコーディング
して下さい。それがハッカーの正しい道です。そうして経験を積んで、設計がわかって
来ます。
ありがとうございます。
フローチャートは無駄なんですね。UMLは知りませんでした。UMLはフローチャートの代替というよりも、基本設計書で使われる表現方法なのかな。後で詳しく調べてみます。
個人的に趣味でプログラムの勉強をするなら、とりあえずは設計なんて考えなくてもいいのかもとは思ったのですが、興味があったので質問してみました。それとハッカーになるつもりはないです。。。
1.趣味としてソフト開発をするのであれば、恐らくSE的仕事(仕様決定)とPG的仕事(プログラミング)を両方行う必要があると思います。実際の職場でも、SE的仕事とPG的仕事を同時にこなす場面というのは多々存在します。そのとき、PG的な事を全く知らずに設計することは不可能だと思われますので、まずはPG(プログラム言語・アルゴリズム)の知識をある程度習得した方がよいと思われます。
ちなみに、フローチャートというのは最近の言語の振る舞いを記述するのには適していない場合が多いため、PG的仕事=フローチャートとは考えない方がよいと思われます。
とりあえずは適当な言語を一つか二つ習得された後で、プログラム設計を行う事をお勧めいたします。
2.「アルゴリズム」でググってみました。
アルゴリズム入門
アルゴリズムはプログラミングの主となるものですから、良い書籍も沢山出版されていますので、書店等で探してみるのも良いかと思われます。
3.仕事ではWordとExcelしか使ってません(笑)
ありがとうございます。
フローチャートは必要なさそうですね。そうすると仕事でプログラムを組んでいる人は、何を基にして作るのでしょうか。前の方に教えてもらったUMLなのか、それとも仕様書を見ていきなり書き始めのでしょうか。謎です。
言語が分かっていないと基本設計は難しい。PG的な面からみると、アルゴリズムの勉強は必須ってことですね。図書館で本を探してみます。
Yahoo! JAPAN
1の回答ですが、フローチャートの勉強が先です。
基本設計というのはプログラムによって
何が実現でき、何が実現できないかを知らなければいけません。
実際、開発業務となると(システム屋ですが)
プログラムのスキルがない人が設計したりしますが、
そういう人の設計書はボロボロです。
ほぼユーザの言葉をそのまま書いたようなものということが多いです。
しかしフローチャートがかけなくてもアルゴリズムの勉強をしておけば問題ないです。
むしろ今時フローチャートなんて使いません。
何故かというと、最近はオブジェクト指向的な開発が主流になってきていますが、
オブジェクト指向的な設計にフローチャートが向かないからなのです。
では、実際に何が使われているかというと、主にUMLです。
UMLは資格もあり、実際に読み書きできるととても便利です。
2の回答ですが、UMLやアルゴリズムといったキーワードでgoogleで検索すると
いっぱいヒットしますので、自分のレベルにあったものを見るのが1番かなと思います。
ですので、URLは書きませんが、理解できそうなものから読み始めるといいと思います。
3の回答ですが、基本設計書といっても各会社によってマチマチですが、
データベース設計や、画面設計は主にエクセルで作ります。
画面設計は直接HTMLを書いたり、イラストレータやフォトショップで作成することもありますね。
UMLの設計はフリーソフトで、Judeというツールがあります。
これは純国産のソフトですので、使いやすいと思います。
他にRational Rose(IBM)やEclipseのプラグインのEclipseUMLを使うこともあります。
プログラムを覚えるのであれば、アルゴリズムの勉強と
実際にプログラムを書いて、頭で覚えるというのを並行しておこなうのが一番いいと思いますよ。
理論だけ学んでも、なんにも楽しくないですし、実際に頭に入りにくいですね。
ありがとうございます。
とりあえずアルゴリズムとUMLのサイトを眺めてみます。本も図書館で借りて読んでみようと思います。UMLはソフト開発だけでなく、業種関係なく仕事全般で使えそうなので勉強する価値ありそうですね。
フローチャートが必要ない理由もありがとうございました。オブジェクト指向とフローチャートの関係性がよくわからないので理解出来ませんが、あまり気にしないことにします。。。
−−−−−−−−−−−−−−−
3時半で回答のオープンを終了します。
1. どちらかといえば、フローチャートの方でしょう。
ただ、ソフトを作るということはきちんと文書化するかどうかを別にすれば、結局はどっちもやることになりますね。
また、フローチャートを勉強するというよりは、コーディングできるレベルでの具体的な処理手順を考えることと思ってください。
その表現のひとつがフローチャートです。
嫌われるのは、簡単にいくらでも汚いフローチャートが書けてしまうからです。
フローチャートを書くこと自体はそんなに難しい事ではないと思います。
ただ、それを書くための考えを具体化することが勉強すべきことでしょう。
ありがとうございます。
UMLを説明したサイトを眺めていましたが、処理の流れを整理するのに有用な表記方法のようですね。フローチャートが分かっていないので、プログラムの設計に関してUMLを使用する場合にどこに違いがあるのか理解できませんが。。。
「それ(フローチャート)を書くための考えを具体化することが勉強すべきことでしょう。」というのはアルゴリズムを勉強すべきってことですよね。
ObjectClub - TOPページ
1. 実現可能性が無い基本設計なぞいりません。
ソフトウェアの仕組み、言語、その他様々なことを知らない人が書いた設計書ほど信憑性の低いものは無いでしょう。
かと言って、フローチャートを書いている人は最近見たこと無いです。また、他の方が勧めているUMLですが、オブジェクト指向のことが分からないと理解は難しいとおもいます。まぁ、この考え方は賛否両論あるでしょうが。
UMLが理解でき、書くことができれば基本設計・詳細設計のどちらも「ある程度は」いけます。多分。
2. UMLについては山ほどありますので・・・
3. UMLならJude、Eclipseプラグイン、基本仕様書ならOffice製品、DB設計ならERwin、Eclipseプラグイン、等等でしょうか。
「システム」1つ作るにもいろいろな技術要素が必要になるので、一概にコレだけやっておけばOKとは言えません。
ただ、間違いなく言えるのは基本設計だけでシステムは動かないし、フローチャートだけで望ましいシステムの絵は書けない、ということです。
SE、PG両方のスキルが無いと(あるいは分担しないと)成り立たないでしょうね。
趣味の世界であれば、単に言語から入っていくことをお勧めします。そこから必要なものが見えてくるでしょうし。
ありがとうございます。
両方が必要だけど、使用する言語ごとに機能実装の可否を理解していなければ基本設計なぞ書けないのですね。
−−−−−−−−−−−−−−
みなさん、ありがとうございました。
質問内容以外にも、色々と知らなかったことを知ることができたので参考になりました。
ありがとうございます。
職場ではそうなんでしょうね。
仕事でソフト開発に携わっていない個人が、趣味としてソフト開発をする場合はどちらも必要になると思うのですが、どちらを先に勉強した方が良いでしょうか?