ソフトウェアは、さまざまな機能を組み合わせて、必要とされる全体の処理を実現します。例えば、オンライン・ショッピングのソフトウェアは、ユーザー・インタフェースとビジネス・ロジック(顧客管理、注文管理、在庫管理など)という機能を組み合せることで実現します。必要なデータは、データベースに格納され、各機能はソフトウェアの一部として組み込まれます。もし、複数の注文があれば、その注文の単位でソフトウェアを並行稼働させることで対応します。このようなソフトウェアの作り方をモノリシック(巨大な一枚岩のような)と呼びます。 ただ、この作り方では、商品出荷の手順や決済の方法が変わる、あるいは顧客管理を別のシステム、例えば外部のクラウドサービスを利用するなどの変更が生じた場合、変更の規模の大小にかかわらず、ソフトウェア全体を作り直さなければなりません。 また、変更を重ねるにつれて、当初きれいに分かれていた各ロジッ

