This page contains information on material I wrote or presented in the past. Refer to my new company website for more recent information.
Software Systems Architecture
See the architecture page for information on my architecture book.
Introduction to Object-Oriented JavaScript
OK, this is a bit of a cheat since it is not by me but by my son!
He has written a very good article on how to write object-oriented JavaScript. This is not as straightforward as you might think, since you have to define methods and variables at run time using prototypes, rather than using a static declarative syntax as you would in C++ or Java. Here's the introduction:
Many JavaScript programmers overlook or do not know of the ability to write object-oriented JavaScript. Whilst not conventionally an object-oriented language, JavaScript is a prototype-based language, which means that inherited classes are not derived directly from a base class, but rather are created by cloning the base class which serves as a prototype. This can be used to one's advantage in implementing encapsulation, inheritance and polymorphism in JavaScript, therefore creating a sense of object-orientation.
Object-oriented JavaScript also has several advantages. As it is an interpreted language, it means that methods and properties can be added to the class at any time, and do not have to be declared in the class constructor, like other object-oriented languages such as C++. As JavaScript supports variable data types, class properties do not have to take a fixed data type (such as boolean or string) but rather can be changed at any time. Furthermore, object-oriented JavaScript is more flexible and efficient than procedural JavaScript, as objects fully support encapsulation and inheritance and polymorphism can be implemented using the prototype property.
You can find the article on the Code Project website here. If you find it useful, you can vote for it here (free registration required).
SPA 2007 (Systems Continuity and Anti-Patterns of Project Execution)
SPA2006 (Moving Beyond UML)
Article in Computing on Architecture vs. Design
InformIT Article on Software Architecture
Eoin Woods and I wrote an article for InformIT, the website of Pearson Education (whose subsidiary Pearson published our book).
InformIT contains a wealth of software-engineering reference material, including articles on everything from Business and E-commerce to Web Development via Digital Lifestyles, IT Management and of course Architecture. Much of it is free (registration required for some services) and you also get a book discount when you join. Even if you're not interested in my article, InformIT is worth a visit.
The title of the article is So Now I'm A Software Architect. What Do I Actually Do? and it describes the role of software architect and provides answers to some key questions, such as:
- Who are our clients?
- To whom are we accountable?
- What are we expected to deliver?
- What is our involvement once the architectural design has been completed?
- Where are the boundaries between requirements, architecture, and design?
The article focuses on the practical tasks you must undertake to produce the architectural description. You can find it on the InformIT website here, or in PDF form here.
SPA 2005 ( Using Principles to Justify Architectural Decisions)
OT2004 (Viewpoints and Perspectives)
Eoin Woods and I gave a sold-out presentation at OT2004.
The title of our talk was Getting to Grips with Architecture Using Viewpoints and Perspectives and in it Eoin and I explored many of the themes in our book. Here's the abstract:
Most proposed approaches to software and systems architecture today suggest an approach to design and description based on the use of a number of related viewpoints. A recent IEEE standard for recommended practice (1471) standardises this approach for architectural description.
In practice, a lot of software architects haven't really heard much about viewpoints and their use in architectural description. Fewer still have had the chance to work with other architects to identify the set of viewpoints that are necessary and useful when designing systems of various types.
This tutorial will introduce the viewpoint oriented approach for those unfamiliar with it and provide an update on recent developments (such as IEEE 1471). It will then introduce a number of different existing viewpoint sets and move on to a group exercise where the tutorial participants work together to identify the viewpoint sets relevant to the kinds of systems that they work on.
A limitation of the viewpoint oriented approach is that it doesn't explicitly guide the architect in dealing with the system's quality properties that are so crucial to building effective large scale systems. A new concept - the perspective - will be introduced for dealing with quality properties during architectural definition. Again, a number of existing perspectives will be introduced and a group exercise will allow participants to identify those which are of most relevance to their application domains.
More details can be found here.
Data Management Conference 2003 (Large-Scale Package Implementations)
I gave a presentation at the Data Management and Information Quality Conferences Europe 2003 on 28 October 2003.
The subject of my talk was Effective Data Integration in Large-Scale Package Implementations and you can find more information here.
Here is the synopsis:
A common view of implementing package software in large organisations is that the largest part of the development effort is taken up with configuring and customising the software. Because this is a known and repeatable procedure, risks are low, timescales can be accurately predicted and the probability of a successful outcome is high.
In practice, this view could not be further from the truth. Virtually every package implementation programme brings with it two massive data architecture challenges: migration of your existing data and integration of your existing applications. This presentation will help you understand how to develop and validate an end-to-end information architecture model which encompasses your legacy systems, the new package, and the interfaces between them. It will also address a range of package implementation issues such as data quality and acceptance, heterogeneous systems management, resilience and recovery, and performance.
You can find a copy of this paper here.
Architecture Talk to BCS
What Software Architects Can Learn from Building Architects
I wrote this article for The Connection, the magazine of the Tandem User Group. It compares the practice of software architecture with the much older and more established practice of building architects. Although there are some superficial similarities, we can actually learn a lot more from the differences between these two professions.
This article was published late in 2001. Here is a proof copy.
Knowledge is Power
This is an article I wrote for EAI Journal. The executive summary reads as follows:
Data architectures address the context, semantics, and inter-relationships of data components at the enterprise level. But how should you go about building one? A data architect needs to consider ownership, latency, and transaction management to turn raw data into information - and ultimately knowledge.
You can find the article on-line here, and I have a copy of it here.
Configuring Multi-Boot Personal Computers
Software Documentation
You can find documentation on my free software here: