システム開発で設計書は必要なの?【アジャイル開発でも設計書は必要!!】

こんにちは。

私は、プログラマとして20年働いてきました。

この20年で、多くのプロジェクトを経験しています。

よくあるのは、設計書がメンテナンスされていないプロジェクトです。

プロジェクトの最初に、設計書を読むのですが、「設計書はメンテされてないから、ソースを読んだ方が早いよ!」と言われることが良くあります。

しかし、システム開発で、システム全体を理解するために、設計書はとても重要です。

では、なぜ設計書の作成やメンテを怠ってしまうのでしょうか?

それは、設計書を作成するのは、時間がかかるからです。

そして、設計書通りに作成しても、動かないことがよくあるためです。

では、設計書は、本当に不要なのでしょうか?

システム開発で設計書は必要なの?

システム開発において、設計書はやはり必要です。

上にも書きましたが、システム全体を理解するには、ソースコードを読むよりも設計書を読んだ方が早いです。

でも、プログラマの中なには、設計書を書くのが苦痛と感じる人が多いようです。

確かに、先に設計書を書いたとしても、作成されたソースコードが、正常に動作しないことはよくあります。

だから、プログラマは、先にプログラミングを行い、あとで設計書を作成しようとするのですが、プログラミングに時間がかかり過ぎて、設計書を作成する時間が少なくなってしまうのです。

そのようにして作成された設計書は、システム全体を理解できるような設計書ではないことが多いです。

また、システムの改修では、同じく、プログラマは先にソースコードの改修を行い、設計書メンテをするのを忘れたりします。

そのようなことが何度も繰り返されると、設計書は、無意味なドキュメントになってしまいます

作成したプログラマが社内にいれば良いのですが、大体が別の現場に行ってたり、退職していたりしていないことが多いです。

設計書を作る時に気を付けることは?

では、設計書を作る時は、どこに気をつければ良いのでしょか?

つまり、設計書のどこをきちんと書いていれば、システム全体を理解できる設計書になるのでしょうか?

基本設計

基本設計で必要なのは、画面設計とデータベースのテーブル設計です

画面設計は、顧客が使い勝手が良いように作成します。

デザイナがいる会社ならば、デザイナに画面を作成してもらう方が良いです。

プログラマが画面を作成すると、どうしても表形式のデザインになりがちです。

プログラマは、表計算ソフトでデータを整理することが多いので、表形式が見慣れているからです。

画面設計ができれば、インプットデータとアウトプットデータが決まるので、データベースのテーブル設計ができます。

詳細設計

詳細設計では、基本設計を実現する「クラス」や「メソッド」の設計が重要です

クラスの設計は、継承関係が分かり、どのクラスにどんなメソッドがあるかが分かることが重要です。

メソッドの設計は、メソッド名、インプット、アウトプット、それと、何を実行するメソッドかが分かることが重要です。

ここで注意しないといけないのが、同じ処理をするメソッドを作成しないと言うことです。

同じ処理をするメソッドは、拡張したり、抽象化したりして対応することが必要です。

アジャイル開発だと設計書は不要じゃないの?

アジャイルソフトウェア開発宣言では、”包括的なドキュメントよりも動くソフトウェアを”と謳っています。

なので、アジャイル開発では、設計書は不要と考えているプログラマもいます。

しかし、アジャイルソフトウェア開発宣言には、”左記のことがらに価値があることを認めながらも”とドキュメントに価値があることは認めています。

つまり、アジャイル開発で、設計書は不要ではないのです。

私の経験で言うと、1スプリントで、画面設計、プログラミング、試験、詳細設計の順番で作業すると負荷もなく作業できます。

もちろん、最初の画面設計は、ワイヤーフレーム程度で、正確な画面は1スプリントの最後に画面を貼り付けるようにしていました。

(他に良い方法があれば、コメントで教えてもらいたいです。)

>>>アジャイルソフトウェア開発宣言

まとめ

今回は、「システム開発で設計書は必要なの?」についてまとめてみました。

設計書は、システム全体を理解するのに、とても重要なドキュメントです。

でも、プログラマの中には、設計書を作成することを苦痛に感じる人が結構います。

なぜかと言うと、設計書を作成するのは時間が掛かるからです。

しかし、設計書で重要なところは、決まっています。

なので、重要なところを押さえておけば、システム全体を理解できる設計書になります。

基本設計では、画面設計とデータベースのテーブル設計です。

詳細設計では、クラス設計とメソッドの設計です。

また、アジャイル開発でも設計書は必要です。

アジャイル開発の場合は、1スプリントの最後に設計書を作成するのが有効です。

新しいプログラマが参画した時、設計書があるのと、ないのとでは、設計書がある方が断然プログラマの立ち上がりが早いです。

なので、プロジェクトのスケールアップも楽になりますよ。

では、今日はこの辺で。

ーーー<システム開発工程の記事>ーーー

●要件定義については、以下のブログで詳しく書いてます。
>>>システム開発の要件定義は、顧客と話して作りましょう【顧客に寄りそうシステム開発が成功の近道】

●テストについては、以下のブログで詳しく書いています。
>>>システム開発のテストで大切なことは?【技法が先行するとテストにならない】

ーーー

コメント

タイトルとURLをコピーしました