Click here to Skip to main content
15,905,144 members
Home / Discussions / Design and Architecture
   

Design and Architecture

 
GeneralRe: How to create DFD Pin
led mike29-Jan-09 9:20
led mike29-Jan-09 9:20 
QuestionAvoiding Circular References with Application Architecture Pin
Leftyfarrell20-Jan-09 11:46
Leftyfarrell20-Jan-09 11:46 
AnswerRe: Avoiding Circular References with Application Architecture Pin
led mike21-Jan-09 5:13
led mike21-Jan-09 5:13 
GeneralRe: Avoiding Circular References with Application Architecture Pin
Leftyfarrell21-Jan-09 13:34
Leftyfarrell21-Jan-09 13:34 
GeneralRe: Avoiding Circular References with Application Architecture Pin
Jon Rista21-Jan-09 18:34
Jon Rista21-Jan-09 18:34 
GeneralRe: Avoiding Circular References with Application Architecture Pin
Leftyfarrell22-Jan-09 1:27
Leftyfarrell22-Jan-09 1:27 
GeneralRe: Avoiding Circular References with Application Architecture Pin
led mike22-Jan-09 4:59
led mike22-Jan-09 4:59 
GeneralRe: Avoiding Circular References with Application Architecture Pin
Jon Rista22-Jan-09 5:35
Jon Rista22-Jan-09 5:35 
led mike wrote:
Interfaces eliminate coupling


I just thought I would point out something important. Contrary to common opinions, interfaces do not really "eliminate" coupling. Coupling exists, and its such a thing that can't really be eliminated. It can be mitigated, and interfaces can help mitigate coupling. When we directly create and use a concrete implementation class, we are "tightly coupled" to an implementation (the consumers tightly couple with their provider), because we are bound not only to an API but a specific implementation. Interfaces allow us to reduce the degree of coupling, since when we create an interface, we are "loosely coupled" through the interface to an implementation. So long as the interface doesn't change, we can modify the concrete class, replace it with another, etc. without requiring modification of the code that uses the interface. We can gain the same thing with abstract classes (technically speaking, an abstract class with zero implementation is an interface). But its important to note...you ARE "tightly coupled" to the interface.

Coupling also comes in a variety of forms, and can be encountered at different levels of a project as well. One class can be coupled to another (tightly via direct instantiation, or loosely via interface/abstract). One assembly can be coupled to another assembly. A layer in an architecure is coupled to another layer, as well as to cross-cutting concerns. Services can be coupled to other services. Code can be coupled in time to the running length of other code. Coupling is a very broad issue for software architecture, and new aspects of coupling are always being discovered as we discover new ways to write software and solve other problems.

Key thing though...coupling can never really be eliminated. Your always coupled to something, but what that something is determines whether the coupling is manageable or not. Thats why most (if not all) problems in software architecure can generally be solved by abstracting another degree...separating one thing from another via an API of some kind increases independant variability and reduces coupling.
GeneralRe: Avoiding Circular References with Application Architecture Pin
led mike22-Jan-09 6:08
led mike22-Jan-09 6:08 
AnswerRe: Avoiding Circular References with Application Architecture Pin
Jon Rista22-Jan-09 5:11
Jon Rista22-Jan-09 5:11 
AnswerRe: Avoiding Circular References with Application Architecture Pin
Moim Hossain22-Jan-09 23:41
Moim Hossain22-Jan-09 23:41 
GeneralRe: Avoiding Circular References with Application Architecture Pin
Jon Rista23-Jan-09 4:47
Jon Rista23-Jan-09 4:47 
QuestionRe: Avoiding Circular References with Application Architecture Pin
led mike23-Jan-09 5:23
led mike23-Jan-09 5:23 
AnswerRe: Avoiding Circular References with Application Architecture Pin
Jon Rista23-Jan-09 5:44
Jon Rista23-Jan-09 5:44 
GeneralRe: Avoiding Circular References with Application Architecture Pin
led mike23-Jan-09 7:00
led mike23-Jan-09 7:00 
GeneralRe: Avoiding Circular References with Application Architecture Pin
Jon Rista23-Jan-09 7:57
Jon Rista23-Jan-09 7:57 
QuestionRe: Avoiding Circular References with Application Architecture Pin
led mike23-Jan-09 9:19
led mike23-Jan-09 9:19 
AnswerRe: Avoiding Circular References with Application Architecture Pin
Jon Rista23-Jan-09 9:26
Jon Rista23-Jan-09 9:26 
GeneralRe: Avoiding Circular References with Application Architecture Pin
led mike23-Jan-09 10:53
led mike23-Jan-09 10:53 
GeneralRe: Avoiding Circular References with Application Architecture Pin
Jon Rista23-Jan-09 11:28
Jon Rista23-Jan-09 11:28 
GeneralRe: Avoiding Circular References with Application Architecture Pin
Leftyfarrell6-Feb-09 8:27
Leftyfarrell6-Feb-09 8:27 
QuestionDisign of Web service Pin
mpavas14-Jan-09 0:11
mpavas14-Jan-09 0:11 
AnswerRe: Disign of Web service Pin
Jonathan Davies14-Jan-09 5:25
Jonathan Davies14-Jan-09 5:25 
AnswerRe: Disign of Web service Pin
Moim Hossain22-Jan-09 23:43
Moim Hossain22-Jan-09 23:43 
GeneralRe: Disign of WIndows Service Pin
mpavas24-Jan-09 17:09
mpavas24-Jan-09 17:09 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.