Architecture Quality Attributes

Architecture Quality Attributes (a.k.a. QAs) are used to determine if our architecture is fit for a particular purpose. Qualities must be accommodated in a system's architecture over and above basic functionality. It is too often that functionality takes the front seat, indeed sometimes the only seat. The functionality, however, should be the primary concern of the ... Read more Architecture Quality Attributes

Attribute-Driven Design Process

Attribute-driven design (ADD) process allows us to use a recursive method for explicitly representing of quality attributes as well as explicitly stating association between architectural decision and quality attributes. To begin the process of ADD, we need a set of functional requirements (e.g. use-cases), quality attributes (ideally expressed through design scenarios) and any further system constraints ... Read more Attribute-Driven Design Process

Scenarios - how to claim your architecture is good?

It is fairly meaningless to say 'System X is modifiable'. Firstly, with respect to what is it modifiable? Some of the changes will be handled more easily than others. If the system was designed with client-server pattern, then changing it to peer-to-peer is easy? It might be, but I find it rather unlikely. Even if ... Read more Scenarios - how to claim your architecture is good?

Business Drivers in Systems Architectures

Architectures are the building blocks of software. Good architecture would likely result in reasonably pain free development as well as . However, perfect architecture is almost never possible. In this series of articles, I will describe the basic process for designing software architectures. There is little difference between software and system architectures. In this first ... Read more Business Drivers in Systems Architectures

(Remote) File-Based Communication

Scenario: Applications C and P run on the same machines, but are implemented in different programming languages. P contains the functionality that can return a list of addresses given a postcode and C needs to reuse this functionality. If the pieces of code run on the same machines we could implement a file-based communication pattern. We ... Read more (Remote) File-Based Communication