Charlie Poole | 1 May 2002 01:10
Favicon

RE: Architecture

Laurent,

> > Can you explain the further why "making an architectural decision"
> > is an admission of incompetence?
>
> It expands into "I am making a commitment decision *now* about
> something on which it would be better to defer the decision, if I
> knew how to defer it, or ensure it is disentrenched, if I knew how to
> ensure that."

I don't see this as being any more or less of a commitment based on
whether you call it architecture. All through the development of an
application, you make decisions. Some of them you back out. Some of
them you modify. Some of them you keep. Of those you back out or
modify, some are harder than others. That's life.

I think the answer is to make the decisions that need to be made
when they need to be made and only then. But once you've made, unmade,
remade, backed out and put back in various decisions, there will be
a set of architectural decisions expressed in the code.

> Case in point, again : I will choose Java because I don't have enough
> experience yet in mixing language layers, such that I could switch
> between Java and Smalltalk at the drop of a hat.

As stated earlier, I prefer not to call anything that names a product
or language "architecture" but that's OK, it's still a very important
decision usually made early in a project. Often, the factors that lead
to that decision are rather trivial: we happen to have a bunch of
Java programmers around, so that's what we'll use. Is that a problem?
(Continue reading)

dhemeryy | 1 May 2002 01:10
Favicon
Gravatar

Re: Architecture

Hi Ron,

> Quality requirements imply architectural decisions?

Yep.

> Explain please.

First, some definitions.  By "quality requirement" I mean any
requirement about performance, maintainability, reliability, and so on
(what normal humans typically refer to as "non-functional
requirements").  By "architectural decision," I mean any decision that
significantly affects the system's quality attributes.

By defining quality requirements, you put constraints on the system's
quality attributes.  This increases the significance of those
attributes, which increases the significance of the decisions that
affect those attributes, which (by my definition) makes the decisions
more "architectural."

Now, you may not agree with my definitions for "quality requirements"
or "architectural decision."  But can you see how my definitions lead
to the implication you asked me to explain?

Dale

To Post a message, send it to:   extremeprogramming <at> eGroups.com

To Unsubscribe, send a blank message to: extremeprogramming-unsubscribe <at> eGroups.com

(Continue reading)

Laurent Bossavit | 1 May 2002 01:24

RE: Architecture

> OK... Here I'm getting to understand something. You think architecture...
> scratch that, you use the term architecture to mean (1) a process or
> decision (2) made early - often prematurely (3) and adhered to thereafter
> blindly. Hey! I'm against that too! :-)

You're almost there. On 1: I'm just targeting "decisions", I wouldn't 
call "architecture" anything which can be described as a process. On 
2: no, not necessarily early. Just those decisions which "cast a 
shadow", so to speak, on large portions of the code. Late decisions 
could conceivably have this effect. On 3 : no, "blindly" does not 
enter into it. Just the notion that they are adhered to because it 
would be too costly to just revise them.

> On the other hand, I'm talking about a subset of qualities and attributes
> visible in the code we have written, which in the judgement of the team
> constitute the essence of "how we did this application."

I understand that some people mean that when they say "architecture". 
I prefer not to, because a lot of confusion seems to result from it. 
For instance, language is definitely a part of "how we did this 
application", and is visible in the code. So are various coding 
conventions.

On the other hand some "architectural" things under this definition 
might not be visible in the code, for instance calling the app "three-
tier" because at the start of the project we had a vision of 
separating data storage from business logic, even if afterwards we 
did the usual and just sprinkled SQL everywhere.

> If you had five minutes to describe to me how your application works, I
(Continue reading)

Laurent Bossavit | 1 May 2002 01:30

Re: Architecture

Dale:

> First, some definitions.  By "quality requirement" I mean any
> requirement about performance, maintainability, reliability, and so on
> (what normal humans typically refer to as "non-functional
> requirements").  By "architectural decision," I mean any decision that
> significantly affects the system's quality attributes. 

Would you please give a few concrete examples of architectural 
decisions that significantly affect, for instance, performance, 
maintainability, and reliability ?

Thanks...

-[Morendil]-
The greatest obstacle to transforming the world is that we lack the
clarity and imagination to conceive that it could be different.
Roberto Mangabeira Unger

To Post a message, send it to:   extremeprogramming <at> eGroups.com

To Unsubscribe, send a blank message to: extremeprogramming-unsubscribe <at> eGroups.com

ad-free courtesy of objectmentor.com 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 

Ron Jeffries | 1 May 2002 01:48
Picon
Favicon
Gravatar

Re: Re: Re: Easy things first

Around Monday, April 29, 2002, 1:42:54 PM, J. B. Rainsberger wrote:

> Team          W   L   Pct   GBL
> Toronto       6   2  .750    --
> Baltimore     5   3  .625     1
> Boston        5   4  .556     1 1/2
> New York      3   5  .375     3
> Tampa Bay     1   6  .143     4 1/2

Here's the next installment. It's a long one, not least because it has
a complete listing.

==========================================

Well, OK, what shall I do now? There aren't really any interesting
problems left that I can see. I guess I'll make a little database,
sort it down and print a report. I wonder where my acceptance test
data is. My customer has been lax in providing a season's worth of
input. I guess I'll just make some up.

Here's my plan. I expect that I'm going to have some kind of object
like a League that holds the teams, but that would depend at least in
part on what form the input will really take, whether I have to know
what league the teams belong to or whether the data is segregated on
arrival, and so on. But I'm not going to create that object for a
while yet, until the code tells me more about what it wants to be. So
I'll probably build something more on the class side of Team for now.
We'll see after I write the test.

  def testReport
(Continue reading)

Ron Jeffries | 1 May 2002 01:52
Picon
Favicon
Gravatar

Re: Architecture

Around Tuesday, April 30, 2002, 7:10:46 PM, dhemeryy wrote:

> Hi Ron,

>> Quality requirements imply architectural decisions?

> Yep.

>> Explain please.

> First, some definitions.  By "quality requirement" I mean any
> requirement about performance, maintainability, reliability, and so on
> (what normal humans typically refer to as "non-functional
> requirements").  By "architectural decision," I mean any decision that
> significantly affects the system's quality attributes.

So "extensive testing" is an architectural decision, as is "do code
reviews"?

> By defining quality requirements, you put constraints on the system's
> quality attributes.  This increases the significance of those
> attributes, which increases the significance of the decisions that
> affect those attributes, which (by my definition) makes the decisions
> more "architectural."

> Now, you may not agree with my definitions for "quality requirements"
> or "architectural decision."  But can you see how my definitions lead
> to the implication you asked me to explain?

Yes. I don't think the definition corresponds to what people usually
(Continue reading)

Charlie Poole | 1 May 2002 01:59
Favicon

RE: Architecture

Laurent,

> > OK... Here I'm getting to understand something. You think 
> architecture...
> > scratch that, you use the term architecture to mean (1) a process or
> > decision (2) made early - often prematurely (3) and adhered to 
> thereafter
> > blindly. Hey! I'm against that too! :-)
> 
> You're almost there. On 1: I'm just targeting "decisions", I wouldn't 
> call "architecture" anything which can be described as a process. On 
> 2: no, not necessarily early. Just those decisions which "cast a 
> shadow", so to speak, on large portions of the code. Late decisions 
> could conceivably have this effect. On 3 : no, "blindly" does not 
> enter into it. Just the notion that they are adhered to because it 
> would be too costly to just revise them.

Can you explain in what way this is an interesting or useful definition?
That is, how do you use it to write better applications?

> > On the other hand, I'm talking about a subset of qualities and 
> attributes
> > visible in the code we have written, which in the judgement of the team
> > constitute the essence of "how we did this application."
> 
> I understand that some people mean that when they say "architecture". 
> I prefer not to, because a lot of confusion seems to result from it. 
> For instance, language is definitely a part of "how we did this 
> application", and is visible in the code. So are various coding 
> conventions.
(Continue reading)

Laurent Bossavit | 1 May 2002 02:09

RE: Architecture

> Can you explain in what way this is an interesting or useful definition?
> That is, how do you use it to write better applications?

Well, I have observed that whenever people start talking about 
"architecture", they are about to mention a decision that in all 
likelihood should be deferred, and at any rate not allowed to become 
entrenched.

Having the word attached to that distinction would, I hope, let me be 
clearer about why I wince when I hear the word used that way. That 
remains to be seen, as the distinction is no older than this thread. 
(Well, *this* particular instance of the thread, I mean. The general 
"Architecture" thread is quite old.)

> I think that "what's important about the structure of this program" is
> the architecture of the program. 

Reminds me of one project I'm working on right now : the most 
important things about that code are that it sucks, that it sucks, 
and that it sucks. (Duplication everywhere, encapsulation is 
something the original team probably hadn't heard of, or had heard of 
and thought it would give them cancer, SQL scattered all over the 
place, copy constructors that use memset and memcpy, diamond-shaped 
inheritance diagrams... You get the picture.)

> Basically, my perspective is that I only care about what we are putting
> into the code. If you talk to me about an architectural decision, I'll
> want to know how it affects the code. 

Me too. :)
(Continue reading)

Ron Jeffries | 1 May 2002 02:16
Picon
Favicon
Gravatar

Re: Architecture

Around Tuesday, April 30, 2002, 8:09:14 PM, Laurent Bossavit wrote:

> -[Morendil]-
> How come wrong numbers are never busy?

How do you know they aren't?

Ron Jeffries
www.XProgramming.com
The rules are ways of thinking, not ways to avoid thinking.

To Post a message, send it to:   extremeprogramming <at> eGroups.com

To Unsubscribe, send a blank message to: extremeprogramming-unsubscribe <at> eGroups.com

ad-free courtesy of objectmentor.com 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 

Charlie Poole | 1 May 2002 02:20
Favicon

RE: Architecture

Laurent,

> > Can you explain in what way this is an interesting or useful definition?
> > That is, how do you use it to write better applications?
>
> Well, I have observed that whenever people start talking about
> "architecture", they are about to mention a decision that in all
> likelihood should be deferred, and at any rate not allowed to become
> entrenched.

I've observed this too. That's why I'd like to change how we use the word.

Charlie Poole
cpoole <at> pooleconsulting.com

To Post a message, send it to:   extremeprogramming <at> eGroups.com

To Unsubscribe, send a blank message to: extremeprogramming-unsubscribe <at> eGroups.com

ad-free courtesy of objectmentor.com 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 


Gmane