A good system architecture exhibits conceptual integrity; that is, it comes equipped with a set of design rules that aid in reducing complexity and that can be used as guidance in detailed design and in system verification. The rules may be represented as a pattern, such as pipes and filters. In the best case there are verifiable rules, such as “any virtual device of the same type may replace any other virtual device of the same type in the event of device failure,” or “all processes contending for the same resource must have the same scheduling priority.”
A contemporary architect might say that the object or system under construction must have the following characteristics.
· It has the functionality required by the customer.
· It is safely buildable on the required schedule.
· It performs adequately.
· It is reliable.
· It is usable and safe to use.
· It is secure.
· It is affordable.
· It conforms to legal standards.
· It will outlast its predecessors and its competitors.