• 締切済み

ソフトウェア設計書の書き方の例を学びたい

趣味で、C++のプログラムを勉強していて、アプリを作ってみたりしています。 プロの人たちはどういった設計書を書いているのか、その実物かそれに近いものを見てみたいな、と思うようになりました。 自分もそんな手順でアプリを作れるとかっこいいなぁ、と。 (業務用殆どの資料は、外部への公開が厳禁というのが普通でしょうけど。) 今は、部分的な流れ図とかスレッドの機能や連携を少し考えて、トライアンドエラーでいきなりコーディングしています。 試験にいたっては、かなり適当です。 どこか、公開のソフトウェアで、設計書や要求仕様書(要件定義?)も一緒につくっているものがあれば、参考にしたいので教えて欲しいです。★ (ソースフォージなどの公開プロジェクトはどうやって連携してつくっているのでしょう?) もしくは、設計書の学習用のWebサイトがあれば、とても助かります。 かなり漠然としていて、範囲が広すぎると思います。 少し検索してみると、ウォーターフォールモデルというのが多いみたいな雰囲気だったので、これと、 プラス、C++でオブジェクト指向も使ってみているので、それに関連するあたりで学びたいです。 書籍でもOKですが、要求から試験完了まで、ひとつ以上の例題を一連でとりあつかったものでないと漠然としていて学び取れないと思っています。 (あまりきつそうであれば諦めます。仕事ではないので…。)

みんなの回答

  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.2

殆どのシステムが分業である事はご存じだと思います。分業の度合いで必要な設計書の深さが違う訳です。 要件定義書、方式設計書、論理設計書、物理設計書、テスト仕様書、運用設計書。業務ではこれだけを網羅していればシステムは動くでしょうが、これを実レベルの設計書に落とすと、UML、テーブル設計書、リレーション図、シーケンス図、クラス図、サイト仕様書、画面仕様書・・・・。 つまり細かくすればきりが無いのですが、大きなシステムでは誰が見ても同じメンテナンスが出来るように細かくなります。でも実際は作った人が一番判るので結局は作った人たちがメンテもしていることが多いのが現状です(日本や韓国では)。 でも最近はインド、中国など言葉の通じない連中に発注する会社も多く、彼らには詳細な設計書を要求されますし、彼らも書きます。日本人のレベルは富士通、日立、NTTデータなどに於いてもその辺低いと言わざるを得ません。なぜなら常に政府や大企業から丸投げ、外国との連携なんてお国は推奨しない。だからゆるゆるの設計書を書いて終わり。とりあえず上辺の設計書は大量に作るが、実際運用に役立たない。無いと怒られるから作るだけ。そういったぬるま湯的状況が日本IT業界を駄目にしているようです。富士通のスパコンが最速だって?。あれは富士通が協力しただけで研究者の言われるままに組み上げた特別製。当然一般技術ではありません。下らない競争です。 前述の設計書の一つ一つが膨大な知識の塊なので、全部を網羅したサイトなんて無いと思います。むしろそれぞれについて調べてみるのがよいと思います。 それとプロジェクト管理手法、システム変更時の内部統制などの知識はまた別に必要です。

全文を見る
すると、全ての回答が全文表示されます。
  • tadys
  • ベストアンサー率40% (856/2135)
回答No.1

今から学ぶとしたら「UML」でしょう。 http://www.kumikomi.net/archives/2003/03/03uml.php http://okwave.jp/answer/new?qid=7155618 解説本も沢山出ていますので興味が有るなら購入しても良いでしょう。 もっとも、一人で書いていても良く理解できないかもしれません。 書いたものを他人に説明する事で理解が進みます。 フローチャート(流れ図)の使用は最悪です。 今時、設計にフローチャートを使用していたら笑い物です。 ソフトを知らない人に説明する為にA4で1枚 に収まるぐらいのものを書くことはありますけど。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 設計書を作らないスタイルだったのですが

    私が以前勤めていた企業は独立型のSIerで、大手企業の業務を 受託でやっていました。 私は、  ハードよりのソフトウェア開発    ...........(1)  オリジナルの試験環境作り      ...........(2) をやっていました。 いずれも技術資料を読んで仕様・設計を考えて作っていくもの でしたが、顧客の注文・要望もあり、いずれもフローチャートや Wordなどでドキュメントしっかりとをつくるようなことはしませんで した。そして、  (1) → 事前のミーティングで、Excelで作った簡単な図を使って      「~な感じでコーディングをします」とレビューをして、      メンバー全体が納得をしたら、あとは詳細設計書は作成せ      ずに、コーディング。  (2) → 週に1,2回の割合で開かれるミーティングで、事前にある      程度、考え出した仕様を説明した後、作成段階に入ると      最新版の環境を顧客にデモして、修正を入れながら      作り上げていく。 という流れでやってきました。 これは、コーディング、作成だけでなく、設計といえるのでしょう か?ドキュメントは出していないので、微妙だと思っています。 それと、これから新しい職場を考えていますが、面接の場で、 これは設計をしていないというべきなのか、どう言えばベターなのか がわからなくなっています。顧客は名の知れた企業なので こういったスタイルもそれほど珍しくないのかな、とも 思うのですが。 みなさまどう思われますか?お願いします!! ※(2)は、試験環境ですが、コマンド一つで何千通りの試験を オプション付きでする環境で、それ以前に似たような環境がなく 位置からアイデアを出してC/C++やBasicを組み合わせて作るという ものでした。

  • プログラミングの一般論

    C++でプログラムするときに、 一般的にどんな手順で行いますか? 非オブジェクト指向型の言語では、 フローチャート書いてそのままコーディングできると思うのですが、 C++の場合だと、徹底的に設計をしておかないと後で かなり困ることになると思うんです。 また、実際のコーディングの時は、 classごとにまとめて書いたほうがいいのでしょうか? (今日はこのclassを、明日は別のclassのコーディングをしよう、みたいな感じです。) それとも、メンバ関数ごとに書いたほうがいいのでしょうか?

  • コンピュータソフトウエアの資格について

    こんにちは。 私は、コンピュータを使った自動制御装置や試験装置のソフトウエア設計に従事しています。 ただ、技術的にはまったく未熟で、与えられた仕様に基づいてコーディングするプログラマーの域を出ていません。 そこで自分自身の技術向上をはかり、システム設計が出来るようになって、将来的には独立して仕事が取れるくらいのスキルを身につけたいと考えています。 そのためにもっと勉強をしていきたいのですが、明確な目標があるほうがやりやすいと思い、なにかソフトウエア関連の資格に挑戦したいと考えています。 ただ、資格関連の情報を見ても、かなりの数の資格があり、いったいどれが自分にあっているのか、わかりかねている状態です。 今現在の自分の実力としては、C言語はわかりますが、特に専門的なプログラミング技術を持っているわけではなく、あくまで自己流で作りこんでいるのが現状です。 もっと専門的な技術をきちんと身につけるために情報処理技術者試験のようなものを受けるのがいいのか、マイクロソフトのMCPのようなより実践的な(MCPが本当に実践的なのかどうかよくわからないのですが) 資格のほうがいいのか。ネットワーク関連の知識も必須だと思うので、そういった資格がいいのか。 また、系統は違うのですが、Webデザイナーのようなクリエイティブな技術にも関心はありますので、出来れば、こういった技術も身につけたいと考えています。 とにかく、必要な技術は山ほどあり、まずなにから切り込んでいけばいのか、自分自身混乱している部分はあります。 どうか適切なアドバイスがいただければとても助かります。 資格挑戦ではなく、もっと独学で実践向きの勉強方法のほうがいいとか、こういった私の考え方は間違っているとか、手厳しいご指摘もいただければ参考になります。 よろしくお願いいたします。

  • 小規模のオープンソースについて

    表題の件に関して質問させていただきます。 最近やっとC++の初心者を抜け出し、次のステップに進みたいと思っています。 気づいたのですが、継承、関数のオーバーライド等の恩恵を得るにはある程度の規模を持ったプログラムでないといけないということです。 教科書を読んで小さなプログラムを書いているだけではオブジェクト指向的な書き方は身に付かないと感じました。 そこでオープンソフトを公開している sourceforge.net(http://sourceforge.net/) で色々探してみたのですが、あまりにも大規模でかつ私の能力では付いていくことができませんでした。 小規模、もしくは中規模のプログラムソースが置いてあるサイトをご存知でしょうか? もしくは一連の作業を通してオブジェクト指向的なプログラムの書き方が学べるサイト等はないでしょうか? また大規模のプログラムを開発しておられる方は教科書と実際の作業の溝をどのように埋められたのでしょうか? 漠然とした質問で申し訳ありませんがよろしくお願いします。

  • 大学のweb試験について

    知り合いで大学のオンライン試験中にググるのは勿論、質問サイトに問題を貼って答えを求めている方がいます。周りの子の成績が下がって欲しい訳では決してないので取り立てて言いませんでしたが、バレないのか…?と気になりました。匿名で、その人とわかるような名前を避けて、その他諸々の個人情報を非公開にして、特にアプリの連携なども無ければバレないのでしょうか…?教員側が探るのも制限がありますよね…?

  • Xcodeでマルチスレッドでなく順処理する方法

    こんにちは。 今Xcode4.2.1を使っております。 さて、今処理としてあるアプリ連携を行う処理を作っているのですが、 マルチスレッドでなく 「処理A」→「処理B」→「処理C」 と順に処理をしたいのですが、スレッド化してうまくいきません。 具体的には [self presentModalViewController: controller animated: YES];(処理A) [処理B] [処理C] : と書いた時に、処理Aがスレッドとして動くので、 処理Aが終了しないうちにB、Cがスタートしてしまいます。   1)順に処理をさせたい(マルチスレッド化しない方法)のですが、     どうやったらよいのでしょうか? もしくは   2)Aの処理がおわるまで監視&制御する(排他制御)方法はあるのでしょうか? 素人質問で申し訳ありません。 些細なことでも結構ですので 宜しくお願い致します。

  • サーバー上で、動く複数のアプリケーションの連携方法

    サーバー上で、動く複数のアプリケーションの連携の仕方 最近、Webアプリの勉強を始めたばかりの者です。 家の中にサーバーを構築し、自分にとって役立つアプリケーションを走らせようと考えています。 (ネット上に一般公開はしません) その際に行いたいのが、複数のアプリケーションの連携です。 例を挙げますと WindowsOS上で、ApacheなどのWebサーバーが走っていたとします。 クライアントからの要求に応じて、 指定されたBMPファイルを、webアプリケーションが、Paintなどのexeを実行して開くといった具合です。 この仕組みを作るには、どうしたらよいのでしょうか。 標準的なやり方は存在するのでしょうか? CentOS上ならこう出来るといった回答でも構いません。 以上、宜しくお願いいたします。

  • Visul Studio2010、MFCの勉強をし

    Visul Studio2010、MFCの勉強をしてます。 アプリ間のデータ授受をしたいのですが、よい方法をご存知であれば、ご教示願います。 ■質問内容 実行モジュールA.exeと、 実行モジュールB.exe(C.dllを公開)があります。 A.exeは、C.dllを明示的リンクし、スレッドを1つ起動します。 A.exeはC.dllで定義されている関数で、B.exeの変数Zの格納値を取得できます。 B.exeで変数Zの格納値が変更された時点で、A.exeのスレッド内で変数Zの格納値が変更されたことをメッセージで表示させたいのですが、何か良い方法はありますか? A.exeのスレッド内で変数Zの変更を検出するタイミングは、 スレッド内で同じタイミングで変数Zの格納値をチェックするのではなく、 try~catchのような振る舞い(変数Zの値が変更された時点を検出)になるようにしたいです。 よろしくお願いいたします。

  • IT業界での転職はあきらめるべきなのか

    30歳ちょうど、開発経験は3年ほどあります。 こちらで「プログラマーの書類選考に落ちつづける」という相談をしたら、特別なスキルもない上にマネジメント経験のない30歳は障害者雇用だろうと落ちるに決まってるといわれました 要は特別なスキルやマネジメント経験があれば問題ないということですが、今までのプロジェクトでは要件定義を設計とコーディング、テストを一人で行うものばかりで、共同作業を行ったことはありません。当然のことながらマネジメントスキルなんてものはありません。 このまま会社にいてマネジメント経験を積めればいいのですが、会社は倒産してしまいました。 マネジメント経験のなさを補う方法があれば教えてほしいのですが、そういう都合のいいものは存在しないのであきらめるべきなのでしょうか。 年齢 30 ■職務経歴 ・接客業 2年(新人教育を任されたことがあります) ・IT関係 3年(エディターコンポーネントとエディター本体の設計からテストまでを一貫して行いました) スキル C#,WinForms,WPF,WindowsStore,C++/CLI:3年 C++:趣味でシェル拡張を作ったことがあります JavaScript,PHP,MySQL,HTML,CSS:Webサービスを作り、今現在公開中です Java,Ruby,Perl,Python:簡単なプログラムなら組めます DotCloud,AppFog,Apache:Webサービスの構築ができます 自己分析 ・可読性と移植性とオーダーを意識して仕事にあたってきた ・最新技術の吸収に努めてきた ・いくつかのオープンソースプロジェクトでコーディング・ドキュメント作成を担当した ・接客の仕事では新人教育まかされたことがある ・paizaというコーディングスキルをチェックするサイトで上から1番目の評価をもらったことがあります ・アスペルガー症候群というコミュニケーション面での障害を持ってる 希望 ・プログラマーとして働き続けたいが、設計関連の仕事もしたい

  • ソフトウェア設計力の習得について

    ソフトウェア歴3年になりますが、 設計力の無さを痛感しております。 皆様が常識だと思っている事が理解できておりません。 ex)設計概念。禁止事項。 なんとかして挽回したいと考えており。 皆さんに教えて頂きたい事が3点あります。 (1) ソフトウェア設計にも流行がありますか? これから必要となる技術はどの方面のものでしょうか? #流行など無いかもしれませんが、オブジェクト指向とか構造化設計とか。。。 (2) セミナー等があれば受けてみたいと考えております。 何かお勧めのセミナーがあれば、ご教授下さい。 (3) セミナーはお金がかかるので、とりあえずは書籍からかなぁと思っております。 お勧めの書籍。皆様が成長する際に有効であった書籍があればご教授下さい。 私のこれまでのキャリアは、C言語2.5年 Java0.5年です。 OSはItron,Vxworksを使用した事があります。 以上、よろしくお願いいたします。