Architectual Styles - Part One : Introduction
Brian LeGros | July 21st, 2007 | seriesJust recently for my job, I completed a training packet for new hires that will hopefully aid us in an internship program we’re hoping to start. In part of the packet I try to expose our new developers to architectural tools, concepts, and styles. This is meant to empower them to understand the designs they’ll be asked to work with and begin to brainstorm about possible ways that we can improve our own process. What I’d like to do for my blog in this series of posts is go over those conversations and talk about the paths I choose to follow architecturally and why.
So as an introduction, let’s talk about the types of software I build so my mindset can be understood. Web applications are obviously first on my list. The context in which I usually build these applications is to expose new or existing business processes via the web. Integration is a big issue I have to be address on a daily basis, not only with third parties, but internally with other teams in the department. These applications are usually written with a common subset of web technologies (XHTML, CSS, JavaScript, Flash) and then I usually find myself using some combination of ColdFusion, Flex, and/or Java. Typically these applications are constructed for an audience of users external to company, but more recently I am building “intranet” based applications as well. The other type of software I find myself building is that of components. Usually these components are constructed as services later to be integrated with an ever evolving SOA. I usually find myself using Java because of the cool stuff that the JEE world can provide with some pretty descent maturity (i.e. - JTA, JMS, JPA, etc). I really like to use Spring as a container for these JEE tasks as well rather than something like EJB. The intended audience for these components are usually developers within the same or other teams of the department.
With that being said, this is how I will be presenting this series of posts:
- Introduction
- Coupling and Cohesion
- Domains
- Layering
- Business
- Integration
- Presentation
- Styles
- Light-weight Design
- Heavy-weigh Design
- Preferences
Please understand that I’m taking an object-oriented approach to design in this series. I am also taking the approach of an upfront design rather than something like TDD/BDD which jumps right into code (that’s a discussion for another day). I will use UML to help represent my thoughts (as best as possible) and will attempt to approach this from a language agnostic perspective. Look for more posts over the following weeks. I hope you enjoy the series!
NOTE : Please take what I have to say as my opinion and nothing else. Recently, my readership has spiked, so the last thing I want anyone to think is that I’m telling them how to design their software. These are practices that worked well for me and the last few companies that have employed me and I want to share them with the community.
Part 2 : Coupling and Cohesion >>
Tags: oop, soa, uml
Related posts

Discussion
July 21st, 2007 at 5:59 pm
Looking forward to it!
July 22nd, 2007 at 7:14 pm
So now the internet gets a better training then you gave to me… When will it stop Brian
“Welcome to *** (insert company name), Here is your training”, says Brian LeGros as he hands Daniel a SQl Server 2000 Book.
That packet has come a long way and I look forward to seeing how it works out here, and at the office ;-).
Add A Comment