a) Ambiguity, Accuracy and precision in the characterization of architectural models.
Ambiguity: a model is ambiguous if it is open to more than one interpretation.
As conflicting interpretations of a model may lead to misunderstandings, bugs and errors, it is desirable to avoid ambiguity. Incompleteness is a primary reason for ambiguity in models. When some aspects in a system is left unspecified, different stakeholders may make different assumptions about how the gap should be filled. As architectures are necessarily incomplete, a good guideline is to allow aspects of the system to be ambiguous with the consent of appropriate stakeholders, proceeding when they agree that the architecture is complete enough and the remaining decisions can be made later.
Accuracy: a model is accurate if it is correct, conforms to fact, or deviates from correctness within acceptable limits.
Precision: a model is precise if it is specific, detailed and exact.
Accuracy deals with correctness whereas precision deals with exactness. In architectural term, a model is accurate if it conveys correct information about the modeled system. A model is precise if it conveys a lot of detailed information about the modeled system. In developing architecture, accuracy should be generally favored over precision. Inaccurate architectural models that mislead stakeholders will lead to costly errors in later development activities.
b) Architectural Description Language (ADL)
Architectural Description language is a tool for modeling software architecture. The basic elements supported are components, connectors, interfaces and configurations. This consists of a number of graphical representations of the system model along with associated descriptive text. It should describe how the system is structured into sub-system and how each sub-system is structured into components.
ADLs are important in system component design, since it affects system performance, robustness, disreputability and maintainability
Roles of ADL:
- Provide models, notations, and tools to describe components and their interactions
- Support for large-scale, high-level designs
- Support for principled selection and application of architectural paradigms
- Support for abstractions: User-defined and Application-specific
- Support for implementing designs: Systematic and possibly automated
- Close interplay between language and environment: Language enables precise specifications and environment makes them reusable.
Positive elements of ADL:
- ADLs are a formal way of representing architecture
- ADLs are intended to be both human and machine readable
- ADLs support describing a system at a higher level than previously possible
- ADLs permit analysis and assessment of architectures, for completeness, consistency, ambiguity, and performance
- ADLs can support automatic generation of software systems