こんにちは。
私は、プログラマとして20年働いてきました。
この20年で、多くのプロジェクトを経験しています。
よくあるのは、設計書がメンテナンスされていないプロジェクトです。
プロジェクトの最初に、設計書を読むのですが、「設計書はメンテされてないから、ソースを読んだ方が早いよ!」と言われることが良くあります。
しかし、システム開発で、システム全体を理解するために、設計書はとても重要です。
では、なぜ設計書の作成やメンテを怠ってしまうのでしょうか?
それは、設計書を作成するのは、時間がかかるからです。
そして、設計書通りに作成しても、動かないことがよくあるためです。
では、設計書は、本当に不要なのでしょうか?
システム開発で設計書は必要なの?
システム開発において、設計書はやはり必要です。
上にも書きましたが、システム全体を理解するには、ソースコードを読むよりも設計書を読んだ方が早いです。
でも、プログラマの中なには、設計書を書くのが苦痛と感じる人が多いようです。
確かに、先に設計書を書いたとしても、作成されたソースコードが、正常に動作しないことはよくあります。
だから、プログラマは、先にプログラミングを行い、あとで設計書を作成しようとするのですが、プログラミングに時間がかかり過ぎて、設計書を作成する時間が少なくなってしまうのです。
そのようにして作成された設計書は、システム全体を理解できるような設計書ではないことが多いです。
また、システムの改修では、同じく、プログラマは先にソースコードの改修を行い、設計書メンテをするのを忘れたりします。
そのようなことが何度も繰り返されると、設計書は、無意味なドキュメントになってしまいます。
作成したプログラマが社内にいれば良いのですが、大体が別の現場に行ってたり、退職していたりしていないことが多いです。
設計書を作る時に気を付けることは?
では、設計書を作る時は、どこに気をつければ良いのでしょか?
つまり、設計書のどこをきちんと書いていれば、システム全体を理解できる設計書になるのでしょうか?
基本設計
基本設計で必要なのは、画面設計とデータベースのテーブル設計です。
画面設計は、顧客が使い勝手が良いように作成します。
デザイナがいる会社ならば、デザイナに画面を作成してもらう方が良いです。
プログラマが画面を作成すると、どうしても表形式のデザインになりがちです。
プログラマは、表計算ソフトでデータを整理することが多いので、表形式が見慣れているからです。
画面設計ができれば、インプットデータとアウトプットデータが決まるので、データベースのテーブル設計ができます。
詳細設計
詳細設計では、基本設計を実現する「クラス」や「メソッド」の設計が重要です。
クラスの設計は、継承関係が分かり、どのクラスにどんなメソッドがあるかが分かることが重要です。
メソッドの設計は、メソッド名、インプット、アウトプット、それと、何を実行するメソッドかが分かることが重要です。
ここで注意しないといけないのが、同じ処理をするメソッドを作成しないと言うことです。
同じ処理をするメソッドは、拡張したり、抽象化したりして対応することが必要です。
アジャイル開発だと設計書は不要じゃないの?
アジャイルソフトウェア開発宣言では、”包括的なドキュメントよりも動くソフトウェアを”と謳っています。
なので、アジャイル開発では、設計書は不要と考えているプログラマもいます。
しかし、アジャイルソフトウェア開発宣言には、”左記のことがらに価値があることを認めながらも”とドキュメントに価値があることは認めています。
つまり、アジャイル開発で、設計書は不要ではないのです。
私の経験で言うと、1スプリントで、画面設計、プログラミング、試験、詳細設計の順番で作業すると負荷もなく作業できます。
もちろん、最初の画面設計は、ワイヤーフレーム程度で、正確な画面は1スプリントの最後に画面を貼り付けるようにしていました。
(他に良い方法があれば、コメントで教えてもらいたいです。)
まとめ
今回は、「システム開発で設計書は必要なの?」についてまとめてみました。
設計書は、システム全体を理解するのに、とても重要なドキュメントです。
でも、プログラマの中には、設計書を作成することを苦痛に感じる人が結構います。
なぜかと言うと、設計書を作成するのは時間が掛かるからです。
しかし、設計書で重要なところは、決まっています。
なので、重要なところを押さえておけば、システム全体を理解できる設計書になります。
基本設計では、画面設計とデータベースのテーブル設計です。
詳細設計では、クラス設計とメソッドの設計です。
また、アジャイル開発でも設計書は必要です。
アジャイル開発の場合は、1スプリントの最後に設計書を作成するのが有効です。
新しいプログラマが参画した時、設計書があるのと、ないのとでは、設計書がある方が断然プログラマの立ち上がりが早いです。
なので、プロジェクトのスケールアップも楽になりますよ。
では、今日はこの辺で。
ーーー<システム開発工程の記事>ーーー
●要件定義については、以下のブログで詳しく書いてます。
>>>システム開発の要件定義は、顧客と話して作りましょう【顧客に寄りそうシステム開発が成功の近道】
●テストについては、以下のブログで詳しく書いています。
>>>システム開発のテストで大切なことは?【技法が先行するとテストにならない】
ーーー
コメント