住所録アプリケーションの設計

このコンテンツは、(というかこのサイトのどのコンテンツもそうですが)、筆者の個人的な考えや趣味のみを反映しており、筆者の勤務先とは関係ないことを念のために書いておきます。
勤務先ではこんなことやってるよ、とかではありません。念のため。

というようなことを決めていきます。

住所録アプリケーションの要件

2009/06/22

設計するにしても、「どんなことが必要とされるのか」を決めないと取り掛かりにくいです。
ということで、進捗重視であまり深い検討はしませんが、決めてみましょう。

業務要件(機能要件)

非機能要件

もっといろいろやりたいんですが、やってると時間がいっぱいかかりそうなので、こんなところで。
実際のお仕事では、要件の検討をおろそかにして先に進めると、まず間違いなく痛い目にあって血の涙を流しますのでご注意を。

住所録アプリケーションのデータ項目の設計

2009/06/22

操作や機能から先に考えるか、どんなデータを扱うかを主眼に考えるかで、設計のアプローチを分類する手法があります。
扱うデータを主眼に考えるのはDOAと言います。
誰ですかテクモの乳揺れ格闘ゲームを思い浮かべた人は。あのXtreme Beach VolleyballをプレイするためだけにXBOX買った友人(私じゃないよ!)もいます。何もかも懐かしい。
えーと、暴走はこのくらいにして、この場合のDOAはデッドオアアライブではなくてデータ志向アプローチということです。
業務システムの設計では、比較的「堅い」手法として知られています。
この企画では、そんなに頑張ってDOAするつもりはないんですが、業務アプリ開発において判りやすい手法としてちょっとだけやってみます。

ここで住所録で扱うデータを考えます。
(実際に、要件から、ユーザに使われるかどうか、が問題です)

こんなところでしょうか。
電話番号とかe-mailアドレスとか郵便番号とか複数住所あるだろうとかご指摘が聞こえてきますが、要件をものすごく単純にしているので、扱うデータも単純です。

ところで、氏名を姓と名に分ける必要はあるでしょうか。あるいは、住所をこのように分ける必要はあるでしょうか。
これは、どう使われるかどうかが肝心です。

たとえば、姓と名で別々にソートするとか、家族単位を管理するので姓を認識したいとか、そういう要件があるなら氏名を分ける理由になります。
グローバルになると、姓名の表示順が違ったりする(そして親しみを持たせるために名のみを表示するとか)あったりします。
が、今回の要件には含まれていないのでとりあえず繋げてます。

では住所はどうでしょうか。
都道府県別にソートするとか検索するとかあれば、これは分ける必要がありますし、「都道府県」を正確に入力する必要があります。島根県を嶋根県と打ったりしては困るわけです。
そのため、都道府県をルールか台帳(マスタ)で用意して、それと整合性のチェックが必要になります。
今回はどうでしょうか。要らないですね要件にそういうのないですから。(住所のチェックもないし)
実際の仕事では、ここで、もしこの機能がいるんじゃない?と思ったら、「ないけどいーんですか」とか確認してあげてください。
上流工程での忘れものは、できるだけ早く見つけたほうが、修正に流す血は少なくて済みます。

今回は別に要件変更ないので

おおわ、なんか一気にツマラナクなりましたよ?

それにしてもこれは単純でどうにもソソらない。
そんな動機で要件変更は普通しないんですが、メモには文字列じゃなくて画像とか動画とか扱えるようにしたいですよね。
せっかくSilverlightなんだし。でも動画とかいってもソースデータがないですが。
今はこれ(全部文字列)で行きますが、様子をみて要件にマルチメディア対応を追加することを検討しましょう。
マッシュアップでなんとかなりますかねえ。

あと、もうひとつ、要件がありましたね。「よく使う住所データを一覧する機能がある」。正直やめればよかった。
よく使う、の定義どうしましょう。「過去に表示させた10件、最近見た順」とかにしましょうか。
あるいは、見た回数を管理して、回数多い順、というのもアリですね。
そのほかいろいろ指標的なデータを組み合わせて違和感ない「よく使う」を実現する…のが王道ですが、この企画ではさくっと「過去表示させた10件、最近見た順」でいきましょう。
あ。もちろん本当のお仕事では、こういった言葉の定義は要件定義の時にはっきり決めます。
そうすると、表示させた日時がデータに必要ですよね。
このほか、住所録でよくあるのは「最近データ追加した人」「最近情報変更した人」とかで、それぞれそれらを実現するための項目がデータに必要になりますが、今回は要件から抜けてますので特に考えません。

すると、結局

という感じになります。

こんな風に、このデータ(項目)がどのプログラムで消費されてどうユーザーに使われてどんなデータに変わっていくのか、を主眼に見て設計していくのがDOA風味なのですが、やっぱりこの住所録くらいだとちょっと大げさにすぎて、あんまり有効じゃない感じがしますね。
本当はER図を書こうかと思ったんですが、リレーションがないものなあ。
メモだけ別に出してリレーション張るか?いや、シンプルでいけるうちはこのまま行ってみましょう。
ただ、DOAは巨大な業務システムを矛盾を少なく組み上げるのには有用なアプローチではあります。

操作と画面の設計その1

2009/06/22

なんで「その1」かというと、今日はここで終了だからです。時間切れでした。

まっさきにここから始めるアプローチもありますね。
それはさておき、操作と画面は密接に絡み合っていますし、このよしあしが作業する人の生産性を決定づけたりするので、本来ならば慎重に検討し、そして結果として大胆なイノベーションが求められる分野です。
ユースケース分析などからはじめてしっかり練りこんだほうが、いいものができます。
今回はなんちゃって設計なので、おおむね、以下のことだけ考えます。

とりあえずユースケース図:


各詳細の説明は省きます。省いていいですよね?
あ。番号は、単純にツールでツリー表示したときにその順に並んでいてほしいからで、特に意味はありません。

とりあえずシーケンス図:







なんかやっと開発につながりそうな図が出てきましたね。

とりあえず画面遷移図:


うわあ。
こうしてみると画面遷移が煩雑で激しくウゼーですね。
ちょっと設計を変更して、画面遷移もっと単純になるようにしましょう。
たいしたことしたいわけじゃないのにこんなに画面が要るのは、ちょっと作る気がうせますねこれは(苦笑)

さっさと実装したいのは山々ですが、もうしばらく設計が続きます。

続 操作と画面の設計

2009/06/23

さて、画面遷移図みたら、やりたいことの割りに複雑で超ダサい、という感じだったので、ちょっと見直しましょう。
設計変更です。
確定のときに、いちいち確定画面を出すんじゃなくて、一気に一覧画面に戻るというのはどうでしょうか。
一覧画面の一部に「〜〜を変更しました」とか「〜〜を削除しました」とか出てれば、あえて確定画面を表示させる必要はなさそうな気がします。
そういう風に画面遷移を作り直して見ましょう。

とりあえず画面遷移図その2:


てな感じでどうでしょうか。画面が減ったんでずいぶんすっきりした感じがあります。
画像のイメージがちがうのは、使うツールを変えたからです。
さっきまでは、JUDE Communityを使っていたのですが、ここからは、Visual Studio 2010 betaでモデリングプロジェクトを作成して作図してます。
そういえばモデリングできるようになったんだよなと。
UMLツールとしての使いやすさは、JUDEのほうに分がある感じがしますね。
矢印位置の微調整とか、アクティビティ(この図だと楕円)を動かしたときに自動で矢印が追従するんですが、その追従がかなり馬鹿で、図がすごく見難くなってしまい、いちいち、ちまちまと矢印調整をしなければならないのが不満。
JUDE(と、私はあとSparxのEnterprize Architectを使いますがそれも)はそこらへんのさじ加減が上手です。
これはVisual Studio 2010に関しては今後の洗練に期待。
…って、フィードバックに送信すればいいのかな。不具合報告などじゃないので微妙…(空気読めない)。

さて、この画面遷移図に従って、シーケンス図を書き直してみました。

とりあえずシーケンス図:

起動

検索→詳細

検索→変更

検索→削除

追加

終了

これも、Visual Studio 2010 betaのモデリングプロジェクトを使用。
うーん。作図中にコメントを書いても、画像にコピーできないんだな。ラベル(というのか、図の題名)もコピーされない。
あと、これは厳密にはあっているんだけど、シーケンス図にアクターが置けない。(ライフラインになる)。
ユーザーとシステム間の対話だけを整理するシステムシーケンス図書くときにちょっと違和感あるかも。
それから、一度置いたメッセージのやりとりの位置(上下位置)を微調整することが出来ない。ドラッグで上下入れ替えたりしたいこともあるけどだめでした。
もしかしたら、私が知らないだけでいろいろと方法はあるのかもしれませんが、JUDEやEnterprise Architectだと何も考えずにできていたんで、操作性の洗練はこれからかも。
使ってるうちに楽な方法が見つかるといいな。
今回は使ってないけれど、「分岐」が使えなそうなのも改善してほしい。
最左のライフラインに活性化がないのもちょっと違和感。
ここまできたら、せっかくだから?ユースケースも作図しなおしてみましょう。

とりあえずユースケース図:


特に変わってないので作図ツールだけ変えた感じです。
関連を示す棒のところに、「1」が表示されて非常にウザいのですが、これがうまく消せません。
そのうち消し方見つけたら消しておきます。

データ項目の設計の見直し(考慮漏れを発見)

2009/06/23

画面遷移を直してる最中に気がついたんですが、PID(パーソナルID)というか、個人識別子がないですね。うっかりうっかり。
なんとなく個人識別は名前で考えていたんですが、結婚して姓が変わるケースもありますよね。
変更画面で、何を変更する?と考えていたときに、名前も変更するだろうと気がつきまして、おわ、それじゃ個人識別するの名前じゃだめじゃないかと。
ということでPIDを導入します。
ちょっと型が微妙なんですが、実装言語側で便利な型があるかもしれないんでここではあんまり縛らないでおきます。
最大件数が決まってるときは、その件数が識別できるサイズの数値だったりしますが…。

レビューしないで進んでいるんでこういうことになるという…あまりにも初歩的な過ちです。
各工程で、きちんとした観点をきめてレビューをする必要性を身をもって示してしまいました。
あーはーはー(乾いた笑い)

以下次回…。
あと、構造の設計やって画面(やっとBlendが動く)に行く感じです。
先長いなー。まあ業務アプリの水流だとじれったいですな。
ああ早く実装したい。でも、もうちょっと設計。


このコンテンツのトップ Top of Site

Copyright (c) 2009 Takao Tamura