設計の事始め(その1)

ソフトウェア設計コンサルタント、っていう職種があるかどうかは怪しいのですが、そういう名刺を作ろうかなと画策中です。それで、コンサルタントって名乗るからには、何かをサポートできないといけないですよね。当然ですが。
設計というのが何処の部分を示すのかというと、ウォーターフォール的に言えば、要件定義と開発/実装の間です。そして、重要なのは先のエントリで説明しましたが、プログラム言語に依存しません。勿論、プログラム言語特有のメリットを使う場合もあるでしょうが、システムをトップダウンで見たときは、特定のプログラム言語、ライブラリに依存しないほうが、実装上の選択肢が多くなり、開発費等のコスト削減に寄与できます。当然、スケールも柔軟に考えることが可能です。

そんな訳で、最初は「システム設計」から入りましょう。

システム設計なんて大層な名前がついていますが、所謂、どんなシステム構成にするの?ってのを図示します。
システム構成のパターンは、ほぼ決まっています。

・スタンドアローンのアプリケーション(インストールアプリ、ゲーム)
・クライアント/サーバー型
・不特定多数のWEBサイト
・特定人数のWEBサイト(SNS)
・UIを持つWEBサービス(ブログツール)
・UIを持たないWEBサービス(金融、株式データサービス)

などです。この他にもいくつかあるでしょうが、大抵のものはこの範囲におさまってしまいます。
これにデータベースの有無が関係します。データベースの有無は、既存のデータ/テーブルを使うのか、新規にデータベースを使って良いのか、に関係してます。
これらを図に書くと、

■スタンドアローン型
20091031_01

■クライアント/サーバー型
20091031_02

■不特定多数のWEBサイト
20091031_03

■特定人数のWEBサイト
20091031_04

■UIを持つWEBサービス
20091031_05

■UIを持たないWEBサービス
20091031_06

となります。
新規システムの場合は、ネットワーク回線速度も含めてすべて設計する訳ですが、ほとんどの場合は既存のリプレースになります。なので、それぞれの箱や線について、既存の制約を書きだしていきます。

例えば、不特定多数のWEBサイトを再構築する際のチェックポイントを抜き出します。

20091031_07

チェックポイントの抽出は簡単です。

・接続点
・動作点(コンピュータそのもの)

にマークを付けます。動作点については、

・CPU
・DISK
・MEMORY

を調べます。この根拠は microsoft のパフォーマンスチューニングのwebページにあります。
# ちょっとリンク先を失念。

と言う訳で、システム構成を決めるときには、

・CPU
・DISK(永続化の容量)
・MEMORY(必要メモリ、推奨メモリなど)
・NETWORK(回線速度)

を決定します。これはシステム要件(応答速度、1分間の応答数)から来るもので、そのままシステムを構築するときのハードの値段に関わってきます。

# SE的に見れば、二重化の問題もありますが、ここでは
# ソフトウェア開発の視点で見ています。

と、ここまでできればシステム設計の基本は完成です。
逆に言えば、先の要件(CPUやDISKなど)を満たさないシステム設計は意味を為さないので注意が必要です。

なところで、その1はおしまい。事始めなのでこれくらいにしておきます。
その2は、先にシステム設計/構成を、もっと論理的に考える方法を説明します(予定)。

カテゴリー: 設計 パーマリンク

設計の事始め(その1) への2件のフィードバック

  1. k1496 のコメント:

    >システム構成のパターンは、ほぼ決まっています。

    やっぱり、、そうですよね。。
    一般企業のシステムであればなおさら。

    言語に依存しない、というのは実感してます。
    というか、そういう目で眺められることを目標にしています。

  2. masuda のコメント:

    この手のテンプレートは、大手SEであればネットワーク部門が大抵持っている(暗黙知も含めて)はずなので、
    それほどブレはないのかなぁ、と思っています。自社サーバーの導入も含めて。
    特に中小企業の場合は、ほとんど典型的なパターンだし。

    ネットワーク構築の場合には、ルータやらIPの設定やらが入ってくるので、
    ・ネットワーク機器の選定
    ・ネットワークの取り回し計画(設置階が異なるととか
    の考慮が必要ですが、ソフトウェア開発には、論理的な設定があれば十分。

    となると、トポロジー的な設定が頭に入っていれば、この手のシステム構築はそんなにパターンはないでしょうね。
    むしろ、要求定義の中に機能外要件(応答時間数とか)の問題が、ネットワーク構築には必要です。

コメントは停止中です。