280 likes | 388 Views
Chapter 8 Analysis. Zachary Cleaver. Analysis Definition and Purpose. Architectural analysis is the activity of discovering important system properties using the system’s architectural models.
E N D
Chapter 8 Analysis Zachary Cleaver
Analysis Definition and Purpose • Architectural analysis is the activity of discovering important system properties using the system’s architectural models. • Architectural analysis helps identify incorrect/inefficient design decisions, clarifies component functions and objects, and aids in communication between designers and customers.
Facets of Architectural Analysis • 1) Goals of analysis • 2) Scope of analysis • 3) Primary architectural concerns being analyzed • 4) Level of formality between models
Facets of Analysis: Goals • 1) Completeness • 2) Consistency • 3) Compatibility • 4) Correctness
Completeness • The main goal of assessing an architecture’s completeness is to ensure it adequately capture all key functional and non-functional requirements. • Ideally, all services will be needed by a component, and each component will have a service that provides for it.
Consistency • Definition: Internal property of an architectural model that is intended to ensure that different elements of that model do not contradict one another. • Types of Inconsistencies: • Name • Interface • Behavioral • Interaction • Refinement
Name Inconsistency • Same-name components providing similar services. Is the right one being used? • Accessing a nonexistent class or method resulting in compile-time errors
Interface Inconsistency ReqInt: getSubQ(Natural first, Natural last, Boolean remove) returns FIFOQueue; ProvInt1: getSubQ(Index first, Index last) returns FIFOQueue; ProvInt2: getSubQ(Natural first, Natural last, Boolean remove) returns Queue;
Behavioral Inconsistency Subtract(int x, int y) returns int; intmyVal = Subtract(427, 27) • The method behavior treats it as a date subtraction, subtracts 27 days from April 27, and returns 331 (March 31)
Interaction Inconsistency • Occurs when a component’s provided operations are accessed in a manner that violates certain interaction constraints. • Ex. pop_back() in c++
Refinement Inconsistency • Refinement inconsistencies stem from a system’s architecture being frequently captured at different levels of abstraction (higher v. lower) • Check that elements were not lost, key properties were not omitted or changed, etc.
Compatibility • Compatibility ensures that the model adheres to the design guidelines imposed by an architectural style, reference architecture, or architectural standard.
Correctness • Correctness is relative. • It is the result of architecture to some artifact, where the artifact either fulfills the architecture or the architecture elaborates and fulfills the artifact.
Scope of Analysis • Component and Connector Level • Subsystem and System Level • Data Exchanged in (sub)system • Architectures at Different Abstraction Levels • Comparison of Two or More Architectures
Component and Connector Level Analysis • Ensures the given component or connector provides the services expected of it • However, this does not ensure services are modeled correctly • Checks name consistency
Subsystem and System Level Analysis • Pair-wise conformance: Two interacting components are considered at a time, and name, interface, behavior, and interaction conformance are established. • Compare component properties (efficiency vs. security) • Petry’s “Honey-baked ham” syndrome
Data Exchanged in the System or Subsystem • Assess data elements to ensure the system’s data is properly modeled, implemented, and exchanged among structural elements • Structure of the data (typed vs. untyped) • Flow of data through the system (point-to-point vs. broadcast) • Properties of data exchange (consistency, security, etc.)
Comparisons of Two or More Architectures • Comparing current architecture to a model of the desired architecture • Comparing two architectures for properties such as processing and storage capabilities
Architectural Concern Being Analyzed • Structural Characteristics • Behavioral Characteristics • Interaction Characteristics • Non-functional Characteristics
Structural Characteristics • Determines whether the architecture is well formed • Focuses on connectivity among architecture components and connectors, points of network distribution, etc. • Identify problems such as disconnected components or subsystems, missing pathways between components and connectors, unwanted pathways, etc.
Behavioral Characteristics • Concerned with the behavior of individual components and their behaviors as a whole within the architecture • Internal behaviors of individual components is considered, as well as the composite behaviors of components as they interact
Interaction Characteristics • Helps to establish whether the architecture will actually be able to fulfill some of its requirements (efficiency) • Concerned with internal behaviors of systems (security)
Non-Functional Characteristics • Difficult to assess since they can span multiple components and connectors • Their definitions can be much more informal, making it difficult to properly understand them in the architecture
Level of Formality of Architectural Models • Informal • Semiformal • Formal
Informal Models • Typically captured in box-and-line diagrams • Great for showing high-level representations of a system • Can be dangerous to use because of a lack of information and an ambiguous nature
Semiformal Models • Aims to be useful to both technical and nontechnical stakeholders • UML
Formal Models • Designed for technical stakeholders • These type of models can suffer from scalability problems