設計/デザイン過去30年程度、システムは少しづつ形を変えながら、中央集中型と分散型を繰り返してきている。最初はメインフレームにダム端末という中央集中型。そこからミニコン、ワークステーション、PCの出現により、分散型になり、クライアントとサーバが分担して処理するようになった。インターネット、クラウドの出現により、中央集中型にまた戻ってきているが、モバイルの存在がクローズアップされてきて、また複雑になってきている。モバイルは常にインターネットに接続している(出来る)とは限らないため、一部クライアント側で処理できるようにする必要がある。クラウドも、IaaS、PaaS、SaaSの階層があり、PaaS、SaaSが必ずしも独自のインフラを持っているとは限らず、AWSなどのサードパーティのIaaSを使用しているかもしれない。環境はより複雑になってきている。その中でソフトウェア・アーキテクチャとしてはどのようなものを目指すべきなのか。networks).’「このような変化はソフトウェアエンジニアにどのようなインパクトを与えているのか。モジュール性がソフトウェアの設計とアーキテクチャで重要なコンセプトになっている。これにより、ソフトウェア技術の変化や、アプリケーションの一部を異なるインフラ間で移動させることも可能となる。これは、node.jsなど、サーバとブラウザで同じJavascriptコードを動作できる技術が成功している理由の1つかもしれない。モジュール性は、モジュール同士が呼びあい、ネットワーク遅延を引き起こす場合、性能面でマイナスとなる。オープンで相互接続されたアーキテクチャでは、開発者は接続できないといった場合に対するコンティンジェンシープランを用意しておく必要がある。従って、モバイル・アプリも、接続が制限されている場合でも動作する必要がある。このようなアプリは、例えば、ネットワークをスキャンし、接続可能な時にアプリ自身やデータを更新する。アーキテクチャが多拠点にまたがっていくと、攻撃を受けうるポイントが増え、個々のソフトウェア層間でのデータ転送時に攻撃を受けるかもしれないため、セキュリティ対策の必要性が増す。サードパーティのプラットフォーム(クラウド、モバイルネットワーク)上で、どのように機密情報を送信するかも決めなければならない。applications.’「ソフトウェアの次世代のインフラはどのようなものか。分からないが、ソフトウェア開発者は、先進のソフトウェア・アーキテクチャとアプリケーション性能という、時として矛盾する目的を達成するために、熟慮を要するようになるだろう。時として見通しを次のSprintの終わりまでに制限するアジャイルですら、ソフトウェア・アーキテクチャを決めるのは、長期的にアプリケーションを活かすためには重要な活動である。