パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

スラッシュドットに聞け:ソフトウェア開発の現場で設計書は必須か」記事へのコメント

  • ソース自体が設計書(の一部)なんですが。
    大体、他の物作りでも、自然言語だけでは正確な指示は出来ないので、その仲介として図面などが存在して、それらはとてもじゃないけど、シロート(あえてカタカナ)には書くことどころか、読み取ることも出来ない。(ソースよりは判ったふりはしやすい)

    要するに、「セッケーショがぁ」と騒ぐ上司は、他の物作りの場面で図面とか判ったふりをする奴。ポンチ絵でも描いてわたしゃ納得しますって。

    • Re: (スコア:0, 興味深い)

      by Anonymous Coward

      >ソース自体が設計書(の一部)なんですが。

      こういうこという奴は「私はバカです」
      って言ってるのと同じだと思ってる。

      要求書とそれを実現する実装方法を抽象化した「設計書」がない限り「実装のミス」はわかりません。

      ある値 a と b を合計する値を求めるのが要求と仕様だったとして、
      実装が a - b になっていた場合、「ソースだけ見ても実装のミスとわかる人はいない。」

      ソースを設計書というなら「a - b」が正となり、それしか資料がなくなるのだから。

      • by Anonymous Coward on 2015年03月03日 15時41分 (#2770932)

        あなたの理屈で必要なのは要求仕様書であって、設計書ではない。
        そして要求仕様書は設計者が書くものじゃない。

        親コメント
        • by Anonymous Coward

          要求仕様書なんて

          「なにがしたい」(ものを買いたい、売りたい。)

          レベルで「実現方法(機能仕様、機能設計)」はないでしょうが。

          必要なのは「機能と実装の設計」

          「コーディング仕様書なんていらない」のは同意できますが「機能実現の為の実装設計書」は必要です。

          「どういうDBでどのテーブルはどういう意味を持ち、どのフィールドは何のためで、
          どういう計算で入るべきか。」

          それが「要求仕様書?あほか」

          上記がない限り実装でミスってもけっしてわかりません。

          • by Anonymous Coward

            >「機能実現の為の実装設計書」は必要です。

            >「どういうDBでどのテーブルはどういう意味を持ち、どのフィールドは何のためで、
            >どういう計算で入るべきか。」

            機能を上から下まできっちり詰めることができるのなら、それは即ちそのまま
            ソースコードに落とし込めるということで、それなら最初からソースコードに
            そういうことを書けばいい。

            そういう意味で『ソースコードは設計書』なんです。

            # それにね、だいたい同じ頭で「機能実現の為の実装設計書」と「ソースコード」を
            # 書いたところで、両方に同じ間違いをするのが関の山でしょ。

            • by Anonymous Coward

              フィールドを計算する関数ごとに「テーブルの意味」「関連する別のフィールド」「別のテーブルの意味」
              すべてかくんですか?

              そもそもシステム全体でDBを複数使用している場合、
              「システム全体では使用してもそのクラスでは使用しない
              が値としては関連してくる」

              とかいくらでもあるわけで。

              # それにね、だいたい同じ頭で「機能実現の為の実装設計書」と「ソースコード」を
              # 書いたところで、両方に同じ間違いをするのが関の山でしょ。

              だからこそ
              「コーディング設計書」でなくて「なにをしたいか、何をするべきか、システム全体の中で何を担って、
              なにを行って、返す値は何で、システム全体でどういう意味を持つか」

              の「設計書」が必要なんですよ。
              後で他の人間がみて、「ここでバカやってる」ってわかるように。

              そもそも「何を求められていたか、そこで何するべきだったか」

              がわからなくてどうやって「やっていることのミス見つけるの?」

              • by Anonymous Coward

                >「コーディング設計書」でなくて「なにをしたいか、何をするべきか、システム全体の中で何を担って、
                >なにを行って、返す値は何で、システム全体でどういう意味を持つか」

                もしかして知らないのかもしれないけれど、まともなプログラマならそういうこともソースコード中に
                ある程度ちゃんと書いておくものなのです。

              • by Anonymous Coward

                システム全体の設計書がないのに「システム全体の中で何を担うか」を書けるんだW
                一次開発だけでなく、メンテで増えるときにも「システム全体の中でどう」ってかけるんだW
                ソースにW
                みたことないわW

                一次開発と2次開発以降やメンテナが開発と同じ人間とは限らないわけで。

                毎回メンテナはシステムすべてのソースを読めと?

              • by Anonymous Coward

                ソースコードの中に書いておいて自動生成すればその要件は満たせるね。
                ドキュメントと突き合せずにソースで直接突き合せられるからソースに書くほうが合理的。
                別に書いてたら整合性を保つ手間も増えるし、同じことを2セット書くとかミス増えるだけじゃん。

                にもかかわらずドキュメントで同じことをもう一度書くことの意義はどこにあるんですかね。

              • by Anonymous Coward on 2015年03月03日 19時13分 (#2771086)

                ソースコードと一対一で対応しているドキュメントじゃカバーできない、
                全体を俯瞰する情報のために設計書が必要なんですよ。

                親コメント
              • by Anonymous Coward

                ○○画面の××ボタンの処理の仕様が知りたいというシチュエーションがあったとしましょう。

                ソースコードから自動生成したドキュメントしかない場合、
                まず○○画面のソースがどれかをドキュメントツリーを掘って探す必要があります。
                首尾よく○○画面のソースから作られたドキュメントを見つけ××ボタンの処理だというA関数の項を見つけました。
                しかしA関数のドキュメントを見ても概要は書いてあるが詳細が何も書いていない。
                さて困った、仕方ないからA関数のソースを探してきて読んでみて謎が解けました。
                A関数ではB関数を呼んでいて主要な処理はB関数で行っていたのです。
                B関数のドキ

              • by Anonymous Coward

                システム全体の設計書、こそみたことないWW

                無い物を前提にされても困る。

              • by Anonymous Coward

                >システム全体の中で何を担って、
                これをソースコードやコメントに書いたら、そのソースは失格。

                関数やクラスなんてのは、システムの別のモジュールや、別のシステムでもそのまま再利用されることを前提に書くものなのだから。
                システム全体俯瞰の思想をソースコードやコメントに持ち込んだら、「密結合」になってしまいます。
                (動作が粗結合でも、ソースとして密結合になってしまう)

                システム全体の俯瞰からみた立ち位置やどことどこでどういう役割を果たすかはソースコードとは別のドキュメントにしない限り失格です。

            • by Anonymous Coward

              まさにこれ。
              > ある値 a と b を合計する値を求めるのが要求と仕様だったとして、
              > 実装が a - b になっていた場合、「ソースだけ見ても実装のミスとわかる人はいない。」
              って言ってるけど、そもそも設計書の段階で間違われてたらどうすんだと。
              更にソースでは要求仕様をきちんと満たしてたりすると、余計に混乱するわけです。
              プログラミングでは、重複を避けろと言われますが、同じ内容を別の言語で重複して書くのは愚行です。
              *BSD や Linux にすら設計書がないのに、明らかにそれら以下の規模や複雑さのソフトに設計書が必要である明確な根拠があるとは思えないです。

              • by lm (47129) on 2015年03月03日 21時32分 (#2771199) 日記

                それだと誰も設計レビューしてないみたいだ。

                *BSD や Linux にすら設計書がないのに、

                IRC や ML のログが暗黙の設計書だったりする。
                ときにはアスキーアートまで駆使して説明することもあるよ。

                親コメント
              • by Anonymous Coward

                >プログラミングでは、重複を避けろと言われますが、同じ内容を別の言語で重複して書くのは愚行です。

                この一文でわかる通り、

                いらないと言ってる人間がそうぞうしてるのは「コーディング設計書」であって「機能仕様書、実装設計書」
                じゃないんだよなぁ。
                それこそ2回かくのばかばかしいんで。

                (#2770957)

              • by Anonymous Coward

                オープンソースほどドキュメントが豊富に揃ってれば、設計書書かなくてもいいかもしれませんね。
                Linuxなんて本屋に行けば、カーネルコードの設計書がいくらでもあるんですから。

              • by Anonymous Coward

                ちょっと聞きたいんだけど、『実装設計書』は
                  1. どういう立場の人が
                  2. どういう立場の人向けに
                  3. どのようなことを目的として
                書くものなの?

                プログラマ=設計者なら、プログラマが書くもの=ソースコードこそが設計書だと
                思うんだけど、プログラムに関する設計書がソースコード以外に必要ということは
                プログラマは設計者では無い(所謂コーダー)と考えているということ?
                それとも『設計書』という名前が適切ではないということ?
                (例えば、ユーザー向けにI/Fの仕様書はソースコードと別に必要だと思うけど、
                  それに設計書という名前が付いているのは適切ではないというように。)

              • by Anonymous Coward

                プログラマ=設計者なら、プログラマが書くもの=ソースコードこそが設計書

                だからこれが間違い

                プログラマ=設計者=保守作業者、メンテナ(機械化人間にでもなって寿命を超えて永遠に)
                ならいらないかもね。

                1.設計者が
                2.プログラマまたはメンテナ向けに
                3.システム全体、クラス、関数の用途、それぞれの目的と実装と採用ロジックを記述するもの

                かな。

                ここでループするとか、そういう「コーディング設計書」はいらない。

                必要な機能は何で、どういうロジック理論で、どう実装するか。
                たとえば基幹システムでの単価が「移動平均」なのか「固定単価」か

                ソートして返す関数が必要で

              • by Anonymous Coward

                タレこみが言っている『設計書』(それにプログラマ視点での設計書)と、あなたが言っている『設計書』が違うものだっていうのはよく分かった。

                名前は『基本設計書』『詳細設計書』でも、プログラマに対して『こういう仕様で作るように』と出すものだからプログラマの側からすればそれが要求仕様書になる。

                (もっと言うと、システムの『設計書』とプログラム/モジュールに対する『要求仕様書』は性質が異なるものなのに『基本設計書』『詳細設計書』と一括りにしているところにも問題はある。)

                元々タレこみが問題にしているのは、ソースコードを作成し終わった後で、そのソースコードの内容を逐一説明するような設計書を作る必要があるか、ということ(だと私は理解している)。

              • by Anonymous Coward

                タレこみをよく読みましょう。元のタレこみは「ドキュメントそのものを否定してます」

                >ソースコードを作成し終わった後で、そのソースコードの内容を逐一説明するような設計書を作る必要があるか
                自動生成でできるのがこれ。これだとそもそも「何がしたいのかわからない」

                だから「別につくれ(要求仕様書、基本設計書)といわれたのでしょう」

              • by Anonymous Coward

                「必要な事はコメントに書いてあるし、お望みとあらばドキュメント化して自動出力も可能にしてあったのだ。」
                ってことだから、この自動生成で出力されるのは処理を日本語で表現したゴミとは違うんじゃないかな。

                ちゃんとしたメタデータが出力されるにもかかわらず文書化を要求されるということならば
                ・自動生成のフォーマットであることを拒否された
                ・自動生成では粒度が細かすぎた(詳細なドキュメントというものそれ自体を拒否された)
                ・自動生成のシステムを単純に毛嫌いしていた
                ・タレこみ人のコメントから生成されるドキュメントでは不足だった(としたら手書きでもダメだと思うんだが…)
                など何かしらクソみたいな理由があると思われます。
                もちろん、タレこみ人のコメントや自動生成のためのメタデータが全体的にゴミだったという可能性もありますけど。

              • by Anonymous Coward

                なるほど、タレコミ主はウォーターフォールモデルで出来上がってくるダメ設計書しか知らないから『設計書なんて一切必要ない』と思い込んじゃっているのか。

              • by Anonymous Coward
                ウォーターフォールでの典型的失敗例と、非ウォーターフォールでの成功例がこれだけ揃っているのに、ウォーターフォール前提での設計書を、ウォーターフォールの工程を無視して後から作らせることに本当に意味があると思ってるの?

                本当に必要なドキュメントは、あなたが言う『要求仕様書、基本設計書』とは違う何かだよ。
              • by Anonymous Coward

                自分は余り多人数での開発はした事が無いですが、
                その数少ない経験では、

                ・ソースを持ち寄る。
                ・押し合いへし合いで、やばいと思ったら早めに概念を
                 分ける提案をする。

                のが常で、

                全体を見晴るかせる文書がいるなら、実装工程の後に
                別工程を新設するより無いと思う。

              • by suicidewish (46119) on 2015年03月04日 12時47分 (#2771605)
                納品形態が違うってだけで大規模開発で設計書がないなんてあり得ないよね
                親コメント
              • by Anonymous Coward

                これって、コメントに記せば済む話じゃないの?
                むしろ、設計書に分かれてて、記述箇所に物理的距離が生じるとメンテナンス性が悪化すると思う。

              • by Anonymous Coward

                大概の開発プロジェクトでは「設計工程」と呼ばれるものが存在していると思いますが。

身近な人の偉大さは半減する -- あるアレゲ人

処理中...