01.設計において注意すること

概要

サンプルの説明の前に、実装において特にどんなことを注意するべきかということを書いておこうと思います。

サンプルのインストール方法はこのあとの記事で、記述します。

設計で一番重要なことは?

一番重要なのは非機能要件です

「えっ!?お客様に要求された機能じゃないの?」と思うかもしれません。

しかし、上級者の方がよく言われていることに、要求された機能より、

非機能要件の実装コードの量が大きくなることが多い」、ということがあります。

われわれ初級者からすると、ハテナ?な言及です。

しかし、調べてみると、非機能要件といわれているのは、監査ログなどの細かなログ情報や、

DBのデッドロック対策、DBの排他制御、複数のtomcat間でのセッションの共有、ロードバランシング、

エラー時のリカバリ、などたくさんの処理があります。

これらは、信頼性設計、エラー設計、など様々言われているようですが、要求された機能から見ると

おまけ的に見えるため、かなり見落とされて、「後で実装すればいいや!」などしてしまいがちです。

それは大きな間違いです。

納品後にお客様に「何でオペレータが閲覧した情報が追跡できるようにログに出ていないんだ?」と言われても、困ります。

何が困るかと言うと、修正が全体に渡るので大変、というだけではありません!

まず、どういった場合に、どのようなレベルの追跡情報を出すかをお客様と相談して決めなければなりません。

そして、既に実装し終えているコードに追記するだけで良いならましです。

場合によっては設計全体を見直す必要があり、共通関数の引数を増やしたりしなければならず、

全体の引数の見直しと、コードの修正が必要になるかも知れません。

また修正後のテストについても、当然、「ログ出力くらいテストしなくてもいいや!」ということにはなりません。

テストも、正しく出力されていること、出力されたことで他の機能に影響がないこと(デグレ)、

など全体的にテストをしなければなりません。

非機能要件を最初の設計時に組み込んでおけば、テストは1度ですみますので、当然、稼働も縮小されます。

とにかく実装を急ぎたくなる気持ちは分かりますが、結局、非機能要件まで含めてお客様に合意をとり、

設計を終えた後に実装した方が、かえって早くて、不具合の少ないプログラムを作ることができるのです。

このあたり、具体的にどうしたらよいかを調べるのは大変かと思いましたので、

ここでは、質問形式の一覧に答えていくことでチェックできるようにしてみました。

以下のページのもくじでリンクをたどってみてください。

Created Date: 2015/03/24