Domain Specific Software Architectures -

advertisement
15.2.2 Canonical Requirements
Canonical Requirements = Reference Requirements
A set of requirements that applies across the entire domain that is captured by a Domain
Specific Software Architecture (DSSA).
Starting point for these requirements is often the customer’s statement of needs, taking into
account requirements of the individual legacy systems within the domain.
Contains functional requirements, non-functional requirements (security, performance,
reliability), design requirements (architectural style, UI style) and implementation requirements.
Also distinguishes between 3 types of requirements: Mandatory, Optional, Variable (Application
Specific)
15.2.3 Canonical Solution Strategies – Reference Architectures
Reference Architecture is the set of principal design decisions that are simultaneously applicable
to multiple related systems, typically within an application domain with explicitly defined points of
variations.
Many different kinds, differ in expressing commonalties and the points of variation in a
population or product line.
Book defines 3 classes:
Complete Single-Product Architecture
Incomplete invariant architecture
Invariant architecture with explicit variation
When to Develop a Reference Architecture?
Too early, large cost involved in changes
Too late, difficult to integrate into many diverse existing products
Should use an incremental approach with an eye towards the entire family of products
Choosing the Form of a Reference Architecture
Depends on domain, stakeholders, underlying business needs of organization(s)
involved
Complete Single-Product Architecture offers the least guidance in creating a family of
products
Incomplete invariant architecture tells architects directly what must be present in a
family member’s architecture, but lacks details about how to actually complete the elaboration process.
Invariant architectures with explicit variation points provides the most direction to
architects; not only do they say exactly what must be present in every family member’s architecture, but
they also effectively define all the members of the family.
15.2.4 Product Lines and Architecture
Many differences between designing a single-product architecture and a reference architecture;
chiefly that a reference architecture must serve as the basis for many different products simultaneously.
Tools and techniques exist for developing product line architectures, diversifying an ordinary
product architecture into an artifact suitable for describing many similar\related prodcuts.
Seen as a potential “silver bullet” of software architecture, potentially significantly reducing
costs and increasing software qualities. Product lines derives its power from reuse, particularly of
engineering knowledge, existing product architectures, styles and patterns, and preexisting software
components and connectors.
15.2.5 Product-Line Concepts
Various notions of product lines
Business Product Lines – set of products tied together to achieve business\monetary purposes.
Products in family do not necessary have similarity from an engineering standpoint.
Engineering Product Lines – set of products tied together by similarities in how they are
designed or constructed. Book uses example of Ford building a number of cars on the same engineering
platform, but marketing them under different brand names such as Lincoln, Mercury and Mazda.
15.2.6 Specifying the Architecture of a Product Line
The architectures of product lines differ from reference architectures by capturing the complete
architectures of multiple related products simultaneously. Reference architectures can be incomplete.
Two major differences: one of scope and one of completeness.
Product line architectures focus on a specific, explicit set of related products opposed to all of
those possible in a domain.
Product lines architectures also generally capture multiple complete product architectures
rather than leaving parts undefined.
Design decisions in a product line architecture may be common all of the products, some will be
common among a subset and others will be unique to individual products.
Extending an ordinary software architecture into a product line architecture can be
accomplished through the addition of variation points to create variant architectures. Each variant
architecture represents a different product – a member of the product line. A variation point is a set of
design decision that may or may not be included in the architecture of a given product.
The book uses 3 examples focusing around the Lunar Lander architecture: Lunar Lander Lite,
Lunar Lander Demo, and Lunar Lander Pro. These versions include several common systems such as a
Data Store and Game Logic but the UI and a System clock are variation points establishing these
different products. Products are created from combinations of the various variation points, although for
business reasons, not all combinations will be made into products.
Reducing a product line into a smaller product line or a single product is known as selection.
Approaches can be used that support the explicit specification of variation points and product lines
through architecture specific tools like Koala or xADL.
15.2.7 Capturing Variations Over Time
The products in a product line are often alternatives to one another, intended for simultaneous
development and release. However, product-line architectures also can be used to capture different
version of the same product over time. Various products capture the evolution of the original software
design unless something drastic occurs such as a complete rewrite.
Download