Identifying the driving architectural characteristics is one of the first steps in creating an architecture or determining the validity of an existing architecture. Identifying the correct architectural characteristics (“-ilities”) for a given problem or application requires an architect to not only understand the domain problem, but also to collaborate with the problem domain stakeholders to determine what is truly important from a domain perspective.
An architect uncovers architecture characteristics in at least three ways: extracting from domain concerns, from requirements, and from implicit domain knowledge. We discussed implicit characteristics in [Link to Come], we cover the other two here.
An architect must be able to translate domain concerns to identify the right architectural characteristics. For example, is scalability the most important concern, or is it fault tolerance, security, or performance? Perhaps the system requires all four characteristics combined. Understanding the key domain goals and domain situation allows an architect to translate those domain concerns to “-ilities”, which then forms the basis for correct and justifiable architecture decisions.
One tip when collaborating with domain stakeholders to define the driving architecture characteristics is to work hard to keep the final list to no more than seven or so characteristics. This forces ...