
Software Architecture Patterns [pdf] - pykello
http://www.oreilly.com/programming/free/files/software-architecture-patterns.pdf
======
markbnj
As someone who has the word "architect" in his software job title I feel like
pretty much everything I read on the topic only serves to confirm that nobody
knows exactly what software architecture is. I felt that way after reading
"The Architecture of Open Source Software," which was essentially comprised of
a set of discussions of how various popular applications were put together at
varying levels of abstraction and without unifying themes of any kind. I feel
that way after browsing this PDF of architectural "patterns" too. When
"layered" and "event driven" are presented as sibling patterns at a common
level of abstraction I don't think there is any underlying principle at work
that makes sense. Or at the very least, if there is someone will have to point
it out to me.

~~~
userbinator
The one thing that I think everyone can agree on about software architecture
is that it involves abstraction - and often copious amounts of it.

I've heard "the job of architects is to add abstractions to a design; the job
of developers is to remove them"... possibly in reference to this article:

[http://www.joelonsoftware.com/articles/fog0000000018.html](http://www.joelonsoftware.com/articles/fog0000000018.html)

~~~
fsloth
That's a horrible description. The best people with "software architect" in
their title that I have worked with have focused on total system quality
through striving towards simplicity mainly by focusing on development _and_
tooling _and_ using their position as the arbiter of technical decisions to
guide the system under development to coherent whole that fullfills the
business requirements in a technically sound way.

The most complex design tool outside of an IDE I've seen these guys use is
plaintext and simple diagrams. They grok the thing that is being built in
their heads from the CPU caches to the end-user abstraction.

The most horrible architects I've observed deliver UML:s, search for the most
complex technical thing their mind can think of to solve a problem and then
after saving the UML to disk think their job is "done" and hand-wave through
the rest of the development pointing to the UML boxes.

The mediocre architects are a mix of these two.

An architect who is not participating in hands-on coding is a serious red-flag
about the quality of the development organization in most instances to me. I'm
sure there are counter-examples :)

~~~
ahawkins
> That's a horrible description. The best people with "software architect" in
> their title that I have worked with have focused on total system quality
> through striving towards simplicity mainly by focusing on development and
> tooling and using their position as the arbiter of technical decisions to
> guide the system under development to coherent whole that fullfills the
> business requirements in a technically sound way.

Thanks for the this. This paragraphs sums up perfectly what I strive for in my
day to day work. It's clear and concise.

~~~
markbnj
Agreed. That is as good a description of the architect's role as I've read. It
is certainly what I try to do on a daily basis.

------
petercooper
I definitely support direct linking to things on the Web, but since O'Reilly
probably meant for this to only be grabbed via an initial landing page, I
figured I'd link to it too in case anyone wants some background separate to
the PDF: [http://www.oreilly.com/programming/free/software-
architectur...](http://www.oreilly.com/programming/free/software-architecture-
patterns.csp)

~~~
nofinator
Yes, although it's a free eBook, O'Reilly wants you to register with your name
and e-mail address.

If you do that, you can also get the book in ePub or Mobi format.

------
Zigurd
It's a good overview. But you can only touch on things at an introductory
level in 45 pages, so don't expect all the issues to get explored.

I had one of those "So THAT'S what he was trying to do" moments when I
realized that the architecture of an Android API layer that a client was
having trouble with was attempting to be a microservices architecture. Instead
it bollixed up the way Cursor objects work by trying to pass them across an
AIDL-based remote API.

I bet that's not the last time I see that misapplication of a pattern.

------
emrox
epub: [http://www.oreilly.com/programming/free/files/software-
archi...](http://www.oreilly.com/programming/free/files/software-architecture-
patterns.epub) mobi: [http://www.oreilly.com/programming/free/files/software-
archi...](http://www.oreilly.com/programming/free/files/software-architecture-
patterns.mobi)

------
yodsanklai
Software architecture is difficult to learn. Unlike "small scale" programming,
you don't have instant feedback on the validity of your solution and you can't
easily experiment with different solutions. Actually, as a student, I don't
think I ever had a class on this topic.

I think what could be great is to have a tool that allows you to "program" and
analyze architectures. And then exercises to experiment with varieties of
architectures.

------
userbinator
A little offtopic, but does anyone else think a 5MB+ PDF for 55 pages of
mostly text is unusually large? I was expecting somewhat more content for that
size... it also doesn't appear to be of the "every page is an image of the
text" type.

~~~
zerocrates
It embeds 12 fonts. I'd assume that accounts for a somewhat significant amount
of that size.

