This paper presents a practical approach to architecture-based design of computer based systems. The approach is discussed in relation to other existing of performing discovery, abstraction, refinement and evolution of systems’ architectures. It has also be shown that this approach can be supported by formal methods of refinement. The approach assists the designer to maintain a strict focus of reasoning about the architecture and its qualities.