Separation of concerns

| Main Article
| Discussion
| Related Articles  [?]
| Bibliography  [?]
| External Links  [?]
| Citable Version  [?]

|
|
|
|
|
|
|
|

This editable Main Article is under development and subject to a disclaimer.

[edit intro]

Separation of concerns is an engineering concept, widely used in software engineering, to separate a seemingly overwhelmingly complex problem into a set of more tractable concerns, each with its own technical solution. There will need to be careful engineering among the gateways and interfaces among the various "solution spaces".

One common approach to separation, in telecommunications, is between the consumer and provider of service. The key element in such separation is to understand what each side expects at their shared interface.

## Examples[edit]

### The Internet[edit]

Separation of concerns is crucial to the design of the Internet. In the Internet Protocol Suite great efforts have been made to separate concerns into well-defined layers. This allows protocol designers to focus on the concerns in one layer, and ignore the other layers. The Application Layer protocol SMTP, for example, is concerned about all the details of conducting an email session over a reliable TCP connection, but not the least concerned about how the Transport Layer protocol TCP makes that connection reliable. Similarly, TCP is not concerned about the routing of data packets, which is handled at the Internet Layer.

### The email system[edit]

Separation of concerns into two categories - administrative concerns, and process-level concerns, allows the development of simple models which facilitate better understanding of how email systems work.