Category: Software Engineering

Architectural Views

Architectural views represent a perspective of looking at a particular problem solution. There are different standards. And different versions of diagrams. That is because one diagram rarely would give you everything you'd want. So you sort of mix and match. We have to recognize that there are many stakeholders in the system: from architects themselves,

Continue Reading

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

Continue Reading

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

Continue Reading

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

Continue Reading

Is usability an architectural concern?

It really does depend on how we define usability. The configuration of the user interface is the details. As an architect, one would not worry about usability. Not in the sense, of where to place icons, what colours to use and what are which things to make bold. HOWEVER, what the user would do with

Continue Reading

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

Continue Reading

Creating a Sequence (or set) in Epsilon

In order to create a sequence (or set) of elements use the following:

Continue Reading

Quick Software Estimator

A simple software estimator, so that you can give a vague number to your boss. The number is an effort Size Type Organic Semi-detached Embedded Effort (in person months)

Continue Reading

(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

Continue Reading

Introduction to Services

Large enterprises typically own and operate a large number of software applications either of the shelf, developed in-house or inherited through mergers and acquisitions. Applications can be of heterogeneous e.g. they are written in the same language(s) or they use the same data storage mechanisms and formats. They may also run on the same operating

Continue Reading