The Pragmatic Craftsman         :: Simplicity from complexity :: | About Me |

You are here: The Pragmatic Craftsman > August 2007

What is a good software architecture? August 30, 2007
Definition of Software Craftsman August 30, 2007
New version of HTML: 5 August 9, 2007

What is a good software architecture?

Constructing a good architecture is a tough task. In my developer’s career, I have not come across too many architects that really do a decent job creating good – cohesive - architectures. That just reiterates my point that architecting a system is not an easy task.

What is a good architecture, though? What are its characteristics? I found some definite answers to this question in a book I’m reading now, Object Oriented Analysis and Design with Applications, 3rd edition. These are some of the best definitions and views on software architecture I have come across.

“A system that has a sound architecture is one that has conceptual integrity. Having a “clean internal structure” is essential to constructing a system that is understandable, can be extended and reorganized, and is maintainable and testable.”

“There is no right way to craft the architecture of a given system.”

    Three Common Attributes of Good Software Architectures

  1. They are constructed in a well-defined layers of abstraction, each layer representing a coherent abstraction, provided through a well-defined and controlled interface, and built on equally well-defined and controlled facilities at lower levels of abstraction.
  2. There is a clear separation of concerns between the interface and implementation of each layer, making it possible to change the implementation of a layer without violating the assumptions made by its clients.
  3. The architecture is simple: Common behavior is achieved through common abstractions and common mechanisms.


  4. Architectures constructed in this way tend to be less complex and more robust and resilient. They also enable more effective reuse.



Definition of Software Craftsman

Here's a great definition of what a software craftsman is. It's also similar to the way I think. And this is also part of the Introduction in the book Agile Java.

I am a software craftsman. I have spent much of my software development career trying to quickly build solutions to problems. At the same time I have tried to ensure that my solutions demonstrate carefully crafted code. I strive for perfection in code, yet I know that it is unattainable, particularly with the constant pressure from business to get product out the door. I take modest pride in the code I build daily, yet when I look at the code I wrote the day before, I wonder, "What the heck was I thinking?" This is what keeps the craft challenging to me—the constant desire to figure out how to do things a little better the next time, and with a little less pain than this time.

Reference
Safari eBooks - ACM - 0131482394 - Agile Java™: Crafting Code with Test-Driven Development


New version of HTML: 5

It's been some time since we had an update to the HTML language. Actually, it's been years! After such a long time, things are starting to heat up again. HTML 5 is the next worked-on version. By reading this article, below, I got a glimpse of what's coming. What can I say? A LOT of changes are coming. Nice improvement, in my opinion.

Hypertext Markup Language (HTML) 5 introduces new elements to HTML for the first time since the last millennium. New structural elements include aside, figure, and section. New inline elements include time, meter, and progress. New embedding elements include video and audio. New interactive elements include details, datagrid, and command.

Reference
New elements in HTML 5


© getCopyDate() ?>

Random Quote

Search

 

Topics

Architecture & Design :12
Better Coder :30
Books :43
Books Recommended :18
Buzzwords :5
Career :25
Craftsmanship :15
Java :15
Quotes :25
Recommended :9
Software Engineering :3
Uncategorized :33
Web Development :1

Archive

May 2008 (1)
April 2008 (2)
March 2008 (1)
February 2008 (1)
January 2008 (2)
November 2007 (1)
October 2007 (3)
August 2007 (3)

...since January 2002

Currently Reading


:: See list of books I finished reading

Info

© 2001-2008 Stanley Kubasek About me :: Contact me